1 |
#ifndef Jet_h
|
2 |
#define Jet_h
|
3 |
|
4 |
#include <TLorentzVector.h>
|
5 |
using namespace std;
|
6 |
|
7 |
class Jet{
|
8 |
|
9 |
private:
|
10 |
int index_;
|
11 |
double pt_, eta_, phi_;
|
12 |
double energyFractionEm_;
|
13 |
double energyFractionHm_;
|
14 |
int jettype_;
|
15 |
TLorentzVector mom_;
|
16 |
TLorentzVector mom_unsubtracted_;
|
17 |
double btag_;
|
18 |
|
19 |
// for PF jets
|
20 |
double chargedHadronEnergyFraction_;
|
21 |
double neutralHadronEnergyFraction_;
|
22 |
double chargedEmEnergyFraction_;
|
23 |
double neutralEmEnergyFraction_;
|
24 |
int chargedMultiplicity_;
|
25 |
int numberOfDaughters_;
|
26 |
|
27 |
int isSubtracted_ ;
|
28 |
|
29 |
|
30 |
public:
|
31 |
//Jet() {};
|
32 |
Jet(
|
33 |
int index,
|
34 |
double pt,
|
35 |
double eta,
|
36 |
double phi,
|
37 |
double energyFractionEm
|
38 |
)
|
39 |
{
|
40 |
index_=index;
|
41 |
pt_=pt;
|
42 |
eta_=eta;
|
43 |
phi_=phi;
|
44 |
energyFractionEm_=energyFractionEm;
|
45 |
jettype_ = 1;
|
46 |
mom_.SetPtEtaPhiM(pt_, eta_, phi_, 0);
|
47 |
energyFractionHm_ = 0;
|
48 |
//pfjets
|
49 |
chargedHadronEnergyFraction_=0;
|
50 |
neutralHadronEnergyFraction_=0;
|
51 |
chargedEmEnergyFraction_=0;
|
52 |
neutralEmEnergyFraction_=0;
|
53 |
chargedMultiplicity_=0;
|
54 |
numberOfDaughters_=0;
|
55 |
isSubtracted_ = 0;
|
56 |
mom_unsubtracted_ = mom_;
|
57 |
|
58 |
};
|
59 |
~Jet() {};
|
60 |
|
61 |
double Pt() const {return pt_;};
|
62 |
double Eta() const {return eta_;};
|
63 |
double Phi() const {return phi_;};
|
64 |
double EnergyFractionEm() const {return energyFractionEm_;};
|
65 |
double EnergyFractionHm() const {return energyFractionHm_;};
|
66 |
void SetEnergyFractionHm(double d) {energyFractionHm_=d;};
|
67 |
int Index() const {return index_;};
|
68 |
void SetJetType(int t){jettype_=t;};
|
69 |
int GetJetType(){return jettype_;};
|
70 |
double pt() const {return pt_;};
|
71 |
double eta() const {return eta_;};
|
72 |
double phi() const {return phi_;};
|
73 |
double px() const {return mom_.Px();};
|
74 |
double py() const {return mom_.Py();};
|
75 |
double p() const {return mom_.P();};
|
76 |
TLorentzVector getMom() const {return mom_;};
|
77 |
TLorentzVector getMom_unsubtracted() const {return mom_unsubtracted_;};
|
78 |
|
79 |
double GetBtag() const {return btag_;};
|
80 |
void SetBtag(double b){btag_=b;};
|
81 |
|
82 |
|
83 |
// for PF jets
|
84 |
double chargedHadronEnergyFraction()const{return chargedHadronEnergyFraction_;};
|
85 |
double neutralHadronEnergyFraction()const{return neutralHadronEnergyFraction_;};
|
86 |
double chargedEmEnergyFraction()const{return chargedEmEnergyFraction_;};
|
87 |
double neutralEmEnergyFraction()const{return neutralEmEnergyFraction_;};
|
88 |
double chargedMultiplicity()const{return chargedMultiplicity_;};
|
89 |
int numberOfDaughters()const{return numberOfDaughters_;};
|
90 |
void SetPFJetProperties(
|
91 |
double chargedHadronEnergyFractionTmp,
|
92 |
double neutralHadronEnergyFractionTmp,
|
93 |
double chargedEmEnergyFractionTmp,
|
94 |
double neutralEmEnergyFractionTmp,
|
95 |
int chargedMultiplicityTmp,
|
96 |
int numberOfDaughtersTmp){
|
97 |
chargedHadronEnergyFraction_= chargedHadronEnergyFractionTmp;
|
98 |
neutralHadronEnergyFraction_= neutralHadronEnergyFractionTmp;
|
99 |
chargedEmEnergyFraction_= chargedEmEnergyFractionTmp;
|
100 |
neutralEmEnergyFraction_= neutralEmEnergyFractionTmp;
|
101 |
chargedMultiplicity_= chargedMultiplicityTmp;
|
102 |
numberOfDaughters_= numberOfDaughtersTmp;
|
103 |
};
|
104 |
void subtractLepton(TLorentzVector mom){
|
105 |
mom_ -= mom;
|
106 |
pt_ = mom_.Pt();
|
107 |
eta_ = mom_.Eta();
|
108 |
phi_ = mom_.Phi();
|
109 |
isSubtracted_ = 1;
|
110 |
};
|
111 |
int isSubtracted() const {return isSubtracted_;};
|
112 |
|
113 |
};
|
114 |
#endif // #ifdef Jet_cxx
|