CMS 3D CMS Logo

BPhysicsValidation.cc
Go to the documentation of this file.
1 //
3 // class Validation: Class to fill dqm monitor elements from existing EDM file
4 //
6 
8 
10 
11 using namespace edm;
12 
14  genparticleCollection_(iPSet.getParameter<edm::InputTag>("genparticleCollection")),
15  // do not include weights right now to allow for running on aod
16  name(iPSet.getParameter< std::string>("name")),
17  particle(name,iPSet)
18 {
19  genparticleCollectionToken_=consumes<reco::GenParticleCollection>(genparticleCollection_);
20  std::vector<std::string> daughterNames = iPSet.getParameter< std::vector<std::string> >("daughters");
21  for (unsigned int i=0; i<daughterNames.size();i++){
22  std::string curSet = daughterNames[i];
23  daughters.push_back(ParticleMonitor(name+curSet,iPSet.getUntrackedParameter< ParameterSet >(curSet)));
24  }
25 }
26 
28 
30 
32  DQMHelper dqm(&i); i.setCurrentFolder("Generator/BPhysics");
33  Nobj = dqm.book1dHisto("N"+name, "N"+name, 1, 0., 1,"bin","Number of "+name);
35  for(unsigned int j=0;j<daughters.size();j++){daughters[j].Configure(i);}
36 }
37 
40  iEvent.getByToken(genparticleCollectionToken_, genParticles );
41  for (reco::GenParticleCollection::const_iterator iter = genParticles->begin(); iter != genParticles->end(); ++iter) {
42  if(abs(iter->pdgId())==abs(particle.PDGID())){
43  Nobj->Fill(0.5, 1.0);
44  particle.Fill(&(*iter), 1.0);
45  FillDaughters(&(*iter));
46  }
47  }
48 }
49 
51  int mpdgid=p->pdgId();
52  for(unsigned int i = 0; i <p->numberOfDaughters(); i++){
53  const reco::GenParticle *dau=static_cast<const reco::GenParticle*>(p->daughter(i));
54  int pdgid = dau->pdgId();
55  for(unsigned int i=0;i<daughters.size();i++){
56  if(abs(mpdgid)!=abs(daughters[i].PDGID()) && daughters[i].PDGID()==pdgid)daughters[i].Fill(dau,1.0);
57  // note: use abs when comparing to mother to avoid mixing
58  }
59  FillDaughters(dau);
60  }
61 }
62 
63 
void Configure(DQMStore::IBooker &i)
T getParameter(std::string const &) const
int pdgId() const final
PDG identifier.
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
T getUntrackedParameter(std::string const &, T const &) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
MonitorElement * Nobj
BPhysicsValidation(const edm::ParameterSet &)
edm::EDGetTokenT< reco::GenParticleCollection > genparticleCollectionToken_
MonitorElement * book1dHisto(std::string name, std::string title, int n, double xmin, double xmax, std::string xaxis, std::string yaxis)
Definition: DQMHelper.cc:12
void Fill(long long x)
int iEvent
Definition: GenABIO.cc:230
ParticleMonitor particle
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
virtual void bookHistograms(DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
edm::InputTag genparticleCollection_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
size_t numberOfDaughters() const override
number of daughters
void FillDaughters(const reco::GenParticle *p)
HLT enums.
void Fill(const reco::GenParticle *p, double weight)
std::vector< ParticleMonitor > daughters
Definition: Run.h:43
virtual void analyze(edm::Event const &, edm::EventSetup const &) override