ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/interface/ntupleReader.hpp
Revision: 1.4
Committed: Fri May 11 09:46:18 2012 UTC (13 years ago) by bortigno
Branch: MAIN
CVS Tags: ichep8TeV, AN-12-181-7TeV_patch1, AN-12-181-7TeV
Changes since 1.3: +68 -34 lines
Log Message:
by hand MET typeIcorr

File Contents

# Content
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.hpp"
9
10 class ntupleReader : public ntupleLoader {
11 public :
12
13 ntupleReader(const char * infile) : ntupleLoader( infile ){};
14 // virtual ~ntupleReader();
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;
57 std::vector<TLorentzVector> iSimBs;
58 for(int j=0; j<nSimBs; ++j){
59 simB.SetPtEtaPhiM( SimBs_pt[j], SimBs_eta[j], SimBs_phi[j], SimBs_mass[j]);
60 iSimBs.push_back( simB );
61 }
62 return iSimBs;
63 }
64
65 std::vector<TLorentzVector> ntupleReader::SVs(){
66 TLorentzVector sv;
67 std::vector<TLorentzVector> iSVs;
68 for(int j=0; j<nSvs; ++j){
69 sv.SetPtEtaPhiM( Sv_pt[j], Sv_eta[j], Sv_phi[j], Sv_massBCand[j]);
70 iSVs.push_back( sv );
71 }
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] );
93 l2.SetPtEtaPhiM(vLepton_pt[1],vLepton_eta[1],vLepton_phi[1],vLepton_mass[1] );
94 return (l1+l2);
95 }
96
97 //JER
98 double ntupleReader::resolution(double eta){
99 double inner = 0.06;
100 double outer = 0.1;
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]);
108 tmp.SetPtEtaPhiE( hJet_pt_jer,
109 hJet_eta[idx],
110 hJet_phi[idx],
111 hJet_e[idx]*(hJet_pt_jer/hJet_pt[idx]) );
112 return tmp;
113 }
114
115 TLorentzVector ntupleReader::H_jer( double sign ){
116 TLorentzVector h;
117 h = hJet_jer( 0, sign ) + hJet_jer( 1, sign );
118 return h;
119 }
120
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 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]);
142 else if(sign == -1) return (hJet_csvDown[idx]);
143 else if( sign == 2 ) return (hJet_csvFUp[idx]);
144 else if( sign == -2 ) return (hJet_csvFDown[idx]) ;
145 else return (hJet_csv[idx]);
146 }
147
148
149 //for jet energy correction variation
150 double ntupleReader::hJet_pt_jec( int idx, double sign ){ return hJet_pt[idx]*(1 + (sign)*hJet_JECUnc[idx]); }
151 double ntupleReader::aJet_pt_jec( int idx, double sign ){ return aJet_pt[idx]*(1 + (sign)*aJet_JECUnc[idx]); }
152 TLorentzVector ntupleReader::H_jec( double sign ){
153 TLorentzVector j1,j2,H;
154 j1.SetPtEtaPhiE( hJet_pt_jec(0,sign), hJet_eta[0], hJet_phi[0], hJet_e[0] );
155 j2.SetPtEtaPhiE( hJet_pt_jec(1,sign), hJet_eta[1], hJet_phi[1], hJet_e[1] );
156 return H=j1+j2;
157 }
158 double ntupleReader::hJet_csv_cUP( int idx ){ return ( hJet_csvUp[idx] ); }
159 double ntupleReader::hJet_csv_cDOWN( int idx ){ return ( hJet_csvDown[idx] ); }
160 double ntupleReader::hJet_csv_cFUP( int idx ){ return ( hJet_csvFUp[idx] ); }
161 double ntupleReader::hJet_csv_cFDOWN( int idx ){ return ( hJet_csvFDown[idx] ); }
162 double ntupleReader::hJet_pt_jecUP( int idx ){ return hJet_pt_jec(idx,+1); }
163 double ntupleReader::hJet_pt_jecDOWN( int idx ){ return hJet_pt_jec(idx,-1); }
164 double ntupleReader::aJet_pt_jecUP( int idx ){ return aJet_pt_jec(idx,+1); }
165 double ntupleReader::aJet_pt_jecDOWN( int idx ){ return aJet_pt_jec(idx,-1); }
166 TLorentzVector ntupleReader::H_jecUP(){ return H_jec(+1); }
167 TLorentzVector ntupleReader::H_jecDOWN(){ return H_jec(-1); }
168
169
170 int ntupleReader::CountJets(){
171 int sum=0;
172 for(int i=0; i<nhJets; ++i)
173 if( hJet_pt[i] > 20.
174 && TMath::Abs(hJet_eta[i]) < 2.4 )
175 sum++;
176 for(int i=0; i<naJets; ++i)
177 if( aJet_pt[i] > 20.
178 && TMath::Abs(aJet_eta[i]) < 2.4 )
179 sum++;
180 return sum;
181 }
182 int ntupleReader::CountAddJets(){
183 int sum=0;
184 for(int i=0; i<naJets; ++i)
185 if( aJet_pt[i] > 20.
186 && TMath::Abs(aJet_eta[i]) < 2.4 )
187 sum++;
188 return sum;
189 }
190 int ntupleReader::CountAddForwardJets(){
191 int sum=0;
192 for(int i=0; i<naJets; ++i)
193 if( aJet_pt[i] > 30.
194 && TMath::Abs(aJet_eta[i]) > 2.4
195 && TMath::Abs(aJet_eta[i]) < 4.5 )
196 sum++;
197 return sum;
198 }
199 int ntupleReader::CountAddJets_jec( double sign ){
200 int sum=0;
201 for(int i=0; i<naJets; ++i)
202 if( aJet_pt[i]*(1+(sign)*aJet_JECUnc[i]) > 20.
203 && TMath::Abs(aJet_eta[i]) < 2.4 )
204 sum++;
205 return sum;
206 }
207
208 int ntupleReader::CountAddLeptons(){
209 int sum=0;
210 for(int i=0; i<nalep; ++i)
211 if( aLepton_pt[i] > 15.
212 && abs(aLepton_eta[i]) < 2.5
213 && aLepton_pfCombRelIso[i] < 0.15 )
214 sum++;
215 return sum;
216 }
217 bool ntupleReader::TriggerBit()
218 {
219 if( triggerFlags[5]
220 || triggerFlags[6] )
221 return false;
222 else
223 return true;
224 }
225
226 #endif // #ifdef ntupleReader_cxx
227