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

# User Rev Content
1 grimes 1.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 grimes 1.2 CandidateTypeEquals( const std::vector<VHbbCandidate::CandidateType>& candidateTypes );
22 grimes 1.1 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 grimes 1.2 std::vector<VHbbCandidate::CandidateType> requiredCandidateTypes_;
39 grimes 1.1 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 grimes 1.2 NumberOfAdditionalJets( const trkupgradeanalysis::cuts::ICutType& cut, bool applyCleaning_=true );
143 grimes 1.1 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 grimes 1.2 bool applyCleaning_;
163 grimes 1.1 };
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"