uint32_t MtfCoordinateConverter::getLayerNumber(uint32_t rawId){ uint32_t aLayer = 0; DetId detId(rawId); if (detId.det() != DetId::Muon) std::cout << "PROBLEM: hit in unknown Det, detID: "<<detId.det()<<std::endl; switch (detId.subdetId()) { case MuonSubdetId::RPC: { RPCDetIdUtil aIdUtil(rawId); aLayer = aIdUtil.layer() + 10*(!aIdUtil.isBarrel()); } break; case MuonSubdetId::DT: { DTChamberId dt(rawId); aLayer = dt.station(); break; } case MuonSubdetId::CSC: { CSCDetId csc(rawId); aLayer = csc.station(); break; } } return aLayer; }
int MtfCoordinateConverter::convert(std::pair<uint32_t, unsigned int > aData){ float phi = 999.0; DetId detId(aData.first); if (detId.det() != DetId::Muon) std::cout << "PROBLEM: hit in unknown Det, detID: "<<detId.det()<<std::endl; switch (detId.subdetId()) { case MuonSubdetId::RPC: { RPCDigiSpec digi(aData.first, aData.second); float phi1 = convertRpc(aData.first,digi.fromStrip()); float phi2 = convertRpc(aData.first,digi.toStrip()); phi = (phi1+phi2)/2.0; } break; case MuonSubdetId::DT: { DTphDigiSpec digi(aData.first, aData.second); phi = convertDt(aData.first,digi.phi()); break; } case MuonSubdetId::CSC: { CSCDigiSpec digi(aData.first, aData.second); phi = convertCsc(aData.first, digi.strip(),digi.pattern(),digi.keywire()); break; } } phi-=phiref; while (phi < 0) { phi+=2*M_PI; } while (phi > 2*M_PI) { phi-=2*M_PI; } int nDivisions = GoldenPattern::Key::nPhi; int iPhi = floor(phi * nDivisions/(2*M_PI)); if(iPhi>nDivisions/2.0) iPhi-=nDivisions; return iPhi; }
int main() { edm::MessageDrop::instance()->debugEnabled = false; const long seed = 12345; CLHEP::HepJamesRandom engine(seed); const unsigned int readoutFrameSize = CaloSamples::MAXSAMPLES; EcalCorrMatrix thisMatrix; thisMatrix(0,0) = 1.; thisMatrix(0,1) = 0.67; thisMatrix(0,2) = 0.53; thisMatrix(0,3) = 0.44; thisMatrix(0,4) = 0.39; thisMatrix(0,5) = 0.36; thisMatrix(0,6) = 0.38; thisMatrix(0,7) = 0.35; thisMatrix(0,8) = 0.36; thisMatrix(0,9) = 0.32; thisMatrix(1,0) = 0.67; thisMatrix(1,1) = 1.; thisMatrix(1,2) = 0.67; thisMatrix(1,3) = 0.53; thisMatrix(1,4) = 0.44; thisMatrix(1,5) = 0.39; thisMatrix(1,6) = 0.36; thisMatrix(1,7) = 0.38; thisMatrix(1,8) = 0.35; thisMatrix(1,9) = 0.36; thisMatrix(2,0) = 0.53; thisMatrix(2,1) = 0.67; thisMatrix(2,2) = 1.; thisMatrix(2,3) = 0.67; thisMatrix(2,4) = 0.53; thisMatrix(2,5) = 0.44; thisMatrix(2,6) = 0.39; thisMatrix(2,7) = 0.36; thisMatrix(2,8) = 0.38; thisMatrix(2,9) = 0.35; thisMatrix(3,0) = 0.44; thisMatrix(3,1) = 0.53; thisMatrix(3,2) = 0.67; thisMatrix(3,3) = 1.; thisMatrix(3,4) = 0.67; thisMatrix(3,5) = 0.53; thisMatrix(3,6) = 0.44; thisMatrix(3,7) = 0.39; thisMatrix(3,8) = 0.36; thisMatrix(3,9) = 0.38; thisMatrix(4,0) = 0.39; thisMatrix(4,1) = 0.44; thisMatrix(4,2) = 0.53; thisMatrix(4,3) = 0.67; thisMatrix(4,4) = 1.; thisMatrix(4,5) = 0.67; thisMatrix(4,6) = 0.53; thisMatrix(4,7) = 0.44; thisMatrix(4,8) = 0.39; thisMatrix(4,9) = 0.36; thisMatrix(5,0) = 0.36; thisMatrix(5,1) = 0.39; thisMatrix(5,2) = 0.44; thisMatrix(5,3) = 0.53; thisMatrix(5,4) = 0.67; thisMatrix(5,5) = 1.; thisMatrix(5,6) = 0.67; thisMatrix(5,7) = 0.53; thisMatrix(5,8) = 0.44; thisMatrix(5,9) = 0.39; thisMatrix(6,0) = 0.38; thisMatrix(6,1) = 0.36; thisMatrix(6,2) = 0.39; thisMatrix(6,3) = 0.44; thisMatrix(6,4) = 0.53; thisMatrix(6,5) = 0.67; thisMatrix(6,6) = 1.; thisMatrix(6,7) = 0.67; thisMatrix(6,8) = 0.53; thisMatrix(6,9) = 0.44; thisMatrix(7,0) = 0.35; thisMatrix(7,1) = 0.38; thisMatrix(7,2) = 0.36; thisMatrix(7,3) = 0.39; thisMatrix(7,4) = 0.44; thisMatrix(7,5) = 0.53; thisMatrix(7,6) = 0.67; thisMatrix(7,7) = 1.; thisMatrix(7,8) = 0.67; thisMatrix(7,9) = 0.53; thisMatrix(8,0) = 0.36; thisMatrix(8,1) = 0.35; thisMatrix(8,2) = 0.38; thisMatrix(8,3) = 0.36; thisMatrix(8,4) = 0.39; thisMatrix(8,5) = 0.44; thisMatrix(8,6) = 0.53; thisMatrix(8,7) = 0.67; thisMatrix(8,8) = 1.; thisMatrix(8,9) = 0.67; thisMatrix(9,0) = 0.32; thisMatrix(9,1) = 0.36; thisMatrix(9,2) = 0.35; thisMatrix(9,3) = 0.38; thisMatrix(9,4) = 0.36; thisMatrix(9,5) = 0.39; thisMatrix(9,6) = 0.44; thisMatrix(9,7) = 0.53; thisMatrix(9,8) = 0.67; thisMatrix(9,9) = 1.; CorrelatedNoisifier<EcalCorrMatrix> theCorrNoise(thisMatrix); EcalCorrMatrix thisTrivialMatrix; for (unsigned int i = 0; i < readoutFrameSize; i++ ) { thisTrivialMatrix(i,i) = 1.; for ( unsigned int j = i+1; j < readoutFrameSize; j++ ) { thisTrivialMatrix(i,j) = 0.; thisTrivialMatrix(j,i) = 0.; } } CorrelatedNoisifier<EcalCorrMatrix> theUncorrNoise(thisTrivialMatrix); std::cout << "Using the correlation matrix: " << thisMatrix << std::endl; std::cout << "\n And the unit matrix: " << thisTrivialMatrix << std::endl; EBDetId detId(1,1); TH1F* uncorr = new TH1F("uncorr","first 3 samples, uncorrelated distribution",200,-10.,10.); TH1F* corr = new TH1F("corr","first 3 samples, correlated distribution",200,-10.,10.); TH1F* uncorrPed = new TH1F("uncorrPed","first 3 samples, uncorrelated average",200,-10.,10.); TH1F* corrPed = new TH1F("corrPed","first 3 samples, correlated average",200,-10.,10.); TH1F* frame[(int)readoutFrameSize]; Char_t histo[200]; for ( Int_t i = 0; i < (int)readoutFrameSize; ++i) { sprintf (histo,"frame %02d",i) ; frame[i] = new TH1F(histo,histo,200,-10.,10.); } for ( int i = 0; i < 100000; ++i ) { CaloSamples noiseframe(detId, readoutFrameSize); theCorrNoise.noisify(noiseframe, &engine); CaloSamples flatframe(detId, readoutFrameSize); theUncorrNoise.noisify(flatframe, &engine); for ( int j = 0; j < 3; ++j ) { uncorr->Fill(flatframe[j]); corr->Fill(noiseframe[j]); } for ( int j = 0; j < (int)readoutFrameSize; ++j ) { frame[j]->Fill(noiseframe[j]); } float thisUncorrPed = (flatframe[0]+flatframe[1]+flatframe[2])/3.; float thisCorrPed = (noiseframe[0]+noiseframe[1]+noiseframe[2])/3.; uncorrPed->Fill(thisUncorrPed); corrPed->Fill(thisCorrPed); } uncorr->Fit("gaus","VE"); corr->Fit("gaus","VE"); uncorrPed->Fit("gaus","VE"); corrPed->Fit("gaus","VE"); const int csize = 500; TCanvas * showNoise = new TCanvas("showNoise","showNoise",2*csize,2*csize); showNoise->Divide(2,2); gStyle->SetOptFit(1111); showNoise->cd(1); uncorr->Draw(); showNoise->cd(2); corr->Draw(); showNoise->cd(3); uncorrPed->Draw(); showNoise->cd(4); corrPed->Draw(); showNoise->SaveAs("EcalNoise.jpg"); TCanvas * showNoiseFrame = new TCanvas("showNoiseFrame","showNoiseFrame",2*csize,2*csize); showNoiseFrame->Divide(2,5); for ( int i = 0; i < (int)readoutFrameSize; ++i) { showNoiseFrame->cd(i+1); frame[i]->Fit("gaus","Q"); frame[i]->Draw(); } showNoiseFrame->SaveAs("EcalNoiseFrame.jpg"); delete uncorr; delete corr; delete uncorrPed; delete corrPed; delete showNoise; delete showNoiseFrame; return 0; }