CMS 3D CMS Logo

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
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

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

Private Attributes

edm::EDGetTokenT< reco::CandidateViewgenToken_
 
TH1F * h_mZ_
 
TH1F * h_mZMC_
 
edm::EDGetTokenT< reco::CandidateViewzToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- 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_

Member Function Documentation

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

Definition at line 39 of file ZMassHistogrammer.cc.

References reco::Candidate::charge(), gather_cfg::cout, reco::Candidate::daughter(), DEFINE_FWK_MODULE, relval_steps::gen(), genToken_, h_mZ_, h_mZMC_, mps_fire::i, reco::Candidate::mass(), reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), edm::OwnVector< T, P >::size(), reco::Candidate::status(), 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 }
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
size_type size() const
Definition: OwnVector.h:264
edm::EDGetTokenT< reco::CandidateView > genToken_
virtual int status() const =0
status word
virtual int pdgId() const =0
PDG identifier.
edm::EDGetTokenT< reco::CandidateView > zToken_
def gen(fragment, howMuch)
Production test section ####.
virtual double mass() const =0
mass
virtual int charge() const =0
electric charge
virtual size_type numberOfDaughters() const =0
number of daughters

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().