9 #include "CLHEP/Units/defs.h" 10 #include "CLHEP/Units/PhysicalConstants.h" 15 : wmanager_(iPSet, consumesCollector()), hepmcCollection_(iPSet.getParameter<
edm::
InputTag>(
"hepmcCollection")) {
111 "otherPtclNumber",
"Log10(No. other ptcls)", 60, -1, 5,
"log_{10}(No. other ptcls)",
"Number of Events");
113 "Log10(p) other ptcls",
117 "log10(P^{other ptcls}) (log_{10}(GeV))",
122 "genPtclNumber",
"Log10(No. all particles)", 60, -1, 5,
"log10(No. all particles)",
"Number of Events");
124 "genVrtxNumber",
"Log10(No. all vertexs)", 60, -1, 5,
"log10(No. all vertexs)",
"Number of Events");
127 "Log10(No. stable particles)",
131 "log10(No. stable particles)",
134 "stablePtclPhi",
"stable Ptcl Phi", 360, -180, 180,
"#phi^{stable Ptcl} (rad)",
"Number of Events");
136 "stablePtclEta",
"stable Ptcl Eta (pseudo rapidity)", 220, -11, 11,
"#eta^{stable Ptcl}",
"Number of Events");
138 dqm.
book1dHisto(
"stablePtclCharge",
"stablePtclCharge", 5, -2, 2,
"Charge^{stable ptcls}",
"Number of Events");
140 "Log10(No. stable charged particles)",
144 "log_{10}(No. stable charged particles)",
147 "Log10(p) stable ptcl p",
151 "log_{10}(P^{stable ptcl}) (log_{10}(GeV))",
154 "Log10(pT) stable ptcl pT",
158 "log_{10}(P_{t}^{stable ptcl}) (log_{10}(GeV))",
161 dqm.
book1dHisto(
"partonNumber",
"number of partons", 100, 0, 100,
"number of partons",
"Number of Events");
163 dqm.
book1dHisto(
"partonpT",
"Log10(pT) parton pT", 80, -4, 4,
"Log10(P_{t}^{parton})",
"Number of Events");
165 "No. outgoing stable ptcls from vrtx",
169 "No. outgoing stable ptcls from vrtx",
173 "No. outgoing ptcls from vrtx",
177 "No. outgoing ptcls from vrtx",
179 vrtxZ = dqm.
book1dHisto(
"VrtxZ",
"VrtxZ", 50, -250, 250,
"Z_{Vtx}",
"Number of Events");
183 "Log10(No. unknown ptcls PDT)",
187 "log_{10}(No. unknown ptcls PDT)",
191 Bjorken_x = dqm.
book1dHisto(
"Bjorken_x",
"Bjorken_x", 1000, 0.0, 1.0,
"Bjorken_{x}",
"Number of Events");
195 "Log10(PDF(ubar,x,Q))",
204 "Log10(PDF(dbar,x,Q))",
211 "Log10(PDF(ssbar,x,Q))",
218 "Log10(PDF(ccbar,x,Q))",
225 "Log10(PDF(bbbar,x,Q))",
234 "Log10(Q-scale(GeV))",
238 "log_{10}(Q-scale(GeV))",
240 parton1Id = dqm.
book1dHisto(
"parton1Id",
"ID of parton 1", 45, -14.5, 30.5,
"ID",
"Number of Events");
241 parton2Id = dqm.
book1dHisto(
"parton2Id",
"ID of parton 2", 45, -14.5, 30.5,
"ID",
"Number of Events");
257 "log_{10} of deviation from nominal Ecms",
261 "log_{10}(#DeltaE) (log_{10}(GeV))",
264 dqm.
book1dHisto(
"DeltaEcms1",
"deviation from nominal Ecms", 200, -1., 1.,
"#DeltaE (GeV)",
"Number of Events");
266 dqm.
book1dHisto(
"DeltaPx1",
"deviation from nominal Px", 200, -1., 1.,
"#DeltaP_{x} (GeV)",
"Number of Events");
268 dqm.
book1dHisto(
"DeltaPy1",
"deviation from nominal Py", 200, -1., 1.,
"#DeltaP_{y} (GeV)",
"Number of Events");
270 dqm.
book1dHisto(
"DeltaPz1",
"deviation from nominal Pz", 200, -1., 1.,
"#DeltaP_{z} (GeV)",
"Number of Events");
278 int outVrtxStablePtclNum = 0;
279 int stablePtclNum = 0;
280 int otherPtclNum = 0;
281 int unknownPDTNum = 0;
282 int stableChaNum = 0;
287 double logQScale = 0.;
309 HepMC::PdfInfo
const *pdf = myGenEvent->pdf_info();
311 bjorken = ((pdf->x1()) / ((pdf->x1()) + (pdf->x2())));
312 logQScale = log10(pdf->scalePDF());
313 if (logQScale > logQScaleMax)
315 if (logQScale < logQScaleMin)
317 logPdf1 = log10(pdf->pdf1());
322 logPdf2 = log10(pdf->pdf2());
335 if (pdf->id1() == -2)
337 if (pdf->id2() == -2)
343 if (pdf->id1() == -1)
345 if (pdf->id2() == -1)
366 HepMC::GenEvent::vertex_const_iterator vrtxBegin = myGenEvent->vertices_begin();
367 HepMC::GenEvent::vertex_const_iterator vrtxEnd = myGenEvent->vertices_end();
368 unsigned int nvtx(0);
369 for (HepMC::GenEvent::vertex_const_iterator vrtxIt = vrtxBegin; vrtxIt != vrtxEnd; ++vrtxIt) {
371 HepMC::GenVertex
const *vrtx = *vrtxIt;
380 HepMC::GenVertex::particles_out_const_iterator vrtxPtclBegin = vrtx->particles_out_const_begin();
381 HepMC::GenVertex::particles_out_const_iterator vrtxPtclEnd = vrtx->particles_out_const_end();
382 outVrtxStablePtclNum = 0;
383 for (HepMC::GenVertex::particles_out_const_iterator vrtxPtclIt = vrtxPtclBegin; vrtxPtclIt != vrtxPtclEnd;
386 if (vrtxPtcl->status() == 1) {
387 ++outVrtxStablePtclNum;
396 HepMC::GenEvent::particle_const_iterator ptclBegin = myGenEvent->particles_begin();
397 HepMC::GenEvent::particle_const_iterator ptclEnd = myGenEvent->particles_end();
398 for (HepMC::GenEvent::particle_const_iterator ptclIt = ptclBegin; ptclIt != ptclEnd; ++ptclIt) {
401 int Id = ptcl->pdg_id();
402 float Log_p = log10(ptcl->momentum().rho());
404 int status = ptcl->status();
406 if (PData ==
nullptr) {
410 charge = PData->charge();
416 if (ptcl->status() == 1) {
424 if (charge != 0. && charge != 999.)
448 etotal += ptcl->momentum().e();
449 pxtotal += ptcl->momentum().px();
450 pytotal += ptcl->momentum().py();
451 pztotal += ptcl->momentum().pz();
454 if (
abs(Id) < 6 ||
abs(Id) == 22) {
459 bool indentified =
false;
473 double ecms = 13000.;
474 if (myGenEvent->valid_beam_particles()) {
475 ecms = myGenEvent->beam_particles().first->momentum().e() + myGenEvent->beam_particles().second->momentum().e();
MonitorElement * genPtclStatus
MonitorElement * DeltaEcms
MonitorElement * genVrtxNumber
MonitorElement * unknownPDTNumber
MonitorElement * pdf_bbbar
MonitorElement * outVrtxPtclNumber
MonitorElement * pdf_dbar
MonitorElement * pdf_ccbar
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * Bjorken_x
MonitorElement * otherPtclNumber
other ME's
void setCurrentFolder(std::string const &fullpath)
void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
BasicHepMCValidation(const edm::ParameterSet &)
MonitorElement * parton2Id
MonitorElement * otherPtclMomentum
MonitorElement * stablePtclCharge
MonitorElement * partonNumber
edm::EDGetTokenT< edm::HepMCProduct > hepmcCollectionToken_
bool getData(T &iHolder) const
MonitorElement * vrtxRadius
MonitorElement * book1dHisto(std::string name, std::string title, int n, double xmin, double xmax, std::string xaxis, std::string yaxis)
~BasicHepMCValidation() override
MonitorElement * pdf_ubar
edm::ESHandle< HepPDT::ParticleDataTable > fPDGTable
PDT table.
void bookHistograms(DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
MonitorElement * scalePDF
Abs< T >::type abs(const T &t)
MonitorElement * log10DeltaEcms
MonitorElement * partonpT
MonitorElement * stablePtclPhi
MonitorElement * stablePtclEta
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
HepPDT::ParticleData ParticleData
void analyze(edm::Event const &, edm::EventSetup const &) override
MonitorElement * stablePtclp
MonitorElement * status1ShortLived
MonitorElement * stablePtclpT
MonitorElement * stableChaNumber
const HepMC::GenEvent * GetEvent() const
MonitorElement * stablePtclNumber
MonitorElement * genPtclNumber
edm::InputTag hepmcCollection_
MonitorElement * outVrtxStablePtclNumber
double weight(const edm::Event &)
std::vector< ParticleMonitor > particles
MonitorElement * pdf_ssbar
MonitorElement * parton1Id