1 |
|
#ifndef Jet_H |
2 |
|
#define Jet_H |
3 |
|
|
4 |
< |
#include "Particle.h" |
4 |
> |
#include "FlavorParticle.h" |
5 |
|
|
6 |
+ |
/** |
7 |
+ |
* @short jet class |
8 |
+ |
* @author Thomas Peiffer |
9 |
+ |
*/ |
10 |
|
|
11 |
< |
class Jet : public Particle{ |
11 |
> |
class Jet : public FlavorParticle{ |
12 |
|
|
13 |
|
public: |
14 |
|
|
15 |
|
Jet(){ |
16 |
|
m_nTracks=0; |
17 |
|
m_jetArea=0; |
14 |
– |
m_pileup=0; |
18 |
|
m_numberOfDaughters=0; |
19 |
|
m_neutralEmEnergyFraction=0; |
20 |
|
m_neutralHadronEnergyFraction=0; |
33 |
|
m_btag_combinedSecondaryVertexMVA=0; |
34 |
|
m_btag_jetBProbability=0; |
35 |
|
m_btag_jetProbability=0; |
33 |
– |
m_JEC_uncertainty=0; |
36 |
|
m_JEC_factor_raw=0; |
37 |
< |
m_genjet_pt=0; |
38 |
< |
m_genjet_eta=0; |
39 |
< |
m_genjet_phi=0; |
38 |
< |
m_genjet_energy=0; |
39 |
< |
m_genparticles_indices.clear(); |
37 |
> |
m_genjet_index=-1; |
38 |
> |
m_pfconstituents_indices.clear(); |
39 |
> |
m_genjet=NULL; |
40 |
|
}; |
41 |
|
|
42 |
|
~Jet(){ |
43 |
|
}; |
44 |
|
|
45 |
< |
LorentzVector genjet_v4(){ |
46 |
< |
LorentzVector v4; |
47 |
< |
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; |
45 |
> |
LorentzVector genjet_v4() const{ |
46 |
> |
|
47 |
> |
return genjet().v4(); |
48 |
|
}; |
49 |
|
|
50 |
< |
int nTracks(){return m_nTracks;} |
51 |
< |
float jetArea(){return m_jetArea;} |
52 |
< |
float pileup(){return m_pileup;} |
53 |
< |
int numberOfDaughters(){return m_numberOfDaughters;} |
54 |
< |
float neutralEmEnergyFraction(){return m_neutralEmEnergyFraction;} |
55 |
< |
float neutralHadronEnergyFraction(){return m_neutralHadronEnergyFraction;} |
56 |
< |
float chargedEmEnergyFraction(){return m_chargedEmEnergyFraction;} |
57 |
< |
float chargedHadronEnergyFraction(){return m_chargedHadronEnergyFraction;} |
58 |
< |
float muonEnergyFraction(){return m_muonEnergyFraction;} |
59 |
< |
float photonEnergyFraction(){return m_photonEnergyFraction;} |
60 |
< |
int chargedMultiplicity(){return m_chargedMultiplicity;} |
61 |
< |
int neutralMultiplicity(){return m_neutralMultiplicity;} |
62 |
< |
int muonMultiplicity(){return m_muonMultiplicity;} |
63 |
< |
int electronMultiplicity(){return m_electronMultiplicity;} |
64 |
< |
int photonMultiplicity(){return m_photonMultiplicity;} |
65 |
< |
float btag_simpleSecondaryVertexHighEff(){return m_btag_simpleSecondaryVertexHighEff;} |
66 |
< |
float btag_simpleSecondaryVertexHighPur(){return m_btag_simpleSecondaryVertexHighPur;} |
67 |
< |
float btag_combinedSecondaryVertex(){return m_btag_combinedSecondaryVertex;} |
68 |
< |
float btag_combinedSecondaryVertexMVA(){return m_btag_combinedSecondaryVertexMVA;} |
69 |
< |
float btag_jetBProbability(){return m_btag_jetBProbability;} |
70 |
< |
float btag_jetProbability(){return m_btag_jetProbability;} |
71 |
< |
float JEC_uncertainty(){return m_JEC_uncertainty;} |
72 |
< |
float JEC_factor_raw(){return m_JEC_factor_raw;} |
73 |
< |
float genjet_pt(){return m_genjet_pt;} |
74 |
< |
float genjet_eta(){return m_genjet_eta;} |
75 |
< |
float genjet_phi(){return m_genjet_phi;} |
76 |
< |
float genjet_energy(){return m_genjet_energy;} |
77 |
< |
std::vector<unsigned int> genparticles_indices(){return m_genparticles_indices;} |
50 |
> |
Particle genjet() const{ |
51 |
> |
if(m_genjet) |
52 |
> |
return *m_genjet; |
53 |
> |
else{ |
54 |
> |
//return 0 particle |
55 |
> |
Particle p; |
56 |
> |
return p; |
57 |
> |
} |
58 |
> |
}; |
59 |
> |
|
60 |
> |
std::vector<unsigned int> pfconstituents_indices() const{return m_pfconstituents_indices;} |
61 |
> |
|
62 |
> |
void add_pfconstituents_index(int ind){m_pfconstituents_indices.push_back(ind);} |
63 |
> |
|
64 |
> |
int nTracks() const{return m_nTracks;} |
65 |
> |
float jetArea() const{return m_jetArea;} |
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_factor_raw() const{return m_JEC_factor_raw;} |
85 |
> |
float genjet_pt() const{return genjet().pt();} |
86 |
> |
float genjet_eta() const{return genjet().eta();} |
87 |
> |
float genjet_phi() const{return genjet().phi();} |
88 |
> |
float genjet_energy() const{return genjet().energy();} |
89 |
> |
float genjet_index() const{return m_genjet_index;} |
90 |
|
|
91 |
|
void set_nTracks(int x){m_nTracks=x;} |
92 |
|
void set_jetArea(float x){m_jetArea=x;} |
85 |
– |
void set_pileup(float x){m_pileup=x;} |
93 |
|
void set_numberOfDaughters(int x){m_numberOfDaughters=x;} |
94 |
|
void set_neutralEmEnergyFraction(float x){m_neutralEmEnergyFraction=x;} |
95 |
|
void set_neutralHadronEnergyFraction(float x){m_neutralHadronEnergyFraction=x;} |
108 |
|
void set_btag_combinedSecondaryVertexMVA(float x){m_btag_combinedSecondaryVertexMVA=x;} |
109 |
|
void set_btag_jetBProbability(float x){m_btag_jetBProbability=x;} |
110 |
|
void set_btag_jetProbability(float x){m_btag_jetProbability=x;} |
104 |
– |
void set_JEC_uncertainty(float x){m_JEC_uncertainty=x;} |
111 |
|
void set_JEC_factor_raw(float x){m_JEC_factor_raw=x;} |
112 |
< |
void set_genjet_pt(float x){m_genjet_pt=x;} |
113 |
< |
void set_genjet_eta(float x){m_genjet_eta=x;} |
114 |
< |
void set_genjet_phi(float x){m_genjet_phi=x;} |
115 |
< |
void set_genjet_energy(float x){m_genjet_energy=x;} |
116 |
< |
void add_genparticles_index(unsigned int x){m_genparticles_indices.push_back(x);} |
112 |
> |
void set_genjet_index(int x){m_genjet_index=x;} |
113 |
> |
|
114 |
> |
bool has_genjet() const{return m_genjet_index>=0;} |
115 |
> |
|
116 |
> |
void set_genjet(std::vector<Particle>* genjets){ |
117 |
> |
if(!genjets) return; |
118 |
> |
if(m_genjet_index<0 || m_genjet_index>(int)genjets->size()) return; |
119 |
> |
m_genjet = &genjets->at(m_genjet_index); |
120 |
> |
} |
121 |
> |
|
122 |
> |
bool pfID(){ |
123 |
> |
//pf ID has already been applied when using goodPatJets |
124 |
> |
if(numberOfDaughters()>1 |
125 |
> |
&& neutralHadronEnergyFraction()<0.99 |
126 |
> |
&& neutralEmEnergyFraction()<0.99){ |
127 |
> |
|
128 |
> |
if(fabs(eta())>=2.4) |
129 |
> |
return true; |
130 |
> |
|
131 |
> |
if(chargedEmEnergyFraction()<0.99 |
132 |
> |
&& chargedHadronEnergyFraction()>0 |
133 |
> |
&& chargedMultiplicity()>0) |
134 |
> |
return true; |
135 |
> |
} |
136 |
> |
return false; |
137 |
> |
} |
138 |
|
|
139 |
|
private: |
140 |
|
|
141 |
|
int m_nTracks; |
142 |
|
float m_jetArea; |
116 |
– |
float m_pileup; |
143 |
|
int m_numberOfDaughters; |
144 |
|
float m_neutralEmEnergyFraction; |
145 |
|
float m_neutralHadronEnergyFraction; |
158 |
|
float m_btag_combinedSecondaryVertexMVA; |
159 |
|
float m_btag_jetBProbability; |
160 |
|
float m_btag_jetProbability; |
135 |
– |
float m_JEC_uncertainty; |
161 |
|
float m_JEC_factor_raw; |
162 |
< |
float m_genjet_pt; |
163 |
< |
float m_genjet_eta; |
164 |
< |
float m_genjet_phi; |
165 |
< |
float m_genjet_energy; |
162 |
> |
int m_genjet_index; |
163 |
> |
Particle* m_genjet; |
164 |
> |
|
165 |
> |
std::vector<unsigned int> m_pfconstituents_indices; |
166 |
|
|
142 |
– |
std::vector<unsigned int> m_genparticles_indices; |
167 |
|
|
168 |
|
}; |
169 |
|
|