File indexing completed on 2024-04-06 12:29:41
0001 #include <cstdint>
0002 #ifndef SimDataFormats_HGCalTestNumbering_h
0003 #define SimDataFormats_HGCalTestNumbering_h
0004
0005
0006
0007
0008
0009 class HGCalTestNumbering {
0010 public:
0011 static const int kHGCalCellSOffset = 0;
0012 static const int kHGCalCellSMask = 0xFFFF;
0013 static const int kHGCalSectorSOffset = 16;
0014 static const int kHGCalSectorSMask = 0x7F;
0015 static const int kHGCalSubSectorSOffset = 23;
0016 static const int kHGCalSubSectorSMask = 0x1;
0017 static const int kHGCalLayerSOffset = 24;
0018 static const int kHGCalLayerSMask = 0x7F;
0019 static const int kHGCalZsideSOffset = 31;
0020 static const int kHGCalZsideSMask = 0x1;
0021
0022 static const int kHGCalCellHOffset = 0;
0023 static const int kHGCalCellHMask = 0xFF;
0024 static const int kHGCalCellTypHOffset = 8;
0025 static const int kHGCalCellTypHMask = 0x1;
0026 static const int kHGCalWaferHOffset = 9;
0027 static const int kHGCalWaferHMask = 0x3FF;
0028 static const int kHGCalLayerHOffset = 19;
0029 static const int kHGCalLayerHMask = 0x7F;
0030 static const int kHGCalZsideHOffset = 26;
0031 static const int kHGCalZsideHMask = 0x1;
0032 static const int kHGCalSubdetHOffset = 27;
0033 static const int kHGCalSubdetHMask = 0x7;
0034 HGCalTestNumbering() {}
0035 virtual ~HGCalTestNumbering() {}
0036 static uint32_t packSquareIndex(int z, int lay, int sec, int subsec, int cell);
0037 static uint32_t packHexagonIndex(int subdet, int z, int lay, int wafer, int celltyp, int cell);
0038 static void unpackSquareIndex(const uint32_t& idx, int& z, int& lay, int& sec, int& subsec, int& cell);
0039 static void unpackHexagonIndex(
0040 const uint32_t& idx, int& subdet, int& z, int& lay, int& wafer, int& celltyp, int& cell);
0041 static bool isValidSquare(int z, int lay, int sec, int subsec, int cell);
0042 static bool isValidHexagon(int subdet, int z, int lay, int wafer, int celltyp, int cell);
0043 };
0044
0045 #endif