ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/interface/TriggerWeight.h
Revision: 1.9
Committed: Sun Oct 30 20:49:10 2011 UTC (13 years, 6 months ago) by arizzi
Content type: text/plain
Branch: MAIN
Changes since 1.8: +23 -1 lines
Log Message:
add new Zee triggers

File Contents

# User Rev Content
1 arizzi 1.1 #ifndef TRIGGERWEIGHT_H
2     #define TRIGGERWEIGHT_H
3    
4     #include "FWCore/ParameterSet/interface/ProcessDesc.h"
5     #include "FWCore/PythonParameterSet/interface/PythonProcessDesc.h"
6 arizzi 1.4 #include "VHbbAnalysis/VHbbDataFormats/interface/TriggerZnunuCurve.h"
7     #include "VHbbAnalysis/VHbbDataFormats/interface/MultiThresholdEfficiency.h"
8 arizzi 1.1 #include <TH1F.h>
9 arizzi 1.3 #include <TF1.h>
10 arizzi 1.1 #include <TFile.h>
11     #include <TTree.h>
12     #include <iostream>
13    
14     class TriggerWeight
15     {
16     public:
17 arizzi 1.5 TriggerWeight(const edm::ParameterSet& ana) : combiner2Thr(2)
18 arizzi 1.1 {
19 arizzi 1.4 tscaleHLTmu=openFile(ana,"hltMuFileName");
20     tscaleIDmu=openFile(ana,"idMuFileName");
21     tscaleHLTele1=openFile(ana,"hltEle1FileName");
22     tscaleHLTele2=openFile(ana,"hltEle2FileName");
23 arizzi 1.9 tscaleHLTele1Aug=openFile(ana,"hltEle1AugFileName");
24     tscaleHLTele2Aug=openFile(ana,"hltEle2AugFileName");
25 arizzi 1.5 tscaleID80Ele=openFile(ana,"idEle80FileName");
26     tscaleID95Ele=openFile(ana,"idEle95FileName");
27 arizzi 1.4 tscaleHLTeleJet1=openFile(ana,"hltJetEle1FileName");
28     tscaleHLTeleJet2=openFile(ana,"hltJetEle2FileName");
29 arizzi 1.5 tscaleRecoEle=openFile(ana,"recoEleFileName");
30     // tscalePFMHTele=openFile(ana,"hltPFMHTEleFileName");
31     tscaleSingleEleMay=openFile(ana,"hltSingleEleMayFileName");
32     tscaleSingleEleV4=openFile(ana,"hltSingleEleV4FileName");
33 arizzi 1.6 tscaleHLTmuOr30=openFile(ana,"hltMuOr30FileName");
34 arizzi 1.4
35 arizzi 1.1 if(tscaleHLTmu == 0 || tscaleIDmu == 0)
36     {
37     std::cout << "ERROR: cannot load Muon Trigger efficiencies" << std::endl;
38     }
39 arizzi 1.4
40    
41 arizzi 1.1
42     }
43 arizzi 1.4
44     TTree * openFile(const edm::ParameterSet& ana, const char * name)
45     {
46 arizzi 1.5 TFile *hltMuFile = new TFile (ana.getParameter<std::string> (name).c_str(),"read");
47 arizzi 1.4 if(hltMuFile) return (TTree*) hltMuFile->Get("tree");
48     else return 0;
49     }
50    
51     std::pair<float,float> efficiencyFromPtEta(float pt1, float eta1, TTree *t)
52     {
53     float s1 = 1.,err=1.;
54     std::pair<float,float> r(s1,err);
55     if(!t) return r;
56     float ptMin,ptMax,etaMin,etaMax,scale,error;
57     int count = 0;
58     t->SetBranchAddress("ptMin",&ptMin);
59     t->SetBranchAddress("ptMax",&ptMax);
60     t->SetBranchAddress("etaMin",&etaMin);
61     t->SetBranchAddress("etaMax",&etaMax);
62     t->SetBranchAddress("scale",&scale);
63     t->SetBranchAddress("error",&error);
64 arizzi 1.7 float lastPtBin = 200;
65     /* for(int jentry = 0; jentry < t->GetEntries(); jentry++)
66     {
67     t->GetEntry(jentry);
68     if(ptMax >= lastPtBin) lastPtBin =ptMax;
69     }*/
70 arizzi 1.4 for(int jentry = 0; jentry < t->GetEntries(); jentry++)
71     {
72     t->GetEntry(jentry);
73 arizzi 1.7 if(ptMax==lastPtBin) ptMax=1e99;
74 arizzi 1.4 if((pt1 > ptMin) && (pt1 < ptMax) && (eta1 > etaMin) && (eta1 < etaMax))
75     {
76     s1 = scale;
77     err=error;
78     count++;
79     }
80     }
81    
82     if(count == 0 || s1 == 0)
83     {
84     return r;
85     }
86    
87     r.first=s1;
88     r.second = err;
89     return (r);
90     }
91 arizzi 1.1
92     float scaleMuIsoHLT(float pt1, float eta1)
93     {
94 arizzi 1.4 return efficiencyFromPtEta(pt1,eta1,tscaleHLTmu).first;
95 arizzi 1.1 }
96    
97    
98    
99     float scaleMuID(float pt1, float eta1)
100     {
101 arizzi 1.4 return efficiencyFromPtEta(pt1,eta1,tscaleIDmu).first;
102 arizzi 1.1 }
103    
104 arizzi 1.3 double scaleMetHLT( double met){
105    
106     float s1 = 1;
107     TF1 * f = new TF1 ("f",TriggerZnunuCurve::trigMet, 0,99999, 0, "triggerZnunuCurve" );
108    
109     s1 = f->Eval(met);
110    
111     return (s1);
112    
113     }
114    
115    
116 arizzi 1.9 double scaleDoubleEle17Ele8Aug( std::vector<float> pt, std::vector<float> eta )
117     {
118     std::vector< std::vector<float> > allEleWithEffs;
119     for(unsigned int j=0; j< pt.size(); j++)
120     {
121     std::vector<float> thisEleEffs;
122     thisEleEffs.push_back(efficiencyFromPtEta(pt[j],eta[j],tscaleHLTele1Aug).first);
123     thisEleEffs.push_back(efficiencyFromPtEta(pt[j],eta[j],tscaleHLTele2Aug).first);
124    
125     allEleWithEffs.push_back(thisEleEffs);
126     }
127    
128     return combiner2Thr.weight<Trigger1High2Loose>(allEleWithEffs);
129    
130     }
131    
132    
133 arizzi 1.5 double scaleDoubleEle17Ele8( std::vector<float> pt, std::vector<float> eta )
134     {
135     std::vector< std::vector<float> > allEleWithEffs;
136     for(unsigned int j=0; j< pt.size(); j++)
137     {
138     std::vector<float> thisEleEffs;
139     thisEleEffs.push_back(efficiencyFromPtEta(pt[j],eta[j],tscaleHLTele1).first);
140     thisEleEffs.push_back(efficiencyFromPtEta(pt[j],eta[j],tscaleHLTele2).first);
141 arizzi 1.9
142 arizzi 1.5 allEleWithEffs.push_back(thisEleEffs);
143     }
144    
145     return combiner2Thr.weight<Trigger1High2Loose>(allEleWithEffs);
146    
147     }
148    
149     double scaleSingleEleMay( float pt, float eta){ return efficiencyFromPtEta(pt,eta,tscaleSingleEleMay).first;}
150     double scaleSingleEleV4( float pt, float eta){ return efficiencyFromPtEta(pt,eta,tscaleSingleEleV4).first; }
151     double scaleID80Ele( float pt, float eta) { return efficiencyFromPtEta(pt,eta,tscaleID80Ele).first; }
152     double scaleID95Ele( float pt, float eta) { return efficiencyFromPtEta(pt,eta,tscaleID95Ele).first; }
153     double scaleRecoEle( float pt, float eta){ return efficiencyFromPtEta(pt,eta,tscaleRecoEle).first; }
154     double scalePFMHTEle( float MetPFPt){
155     double weightPFMHTrigger=0.;
156    
157     //FIXME: read from file
158 dlopes 1.8 if(MetPFPt>0. && MetPFPt<5.) weightPFMHTrigger=0.305;
159     if(MetPFPt>5. && MetPFPt<10.) weightPFMHTrigger=0.351;
160     if(MetPFPt>10. && MetPFPt<15.) weightPFMHTrigger=0.461;
161     if(MetPFPt>15. && MetPFPt<20.) weightPFMHTrigger=0.572;
162     if(MetPFPt>20. && MetPFPt<25.) weightPFMHTrigger=0.713;
163     if(MetPFPt>25. && MetPFPt<30.) weightPFMHTrigger=0.844;
164     if(MetPFPt>30. && MetPFPt<35.) weightPFMHTrigger=0.914;
165     if(MetPFPt>35. && MetPFPt<40.) weightPFMHTrigger=0.939;
166     if(MetPFPt>40. && MetPFPt<45.) weightPFMHTrigger=0.981;
167     if(MetPFPt>45. && MetPFPt<50.) weightPFMHTrigger=0.982;
168     if(MetPFPt>50. && MetPFPt<60.) weightPFMHTrigger=0.993;
169     if(MetPFPt>60. && MetPFPt<70.) weightPFMHTrigger=0.995;
170     if(MetPFPt>70. && MetPFPt<100.) weightPFMHTrigger=0.995;
171     if(MetPFPt>100.) weightPFMHTrigger=1.;
172 arizzi 1.5 return weightPFMHTrigger;
173     }
174    
175     double scaleJet30Jet25( std::vector<float> pt, std::vector<float> eta)
176 arizzi 1.4 {
177 arizzi 1.5
178     std::vector< std::vector<float> > allJetsWithEffs;
179     for(unsigned int j=0; j< pt.size(); j++)
180     {
181     std::vector<float> thisJetEffs;
182     thisJetEffs.push_back(efficiencyFromPtEta(pt[j],eta[j],tscaleHLTeleJet1).first);
183     thisJetEffs.push_back(efficiencyFromPtEta(pt[j],eta[j],tscaleHLTeleJet2).first);
184     allJetsWithEffs.push_back(thisJetEffs);
185     }
186    
187     return combiner2Thr.weight<Trigger1High2Loose>(allJetsWithEffs);
188 arizzi 1.4 }
189 arizzi 1.3
190 arizzi 1.6 float scaleMuOr30IsoHLT(float pt1, float eta1)
191     {
192     return efficiencyFromPtEta(pt1,eta1,tscaleHLTmuOr30).first;
193     }
194 arizzi 1.3
195    
196 arizzi 1.1 private:
197 arizzi 1.4 TTree * tscaleHLTele1;
198     TTree * tscaleHLTele2;
199     TTree * tscaleHLTeleJet1;
200     TTree * tscaleHLTeleJet2;
201 arizzi 1.5 TTree * tscaleID80Ele;
202     TTree * tscaleID95Ele;
203     TTree * tscaleRecoEle;
204 arizzi 1.6 TTree * tscaleHLTmuOr30;
205    
206 arizzi 1.5 // TTree * tscalePFMHTele;
207     TTree * tscaleSingleEleMay;
208     TTree * tscaleSingleEleV4;
209 arizzi 1.4
210 arizzi 1.9 TTree * tscaleHLTele1Aug;
211     TTree * tscaleHLTele2Aug;
212    
213 arizzi 1.1 TTree * tscaleHLTmu;
214     TTree * tscaleIDmu;
215 arizzi 1.4 MultiThresholdEfficiency combiner2Thr;
216 arizzi 1.1 };
217    
218     #endif