CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Static Public Attributes
HGCalTestNumbering Class Reference

#include <HGCalTestNumbering.h>

Public Member Functions

 HGCalTestNumbering ()
 
virtual ~HGCalTestNumbering ()
 

Static Public Member Functions

static bool isValidHexagon (int subdet, int z, int lay, int wafer, int celltyp, int cell)
 
static bool isValidSquare (int z, int lay, int sec, int subsec, int cell)
 
static uint32_t packHexagonIndex (int subdet, int z, int lay, int wafer, int celltyp, int cell)
 
static uint32_t packSquareIndex (int z, int lay, int sec, int subsec, int cell)
 
static void unpackHexagonIndex (const uint32_t &idx, int &subdet, int &z, int &lay, int &wafer, int &celltyp, int &cell)
 
static void unpackSquareIndex (const uint32_t &idx, int &z, int &lay, int &sec, int &subsec, int &cell)
 

Static Public Attributes

static const int kHGCalCellHMask = 0xFF
 
static const int kHGCalCellHOffset = 0
 
static const int kHGCalCellSMask = 0xFFFF
 
static const int kHGCalCellSOffset = 0
 
static const int kHGCalCellTypHMask = 0x1
 
static const int kHGCalCellTypHOffset = 8
 
static const int kHGCalLayerHMask = 0x7F
 
static const int kHGCalLayerHOffset = 19
 
static const int kHGCalLayerSMask = 0x7F
 
static const int kHGCalLayerSOffset = 24
 
static const int kHGCalSectorSMask = 0x7F
 
static const int kHGCalSectorSOffset = 16
 
static const int kHGCalSubdetHMask = 0x7
 
static const int kHGCalSubdetHOffset = 27
 
static const int kHGCalSubSectorSMask = 0x1
 
static const int kHGCalSubSectorSOffset = 23
 
static const int kHGCalWaferHMask = 0x3FF
 
static const int kHGCalWaferHOffset = 9
 
static const int kHGCalZsideHMask = 0x1
 
static const int kHGCalZsideHOffset = 26
 
static const int kHGCalZsideSMask = 0x1
 
static const int kHGCalZsideSOffset = 31
 

Detailed Description

Definition at line 10 of file HGCalTestNumbering.h.

Constructor & Destructor Documentation

HGCalTestNumbering::HGCalTestNumbering ( )
inline

Definition at line 35 of file HGCalTestNumbering.h.

35 {}
virtual HGCalTestNumbering::~HGCalTestNumbering ( )
inlinevirtual

Member Function Documentation

bool HGCalTestNumbering::isValidHexagon ( int  subdet,
int  z,
int  lay,
int  wafer,
int  celltyp,
int  cell 
)
static

Definition at line 69 of file HGCalTestNumbering.cc.

References gather_cfg::cout, kHGCalCellHMask, kHGCalCellTypHMask, kHGCalLayerSMask, kHGCalSubdetHMask, and kHGCalWaferHMask.

Referenced by packHexagonIndex(), and ~HGCalTestNumbering().

69  {
70  if (cell > kHGCalCellHMask || celltyp > kHGCalCellTypHMask || wafer > kHGCalWaferHMask || lay > kHGCalLayerSMask ||
71  subdet > kHGCalSubdetHMask) {
72 #ifdef EDM_ML_DEBUG
73  std::cout << "[HGCalTestNumbering] request for new id for layer=" << lay << " zp=" << zp << " wafer=" << wafer
74  << " celltyp=" << celltyp << " cell=" << cell << " for subdet=" << subdet
75  << " has one or more fields out of bounds and will be reset" << std::endl;
76 #endif
77  return false;
78  }
79  return true;
80 }
static const int kHGCalWaferHMask
static const int kHGCalCellHMask
static const int kHGCalSubdetHMask
static const int kHGCalCellTypHMask
static const int kHGCalLayerSMask
bool HGCalTestNumbering::isValidSquare ( int  z,
int  lay,
int  sec,
int  subsec,
int  cell 
)
static

