ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/src/Cuts200X.cc
Revision: 1.1
Committed: Tue Jul 19 14:53:31 2011 UTC (13 years, 9 months ago) by bortigno
Content type: text/plain
Branch: MAIN
CVS Tags: Jul20th2011
Log Message:
not yet completed

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