ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/VHbbAnalysisCode/interface/VHbbCandidateCutSets.h
Revision: 1.4
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.3: +178 -0 lines
Log Message:
Long overdue commit with several new files

File Contents

# User Rev Content
1 grimes 1.1 #ifndef trkupgradeanalysis_VHbbCandidateCutSets_h
2     #define trkupgradeanalysis_VHbbCandidateCutSets_h
3    
4 grimes 1.4 #include <vector>
5    
6 grimes 1.1 #include "TrkUpgradeAnalysis/VHbb/interface/ICutSet.h"
7     #include "TrkUpgradeAnalysis/VHbb/interface/IBasicVHbbCandidateCut.h"
8    
9     // Forward declarations
10     class VHbbCandidate;
11 grimes 1.4 namespace trkupgradeanalysis
12     {
13     namespace variables
14     {
15     class VHbbCandidateVariable;
16     }
17     }
18    
19    
20 grimes 1.1
21     namespace trkupgradeanalysis
22     {
23     class VHbbCandidateCutSet : public trkupgradeanalysis::ICutSet
24     {
25     public:
26     VHbbCandidateCutSet();
27     virtual ~VHbbCandidateCutSet();
28    
29     // These are methods from CutSet that are being implemented. Note that "name" is not being
30     // implemented so this class is still abstract.
31     size_t numberOfCuts() const;
32     bool allCutsPassed() const;
33     bool cutNPassed( size_t cutNumber ) const;
34     bool everythingOtherThanCutNPassed( size_t cutNumber ) const;
35     const trkupgradeanalysis::IBasicCut& cutAt( size_t a ) const;
36    
37     // Add a method to apply cuts on a VHbbCandidate
38     virtual bool applyCuts( const VHbbCandidate& vhbbCandidate );
39 grimes 1.4 // Add a method so that I'm able to use data previously stored in an NTuple
40     virtual bool applyCuts( const trkupgradeanalysis::tools::NTupleRow& ntupleRow );
41 grimes 1.2 virtual std::string name() const;
42 grimes 1.4
43     // Add some methods to access the additional variables
44     size_t numberOfAdditionalVariables();
45     trkupgradeanalysis::IHistogramVariable& additionalVariableAt( size_t position );
46 grimes 1.1 protected:
47     std::vector<trkupgradeanalysis::IBasicVHbbCandidateCut*> basicCuts_;
48 grimes 1.4
49     /// @brief Other variables that are interesting to look at, but aren't cut on
50     std::vector<trkupgradeanalysis::variables::VHbbCandidateVariable*> additionalVariables_;
51    
52 grimes 1.1 bool allCutsPassed_;
53     std::vector<bool> cutsPassed_;
54 grimes 1.2 std::string name_;
55 grimes 1.1 };
56    
57 grimes 1.4 /** @brief Doesn't actually apply any cuts, but uses the class to create an NTuple of all the cut variables
58     *
59     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
60     * @date 06/Jul/2012
61     */
62     class AllVariables : public VHbbCandidateCutSet
63     {
64     public:
65     AllVariables();
66     };
67    
68     /** @brief Full selection with cut values taken as constructor arguments
69     *
70     *
71     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
72     * @date 08/Jul/2012
73     */
74     class ParameterisedZmumu : public VHbbCandidateCutSet
75     {
76     public:
77     ParameterisedZmumu( float higherCSVCut, float lowerCSVCut, float lowerZMassCut, float upperZMassCut, float lowerHMassCut, float upperHMassCut, bool requireTrigger=false, bool requireDoubleTrigger=false, int numberOfAdditionalJetsCut=-1 );
78     };
79    
80     /** @brief Exactly the same as ParameterisedZmumu but provides some default values.
81     *
82     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
83     * @date 08/Jul/2012
84     */
85     class FullSelectionZmumu : public ParameterisedZmumu
86     {
87     public:
88     FullSelectionZmumu( float higherCSVCut, float lowerCSVCut, float centralZMass, bool requireTrigger=false, bool requireDoubleTrigger=false );
89     };
90    
91     /** @brief Full selection with cut values taken as constructor arguments
92     *
93     *
94     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
95     * @date 18/Jul/2012
96     */
97     class ParameterisedZee : public VHbbCandidateCutSet
98     {
99     public:
100     ParameterisedZee( float higherCSVCut, float lowerCSVCut, float lowerZMassCut, float upperZMassCut, float lowerHMassCut, float upperHMassCut, int numberOfAdditionalJetsCut=-1 );
101     };
102    
103     /** @brief Full selection with cut values taken as constructor arguments
104     *
105     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
106     * @date 08/Jul/2012
107     */
108     class FullSelectionZee : public VHbbCandidateCutSet
109     {
110     public:
111     FullSelectionZee( float higherCSVCut, float lowerCSVCut, float centralZMass );
112     };
113    
114 grimes 1.1 class SignalSelectionZee : public VHbbCandidateCutSet
115     {
116     public:
117 grimes 1.3 SignalSelectionZee( float centralMass );
118     SignalSelectionZee( float lowerMass, float upperMass );
119 grimes 1.1 };
120    
121     class SignalSelectionZmumu : public VHbbCandidateCutSet
122     {
123     public:
124 grimes 1.3 SignalSelectionZmumu( float centralMass );
125     SignalSelectionZmumu( float lowerMass, float upperMass );
126 grimes 1.1 };
127    
128    
129     class SignalSelectionWen : public VHbbCandidateCutSet
130     {
131     public:
132     SignalSelectionWen( float mass );
133     };
134    
135     class SignalSelectionWmun : public VHbbCandidateCutSet
136     {
137     public:
138     SignalSelectionWmun( float mass );
139     };
140    
141 grimes 1.4 /** @brief Most of the cuts in SignalSelectionZmumu but a few of the cuts have been moved to additional variables.
142     *
143     * The following cuts have been changed to additional variables, i.e. they are not actually cut on
144     * but are recorded for study:
145     * * di-jet mass cut
146     * * higher CSV cut
147     * * lower CSV cut
148     * * number of additional jets
149     *
150     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
151     * @date 06/Jun/2012
152     */
153     class InitialSignalSelectionZmumu : public VHbbCandidateCutSet
154     {
155     public:
156     InitialSignalSelectionZmumu();
157     };
158    
159     /** @brief Most of the cuts in SignalSelectionZee but a few of the cuts have been moved to additional variables.
160     *
161     * The following cuts have been changed to additional variables, i.e. they are not actually cut on
162     * but are recorded for study:
163     * * di-jet mass cut
164     * * higher CSV cut
165     * * lower CSV cut
166     * * number of additional jets
167     *
168     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
169     * @date 06/Jun/2012
170     */
171     class InitialSignalSelectionZee : public VHbbCandidateCutSet
172     {
173     public:
174     InitialSignalSelectionZee();
175     };
176    
177 grimes 1.1 /** @brief All of the cuts in SignalSelectionZmumu except for the additonal jets less than 2 cut.
178     *
179     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
180     * @date 30/Jan/2012
181     */
182     class SignalSelectionZmumuWithoutAdditionalJetsCut : public VHbbCandidateCutSet
183     {
184     public:
185     SignalSelectionZmumuWithoutAdditionalJetsCut( float mass );
186     };
187    
188 grimes 1.3 /** @brief All of the cuts in SignalSelectionZmumu except that the order of the CSV cuts is switched.
189     *
190     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
191     * @date 27/Feb/2012
192     */
193     class SignalSelectionZmumuWithCSVCutsSwitched : public VHbbCandidateCutSet
194     {
195     public:
196     SignalSelectionZmumuWithCSVCutsSwitched( float mass );
197     SignalSelectionZmumuWithCSVCutsSwitched( float lowerMass, float upperMass );
198     };
199 grimes 1.1
200 grimes 1.4 /** @brief All of the cuts in SignalSelectionZmumu but with the CSV cuts changed for StdGeom at 50 pile up.
201     *
202     * The btag operating points have been changed from the official CSVT to CSVT at 50 pile up. Analysis of
203     * ttbar events at 50 pile up shows a 0.1% light mistag efficiency can be given by a discriminator of
204     * 0.717621. Instead of using the 0.5 discriminator used in the current analysis I've changed to using
205     * a 1% light mistag efficiency (i.e. CSVM).
206     *
207     * | *Discriminator* | *btag efficiency* | *c mistag efficiency* | *light mistag efficiency* |
208     * | 0.717621 | 0.393179 | 0.0465483 | 0.000999997 |
209     * | 0.395486 | 0.542436 | 0.125649 | 0.00999999 |
210     *
211     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
212     * @date 03/May/2012
213     * Updated for the most recent b-tagging performance 06/Jul/2012
214     */
215     class SignalSelectionStdGeom50PUZmumu : public VHbbCandidateCutSet
216     {
217     public:
218     SignalSelectionStdGeom50PUZmumu( float mass );
219     SignalSelectionStdGeom50PUZmumu( float lowerMass, float upperMass );
220     };
221    
222     /** @brief All of the cuts in SignalSelectionZmumu but with the CSV cuts changed for Phase1 at 50 pile up.
223     *
224     * The higher CSV cut I've changed to give a light mistag efficiency of 0.1% (CSVT), and the lower one I've
225     * changed to give a light mistag efficiency of 1% (CSVM).
226     *
227     * | *Discriminator* | *btag efficiency* | *c mistag efficiency* | *light mistag efficiency* |
228     * | 0.776769 | 0.492322 | 0.0452924 | 0.000999999 |
229     * | 0.536104 | 0.644404 | 0.161445 | 0.01 |
230     *
231     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
232     * @date 03/May/2012
233     * Updated for the most recent b-tagging performance 06/Jul/2012
234     */
235     class SignalSelectionPhase150PUZmumu : public VHbbCandidateCutSet
236     {
237     public:
238     SignalSelectionPhase150PUZmumu( float mass );
239     SignalSelectionPhase150PUZmumu( float lowerMass, float upperMass );
240     };
241 grimes 1.1
242 grimes 1.4 /** @brief All of the cuts in SignalSelectionStdGeom50PUZmumu but without the additional jets cut.
243     *
244     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
245     * @date 03/May/2012
246     */
247     class SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut : public VHbbCandidateCutSet
248     {
249     public:
250     SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut( float mass );
251     SignalSelectionStdGeom50PUZmumuWithoutAdditionalJetsCut( float lowerMass, float upperMass );
252     };
253    
254     /** @brief All of the cuts in SignalSelectionPhase150PUZmumu but without the additional jets cut.
255     *
256     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
257     * @date 03/May/2012
258     */
259     class SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut : public VHbbCandidateCutSet
260     {
261     public:
262     SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut( float mass );
263     SignalSelectionPhase150PUZmumuWithoutAdditionalJetsCut( float lowerMass, float upperMass );
264     };
265 grimes 1.1
266     /** @brief Straight copy of the VlightRegionHWmun cut in the VHllbb analysis framework.
267     *
268     * Note that it doesn't cut on the trigger because that information is not stored in
269     * VHbbCandidate, which this class operates on.
270     *
271     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
272     * @date 26/Nov/2011
273     */
274     class VlightRegionHWmun : public VHbbCandidateCutSet
275     {
276     public:
277     VlightRegionHWmun();
278     };
279    
280    
281     class VlightRegionHWen : public VHbbCandidateCutSet
282     {
283     public:
284     VlightRegionHWen();
285     };
286    
287    
288     class VlightRegionHZmumu : public VHbbCandidateCutSet
289     {
290     public:
291     VlightRegionHZmumu();
292     };
293    
294    
295     class VlightRegionHZee : public VHbbCandidateCutSet
296     {
297     public:
298     VlightRegionHZee();
299     };
300    
301    
302     class TTbarRegionHWmun : public VHbbCandidateCutSet
303     {
304     public:
305     TTbarRegionHWmun();
306     };
307    
308    
309     class TTbarRegionHWen : public VHbbCandidateCutSet
310     {
311     public:
312     TTbarRegionHWen();
313     };
314    
315    
316     class TTbarRegionHZmumu : public VHbbCandidateCutSet
317     {
318     public:
319     TTbarRegionHZmumu();
320     };
321    
322    
323     class TTbarRegionHZee : public VHbbCandidateCutSet
324     {
325     public:
326     TTbarRegionHZee();
327     };
328    
329    
330     class VbbRegionHWmun : public VHbbCandidateCutSet
331     {
332     public:
333     VbbRegionHWmun();
334     };
335    
336    
337     class VbbRegionHWen : public VHbbCandidateCutSet
338     {
339     public:
340     VbbRegionHWen();
341     };
342    
343    
344     class VbbRegionHZmumu : public VHbbCandidateCutSet
345     {
346     public:
347     VbbRegionHZmumu();
348     };
349    
350    
351     class VbbRegionHZee : public VHbbCandidateCutSet
352     {
353     public:
354     VbbRegionHZee();
355     };
356    
357     } // end of namespace trkupgradeanalysis
358    
359    
360     #endif // end of "#ifndef trkupgradeanalysis_VHbbCandidateCutSets_h"
361