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

# 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.1 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 bortigno 1.3 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 bortigno 1.1 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 bortigno 1.3 //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 bortigno 1.1 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