CMS 3D CMS Logo

HGCalTestNumbering.cc
Go to the documentation of this file.
3 #include <iostream>
4 
5 uint32_t HGCalTestNumbering::packSquareIndex(int zp, int lay, int sec, int subsec, int cell) {
6  if (!HGCalTestNumbering::isValidSquare(zp, lay, sec, subsec, lay)) {
7  zp = lay = sec = subsec = cell = 0;
8  }
9 
10  uint32_t rawid = 0;
11  rawid |= ((cell & kHGCalCellSMask) << kHGCalCellSOffset);
12  rawid |= ((sec & kHGCalSectorSMask) << kHGCalSectorSOffset);
13  if (subsec < 0)
14  subsec = 0;
15  rawid |= ((subsec & kHGCalSubSectorSMask) << kHGCalSubSectorSOffset);
16  rawid |= ((lay & kHGCalLayerSMask) << kHGCalLayerSOffset);
17  if (zp > 0)
18  rawid |= ((zp & kHGCalZsideSMask) << kHGCalZsideSOffset);
19  return rawid;
20 }
21 
22 uint32_t HGCalTestNumbering::packHexagonIndex(int subdet, int zp, int lay, int wafer, int celltyp, int cell) {
23  if (!HGCalTestNumbering::isValidHexagon(subdet, zp, lay, wafer, celltyp, cell)) {
24  subdet = zp = lay = wafer = celltyp = cell = 0;
25  }
26 
27  uint32_t rawid = 0;
28  rawid |= ((cell & kHGCalCellHMask) << kHGCalCellHOffset);
29  rawid |= ((celltyp & kHGCalCellTypHMask) << kHGCalCellTypHOffset);
30  rawid |= ((wafer & kHGCalWaferHMask) << kHGCalWaferHOffset);
31  rawid |= ((lay & kHGCalLayerHMask) << kHGCalLayerHOffset);
32  if (zp > 0)
33  rawid |= ((zp & kHGCalZsideHMask) << kHGCalZsideHOffset);
34  rawid |= ((subdet & kHGCalSubdetHMask) << kHGCalSubdetHOffset);
35  return rawid;
36 }
37 
38 void HGCalTestNumbering::unpackSquareIndex(const uint32_t& idx, int& zp, int& lay, int& sec, int& subsec, int& cell) {
40  subsec = ((idx >> kHGCalSubSectorSOffset) & kHGCalSubSectorSMask ? 1 : -1);
43  zp = ((idx >> kHGCalZsideSOffset) & kHGCalZsideSMask ? 1 : -1);
44 }
45 
47  const uint32_t& idx, int& subdet, int& zp, int& lay, int& wafer, int& celltyp, int& cell) {
52  zp = ((idx >> kHGCalZsideHOffset) & kHGCalZsideHMask ? 1 : -1);
54 }
55 
56 bool HGCalTestNumbering::isValidSquare(int zp, int lay, int sec, int subsec, int cell) {
57  if (cell > kHGCalCellSMask || sec > kHGCalSectorSMask || subsec > kHGCalSubSectorSMask || lay > kHGCalLayerSMask) {
58 #ifdef EDM_ML_DEBUG
59  std::cout << "[HGCalTestNumbering] request for new id for layer=" << lay << " zp=" << zp << " sector=" << sec
60  << " subsec=" << subsec << " cell=" << cell << " has one or more fields out of bounds and will be reset"
61  << std::endl;
62 #endif
63  return false;
64  }
65  return true;
66 }
67 
68 bool HGCalTestNumbering::isValidHexagon(int subdet, int zp, int lay, int wafer, int celltyp, int cell) {
69  if (cell > kHGCalCellHMask || celltyp > kHGCalCellTypHMask || wafer > kHGCalWaferHMask || lay > kHGCalLayerSMask ||
70  subdet > kHGCalSubdetHMask) {
71  edm::LogWarning("HGCSim") << "[HGCalTestNumbering] request for new id for layer=" << lay << " zp=" << zp
72  << " wafer=" << wafer << " celltyp=" << celltyp << " cell=" << cell
73  << " for subdet=" << subdet
74  << " has one or more fields out of bounds and will be reset *****";
75  return false;
76  }
77  return true;
78 }
HGCalTestNumbering::kHGCalCellHOffset
static const int kHGCalCellHOffset
Definition: HGCalTestNumbering.h:22
HGCalTestNumbering::kHGCalSectorSMask
static const int kHGCalSectorSMask
Definition: HGCalTestNumbering.h:14
MessageLogger.h
HGCalTestNumbering::kHGCalLayerHMask
static const int kHGCalLayerHMask
Definition: HGCalTestNumbering.h:29
HGCalTestNumbering::kHGCalZsideSOffset
static const int kHGCalZsideSOffset
Definition: HGCalTestNumbering.h:19
gather_cfg.cout
cout
Definition: gather_cfg.py:144
HGCalTestNumbering::unpackHexagonIndex
static void unpackHexagonIndex(const uint32_t &idx, int &subdet, int &z, int &lay, int &wafer, int &celltyp, int &cell)
Definition: HGCalTestNumbering.cc:46
HGCalTestNumbering::kHGCalWaferHOffset
static const int kHGCalWaferHOffset
Definition: HGCalTestNumbering.h:26
HGCalTestNumbering::kHGCalLayerHOffset
static const int kHGCalLayerHOffset
Definition: HGCalTestNumbering.h:28
HGCalTestNumbering::kHGCalCellSMask
static const int kHGCalCellSMask
Definition: HGCalTestNumbering.h:12
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
HGCalTestNumbering::unpackSquareIndex
static void unpackSquareIndex(const uint32_t &idx, int &z, int &lay, int &sec, int &subsec, int &cell)
Definition: HGCalTestNumbering.cc:38
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
HGCalTestNumbering::kHGCalSubdetHOffset
static const int kHGCalSubdetHOffset
Definition: HGCalTestNumbering.h:32
HGCalTestNumbering::kHGCalZsideSMask
static const int kHGCalZsideSMask
Definition: HGCalTestNumbering.h:20
HGCalTestNumbering::packSquareIndex
static uint32_t packSquareIndex(int z, int lay, int sec, int subsec, int cell)
Definition: HGCalTestNumbering.cc:5
HGCalTestNumbering::kHGCalLayerSMask
static const int kHGCalLayerSMask
Definition: HGCalTestNumbering.h:18
HGCalTestNumbering::kHGCalZsideHMask
static const int kHGCalZsideHMask
Definition: HGCalTestNumbering.h:31
HGCalTestNumbering::kHGCalSubSectorSMask
static const int kHGCalSubSectorSMask
Definition: HGCalTestNumbering.h:16
HGCalTestNumbering::kHGCalCellHMask
static const int kHGCalCellHMask
Definition: HGCalTestNumbering.h:23
HGCalTestNumbering::kHGCalCellTypHMask
static const int kHGCalCellTypHMask
Definition: HGCalTestNumbering.h:25
HGCalTestNumbering::kHGCalSubdetHMask
static const int kHGCalSubdetHMask
Definition: HGCalTestNumbering.h:33
HGCalTestNumbering::kHGCalLayerSOffset
static const int kHGCalLayerSOffset
Definition: HGCalTestNumbering.h:17
HGCalTestNumbering::kHGCalSubSectorSOffset
static const int kHGCalSubSectorSOffset
Definition: HGCalTestNumbering.h:15
HGCalTestNumbering::kHGCalZsideHOffset
static const int kHGCalZsideHOffset
Definition: HGCalTestNumbering.h:30
HGCalTestNumbering::packHexagonIndex
static uint32_t packHexagonIndex(int subdet, int z, int lay, int wafer, int celltyp, int cell)
Definition: HGCalTestNumbering.cc:22
fileinputsource_cfi.sec
sec
Definition: fileinputsource_cfi.py:94
HGCalTestNumbering::kHGCalCellSOffset
static const int kHGCalCellSOffset
Definition: HGCalTestNumbering.h:11
HGCalTestNumbering::kHGCalSectorSOffset
static const int kHGCalSectorSOffset
Definition: HGCalTestNumbering.h:13
HGCalTestNumbering::kHGCalWaferHMask
static const int kHGCalWaferHMask
Definition: HGCalTestNumbering.h:27
HGCalTestNumbering::isValidHexagon
static bool isValidHexagon(int subdet, int z, int lay, int wafer, int celltyp, int cell)
Definition: HGCalTestNumbering.cc:68
HGCalTestNumbering::isValidSquare
static bool isValidSquare(int z, int lay, int sec, int subsec, int cell)
Definition: HGCalTestNumbering.cc:56
HGCalTestNumbering::kHGCalCellTypHOffset
static const int kHGCalCellTypHOffset
Definition: HGCalTestNumbering.h:24
HGCalTestNumbering.h