3 |
|
|
4 |
|
#include "Particle.h" |
5 |
|
|
6 |
+ |
/** |
7 |
+ |
* @short jet class |
8 |
+ |
* @author Thomas Peiffer |
9 |
+ |
*/ |
10 |
|
|
11 |
|
class Jet : public Particle{ |
12 |
|
|
41 |
|
m_genjet_phi=0; |
42 |
|
m_genjet_energy=0; |
43 |
|
m_genparticles_indices.clear(); |
44 |
+ |
m_pfconstituents.clear(); |
45 |
|
}; |
46 |
|
|
47 |
|
~Jet(){ |
48 |
|
}; |
49 |
|
|
50 |
< |
LorentzVector genjet_v4(){ |
50 |
> |
LorentzVector genjet_v4() const{ |
51 |
|
LorentzVector v4; |
52 |
|
v4.SetPt(m_genjet_pt); |
53 |
|
v4.SetEta(m_genjet_eta); |
56 |
|
return v4; |
57 |
|
}; |
58 |
|
|
59 |
< |
int nTracks(){return m_nTracks;} |
60 |
< |
float jetArea(){return m_jetArea;} |
61 |
< |
float pileup(){return m_pileup;} |
62 |
< |
int numberOfDaughters(){return m_numberOfDaughters;} |
63 |
< |
float neutralEmEnergyFraction(){return m_neutralEmEnergyFraction;} |
64 |
< |
float neutralHadronEnergyFraction(){return m_neutralHadronEnergyFraction;} |
65 |
< |
float chargedEmEnergyFraction(){return m_chargedEmEnergyFraction;} |
66 |
< |
float chargedHadronEnergyFraction(){return m_chargedHadronEnergyFraction;} |
67 |
< |
float muonEnergyFraction(){return m_muonEnergyFraction;} |
68 |
< |
float photonEnergyFraction(){return m_photonEnergyFraction;} |
69 |
< |
int chargedMultiplicity(){return m_chargedMultiplicity;} |
70 |
< |
int neutralMultiplicity(){return m_neutralMultiplicity;} |
71 |
< |
int muonMultiplicity(){return m_muonMultiplicity;} |
72 |
< |
int electronMultiplicity(){return m_electronMultiplicity;} |
73 |
< |
int photonMultiplicity(){return m_photonMultiplicity;} |
74 |
< |
float btag_simpleSecondaryVertexHighEff(){return m_btag_simpleSecondaryVertexHighEff;} |
75 |
< |
float btag_simpleSecondaryVertexHighPur(){return m_btag_simpleSecondaryVertexHighPur;} |
76 |
< |
float btag_combinedSecondaryVertex(){return m_btag_combinedSecondaryVertex;} |
77 |
< |
float btag_combinedSecondaryVertexMVA(){return m_btag_combinedSecondaryVertexMVA;} |
78 |
< |
float btag_jetBProbability(){return m_btag_jetBProbability;} |
79 |
< |
float btag_jetProbability(){return m_btag_jetProbability;} |
80 |
< |
float JEC_uncertainty(){return m_JEC_uncertainty;} |
81 |
< |
float JEC_factor_raw(){return m_JEC_factor_raw;} |
82 |
< |
float genjet_pt(){return m_genjet_pt;} |
83 |
< |
float genjet_eta(){return m_genjet_eta;} |
84 |
< |
float genjet_phi(){return m_genjet_phi;} |
85 |
< |
float genjet_energy(){return m_genjet_energy;} |
86 |
< |
std::vector<unsigned int> genparticles_indices(){return m_genparticles_indices;} |
59 |
> |
std::vector<Particle> pfconstituents() const{return m_pfconstituents;} |
60 |
> |
|
61 |
> |
void add_pfconstituents(Particle p){m_pfconstituents.push_back(p);} |
62 |
> |
|
63 |
> |
int nTracks() const{return m_nTracks;} |
64 |
> |
float jetArea() const{return m_jetArea;} |
65 |
> |
float pileup() const{return m_pileup;} |
66 |
> |
int numberOfDaughters() const{return m_numberOfDaughters;} |
67 |
> |
float neutralEmEnergyFraction() const{return m_neutralEmEnergyFraction;} |
68 |
> |
float neutralHadronEnergyFraction() const{return m_neutralHadronEnergyFraction;} |
69 |
> |
float chargedEmEnergyFraction() const{return m_chargedEmEnergyFraction;} |
70 |
> |
float chargedHadronEnergyFraction() const{return m_chargedHadronEnergyFraction;} |
71 |
> |
float muonEnergyFraction() const{return m_muonEnergyFraction;} |
72 |
> |
float photonEnergyFraction() const{return m_photonEnergyFraction;} |
73 |
> |
int chargedMultiplicity() const{return m_chargedMultiplicity;} |
74 |
> |
int neutralMultiplicity() const{return m_neutralMultiplicity;} |
75 |
> |
int muonMultiplicity() const{return m_muonMultiplicity;} |
76 |
> |
int electronMultiplicity() const{return m_electronMultiplicity;} |
77 |
> |
int photonMultiplicity() const{return m_photonMultiplicity;} |
78 |
> |
float btag_simpleSecondaryVertexHighEff() const{return m_btag_simpleSecondaryVertexHighEff;} |
79 |
> |
float btag_simpleSecondaryVertexHighPur() const{return m_btag_simpleSecondaryVertexHighPur;} |
80 |
> |
float btag_combinedSecondaryVertex() const{return m_btag_combinedSecondaryVertex;} |
81 |
> |
float btag_combinedSecondaryVertexMVA() const{return m_btag_combinedSecondaryVertexMVA;} |
82 |
> |
float btag_jetBProbability() const{return m_btag_jetBProbability;} |
83 |
> |
float btag_jetProbability() const{return m_btag_jetProbability;} |
84 |
> |
float JEC_uncertainty() const{return m_JEC_uncertainty;} |
85 |
> |
float JEC_factor_raw() const{return m_JEC_factor_raw;} |
86 |
> |
float genjet_pt() const{return m_genjet_pt;} |
87 |
> |
float genjet_eta() const{return m_genjet_eta;} |
88 |
> |
float genjet_phi() const{return m_genjet_phi;} |
89 |
> |
float genjet_energy() const{return m_genjet_energy;} |
90 |
> |
std::vector<unsigned int> genparticles_indices() const{return m_genparticles_indices;} |
91 |
|
|
92 |
|
void set_nTracks(int x){m_nTracks=x;} |
93 |
|
void set_jetArea(float x){m_jetArea=x;} |
118 |
|
void set_genjet_energy(float x){m_genjet_energy=x;} |
119 |
|
void add_genparticles_index(unsigned int x){m_genparticles_indices.push_back(x);} |
120 |
|
|
121 |
+ |
bool has_genjet() const{return m_genjet_pt>0;} |
122 |
+ |
|
123 |
+ |
bool pfID(){ |
124 |
+ |
//pf ID has already been applied when using goodPatJets |
125 |
+ |
if(numberOfDaughters()>1 |
126 |
+ |
&& neutralHadronEnergyFraction()<0.99 |
127 |
+ |
&& neutralEmEnergyFraction()<0.99){ |
128 |
+ |
|
129 |
+ |
if(fabs(eta())>=2.4) |
130 |
+ |
return true; |
131 |
+ |
|
132 |
+ |
if(chargedEmEnergyFraction()<0.99 |
133 |
+ |
&& chargedHadronEnergyFraction()>0 |
134 |
+ |
&& chargedMultiplicity()>0) |
135 |
+ |
return true; |
136 |
+ |
} |
137 |
+ |
return false; |
138 |
+ |
} |
139 |
+ |
|
140 |
|
private: |
141 |
|
|
142 |
|
int m_nTracks; |
169 |
|
|
170 |
|
std::vector<unsigned int> m_genparticles_indices; |
171 |
|
|
172 |
+ |
std::vector<Particle> m_pfconstituents; |
173 |
+ |
|
174 |
|
}; |
175 |
|
|
176 |
|
#endif |