Definition at line 57 of file HGCalTestNumbering.cc.

References gather_cfg::cout, kHGCalCellSMask, kHGCalLayerSMask, kHGCalSectorSMask, and kHGCalSubSectorSMask.

Referenced by packSquareIndex(), and ~HGCalTestNumbering().

57  {
58  if (cell > kHGCalCellSMask || sec > kHGCalSectorSMask || subsec > kHGCalSubSectorSMask || lay > kHGCalLayerSMask) {
59 #ifdef EDM_ML_DEBUG
60  std::cout << "[HGCalTestNumbering] request for new id for layer=" << lay << " zp=" << zp << " sector=" << sec
61  << " subsec=" << subsec << " cell=" << cell << " has one or more fields out of bounds and will be reset"
62  << std::endl;
63 #endif
64  return false;
65  }
66  return true;
67 }
static const int kHGCalSubSectorSMask
static const int kHGCalCellSMask
static const int kHGCalSectorSMask
static const int kHGCalLayerSMask
uint32_t HGCalTestNumbering::packHexagonIndex ( int  subdet,
int  z,
int  lay,
int  wafer,
int  celltyp,
int  cell 
)
static

Definition at line 23 of file HGCalTestNumbering.cc.

References isValidHexagon(), kHGCalCellHMask, kHGCalCellHOffset, kHGCalCellTypHMask, kHGCalCellTypHOffset, kHGCalLayerHMask, kHGCalLayerHOffset, kHGCalSubdetHMask, kHGCalSubdetHOffset, kHGCalWaferHMask, kHGCalWaferHOffset, kHGCalZsideHMask, and kHGCalZsideHOffset.

Referenced by HGCalTBAnalyzer::analyzeSimHits(), HGCNumberingScheme::getUnitID(), and ~HGCalTestNumbering().

23  {
24  if (!HGCalTestNumbering::isValidHexagon(subdet, zp, lay, wafer, celltyp, cell)) {
25  subdet = zp = lay = wafer = celltyp = cell = 0;
26  }
27 
28  uint32_t rawid = 0;
29  rawid |= ((cell & kHGCalCellHMask) << kHGCalCellHOffset);
30  rawid |= ((celltyp & kHGCalCellTypHMask) << kHGCalCellTypHOffset);
31  rawid |= ((wafer & kHGCalWaferHMask) << kHGCalWaferHOffset);
32  rawid |= ((lay & kHGCalLayerHMask) << kHGCalLayerHOffset);
33  if (zp > 0)
34  rawid |= ((zp & kHGCalZsideHMask) << kHGCalZsideHOffset);
35  rawid |= ((subdet & kHGCalSubdetHMask) << kHGCalSubdetHOffset);
36  return rawid;
37 }
static const int kHGCalZsideHMask
static const int kHGCalWaferHMask
static const int kHGCalZsideHOffset
static const int kHGCalCellHMask
static const int kHGCalSubdetHMask
static bool isValidHexagon(int subdet, int z, int lay, int wafer, int celltyp, int cell)
static const int kHGCalLayerHOffset
static const int kHGCalCellHOffset
static const int kHGCalLayerHMask
static const int kHGCalWaferHOffset
static const int kHGCalCellTypHMask
static const int kHGCalCellTypHOffset
static const int kHGCalSubdetHOffset
uint32_t HGCalTestNumbering::packSquareIndex ( int  z,
int  lay,
int  sec,
int  subsec,
int  cell 
)
static

Definition at line 6 of file HGCalTestNumbering.cc.

References isValidSquare(), kHGCalCellSMask, kHGCalCellSOffset, kHGCalLayerSMask, kHGCalLayerSOffset, kHGCalSectorSMask, kHGCalSectorSOffset, kHGCalSubSectorSMask, kHGCalSubSectorSOffset, kHGCalZsideSMask, and kHGCalZsideSOffset.

Referenced by HGCalSimHitValidation::analyzeHits(), HGCalSimHitValidation::defineGeometry(), and ~HGCalTestNumbering().

