testCSCTriggerNumbering

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
/**
   \file
   test file for CSCTriggerNumbering

   \author Lindsey GRAY
   \date 27 Jul 2005
*/

#include <cppunit/extensions/HelperMacros.h>
#include <DataFormats/MuonDetId/interface/CSCDetId.h>
#include <FWCore/Utilities/interface/Exception.h>
#include <DataFormats/MuonDetId/interface/CSCTriggerNumbering.h>

#include <iostream>
using namespace std;

class testCSCTriggerNumbering : public CppUnit::TestFixture {
  CPPUNIT_TEST_SUITE(testCSCTriggerNumbering);

  CPPUNIT_TEST(testNumbering);
  CPPUNIT_TEST(testFail);

  CPPUNIT_TEST_SUITE_END();

public:
  void setUp() {}
  void tearDown() {}
  void testNumbering();
  void testFail();
};

///registration of the test so that the runner can find it
CPPUNIT_TEST_SUITE_REGISTRATION(testCSCTriggerNumbering);

// run a self consistency check
void testCSCTriggerNumbering::testNumbering() {
  for (int endcap = CSCDetId::minEndcapId(); endcap <= CSCDetId::maxEndcapId(); ++endcap)
    for (int station = CSCDetId::minStationId(); station <= CSCDetId::maxStationId(); ++station)
      for (int sector = CSCTriggerNumbering::minTriggerSectorId(); sector <= CSCTriggerNumbering::maxTriggerSectorId();
           ++sector)
        for (int cscid = CSCTriggerNumbering::minTriggerCscId(); cscid <= CSCTriggerNumbering::maxTriggerCscId();
             ++cscid) {
          if (station == 1)
            for (int subs = CSCTriggerNumbering::minTriggerSubSectorId();
                 subs <= CSCTriggerNumbering::maxTriggerSubSectorId();
                 subs++) {
              int tcscid = CSCTriggerNumbering::triggerCscIdFromLabels(
                  station,
                  CSCTriggerNumbering::ringFromTriggerLabels(station, cscid),
                  CSCTriggerNumbering::chamberFromTriggerLabels(sector, subs, station, cscid));
              CPPUNIT_ASSERT(tcscid == cscid);

              int tsubs = CSCTriggerNumbering::triggerSubSectorFromLabels(
                  station, CSCTriggerNumbering::chamberFromTriggerLabels(sector, subs, station, cscid));

              CPPUNIT_ASSERT(tsubs == subs);

              int tsector = CSCTriggerNumbering::triggerSectorFromLabels(
                  station,
                  CSCTriggerNumbering::ringFromTriggerLabels(station, cscid),
                  CSCTriggerNumbering::chamberFromTriggerLabels(sector, subs, station, cscid));
              CPPUNIT_ASSERT(tsector == sector);
            }
          else {
            int tcscid = CSCTriggerNumbering::triggerCscIdFromLabels(
                station,
                CSCTriggerNumbering::ringFromTriggerLabels(station, cscid),
                CSCTriggerNumbering::chamberFromTriggerLabels(sector, 0, station, cscid));
            CPPUNIT_ASSERT(tcscid == cscid);

            int tsector = CSCTriggerNumbering::triggerSectorFromLabels(
                station,
                CSCTriggerNumbering::ringFromTriggerLabels(station, cscid),
                CSCTriggerNumbering::chamberFromTriggerLabels(sector, 0, station, cscid));
            CPPUNIT_ASSERT(tsector == sector);
          }
        }
}

void testCSCTriggerNumbering::testFail() {
  // Give triggerSectorFromLabels a bad input
  try {
    CSCTriggerNumbering::triggerSectorFromLabels(0, 1, 2);
    CPPUNIT_ASSERT("Failed to throw required exception" == 0);
  } catch (cms::Exception& e) {
  } catch (...) {
    CPPUNIT_ASSERT("Threw wrong kind of exception" == 0);
  }

  // Give triggerSubSectorFromLabels a bad input

  try {
    CSCTriggerNumbering::triggerSubSectorFromLabels(0, 34);
    CPPUNIT_ASSERT("Failed to throw required exception" == 0);
  } catch (cms::Exception& e) {
  } catch (...) {
    CPPUNIT_ASSERT("Threw wrong kind of exception" == 0);
  }

  // Give triggerCscIdFromLabels a bad input

  try {
    CSCTriggerNumbering::triggerCscIdFromLabels(0, 1, 2);
    CPPUNIT_ASSERT("Failed to throw required exception" == 0);
  } catch (cms::Exception& e) {
  } catch (...) {
    CPPUNIT_ASSERT("Threw wrong kind of exception" == 0);
  }

  // Give ringFromTriggerLabels a bad input
  try {
    CSCTriggerNumbering::ringFromTriggerLabels(0, 2);
    CPPUNIT_ASSERT("Failed to throw required exception" == 0);
  } catch (cms::Exception& e) {
  } catch (...) {
    CPPUNIT_ASSERT("Threw wrong kind of exception" == 0);
  }

  // Give ringFromTriggerLabels a bad input
  try {
    CSCTriggerNumbering::chamberFromTriggerLabels(0, 1, 2, 9);
    CPPUNIT_ASSERT("Failed to throw required exception" == 0);
  } catch (cms::Exception& e) {
  } catch (...) {
    CPPUNIT_ASSERT("Threw wrong kind of exception" == 0);
  }
}