3 |
|
|
4 |
|
#include "Particle.h" |
5 |
|
|
6 |
+ |
/** |
7 |
+ |
* @short jet class |
8 |
+ |
* @author Thomas Peiffer |
9 |
+ |
*/ |
10 |
|
|
11 |
|
class Jet : public Particle{ |
12 |
|
|
36 |
|
m_btag_jetProbability=0; |
37 |
|
m_JEC_uncertainty=0; |
38 |
|
m_JEC_factor_raw=0; |
39 |
< |
m_genjet_pt=0; |
36 |
< |
m_genjet_eta=0; |
37 |
< |
m_genjet_phi=0; |
38 |
< |
m_genjet_energy=0; |
39 |
> |
m_genjet_index=-1; |
40 |
|
m_genparticles_indices.clear(); |
41 |
+ |
m_pfconstituents_indices.clear(); |
42 |
+ |
m_genjet=NULL; |
43 |
|
}; |
44 |
|
|
45 |
|
~Jet(){ |
46 |
|
}; |
47 |
|
|
48 |
< |
LorentzVector genjet_v4(){ |
49 |
< |
LorentzVector v4; |
50 |
< |
v4.SetPt(m_genjet_pt); |
48 |
< |
v4.SetEta(m_genjet_eta); |
49 |
< |
v4.SetPhi(m_genjet_phi); |
50 |
< |
v4.SetE(m_genjet_energy); |
51 |
< |
return v4; |
48 |
> |
LorentzVector genjet_v4() const{ |
49 |
> |
|
50 |
> |
return genjet().v4(); |
51 |
|
}; |
52 |
|
|
53 |
< |
int nTracks(){return m_nTracks;} |
54 |
< |
float jetArea(){return m_jetArea;} |
55 |
< |
float pileup(){return m_pileup;} |
56 |
< |
int numberOfDaughters(){return m_numberOfDaughters;} |
57 |
< |
float neutralEmEnergyFraction(){return m_neutralEmEnergyFraction;} |
58 |
< |
float neutralHadronEnergyFraction(){return m_neutralHadronEnergyFraction;} |
59 |
< |
float chargedEmEnergyFraction(){return m_chargedEmEnergyFraction;} |
60 |
< |
float chargedHadronEnergyFraction(){return m_chargedHadronEnergyFraction;} |
61 |
< |
float muonEnergyFraction(){return m_muonEnergyFraction;} |
62 |
< |
float photonEnergyFraction(){return m_photonEnergyFraction;} |
63 |
< |
int chargedMultiplicity(){return m_chargedMultiplicity;} |
64 |
< |
int neutralMultiplicity(){return m_neutralMultiplicity;} |
65 |
< |
int muonMultiplicity(){return m_muonMultiplicity;} |
66 |
< |
int electronMultiplicity(){return m_electronMultiplicity;} |
67 |
< |
int photonMultiplicity(){return m_photonMultiplicity;} |
68 |
< |
float btag_simpleSecondaryVertexHighEff(){return m_btag_simpleSecondaryVertexHighEff;} |
69 |
< |
float btag_simpleSecondaryVertexHighPur(){return m_btag_simpleSecondaryVertexHighPur;} |
70 |
< |
float btag_combinedSecondaryVertex(){return m_btag_combinedSecondaryVertex;} |
71 |
< |
float btag_combinedSecondaryVertexMVA(){return m_btag_combinedSecondaryVertexMVA;} |
72 |
< |
float btag_jetBProbability(){return m_btag_jetBProbability;} |
73 |
< |
float btag_jetProbability(){return m_btag_jetProbability;} |
74 |
< |
float JEC_uncertainty(){return m_JEC_uncertainty;} |
75 |
< |
float JEC_factor_raw(){return m_JEC_factor_raw;} |
76 |
< |
float genjet_pt(){return m_genjet_pt;} |
77 |
< |
float genjet_eta(){return m_genjet_eta;} |
78 |
< |
float genjet_phi(){return m_genjet_phi;} |
79 |
< |
float genjet_energy(){return m_genjet_energy;} |
80 |
< |
std::vector<unsigned int> genparticles_indices(){return m_genparticles_indices;} |
53 |
> |
Particle genjet() const{ |
54 |
> |
if(m_genjet) |
55 |
> |
return *m_genjet; |
56 |
> |
else{ |
57 |
> |
//return 0 particle |
58 |
> |
Particle p; |
59 |
> |
return p; |
60 |
> |
} |
61 |
> |
}; |
62 |
> |
|
63 |
> |
std::vector<unsigned int> pfconstituents_indices() const{return m_pfconstituents_indices;} |
64 |
> |
|
65 |
> |
void add_pfconstituents_index(int ind){m_pfconstituents_indices.push_back(ind);} |
66 |
> |
|
67 |
> |
int nTracks() const{return m_nTracks;} |
68 |
> |
float jetArea() const{return m_jetArea;} |
69 |
> |
float pileup() const{return m_pileup;} |
70 |
> |
int numberOfDaughters() const{return m_numberOfDaughters;} |
71 |
> |
float neutralEmEnergyFraction() const{return m_neutralEmEnergyFraction;} |
72 |
> |
float neutralHadronEnergyFraction() const{return m_neutralHadronEnergyFraction;} |
73 |
> |
float chargedEmEnergyFraction() const{return m_chargedEmEnergyFraction;} |
74 |
> |
float chargedHadronEnergyFraction() const{return m_chargedHadronEnergyFraction;} |
75 |
> |
float muonEnergyFraction() const{return m_muonEnergyFraction;} |
76 |
> |
float photonEnergyFraction() const{return m_photonEnergyFraction;} |
77 |
> |
int chargedMultiplicity() const{return m_chargedMultiplicity;} |
78 |
> |
int neutralMultiplicity() const{return m_neutralMultiplicity;} |
79 |
> |
int muonMultiplicity() const{return m_muonMultiplicity;} |
80 |
> |
int electronMultiplicity() const{return m_electronMultiplicity;} |
81 |
> |
int photonMultiplicity() const{return m_photonMultiplicity;} |
82 |
> |
float btag_simpleSecondaryVertexHighEff() const{return m_btag_simpleSecondaryVertexHighEff;} |
83 |
> |
float btag_simpleSecondaryVertexHighPur() const{return m_btag_simpleSecondaryVertexHighPur;} |
84 |
> |
float btag_combinedSecondaryVertex() const{return m_btag_combinedSecondaryVertex;} |
85 |
> |
float btag_combinedSecondaryVertexMVA() const{return m_btag_combinedSecondaryVertexMVA;} |
86 |
> |
float btag_jetBProbability() const{return m_btag_jetBProbability;} |
87 |
> |
float btag_jetProbability() const{return m_btag_jetProbability;} |
88 |
> |
float JEC_uncertainty() const{return m_JEC_uncertainty;} |
89 |
> |
float JEC_factor_raw() const{return m_JEC_factor_raw;} |
90 |
> |
float genjet_pt() const{return genjet().pt();} |
91 |
> |
float genjet_eta() const{return genjet().eta();} |
92 |
> |
float genjet_phi() const{return genjet().phi();} |
93 |
> |
float genjet_energy() const{return genjet().energy();} |
94 |
> |
float genjet_index() const{return m_genjet_index;} |
95 |
> |
std::vector<unsigned int> genparticles_indices() const{return m_genparticles_indices;} |
96 |
|
|
97 |
|
void set_nTracks(int x){m_nTracks=x;} |
98 |
|
void set_jetArea(float x){m_jetArea=x;} |
117 |
|
void set_btag_jetProbability(float x){m_btag_jetProbability=x;} |
118 |
|
void set_JEC_uncertainty(float x){m_JEC_uncertainty=x;} |
119 |
|
void set_JEC_factor_raw(float x){m_JEC_factor_raw=x;} |
120 |
< |
void set_genjet_pt(float x){m_genjet_pt=x;} |
107 |
< |
void set_genjet_eta(float x){m_genjet_eta=x;} |
108 |
< |
void set_genjet_phi(float x){m_genjet_phi=x;} |
109 |
< |
void set_genjet_energy(float x){m_genjet_energy=x;} |
120 |
> |
void set_genjet_index(int x){m_genjet_index=x;} |
121 |
|
void add_genparticles_index(unsigned int x){m_genparticles_indices.push_back(x);} |
122 |
|
|
123 |
+ |
bool has_genjet() const{return m_genjet_index>=0;} |
124 |
+ |
|
125 |
+ |
void set_genjet(std::vector<Particle>* genjets){ |
126 |
+ |
if(!genjets) return; |
127 |
+ |
if(m_genjet_index<0 || m_genjet_index>(int)genjets->size()) return; |
128 |
+ |
m_genjet = &genjets->at(m_genjet_index); |
129 |
+ |
} |
130 |
+ |
|
131 |
+ |
bool pfID(){ |
132 |
+ |
//pf ID has already been applied when using goodPatJets |
133 |
+ |
if(numberOfDaughters()>1 |
134 |
+ |
&& neutralHadronEnergyFraction()<0.99 |
135 |
+ |
&& neutralEmEnergyFraction()<0.99){ |
136 |
+ |
|
137 |
+ |
if(fabs(eta())>=2.4) |
138 |
+ |
return true; |
139 |
+ |
|
140 |
+ |
if(chargedEmEnergyFraction()<0.99 |
141 |
+ |
&& chargedHadronEnergyFraction()>0 |
142 |
+ |
&& chargedMultiplicity()>0) |
143 |
+ |
return true; |
144 |
+ |
} |
145 |
+ |
return false; |
146 |
+ |
} |
147 |
+ |
|
148 |
|
private: |
149 |
|
|
150 |
|
int m_nTracks; |
170 |
|
float m_btag_jetProbability; |
171 |
|
float m_JEC_uncertainty; |
172 |
|
float m_JEC_factor_raw; |
173 |
< |
float m_genjet_pt; |
174 |
< |
float m_genjet_eta; |
139 |
< |
float m_genjet_phi; |
140 |
< |
float m_genjet_energy; |
173 |
> |
int m_genjet_index; |
174 |
> |
Particle* m_genjet; |
175 |
|
|
176 |
|
std::vector<unsigned int> m_genparticles_indices; |
177 |
|
|
178 |
+ |
std::vector<unsigned int> m_pfconstituents_indices; |
179 |
+ |
|
180 |
+ |
|
181 |
|
}; |
182 |
|
|
183 |
|
#endif |