6  {
7  if (!HGCalTestNumbering::isValidSquare(zp, lay, sec, subsec, lay)) {
8  zp = lay = sec = subsec = cell = 0;
9  }
10 
11  uint32_t rawid = 0;
12  rawid |= ((cell & kHGCalCellSMask) << kHGCalCellSOffset);
13  rawid |= ((sec & kHGCalSectorSMask) << kHGCalSectorSOffset);
14  if (subsec < 0)
15  subsec = 0;
16  rawid |= ((subsec & kHGCalSubSectorSMask) << kHGCalSubSectorSOffset);
17  rawid |= ((lay & kHGCalLayerSMask) << kHGCalLayerSOffset);
18  if (zp > 0)
19  rawid |= ((zp & kHGCalZsideSMask) << kHGCalZsideSOffset);
20  return rawid;
21 }
static const int kHGCalSubSectorSMask
static const int kHGCalCellSMask
static const int kHGCalZsideSMask
static const int kHGCalLayerSOffset
static const int kHGCalSectorSMask
static const int kHGCalZsideSOffset
static bool isValidSquare(int z, int lay, int sec, int subsec, int cell)
static const int kHGCalSubSectorSOffset
static const int kHGCalCellSOffset
static const int kHGCalLayerSMask
static const int kHGCalSectorSOffset
void HGCalTestNumbering::unpackHexagonIndex ( const uint32_t &  idx,
int &  subdet,
int &  z,
int &  lay,
int &  wafer,
int &  celltyp,
int &  cell 
)
static

Definition at line 47 of file HGCalTestNumbering.cc.

References kHGCalCellHMask, kHGCalCellHOffset, kHGCalCellTypHMask, kHGCalCellTypHOffset, kHGCalLayerHMask, kHGCalLayerHOffset, kHGCalSubdetHMask, kHGCalSubdetHOffset, kHGCalWaferHMask, kHGCalWaferHOffset, kHGCalZsideHMask, and kHGCalZsideHOffset.

Referenced by HGCGeometryValidation::analyze(), HGCalHitValidation::analyzeHGCalSimHit(), HGCalSimHitValidation::analyzeHits(), HGCalTimingAnalyzer::analyzeSimHits(), HGCalTBAnalyzer::analyzeSimHits(), CaloParticleDebugger::fillSimHits(), CaloTruthAccumulator::fillSimHits(), HGCSD::setDetUnitId(), HGCalTriggerTools::simToReco(), and ~HGCalTestNumbering().

48  {
53  zp = ((idx >> kHGCalZsideHOffset) & kHGCalZsideHMask ? 1 : -1);
55 }
static const int kHGCalZsideHMask
static const int kHGCalWaferHMask
static const int kHGCalZsideHOffset
static const int kHGCalCellHMask
static const int kHGCalSubdetHMask
static const int kHGCalLayerHOffset
static const int kHGCalCellHOffset
static const int kHGCalLayerHMask
static const int kHGCalWaferHOffset
static const int kHGCalCellTypHMask
static const int kHGCalCellTypHOffset
static const int kHGCalSubdetHOffset
void HGCalTestNumbering::unpackSquareIndex ( const uint32_t &  idx,
int &  z,
int &  lay,
int &  sec,
int &  subsec,
int &  cell 
)
static

Definition at line 39 of file HGCalTestNumbering.cc.

References kHGCalCellSMask, kHGCalCellSOffset, kHGCalLayerSMask, kHGCalLayerSOffset, kHGCalSectorSMask, kHGCalSectorSOffset, kHGCalSubSectorSMask, kHGCalSubSectorSOffset, kHGCalZsideSMask, and kHGCalZsideSOffset.

Referenced by HGCalSimHitValidation::analyzeHits(), and ~HGCalTestNumbering().

