1 |
#ifndef ntupleReader_h
|
2 |
#define ntupleReader_h
|
3 |
|
4 |
#include <TROOT.h>
|
5 |
#include <TChain.h>
|
6 |
#include <TFile.h>
|
7 |
#include "TLorentzVector.h"
|
8 |
#include "ntupleLoader.h"
|
9 |
|
10 |
class ntupleReader : public ntupleLoader {
|
11 |
public :
|
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 hJet_PT( int idx, int sign ); //higgs jet energy correction
|
25 |
virtual double aJet_PT( int idx, int sign ); //addtional jet energy correction
|
26 |
virtual TLorentzVector Higgs( int sign ); //higgs candidate jet energy correction
|
27 |
virtual double hJet_CSV( int idx, int sign ); //higgs jet energy correction
|
28 |
virtual double hJet_pt_jec( int idx, double sign ); //higgs jet energy correction
|
29 |
virtual double aJet_pt_jec( int idx, double sign ); //addtional jet energy correction
|
30 |
virtual TLorentzVector H_jec( double sign ); //higgs candidate jet energy correction
|
31 |
virtual double hJet_csv_cUP( int idx );
|
32 |
virtual double hJet_csv_cDOWN( int idx );
|
33 |
virtual double hJet_csv_cFUP( int idx );
|
34 |
virtual double hJet_csv_cFDOWN( int idx );
|
35 |
virtual double hJet_pt_jecUP( int idx );
|
36 |
virtual double hJet_pt_jecDOWN( int idx );
|
37 |
virtual double aJet_pt_jecUP( int idx );
|
38 |
virtual double aJet_pt_jecDOWN( int idx );
|
39 |
virtual TLorentzVector H_jecUP();
|
40 |
virtual TLorentzVector H_jecDOWN();
|
41 |
|
42 |
};
|
43 |
|
44 |
|
45 |
std::vector<TLorentzVector> ntupleReader::SimBs(){
|
46 |
TLorentzVector simB;
|
47 |
std::vector<TLorentzVector> iSimBs;
|
48 |
for(int j=0; j<nSimBs; ++j){
|
49 |
simB.SetPtEtaPhiM( SimBs_pt[j], SimBs_eta[j], SimBs_phi[j], SimBs_mass[j]);
|
50 |
iSimBs.push_back( simB );
|
51 |
}
|
52 |
return iSimBs;
|
53 |
}
|
54 |
|
55 |
std::vector<TLorentzVector> ntupleReader::SVs(){
|
56 |
TLorentzVector sv;
|
57 |
std::vector<TLorentzVector> iSVs;
|
58 |
for(int j=0; j<nSvs; ++j){
|
59 |
sv.SetPtEtaPhiM( Sv_pt[j], Sv_eta[j], Sv_phi[j], Sv_massBCand[j]);
|
60 |
iSVs.push_back( sv );
|
61 |
}
|
62 |
return iSVs;
|
63 |
}
|
64 |
|
65 |
TLorentzVector ntupleReader::VectorBoson(){
|
66 |
TLorentzVector l1, l2;
|
67 |
l1.SetPtEtaPhiM(vLepton_pt[0],vLepton_eta[0],vLepton_phi[0],vLepton_mass[0] );
|
68 |
l2.SetPtEtaPhiM(vLepton_pt[1],vLepton_eta[1],vLepton_phi[1],vLepton_mass[1] );
|
69 |
return (l1+l2);
|
70 |
}
|
71 |
|
72 |
double ntupleReader::hJet_PT( int idx, int sign ){ return hJet_pt[idx]*(1 + (sign)*hJet_JECUnc[idx]); }
|
73 |
double ntupleReader::aJet_PT( int idx, int sign ){ return aJet_pt[idx]*(1 + (sign)*aJet_JECUnc[idx]); }
|
74 |
TLorentzVector ntupleReader::Higgs( int sign ){
|
75 |
TLorentzVector j1,j2,H;
|
76 |
j1.SetPtEtaPhiE( hJet_pt_jec(0,sign), hJet_eta[0], hJet_phi[0], hJet_e[0] );
|
77 |
j2.SetPtEtaPhiE( hJet_pt_jec(1,sign), hJet_eta[1], hJet_phi[1], hJet_e[1] );
|
78 |
return H=j1+j2;
|
79 |
}
|
80 |
double ntupleReader::hJet_CSV( int idx, int sign ){
|
81 |
if(sign == 1) return (hJet_csvUp[idx]);
|
82 |
else if(sign == -1) return (hJet_csvDown[idx]);
|
83 |
else if( sign == 2 ) return (hJet_csvFUp[idx]);
|
84 |
else if( sign == -2 ) return (hJet_csvFDown[idx]) ;
|
85 |
else return (hJet_csv[idx]);
|
86 |
}
|
87 |
|
88 |
|
89 |
//for jet energy correction variation
|
90 |
double ntupleReader::hJet_pt_jec( int idx, double sign ){ return hJet_pt[idx]*(1 + (sign)*hJet_JECUnc[idx]); }
|
91 |
double ntupleReader::aJet_pt_jec( int idx, double sign ){ return aJet_pt[idx]*(1 + (sign)*aJet_JECUnc[idx]); }
|
92 |
TLorentzVector ntupleReader::H_jec( double sign ){
|
93 |
TLorentzVector j1,j2,H;
|
94 |
j1.SetPtEtaPhiE( hJet_pt_jec(0,sign), hJet_eta[0], hJet_phi[0], hJet_e[0] );
|
95 |
j2.SetPtEtaPhiE( hJet_pt_jec(1,sign), hJet_eta[1], hJet_phi[1], hJet_e[1] );
|
96 |
return H=j1+j2;
|
97 |
}
|
98 |
double ntupleReader::hJet_csv_cUP( int idx ){ return ( hJet_csvUp[idx] ); }
|
99 |
double ntupleReader::hJet_csv_cDOWN( int idx ){ return ( hJet_csvDown[idx] ); }
|
100 |
double ntupleReader::hJet_csv_cFUP( int idx ){ return ( hJet_csvFUp[idx] ); }
|
101 |
double ntupleReader::hJet_csv_cFDOWN( int idx ){ return ( hJet_csvFDown[idx] ); }
|
102 |
double ntupleReader::hJet_pt_jecUP( int idx ){ return hJet_pt_jec(idx,+1); }
|
103 |
double ntupleReader::hJet_pt_jecDOWN( int idx ){ return hJet_pt_jec(idx,-1); }
|
104 |
double ntupleReader::aJet_pt_jecUP( int idx ){ return aJet_pt_jec(idx,+1); }
|
105 |
double ntupleReader::aJet_pt_jecDOWN( int idx ){ return aJet_pt_jec(idx,-1); }
|
106 |
TLorentzVector ntupleReader::H_jecUP(){ return H_jec(+1); }
|
107 |
TLorentzVector ntupleReader::H_jecDOWN(){ return H_jec(-1); }
|
108 |
|
109 |
|
110 |
int ntupleReader::CountJets(){
|
111 |
int sum=0;
|
112 |
for(int i=0; i<nhJets; ++i)
|
113 |
if( hJet_pt[i] > 20.
|
114 |
&& TMath::Abs(hJet_eta[i]) < 2.4 )
|
115 |
sum++;
|
116 |
for(int i=0; i<naJets; ++i)
|
117 |
if( aJet_pt[i] > 20.
|
118 |
&& TMath::Abs(aJet_eta[i]) < 2.4 )
|
119 |
sum++;
|
120 |
return sum;
|
121 |
}
|
122 |
int ntupleReader::CountAddJets(){
|
123 |
int sum=0;
|
124 |
for(int i=0; i<naJets; ++i)
|
125 |
if( aJet_pt[i] > 20.
|
126 |
&& TMath::Abs(aJet_eta[i]) < 2.4 )
|
127 |
sum++;
|
128 |
return sum;
|
129 |
}
|
130 |
int ntupleReader::CountAddForwardJets(){
|
131 |
int sum=0;
|
132 |
for(int i=0; i<naJets; ++i)
|
133 |
if( aJet_pt[i] > 30.
|
134 |
&& TMath::Abs(aJet_eta[i]) > 2.4
|
135 |
&& TMath::Abs(aJet_eta[i]) < 4.5 )
|
136 |
sum++;
|
137 |
return sum;
|
138 |
}
|
139 |
int ntupleReader::CountAddJets_jec( double sign ){
|
140 |
int sum=0;
|
141 |
for(int i=0; i<naJets; ++i)
|
142 |
if( aJet_pt[i]*(1+(sign)*aJet_JECUnc[i]) > 20.
|
143 |
&& TMath::Abs(aJet_eta[i]) < 2.4 )
|
144 |
sum++;
|
145 |
return sum;
|
146 |
}
|
147 |
|
148 |
int ntupleReader::CountAddLeptons(){
|
149 |
int sum=0;
|
150 |
for(int i=0; i<nalep; ++i)
|
151 |
if( aLepton_pt[i] > 15.
|
152 |
&& abs(aLepton_eta[i]) < 2.5
|
153 |
&& aLepton_pfCombRelIso[i] < 0.15 )
|
154 |
sum++;
|
155 |
return sum;
|
156 |
}
|
157 |
bool ntupleReader::TriggerBit()
|
158 |
{
|
159 |
if( triggerFlags[5]
|
160 |
|| triggerFlags[6] )
|
161 |
return false;
|
162 |
else
|
163 |
return true;
|
164 |
}
|
165 |
|
166 |
#endif // #ifdef ntupleReader_cxx
|
167 |
|