CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TauDecay_GenParticle.cc
Go to the documentation of this file.
3 
4 #include <iomanip>
5 #include <cstdlib>
6 
8  TauDecay()
9 {
10 
11 }
12 
14 
15 }
16 
17 bool TauDecay_GenParticle::AnalyzeTau(const reco::GenParticle *Tau,unsigned int &JAK_ID,unsigned int &TauBitMask,bool dores, bool dopi0){
18  Reset();
19  MotherIdx.clear();
20  TauDecayProducts.clear();
21  if(abs(Tau->pdgId())==PdtPdgMini::tau_minus){ // check that it is a tau
22  unsigned int Tauidx=TauDecayProducts.size();
23  TauDecayProducts.push_back(Tau);
24  MotherIdx.push_back(Tauidx);
25  for (unsigned int i=0; i< Tau->numberOfDaughters(); i++){
26  const reco::Candidate *dau=Tau->daughter(i);
27  Analyze(static_cast<const reco::GenParticle*>(dau),Tauidx,dores,dopi0);
28  }
29  ClassifyDecayMode(JAK_ID,TauBitMask);
30  return true;
31  }
32  return false;
33 }
34 
35 
36 
37 
38 void TauDecay_GenParticle::Analyze(const reco::GenParticle *Particle,unsigned int midx,bool dores, bool dopi0){
39  unsigned int pdgid=abs(Particle->pdgId());
40  if(isTauFinalStateParticle(pdgid)){
41  if(!isTauParticleCounter(pdgid)) std::cout << "TauDecay_GenParticle::Analyze WARNING: Unknow Final State Particle in Tau Decay... " << std::endl;
42  TauDecayProducts.push_back(Particle);
43  MotherIdx.push_back(midx);
44  if(pdgid==PdtPdgMini::pi0 && dopi0){// store information on pi0 decay products even though a pi0 is a finsal state particle (for 3PiPi0 studies)
45  midx=MotherIdx.size()-1;
46  for (unsigned int i=0; i< Particle->numberOfDaughters(); i++){
47  const reco::Candidate *dau=Particle->daughter(i);
48  AddPi0Info(static_cast<const reco::GenParticle*>(dau),midx);
49  }
50  }
51  return;
52  }
53  if(Particle->status()==1 || (isTauResonanceCounter(pdgid) && dores)){
54  TauDecayProducts.push_back(Particle);
55  MotherIdx.push_back(midx);
56  midx=MotherIdx.size()-1;
57  }
58  for (unsigned int i=0; i< Particle->numberOfDaughters(); i++){
59  const reco::Candidate *dau=Particle->daughter(i);
60  Analyze(static_cast<const reco::GenParticle*>(dau),midx,dores,dopi0);
61  }
62 }
63 
64 
65 void TauDecay_GenParticle::AddPi0Info(const reco::GenParticle *Particle,unsigned int midx){
66  if(Particle->status()==1){
67  TauDecayProducts.push_back(Particle);
68  MotherIdx.push_back(midx);
69  return;
70  }
71  for (unsigned int i=0; i< Particle->numberOfDaughters(); i++){
72  const reco::Candidate *dau=Particle->daughter(i);
73  AddPi0Info(static_cast<const reco::GenParticle*>(dau),midx);
74  }
75 }
76 
int i
Definition: DBlmapReader.cc:9
void Reset()
Definition: TauDecay.cc:15
virtual int pdgId() const GCC11_FINAL
PDG identifier.
std::vector< const reco::GenParticle * > TauDecayProducts
bool isTauFinalStateParticle(int pdgid)
Definition: TauDecay.cc:36
virtual int status() const GCC11_FINAL
status word
void AddPi0Info(const reco::GenParticle *Particle, unsigned int midx)
virtual size_t numberOfDaughters() const
number of daughters
virtual const Candidate * daughter(size_type) const
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< unsigned int > MotherIdx
void Analyze(const reco::GenParticle *Particle, unsigned int midx, bool dores, bool dopi0)
bool isTauResonanceCounter(int pdgid)
Definition: TauDecay.cc:69
bool AnalyzeTau(const reco::GenParticle *Tau, unsigned int &JAK_ID, unsigned int &TauBitMask, bool dores, bool dopi0)
void ClassifyDecayMode(unsigned int &JAK_ID, unsigned int &TauBitMask)
Definition: TauDecay.cc:86
tuple cout
Definition: gather_cfg.py:121
bool isTauParticleCounter(int pdgid)
Definition: TauDecay.cc:52