39  {
41  subsec = ((idx >> kHGCalSubSectorSOffset) & kHGCalSubSectorSMask ? 1 : -1);
44  zp = ((idx >> kHGCalZsideSOffset) & kHGCalZsideSMask ? 1 : -1);
45 }
static const int kHGCalSubSectorSMask
static const int kHGCalCellSMask
static const int kHGCalZsideSMask
static const int kHGCalLayerSOffset
static const int kHGCalSectorSMask
static const int kHGCalZsideSOffset
static const int kHGCalSubSectorSOffset
static const int kHGCalCellSOffset
static const int kHGCalLayerSMask
static const int kHGCalSectorSOffset

Member Data Documentation

const int HGCalTestNumbering::kHGCalCellHMask = 0xFF
static

Definition at line 24 of file HGCalTestNumbering.h.

Referenced by isValidHexagon(), packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalCellHOffset = 0
static

Definition at line 23 of file HGCalTestNumbering.h.

Referenced by packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalCellSMask = 0xFFFF
static

Definition at line 13 of file HGCalTestNumbering.h.

Referenced by isValidSquare(), packSquareIndex(), and unpackSquareIndex().

const int HGCalTestNumbering::kHGCalCellSOffset = 0
static

Definition at line 12 of file HGCalTestNumbering.h.

Referenced by packSquareIndex(), and unpackSquareIndex().

const int HGCalTestNumbering::kHGCalCellTypHMask = 0x1
static

Definition at line 26 of file HGCalTestNumbering.h.

Referenced by isValidHexagon(), packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalCellTypHOffset = 8
static

Definition at line 25 of file HGCalTestNumbering.h.

Referenced by packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalLayerHMask = 0x7F
static

Definition at line 30 of file HGCalTestNumbering.h.

Referenced by packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalLayerHOffset = 19
static

Definition at line 29 of file HGCalTestNumbering.h.

Referenced by packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalLayerSMask = 0x7F
static
const int HGCalTestNumbering::kHGCalLayerSOffset = 24
static

Definition at line 18 of file HGCalTestNumbering.h.

Referenced by packSquareIndex(), and unpackSquareIndex().

const int HGCalTestNumbering::kHGCalSectorSMask = 0x7F
static

Definition at line 15 of file HGCalTestNumbering.h.

Referenced by isValidSquare(), packSquareIndex(), and unpackSquareIndex().

const int HGCalTestNumbering::kHGCalSectorSOffset = 16
static

Definition at line 14 of file HGCalTestNumbering.h.

Referenced by packSquareIndex(), and unpackSquareIndex().

const int HGCalTestNumbering::kHGCalSubdetHMask = 0x7
static

Definition at line 34 of file HGCalTestNumbering.h.

Referenced by isValidHexagon(), packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalSubdetHOffset = 27
static

Definition at line 33 of file HGCalTestNumbering.h.

Referenced by packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalSubSectorSMask = 0x1
static

Definition at line 17 of file HGCalTestNumbering.h.

Referenced by isValidSquare(), packSquareIndex(), and unpackSquareIndex().

const int HGCalTestNumbering::kHGCalSubSectorSOffset = 23
static

Definition at line 16 of file HGCalTestNumbering.h.

Referenced by packSquareIndex(), and unpackSquareIndex().

const int HGCalTestNumbering::kHGCalWaferHMask = 0x3FF
static

Definition at line 28 of file HGCalTestNumbering.h.

Referenced by isValidHexagon(), packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalWaferHOffset = 9
static

Definition at line 27 of file HGCalTestNumbering.h.

Referenced by packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalZsideHMask = 0x1
static

Definition at line 32 of file HGCalTestNumbering.h.

Referenced by packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalZsideHOffset = 26
static

Definition at line 31 of file HGCalTestNumbering.h.

Referenced by packHexagonIndex(), and unpackHexagonIndex().

const int HGCalTestNumbering::kHGCalZsideSMask = 0x1
static

Definition at line 21 of file HGCalTestNumbering.h.

Referenced by packSquareIndex(), and unpackSquareIndex().

const int HGCalTestNumbering::kHGCalZsideSOffset = 31
static

Definition at line 20 of file HGCalTestNumbering.h.

Referenced by packSquareIndex(), and unpackSquareIndex().