CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
ZMassHistogrammer Class Reference
Inheritance diagram for ZMassHistogrammer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 ZMassHistogrammer (const edm::ParameterSet &pset)
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void analyze (const edm::Event &event, const edm::EventSetup &setup) override
 

Private Attributes

edm::EDGetTokenT
< reco::CandidateView
genToken_
 
TH1F * h_mZ_
 
TH1F * h_mZMC_
 
edm::EDGetTokenT
< reco::CandidateView
zToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 7 of file ZMassHistogrammer.cc.

Constructor & Destructor Documentation

ZMassHistogrammer::ZMassHistogrammer ( const edm::ParameterSet pset)

Definition at line 30 of file ZMassHistogrammer.cc.

References gather_cfg::cout, h_mZ_, h_mZMC_, and TFileService::make().

30  :
31  zToken_(consumes<reco::CandidateView>(pset.getParameter<InputTag>("z"))),
32  genToken_(consumes<reco::CandidateView>(pset.getParameter<InputTag>("gen"))) {
33  cout << ">>> Z Mass constructor" << endl;
35  h_mZ_ = fs->make<TH1F>("ZMass", "Z mass (GeV/c^{2})", 100, 0, 200);
36  h_mZMC_ = fs->make<TH1F>("ZMCMass", "Z MC mass (GeV/c^{2})", 100, 0, 200);
37 }
T getParameter(std::string const &) const
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
edm::EDGetTokenT< reco::CandidateView > genToken_
edm::EDGetTokenT< reco::CandidateView > zToken_
tuple cout
Definition: gather_cfg.py:121

Member Function Documentation

void ZMassHistogrammer::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
overrideprivatevirtual

Implements edm::EDAnalyzer.

Definition at line 39 of file ZMassHistogrammer.cc.

References reco::Candidate::charge(), gather_cfg::cout, reco::Candidate::daughter(), relval_steps::gen(), genToken_, h_mZ_, h_mZMC_, i, reco::Candidate::mass(), reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), reco::Candidate::status(), detailsBasic3DVector::z, and zToken_.

39  {
40  cout << ">>> Z Mass analyze" << endl;
43  event.getByToken(zToken_, z);
44  event.getByToken(genToken_, gen);
45  for(unsigned int i = 0; i < z->size(); ++i) {
46  const Candidate &zCand = (*z)[i];
47  h_mZ_->Fill(zCand.mass());
48  }
49  for(unsigned int i = 0; i < gen->size(); ++i) {
50  const Candidate &genCand = (*gen)[i];
51  if((genCand.pdgId() == 23) && (genCand.status() == 2)) //this is an intermediate Z0
52  cout << ">>> intermediate Z0 found, with " << genCand.numberOfDaughters()
53  << " daughters" << endl;
54  if((genCand.pdgId() == 23)&&(genCand.status() == 3)) { //this is a Z0
55  cout << ">>> Z0 found, with " << genCand.numberOfDaughters()
56  << " daughters" << endl;
57  h_mZMC_->Fill(genCand.mass());
58  if(genCand.numberOfDaughters() == 3) {//Z0 decays in mu+ mu-, the 3rd daughter is the same Z0
59  const Candidate * dauGen0 = genCand.daughter(0);
60  const Candidate * dauGen1 = genCand.daughter(1);
61  const Candidate * dauGen2 = genCand.daughter(2);
62  cout << ">>> daughter MC 0 PDG Id " << dauGen0->pdgId()
63  << ", status " << dauGen0->status()
64  << ", charge " << dauGen0->charge()
65  << endl;
66  cout << ">>> daughter MC 1 PDG Id " << dauGen1->pdgId()
67  << ", status " << dauGen1->status()
68  << ", charge " << dauGen1->charge()
69  << endl;
70  cout << ">>> daughter MC 2 PDG Id " << dauGen2->pdgId()
71  << ", status " << dauGen2->status()
72  << ", charge " << dauGen2->charge() << endl;
73  }
74  }
75  }
76 }
int i
Definition: DBlmapReader.cc:9
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
virtual double mass() const =0
mass
virtual int status() const =0
status word
float float float z
edm::EDGetTokenT< reco::CandidateView > genToken_
virtual size_type numberOfDaughters() const =0
number of daughters
edm::EDGetTokenT< reco::CandidateView > zToken_
virtual int charge() const =0
electric charge
virtual int pdgId() const =0
PDG identifier.
tuple cout
Definition: gather_cfg.py:121

Member Data Documentation

edm::EDGetTokenT<reco::CandidateView> ZMassHistogrammer::genToken_
private

Definition at line 13 of file ZMassHistogrammer.cc.

Referenced by analyze().

TH1F* ZMassHistogrammer::h_mZ_
private

Definition at line 14 of file ZMassHistogrammer.cc.

Referenced by analyze(), and ZMassHistogrammer().

TH1F * ZMassHistogrammer::h_mZMC_
private

Definition at line 14 of file ZMassHistogrammer.cc.

Referenced by analyze(), and ZMassHistogrammer().

edm::EDGetTokenT<reco::CandidateView> ZMassHistogrammer::zToken_
private

Definition at line 12 of file ZMassHistogrammer.cc.

Referenced by analyze().