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
Error occurred while calculating annotation data.
Log Message:
Long overdue commit with several new files

File Contents

# Content
1 #ifndef trkupgradeanalysis_VHbbCandidateCutSets_h
2 #define trkupgradeanalysis_VHbbCandidateCutSets_h
3
4 #include <vector>
5
6 #include "TrkUpgradeAnalysis/VHbb/interface/ICutSet.h"
7 #include "TrkUpgradeAnalysis/VHbb/interface/IBasicVHbbCandidateCut.h"
8
9 // Forward declarations
10 class VHbbCandidate;
11 namespace trkupgradeanalysis
12 {
13 namespace variables
14 {
15 class VHbbCandidateVariable;
16 }
17 }
18
19
20
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 // 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 virtual std::string name() const;
42
43 // Add some methods to access the additional variables
44 size_t numberOfAdditionalVariables();
45 trkupgradeanalysis::IHistogramVariable& additionalVariableAt( size_t position );
46 protected:
47 std::vector<trkupgradeanalysis::IBasicVHbbCandidateCut*> basicCuts_;
48
49 /// @brief Other variables that are interesting to look at, but aren't cut on
50 std::vector<trkupgradeanalysis::variables::VHbbCandidateVariable*> additionalVariables_;
51
52 bool allCutsPassed_;
53 std::vector<bool> cutsPassed_;
54 std::string name_;
55 };
56
57 /** @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 class SignalSelectionZee : public VHbbCandidateCutSet
115 {
116 public:
117 SignalSelectionZee( float centralMass );
118 SignalSelectionZee( float lowerMass, float upperMass );
119 };
120
121 class SignalSelectionZmumu : public VHbbCandidateCutSet
122 {
123 public:
124 SignalSelectionZmumu( float centralMass );
125 SignalSelectionZmumu( float lowerMass, float upperMass );
126 };
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 /** @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 /** @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 /** @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
200 /** @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
242 /** @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
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