ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/VHbbAnalysisCode/interface/VHbbCandidateCuts.h
Revision: 1.3
Committed: Wed Aug 15 22:37:47 2012 UTC (12 years, 8 months ago) by grimes
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +53 -6 lines
Log Message:
Long overdue commit with several new files

File Contents

# Content
1 #ifndef trkupgradeanalysis_VHbbCandidateCuts_h
2 #define trkupgradeanalysis_VHbbCandidateCuts_h
3
4 #include <sstream>
5 #include <memory>
6
7 #include "TrkUpgradeAnalysis/VHbb/interface/IBasicVHbbCandidateCut.h"
8 #include "TrkUpgradeAnalysis/VHbb/interface/IHistogramVariable.h"
9 #include "TrkUpgradeAnalysis/VHbb/interface/CutTypes.h"
10
11 #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbCandidate.h"
12
13 // Forward declarations
14 namespace trkupgradeanalysis
15 {
16 namespace variables
17 {
18 class VHbbCandidateVariable;
19 }
20 }
21
22
23 namespace trkupgradeanalysis
24 {
25 /** @brief Cut that takes a HistogramVariable and a CutType to create a cut
26 *
27 * @author Mark Grimes (mark.grimes@bristol.ac.uk)
28 * @date 07/Jul/2012
29 */
30 class CutOnVariable : public trkupgradeanalysis::IBasicVHbbCandidateCut
31 {
32 public:
33 CutOnVariable( const trkupgradeanalysis::variables::VHbbCandidateVariable& variable, const trkupgradeanalysis::cuts::ICutType& cut );
34 virtual ~CutOnVariable();
35
36 // The methods from BasicCut
37 virtual std::string name() const;
38 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
39
40 // The method from BasicVHbbCandidateCut
41 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
42 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
43 private:
44 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
45 std::auto_ptr<trkupgradeanalysis::variables::VHbbCandidateVariable> pVHbbCandidateVariable_;
46 };
47
48 class CandidateTypeEquals : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
49 {
50 public:
51 CandidateTypeEquals( VHbbCandidate::CandidateType candidateType );
52 CandidateTypeEquals( const std::vector<VHbbCandidate::CandidateType>& candidateTypes );
53 virtual ~CandidateTypeEquals();
54
55 // The methods from BasicCut
56 virtual std::string name() const;
57 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
58
59 // The method from BasicVHbbCandidateCut
60 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
61 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
62
63 // The methods from HistogramVariable I need to implement
64 std::string variableName() const;
65 double histogrammableValue() const;
66 size_t suggestedNumberOfBins() const;
67 double suggestedLowerEdge() const;
68 double suggestedUpperEdge() const;
69 private:
70 std::vector<VHbbCandidate::CandidateType> requiredCandidateTypes_;
71 mutable VHbbCandidate::CandidateType lastValue_;
72 };
73
74 class NumberOfJets : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
75 {
76 public:
77 NumberOfJets( const trkupgradeanalysis::cuts::ICutType& cut );
78 virtual ~NumberOfJets();
79
80 // The methods from BasicCut
81 virtual std::string name() const;
82 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
83
84 // The method from BasicVHbbCandidateCut
85 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
86 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
87
88 // The methods from HistogramVariable I need to implement
89 std::string variableName() const;
90 double histogrammableValue() const;
91 size_t suggestedNumberOfBins() const;
92 double suggestedLowerEdge() const;
93 double suggestedUpperEdge() const;
94 private:
95 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
96 mutable unsigned int lastValue_;
97 };
98
99 class PtOfJetN : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
100 {
101 public:
102 PtOfJetN( unsigned int jetNumber, const trkupgradeanalysis::cuts::ICutType& cut );
103 virtual ~PtOfJetN();
104
105 // The methods from BasicCut
106 virtual std::string name() const;
107 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
108
109 // The method from BasicVHbbCandidateCut
110 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
111 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
112
113 // The methods from HistogramVariable I need to implement
114 std::string variableName() const;
115 double histogrammableValue() const;
116 size_t suggestedNumberOfBins() const;
117 double suggestedLowerEdge() const;
118 double suggestedUpperEdge() const;
119 private:
120 unsigned int jetNumber_;
121 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
122 mutable double lastValue_;
123 };
124
125 class PtOfHiggs : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
126 {
127 public:
128 PtOfHiggs( const trkupgradeanalysis::cuts::ICutType& cut );
129 virtual ~PtOfHiggs();
130
131 // The methods from BasicCut
132 virtual std::string name() const;
133 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
134
135 // The method from BasicVHbbCandidateCut
136 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
137 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
138
139 // The methods from HistogramVariable I need to implement
140 std::string variableName() const;
141 double histogrammableValue() const;
142 size_t suggestedNumberOfBins() const;
143 double suggestedLowerEdge() const;
144 double suggestedUpperEdge() const;
145 private:
146 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
147 mutable double lastValue_;
148 };
149
150 class PtOfVectorBoson : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
151 {
152 public:
153 PtOfVectorBoson( const trkupgradeanalysis::cuts::ICutType& cut );
154 virtual ~PtOfVectorBoson();
155
156 // The methods from BasicCut
157 virtual std::string name() const;
158 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
159
160 // The method from BasicVHbbCandidateCut
161 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
162 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
163
164 // The methods from HistogramVariable I need to implement
165 std::string variableName() const;
166 double histogrammableValue() const;
167 size_t suggestedNumberOfBins() const;
168 double suggestedLowerEdge() const;
169 double suggestedUpperEdge() const;
170 private:
171 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
172 mutable double lastValue_;
173 };
174
175 class NumberOfAdditionalJetsCut : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
176 {
177 public:
178 NumberOfAdditionalJetsCut( const trkupgradeanalysis::cuts::ICutType& cut, bool applyCleaning=true );
179 virtual ~NumberOfAdditionalJetsCut();
180
181 // The methods from BasicCut
182 virtual std::string name() const;
183 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
184
185 // The method from BasicVHbbCandidateCut
186 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
187 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
188
189 // The methods from HistogramVariable I need to implement
190 std::string variableName() const;
191 double histogrammableValue() const;
192 size_t suggestedNumberOfBins() const;
193 double suggestedLowerEdge() const;
194 double suggestedUpperEdge() const;
195 private:
196 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
197 mutable unsigned int lastValue_;
198 bool jetId( const VHbbEvent::SimpleJet& jet ) const;
199 bool applyCleaning_;
200 };
201
202 class NumberOfAdditionalLeptons : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
203 {
204 public:
205 NumberOfAdditionalLeptons( const trkupgradeanalysis::cuts::ICutType& cut );
206 virtual ~NumberOfAdditionalLeptons();
207
208 // The methods from BasicCut
209 virtual std::string name() const;
210 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
211
212 // The method from BasicVHbbCandidateCut
213 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
214 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
215
216 // The methods from HistogramVariable I need to implement
217 std::string variableName() const;
218 double histogrammableValue() const;
219 size_t suggestedNumberOfBins() const;
220 double suggestedLowerEdge() const;
221 double suggestedUpperEdge() const;
222 private:
223 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
224 mutable unsigned int lastValue_;
225 };
226
227 class METSigma : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
228 {
229 public:
230 METSigma( const trkupgradeanalysis::cuts::ICutType& cut );
231 virtual ~METSigma();
232
233 // The methods from BasicCut
234 virtual std::string name() const;
235 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
236
237 // The method from BasicVHbbCandidateCut
238 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
239 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
240
241 // The methods from HistogramVariable I need to implement
242 std::string variableName() const;
243 double histogrammableValue() const;
244 size_t suggestedNumberOfBins() const;
245 double suggestedLowerEdge() const;
246 double suggestedUpperEdge() const;
247 private:
248 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
249 mutable double lastValue_;
250 };
251
252 class PtOfElectronN : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
253 {
254 public:
255 PtOfElectronN( unsigned int electronNumber, const trkupgradeanalysis::cuts::ICutType& cut );
256 virtual ~PtOfElectronN();
257
258 // The methods from BasicCut
259 virtual std::string name() const;
260 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
261
262 // The method from BasicVHbbCandidateCut
263 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
264 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
265
266 // The methods from HistogramVariable I need to implement
267 std::string variableName() const;
268 double histogrammableValue() const;
269 size_t suggestedNumberOfBins() const;
270 double suggestedLowerEdge() const;
271 double suggestedUpperEdge() const;
272 private:
273 unsigned int electronNumber_;
274 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
275 mutable double lastValue_;
276 };
277
278 class MassOfVectorBoson : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
279 {
280 public:
281 MassOfVectorBoson( const trkupgradeanalysis::cuts::ICutType& cut );
282 virtual ~MassOfVectorBoson();
283
284 // The methods from BasicCut
285 virtual std::string name() const;
286 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
287
288 // The method from BasicVHbbCandidateCut
289 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
290 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
291
292 // The methods from HistogramVariable I need to implement
293 std::string variableName() const;
294 double histogrammableValue() const;
295 size_t suggestedNumberOfBins() const;
296 double suggestedLowerEdge() const;
297 double suggestedUpperEdge() const;
298 private:
299 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
300 mutable double lastValue_;
301 };
302
303 class MassOfHiggsBoson : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
304 {
305 public:
306 MassOfHiggsBoson( const trkupgradeanalysis::cuts::ICutType& cut );
307 virtual ~MassOfHiggsBoson();
308
309 // The methods from BasicCut
310 virtual std::string name() const;
311 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
312
313 // The method from BasicVHbbCandidateCut
314 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
315 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
316
317 // The methods from HistogramVariable I need to implement
318 std::string variableName() const;
319 double histogrammableValue() const;
320 size_t suggestedNumberOfBins() const;
321 double suggestedLowerEdge() const;
322 double suggestedUpperEdge() const;
323 private:
324 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
325 mutable double lastValue_;
326 };
327
328 /** @brief Requires that at least one of the jets has a CSV b-tag value greater than the cut given.
329 *
330 * The value that is queried is
331 * vhbbCandidate.H.jets[jetNumber].csv
332 *
333 * Note that histogrammableValue() returns the highest CSV of the jets checked.
334 *
335 * @author Mark Grimes (mark.grimes@bristol.ac.uk)
336 * @date 06/Dec/2011
337 */
338 class CSVOfAnyJetGreaterThan : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
339 {
340 public:
341 /** @brief Constructor that takes the CSV value and optionally a limit on how many jets to check.
342 *
343 * The number of jets to check can be set with "maximumJetNumber". E.g. if this is set to 1 then
344 * only the first jet is checked, if set to 2 the first two jets are checked etcetera. If it is set
345 * to 0 (default) then all jets are checked.
346 */
347 CSVOfAnyJetGreaterThan( double csvValue, unsigned int maximumJetNumber=0 );
348 virtual ~CSVOfAnyJetGreaterThan();
349
350 // The methods from BasicCut
351 virtual std::string name() const;
352 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
353
354 // The method from BasicVHbbCandidateCut
355 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
356 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
357
358 // The methods from HistogramVariable I need to implement
359 std::string variableName() const;
360 double histogrammableValue() const; ///< @brief Returns the highest CSV of the jets checked
361 size_t suggestedNumberOfBins() const;
362 double suggestedLowerEdge() const;
363 double suggestedUpperEdge() const;
364 private:
365 unsigned int maximumJetNumber_;
366 double requiredCSV_;
367 mutable double lastValue_;
368 };
369
370 /** @brief Requires that all of the jets have a CSV b-tag value greater than the cut given.
371 *
372 * The value that is queried is
373 * vhbbCandidate.H.jets[jetNumber].csv
374 *
375 * Note that histogrammableValue() returns the lowest CSV of the jets checked.
376 *
377 * @author Mark Grimes (mark.grimes@bristol.ac.uk)
378 * @date 06/Dec/2011
379 */
380 class CSVOfAllJetsGreaterThan : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
381 {
382 public:
383 /** @brief Constructor that takes the CSV value and optionally a limit on how many jets to check.
384 *
385 * The number of jets to check can be set with "maximumJetNumber". E.g. if this is set to 1 then
386 * only the first jet is checked, if set to 2 the first two jets are checked etcetera. If it is set
387 * to 0 (default) then all jets are checked.
388 */
389 CSVOfAllJetsGreaterThan( double csvValue, unsigned int maximumJetNumber=0 );
390 virtual ~CSVOfAllJetsGreaterThan();
391
392 // The methods from BasicCut
393 virtual std::string name() const;
394 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
395
396 // The method from BasicVHbbCandidateCut
397 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
398 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
399
400 // The methods from HistogramVariable I need to implement
401 std::string variableName() const;
402 double histogrammableValue() const; ///< @brief Returns the lowest CSV of the jets checked
403 size_t suggestedNumberOfBins() const;
404 double suggestedLowerEdge() const;
405 double suggestedUpperEdge() const;
406 private:
407 unsigned int maximumJetNumber_;
408 double requiredCSV_;
409 mutable double lastValue_;
410 };
411
412 /** @brief Requires that there are more MET info objects than the given cut
413 *
414 * Note that this has nothing to do with the amount of missing transverse energy, just
415 * that there is the given number of objects. More of a software cut than a physics one.
416 * To be honest I think the cut is only in the original framework to stop a segmentation
417 * fault when the amount of MET is checked.
418 *
419 * @author Mark Grimes (mark.grimes@bristol.ac.uk)
420 * @date 06/Dec/2011
421 */
422 class NumberOfMETObjects : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
423 {
424 public:
425 NumberOfMETObjects( const trkupgradeanalysis::cuts::ICutType& cut );
426 virtual ~NumberOfMETObjects();
427
428 // The methods from BasicCut
429 virtual std::string name() const;
430 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
431
432 // The method from BasicVHbbCandidateCut
433 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
434 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
435
436 // The methods from HistogramVariable I need to implement
437 std::string variableName() const;
438 double histogrammableValue() const;
439 size_t suggestedNumberOfBins() const;
440 double suggestedLowerEdge() const;
441 double suggestedUpperEdge() const;
442 private:
443 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
444 mutable unsigned int lastValue_;
445 };
446
447 /** @brief Checks the MET object requested to see if the pT is greater than the given cut.
448 *
449 * MET objects are numbered from 0. Defaults to checking the first MET object (number 0) if
450 * no object is specified in the constructor.
451 *
452 * @author Mark Grimes (mark.grimes@bristol.ac.uk)
453 * @date 06/Dec/2011
454 */
455 class PtOfMETN : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
456 {
457 public:
458 PtOfMETN( unsigned int metNumber, const trkupgradeanalysis::cuts::ICutType& cut );
459 virtual ~PtOfMETN();
460
461 // The methods from BasicCut
462 virtual std::string name() const;
463 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
464
465 // The method from BasicVHbbCandidateCut
466 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
467 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
468
469 // The methods from HistogramVariable I need to implement
470 std::string variableName() const;
471 double histogrammableValue() const;
472 size_t suggestedNumberOfBins() const;
473 double suggestedLowerEdge() const;
474 double suggestedUpperEdge() const;
475 private:
476 unsigned int metNumber_;
477 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
478 mutable double lastValue_;
479 };
480
481 class DeltaPhiVHCut : public trkupgradeanalysis::IBasicVHbbCandidateCut, public trkupgradeanalysis::IHistogramVariable
482 {
483 public:
484 DeltaPhiVHCut( const trkupgradeanalysis::cuts::ICutType& cut );
485 virtual ~DeltaPhiVHCut();
486
487 // The methods from BasicCut
488 virtual std::string name() const;
489 virtual const trkupgradeanalysis::IHistogramVariable& cutVariable() const;
490
491 // The method from BasicVHbbCandidateCut
492 virtual bool applyCut( const VHbbCandidate& vhbbCandidate ) const;
493 virtual bool applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const;
494
495 // The methods from HistogramVariable I need to implement
496 std::string variableName() const;
497 double histogrammableValue() const;
498 size_t suggestedNumberOfBins() const;
499 double suggestedLowerEdge() const;
500 double suggestedUpperEdge() const;
501 private:
502 std::auto_ptr<trkupgradeanalysis::cuts::ICutType> pCut_;
503 mutable double lastValue_;
504 };
505
506
507 } // end of namespace trkupgradeanalysis
508
509
510
511 #endif // end of "#ifndef trkupgradeanalysis_VHbbCandidateCuts_h"