ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/VHbbAnalysisCode/src/VHbbCandidateCutSets.cpp
Revision: 1.3
Committed: Tue Mar 27 23:50:44 2012 UTC (13 years, 1 month ago) by grimes
Branch: MAIN
Changes since 1.2: +92 -14 lines
Log Message:
Various improvements.

File Contents

# User Rev Content
1 grimes 1.1 #include "TrkUpgradeAnalysis/VHbb/interface/VHbbCandidateCutSets.h"
2    
3     #include <stdexcept>
4    
5     #include "TrkUpgradeAnalysis/VHbb/interface/VHbbCandidateCuts.h"
6     #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbCandidate.h"
7    
8     trkupgradeanalysis::VHbbCandidateCutSet::VHbbCandidateCutSet() :
9 grimes 1.2 allCutsPassed_( false ), name_( "unset" )
10 grimes 1.1 {
11     // No operation besides the initialiser list
12     }
13    
14     trkupgradeanalysis::VHbbCandidateCutSet::~VHbbCandidateCutSet()
15     {
16     for( std::vector<trkupgradeanalysis::IBasicVHbbCandidateCut*>::iterator iCut=basicCuts_.begin(); iCut != basicCuts_.end(); ++iCut )
17     {
18     delete *iCut;
19     }
20     }
21    
22     size_t trkupgradeanalysis::VHbbCandidateCutSet::numberOfCuts() const
23     {
24     return basicCuts_.size();
25     }
26    
27     bool trkupgradeanalysis::VHbbCandidateCutSet::allCutsPassed() const
28     {
29     return allCutsPassed_;
30     }
31    
32     bool trkupgradeanalysis::VHbbCandidateCutSet::cutNPassed( size_t cutNumber ) const
33     {
34     if( cutNumber >= cutsPassed_.size() ) throw std::runtime_error( "trkupgradeanalysis::VHbbCandidateCutSet::cutNPassed(cutNumber) - invalid cutNumber" );
35     return cutsPassed_[cutNumber];
36     }
37    
38     bool trkupgradeanalysis::VHbbCandidateCutSet::everythingOtherThanCutNPassed( size_t cutNumber ) const
39     {
40     if( cutNumber >= cutsPassed_.size() ) throw std::runtime_error( "trkupgradeanalysis::VHbbCandidateCutSet::everythingOtherThanCutNPassed(cutNumber) - invalid cutNumber" );
41    
42     for( size_t a=0; a < cutsPassed_.size(); ++a )
43     {
44     if( a == cutNumber ) continue;
45     if( cutsPassed_[a] == false ) return false;
46     }
47     // If control has made it this far then all cuts (bar possibly the one stated) have passed
48     return true;
49     }
50    
51     const trkupgradeanalysis::IBasicCut& trkupgradeanalysis::VHbbCandidateCutSet::cutAt( size_t a ) const
52     {
53     return *basicCuts_[a];
54     }
55    
56     bool trkupgradeanalysis::VHbbCandidateCutSet::applyCuts( const VHbbCandidate& vhbbCandidate )
57     {
58     allCutsPassed_=true; // Start off assuming this is true then change it if not.
59     std::vector<trkupgradeanalysis::IBasicVHbbCandidateCut*>::const_iterator iCut;
60     std::vector<bool>::iterator iCutPassed;
61     for( iCut=basicCuts_.begin(), iCutPassed=cutsPassed_.begin(); iCut != basicCuts_.end() && iCutPassed != cutsPassed_.end(); ++iCut, ++iCutPassed )
62     {
63     bool cutPassed=( *iCut)->applyCut( vhbbCandidate );
64     *iCutPassed=cutPassed;
65     if( cutPassed == false ) allCutsPassed_=false;
66     }
67    
68     return allCutsPassed_;
69     }
70    
71 grimes 1.2 std::string trkupgradeanalysis::VHbbCandidateCutSet::name() const
72     {
73     return name_;
74     }
75    
76    
77    
78 grimes 1.1
79    
80 grimes 1.3 trkupgradeanalysis::SignalSelectionZee::SignalSelectionZee( float centralMass )
81 grimes 1.1 {
82     using namespace trkupgradeanalysis::cuts;
83     // These lines are from the code
84     // result.add( new SignalPreSelectionZee );
85     // result.add( new HPtCut( 100 ) );
86     // result.add( new VPtCut( 100 ) );
87     // result.add( new DoubleBTagCut( 0.5 ) );
88     // result.add( new SingleBTagCut( CSVT ) );
89     // result.add( new AdditionalJetsCut( 2 ) ); // < 2
90 grimes 1.3 // result.add( new DiJetMassMinCut( centralMass - 15. - 5. ) );
91     // result.add( new DiJetMassMaxCut( centralMass + 15. - 5. ) );
92 grimes 1.1 // These extra cuts are from the paper
93     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
94     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThanOrEqual( 105 ) ) );
95     // basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
96     // basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
97     // basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
98    
99    
100     // This first set aren't listed in the paper as separate cuts, so they must come under
101     // the header "pre-selection".
102     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
103     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
104     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThanOrEqual( 105 ) ) );
105     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
106    
107     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
108     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
109     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
110     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
111     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
112     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
113 grimes 1.3 // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( GreaterThan( centralMass-20 ) ) );
114     // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( LessThanOrEqual( centralMass+10 ) ) );
115     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
116 grimes 1.1
117    
118     cutsPassed_.resize( basicCuts_.size() );
119    
120 grimes 1.2 std::stringstream floatToStringConversion;
121 grimes 1.3 floatToStringConversion << "SignalSelectionZee_centralMass=" << centralMass;
122 grimes 1.2 name_=floatToStringConversion.str();
123 grimes 1.1 }
124    
125 grimes 1.3 trkupgradeanalysis::SignalSelectionZee::SignalSelectionZee( float lowerMass, float upperMass )
126     {
127     using namespace trkupgradeanalysis::cuts;
128     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
129     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
130     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
131     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
132     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
133     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
134     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
135     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
136     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
137    
138    
139     cutsPassed_.resize( basicCuts_.size() );
140    
141     std::stringstream floatToStringConversion;
142     floatToStringConversion << "SignalSelectionZee_massBetween" << lowerMass << "And" << upperMass;
143     name_=floatToStringConversion.str();
144     }
145 grimes 1.1
146    
147 grimes 1.3 trkupgradeanalysis::SignalSelectionZmumu::SignalSelectionZmumu( float centralMass )
148 grimes 1.1 {
149     using namespace trkupgradeanalysis::cuts;
150    
151     // The lines below are how the cuts are applied in the code
152     // result.add( new SignalPreSelectionZee ); // Eh? Zee? I assume this is a bug
153     // result.add( new HPtCut( 100 ) );
154     // result.add( new VPtCut( 100 ) );
155     // result.add( new DoubleBTagCut( 0.5 ) );
156     // result.add( new SingleBTagCut( CSVT ) );
157     // result.add( new AdditionalJetsCut( 2 ) ); // < 2
158 grimes 1.3 // result.add( new DiJetMassMinCut( centralMass - 15. - 5. ) );
159     // result.add( new DiJetMassMaxCut( centralMass + 15. - 5. ) );
160 grimes 1.1 // These lines I added from the cuts listed in the paper
161     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
162     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThanOrEqual( 105 ) ) );
163     // basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
164     // basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
165     // basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
166    
167    
168     // This first set aren't listed in the paper as separate cuts, so they must come under
169     // the header "pre-selection".
170     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
171     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
172     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThanOrEqual( 105 ) ) );
173     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
174    
175     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
176     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
177     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
178     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
179     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
180     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
181 grimes 1.3 // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( GreaterThan( centralMass-20 ) ) );
182     // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( LessThanOrEqual( centralMass+10 ) ) );
183     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
184 grimes 1.1
185     cutsPassed_.resize( basicCuts_.size() );
186    
187 grimes 1.2 std::stringstream floatToStringConversion;
188 grimes 1.3 floatToStringConversion << "SignalSelectionZmumu_centralMass=" << centralMass;
189 grimes 1.2 name_=floatToStringConversion.str();
190 grimes 1.1 }
191    
192 grimes 1.3 trkupgradeanalysis::SignalSelectionZmumu::SignalSelectionZmumu( float lowerMass, float upperMass )
193     {
194     using namespace trkupgradeanalysis::cuts;
195     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
196     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
197     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
198     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
199     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
200     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
201     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
202     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
203     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
204    
205     cutsPassed_.resize( basicCuts_.size() );
206    
207     std::stringstream floatToStringConversion;
208     floatToStringConversion << "SignalSelectionZmumu_massBetween" << lowerMass << "And" << upperMass;
209     name_=floatToStringConversion.str();
210     }
211 grimes 1.1
212    
213     trkupgradeanalysis::SignalSelectionZmumuWithoutAdditionalJetsCut::SignalSelectionZmumuWithoutAdditionalJetsCut( float mass )
214     {
215     using namespace trkupgradeanalysis::cuts;
216     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
217     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
218    
219     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
220     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
221     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
222     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
223     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
224     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( mass-20, mass+10 ) ) );
225    
226     cutsPassed_.resize( basicCuts_.size() );
227    
228 grimes 1.2 std::stringstream floatToStringConversion;
229     floatToStringConversion << "SignalSelectionZmumuWithoutAdditionalJetsCut_mass=" << mass;
230     name_=floatToStringConversion.str();
231 grimes 1.1 }
232    
233    
234 grimes 1.3 trkupgradeanalysis::SignalSelectionZmumuWithCSVCutsSwitched::SignalSelectionZmumuWithCSVCutsSwitched( float centralMass )
235     {
236     using namespace trkupgradeanalysis::cuts;
237     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
238     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
239     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
240     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
241     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
242     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
243     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
244     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
245     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
246    
247     cutsPassed_.resize( basicCuts_.size() );
248    
249     std::stringstream floatToStringConversion;
250     floatToStringConversion << "SignalSelectionZmumuWithCSVCutsSwitched_centralMass=" << centralMass;
251     name_=floatToStringConversion.str();
252     }
253    
254     trkupgradeanalysis::SignalSelectionZmumuWithCSVCutsSwitched::SignalSelectionZmumuWithCSVCutsSwitched( float lowerMass, float upperMass )
255     {
256     using namespace trkupgradeanalysis::cuts;
257     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
258     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
259     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
260     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
261     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
262     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
263     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVH( GreaterThan( 2.9 ) ) );
264     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
265     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
266    
267     cutsPassed_.resize( basicCuts_.size() );
268    
269     std::stringstream floatToStringConversion;
270     floatToStringConversion << "SignalSelectionZmumuWithCSVCutsSwitched_massBetween" << lowerMass << "And" << upperMass;
271     name_=floatToStringConversion.str();
272     }
273 grimes 1.1
274    
275    
276     trkupgradeanalysis::SignalSelectionWen::SignalSelectionWen( float mass )
277     {
278     using namespace trkupgradeanalysis::cuts;
279     // result.add( new SignalPreSelectionWen );
280     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wen ) );
281     // result.add( new HPtCut( 165 ) );
282     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 165 ) ) );
283     // result.add( new VPtCut( 160 ) );
284     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 160 ) ) );
285     // result.add( new DoubleBTagCut( 0.5 ) );
286     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
287     // result.add( new SingleBTagCut( CSVT ) );
288     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
289     // result.add( new AdditionalJetsCut( 1 ) ); // < 1
290     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 1 ) ) );
291     // result.add( new AdditionalLeptonsCut( 1 ) ); // < 1
292     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalLeptons( LessThan( 1 ) ) );
293     // result.add( new METCut( 30 ) );
294     basicCuts_.push_back( new trkupgradeanalysis::PtOfMETN( 0, GreaterThan( 30 ) ) );
295     // result.add( new DiJetMassMinCut( mass - 15. ) );
296     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( GreaterThan( mass-15 ) ) );
297     // result.add( new DiJetMassMaxCut( mass + 15. ) );
298     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( LessThanOrEqual( mass+15 ) ) );
299     cutsPassed_.resize( basicCuts_.size() );
300    
301 grimes 1.2 std::stringstream floatToStringConversion;
302     floatToStringConversion << "SignalSelectionWen_mass=" << mass;
303     name_=floatToStringConversion.str();
304 grimes 1.1 }
305    
306    
307    
308    
309     trkupgradeanalysis::SignalSelectionWmun::SignalSelectionWmun( float mass )
310     {
311     using namespace trkupgradeanalysis::cuts;
312     // result.add( new SignalPreSelectionWmun );
313     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wmun ) );
314     // result.add( new HPtCut( 165 ) );
315     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 165 ) ) );
316     // result.add( new VPtCut( 160 ) );
317     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 160 ) ) );
318     // result.add( new DoubleBTagCut( 0.5 ) );
319     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
320     // result.add( new SingleBTagCut( CSVT ) );
321     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
322     // result.add( new AdditionalJetsCut( 1 ) ); // < 1
323     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 1 ) ) );
324     // result.add( new AdditionalLeptonsCut( 1 ) ); // < 1
325     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalLeptons( LessThan( 1 ) ) );
326     // result.add( new DiJetMassMinCut( mass - 15. ) );
327     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( GreaterThan( mass-15 ) ) );
328     // result.add( new DiJetMassMaxCut( mass + 15. ) );
329     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( LessThanOrEqual( mass+15 ) ) );
330     cutsPassed_.resize( basicCuts_.size() );
331    
332 grimes 1.2 std::stringstream floatToStringConversion;
333     floatToStringConversion << "SignalSelectionWmun_mass=" << mass;
334     name_=floatToStringConversion.str();
335 grimes 1.1 }
336    
337    
338    
339    
340     trkupgradeanalysis::VlightRegionHWmun::VlightRegionHWmun()
341     {
342     using namespace trkupgradeanalysis::cuts;
343     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wmun ) );
344     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
345     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
346     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
347     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 30 ) ) );
348     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 30 ) ) );
349     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
350     basicCuts_.push_back( new trkupgradeanalysis::METSigma( GreaterThan( 2.5 ) ) );
351     cutsPassed_.resize( basicCuts_.size() );
352    
353 grimes 1.2 name_="VlightRegionHWmun";
354 grimes 1.1 }
355    
356     trkupgradeanalysis::VlightRegionHWen::VlightRegionHWen()
357     {
358     using namespace trkupgradeanalysis::cuts;
359     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wen ) );
360     basicCuts_.push_back( new trkupgradeanalysis::PtOfElectronN( 0, GreaterThan( 30 ) ) );
361     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
362     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
363     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
364     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 150 ) ) );
365     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 150 ) ) );
366     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 150 ) ) );
367     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
368     basicCuts_.push_back( new trkupgradeanalysis::METSigma( GreaterThan( 2.5 ) ) );
369     cutsPassed_.resize( basicCuts_.size() );
370    
371 grimes 1.2 name_="VlightRegionHWen";
372 grimes 1.1 }
373    
374     trkupgradeanalysis::VlightRegionHZmumu::VlightRegionHZmumu()
375     {
376     using namespace trkupgradeanalysis::cuts;
377     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
378     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
379     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
380     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
381     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
382     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
383     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
384     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
385     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThan( 105 ) ) );
386     cutsPassed_.resize( basicCuts_.size() );
387    
388 grimes 1.2 name_="VlightRegionHZmumu";
389 grimes 1.1 }
390    
391     trkupgradeanalysis::VlightRegionHZee::VlightRegionHZee()
392     {
393     using namespace trkupgradeanalysis::cuts;
394     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
395     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
396     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
397     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
398     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
399     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
400     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
401     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
402     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThan( 105 ) ) );
403     cutsPassed_.resize( basicCuts_.size() );
404    
405 grimes 1.2 name_="VlightRegionHZee";
406 grimes 1.1 }
407    
408     trkupgradeanalysis::TTbarRegionHWmun::TTbarRegionHWmun()
409     {
410     using namespace trkupgradeanalysis::cuts;
411     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wmun ) );
412     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
413     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
414     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
415     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
416     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
417     // require that at least one of the first two jets (jets 0 and 1) b-tag is greater than 0.898
418     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
419     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( GreaterThan( 1 ) ) );
420     cutsPassed_.resize( basicCuts_.size() );
421    
422 grimes 1.2 name_="TTbarRegionHWmun";
423 grimes 1.1 }
424    
425     trkupgradeanalysis::TTbarRegionHWen::TTbarRegionHWen()
426     {
427     using namespace trkupgradeanalysis::cuts;
428     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wen ) );
429     basicCuts_.push_back( new trkupgradeanalysis::PtOfElectronN( 0, GreaterThan( 30 ) ) );
430     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
431     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
432     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
433     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
434     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
435     // require that at least one of the first two jets (jets 0 and 1) b-tag is greater than 0.898
436     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
437     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( GreaterThan( 1 ) ) );
438     cutsPassed_.resize( basicCuts_.size() );
439    
440 grimes 1.2 name_="TTbarRegionHWen";
441 grimes 1.1 }
442    
443     trkupgradeanalysis::TTbarRegionHZmumu::TTbarRegionHZmumu()
444     {
445     using namespace trkupgradeanalysis::cuts;
446     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
447     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
448     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
449     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
450     basicCuts_.push_back( new trkupgradeanalysis::NumberOfMETObjects( GreaterThan( 0 ) ) );
451     // require that the pT of the 0th (i.e. the first) MET object is greater than 50 GeV
452     basicCuts_.push_back( new trkupgradeanalysis::PtOfMETN( 0, GreaterThan( 50 ) ) );
453     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 120 ) ) );
454     cutsPassed_.resize( basicCuts_.size() );
455    
456 grimes 1.2 name_="TTbarRegionHZmumu";
457 grimes 1.1 }
458    
459     trkupgradeanalysis::TTbarRegionHZee::TTbarRegionHZee()
460     {
461     using namespace trkupgradeanalysis::cuts;
462     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
463     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
464     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
465     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
466     basicCuts_.push_back( new trkupgradeanalysis::NumberOfMETObjects( GreaterThan( 0 ) ) );
467     // require that the pT of the 0th (i.e. the first) MET object is greater than 50 GeV
468     basicCuts_.push_back( new trkupgradeanalysis::PtOfMETN( 0, GreaterThan( 50 ) ) );
469     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 120 ) ) );
470     cutsPassed_.resize( basicCuts_.size() );
471    
472 grimes 1.2 name_="TTbarRegionHZee";
473 grimes 1.1 }
474    
475     trkupgradeanalysis::VbbRegionHWmun::VbbRegionHWmun()
476     {
477     using namespace trkupgradeanalysis::cuts;
478     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wmun ) );
479     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
480     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
481     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
482     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( LessThan( 150 ) ) );
483     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( LessThan( 150 ) ) );
484     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( LessThan( 150 ) ) );
485     // Add V.Mt(VHbbCandidate::Wmun) < 120
486     // Add V.Mt(VHbbCandidate::Wmun) > 40
487     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
488     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( Equals( 0 ) ) );
489     basicCuts_.push_back( new trkupgradeanalysis::METSigma( GreaterThan( 2.5 ) ) );
490     cutsPassed_.resize( basicCuts_.size() );
491    
492 grimes 1.2 name_="VbbRegionHWmun";
493 grimes 1.1 }
494    
495     trkupgradeanalysis::VbbRegionHWen::VbbRegionHWen()
496     {
497     using namespace trkupgradeanalysis::cuts;
498     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wen ) );
499     basicCuts_.push_back( new trkupgradeanalysis::PtOfElectronN( 0, GreaterThan( 30 ) ) );
500     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
501     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
502     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
503     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( LessThan( 150 ) ) );
504     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( LessThan( 150 ) ) );
505     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( LessThan( 150 ) ) );
506     // Add V.Mt(VHbbCandidate::Wmun) < 120
507     // Add V.Mt(VHbbCandidate::Wmun) > 40
508     // require that at least one of the first two jets (jets 0 and 1) b-tag is greater than 0.898
509     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
510     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( Equals( 0 ) ) );
511     basicCuts_.push_back( new trkupgradeanalysis::METSigma( GreaterThan( 2.5 ) ) );
512     cutsPassed_.resize( basicCuts_.size() );
513    
514 grimes 1.2 name_="VbbRegionHWen";
515 grimes 1.1 }
516    
517     trkupgradeanalysis::VbbRegionHZmumu::VbbRegionHZmumu()
518     {
519     using namespace trkupgradeanalysis::cuts;
520     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
521     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
522     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
523     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
524     // Add ( H.p4.M() < 90 || H.p4.M() > 145)
525     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
526     // Add TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.9
527     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
528     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
529     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThan( 105 ) ) );
530     cutsPassed_.resize( basicCuts_.size() );
531    
532 grimes 1.2 name_="VbbRegionHZmumu";
533 grimes 1.1 }
534    
535     trkupgradeanalysis::VbbRegionHZee::VbbRegionHZee()
536     {
537     using namespace trkupgradeanalysis::cuts;
538     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
539     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
540     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
541     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
542     // Add ( H.p4.M() < 90 || H.p4.M() > 145)
543     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
544     // Add TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.9
545     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJets( LessThan( 2 ) ) );
546     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
547     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThan( 105 ) ) );
548     cutsPassed_.resize( basicCuts_.size() );
549    
550 grimes 1.2 name_="VbbRegionHZee";
551 grimes 1.1 }