ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/src/Cuts200X.cc
Revision: 1.6
Committed: Fri Jul 29 15:31:51 2011 UTC (13 years, 9 months ago) by arizzi
Content type: text/plain
Branch: MAIN
Changes since 1.5: +18 -1 lines
Log Message:
updates with trigger and macro update

File Contents

# User Rev Content
1 bortigno 1.1 #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbEvent.h"
2     #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbCandidate.h"
3     #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbProxy.h"
4     #include "VHbbAnalysis/VHbbDataFormats/interface/CutsAndHistos.h"
5     #include <TH1F.h>
6     #include "DataFormats/GeometryVector/interface/VectorUtil.h"
7     #include <sstream>
8     #include "TKey.h"
9    
10    
11 arizzi 1.3 #define CSVM 0.679
12     #define CSVL 0.244
13     #define CSVT 0.898
14    
15 bortigno 1.1 struct CompareJetPt {
16     bool operator()( const VHbbEvent::SimpleJet& j1, const VHbbEvent::SimpleJet& j2 ) const {
17 tboccali 1.4 return j1.p4.Pt() > j2.p4.Pt();
18 bortigno 1.1 }
19     };
20    
21     struct CompareBTag {
22     bool operator()(const VHbbEvent::SimpleJet& j1, const VHbbEvent::SimpleJet& j2 ) const {
23     return j1.csv > j2.csv;
24     }
25     };
26    
27    
28 arizzi 1.3 // New implementations of the control region
29     // The signal regions must be implemented incrementally since cutflow is needed
30 bortigno 1.1
31 arizzi 1.3 class VlightRegionHWmun: public Cut {
32     std::string name() {return "VlightRegionHWmun";};
33     Bool_t pass(VHbbProxy &iProxy){
34     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
35     if(iCand->size() < 1) return false;
36     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
37     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
38 bortigno 1.1
39 arizzi 1.3 return ( iCand->at(0).candidateType == VHbbCandidate::Wmun
40     && H.jets.size() >= 2
41     && H.jets.at(0).Pt() > 30
42     && H.jets.at(1).Pt() > 30
43 tboccali 1.4 && H.p4.Pt() > 150
44     && V.p4.Pt() > 150
45 arizzi 1.3 && ( H.jets.at(0).csv < CSVM)
46     && ( H.jets.at(1).csv < CSVM)
47     && iCand->at(0).additionalJets.size() < 2
48     && V.mets[0].metSig > 2
49 arizzi 1.6 && TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.5
50     && iProxy.trigger()->accept("HLT_IsoMu17_v.*")
51 arizzi 1.3 );
52     }
53     };
54 bortigno 1.1
55    
56 arizzi 1.3 class VlightRegionHWen: public Cut {
57     std::string name() {return "VlightRegionHWen";};
58     Bool_t pass(VHbbProxy &iProxy){
59     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
60     if(iCand->size() < 1) return false;
61     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
62     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
63    
64     return ( iCand->at(0).candidateType == VHbbCandidate::Wen
65     && H.jets.size() >= 2
66     && H.jets.at(0).Pt() > 30
67     && H.jets.at(1).Pt() > 30
68 tboccali 1.4 && H.p4.Pt() > 150
69     && V.p4.Pt() > 150
70 arizzi 1.3 && ( H.jets.at(0).csv < CSVM)
71     && ( H.jets.at(1).csv < CSVM)
72     && iCand->at(0).additionalJets.size() < 5
73     && V.mets[0].metSig > 2
74 tboccali 1.4 && TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.5
75 arizzi 1.6 && iProxy.trigger()->accept("HLT_Ele\\(\\(27\\)\\|\\(32\\)\\)_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v.")
76 arizzi 1.3 );
77     }
78     };
79 bortigno 1.1
80 arizzi 1.3 class VlightRegionHZmumu: public Cut {
81     std::string name() {return "VlightRegionHZmumu";};
82     Bool_t pass(VHbbProxy &iProxy){
83     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
84     if(iCand->size() < 1) return false;
85     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
86     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
87    
88     return ( iCand->at(0).candidateType == VHbbCandidate::Zmumu
89     && H.jets.size() >= 2
90     && H.jets.at(0).Pt() > 20
91     && H.jets.at(1).Pt() > 20
92 tboccali 1.4 && H.p4.Pt() > 100
93     && V.p4.Pt() > 100
94 arizzi 1.3 && ( H.jets.at(0).csv < CSVL)
95     && ( H.jets.at(1).csv < CSVL)
96     && iCand->at(0).additionalJets.size() < 2
97 arizzi 1.6 && iProxy.trigger()->accept("HLT_IsoMu17_v.*")
98 arizzi 1.3 );
99     }
100     };
101 bortigno 1.1
102 arizzi 1.3 class VlightRegionHZee: public Cut {
103     std::string name() {return "VlightRegionHZee";};
104     Bool_t pass(VHbbProxy &iProxy){
105     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
106     if(iCand->size() < 1) return false;
107     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
108     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
109    
110     return ( iCand->at(0).candidateType == VHbbCandidate::Zee
111     && H.jets.size() >= 2
112     && H.jets.at(0).Pt() > 20
113     && H.jets.at(1).Pt() > 20
114 tboccali 1.4 && H.p4.Pt() > 100
115     && V.p4.Pt() > 100
116 arizzi 1.3 && ( H.jets.at(0).csv < CSVL)
117     && ( H.jets.at(1).csv < CSVL)
118     && iCand->at(0).additionalJets.size() < 2
119 arizzi 1.6 && iProxy.trigger()->accept("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v.*")
120 arizzi 1.3 );
121 bortigno 1.1 }
122 arizzi 1.3 };
123    
124 bortigno 1.1
125    
126 arizzi 1.3 class TTbarRegionHWmun: public Cut {
127     std::string name() {return "TTbarRegionHWmun";};
128     Bool_t pass(VHbbProxy &iProxy){
129     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
130     if(iCand->size() < 1) return false;
131     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
132     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
133    
134     return ( iCand->at(0).candidateType == VHbbCandidate::Wmun
135     && H.jets.size() >= 2
136     && H.jets.at(0).Pt() > 30
137     && H.jets.at(1).Pt() > 30
138 tboccali 1.4 && H.p4.Pt() > 100
139     && V.p4.Pt() > 100
140 arizzi 1.3 && ( H.jets.at(0).csv > CSVT || H.jets.at(1).csv > CSVT)
141     && iCand->at(0).additionalJets.size() > 1
142 arizzi 1.6 && iProxy.trigger()->accept("HLT_IsoMu17_v.*")
143 arizzi 1.3 );
144     }
145 bortigno 1.1 };
146    
147 arizzi 1.3 class TTbarRegionHWen: public Cut {
148     std::string name() {return "TTbarRegionHWen";};
149     Bool_t pass(VHbbProxy &iProxy){
150     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
151     if(iCand->size() < 1) return false;
152     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
153     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
154 bortigno 1.1
155 arizzi 1.3 return ( iCand->at(0).candidateType == VHbbCandidate::Wen
156     && H.jets.size() >= 2
157     && H.jets.at(0).Pt() > 30
158     && H.jets.at(1).Pt() > 30
159 tboccali 1.4 && H.p4.Pt() > 75
160     && V.p4.Pt() > 75
161 arizzi 1.3 && ( H.jets.at(0).csv > CSVT || H.jets.at(1).csv > CSVT)
162 tboccali 1.4 && TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.5
163 arizzi 1.3 && iCand->at(0).additionalJets.size() > 0
164 tboccali 1.4 && iCand->at(0).additionalJets.at(0).p4.Pt() > 35
165 arizzi 1.3 && V.mets[0].metSig > 2
166 tboccali 1.4 && ( TMath::Abs( Geom::deltaPhi( V.mets[0].p4.Phi(), H.jets.at(0).p4.Phi())) > 1.5
167     || TMath::Abs( Geom::deltaPhi(V.mets[0].p4.Phi(), H.jets.at(1).p4.Phi())) > 1.5 )
168 arizzi 1.6 && iProxy.trigger()->accept("HLT_Ele\\(\\(27\\)\\|\\(32\\)\\)_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v.")
169    
170    
171 arizzi 1.3 );
172     }
173     };
174 bortigno 1.1
175    
176 arizzi 1.3 class TTbarRegionHZmumu: public Cut {
177     std::string name() {return "TTbarRegionHZmumu";};
178     Bool_t pass(VHbbProxy &iProxy){
179     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
180     if(iCand->size() < 1) return false;
181     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
182     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
183    
184     return ( iCand->at(0).candidateType == VHbbCandidate::Zmumu
185     && H.jets.size() >= 2
186     && H.jets.at(0).Pt() > 20
187     && H.jets.at(1).Pt() > 20
188     && ( H.jets.at(0).csv > CSVT || H.jets.at(1).csv > CSVT)
189     && iCand->at(0).additionalJets.size() > 1
190 tboccali 1.4 && V.p4.M() > 120
191 arizzi 1.6 && iProxy.trigger()->accept("HLT_IsoMu17_v.*")
192 arizzi 1.3 );
193     }
194     };
195 bortigno 1.1
196    
197 arizzi 1.3 class TTbarRegionHZee: public Cut {
198     std::string name() {return "TTbarRegionHZee";};
199     Bool_t pass(VHbbProxy &iProxy){
200     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
201     if(iCand->size() < 1) return false;
202     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
203     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
204    
205     return ( iCand->at(0).candidateType == VHbbCandidate::Zee
206     && H.jets.size() >= 2
207     && H.jets.at(0).Pt() > 20
208     && H.jets.at(1).Pt() > 20
209     && ( H.jets.at(0).csv > CSVT || H.jets.at(1).csv > CSVT)
210     && iCand->at(0).additionalJets.size() > 1
211 arizzi 1.6 && iProxy.trigger()->accept("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v.*")
212    
213 arizzi 1.3 );
214 bortigno 1.1 }
215 arizzi 1.3 };
216 bortigno 1.1
217    
218 arizzi 1.3 class VbbRegionHWmun: public Cut {
219     std::string name() {return "VbbRegionHWmun";};
220     Bool_t pass(VHbbProxy &iProxy){
221     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
222     if(iCand->size() < 1) return false;
223     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
224     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
225    
226     return ( iCand->at(0).candidateType == VHbbCandidate::Wmun
227     && H.jets.size() >= 2
228     && H.jets.at(0).Pt() > 30
229     && H.jets.at(1).Pt() > 30
230 tboccali 1.4 && H.p4.Pt() < 150
231     && V.p4.Pt() < 150
232     && V.p4.M() > 50
233 arizzi 1.3 && ( H.jets.at(0).csv > CSVT || H.jets.at(1).csv > CSVT)
234 tboccali 1.4 && TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.5
235 arizzi 1.3 && iCand->at(0).additionalJets.size() ==0
236     && V.mets[0].metSig > 1
237 arizzi 1.6 && iProxy.trigger()->accept("HLT_IsoMu17_v.*")
238 arizzi 1.3 );
239     }
240     };
241 bortigno 1.1
242 arizzi 1.3 class VbbRegionHWen: public Cut {
243     std::string name() {return "VbbRegionHWen";};
244     Bool_t pass(VHbbProxy &iProxy){
245     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
246     if(iCand->size() < 1) return false;
247     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
248     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
249    
250     return ( iCand->at(0).candidateType == VHbbCandidate::Wen
251     && H.jets.size() >= 2
252     && H.jets.at(0).Pt() > 30
253     && H.jets.at(1).Pt() > 30
254 tboccali 1.4 && H.p4.Pt() < 150
255     && V.p4.Pt() < 150
256     && V.p4.M() > 50
257 arizzi 1.3 && ( H.jets.at(0).csv > CSVT || H.jets.at(1).csv > CSVT)
258 tboccali 1.4 && TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.4
259 arizzi 1.3 && iCand->at(0).additionalJets.size() < 2
260     && V.mets[0].metSig > 2
261 arizzi 1.6 && iProxy.trigger()->accept("HLT_Ele\\(\\(27\\)\\|\\(32\\)\\)_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v.*")
262    
263 arizzi 1.3 );
264     }
265 bortigno 1.1 };
266    
267 arizzi 1.3 class VbbRegionHZmumu: public Cut {
268     std::string name() {return "VbbRegionHZmumu";};
269     Bool_t pass(VHbbProxy &iProxy){
270     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
271     if(iCand->size() < 1) return false;
272     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
273     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
274    
275     return ( iCand->at(0).candidateType == VHbbCandidate::Zmumu
276     && H.jets.size() >= 2
277     && H.jets.at(0).Pt() > 20
278     && H.jets.at(1).Pt() > 20
279 tboccali 1.4 && ( V.p4.M() < 100 || V.p4.M() > 140)
280 arizzi 1.3 && ( H.jets.at(0).csv > CSVT || H.jets.at(1).csv > CSVT)
281     && ( H.jets.at(0).csv > 0.5 && H.jets.at(1).csv > 0.5)
282 tboccali 1.4 && TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.9
283 arizzi 1.3 && iCand->at(0).additionalJets.size() < 2
284 tboccali 1.4 && ( V.mets.size() ==0 || V.mets.at(0).p4.Pt() < 30)
285 arizzi 1.6 && iProxy.trigger()->accept("HLT_IsoMu17_v.*")
286 arizzi 1.3 );
287     }
288     };
289 bortigno 1.1
290 arizzi 1.3 class VbbRegionHZee: public Cut {
291     std::string name() {return "VbbRegionHZee";};
292 bortigno 1.1 Bool_t pass(VHbbProxy &iProxy){
293 arizzi 1.3 const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
294     if(iCand->size() < 1) return false;
295     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
296     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
297    
298     return ( iCand->at(0).candidateType == VHbbCandidate::Zee
299     && H.jets.size() >= 2
300     && H.jets.at(0).Pt() > 20
301     && H.jets.at(1).Pt() > 20
302 tboccali 1.4 && ( V.p4.M() < 95 || V.p4.M() > 145)
303 arizzi 1.3 && ( H.jets.at(0).csv > CSVT || H.jets.at(1).csv > CSVT)
304     && ( H.jets.at(0).csv > 0.5 && H.jets.at(1).csv > 0.5)
305 tboccali 1.4 // && TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.9
306 arizzi 1.3 && iCand->at(0).additionalJets.size() < 2
307 tboccali 1.4 // && V.mets[0].p4.Pt() < 30
308 arizzi 1.6 && iProxy.trigger()->accept("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v.*")
309    
310 arizzi 1.3 );
311     }
312     };
313 bortigno 1.1
314    
315 arizzi 1.3 class SignalRegion: public Cut {
316     std::string name() {return "SignalRegion";};
317 bortigno 1.1
318     Bool_t pass(VHbbProxy &iProxy){
319    
320     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
321    
322     if(iCand->size() < 1)
323     return false;
324    
325     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
326     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
327    
328 arizzi 1.3 if(iCand->at(0).candidateType == VHbbCandidate::Zmumu || iCand->at(0).candidateType == VHbbCandidate::Zee){
329 bortigno 1.1 btag_csv_min = 0.5;
330     btag_csv_max = 0.9;
331     Higgs_pt = 150;
332     V_pt = 150;
333     VH_deltaPhi = 2.70;
334     nOfAdditionalJets = 2;
335     pullAngle = 1.57;
336     helicityAngle = 0.8;
337     }
338 arizzi 1.3 else if(iCand->at(0).candidateType == VHbbCandidate::Wmun || iCand->at(0).candidateType == VHbbCandidate::Wen){
339 bortigno 1.1 btag_csv_min = 0.5;
340     btag_csv_max = 0.9;
341     Higgs_pt = 150;
342     V_pt = 150;
343     VH_deltaPhi = 2.95;
344     nOfAdditionalJets = 2;
345     pullAngle = 1.57;
346     helicityAngle = 0.8;
347     }
348 arizzi 1.3 else if(iCand->at(0).candidateType == VHbbCandidate::Znn){
349 bortigno 1.1 btag_csv_min = 0.5;
350     btag_csv_max = 0.9;
351     Higgs_pt = 150;
352     V_pt = 150;
353     VH_deltaPhi = 2.95;
354     nOfAdditionalJets = 2;
355     pullAngle = 1.57;
356     helicityAngle = 0.8;
357     }
358     else
359 arizzi 1.3 std::cerr << "No vector boson reconstructed. No histos will be filled." << std::endl;
360 bortigno 1.1
361     Bool_t go = false;
362 tboccali 1.4 if( H.jets.size() >= 2 && H.p4.Pt() > Higgs_pt
363     && V.p4.Pt() > V_pt
364     && TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > VH_deltaPhi
365 bortigno 1.1 && ( H.jets.at(0).csv > btag_csv_min && H.jets.at(1).csv > btag_csv_min )
366     && ( H.jets.at(0).csv > btag_csv_max || H.jets.at(1).csv > btag_csv_max )
367     && iCand->at(0).additionalJets.size() < nOfAdditionalJets
368     && TMath::Abs(H.deltaTheta) < pullAngle
369     // && TMath::Abs(H.helicityAngle) < helicityAngle
370     )
371     go = true;
372     return go;
373    
374     }
375    
376     private:
377    
378 arizzi 1.2 Double_t pt_b1;
379     Double_t pt_b2;
380 bortigno 1.1 Double_t btag_csv_min;
381     Double_t btag_csv_max;
382     Double_t Higgs_pt;
383     Double_t V_pt;
384     Double_t VH_deltaPhi;
385     unsigned int nOfAdditionalJets;
386     unsigned int nOfAdditionalLeptons;
387     Double_t pullAngle;
388     Double_t helicityAngle;
389 arizzi 1.3 };
390    
391 bortigno 1.1
392    
393