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

# User Rev Content
1 bortigno 1.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 bortigno 1.2 #include "ntupleLoader.hpp"
9 bortigno 1.1
10     class ntupleReader : public ntupleLoader {
11     public :
12    
13 bortigno 1.2 ntupleReader(const char * infile) : ntupleLoader( infile ){};
14     // virtual ~ntupleReader();
15 bortigno 1.4 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 bortigno 1.1 };
50    
51 bortigno 1.4 int ntupleReader::GetSign(int v){
52     return v > 0 ? 1 : (v < 0 ? -1 : 0);
53     }
54 bortigno 1.1
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 bortigno 1.4 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 bortigno 1.1 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 bortigno 1.3 //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 bortigno 1.4
105 bortigno 1.3 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 bortigno 1.4 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 bortigno 1.1 double ntupleReader::aJet_PT( int idx, int sign ){ return aJet_pt[idx]*(1 + (sign)*aJet_JECUnc[idx]); }
128 bortigno 1.4 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 bortigno 1.1 TLorentzVector ntupleReader::Higgs( int sign ){
131     TLorentzVector j1,j2,H;
132 bortigno 1.4 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 bortigno 1.1 }
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