95 : fOutputFileName_(pset.getUntrackedParameter<
string>(
"HistOutFile", std::
string(
"TestConversions.root"))),
96 fOutputFile_(nullptr) {}
108 h_MCPizE_ =
new TH1F(
"MCPizE",
"MC piz energy", 100, 0., 200.);
109 h_MCPizPhi_ =
new TH1F(
"MCPizPhi",
"MC piz phi", 40, -3.14, 3.14);
110 h_MCPizEta_ =
new TH1F(
"MCPizEta",
"MC piz eta", 40, -3., 3.);
111 h_MCPizUnEta_ =
new TH1F(
"MCPizUnEta",
"MC un piz eta", 40, -3., 3.);
112 h_MCPiz1ConEta_ =
new TH1F(
"MCPiz1ConEta",
"MC con piz eta: at least one converted photon", 40, -3., 3.);
113 h_MCPiz2ConEta_ =
new TH1F(
"MCPiz2ConEta",
"MC con piz eta: two converted photons", 40, -3., 3.);
114 h_MCPizMass1_ =
new TH1F(
"MCPizMass1",
"Piz mass unconverted ", 100, 0., 200);
115 h_MCPizMass2_ =
new TH1F(
"MCPizMass2",
"Piz mass converted ", 100, 0., 200);
118 h_MCPhoE_ =
new TH1F(
"MCPhoE",
"MC photon energy", 100, 0., 200.);
119 h_MCPhoPhi_ =
new TH1F(
"MCPhoPhi",
"MC photon phi", 40, -3.14, 3.14);
120 h_MCPhoEta_ =
new TH1F(
"MCPhoEta",
"MC photon eta", 40, -3., 3.);
123 h_MCConvPhoE_ =
new TH1F(
"MCConvPhoE",
"MC converted photon energy", 100, 0., 200.);
124 h_MCConvPhoPhi_ =
new TH1F(
"MCConvPhoPhi",
"MC converted photon phi", 40, -3.14, 3.14);
125 h_MCConvPhoEta_ =
new TH1F(
"MCConvPhoEta",
"MC converted photon eta", 40, -3., 3.);
126 h_MCConvPhoR_ =
new TH1F(
"MCConvPhoR",
"MC converted photon R", 120, 0., 120.);
128 h_MCEleE_ =
new TH1F(
"MCEleE",
"MC ele energy", 100, 0., 200.);
129 h_MCElePhi_ =
new TH1F(
"MCElePhi",
"MC ele phi", 40, -3.14, 3.14);
130 h_MCEleEta_ =
new TH1F(
"MCEleEta",
"MC ele eta", 40, -3., 3.);
131 h_BremFrac_ =
new TH1F(
"bremFrac",
"brem frac ", 50, 0., 1.);
132 h_BremEnergy_ =
new TH1F(
"bremE",
"Brem energy", 100, 0., 200.);
134 h_EleEvsPhoE_ =
new TH2F(
"eleEvsPhoE",
"eleEvsPhoE", 100, 0., 200., 100, 0., 200.);
141 const float PI = 3.1415927;
145 const float R_ECAL = 136.5;
152 float ZEcal = R_ECAL * sinh(EtaParticle) + Zvertex;
155 Theta = atan(R_ECAL / ZEcal);
160 if (fabs(ETA) > etaBarrelEndcap) {
162 if (EtaParticle < 0.0)
164 float Zlen = Zend - Zvertex;
165 float RR = Zlen / sinh(EtaParticle);
166 Theta = atan(RR / Zend);
169 ETA = -
log(
tan(0.5 * Theta));
178 const float PI = 3.1415927;
204 LogInfo(
"MCPizeroAnalyzer") <<
"MCPizeroAnalyzer Analyzing event number: " << e.
id() <<
" Global Counter " <<
nEvt_
207 std::cout <<
"MCPizeroAnalyzer Analyzing event number: " << e.
id() <<
" Global Counter " <<
nEvt_ <<
"\n";
210 std::cout <<
" MCPizeroAnalyzer Looking for MC truth "
214 std::vector<SimTrack> theSimTracks;
215 std::vector<SimVertex> theSimVertices;
222 theSimTracks.insert(theSimTracks.end(), SimTk->begin(), SimTk->end());
223 theSimVertices.insert(theSimVertices.end(), SimVtx->begin(), SimVtx->end());
224 std::cout <<
" MCPizeroAnalyzer This Event has " << theSimTracks.size() <<
" sim tracks " << std::endl;
225 std::cout <<
" MCPizeroAnalyzer This Event has " << theSimVertices.size() <<
" sim vertices " << std::endl;
226 if (theSimTracks.empty())
227 std::cout <<
" Event number " << e.
id() <<
" has NO sim tracks " << std::endl;
230 std::cout <<
" MCPizeroAnalyzer MCPizeroeros size " << MCPizeroeros.size() << std::endl;
232 for (std::vector<PizeroMCTruth>::const_iterator iPiz = MCPizeroeros.begin(); iPiz != MCPizeroeros.end(); ++iPiz) {
233 h_MCPizE_->Fill((*iPiz).fourMomentum().e());
234 h_MCPizEta_->Fill((*iPiz).fourMomentum().pseudoRapidity());
237 std::vector<PhotonMCTruth> mcPhotons = (*iPiz).photons();
238 std::cout <<
" MCPizeroAnalyzer mcPhotons size " << mcPhotons.size() << std::endl;
240 float px = mcPhotons[0].fourMomentum().x() + mcPhotons[1].fourMomentum().x();
241 float py = mcPhotons[0].fourMomentum().y() + mcPhotons[1].fourMomentum().y();
242 float pz = mcPhotons[0].fourMomentum().z() + mcPhotons[1].fourMomentum().z();
243 float e = mcPhotons[0].fourMomentum().e() + mcPhotons[1].fourMomentum().e();
244 float invM =
sqrt(e * e - px * px - py * py - pz * pz) * 1000;
248 for (std::vector<PhotonMCTruth>::const_iterator iPho = mcPhotons.begin(); iPho != mcPhotons.end(); ++iPho) {
249 h_MCPhoE_->Fill((*iPho).fourMomentum().e());
250 h_MCPhoEta_->Fill((*iPho).fourMomentum().pseudoRapidity());
252 if ((*iPho).isAConversion()) {
260 std::vector<ElectronMCTruth> mcElectrons = (*iPho).electrons();
261 std::cout <<
" MCPizeroAnalyzer mcElectrons size " << mcElectrons.size() << std::endl;
263 for (std::vector<ElectronMCTruth>::const_iterator iEl = mcElectrons.begin(); iEl != mcElectrons.end(); ++iEl) {
264 if ((*iEl).fourMomentum().e() < 30)
266 h_MCEleE_->Fill((*iEl).fourMomentum().e());
267 h_MCEleEta_->Fill((*iEl).fourMomentum().pseudoRapidity());
270 h_EleEvsPhoE_->Fill((*iPho).fourMomentum().e(), (*iEl).fourMomentum().e());
273 for (
unsigned int iBrem = 0; iBrem < (*iEl).bremVertices().size(); ++iBrem)
274 totBrem += (*iEl).bremMomentum()[iBrem].e();
276 h_BremFrac_->Fill(totBrem / (*iEl).fourMomentum().e());
287 h_MCPizUnEta_->Fill((*iPiz).fourMomentum().pseudoRapidity());
297 std::cout <<
"MCPizeroAnalyzer::endJob Analyzed " <<
nEvt_ <<
" events "
float phiNormalization(float &a)
static std::vector< std::string > checklist log
~MCPizeroAnalyzer() override
void analyze(const edm::Event &, const edm::EventSetup &) override
#define DEFINE_FWK_MODULE(type)
MCPizeroAnalyzer(const edm::ParameterSet &)
float etaTransformation(float a, float b)
static constexpr float R_ECAL
double mcPhi_
global variable for the MC photon
Tan< T >::type tan(const T &t)
static constexpr float etaBarrelEndcap
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
std::string fOutputFileName_
Log< level::Info, false > LogInfo
std::vector< PizeroMCTruth > find(const std::vector< SimTrack > &simTracks, const std::vector< SimVertex > &simVertices)
PizeroMCTruthFinder * thePizeroMCTruthFinder_
static constexpr float ZEcal
static constexpr float Z_Endcap