ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/VHbbAnalysisCode/interface/VHbbCandidateCuts.h
Revision: 1.2
Committed: Mon Feb 27 11:01:07 2012 UTC (13 years, 2 months ago) by grimes
Content type: text/plain
Branch: MAIN
Changes since 1.1: +4 -2 lines
Log Message:
Added a pass-through cut type
Added a number of primary vertices plot to MCInfoPlotSet (even though not MC)
Restructured the "name" method of VHbbCandidateCutSets
Added sliding dijet mass cut

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