ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/interface/TriggerWeight.h
Revision: 1.5
Committed: Thu Sep 15 10:37:39 2011 UTC (13 years, 7 months ago) by arizzi
Content type: text/plain
Branch: MAIN
CVS Tags: EdmV11Oct2011, AR_Step2_Oct13, AR_Oct9Ntuple, AR_Oct7_step2ntuple, AR_Oct5Ntuple, EdmV10Oct2011, EdmV9Sept2011, Sept19th2011_2, Sept19th2011, Sept19th, VHNtupleV9_AR1, VHSept15_AR1
Changes since 1.4: +65 -74 lines
Log Message:
trigger for ele

File Contents

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