1 #ifndef BASICHEPMCVALIDATION_H 2 #define BASICHEPMCVALIDATION_H 58 name +
"Number",
"Number of " +
name +
"'s per event", 20, 0, 20,
"No. of " +
name,
"Number of Events");
61 "Number of " +
name +
"'s per event",
65 "log_{10}(No. of " +
name +
")",
69 "log_{10}(P) of the " +
name +
"s",
73 "log_{10}(P) (log_{10}(GeV))",
79 "#phi of the " +
name +
"s",
83 "Log_{10}(life-time^{final}) (log_{10}(s))",
87 "log_{10}(P^{final}) of " +
name +
"s at end of decay chain",
91 "log_{10}(P^{final}) (log_{10}(GeV))",
95 "Log_{10}(life-time^{final}) of " +
name +
"s at end of decay chain",
99 "Log_{10}(life-time^{final}) (log_{10}(s))",
100 "Number of " +
name);
106 if (p->pdg_id() ==
pdgid) {
108 p_init->
Fill(log10(p->momentum().rho()), weight);
111 p_final->
Fill(log10(pf->momentum().rho()), weight);
113 if (p->production_vertex() && p->end_vertex()) {
114 TVector3
PV(p->production_vertex()->point3d().x(),
115 p->production_vertex()->point3d().y(),
116 p->production_vertex()->point3d().z());
117 TVector3
SV(p->end_vertex()->point3d().x(), p->end_vertex()->point3d().y(), p->end_vertex()->point3d().z());
118 TVector3 DL =
SV -
PV;
119 double c(2.99792458E8), Ltau(DL.Mag() / 100) ,
beta(p->momentum().rho() / p->momentum().m());
120 double lt = Ltau / (c *
beta);
123 if (pf->end_vertex()) {
125 pf->end_vertex()->point3d().x(), pf->end_vertex()->point3d().y(), pf->end_vertex()->point3d().z());
127 Ltau = DL.Mag() / 100;
128 lt = Ltau / (c *
beta);
152 if (p->production_vertex()) {
153 for (HepMC::GenVertex::particles_in_const_iterator
m = p->production_vertex()->particles_in_const_begin();
154 m != p->production_vertex()->particles_in_const_end();
156 if (
abs((*m)->pdg_id()) ==
abs(p->pdg_id()))
166 for (
unsigned int iMix = 0; iMix < 10; iMix++) {
167 bool foundSimilar =
false;
168 if (aPart->end_vertex()) {
169 if (aPart->end_vertex()->particles_out_size() != 0) {
170 for (HepMC::GenVertex::particles_out_const_iterator
d = aPart->end_vertex()->particles_out_const_begin();
171 d != aPart->end_vertex()->particles_out_const_end();
173 if (
abs((*d)->pdg_id()) ==
abs(aPart->pdg_id())) {
MonitorElement * genPtclStatus
MonitorElement * DeltaEcms
MonitorElement * genVrtxNumber
MonitorElement * unknownPDTNumber
MonitorElement * pdf_bbbar
MonitorElement * outVrtxPtclNumber
MonitorElement * pdf_dbar
MonitorElement * pdf_ccbar
bool isFirst(const HepMC::GenParticle *p)
MonitorElement * Bjorken_x
MonitorElement * otherPtclNumber
other ME's
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_
MonitorElement * lifetime_final
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.
MonitorElement * eta_init
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
const HepMC::GenParticle * GetFinal(const HepMC::GenParticle *p)
void analyze(edm::Event const &, edm::EventSetup const &) override
MonitorElement * stablePtclp
MonitorElement * status1ShortLived
MonitorElement * stablePtclpT
MonitorElement * stableChaNumber
ParticleMonitor(std::string name_, int pdgid_, DQMStore::IBooker &i, bool nlog_=false)
MonitorElement * stablePtclNumber
void FillCount(double weight)
bool Fill(const HepMC::GenParticle *p, double weight)
MonitorElement * lifetime_init
MonitorElement * genPtclNumber
edm::InputTag hepmcCollection_
MonitorElement * outVrtxStablePtclNumber
MonitorElement * numberPerEvent
std::vector< ParticleMonitor > particles
MonitorElement * pdf_ssbar
MonitorElement * parton1Id