12 |
|
|
13 |
|
ntupleReader(const char * infile) : ntupleLoader( infile ){}; |
14 |
|
// virtual ~ntupleReader(); |
15 |
< |
virtual std::vector<TLorentzVector> SimBs(); |
16 |
< |
virtual std::vector<TLorentzVector> SVs(); |
17 |
< |
virtual int CountJets(); |
18 |
< |
virtual int CountAddJets(); |
19 |
< |
virtual int CountAddForwardJets(); |
20 |
< |
virtual int CountAddJets_jec( double sign ); |
21 |
< |
virtual int CountAddLeptons(); |
22 |
< |
virtual bool TriggerBit(); |
23 |
< |
virtual TLorentzVector VectorBoson(); //vector boson TLorentz vector |
24 |
< |
virtual double resolution(double eta); //smearing for the jet energy resolution |
25 |
< |
virtual TLorentzVector hJet_jer( int idx, double sign ); |
26 |
< |
virtual TLorentzVector H_jer( double sing ); |
27 |
< |
virtual double hJet_PT( int idx, int sign ); //higgs jet energy correction |
28 |
< |
virtual double aJet_PT( int idx, int sign ); //addtional jet energy correction |
29 |
< |
virtual TLorentzVector Higgs( int sign ); //higgs candidate jet energy correction |
30 |
< |
virtual double hJet_CSV( int idx, int sign ); //higgs jet energy correction |
31 |
< |
virtual double hJet_pt_jec( int idx, double sign ); //higgs jet energy correction |
32 |
< |
virtual double aJet_pt_jec( int idx, double sign ); //addtional jet energy correction |
33 |
< |
virtual TLorentzVector H_jec( double sign ); //higgs candidate jet energy correction |
34 |
< |
virtual double hJet_csv_cUP( int idx ); |
35 |
< |
virtual double hJet_csv_cDOWN( int idx ); |
36 |
< |
virtual double hJet_csv_cFUP( int idx ); |
37 |
< |
virtual double hJet_csv_cFDOWN( int idx ); |
38 |
< |
virtual double hJet_pt_jecUP( int idx ); |
39 |
< |
virtual double hJet_pt_jecDOWN( int idx ); |
40 |
< |
virtual double aJet_pt_jecUP( int idx ); |
41 |
< |
virtual double aJet_pt_jecDOWN( int idx ); |
42 |
< |
virtual TLorentzVector H_jecUP(); |
43 |
< |
virtual TLorentzVector H_jecDOWN(); |
44 |
< |
|
15 |
> |
virtual int GetSign(int v); |
16 |
> |
virtual std::vector<TLorentzVector> SimBs(); |
17 |
> |
virtual std::vector<TLorentzVector> SVs(); |
18 |
> |
virtual double typeIcorrMET( double sign ); |
19 |
> |
virtual int CountJets(); |
20 |
> |
virtual int CountAddJets(); |
21 |
> |
virtual int CountAddForwardJets(); |
22 |
> |
virtual int CountAddJets_jec( double sign ); |
23 |
> |
virtual int CountAddLeptons(); |
24 |
> |
virtual bool TriggerBit(); |
25 |
> |
virtual TLorentzVector VectorBoson(); //vector boson TLorentz vector |
26 |
> |
virtual double resolution(double eta); //smearing for the jet energy resolution |
27 |
> |
virtual TLorentzVector hJet_jer( int idx, double sign ); |
28 |
> |
virtual TLorentzVector H_jer( double sing ); |
29 |
> |
virtual double hJet_PT( int idx, int sign ); //higgs jet energy correction |
30 |
> |
virtual double aJet_PT( int idx, int sign ); //addtional jet energy correction |
31 |
> |
virtual double hJet_E( int idx, int sign ); //higgs jet energy correction |
32 |
> |
virtual double aJet_E( int idx, int sign ); //addtional jet energy correction |
33 |
> |
virtual TLorentzVector Higgs( int sign ); //higgs candidate jet energy correction |
34 |
> |
virtual double hJet_CSV( int idx, int sign ); //higgs jet energy correction |
35 |
> |
virtual double hJet_pt_jec( int idx, double sign ); //higgs jet energy correction |
36 |
> |
virtual double aJet_pt_jec( int idx, double sign ); //addtional jet energy correction |
37 |
> |
virtual TLorentzVector H_jec( double sign ); //higgs candidate jet energy correction |
38 |
> |
virtual double hJet_csv_cUP( int idx ); |
39 |
> |
virtual double hJet_csv_cDOWN( int idx ); |
40 |
> |
virtual double hJet_csv_cFUP( int idx ); |
41 |
> |
virtual double hJet_csv_cFDOWN( int idx ); |
42 |
> |
virtual double hJet_pt_jecUP( int idx ); |
43 |
> |
virtual double hJet_pt_jecDOWN( int idx ); |
44 |
> |
virtual double aJet_pt_jecUP( int idx ); |
45 |
> |
virtual double aJet_pt_jecDOWN( int idx ); |
46 |
> |
virtual TLorentzVector H_jecUP(); |
47 |
> |
virtual TLorentzVector H_jecDOWN(); |
48 |
> |
|
49 |
|
}; |
50 |
|
|
51 |
+ |
int ntupleReader::GetSign(int v){ |
52 |
+ |
return v > 0 ? 1 : (v < 0 ? -1 : 0); |
53 |
+ |
} |
54 |
|
|
55 |
|
std::vector<TLorentzVector> ntupleReader::SimBs(){ |
56 |
|
TLorentzVector simB; |
72 |
|
return iSVs; |
73 |
|
} |
74 |
|
|
75 |
+ |
double ntupleReader::typeIcorrMET( double sign = 0 ){ |
76 |
+ |
double met_et; |
77 |
+ |
TLorentzVector sumPt; |
78 |
+ |
TLorentzVector sumPtRaw; |
79 |
+ |
TLorentzVector rawMet, jet, rawJet; |
80 |
+ |
for(int i=0; i<nhJets; ++i){ |
81 |
+ |
jet.SetPtEtaPhiE( hJet_PT(i, sign) , hJet_eta[i], hJet_phi[i], hJet_E(i, sign)); |
82 |
+ |
rawJet.SetPtEtaPhiE( hJet_ptRaw[i] , hJet_eta[i], hJet_phi[i], (hJet_ptRaw[i]/hJet_PT(i,sign)) * hJet_E(i,sign)); |
83 |
+ |
sumPt += jet; |
84 |
+ |
sumPtRaw += rawJet; |
85 |
+ |
} |
86 |
+ |
rawMet.SetPtEtaPhiE(MET_et, 0., MET_phi, MET_et); |
87 |
+ |
met_et = (rawMet - (sumPt - sumPtRaw)).Pt(); |
88 |
+ |
return met_et; |
89 |
+ |
} |
90 |
|
TLorentzVector ntupleReader::VectorBoson(){ |
91 |
|
TLorentzVector l1, l2; |
92 |
|
l1.SetPtEtaPhiM(vLepton_pt[0],vLepton_eta[0],vLepton_phi[0],vLepton_mass[0] ); |
101 |
|
double eta_tracker = 1.1; |
102 |
|
if(abs(eta) < eta_tracker) return inner; else return outer; |
103 |
|
} |
104 |
+ |
|
105 |
|
TLorentzVector ntupleReader::hJet_jer( int idx, double sign ){ |
106 |
|
TLorentzVector tmp; |
107 |
|
double hJet_pt_jer = hJet_pt[idx] + sign * resolution(hJet_eta[idx])*TMath::Abs(hJet_pt[idx]-hJet_genPt[idx]); |
118 |
|
return h; |
119 |
|
} |
120 |
|
|
121 |
< |
double ntupleReader::hJet_PT( int idx, int sign ){ return hJet_pt[idx]*(1 + (sign)*hJet_JECUnc[idx]); } |
121 |
> |
double ntupleReader::hJet_PT( int idx, int sign ){ |
122 |
> |
if( TMath::Abs(sign) < 2 ) |
123 |
> |
return hJet_pt[idx]*(1 + (sign)*hJet_JECUnc[idx]); |
124 |
> |
else // +- 2 are for jet energy corrections |
125 |
> |
return (hJet_jer( idx, sign - GetSign(sign)*1 )).Pt() ; |
126 |
> |
} |
127 |
|
double ntupleReader::aJet_PT( int idx, int sign ){ return aJet_pt[idx]*(1 + (sign)*aJet_JECUnc[idx]); } |
128 |
+ |
double ntupleReader::hJet_E( int idx, int sign ){ return hJet_e[idx] * hJet_pt[idx]/hJet_PT(idx, sign); } |
129 |
+ |
double ntupleReader::aJet_E( int idx, int sign ){ return aJet_e[idx] * aJet_pt[idx]/aJet_PT(idx, sign); } |
130 |
|
TLorentzVector ntupleReader::Higgs( int sign ){ |
131 |
|
TLorentzVector j1,j2,H; |
132 |
< |
j1.SetPtEtaPhiE( hJet_pt_jec(0,sign), hJet_eta[0], hJet_phi[0], hJet_e[0] ); |
133 |
< |
j2.SetPtEtaPhiE( hJet_pt_jec(1,sign), hJet_eta[1], hJet_phi[1], hJet_e[1] ); |
134 |
< |
return H=j1+j2; |
132 |
> |
if( TMath::Abs(sign) < 2 ){ |
133 |
> |
j1.SetPtEtaPhiE( hJet_pt_jec(0,sign), hJet_eta[0], hJet_phi[0], hJet_e[0] ); |
134 |
> |
j2.SetPtEtaPhiE( hJet_pt_jec(1,sign), hJet_eta[1], hJet_phi[1], hJet_e[1] ); |
135 |
> |
return H=j1+j2; |
136 |
> |
} |
137 |
> |
else // +- are for jet energy corrections |
138 |
> |
return H_jer( sign - GetSign(sign)*1 ); |
139 |
|
} |
140 |
|
double ntupleReader::hJet_CSV( int idx, int sign ){ |
141 |
|
if(sign == 1) return (hJet_csvUp[idx]); |