ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/interface/ntupleReader.hpp
Revision: 1.3
Committed: Tue May 8 08:13:10 2012 UTC (13 years ago) by bortigno
Branch: MAIN
Changes since 1.2: +26 -0 lines
Log Message:
added JER

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 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
45 };
46
47
48 std::vector<TLorentzVector> ntupleReader::SimBs(){
49 TLorentzVector simB;
50 std::vector<TLorentzVector> iSimBs;
51 for(int j=0; j<nSimBs; ++j){
52 simB.SetPtEtaPhiM( SimBs_pt[j], SimBs_eta[j], SimBs_phi[j], SimBs_mass[j]);
53 iSimBs.push_back( simB );
54 }
55 return iSimBs;
56 }
57
58 std::vector<TLorentzVector> ntupleReader::SVs(){
59 TLorentzVector sv;
60 std::vector<TLorentzVector> iSVs;
61 for(int j=0; j<nSvs; ++j){
62 sv.SetPtEtaPhiM( Sv_pt[j], Sv_eta[j], Sv_phi[j], Sv_massBCand[j]);
63 iSVs.push_back( sv );
64 }
65 return iSVs;
66 }
67
68 TLorentzVector ntupleReader::VectorBoson(){
69 TLorentzVector l1, l2;
70 l1.SetPtEtaPhiM(vLepton_pt[0],vLepton_eta[0],vLepton_phi[0],vLepton_mass[0] );
71 l2.SetPtEtaPhiM(vLepton_pt[1],vLepton_eta[1],vLepton_phi[1],vLepton_mass[1] );
72 return (l1+l2);
73 }
74
75 //JER
76 double ntupleReader::resolution(double eta){
77 double inner = 0.06;
78 double outer = 0.1;
79 double eta_tracker = 1.1;
80 if(abs(eta) < eta_tracker) return inner; else return outer;
81 }
82 TLorentzVector ntupleReader::hJet_jer( int idx, double sign ){
83 TLorentzVector tmp;
84 double hJet_pt_jer = hJet_pt[idx] + sign * resolution(hJet_eta[idx])*TMath::Abs(hJet_pt[idx]-hJet_genPt[idx]);
85 tmp.SetPtEtaPhiE( hJet_pt_jer,
86 hJet_eta[idx],
87 hJet_phi[idx],
88 hJet_e[idx]*(hJet_pt_jer/hJet_pt[idx]) );
89 return tmp;
90 }
91
92 TLorentzVector ntupleReader::H_jer( double sign ){
93 TLorentzVector h;
94 h = hJet_jer( 0, sign ) + hJet_jer( 1, sign );
95 return h;
96 }
97
98 double ntupleReader::hJet_PT( int idx, int sign ){ return hJet_pt[idx]*(1 + (sign)*hJet_JECUnc[idx]); }
99 double ntupleReader::aJet_PT( int idx, int sign ){ return aJet_pt[idx]*(1 + (sign)*aJet_JECUnc[idx]); }
100 TLorentzVector ntupleReader::Higgs( int sign ){
101 TLorentzVector j1,j2,H;
102 j1.SetPtEtaPhiE( hJet_pt_jec(0,sign), hJet_eta[0], hJet_phi[0], hJet_e[0] );
103 j2.SetPtEtaPhiE( hJet_pt_jec(1,sign), hJet_eta[1], hJet_phi[1], hJet_e[1] );
104 return H=j1+j2;
105 }
106 double ntupleReader::hJet_CSV( int idx, int sign ){
107 if(sign == 1) return (hJet_csvUp[idx]);
108 else if(sign == -1) return (hJet_csvDown[idx]);
109 else if( sign == 2 ) return (hJet_csvFUp[idx]);
110 else if( sign == -2 ) return (hJet_csvFDown[idx]) ;
111 else return (hJet_csv[idx]);
112 }
113
114
115 //for jet energy correction variation
116 double ntupleReader::hJet_pt_jec( int idx, double sign ){ return hJet_pt[idx]*(1 + (sign)*hJet_JECUnc[idx]); }
117 double ntupleReader::aJet_pt_jec( int idx, double sign ){ return aJet_pt[idx]*(1 + (sign)*aJet_JECUnc[idx]); }
118 TLorentzVector ntupleReader::H_jec( double sign ){
119 TLorentzVector j1,j2,H;
120 j1.SetPtEtaPhiE( hJet_pt_jec(0,sign), hJet_eta[0], hJet_phi[0], hJet_e[0] );
121 j2.SetPtEtaPhiE( hJet_pt_jec(1,sign), hJet_eta[1], hJet_phi[1], hJet_e[1] );
122 return H=j1+j2;
123 }
124 double ntupleReader::hJet_csv_cUP( int idx ){ return ( hJet_csvUp[idx] ); }
125 double ntupleReader::hJet_csv_cDOWN( int idx ){ return ( hJet_csvDown[idx] ); }
126 double ntupleReader::hJet_csv_cFUP( int idx ){ return ( hJet_csvFUp[idx] ); }
127 double ntupleReader::hJet_csv_cFDOWN( int idx ){ return ( hJet_csvFDown[idx] ); }
128 double ntupleReader::hJet_pt_jecUP( int idx ){ return hJet_pt_jec(idx,+1); }
129 double ntupleReader::hJet_pt_jecDOWN( int idx ){ return hJet_pt_jec(idx,-1); }
130 double ntupleReader::aJet_pt_jecUP( int idx ){ return aJet_pt_jec(idx,+1); }
131 double ntupleReader::aJet_pt_jecDOWN( int idx ){ return aJet_pt_jec(idx,-1); }
132 TLorentzVector ntupleReader::H_jecUP(){ return H_jec(+1); }
133 TLorentzVector ntupleReader::H_jecDOWN(){ return H_jec(-1); }
134
135
136 int ntupleReader::CountJets(){
137 int sum=0;
138 for(int i=0; i<nhJets; ++i)
139 if( hJet_pt[i] > 20.
140 && TMath::Abs(hJet_eta[i]) < 2.4 )
141 sum++;
142 for(int i=0; i<naJets; ++i)
143 if( aJet_pt[i] > 20.
144 && TMath::Abs(aJet_eta[i]) < 2.4 )
145 sum++;
146 return sum;
147 }
148 int ntupleReader::CountAddJets(){
149 int sum=0;
150 for(int i=0; i<naJets; ++i)
151 if( aJet_pt[i] > 20.
152 && TMath::Abs(aJet_eta[i]) < 2.4 )
153 sum++;
154 return sum;
155 }
156 int ntupleReader::CountAddForwardJets(){
157 int sum=0;
158 for(int i=0; i<naJets; ++i)
159 if( aJet_pt[i] > 30.
160 && TMath::Abs(aJet_eta[i]) > 2.4
161 && TMath::Abs(aJet_eta[i]) < 4.5 )
162 sum++;
163 return sum;
164 }
165 int ntupleReader::CountAddJets_jec( double sign ){
166 int sum=0;
167 for(int i=0; i<naJets; ++i)
168 if( aJet_pt[i]*(1+(sign)*aJet_JECUnc[i]) > 20.
169 && TMath::Abs(aJet_eta[i]) < 2.4 )
170 sum++;
171 return sum;
172 }
173
174 int ntupleReader::CountAddLeptons(){
175 int sum=0;
176 for(int i=0; i<nalep; ++i)
177 if( aLepton_pt[i] > 15.
178 && abs(aLepton_eta[i]) < 2.5
179 && aLepton_pfCombRelIso[i] < 0.15 )
180 sum++;
181 return sum;
182 }
183 bool ntupleReader::TriggerBit()
184 {
185 if( triggerFlags[5]
186 || triggerFlags[6] )
187 return false;
188 else
189 return true;
190 }
191
192 #endif // #ifdef ntupleReader_cxx
193