45 : fOutputFileName_(
pset.getUntrackedParameter<
string>(
"HistOutFile",
std::
string(
"TestConversions.root"))),
46 fOutputFile_(nullptr) {
64 h_ErecoEMC_ =
new TH1F(
"deltaE",
" delta(reco-mc) energy", 100, 0., 2.);
65 h_deltaPhi_ =
new TH1F(
"deltaPhi",
" delta(reco-mc) phi", 100, -0.1, 0.1);
66 h_deltaEta_ =
new TH1F(
"deltaEta",
" delta(reco-mc) eta", 100, -0.05, 0.05);
69 h_MCphoE_ =
new TH1F(
"MCphoE",
"MC photon energy", 100, 0., 100.);
70 h_MCphoPhi_ =
new TH1F(
"MCphoPhi",
"MC photon phi", 40, -3.14, 3.14);
71 h_MCphoEta_ =
new TH1F(
"MCphoEta",
"MC photon eta", 40, -3., 3.);
74 h_MCConvE_ =
new TH1F(
"MCConvE",
"MC converted photon energy", 100, 0., 100.);
75 h_MCConvPt_ =
new TH1F(
"MCConvPt",
"MC converted photon pt", 100, 0., 100.);
76 h_MCConvEta_ =
new TH1F(
"MCConvEta",
"MC converted photon eta", 50, 0., 2.5);
79 h_scE_ =
new TH1F(
"scE",
"Uncorrected converted photons : SC Energy ", 100, 0., 200.);
80 h_scEta_ =
new TH1F(
"scEta",
"Uncorrected converted photons: SC Eta ", 40, -3., 3.);
81 h_scPhi_ =
new TH1F(
"scPhi",
"Uncorrected converted photons: SC Phi ", 40, -3.14, 3.14);
83 h_phoE_ =
new TH1F(
"phoE",
"Uncorrected converted photons : Energy ", 100, 0., 200.);
84 h_phoEta_ =
new TH1F(
"phoEta",
"Uncorrected converted photons: Eta ", 40, -3., 3.);
85 h_phoPhi_ =
new TH1F(
"phoPhi",
"Uncorrected converted photons: Phi ", 40, -3.14, 3.14);
88 h2_tk_nHitsVsR_ =
new TH2F(
"tknHitsVsR",
"Tracks Hits vs R ", 12, 0., 120., 20, 0.5, 20.5);
89 h2_tk_inPtVsR_ =
new TH2F(
"tkInPtvsR",
"Tracks inner Pt vs R ", 12, 0., 120., 100, 0., 100.);
96 const float PI = 3.1415927;
100 const float R_ECAL = 136.5;
107 float ZEcal =
R_ECAL * sinh(EtaParticle) + Zvertex;
117 if (EtaParticle < 0.0)
119 float Zlen = Zend - Zvertex;
120 float RR = Zlen / sinh(EtaParticle);
121 Theta = atan(RR / Zend);
133 const float etaPhiDistance = 0.01;
136 const float BARL = 1.4442;
137 const float END_LO = 1.566;
138 const float END_HI = 2.5;
143 LogInfo(
"ConvertedPhotonAnalyzer") <<
"ConvertedPhotonAnalyzer Analyzing event number: " <<
e.id()
144 <<
" Global Counter " <<
nEvt_ <<
"\n";
146 std::cout <<
"ConvertedPhotonAnalyzer Analyzing event number: " <<
e.id() <<
" Global Counter " <<
nEvt_ <<
"\n";
152 std::cout <<
"ConvertedPhotonAnalyzer Converted photon collection size " << phoCollection.size() <<
"\n";
155 std::cout <<
" ConvertedPhotonAnalyzer Looking for MC truth "
159 std::vector<SimTrack> theSimTracks;
160 std::vector<SimVertex> theSimVertices;
164 e.getByLabel(
"g4SimHits", SimTk);
165 e.getByLabel(
"g4SimHits", SimVtx);
167 theSimTracks.insert(theSimTracks.end(), SimTk->begin(), SimTk->end());
168 theSimVertices.insert(theSimVertices.end(), SimVtx->begin(), SimVtx->end());
171 std::cout <<
" ConvertedPhotonAnalyzer mcPhotons size " << mcPhotons.size() << std::endl;
178 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
179 float mcPhi = (*mcPho).fourMomentum().phi();
180 float mcEta = (*mcPho).fourMomentum().pseudoRapidity();
183 if (!(fabs(mcEta) <= BARL || (fabs(mcEta) >= END_LO && fabs(mcEta) <= END_HI))) {
187 std::cout <<
" ConvertedPhotonAnalyzer MC Photons before matching " << std::endl;
188 std::cout <<
" ConvertedPhotonAnalyzer Photons isAconversion " << (*mcPho).isAConversion()
189 <<
" mcMatchingPhoton energy " << (*mcPho).fourMomentum().e() <<
" conversion vertex R "
190 << (*mcPho).vertex().perp() <<
" Z " << (*mcPho).vertex().z() <<
" x " << (*mcPho).vertex().x() <<
" y "
191 << (*mcPho).vertex().y() <<
" z " << (*mcPho).vertex().z() << std::endl;
192 std::cout <<
" ConvertedPhotonAnalyzer mcEta " << mcEta <<
" mcPhi " << mcPhi << std::endl;
194 h_MCphoE_->Fill((*mcPho).fourMomentum().e());
199 if ((*mcPho).isAConversion() == 0)
204 h_MCConvEta_->Fill(fabs((*mcPho).fourMomentum().pseudoRapidity()) - 0.001);
209 std::cout <<
" ConvertedPhotonAnalyzer Starting loop over photon candidates "
211 for (reco::ConversionCollection::const_iterator iPho = phoCollection.begin(); iPho != phoCollection.end(); iPho++) {
214 std::cout <<
" ConvertedPhotonAnalyzer Reco SC energy " << (*iPho).caloCluster()[0]->energy() <<
"\n";
216 float phiClu = (*iPho).caloCluster()[0]->phi();
217 float etaClu = (*iPho).caloCluster()[0]->eta();
228 if (
delta >= etaPhiDistance)
238 std::cout <<
" ConvertedPhotonAnalyzer Matching candidate " << std::endl;
240 std::cout <<
" ConvertedPhotonAnalyzer Photons isAconversion " << (*mcPho).isAConversion()
241 <<
" mcMatchingPhoton energy " << (*mcPho).fourMomentum().e()
242 <<
" ConvertedPhotonAnalyzer conversion vertex R " << (*mcPho).vertex().perp() <<
" Z "
243 << (*mcPho).vertex().z() << std::endl;
245 h_ErecoEMC_->Fill((*iPho).caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
246 h_deltaPhi_->Fill((*iPho).caloCluster()[0]->position().phi() - mcPhi);
247 h_deltaEta_->Fill((*iPho).caloCluster()[0]->position().eta() - mcEta);
249 h_scE_->Fill((*iPho).caloCluster()[0]->energy());
250 h_scEta_->Fill((*iPho).caloCluster()[0]->position().eta());
251 h_scPhi_->Fill((*iPho).caloCluster()[0]->position().phi());
253 for (
unsigned int i = 0;
i < (*iPho).tracks().size();
i++) {
254 std::cout <<
" ConvertedPhotonAnalyzer Reco Track charge " << (*iPho).tracks()[
i]->charge()
255 <<
" Num of RecHits " << (*iPho).tracks()[
i]->recHitsSize() <<
" inner momentum "
256 <<
sqrt((*iPho).tracks()[
i]->innerMomentum().Mag2()) <<
"\n";
258 h2_tk_nHitsVsR_->Fill((*mcPho).vertex().perp(), (*iPho).tracks()[
i]->recHitsSize());
259 h2_tk_inPtVsR_->Fill((*mcPho).vertex().perp(),
sqrt((*iPho).tracks()[
i]->innerMomentum().Mag2()));
273 std::cout <<
"ConvertedPhotonAnalyzer::endJob Analyzed " <<
nEvt_ <<
" events "