CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
JetMCTag.cc
Go to the documentation of this file.
3 #include <iostream>
4 
5 using namespace std;
6 using namespace reco;
7 using namespace JetMCTagUtils;
8 using namespace CandMCTagUtils;
9 
11 
13 {
14  double ratioForBjet=0;
15  double ratio = 0;
16  for( Candidate::const_iterator itC = c.begin();
17  itC != c.end();
18  itC ++) {
19  bool isFromB = decayFromBHadron(*itC);
20  ratio = itC->energy() / c.energy() ;
21  if( isFromB ) ratioForBjet += ratio;
22  }
23  return ratioForBjet;
24 }
25 
27 {
28  double ratioForCjet=0;
29  double ratio = 0;
30  for( Candidate::const_iterator itC = c.begin();
31  itC != c.end();
32  itC ++) {
33  bool isFromC = decayFromCHadron(*itC);
34  ratio = itC->energy() / c.energy() ;
35  if( isFromC ) ratioForCjet += ratio;
36  }
37  return ratioForCjet;
38 }
39 
41 {
42  bool isFromB = false;
43  vector<const Candidate *> allParents = getAncestors( c );
44  for( vector<const Candidate *>::const_iterator aParent = allParents.begin();
45  aParent != allParents.end();
46  aParent ++ )
47  {
48  if( hasBottom(**aParent) ) isFromB = true;
49 /*
50  cout << " particle Parent is " << (*aParent)->status()
51  << " type " << (*aParent)->pdgId()
52  << " pt=" << (*aParent)->pt()
53  << " isB = " << isFromB
54  << endl;
55 */
56  }
57  return isFromB;
58 
59 }
60 
62 {
63  bool isFromC = false;
64  vector<const Candidate *> allParents = getAncestors( c );
65  for( vector<const Candidate *>::const_iterator aParent = allParents.begin();
66  aParent != allParents.end();
67  aParent ++ )
68  {
69  if( hasCharm(**aParent) ) isFromC = true;
70 /*
71  cout << " particle Parent is " << (*aParent)->status()
72  << " type " << (*aParent)->pdgId()
73  << " pt=" << (*aParent)->pt()
74  << " isC = " << isFromC
75  << endl;
76 */
77  }
78  return isFromC;
79 }
80 
82 
83  int numElectrons = 0;
84  int numMuons = 0;
85  int numChargedHadrons = 0;
86  int numNeutralHadrons = 0;
87  int numPhotons = 0;
88 
90  for ( CompositePtrCandidate::daughters::const_iterator daughter = daughters.begin();
91  daughter != daughters.end(); ++daughter ) {
92 
93  int pdg_id = abs((*daughter)->pdgId());
94 
95  switch ( pdg_id ) {
96 
97  case 22:
98  numPhotons++;
99  break;
100  case 11:
101  numElectrons++;
102  break;
103  case 13:
104  numMuons++;
105  break;
106  default : {if ((*daughter)->charge() != 0) numChargedHadrons++; else numNeutralHadrons++;}
107  }
108  }
109 
110  if (numElectrons == 1) return std::string("electron");
111  else if (numMuons == 1) return std::string("muon");
112 
113  switch ( numChargedHadrons ) {
114  case 1 :
115  if (numNeutralHadrons != 0) return std::string("oneProngOther");
116  switch ( numPhotons ) {
117  case 0:
118  return std::string("oneProng0Pi0");
119  case 2:
120  return std::string("oneProng1Pi0");
121  case 4:
122  return std::string("oneProng2Pi0");
123  default:
124  return std::string("oneProngOther");
125  }
126  case 3 :
127  if (numNeutralHadrons != 0) return std::string("threeProngOther");
128  switch ( numPhotons ) {
129  case 0:
130  return std::string("threeProng0Pi0");
131  case 2:
132  return std::string("threeProng1Pi0");
133  default:
134  return std::string("threeProngOther");
135  }
136  default:
137  return std::string("rare");
138  }
139 
140 }
141 
std::string genTauDecayMode(const reco::CompositePtrCandidate &c)
Definition: JetMCTag.cc:81
virtual double energy() const =0
energy
std::vector< const reco::Candidate * > getAncestors(const reco::Candidate &c)
Definition: CandMCTag.cc:10
bool hasCharm(const reco::Candidate &c)
Definition: CandMCTag.cc:37
tuple numMuons
Definition: patZpeak.py:40
double EnergyRatioFromBHadrons(const reco::Candidate &c)
Definition: JetMCTag.cc:12
const_iterator end() const
last daughter const_iterator
Definition: Candidate.h:146
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< CandidatePtr > daughters
collection of references to daughters
bool decayFromCHadron(const reco::Candidate &c)
Definition: JetMCTag.cc:61
bool decayFromBHadron(const reco::Candidate &c)
Definition: JetMCTag.cc:40
double EnergyRatioFromCHadrons(const reco::Candidate &c)
Definition: JetMCTag.cc:26
const daughters & daughterPtrVector() const
references to daughtes
const_iterator begin() const
first daughter const_iterator
Definition: Candidate.h:144
bool hasBottom(const reco::Candidate &c)
Definition: CandMCTag.cc:26