ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/src/Cuts200X.cc
Revision: 1.2
Committed: Wed Jul 20 15:20:31 2011 UTC (13 years, 9 months ago) by arizzi
Content type: text/plain
Branch: MAIN
CVS Tags: Jul22nd2011, Jul21st2011
Changes since 1.1: +13 -3 lines
Log Message:
fix compile issues

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 arizzi 1.2 Double_t pt_b1;
89     Double_t pt_b2;
90 bortigno 1.1 Double_t btag_csv_min;
91     Double_t btag_csv_max;
92     Double_t Higgs_pt;
93     Double_t V_pt;
94     Double_t VH_deltaPhi;
95     unsigned int nOfAdditionalJets;
96     unsigned int nOfAdditionalLeptons;
97     Double_t pullAngle;
98     Double_t helicityAngle;
99     };
100    
101    
102     class ControlRegion_Vusdg: public Cut {
103     std::string name() {return "ControlRegion_Vusdg";};
104    
105     Bool_t pass(VHbbProxy &iProxy){
106    
107     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
108    
109     if(iCand->size() < 1)
110     return false;
111    
112     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
113     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
114    
115     CSVL = 0.244;
116     CSVM = 0.679;
117     CSVT = 0.898;
118    
119     if(iCand->at(0).candidateType == VHbbCandidate::Zmumu){
120     pt_b1 = 20;
121     pt_b2 = 20;
122     btag_csv_min = CSVL;
123     btag_csv_max = CSVL;
124     Higgs_pt = 150;
125     V_pt = 150;
126     VH_deltaPhi = 2.70;
127     nOfAdditionalJets = 2;
128     pullAngle = 1.57;
129     helicityAngle = 0.8;
130     }
131     else if( iCand->at(0).candidateType == VHbbCandidate::Zee){
132     pt_b1 = 20;
133     pt_b2 = 20;
134     btag_csv_min = CSVL;
135     btag_csv_max = CSVL;
136     Higgs_pt = 150;
137     V_pt = 150;
138     VH_deltaPhi = 2.70;
139     nOfAdditionalJets = 2;
140     pullAngle = 1.57;
141     helicityAngle = 0.8;
142     }
143     else if(iCand->at(0).candidateType == VHbbCandidate::Wmun){
144     pt_b1 = 30;
145     pt_b2 = 30;
146     pt_b3 = 30;
147     Higgs_pt = 150;
148     btag_csv_min = CSVM;
149     btag_csv_max = CSVT;
150     btag_csv_additional = CSVL;
151     V_pt = 150;
152     VH_deltaPhi = 2.95;
153     nOfAdditionalJets = 2;
154     pullAngle = 1.57;
155     helicityAngle = 0.8;
156     }
157     else if(iCand->at(0).candidateType == VHbbCandidate::Wen){
158     pt_b1 = 30;
159     pt_b2 = 30;
160     pt_b3 = 30;
161     btag_csv_min = CSVM;
162     btag_csv_max = CSVT;
163     btag_csv_additional = CSVL;
164     Higgs_pt = 150;
165     V_pt = 150;
166     VH_deltaPhi = 2.95;
167     nOfAdditionalJets = 2;
168     pullAngle = 1.57;
169     helicityAngle = 0.8;
170     }
171     else
172     std::cerr << "No vector boson reconstructed for this control region." << std::endl;
173    
174     CompareBTag bTagComparator;
175 arizzi 1.2 additionalJetsBtag = iProxy.getVHbbCandidate()->at(0).additionalJets;
176 bortigno 1.1 std::sort( additionalJetsBtag.begin(), additionalJetsBtag.end(), bTagComparator );
177    
178     Bool_t go = false;
179     if( H.fourMomentum.Pt() > Higgs_pt
180     && H.jets.at(0).Pt() > pt_b1
181     && H.jets.at(1).Pt() > pt_b2
182 arizzi 1.2 && additionalJetsBtag.at(0).Pt() > pt_b3
183 bortigno 1.1 && V.fourMomentum.Pt() > V_pt
184     && TMath::Abs( Geom::deltaPhi(H.fourMomentum.Phi(), V.fourMomentum.Phi()) ) > VH_deltaPhi
185     && ( H.jets.at(0).csv > btag_csv_min && H.jets.at(1).csv > btag_csv_min )
186     && ( H.jets.at(0).csv > btag_csv_max || H.jets.at(1).csv > btag_csv_max )
187     && iCand->at(0).additionalJets.size() < nOfAdditionalJets
188     && TMath::Abs(H.deltaTheta) < pullAngle
189     // && TMath::Abs(H.helicityAngle) < helicityAngle
190     )
191     go = true;
192     return go;
193    
194     }
195    
196     private:
197    
198 arizzi 1.2 Double_t pt_b1;
199     Double_t pt_b2;
200     Double_t pt_b3;
201 bortigno 1.1 Double_t CSVL;
202     Double_t CSVM;
203     Double_t CSVT;
204     Double_t btag_csv_additional;
205     Double_t btag_csv_min;
206     Double_t btag_csv_max;
207     Double_t Higgs_pt;
208     Double_t V_pt;
209     Double_t VH_deltaPhi;
210     unsigned int nOfAdditionalJets;
211     unsigned int nOfAdditionalLeptons;
212     Double_t pullAngle;
213     Double_t helicityAngle;
214     std::vector<VHbbEvent::SimpleJet> additionalJetsBtag;
215    
216     };
217    
218    
219     class ControlRegion_Top: public Cut {
220     std::string name() {return "ControlRegion_Top";};
221    
222     Bool_t pass(VHbbProxy &iProxy){
223    
224     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
225    
226     if(iCand->size() < 1)
227     return false;
228    
229     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
230     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
231    
232     if(iCand->at(0).candidateType == VHbbCandidate::Zmumu){
233     pt_b1 = 20;
234     pt_b2 = 20;
235     btag_csv_min = 0.5;
236     btag_csv_max = 0.9;
237     Higgs_pt = 150;
238     V_pt = 150;
239     VH_deltaPhi = 2.70;
240     nOfAdditionalJets = 2;
241     pullAngle = 1.57;
242     helicityAngle = 0.8;
243     }
244     else if( iCand->at(0).candidateType == VHbbCandidate::Zee){
245     pt_b1 = 20;
246     pt_b2 = 20;
247     btag_csv_min = 0.5;
248     btag_csv_max = 0.9;
249     Higgs_pt = 150;
250     V_pt = 150;
251     VH_deltaPhi = 2.70;
252     nOfAdditionalJets = 2;
253     pullAngle = 1.57;
254     helicityAngle = 0.8;
255     }
256     else if(iCand->at(0).candidateType == VHbbCandidate::Wmun){
257     pt_b1 = 30;
258     pt_b2 = 30;
259     pt_b3 = 30;
260     btag_csv_min = 0.5;
261     btag_csv_max = 0.9;
262     Higgs_pt = 150;
263     V_pt = 150;
264     VH_deltaPhi = 2.95;
265     nOfAdditionalJets = 2;
266     pullAngle = 1.57;
267     helicityAngle = 0.8;
268     }
269     else if(iCand->at(0).candidateType == VHbbCandidate::Wen){
270     pt_b1 = 30;
271     pt_b2 = 30;
272     pt_b3 = 30;
273     btag_csv_min = 0.5;
274     btag_csv_max = 0.9;
275     Higgs_pt = 150;
276     V_pt = 150;
277     VH_deltaPhi = 2.95;
278     nOfAdditionalJets = 2;
279     pullAngle = 1.57;
280     helicityAngle = 0.8;
281     }
282     else
283     std::cerr << "No vector boson reconstructed for this control region." << std::endl;
284    
285     Bool_t go = false;
286     if( H.fourMomentum.Pt() > Higgs_pt
287     && H.jets.at(0).Pt() > pt_b1
288     && H.jets.at(1).Pt() > pt_b2
289     // && H.additionalJets.at(0).Pt() > pt_b3
290     && V.fourMomentum.Pt() > V_pt
291     && TMath::Abs( Geom::deltaPhi(H.fourMomentum.Phi(), V.fourMomentum.Phi()) ) > VH_deltaPhi
292     && ( H.jets.at(0).csv > btag_csv_min && H.jets.at(1).csv > btag_csv_min )
293     && ( H.jets.at(0).csv > btag_csv_max || H.jets.at(1).csv > btag_csv_max )
294     && iCand->at(0).additionalJets.size() < nOfAdditionalJets
295     && TMath::Abs(H.deltaTheta) < pullAngle
296     // && TMath::Abs(H.helicityAngle) < helicityAngle
297     )
298     go = true;
299     return go;
300    
301     }
302    
303     private:
304    
305 arizzi 1.2 Double_t pt_b1;
306     Double_t pt_b2;
307     Double_t pt_b3;
308 bortigno 1.1 Double_t btag_csv_min;
309     Double_t btag_csv_max;
310     Double_t Higgs_pt;
311     Double_t V_pt;
312     Double_t VH_deltaPhi;
313     unsigned int nOfAdditionalJets;
314     unsigned int nOfAdditionalLeptons;
315     Double_t pullAngle;
316     Double_t helicityAngle;
317    
318     };
319    
320    
321    
322     class ControlRegion_Vbb: public Cut {
323     std::string name() {return "ControlRegion_Vbb";};
324    
325     Bool_t pass(VHbbProxy &iProxy){
326    
327     const std::vector<VHbbCandidate> *iCand = iProxy.getVHbbCandidate();
328    
329     if(iCand->size() < 1)
330     return false;
331    
332     VHbbCandidate::VectorCandidate V = iProxy.getVHbbCandidate()->at(0).V;
333     VHbbCandidate::HiggsCandidate H = iProxy.getVHbbCandidate()->at(0).H;
334    
335     if(iCand->at(0).candidateType == VHbbCandidate::Zmumu){
336     pt_b1 = 20;
337     pt_b2 = 20;
338     btag_csv_min = 0.5;
339     btag_csv_max = 0.9;
340     Higgs_pt = 150;
341     V_pt = 150;
342     VH_deltaPhi = 2.70;
343     nOfAdditionalJets = 2;
344     pullAngle = 1.57;
345     helicityAngle = 0.8;
346     }
347     else if( iCand->at(0).candidateType == VHbbCandidate::Zee){
348     pt_b1 = 20;
349     pt_b2 = 20;
350     btag_csv_min = 0.5;
351     btag_csv_max = 0.9;
352     Higgs_pt = 150;
353     V_pt = 150;
354     VH_deltaPhi = 2.70;
355     nOfAdditionalJets = 2;
356     pullAngle = 1.57;
357     helicityAngle = 0.8;
358     }
359     else if(iCand->at(0).candidateType == VHbbCandidate::Wmun){
360     pt_b1 = 30;
361     pt_b2 = 30;
362     pt_b3 = 30;
363     btag_csv_min = 0.5;
364     btag_csv_max = 0.9;
365     Higgs_pt = 150;
366     V_pt = 150;
367     VH_deltaPhi = 2.95;
368     nOfAdditionalJets = 2;
369     pullAngle = 1.57;
370     helicityAngle = 0.8;
371     }
372     else if(iCand->at(0).candidateType == VHbbCandidate::Wen){
373     pt_b1 = 30;
374     pt_b2 = 30;
375     pt_b3 = 30;
376     btag_csv_min = 0.5;
377     btag_csv_max = 0.9;
378     Higgs_pt = 150;
379     V_pt = 150;
380     VH_deltaPhi = 2.95;
381     nOfAdditionalJets = 2;
382     pullAngle = 1.57;
383     helicityAngle = 0.8;
384     }
385     else
386     std::cerr << "No vector boson reconstructed for this control region." << std::endl;
387    
388     Bool_t go = false;
389     if( H.fourMomentum.Pt() > Higgs_pt
390     && H.jets.at(0).Pt() > pt_b1
391     && H.jets.at(1).Pt() > pt_b2
392     // && H.additionalJets.at(0).Pt() > pt_b3
393     && V.fourMomentum.Pt() > V_pt
394     && TMath::Abs( Geom::deltaPhi(H.fourMomentum.Phi(), V.fourMomentum.Phi()) ) > VH_deltaPhi
395     && ( H.jets.at(0).csv > btag_csv_min && H.jets.at(1).csv > btag_csv_min )
396     && ( H.jets.at(0).csv > btag_csv_max || H.jets.at(1).csv > btag_csv_max )
397     && iCand->at(0).additionalJets.size() < nOfAdditionalJets
398     && TMath::Abs(H.deltaTheta) < pullAngle
399     // && TMath::Abs(H.helicityAngle) < helicityAngle
400     )
401     go = true;
402     return go;
403    
404     }
405    
406     private:
407    
408 arizzi 1.2 Double_t pt_b1;
409     Double_t pt_b2;
410     Double_t pt_b3;
411 bortigno 1.1 Double_t btag_csv_min;
412     Double_t btag_csv_max;
413     Double_t Higgs_pt;
414     Double_t V_pt;
415     Double_t VH_deltaPhi;
416     unsigned int nOfAdditionalJets;
417     unsigned int nOfAdditionalLeptons;
418     Double_t pullAngle;
419     Double_t helicityAngle;
420    
421     };
422    
423