ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/interface/Cuts200X.h
Revision: 1.1
Committed: Mon Aug 22 11:53:09 2011 UTC (13 years, 8 months ago) by arizzi
Content type: text/plain
Branch: MAIN
Log Message:
move Histos and Cuts200X to .h remove CutAndHistos

File Contents

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