ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/VHbbAnalysisCode/src/VHbbCandidateCutSets.cpp
Revision: 1.4
Committed: Wed Aug 15 22:37:47 2012 UTC (12 years, 8 months ago) by grimes
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +387 -27 lines
Log Message:
Long overdue commit with several new files

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 grimes 1.4 #include "TrkUpgradeAnalysis/VHbb/interface/VHbbCandidateVariables.h"
7 grimes 1.1 #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbCandidate.h"
8    
9     trkupgradeanalysis::VHbbCandidateCutSet::VHbbCandidateCutSet() :
10 grimes 1.2 allCutsPassed_( false ), name_( "unset" )
11 grimes 1.1 {
12     // No operation besides the initialiser list
13     }
14    
15     trkupgradeanalysis::VHbbCandidateCutSet::~VHbbCandidateCutSet()
16     {
17     for( std::vector<trkupgradeanalysis::IBasicVHbbCandidateCut*>::iterator iCut=basicCuts_.begin(); iCut != basicCuts_.end(); ++iCut )
18     {
19     delete *iCut;
20     }
21 grimes 1.4
22     for( std::vector<trkupgradeanalysis::variables::VHbbCandidateVariable*>::iterator iAdditionalVariable=additionalVariables_.begin(); iAdditionalVariable!=additionalVariables_.end(); ++iAdditionalVariable )
23     {
24     delete *iAdditionalVariable;
25     }
26 grimes 1.1 }
27    
28     size_t trkupgradeanalysis::VHbbCandidateCutSet::numberOfCuts() const
29     {
30     return basicCuts_.size();
31     }
32    
33     bool trkupgradeanalysis::VHbbCandidateCutSet::allCutsPassed() const
34     {
35     return allCutsPassed_;
36     }
37    
38     bool trkupgradeanalysis::VHbbCandidateCutSet::cutNPassed( size_t cutNumber ) const
39     {
40     if( cutNumber >= cutsPassed_.size() ) throw std::runtime_error( "trkupgradeanalysis::VHbbCandidateCutSet::cutNPassed(cutNumber) - invalid cutNumber" );
41     return cutsPassed_[cutNumber];
42     }
43    
44     bool trkupgradeanalysis::VHbbCandidateCutSet::everythingOtherThanCutNPassed( size_t cutNumber ) const
45     {
46     if( cutNumber >= cutsPassed_.size() ) throw std::runtime_error( "trkupgradeanalysis::VHbbCandidateCutSet::everythingOtherThanCutNPassed(cutNumber) - invalid cutNumber" );
47    
48     for( size_t a=0; a < cutsPassed_.size(); ++a )
49     {
50     if( a == cutNumber ) continue;
51     if( cutsPassed_[a] == false ) return false;
52     }
53     // If control has made it this far then all cuts (bar possibly the one stated) have passed
54     return true;
55     }
56    
57     const trkupgradeanalysis::IBasicCut& trkupgradeanalysis::VHbbCandidateCutSet::cutAt( size_t a ) const
58     {
59     return *basicCuts_[a];
60     }
61    
62     bool trkupgradeanalysis::VHbbCandidateCutSet::applyCuts( const VHbbCandidate& vhbbCandidate )
63     {
64     allCutsPassed_=true; // Start off assuming this is true then change it if not.
65     std::vector<trkupgradeanalysis::IBasicVHbbCandidateCut*>::const_iterator iCut;
66     std::vector<bool>::iterator iCutPassed;
67     for( iCut=basicCuts_.begin(), iCutPassed=cutsPassed_.begin(); iCut != basicCuts_.end() && iCutPassed != cutsPassed_.end(); ++iCut, ++iCutPassed )
68     {
69     bool cutPassed=( *iCut)->applyCut( vhbbCandidate );
70     *iCutPassed=cutPassed;
71     if( cutPassed == false ) allCutsPassed_=false;
72     }
73    
74 grimes 1.4 // Fill the additional variables
75     for( std::vector<trkupgradeanalysis::variables::VHbbCandidateVariable*>::const_iterator iVariable=additionalVariables_.begin(); iVariable!=additionalVariables_.end(); ++iVariable )
76     {
77     (*iVariable)->set( vhbbCandidate );
78     }
79    
80     return allCutsPassed_;
81     }
82    
83     bool trkupgradeanalysis::VHbbCandidateCutSet::applyCuts( const trkupgradeanalysis::tools::NTupleRow& ntupleRow )
84     {
85     allCutsPassed_=true; // Start off assuming this is true then change it if not.
86     std::vector<trkupgradeanalysis::IBasicVHbbCandidateCut*>::const_iterator iCut;
87     std::vector<bool>::iterator iCutPassed;
88     for( iCut=basicCuts_.begin(), iCutPassed=cutsPassed_.begin(); iCut != basicCuts_.end() && iCutPassed != cutsPassed_.end(); ++iCut, ++iCutPassed )
89     {
90     bool cutPassed=( *iCut)->applyCut( ntupleRow );
91     *iCutPassed=cutPassed;
92     if( cutPassed == false ) allCutsPassed_=false;
93     }
94    
95     // Fill the additional variables
96     for( std::vector<trkupgradeanalysis::variables::VHbbCandidateVariable*>::const_iterator iVariable=additionalVariables_.begin(); iVariable!=additionalVariables_.end(); ++iVariable )
97     {
98     (*iVariable)->set( ntupleRow );
99     }
100    
101 grimes 1.1 return allCutsPassed_;
102     }
103    
104 grimes 1.2 std::string trkupgradeanalysis::VHbbCandidateCutSet::name() const
105     {
106     return name_;
107     }
108    
109 grimes 1.4 size_t trkupgradeanalysis::VHbbCandidateCutSet::numberOfAdditionalVariables()
110     {
111     return additionalVariables_.size();
112     }
113    
114     trkupgradeanalysis::IHistogramVariable& trkupgradeanalysis::VHbbCandidateCutSet::additionalVariableAt( size_t position )
115     {
116     // Use the "at" method rather than array subscripts so that an exception is thrown if it's out of bounds
117     return *additionalVariables_.at(position);
118     }
119    
120    
121    
122     trkupgradeanalysis::AllVariables::AllVariables()
123     {
124     additionalVariables_.push_back( new trkupgradeanalysis::variables::MuonPixelHits(true) ); // True means check first muon
125     additionalVariables_.push_back( new trkupgradeanalysis::variables::MuonPixelHits(false) ); // False means check second muon
126     additionalVariables_.push_back( new trkupgradeanalysis::variables::CandidateType );
127     additionalVariables_.push_back( new trkupgradeanalysis::variables::DiLeptonMass );
128     additionalVariables_.push_back( new trkupgradeanalysis::variables::HiggsCandidatePt );
129     additionalVariables_.push_back( new trkupgradeanalysis::variables::VectorBosonCandidatePt );
130     additionalVariables_.push_back( new trkupgradeanalysis::variables::DeltaPhiVH );
131     additionalVariables_.push_back( new trkupgradeanalysis::variables::HighestCSV );
132     additionalVariables_.push_back( new trkupgradeanalysis::variables::LowestCSV );
133     additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
134     additionalVariables_.push_back( new trkupgradeanalysis::variables::DiJetMass );
135    
136     name_="AllVariables";
137     }
138    
139     trkupgradeanalysis::ParameterisedZmumu::ParameterisedZmumu( float higherCSVCut, float lowerCSVCut, float lowerZMassCut, float upperZMassCut, float lowerHMassCut, float upperHMassCut, bool requireTrigger, bool requireDoubleTrigger, int numberOfAdditionalJetsCut )
140     {
141     using namespace trkupgradeanalysis::cuts;
142     using namespace trkupgradeanalysis::variables;
143    
144     if( requireTrigger || requireDoubleTrigger )
145     {
146     // Emulate HLT trigger requirements by requiring 3 or more pixel hits in the muons
147     if( requireDoubleTrigger ) basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( LowestMuonPixelHits(), GreaterThan( 2 ) ) );
148     else basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( HighestMuonPixelHits(), GreaterThan( 2 ) ) );
149     }
150    
151     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( CandidateType(), Equals( VHbbCandidate::Zmumu, 0.01 ) ) );
152     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( DiLeptonMass(), Within( lowerZMassCut, upperZMassCut ) ) );
153     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( HiggsCandidatePt(), GreaterThan( 100 ) ) );
154     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( VectorBosonCandidatePt(), GreaterThan( 100 ) ) );
155     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( HighestCSV(), GreaterThan( higherCSVCut ) ) );
156     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( LowestCSV(), GreaterThan( lowerCSVCut ) ) );
157     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( DeltaPhiVH(), GreaterThan( 2.9 ) ) );
158    
159     if( numberOfAdditionalJetsCut>=0 ) basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( NumberOfAdditionalJets(), LessThanOrEqual(numberOfAdditionalJetsCut) ) );
160     else additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
161    
162     if( lowerHMassCut>0 && upperHMassCut> 0 ) basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( DiJetMass(), Within( lowerHMassCut, upperHMassCut ) ) );
163     else additionalVariables_.push_back( new DiJetMass );
164    
165     cutsPassed_.resize( basicCuts_.size() );
166    
167     std::stringstream floatToStringConversion;
168     floatToStringConversion << "FullSelectionZmumu_higherCSVCut=" << higherCSVCut << "_lowerCSVCut=" << lowerCSVCut << "_lowerZMassCut=" << lowerZMassCut << "_upperZMassCut=" << upperZMassCut;
169     if( requireTrigger || requireDoubleTrigger )
170     {
171     if( requireDoubleTrigger ) floatToStringConversion << "_withDoubleTrigger";
172     else floatToStringConversion << "_withSingleTrigger";
173     }
174     name_=floatToStringConversion.str();
175     }
176    
177     trkupgradeanalysis::FullSelectionZmumu::FullSelectionZmumu( float higherCSVCut, float lowerCSVCut, float centralZMass, bool requireTrigger, bool requireDoubleTrigger )
178     : ParameterisedZmumu( higherCSVCut, lowerCSVCut, centralZMass-16, centralZMass+14, -1, -1, -1, requireTrigger, requireDoubleTrigger)
179     {
180     // No operation besides the initialiser list
181     }
182    
183     trkupgradeanalysis::ParameterisedZee::ParameterisedZee( float higherCSVCut, float lowerCSVCut, float lowerZMassCut, float upperZMassCut, float lowerHMassCut, float upperHMassCut, int numberOfAdditionalJetsCut )
184     {
185     using namespace trkupgradeanalysis::cuts;
186     using namespace trkupgradeanalysis::variables;
187     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( CandidateType(), Equals( VHbbCandidate::Zee, 0.01 ) ) );
188     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( DiLeptonMass(), Within( lowerZMassCut, upperZMassCut ) ) );
189     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( HiggsCandidatePt(), GreaterThan( 100 ) ) );
190     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( VectorBosonCandidatePt(), GreaterThan( 100 ) ) );
191     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( HighestCSV(), GreaterThan( higherCSVCut ) ) );
192     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( LowestCSV(), GreaterThan( lowerCSVCut ) ) );
193     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( DeltaPhiVH(), GreaterThan( 2.9 ) ) );
194    
195     if( numberOfAdditionalJetsCut>=0 ) basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( NumberOfAdditionalJets(), LessThanOrEqual(numberOfAdditionalJetsCut) ) );
196     else additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
197    
198     if( lowerHMassCut>0 && upperHMassCut> 0 ) basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( DiJetMass(), Within( lowerHMassCut, upperHMassCut ) ) );
199     else additionalVariables_.push_back( new DiJetMass );
200    
201     cutsPassed_.resize( basicCuts_.size() );
202 grimes 1.2
203 grimes 1.4 std::stringstream floatToStringConversion;
204     floatToStringConversion << "FullSelectionZee_higherCSVCut=" << higherCSVCut << "_lowerCSVCut=" << lowerCSVCut << "_lowerZMassCut=" << lowerZMassCut << "_upperZMassCut=" << upperZMassCut;
205     name_=floatToStringConversion.str();
206     }
207 grimes 1.2
208 grimes 1.4 trkupgradeanalysis::FullSelectionZee::FullSelectionZee( float higherCSVCut, float lowerCSVCut, float centralZMass )
209     {
210     using namespace trkupgradeanalysis::cuts;
211     using namespace trkupgradeanalysis::variables;
212     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( CandidateType(), Equals( VHbbCandidate::Zee, 0.01 ) ) );
213     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( DiLeptonMass(), Within( centralZMass-16, centralZMass+14 ) ) );
214     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( HiggsCandidatePt(), GreaterThan( 100 ) ) );
215     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( VectorBosonCandidatePt(), GreaterThan( 100 ) ) );
216     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( DeltaPhiVH(), GreaterThan( 2.9 ) ) );
217     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( HighestCSV(), GreaterThan( higherCSVCut ) ) );
218     basicCuts_.push_back( new trkupgradeanalysis::CutOnVariable( LowestCSV(), GreaterThan( lowerCSVCut ) ) );
219 grimes 1.1
220 grimes 1.4 cutsPassed_.resize( basicCuts_.size() );
221    
222     additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
223     additionalVariables_.push_back( new DiJetMass );
224    
225     std::stringstream floatToStringConversion;
226     floatToStringConversion << "FullSelectionZee_higherCSVCut=" << higherCSVCut << "_lowerCSVCut=" << lowerCSVCut << "_centralZMass=" << centralZMass;
227     name_=floatToStringConversion.str();
228     }
229 grimes 1.1
230 grimes 1.3 trkupgradeanalysis::SignalSelectionZee::SignalSelectionZee( float centralMass )
231 grimes 1.1 {
232     using namespace trkupgradeanalysis::cuts;
233     // These lines are from the code
234     // result.add( new SignalPreSelectionZee );
235     // result.add( new HPtCut( 100 ) );
236     // result.add( new VPtCut( 100 ) );
237     // result.add( new DoubleBTagCut( 0.5 ) );
238     // result.add( new SingleBTagCut( CSVT ) );
239     // result.add( new AdditionalJetsCut( 2 ) ); // < 2
240 grimes 1.3 // result.add( new DiJetMassMinCut( centralMass - 15. - 5. ) );
241     // result.add( new DiJetMassMaxCut( centralMass + 15. - 5. ) );
242 grimes 1.1 // These extra cuts are from the paper
243     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
244     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThanOrEqual( 105 ) ) );
245     // basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
246     // basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
247 grimes 1.4 // basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
248 grimes 1.1
249    
250     // This first set aren't listed in the paper as separate cuts, so they must come under
251     // the header "pre-selection".
252     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
253     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
254     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThanOrEqual( 105 ) ) );
255     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
256    
257     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
258     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
259     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
260     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
261 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
262     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
263 grimes 1.3 // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( GreaterThan( centralMass-20 ) ) );
264     // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( LessThanOrEqual( centralMass+10 ) ) );
265     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
266 grimes 1.1
267    
268     cutsPassed_.resize( basicCuts_.size() );
269    
270 grimes 1.2 std::stringstream floatToStringConversion;
271 grimes 1.3 floatToStringConversion << "SignalSelectionZee_centralMass=" << centralMass;
272 grimes 1.2 name_=floatToStringConversion.str();
273 grimes 1.1 }
274    
275 grimes 1.3 trkupgradeanalysis::SignalSelectionZee::SignalSelectionZee( float lowerMass, float upperMass )
276     {
277     using namespace trkupgradeanalysis::cuts;
278     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
279     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
280     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
281     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
282     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
283     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
284 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
285     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
286 grimes 1.3 basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
287    
288    
289     cutsPassed_.resize( basicCuts_.size() );
290    
291     std::stringstream floatToStringConversion;
292     floatToStringConversion << "SignalSelectionZee_massBetween" << lowerMass << "And" << upperMass;
293     name_=floatToStringConversion.str();
294     }
295 grimes 1.1
296    
297 grimes 1.3 trkupgradeanalysis::SignalSelectionZmumu::SignalSelectionZmumu( float centralMass )
298 grimes 1.1 {
299     using namespace trkupgradeanalysis::cuts;
300    
301     // The lines below are how the cuts are applied in the code
302     // result.add( new SignalPreSelectionZee ); // Eh? Zee? I assume this is a bug
303     // result.add( new HPtCut( 100 ) );
304     // result.add( new VPtCut( 100 ) );
305     // result.add( new DoubleBTagCut( 0.5 ) );
306     // result.add( new SingleBTagCut( CSVT ) );
307     // result.add( new AdditionalJetsCut( 2 ) ); // < 2
308 grimes 1.3 // result.add( new DiJetMassMinCut( centralMass - 15. - 5. ) );
309     // result.add( new DiJetMassMaxCut( centralMass + 15. - 5. ) );
310 grimes 1.1 // These lines I added from the cuts listed in the paper
311     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
312     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThanOrEqual( 105 ) ) );
313     // basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
314     // basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
315 grimes 1.4 // basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
316 grimes 1.1
317    
318     // This first set aren't listed in the paper as separate cuts, so they must come under
319     // the header "pre-selection".
320     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
321     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
322     // basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThanOrEqual( 105 ) ) );
323     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
324    
325     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
326     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
327     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
328     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
329 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
330     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
331 grimes 1.3 // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( GreaterThan( centralMass-20 ) ) );
332     // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( LessThanOrEqual( centralMass+10 ) ) );
333     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
334 grimes 1.1
335     cutsPassed_.resize( basicCuts_.size() );
336    
337 grimes 1.2 std::stringstream floatToStringConversion;
338 grimes 1.3 floatToStringConversion << "SignalSelectionZmumu_centralMass=" << centralMass;
339 grimes 1.2 name_=floatToStringConversion.str();
340 grimes 1.1 }
341    
342 grimes 1.3 trkupgradeanalysis::SignalSelectionZmumu::SignalSelectionZmumu( float lowerMass, float upperMass )
343     {
344     using namespace trkupgradeanalysis::cuts;
345     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
346     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
347     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
348     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
349     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
350     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
351 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
352     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
353 grimes 1.3 basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
354    
355     cutsPassed_.resize( basicCuts_.size() );
356    
357     std::stringstream floatToStringConversion;
358     floatToStringConversion << "SignalSelectionZmumu_massBetween" << lowerMass << "And" << upperMass;
359     name_=floatToStringConversion.str();
360     }
361 grimes 1.1
362 grimes 1.4 trkupgradeanalysis::InitialSignalSelectionZee::InitialSignalSelectionZee()
363     {
364     using namespace trkupgradeanalysis::cuts;
365     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
366     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
367     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
368     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
369     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
370    
371     cutsPassed_.resize( basicCuts_.size() );
372    
373     additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
374     additionalVariables_.push_back( new trkupgradeanalysis::variables::DiJetMass );
375     additionalVariables_.push_back( new trkupgradeanalysis::variables::HighestCSV );
376     additionalVariables_.push_back( new trkupgradeanalysis::variables::LowestCSV );
377    
378     name_="InitialSignalSelectionZee";
379     }
380    
381     trkupgradeanalysis::InitialSignalSelectionZmumu::InitialSignalSelectionZmumu()
382     {
383     using namespace trkupgradeanalysis::cuts;
384     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
385     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
386     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
387     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
388     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
389    
390     cutsPassed_.resize( basicCuts_.size() );
391    
392     additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
393     additionalVariables_.push_back( new trkupgradeanalysis::variables::DiJetMass );
394     additionalVariables_.push_back( new trkupgradeanalysis::variables::HighestCSV );
395     additionalVariables_.push_back( new trkupgradeanalysis::variables::LowestCSV );
396    
397     name_="InitialSignalSelectionZmumu";
398     }
399 grimes 1.1
400     trkupgradeanalysis::SignalSelectionZmumuWithoutAdditionalJetsCut::SignalSelectionZmumuWithoutAdditionalJetsCut( float mass )
401     {
402     using namespace trkupgradeanalysis::cuts;
403     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
404     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
405    
406     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
407     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
408     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
409     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
410 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
411 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( mass-20, mass+10 ) ) );
412    
413     cutsPassed_.resize( basicCuts_.size() );
414    
415 grimes 1.2 std::stringstream floatToStringConversion;
416     floatToStringConversion << "SignalSelectionZmumuWithoutAdditionalJetsCut_mass=" << mass;
417     name_=floatToStringConversion.str();
418 grimes 1.1 }
419    
420    
421 grimes 1.3 trkupgradeanalysis::SignalSelectionZmumuWithCSVCutsSwitched::SignalSelectionZmumuWithCSVCutsSwitched( float centralMass )
422     {
423     using namespace trkupgradeanalysis::cuts;
424     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
425     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
426     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
427     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
428     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
429     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
430 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
431     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
432 grimes 1.3 basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
433    
434     cutsPassed_.resize( basicCuts_.size() );
435    
436     std::stringstream floatToStringConversion;
437     floatToStringConversion << "SignalSelectionZmumuWithCSVCutsSwitched_centralMass=" << centralMass;
438     name_=floatToStringConversion.str();
439     }
440    
441     trkupgradeanalysis::SignalSelectionZmumuWithCSVCutsSwitched::SignalSelectionZmumuWithCSVCutsSwitched( float lowerMass, float upperMass )
442     {
443     using namespace trkupgradeanalysis::cuts;
444     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
445     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
446     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
447     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
448     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
449     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
450 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
451     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
452 grimes 1.3 basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
453    
454     cutsPassed_.resize( basicCuts_.size() );
455    
456     std::stringstream floatToStringConversion;
457     floatToStringConversion << "SignalSelectionZmumuWithCSVCutsSwitched_massBetween" << lowerMass << "And" << upperMass;
458     name_=floatToStringConversion.str();
459     }
460 grimes 1.1
461    
462    
463 grimes 1.4 trkupgradeanalysis::SignalSelectionStdGeom50PUZmumu::SignalSelectionStdGeom50PUZmumu( float centralMass )
464     {
465     using namespace trkupgradeanalysis::cuts;
466     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
467     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
468     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
469     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
470     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.717621, 2 ) );
471     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.395486, 2 ) );
472     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
473     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
474     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
475    
476     cutsPassed_.resize( basicCuts_.size() );
477    
478     std::stringstream floatToStringConversion;
479     floatToStringConversion << "SignalSelectionStdGeom50PUZmumu_centralMass=" << centralMass;
480     name_=floatToStringConversion.str();
481     }
482    
483     trkupgradeanalysis::SignalSelectionStdGeom50PUZmumu::SignalSelectionStdGeom50PUZmumu( float lowerMass, float upperMass )
484     {
485     using namespace trkupgradeanalysis::cuts;
486     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
487     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
488     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
489     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
490     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.717621, 2 ) );
491     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.395486, 2 ) );
492     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
493     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
494     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
495    
496     cutsPassed_.resize( basicCuts_.size() );
497    
498     std::stringstream floatToStringConversion;
499     floatToStringConversion << "SignalSelectionStdGeom50PUZmumu_massBetween" << lowerMass << "And" << upperMass;
500     name_=floatToStringConversion.str();
501     }
502    
503    
504     trkupgradeanalysis::SignalSelectionPhase150PUZmumu::SignalSelectionPhase150PUZmumu( float centralMass )
505     {
506     using namespace trkupgradeanalysis::cuts;
507     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
508     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
509     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
510     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
511     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.776769, 2 ) );
512     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.536104, 2 ) );
513     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
514     // basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
515     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
516    
517     cutsPassed_.resize( basicCuts_.size() );
518    
519     std::stringstream floatToStringConversion;
520     floatToStringConversion << "SignalSelectionPhase150PUZmumu_centralMass=" << centralMass;
521     name_=floatToStringConversion.str();
522     }
523    
524     trkupgradeanalysis::SignalSelectionPhase150PUZmumu::SignalSelectionPhase150PUZmumu( float lowerMass, float upperMass )
525     {
526     using namespace trkupgradeanalysis::cuts;
527     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
528     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
529     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
530     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
531     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.776769, 2 ) );
532     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.536104, 2 ) );
533     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
534     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
535     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
536    
537     cutsPassed_.resize( basicCuts_.size() );
538    
539     std::stringstream floatToStringConversion;
540     floatToStringConversion << "SignalSelectionPhase150PUZmumu_massBetween" << lowerMass << "And" << upperMass;
541     name_=floatToStringConversion.str();
542     }
543    
544    
545    
546     trkupgradeanalysis::SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut::SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut( float centralMass )
547     {
548     using namespace trkupgradeanalysis::cuts;
549     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
550     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
551     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
552     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
553     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.717621, 2 ) );
554     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.395486, 2 ) );
555     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
556     // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
557    
558     cutsPassed_.resize( basicCuts_.size() );
559    
560     additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
561     additionalVariables_.push_back( new trkupgradeanalysis::variables::DiJetMass );
562    
563     std::stringstream floatToStringConversion;
564     floatToStringConversion << "SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut_centralMass=" << centralMass;
565     name_=floatToStringConversion.str();
566     }
567    
568     trkupgradeanalysis::SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut::SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut( float lowerMass, float upperMass )
569     {
570     using namespace trkupgradeanalysis::cuts;
571     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
572     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
573     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
574     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
575     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.717621, 2 ) );
576     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.395486, 2 ) );
577     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
578     // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
579    
580     cutsPassed_.resize( basicCuts_.size() );
581    
582     additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
583     additionalVariables_.push_back( new trkupgradeanalysis::variables::DiJetMass );
584    
585     std::stringstream floatToStringConversion;
586     floatToStringConversion << "SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut_massBetween" << lowerMass << "And" << upperMass;
587     name_=floatToStringConversion.str();
588     }
589    
590    
591     trkupgradeanalysis::SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut::SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut( float centralMass )
592     {
593     using namespace trkupgradeanalysis::cuts;
594     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
595     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
596     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
597     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
598     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.776769, 2 ) );
599     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.536104, 2 ) );
600     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
601     // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( centralMass-20, centralMass+10 ) ) );
602    
603     cutsPassed_.resize( basicCuts_.size() );
604    
605     additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
606     additionalVariables_.push_back( new trkupgradeanalysis::variables::DiJetMass );
607    
608     std::stringstream floatToStringConversion;
609     floatToStringConversion << "SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut_centralMass=" << centralMass;
610     name_=floatToStringConversion.str();
611     }
612    
613     trkupgradeanalysis::SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut::SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut( float lowerMass, float upperMass )
614     {
615     using namespace trkupgradeanalysis::cuts;
616     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
617     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( Within( 75, 105 ) ) );
618     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
619     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
620     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.776769, 2 ) );
621     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.536104, 2 ) );
622     basicCuts_.push_back( new trkupgradeanalysis::DeltaPhiVHCut( GreaterThan( 2.9 ) ) );
623     // basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( Within( lowerMass, upperMass ) ) );
624    
625     cutsPassed_.resize( basicCuts_.size() );
626    
627     additionalVariables_.push_back( new trkupgradeanalysis::variables::NumberOfAdditionalJets );
628     additionalVariables_.push_back( new trkupgradeanalysis::variables::DiJetMass );
629    
630     std::stringstream floatToStringConversion;
631     floatToStringConversion << "SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut_massBetween" << lowerMass << "And" << upperMass;
632     name_=floatToStringConversion.str();
633     }
634    
635    
636 grimes 1.1 trkupgradeanalysis::SignalSelectionWen::SignalSelectionWen( float mass )
637     {
638     using namespace trkupgradeanalysis::cuts;
639     // result.add( new SignalPreSelectionWen );
640     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wen ) );
641     // result.add( new HPtCut( 165 ) );
642     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 165 ) ) );
643     // result.add( new VPtCut( 160 ) );
644     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 160 ) ) );
645     // result.add( new DoubleBTagCut( 0.5 ) );
646     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
647     // result.add( new SingleBTagCut( CSVT ) );
648     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
649     // result.add( new AdditionalJetsCut( 1 ) ); // < 1
650 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 1 ) ) );
651 grimes 1.1 // result.add( new AdditionalLeptonsCut( 1 ) ); // < 1
652     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalLeptons( LessThan( 1 ) ) );
653     // result.add( new METCut( 30 ) );
654     basicCuts_.push_back( new trkupgradeanalysis::PtOfMETN( 0, GreaterThan( 30 ) ) );
655     // result.add( new DiJetMassMinCut( mass - 15. ) );
656     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( GreaterThan( mass-15 ) ) );
657     // result.add( new DiJetMassMaxCut( mass + 15. ) );
658     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( LessThanOrEqual( mass+15 ) ) );
659     cutsPassed_.resize( basicCuts_.size() );
660    
661 grimes 1.2 std::stringstream floatToStringConversion;
662     floatToStringConversion << "SignalSelectionWen_mass=" << mass;
663     name_=floatToStringConversion.str();
664 grimes 1.1 }
665    
666    
667    
668    
669     trkupgradeanalysis::SignalSelectionWmun::SignalSelectionWmun( float mass )
670     {
671     using namespace trkupgradeanalysis::cuts;
672     // result.add( new SignalPreSelectionWmun );
673     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wmun ) );
674     // result.add( new HPtCut( 165 ) );
675     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 165 ) ) );
676     // result.add( new VPtCut( 160 ) );
677     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 160 ) ) );
678     // result.add( new DoubleBTagCut( 0.5 ) );
679     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAllJetsGreaterThan( 0.5, 2 ) );
680     // result.add( new SingleBTagCut( CSVT ) );
681     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
682     // result.add( new AdditionalJetsCut( 1 ) ); // < 1
683 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 1 ) ) );
684 grimes 1.1 // result.add( new AdditionalLeptonsCut( 1 ) ); // < 1
685     basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalLeptons( LessThan( 1 ) ) );
686     // result.add( new DiJetMassMinCut( mass - 15. ) );
687     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( GreaterThan( mass-15 ) ) );
688     // result.add( new DiJetMassMaxCut( mass + 15. ) );
689     basicCuts_.push_back( new trkupgradeanalysis::MassOfHiggsBoson( LessThanOrEqual( mass+15 ) ) );
690     cutsPassed_.resize( basicCuts_.size() );
691    
692 grimes 1.2 std::stringstream floatToStringConversion;
693     floatToStringConversion << "SignalSelectionWmun_mass=" << mass;
694     name_=floatToStringConversion.str();
695 grimes 1.1 }
696    
697    
698    
699    
700     trkupgradeanalysis::VlightRegionHWmun::VlightRegionHWmun()
701     {
702     using namespace trkupgradeanalysis::cuts;
703     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wmun ) );
704     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
705     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
706     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
707     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 30 ) ) );
708     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 30 ) ) );
709 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
710 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::METSigma( GreaterThan( 2.5 ) ) );
711     cutsPassed_.resize( basicCuts_.size() );
712    
713 grimes 1.2 name_="VlightRegionHWmun";
714 grimes 1.1 }
715    
716     trkupgradeanalysis::VlightRegionHWen::VlightRegionHWen()
717     {
718     using namespace trkupgradeanalysis::cuts;
719     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wen ) );
720     basicCuts_.push_back( new trkupgradeanalysis::PtOfElectronN( 0, GreaterThan( 30 ) ) );
721     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
722     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
723     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
724     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 150 ) ) );
725     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 150 ) ) );
726     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 150 ) ) );
727 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
728 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::METSigma( GreaterThan( 2.5 ) ) );
729     cutsPassed_.resize( basicCuts_.size() );
730    
731 grimes 1.2 name_="VlightRegionHWen";
732 grimes 1.1 }
733    
734     trkupgradeanalysis::VlightRegionHZmumu::VlightRegionHZmumu()
735     {
736     using namespace trkupgradeanalysis::cuts;
737     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
738     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
739     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
740     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
741     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
742     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
743 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
744 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
745     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThan( 105 ) ) );
746     cutsPassed_.resize( basicCuts_.size() );
747    
748 grimes 1.2 name_="VlightRegionHZmumu";
749 grimes 1.1 }
750    
751     trkupgradeanalysis::VlightRegionHZee::VlightRegionHZee()
752     {
753     using namespace trkupgradeanalysis::cuts;
754     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
755     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
756     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
757     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
758     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
759     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
760 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
761 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
762     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThan( 105 ) ) );
763     cutsPassed_.resize( basicCuts_.size() );
764    
765 grimes 1.2 name_="VlightRegionHZee";
766 grimes 1.1 }
767    
768     trkupgradeanalysis::TTbarRegionHWmun::TTbarRegionHWmun()
769     {
770     using namespace trkupgradeanalysis::cuts;
771     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wmun ) );
772     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
773     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
774     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
775     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
776     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
777     // require that at least one of the first two jets (jets 0 and 1) b-tag is greater than 0.898
778     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
779 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( GreaterThan( 1 ) ) );
780 grimes 1.1 cutsPassed_.resize( basicCuts_.size() );
781    
782 grimes 1.2 name_="TTbarRegionHWmun";
783 grimes 1.1 }
784    
785     trkupgradeanalysis::TTbarRegionHWen::TTbarRegionHWen()
786     {
787     using namespace trkupgradeanalysis::cuts;
788     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wen ) );
789     basicCuts_.push_back( new trkupgradeanalysis::PtOfElectronN( 0, GreaterThan( 30 ) ) );
790     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
791     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
792     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
793     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( GreaterThan( 100 ) ) );
794     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( GreaterThan( 100 ) ) );
795     // require that at least one of the first two jets (jets 0 and 1) b-tag is greater than 0.898
796     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
797 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( GreaterThan( 1 ) ) );
798 grimes 1.1 cutsPassed_.resize( basicCuts_.size() );
799    
800 grimes 1.2 name_="TTbarRegionHWen";
801 grimes 1.1 }
802    
803     trkupgradeanalysis::TTbarRegionHZmumu::TTbarRegionHZmumu()
804     {
805     using namespace trkupgradeanalysis::cuts;
806     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
807     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
808     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
809     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
810     basicCuts_.push_back( new trkupgradeanalysis::NumberOfMETObjects( GreaterThan( 0 ) ) );
811     // require that the pT of the 0th (i.e. the first) MET object is greater than 50 GeV
812     basicCuts_.push_back( new trkupgradeanalysis::PtOfMETN( 0, GreaterThan( 50 ) ) );
813     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 120 ) ) );
814     cutsPassed_.resize( basicCuts_.size() );
815    
816 grimes 1.2 name_="TTbarRegionHZmumu";
817 grimes 1.1 }
818    
819     trkupgradeanalysis::TTbarRegionHZee::TTbarRegionHZee()
820     {
821     using namespace trkupgradeanalysis::cuts;
822     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
823     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
824     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
825     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
826     basicCuts_.push_back( new trkupgradeanalysis::NumberOfMETObjects( GreaterThan( 0 ) ) );
827     // require that the pT of the 0th (i.e. the first) MET object is greater than 50 GeV
828     basicCuts_.push_back( new trkupgradeanalysis::PtOfMETN( 0, GreaterThan( 50 ) ) );
829     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 120 ) ) );
830     cutsPassed_.resize( basicCuts_.size() );
831    
832 grimes 1.2 name_="TTbarRegionHZee";
833 grimes 1.1 }
834    
835     trkupgradeanalysis::VbbRegionHWmun::VbbRegionHWmun()
836     {
837     using namespace trkupgradeanalysis::cuts;
838     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wmun ) );
839     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
840     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
841     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
842     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( LessThan( 150 ) ) );
843     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( LessThan( 150 ) ) );
844     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( LessThan( 150 ) ) );
845     // Add V.Mt(VHbbCandidate::Wmun) < 120
846     // Add V.Mt(VHbbCandidate::Wmun) > 40
847     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
848 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( Equals( 0 ) ) );
849 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::METSigma( GreaterThan( 2.5 ) ) );
850     cutsPassed_.resize( basicCuts_.size() );
851    
852 grimes 1.2 name_="VbbRegionHWmun";
853 grimes 1.1 }
854    
855     trkupgradeanalysis::VbbRegionHWen::VbbRegionHWen()
856     {
857     using namespace trkupgradeanalysis::cuts;
858     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Wen ) );
859     basicCuts_.push_back( new trkupgradeanalysis::PtOfElectronN( 0, GreaterThan( 30 ) ) );
860     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
861     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 30 ) ) );
862     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 30 ) ) );
863     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( LessThan( 150 ) ) );
864     basicCuts_.push_back( new trkupgradeanalysis::PtOfHiggs( LessThan( 150 ) ) );
865     basicCuts_.push_back( new trkupgradeanalysis::PtOfVectorBoson( LessThan( 150 ) ) );
866     // Add V.Mt(VHbbCandidate::Wmun) < 120
867     // Add V.Mt(VHbbCandidate::Wmun) > 40
868     // require that at least one of the first two jets (jets 0 and 1) b-tag is greater than 0.898
869     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
870 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( Equals( 0 ) ) );
871 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::METSigma( GreaterThan( 2.5 ) ) );
872     cutsPassed_.resize( basicCuts_.size() );
873    
874 grimes 1.2 name_="VbbRegionHWen";
875 grimes 1.1 }
876    
877     trkupgradeanalysis::VbbRegionHZmumu::VbbRegionHZmumu()
878     {
879     using namespace trkupgradeanalysis::cuts;
880     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zmumu ) );
881     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
882     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
883     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
884     // Add ( H.p4.M() < 90 || H.p4.M() > 145)
885     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
886     // Add TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.9
887 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
888 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
889     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThan( 105 ) ) );
890     cutsPassed_.resize( basicCuts_.size() );
891    
892 grimes 1.2 name_="VbbRegionHZmumu";
893 grimes 1.1 }
894    
895     trkupgradeanalysis::VbbRegionHZee::VbbRegionHZee()
896     {
897     using namespace trkupgradeanalysis::cuts;
898     basicCuts_.push_back( new trkupgradeanalysis::CandidateTypeEquals( VHbbCandidate::Zee ) );
899     basicCuts_.push_back( new trkupgradeanalysis::NumberOfJets( GreaterThanOrEqual( 2 ) ) );
900     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 0, GreaterThan( 20 ) ) );
901     basicCuts_.push_back( new trkupgradeanalysis::PtOfJetN( 1, GreaterThan( 20 ) ) );
902     // Add ( H.p4.M() < 90 || H.p4.M() > 145)
903     basicCuts_.push_back( new trkupgradeanalysis::CSVOfAnyJetGreaterThan( 0.898, 2 ) );
904     // Add TMath::Abs( Geom::deltaPhi(H.p4.Phi(), V.p4.Phi()) ) > 2.9
905 grimes 1.4 basicCuts_.push_back( new trkupgradeanalysis::NumberOfAdditionalJetsCut( LessThan( 2 ) ) );
906 grimes 1.1 basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( GreaterThan( 75 ) ) );
907     basicCuts_.push_back( new trkupgradeanalysis::MassOfVectorBoson( LessThan( 105 ) ) );
908     cutsPassed_.resize( basicCuts_.size() );
909    
910 grimes 1.2 name_="VbbRegionHZee";
911 grimes 1.1 }