ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/dhidas/OSUAnalysis/Tools/test/TestElectron.h
Revision: 1.1.1.1 (vendor branch)
Committed: Thu Dec 1 16:28:47 2011 UTC (13 years, 5 months ago) by dhidas
Content type: text/plain
Branch: dhidas, MAIN
CVS Tags: START, HEAD
Changes since 1.1: +0 -0 lines
Log Message:
osu copy modified

File Contents

# User Rev Content
1 dhidas 1.1 #include "cute/cute.h"
2     #include "cute/cute_suite.h"
3    
4     #include "../interface/RecoObjects/Electron.h"
5     #include "TestObjectFactory.h"
6    
7     using namespace BAT;
8    
9     struct TestElectron {
10     private:
11     ElectronPointer isolatedElectron;
12     ElectronPointer goodElectron;
13     ElectronPointer badEtElectron;
14     ElectronPointer badEtaElectron;
15     ElectronPointer badInCrackElectron;
16     ElectronPointer badD0Electron;
17     ElectronPointer badElectronWithMissingInnerLayerHit;
18     ElectronPointer badElectronWithPartnerTrack;
19     ElectronPointer looseElectron;
20     ElectronPointer badLooseElectronNoID;
21     ElectronPointer badElectronNoID;
22    
23     public:
24     TestElectron() :
25     isolatedElectron(TestObjectFactory::goodIsolatedElectron()),
26     goodElectron(TestObjectFactory::goodCaloElectron()),
27     badEtElectron(TestObjectFactory::badEtElectron()),
28     badEtaElectron(TestObjectFactory::badEtaElectron()),
29     badInCrackElectron(TestObjectFactory::badInCrackElectron()),
30     badD0Electron(TestObjectFactory::badD0Electron()),
31     badElectronWithMissingInnerLayerHit(TestObjectFactory::electronWithMissingInnerLayerHit()),
32     badElectronWithPartnerTrack(TestObjectFactory::electronWithMatchingPartnerTrack()),
33     looseElectron(TestObjectFactory::goodLooseElectron()),
34     badLooseElectronNoID(TestObjectFactory::badLooseElectronNoID()),
35     badElectronNoID(TestObjectFactory::badElectronNoID()) {
36     }
37    
38     public:
39     void testEcalIsolation() {
40     ASSERT_EQUAL_DELTA(0.3, isolatedElectron->ecalIsolation(), 0.01);
41     }
42    
43     void testHcalIsolation() {
44     ASSERT_EQUAL_DELTA(0.5, isolatedElectron->hcalIsolation(), 0.01);
45     }
46    
47     void testTrackerIsolation() {
48     ASSERT_EQUAL_DELTA(0.4, isolatedElectron->trackerIsolation(), 0.01);
49     }
50    
51     void testBadEtElectron() {
52     ASSERT(badEtElectron->isGood() == false);
53     }
54    
55     void testBadEtaElectron() {
56     ASSERT(badEtaElectron->isGood() == false);
57     }
58    
59     void testBadInCrackElectron() {
60     ASSERT(badInCrackElectron->isGood() == false);
61     }
62    
63     void testElectronFromConversion() {
64     ASSERT(badElectronWithMissingInnerLayerHit->isFromConversion());
65     }
66    
67     void testElectronFromConversionWithPartnerTrack() {
68     ASSERT(badElectronWithPartnerTrack->isTaggedAsConversion(0.2,0.2));
69     }
70    
71     void testBadD0Electron() {
72     ASSERT(badD0Electron->isGood() == false);
73     }
74    
75     void testLooseElectron() {
76     ASSERT_EQUAL(true, badD0Electron->isLoose());
77     ASSERT_EQUAL(true, looseElectron->isLoose());
78     }
79    
80     void testRelativeIsolation() {
81     float isoSum = isolatedElectron->trackerIsolation() + isolatedElectron->ecalIsolation()
82     + isolatedElectron->hcalIsolation();
83     ASSERT_EQUAL_DELTA(isoSum / isolatedElectron->et(), isolatedElectron->relativeIsolation(), 0.01);
84     ASSERT(isolatedElectron->isIsolated());
85     }
86    
87     void testGoodElectron() {
88     ASSERT(goodElectron->isGood());
89     }
90    
91     void testBadLooseElectronNoID() {
92     ASSERT(badLooseElectronNoID->isLoose() == false);
93     }
94    
95     void testBadElectronNoID() {
96     ASSERT(badElectronNoID->isGood() == false);
97     }
98    
99     void testVBTFW70Barrel() {
100     Electron electron = Electron(50, 40, 30, 0);
101     electron.setSigmaIEtaIEta(0.01 - 0.01
102     * 0.01);
103     electron.setDPhiIn(0.03 - 0.01 * 0.03);
104     electron.setDEtaIn(0.004 - 0.01 * 0.004);
105     electron.setHadOverEm(0.025 - 0.01 * 0.025);
106     electron.setSuperClusterEta(0);
107     assert(electron.isInBarrelRegion());
108     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
109     }
110    
111     void testVBTFW70BarrelNegativeValues() {
112     Electron electron = Electron(50, 40, 30, 0);
113     electron.setSigmaIEtaIEta(-0.01 + 0.01
114     * 0.01);
115     electron.setDPhiIn(-0.03 + 0.01 * 0.03);
116     electron.setDEtaIn(-0.004 + 0.01 * 0.004);
117     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
118     electron.setSuperClusterEta(0);
119     assert(electron.isInBarrelRegion());
120     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
121     }
122    
123     void testVBTFW70BarrelFailSigmaIEtaIEta() {
124     Electron electron = Electron(50, 3, 0, 40);
125     electron.setSigmaIEtaIEta(0.01 + 0.01
126     * 0.01);
127     electron.setDPhiIn(-0.03 + 0.01 * 0.03);
128     electron.setDEtaIn(-0.004 + 0.01 * 0.004);
129     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
130     electron.setSuperClusterEta(0);
131     assert(electron.isInBarrelRegion());
132     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
133     }
134    
135     void testVBTFW70BarrelNegativeSigmaIEtaIEta() {
136     Electron electron = Electron(50, 3, 0, 40);
137     electron.setSigmaIEtaIEta(-0.01 - 0.01
138     * 0.01);
139     electron.setDPhiIn(-0.03 + 0.01 * 0.03);
140     electron.setDEtaIn(-0.004 + 0.01 * 0.004);
141     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
142     electron.setSuperClusterEta(0);
143     assert(electron.isInBarrelRegion());
144     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
145     }
146    
147     void testVBTFW70BarrelFailDPhiIn() {
148     Electron electron = Electron(50, 3, 0, 40);
149     electron.setSigmaIEtaIEta(-0.01 + 0.01
150     * 0.01);
151     electron.setDPhiIn(0.03 + 0.01 * 0.03);
152     electron.setDEtaIn(-0.004 + 0.01 * 0.004);
153     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
154     electron.setSuperClusterEta(0);
155     assert(electron.isInBarrelRegion());
156     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
157     }
158    
159     void testVBTFW70BarrelFailNegativeDPhiIn() {
160     Electron electron = Electron(50, 3, 0, 40);
161     electron.setSigmaIEtaIEta(-0.01 + 0.01
162     * 0.01);
163     electron.setDPhiIn(-0.03 - 0.01 * 0.03);
164     electron.setDEtaIn(-0.004 + 0.01 * 0.004);
165     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
166     electron.setSuperClusterEta(0);
167     assert(electron.isInBarrelRegion());
168     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
169     }
170    
171     void testVBTFW70BarrelFailDEtaIn() {
172     Electron electron = Electron(50, 3, 0, 40);
173     electron.setSigmaIEtaIEta(-0.01 + 0.01
174     * 0.01);
175     electron.setDPhiIn(-0.03 + 0.01 * 0.03);
176     electron.setDEtaIn(0.004 + 0.01 * 0.004);
177     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
178     electron.setSuperClusterEta(0);
179     assert(electron.isInBarrelRegion());
180     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
181     }
182    
183     void testVBTFW70BarrelFailNegativeDEtaIn() {
184     Electron electron = Electron(50, 3, 0, 40);
185     electron.setSigmaIEtaIEta(-0.01 + 0.01
186     * 0.01);
187     electron.setDPhiIn(-0.03 + 0.01 * 0.03);
188     electron.setDEtaIn(-0.004 - 0.01 * 0.004);
189     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
190     electron.setSuperClusterEta(0);
191     assert(electron.isInBarrelRegion());
192     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
193     }
194    
195     void testVBTFW70BarrelFailHadOverEm() {
196     Electron electron = Electron(50, 3, 0, 40);
197     electron.setSigmaIEtaIEta(-0.01 + 0.01
198     * 0.01);
199     electron.setDPhiIn(-0.03 + 0.01 * 0.03);
200     electron.setDEtaIn(-0.004 + 0.01 * 0.004);
201     electron.setHadOverEm(0.025 + 0.01 * 0.025);
202     electron.setSuperClusterEta(0);
203     assert(electron.isInBarrelRegion());
204     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
205     }
206    
207     void testVBTFW70BarrelNegativeHadOverEm() {
208     Electron electron = Electron(50, 3, 0, 40);
209     electron.setSigmaIEtaIEta(-0.01 + 0.01
210     * 0.01);
211     electron.setDPhiIn(-0.03 + 0.01 * 0.03);
212     electron.setDEtaIn(-0.004 + 0.01 * 0.004);
213     electron.setHadOverEm(-0.025 - 0.01 * 0.025);
214     electron.setSuperClusterEta(0);
215     assert(electron.isInBarrelRegion());
216     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
217     }
218    
219     void testVBTFW70Endcap() {
220     Electron electron = Electron(50, 3, 0, 40);
221     electron.setSigmaIEtaIEta(0.03 - 0.01
222     * 0.03);
223     electron.setDPhiIn(0.02 - 0.01 * 0.02);
224     electron.setDEtaIn(0.005 - 0.01 * 0.005);
225     electron.setHadOverEm(0.025 - 0.01 * 0.025);
226     electron.setSuperClusterEta(2.6);
227     assert(electron.isInEndCapRegion());
228     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
229     }
230    
231     void testVBTFW70EndcapNegativeValues() {
232     Electron electron = Electron(50, 3, 0, 40);
233     electron.setSigmaIEtaIEta(-0.03 + 0.01
234     * 0.03);
235     electron.setDPhiIn(-0.02 + 0.01 * 0.02);
236     electron.setDEtaIn(-0.005 + 0.01 * 0.005);
237     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
238     electron.setSuperClusterEta(2.6);
239     assert(electron.isInEndCapRegion());
240     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
241     }
242    
243     void testVBTFW70EndcapFailSigmaIEtaIEta() {
244     Electron electron = Electron(50, 3, 0, 40);
245     electron.setSigmaIEtaIEta(0.03 + 0.01
246     * 0.03);
247     electron.setDPhiIn(-0.02 + 0.01 * 0.02);
248     electron.setDEtaIn(-0.005 + 0.01 * 0.005);
249     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
250     electron.setSuperClusterEta(2.6);
251     assert(electron.isInEndCapRegion());
252     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
253     }
254    
255     void testVBTFW70EndcapNegativeSigmaIEtaIEta() {
256     Electron electron = Electron(50, 3, 0, 40);
257     electron.setSigmaIEtaIEta(-0.03 - 0.01
258     * 0.03);
259     electron.setDPhiIn(-0.02 + 0.01 * 0.02);
260     electron.setDEtaIn(-0.005 + 0.01 * 0.005);
261     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
262     electron.setSuperClusterEta(2.6);
263     assert(electron.isInEndCapRegion());
264     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
265     }
266    
267     void testVBTFW70EndcapFailDPhiIn() {
268     Electron electron = Electron(50, 3, 0, 40);
269     electron.setSigmaIEtaIEta(-0.03 + 0.01
270     * 0.03);
271     electron.setDPhiIn(0.02 + 0.01 * 0.02);
272     electron.setDEtaIn(-0.005 + 0.01 * 0.005);
273     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
274     electron.setSuperClusterEta(2.6);
275     assert(electron.isInEndCapRegion());
276     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
277     }
278    
279     void testVBTFW70EndcapFailNegativeDPhiIn() {
280     Electron electron = Electron(50, 3, 0, 40);
281     electron.setSigmaIEtaIEta(-0.03 + 0.01
282     * 0.03);
283     electron.setDPhiIn(-0.02 - 0.01 * 0.02);
284     electron.setDEtaIn(-0.005 + 0.01 * 0.005);
285     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
286     electron.setSuperClusterEta(2.6);
287     assert(electron.isInEndCapRegion());
288     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
289     }
290    
291     void testVBTFW70EndcapDEtaIn() {
292     Electron electron = Electron(50, 3, 0, 40);
293     electron.setSigmaIEtaIEta(-0.03 + 0.01
294     * 0.03);
295     electron.setDPhiIn(-0.02 + 0.01 * 0.02);
296     electron.setDEtaIn(0.005 - 0.01 * 0.005);
297     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
298     electron.setSuperClusterEta(2.6);
299     assert(electron.isInEndCapRegion());
300     //expect true, dEtaIn cut is not used in the endcap at the moment
301     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
302     }
303    
304     void testVBTFW70EndcapNegativeDEtaIn() {
305     Electron electron = Electron(50, 3, 0, 40);
306     electron.setSigmaIEtaIEta(-0.03 + 0.01
307     * 0.03);
308     electron.setDPhiIn(-0.02 + 0.01 * 0.02);
309     electron.setDEtaIn(-0.005 + 0.01 * 0.005);
310     electron.setHadOverEm(-0.025 + 0.01 * 0.025);
311     electron.setSuperClusterEta(2.6);
312     assert(electron.isInEndCapRegion());
313     //expect true, dEtaIn cut is not used in the endcap at the moment
314     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
315     }
316    
317     void testVBTFW70EndcapFailHadOverEm() {
318     Electron electron = Electron(50, 3, 0, 40);
319     electron.setSigmaIEtaIEta(-0.03 + 0.01
320     * 0.03);
321     electron.setDPhiIn(-0.02 + 0.01 * 0.02);
322     electron.setDEtaIn(-0.005 + 0.01 * 0.005);
323     electron.setHadOverEm(0.025 + 0.01 * 0.025);
324     electron.setSuperClusterEta(2.6);
325     assert(electron.isInEndCapRegion());
326     ASSERT_EQUAL(false, electron.VBTF_W70_ElectronID());
327     }
328    
329     void testVBTFW70EndcapNegativeHadOverEm() {
330     Electron electron = Electron(50, 3, 0, 40);
331     electron.setSigmaIEtaIEta(-0.03 + 0.01
332     * 0.03);
333     electron.setDPhiIn(-0.02 + 0.01 * 0.02);
334     electron.setDEtaIn(-0.005 + 0.01 * 0.005);
335     electron.setHadOverEm(-0.025 - 0.01 * 0.025);
336     electron.setSuperClusterEta(2.6);
337     assert(electron.isInEndCapRegion());
338     ASSERT_EQUAL(true, electron.VBTF_W70_ElectronID());
339     }
340    
341     void testVBTFW95Barrel() {
342     Electron electron = Electron(50, 40, 30, 0);
343     electron.setSigmaIEtaIEta(0.01 - 0.01
344     * 0.01);
345     electron.setDPhiIn(0.8 - 0.01 * 0.8);
346     electron.setDEtaIn(0.007 - 0.01 * 0.007);
347     electron.setHadOverEm(0.15 - 0.01 * 0.15);
348     electron.setSuperClusterEta(0);
349     assert(electron.isInBarrelRegion());
350     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
351     }
352    
353     void testVBTFW95BarrelNegativeValues() {
354     Electron electron = Electron(50, 40, 30, 0);
355     electron.setSigmaIEtaIEta(-0.01 + 0.01
356     * 0.01);
357     electron.setDPhiIn(-0.8 + 0.01 * 0.8);
358     electron.setDEtaIn(-0.007 + 0.01 * 0.007);
359     electron.setHadOverEm(-0.15 + 0.01 * 0.15);
360     electron.setSuperClusterEta(0);
361     assert(electron.isInBarrelRegion());
362     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
363     }
364    
365     void testVBTFW95BarrelFailSigmaIEtaIEta() {
366     Electron electron = Electron(50, 3, 0, 40);
367     electron.setSigmaIEtaIEta(0.01 + 0.01
368     * 0.01);
369     electron.setDPhiIn(-0.8 + 0.01 * 0.8);
370     electron.setDEtaIn(-0.007 + 0.01 * 0.007);
371     electron.setHadOverEm(-0.15 + 0.01 * 0.15);
372     electron.setSuperClusterEta(0);
373     assert(electron.isInBarrelRegion());
374     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
375     }
376    
377     void testVBTFW95BarrelNegativeSigmaIEtaIEta() {
378     Electron electron = Electron(50, 3, 0, 40);
379     electron.setSigmaIEtaIEta(-0.01 - 0.01
380     * 0.01);
381     electron.setDPhiIn(-0.8 + 0.01 * 0.8);
382     electron.setDEtaIn(-0.007 + 0.01 * 0.007);
383     electron.setHadOverEm(-0.15 + 0.01 * 0.15);
384     electron.setSuperClusterEta(0);
385     assert(electron.isInBarrelRegion());
386     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
387     }
388    
389     void testVBTFW95BarrelFailDPhiIn() {
390     Electron electron = Electron(50, 3, 0, 40);
391     electron.setSigmaIEtaIEta(-0.01 + 0.01
392     * 0.01);
393     electron.setDPhiIn(0.8 + 0.01 * 0.8);
394     electron.setDEtaIn(-0.007 + 0.01 * 0.007);
395     electron.setHadOverEm(-0.15 + 0.01 * 0.15);
396     electron.setSuperClusterEta(0);
397     assert(electron.isInBarrelRegion());
398     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
399     }
400    
401     void testVBTFW95BarrelFailNegativeDPhiIn() {
402     Electron electron = Electron(50, 3, 0, 40);
403     electron.setSigmaIEtaIEta(-0.01 + 0.01
404     * 0.01);
405     electron.setDPhiIn(-0.8 - 0.01 * 0.8);
406     electron.setDEtaIn(-0.007 + 0.01 * 0.007);
407     electron.setHadOverEm(-0.15 + 0.01 * 0.15);
408     electron.setSuperClusterEta(0);
409     assert(electron.isInBarrelRegion());
410     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
411     }
412    
413     void testVBTFW95BarrelFailDEtaIn() {
414     Electron electron = Electron(50, 3, 0, 40);
415     electron.setSigmaIEtaIEta(-0.01 + 0.01
416     * 0.01);
417     electron.setDPhiIn(-0.8 + 0.01 * 0.8);
418     electron.setDEtaIn(0.007 + 0.01 * 0.007);
419     electron.setHadOverEm(-0.15 + 0.01 * 0.15);
420     electron.setSuperClusterEta(0);
421     assert(electron.isInBarrelRegion());
422     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
423     }
424    
425     void testVBTFW95BarrelFailNegativeDEtaIn() {
426     Electron electron = Electron(50, 3, 0, 40);
427     electron.setSigmaIEtaIEta(-0.01 + 0.01
428     * 0.01);
429     electron.setDPhiIn(-0.8 + 0.01 * 0.8);
430     electron.setDEtaIn(-0.007 - 0.01 * 0.007);
431     electron.setHadOverEm(-0.15 + 0.01 * 0.15);
432     electron.setSuperClusterEta(0);
433     assert(electron.isInBarrelRegion());
434     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
435     }
436    
437     void testVBTFW95BarrelFailHadOverEm() {
438     Electron electron = Electron(50, 3, 0, 40);
439     electron.setSigmaIEtaIEta(-0.01 + 0.01
440     * 0.01);
441     electron.setDPhiIn(-0.8 + 0.01 * 0.8);
442     electron.setDEtaIn(-0.007 + 0.01 * 0.007);
443     electron.setHadOverEm(0.15 + 0.01 * 0.15);
444     electron.setSuperClusterEta(0);
445     assert(electron.isInBarrelRegion());
446     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
447     }
448    
449     void testVBTFW95BarrelNegativeHadOverEm() {
450     Electron electron = Electron(50, 3, 0, 40);
451     electron.setSigmaIEtaIEta(-0.01 + 0.01
452     * 0.01);
453     electron.setDPhiIn(-0.8 + 0.01 * 0.8);
454     electron.setDEtaIn(-0.007 + 0.01 * 0.007);
455     electron.setHadOverEm(-0.15 - 0.01 * 0.15);
456     electron.setSuperClusterEta(0);
457     assert(electron.isInBarrelRegion());
458     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
459     }
460    
461     void testVBTFW95Endcap() {
462     Electron electron = Electron(50, 3, 0, 49);
463     electron.setSigmaIEtaIEta(0.03 - 0.01
464     * 0.03);
465     electron.setDPhiIn(0.7 - 0.01 * 0.7);
466     electron.setDEtaIn(0.01 - 0.01 * 0.01);
467     electron.setHadOverEm(0.07 - 0.01 * 0.07);
468     electron.setSuperClusterEta(2.4);
469    
470     assert(electron.isInEndCapRegion());
471     assert(electron.sigmaIEtaIEta() < 0.03);
472     assert(fabs(electron.dPhiIn()) < 0.7);
473     assert(fabs(electron.dEtaIn()) < 0.01);
474     assert(electron.HadOverEm() < 0.07);
475     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
476     }
477    
478     void testVBTFW95EndcapNegativeValues() {
479     Electron electron = Electron(50, 3, 0, 40);
480     electron.setSigmaIEtaIEta(-0.03 + 0.01
481     * 0.03);
482     electron.setDPhiIn(-0.7 + 0.01 * 0.7);
483     electron.setDEtaIn(-0.01 + 0.01 * 0.01);
484     electron.setHadOverEm(-0.07 + 0.01 * 0.07);
485     electron.setSuperClusterEta(2.4);
486    
487     assert(electron.sigmaIEtaIEta() < 0.03);
488     assert(fabs(electron.dPhiIn()) < 0.7);
489     assert(fabs(electron.dEtaIn()) < 0.01);
490     assert(electron.HadOverEm() < 0.07);
491     assert(electron.isInEndCapRegion());
492     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
493     }
494    
495     void testVBTFW95EndcapFailSigmaIEtaIEta() {
496     Electron electron = Electron(50, 3, 0, 40);
497     electron.setSigmaIEtaIEta(0.03 + 0.01
498     * 0.03);
499     electron.setDPhiIn(-0.7 + 0.01 * 0.7);
500     electron.setDEtaIn(-0.01 + 0.01 * 0.01);
501     electron.setHadOverEm(-0.07 + 0.01 * 0.07);
502     electron.setSuperClusterEta(2.4);
503     assert(electron.isInEndCapRegion());
504     assert(electron.sigmaIEtaIEta() > 0.03);
505     assert(fabs(electron.dPhiIn()) < 0.7);
506     assert(fabs(electron.dEtaIn()) < 0.01);
507     assert(electron.HadOverEm() < 0.07);
508     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
509     }
510    
511     void testVBTFW95EndcapNegativeSigmaIEtaIEta() {
512     Electron electron = Electron(50, 3, 0, 40);
513     electron.setSigmaIEtaIEta(-0.03 - 0.01
514     * 0.03);
515     electron.setDPhiIn(-0.7 + 0.01 * 0.7);
516     electron.setDEtaIn(-0.01 + 0.01 * 0.01);
517     electron.setHadOverEm(-0.07 + 0.01 * 0.07);
518     electron.setSuperClusterEta(2.6);
519     assert(electron.isInEndCapRegion());
520     assert(electron.sigmaIEtaIEta() < 0.03);
521     assert(fabs(electron.dPhiIn()) < 0.7);
522     assert(fabs(electron.dEtaIn()) < 0.01);
523     assert(electron.HadOverEm() < 0.07);
524     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
525     }
526    
527     void testVBTFW95EndcapFailDPhiIn() {
528     Electron electron = Electron(50, 3, 0, 40);
529     electron.setSigmaIEtaIEta(-0.03 + 0.01
530     * 0.03);
531     electron.setDPhiIn(0.7 + 0.01 * 0.7);
532     electron.setDEtaIn(-0.01 + 0.01 * 0.01);
533     electron.setHadOverEm(-0.07 + 0.01 * 0.07);
534     electron.setSuperClusterEta(2.6);
535     assert(electron.sigmaIEtaIEta() < 0.03);
536     assert(fabs(electron.dPhiIn()) > 0.7);
537     assert(fabs(electron.dEtaIn()) < 0.01);
538     assert(electron.HadOverEm() < 0.07);
539     assert(electron.isInEndCapRegion());
540     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
541     }
542    
543     void testVBTFW95EndcapFailNegativeDPhiIn() {
544     Electron electron = Electron(50, 3, 0, 40);
545     electron.setSigmaIEtaIEta(-0.03 + 0.01
546     * 0.03);
547     electron.setDPhiIn(-0.7 - 0.01 * 0.7);
548     electron.setDEtaIn(-0.01 + 0.01 * 0.01);
549     electron.setHadOverEm(-0.07 + 0.01 * 0.07);
550     electron.setSuperClusterEta(2.6);
551     assert(electron.isInEndCapRegion());
552     assert(electron.sigmaIEtaIEta() < 0.03);
553     assert(fabs(electron.dPhiIn()) > 0.7);
554     assert(fabs(electron.dEtaIn()) < 0.01);
555     assert(electron.HadOverEm() < 0.07);
556     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
557     }
558    
559     void testVBTFW95EndcapDEtaIn() {
560     Electron electron = Electron(50, 3, 0, 40);
561     electron.setSigmaIEtaIEta(-0.03 + 0.01
562     * 0.03);
563     electron.setDPhiIn(-0.7 + 0.01 * 0.7);
564     electron.setDEtaIn(0.01 - 0.01 * 0.01);
565     electron.setHadOverEm(-0.07 + 0.01 * 0.07);
566     electron.setSuperClusterEta(2.6);
567     assert(electron.isInEndCapRegion());
568     assert(electron.sigmaIEtaIEta() < 0.03);
569     assert(fabs(electron.dPhiIn()) < 0.7);
570     assert(fabs(electron.dEtaIn()) < 0.01);
571     assert(electron.HadOverEm() < 0.07);
572     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
573     }
574    
575     void testVBTFW95EndcapNegativeDEtaIn() {
576     Electron electron = Electron(50, 3, 0, 40);
577     electron.setSigmaIEtaIEta(-0.03 + 0.01
578     * 0.03);
579     electron.setDPhiIn(-0.7 + 0.01 * 0.7);
580     electron.setDEtaIn(-0.01 + 0.01 * 0.01);
581     electron.setHadOverEm(-0.07 + 0.01 * 0.07);
582     electron.setSuperClusterEta(2.6);
583     assert(electron.isInEndCapRegion());
584     assert(electron.sigmaIEtaIEta() < 0.03);
585     assert(fabs(electron.dPhiIn()) < 0.7);
586     assert(fabs(electron.dEtaIn()) < 0.01);
587     assert(electron.HadOverEm() < 0.07);
588     //expect true, dEtaIn cut is not used in the endcap at the moment
589     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
590     }
591    
592     void testVBTFW95EndcapFailHadOverEm() {
593     Electron electron = Electron(50, 3, 0, 40);
594     electron.setSigmaIEtaIEta(-0.03 + 0.01
595     * 0.03);
596     electron.setDPhiIn(-0.7 + 0.01 * 0.7);
597     electron.setDEtaIn(-0.01 + 0.01 * 0.01);
598     electron.setHadOverEm(0.07 + 0.01 * 0.07);
599     electron.setSuperClusterEta(2.6);
600     assert(electron.isInEndCapRegion());
601     assert(electron.sigmaIEtaIEta() < 0.03);
602     assert(fabs(electron.dPhiIn()) < 0.7);
603     assert(fabs(electron.dEtaIn()) < 0.01);
604     assert(electron.HadOverEm() > 0.07);
605     ASSERT_EQUAL(false, electron.VBTF_W95_ElectronID());
606     }
607    
608     void testVBTFW95EndcapNegativeHadOverEm() {
609     Electron electron = Electron(50, 3, 0, 40);
610     electron.setSigmaIEtaIEta(-0.03 + 0.01
611     * 0.03);
612     electron.setDPhiIn(-0.7 + 0.01 * 0.7);
613     electron.setDEtaIn(-0.01 + 0.01 * 0.01);
614     electron.setHadOverEm(-0.07 - 0.01 * 0.07);
615     electron.setSuperClusterEta(2.6);
616     assert(electron.isInEndCapRegion());
617     assert(electron.sigmaIEtaIEta() < 0.03);
618     assert(fabs(electron.dPhiIn()) < 0.7);
619     assert(fabs(electron.dEtaIn()) < 0.01);
620     assert(electron.HadOverEm() < 0.07);
621     ASSERT_EQUAL(true, electron.VBTF_W95_ElectronID());
622     }
623    
624     void testElectronCharge() {
625     Electron electron = Electron(50, 3, 0, 40);
626     electron.setCharge(2);
627     ASSERT_EQUAL(2, electron.charge());
628     }
629    
630     void testElectronChargeInCopy() {
631     Electron electron = Electron(50, 3, 0, 40);
632     electron.setCharge(2);
633     Electron copyElectron(electron);
634     ASSERT_EQUAL(2, copyElectron.charge());
635     }
636    
637     void testElectronInCollection() {
638     ElectronCollection coll;
639     ElectronPointer electron(new Electron(50, 3, 0, 40));
640     ElectronPointer electron2(new Electron(50, 3, 0, 40));
641     electron->setCharge(2);
642     electron2->setCharge(2);
643     coll.push_back(electron);
644     coll.push_back(electron2);
645     ASSERT_EQUAL(2, coll.front()->charge());
646     }
647    
648     void testElectronInSTDCollection() {
649     std::vector<Electron> coll;
650     Electron electron(50, 3, 0, 40);
651     Electron electron2(50, 3, 0, 40);
652     electron.setCharge(2);
653     electron2.setCharge(2);
654     coll.push_back(electron);
655     coll.push_back(electron2);
656     ASSERT_EQUAL(2, coll.front().charge());
657     }
658    
659     void testElectronSetMass() {
660     Electron electron = Electron(50, 3, 0, 40);
661     electron.setMass(500);
662     ASSERT_EQUAL(500, electron.mass());
663     }
664    
665     void testGSFTrack() {
666     TrackPointer track = TrackPointer(new Track(20, 20, 0, 0));
667     goodElectron->setGSFTrack(track);
668     ASSERT_EQUAL(track, goodElectron->GSFTrack());
669     }
670    
671     };
672     extern cute::suite make_suite_TestElectron() {
673     cute::suite s;
674     s.push_back(CUTE_SMEMFUN(TestElectron, testRelativeIsolation));
675     s.push_back(CUTE_SMEMFUN(TestElectron, testGoodElectron));
676     s.push_back(CUTE_SMEMFUN(TestElectron, testBadEtElectron));
677     s.push_back(CUTE_SMEMFUN(TestElectron, testBadEtaElectron));
678     s.push_back(CUTE_SMEMFUN(TestElectron, testBadD0Electron));
679     s.push_back(CUTE_SMEMFUN(TestElectron, testBadInCrackElectron));
680     s.push_back(CUTE_SMEMFUN(TestElectron, testElectronFromConversion));
681     s.push_back(CUTE_SMEMFUN(TestElectron, testElectronFromConversionWithPartnerTrack));
682     s.push_back(CUTE_SMEMFUN(TestElectron, testEcalIsolation));
683     s.push_back(CUTE_SMEMFUN(TestElectron, testHcalIsolation));
684     s.push_back(CUTE_SMEMFUN(TestElectron, testTrackerIsolation));
685     s.push_back(CUTE_SMEMFUN(TestElectron, testLooseElectron));
686     s.push_back(CUTE_SMEMFUN(TestElectron, testBadLooseElectronNoID));
687     s.push_back(CUTE_SMEMFUN(TestElectron, testBadElectronNoID));
688    
689     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70Barrel));
690     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelNegativeValues));
691     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelFailSigmaIEtaIEta));
692     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelNegativeSigmaIEtaIEta));
693     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelFailDPhiIn));
694     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelFailNegativeDPhiIn));
695     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelFailDEtaIn));
696     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelFailNegativeDEtaIn));
697     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelFailHadOverEm));
698     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70BarrelNegativeHadOverEm));
699    
700     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70Endcap));
701     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapNegativeValues));
702     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapFailSigmaIEtaIEta));
703     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapNegativeSigmaIEtaIEta));
704     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapFailDPhiIn));
705     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapFailNegativeDPhiIn));
706     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapDEtaIn));
707     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapNegativeDEtaIn));
708     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapFailHadOverEm));
709     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW70EndcapNegativeHadOverEm));
710    
711     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95Barrel));
712     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelNegativeValues));
713     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelFailSigmaIEtaIEta));
714     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelNegativeSigmaIEtaIEta));
715     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelFailDPhiIn));
716     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelFailNegativeDPhiIn));
717     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelFailDEtaIn));
718     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelFailNegativeDEtaIn));
719     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelFailHadOverEm));
720     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95BarrelNegativeHadOverEm));
721    
722     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95Endcap));
723     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapNegativeValues));
724     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapFailSigmaIEtaIEta));
725     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapNegativeSigmaIEtaIEta));
726     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapFailDPhiIn));
727     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapFailNegativeDPhiIn));
728     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapDEtaIn));
729     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapNegativeDEtaIn));
730     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapFailHadOverEm));
731     s.push_back(CUTE_SMEMFUN(TestElectron, testVBTFW95EndcapNegativeHadOverEm));
732    
733     s.push_back(CUTE_SMEMFUN(TestElectron, testElectronCharge));
734     s.push_back(CUTE_SMEMFUN(TestElectron, testElectronChargeInCopy));
735     s.push_back(CUTE_SMEMFUN(TestElectron, testElectronInCollection));
736     s.push_back(CUTE_SMEMFUN(TestElectron, testElectronSetMass));
737     s.push_back(CUTE_SMEMFUN(TestElectron, testElectronInSTDCollection));
738     // s.push_back(CUTE_SMEMFUN(TestElectron, testSwissCrossBarrel));
739     // s.push_back(CUTE_SMEMFUN(TestElectron, testSwissCrossEndcap));
740     // s.push_back(CUTE_SMEMFUN(TestElectron, testSwissCrossNotEcalDriven));
741     s.push_back(CUTE_SMEMFUN(TestElectron, testGSFTrack));
742     return s;
743     }