File indexing completed on 2023-03-17 10:49:43
0001
0002
0003
0004
0005
0006 #include <cppunit/extensions/HelperMacros.h>
0007 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
0008 #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHit.h"
0009 #include "DataFormats/EcalDetId/interface/EBDetId.h"
0010
0011 class testEcalRecHit : public CppUnit::TestFixture {
0012 CPPUNIT_TEST_SUITE(testEcalRecHit);
0013 CPPUNIT_TEST(testOne);
0014 CPPUNIT_TEST_SUITE_END();
0015
0016 public:
0017 void setUp() {}
0018 void tearDown() {}
0019
0020 void testOne();
0021 };
0022
0023
0024 CPPUNIT_TEST_SUITE_REGISTRATION(testEcalRecHit);
0025
0026 void testEcalRecHit::testOne() {
0027
0028 EcalRecHit rh(EBDetId(1, 1), 0., 0.);
0029 rh.setFlag(EcalRecHit::kTPSaturated);
0030 CPPUNIT_ASSERT(rh.checkFlag(EcalRecHit::kTPSaturated));
0031
0032 rh.setFlag(EcalRecHit::kHasSwitchToGain6);
0033 CPPUNIT_ASSERT(rh.checkFlag(EcalRecHit::kHasSwitchToGain6));
0034
0035 rh.setFlag(EcalRecHit::kHasSwitchToGain1);
0036 CPPUNIT_ASSERT(rh.checkFlag(EcalRecHit::kHasSwitchToGain1));
0037 rh.unsetFlag(EcalRecHit::kHasSwitchToGain1);
0038 CPPUNIT_ASSERT(!rh.checkFlag(EcalRecHit::kHasSwitchToGain1));
0039
0040 CPPUNIT_ASSERT(!rh.checkFlag(EcalRecHit::kSaturated));
0041
0042 CPPUNIT_ASSERT(!rh.checkFlag(EcalRecHit::kPoorReco));
0043 CPPUNIT_ASSERT(!rh.checkFlag(EcalRecHit::kUnknown));
0044 CPPUNIT_ASSERT(!rh.checkFlag(EcalRecHit::kGood));
0045
0046
0047 CPPUNIT_ASSERT(rh.checkFlag(EcalRecHit::kTPSaturated));
0048
0049
0050 EcalRecHit rh2(EBDetId(1, 1), 0., 0.);
0051 rh2.setFlag(EcalRecHit::kOutOfTime);
0052 CPPUNIT_ASSERT(rh2.checkFlag(EcalRecHit::kOutOfTime));
0053 rh2.unsetFlag(EcalRecHit::kOutOfTime);
0054 CPPUNIT_ASSERT(!rh2.checkFlag(EcalRecHit::kOutOfTime));
0055
0056 rh2.unsetFlag(EcalRecHit::kGood);
0057 CPPUNIT_ASSERT(!rh2.checkFlag(EcalRecHit::kGood));
0058
0059
0060 CPPUNIT_ASSERT_EQUAL((uint32_t)0, EcalRecHit::getMasked(0, 8, 16));
0061
0062 CPPUNIT_ASSERT_EQUAL((uint32_t)3072, EcalRecHit::setMasked(0, 12, 8, 16));
0063 CPPUNIT_ASSERT_EQUAL((uint32_t)12, EcalRecHit::getMasked(3072, 8, 16));
0064
0065 CPPUNIT_ASSERT_EQUAL((uint32_t)(3072 + 0xff), EcalRecHit::setMasked(0x00aaffff, 12, 8, 16));
0066 CPPUNIT_ASSERT_EQUAL((uint32_t)12, EcalRecHit::getMasked(3072 + 0xff, 8, 16));
0067
0068
0069 rh.setChi2(1.8);
0070 CPPUNIT_ASSERT_DOUBLES_EQUAL(1.8, rh.chi2(), 0.5);
0071 rh.setChi2(50.8);
0072 CPPUNIT_ASSERT_DOUBLES_EQUAL(50.8, rh.chi2(), 0.5);
0073
0074
0075 float timerr = 0.12;
0076 EcalUncalibratedRecHit urh;
0077 urh.setJitterError(timerr);
0078 rh.setTimeError(urh.jitterErrorBits());
0079
0080 CPPUNIT_ASSERT_DOUBLES_EQUAL(timerr * 25, rh.timeError(), 0.5);
0081 CPPUNIT_ASSERT_DOUBLES_EQUAL(urh.jitterError() * 25, rh.timeError(), 0.00001);
0082
0083
0084 for (float x = 0.0011; x < 10.e4; x *= 5.) {
0085 rh.setEnergyError(x);
0086 CPPUNIT_ASSERT_DOUBLES_EQUAL(x, rh.energyError(), 0.01 * x);
0087 }
0088 }