43 : fOutputFileName_(
pset.getUntrackedParameter<
string>(
"HistOutFile",
std::
string(
"TestConversions.root"))),
44 fOutputFile_(nullptr) {}
56 h_MCPizE_ =
new TH1F(
"MCPizE",
"MC piz energy", 100, 0., 200.);
57 h_MCPizPhi_ =
new TH1F(
"MCPizPhi",
"MC piz phi", 40, -3.14, 3.14);
58 h_MCPizEta_ =
new TH1F(
"MCPizEta",
"MC piz eta", 40, -3., 3.);
59 h_MCPizUnEta_ =
new TH1F(
"MCPizUnEta",
"MC un piz eta", 40, -3., 3.);
60 h_MCPiz1ConEta_ =
new TH1F(
"MCPiz1ConEta",
"MC con piz eta: at least one converted photon", 40, -3., 3.);
61 h_MCPiz2ConEta_ =
new TH1F(
"MCPiz2ConEta",
"MC con piz eta: two converted photons", 40, -3., 3.);
62 h_MCPizMass1_ =
new TH1F(
"MCPizMass1",
"Piz mass unconverted ", 100, 0., 200);
63 h_MCPizMass2_ =
new TH1F(
"MCPizMass2",
"Piz mass converted ", 100, 0., 200);
66 h_MCPhoE_ =
new TH1F(
"MCPhoE",
"MC photon energy", 100, 0., 200.);
67 h_MCPhoPhi_ =
new TH1F(
"MCPhoPhi",
"MC photon phi", 40, -3.14, 3.14);
68 h_MCPhoEta_ =
new TH1F(
"MCPhoEta",
"MC photon eta", 40, -3., 3.);
71 h_MCConvPhoE_ =
new TH1F(
"MCConvPhoE",
"MC converted photon energy", 100, 0., 200.);
72 h_MCConvPhoPhi_ =
new TH1F(
"MCConvPhoPhi",
"MC converted photon phi", 40, -3.14, 3.14);
73 h_MCConvPhoEta_ =
new TH1F(
"MCConvPhoEta",
"MC converted photon eta", 40, -3., 3.);
74 h_MCConvPhoR_ =
new TH1F(
"MCConvPhoR",
"MC converted photon R", 120, 0., 120.);
76 h_MCEleE_ =
new TH1F(
"MCEleE",
"MC ele energy", 100, 0., 200.);
77 h_MCElePhi_ =
new TH1F(
"MCElePhi",
"MC ele phi", 40, -3.14, 3.14);
78 h_MCEleEta_ =
new TH1F(
"MCEleEta",
"MC ele eta", 40, -3., 3.);
79 h_BremFrac_ =
new TH1F(
"bremFrac",
"brem frac ", 50, 0., 1.);
80 h_BremEnergy_ =
new TH1F(
"bremE",
"Brem energy", 100, 0., 200.);
82 h_EleEvsPhoE_ =
new TH2F(
"eleEvsPhoE",
"eleEvsPhoE", 100, 0., 200., 100, 0., 200.);
89 const float PI = 3.1415927;
93 const float R_ECAL = 136.5;
100 float ZEcal =
R_ECAL * sinh(EtaParticle) + Zvertex;
110 if (EtaParticle < 0.0)
112 float Zlen = Zend - Zvertex;
113 float RR = Zlen / sinh(EtaParticle);
114 Theta = atan(RR / Zend);
126 const float PI = 3.1415927;
152 LogInfo(
"MCPizeroAnalyzer") <<
"MCPizeroAnalyzer Analyzing event number: " <<
e.id() <<
" Global Counter " <<
nEvt_
155 std::cout <<
"MCPizeroAnalyzer Analyzing event number: " <<
e.id() <<
" Global Counter " <<
nEvt_ <<
"\n";
158 std::cout <<
" MCPizeroAnalyzer Looking for MC truth "
162 std::vector<SimTrack> theSimTracks;
163 std::vector<SimVertex> theSimVertices;
167 e.getByLabel(
"g4SimHits", SimTk);
168 e.getByLabel(
"g4SimHits", SimVtx);
170 theSimTracks.insert(theSimTracks.end(), SimTk->begin(), SimTk->end());
171 theSimVertices.insert(theSimVertices.end(), SimVtx->begin(), SimVtx->end());
172 std::cout <<
" MCPizeroAnalyzer This Event has " << theSimTracks.size() <<
" sim tracks " << std::endl;
173 std::cout <<
" MCPizeroAnalyzer This Event has " << theSimVertices.size() <<
" sim vertices " << std::endl;
174 if (theSimTracks.empty())
175 std::cout <<
" Event number " <<
e.id() <<
" has NO sim tracks " << std::endl;
178 std::cout <<
" MCPizeroAnalyzer MCPizeroeros size " << MCPizeroeros.size() << std::endl;
180 for (std::vector<PizeroMCTruth>::const_iterator iPiz = MCPizeroeros.begin(); iPiz != MCPizeroeros.end(); ++iPiz) {
181 h_MCPizE_->Fill((*iPiz).fourMomentum().e());
182 h_MCPizEta_->Fill((*iPiz).fourMomentum().pseudoRapidity());
185 std::vector<PhotonMCTruth> mcPhotons = (*iPiz).photons();
186 std::cout <<
" MCPizeroAnalyzer mcPhotons size " << mcPhotons.size() << std::endl;
188 float px = mcPhotons[0].fourMomentum().x() + mcPhotons[1].fourMomentum().x();
189 float py = mcPhotons[0].fourMomentum().y() + mcPhotons[1].fourMomentum().y();
190 float pz = mcPhotons[0].fourMomentum().z() + mcPhotons[1].fourMomentum().z();
191 float e = mcPhotons[0].fourMomentum().e() + mcPhotons[1].fourMomentum().e();
196 for (std::vector<PhotonMCTruth>::const_iterator iPho = mcPhotons.begin(); iPho != mcPhotons.end(); ++iPho) {
197 h_MCPhoE_->Fill((*iPho).fourMomentum().e());
198 h_MCPhoEta_->Fill((*iPho).fourMomentum().pseudoRapidity());
200 if ((*iPho).isAConversion()) {
208 std::vector<ElectronMCTruth> mcElectrons = (*iPho).electrons();
209 std::cout <<
" MCPizeroAnalyzer mcElectrons size " << mcElectrons.size() << std::endl;
211 for (std::vector<ElectronMCTruth>::const_iterator iEl = mcElectrons.begin(); iEl != mcElectrons.end(); ++iEl) {
212 if ((*iEl).fourMomentum().e() < 30)
214 h_MCEleE_->Fill((*iEl).fourMomentum().e());
215 h_MCEleEta_->Fill((*iEl).fourMomentum().pseudoRapidity());
218 h_EleEvsPhoE_->Fill((*iPho).fourMomentum().e(), (*iEl).fourMomentum().e());
221 for (
unsigned int iBrem = 0; iBrem < (*iEl).bremVertices().size(); ++iBrem)
222 totBrem += (*iEl).bremMomentum()[iBrem].e();
224 h_BremFrac_->Fill(totBrem / (*iEl).fourMomentum().e());
235 h_MCPizUnEta_->Fill((*iPiz).fourMomentum().pseudoRapidity());
245 std::cout <<
"MCPizeroAnalyzer::endJob Analyzed " <<
nEvt_ <<
" events "