CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
HcalTopology Class Reference

#include <HcalTopology.h>

Inheritance diagram for HcalTopology:
CaloSubdetectorTopology

Public Member Functions

const HcalDDDRecConstantsdddConstants () const
 
int decIEta (const HcalDetId &id, HcalDetId neighbors[2]) const
 
bool decIPhi (const HcalDetId &id, HcalDetId &neighbor) const
 
bool decrementDepth (HcalDetId &id) const
 
DetId denseId2detId (unsigned int) const override
 return a linear packed id More...
 
HcalCalibDetId denseId2detIdCALIB (const unsigned int &id) const
 return a Calib DetId from linear packed id More...
 
void depthBinInformation (HcalSubdetector subdet, int etaRing, int iphi, int zside, int &nDepthBins, int &startingBin) const
 finds the number of depth bins and which is the number to start with More...
 
unsigned int detId2denseId (const DetId &id) const override
 return a linear packed id More...
 
unsigned int detId2denseIdCALIB (const DetId &id) const
 return a linear packed id from CALIB More...
 
unsigned int detId2denseIdHB (const DetId &id) const
 return a linear packed id from HB More...
 
unsigned int detId2denseIdHE (const DetId &id) const
 return a linear packed id from HE More...
 
unsigned int detId2denseIdHF (const DetId &id) const
 return a linear packed id from HF More...
 
unsigned int detId2denseIdHO (const DetId &id) const
 return a linear packed id from HO More...
 
unsigned int detId2denseIdHT (const DetId &id) const
 return a linear packed id from HT More...
 
int doublePhiBins () const
 
std::vector< DetIddown (const DetId &id) const override
 
std::vector< DetIdeast (const DetId &id) const override
 
double etaMax (HcalSubdetector subdet) const
 
std::pair< double, double > etaRange (HcalSubdetector subdet, int ieta) const
 
int etaRing (HcalSubdetector subdet, double eta) const
 eta and phi index from eta, phi values More...
 
void exclude (const HcalDetId &id)
 
int exclude (HcalSubdetector subdet, int ieta1, int ieta2, int iphi1, int iphi2, int depth1=1, int depth2=4)
 
void excludeSubdetector (HcalSubdetector subdet)
 
int firstHBRing () const
 
int firstHEDoublePhiRing () const
 
int firstHEQuadPhiRing () const
 
int firstHERing () const
 
int firstHETripleDepthRing () const
 
int firstHFQuadPhiRing () const
 
int firstHFRing () const
 
int firstHORing () const
 
unsigned int getCALIBSize () const
 
void getDepthSegmentation (const unsigned ring, std::vector< int > &readoutDepths, const bool flag=false) const
 
unsigned int getHBSize () const
 
unsigned int getHESize () const
 
unsigned int getHFSize () const
 
unsigned int getHOSize () const
 
unsigned int getHTSize () const
 
bool getMergePositionFlag () const
 
unsigned int getNumberOfShapes () const
 
int getPhiZOne (std::vector< std::pair< int, int > > &phiz) const
 
 HcalTopology (const HcalDDDRecConstants *hcons, const bool mergePosition=false)
 
 HcalTopology (HcalTopologyMode::Mode mode, int maxDepthHB, int maxDepthHE, HcalTopologyMode::TriggerMode tmode=HcalTopologyMode::TriggerMode_2009)
 
HcalDetId idBack (const HcalDetId &id) const
 
HcalDetId idFront (const HcalDetId &id) const
 
int incIEta (const HcalDetId &id, HcalDetId neighbors[2]) const
 
bool incIPhi (const HcalDetId &id, HcalDetId &neighbor) const
 
bool incrementDepth (HcalDetId &id) const
 
bool isBH () const
 
int lastHBHERing () const
 
int lastHBRing () const
 
int lastHERing () const
 
int lastHFRing () const
 
int lastHORing () const
 
int maxDepth (void) const
 
int maxDepth (HcalSubdetector subdet) const
 
int maxDepthHB () const
 
int maxDepthHE () const
 
bool mergedDepth29 (HcalDetId id) const
 
HcalDetId mergedDepthDetId (const HcalDetId &id) const
 
std::vector< int > mergedDepthList29 (HcalDetId id) const
 
HcalTopologyMode::Mode mode () const
 
unsigned int ncells () const override
 return a count of valid cells (for dense indexing use) More...
 
std::vector< DetIdnorth (const DetId &id) const override
 
int nPhiBins (int etaRing) const
 how many phi segments in this ring More...
 
int nPhiBins (HcalSubdetector subdet, int etaRing) const
 
int phiBin (HcalSubdetector subdet, int etaRing, double phi) const
 
std::pair< int, int > segmentBoundaries (const unsigned ring, const unsigned depth, const bool flag=false) const
 
void setDepthSegmentation (const unsigned ring, const std::vector< int > &readoutDepths, const bool flag)
 
int singlePhiBins () const
 
std::vector< DetIdsouth (const DetId &id) const override
 
int topoVersion () const override
 return a version which identifies the given topology More...
 
HcalTopologyMode::TriggerMode triggerMode () const
 
void unmergeDepthDetId (const HcalDetId &id, std::vector< HcalDetId > &ids) const
 
std::vector< DetIdup (const DetId &id) const override
 
bool valid (const DetId &id) const override
 
bool validCalib (const HcalCalibDetId &id) const
 
bool validDetId (HcalSubdetector subdet, int ieta, int iphi, int depth) const
 
bool validHcal (const HcalDetId &id) const
 
bool validHcal (const HcalDetId &id, const unsigned int flag) const
 
bool validHT (const HcalTrigTowerDetId &id) const
 
std::vector< DetIdwest (const DetId &id) const override
 
bool withSpecialRBXHBHE () const
 
- Public Member Functions inherited from CaloSubdetectorTopology
 CaloSubdetectorTopology ()
 standard constructor More...
 
virtual bool denseIdConsistent (int topoVer) const
 return whether this topology is consistent with the numbering in the given topology More...
 
virtual std::vector< DetIdgetAllNeighbours (const DetId &id) const
 
virtual std::vector< DetIdgetNeighbours (const DetId &id, const CaloDirection &dir) const
 
virtual std::vector< DetIdgetWindow (const DetId &id, const int &northSouthSize, const int &eastWestSize) const
 
virtual DetId goDown (const DetId &id) const
 
virtual DetId goEast (const DetId &id) const
 
virtual DetId goNorth (const DetId &id) const
 
virtual DetId goSouth (const DetId &id) const
 
virtual DetId goUp (const DetId &id) const
 
virtual DetId goWest (const DetId &id) const
 
virtual ~CaloSubdetectorTopology ()
 virtual destructor More...
 

Static Public Member Functions

static std::string producerTag ()
 

Private Types

typedef std::map< unsigned, std::vector< int > > SegmentationMap
 

Private Member Functions

int decAIEta (const HcalDetId &id, HcalDetId neighbors[2]) const
 
unsigned int detId2denseIdPreLS1 (const DetId &id) const
 
int incAIEta (const HcalDetId &id, HcalDetId neighbors[2]) const
 
bool isExcluded (const HcalDetId &id) const
 
bool validDetIdPreLS1 (const HcalDetId &id) const
 
bool validRaw (const HcalDetId &id) const
 

Private Attributes

unsigned int CALIBSize_
 
SegmentationMap depthSegmentation_
 
SegmentationMap depthSegmentationOne_
 
int doublePhiBins_
 
std::vector< double > dPhiTable
 
std::vector< double > dPhiTableHF
 
std::vector< HcalDDDRecConstants::HcalEtaBinetaBinsHB_
 
std::vector< HcalDDDRecConstants::HcalEtaBinetaBinsHE_
 
int etaHE2HF_
 
int etaHF2HE_
 
std::vector< double > etaTable
 
std::vector< double > etaTableHF
 
bool excludeHB_
 
bool excludeHE_
 
bool excludeHF_
 
bool excludeHO_
 
std::vector< HcalDetIdexclusionList_
 
int firstHBRing_
 
int firstHEDoublePhiRing_
 
int firstHEQuadPhiRing_
 
int firstHERing_
 
int firstHETripleDepthRing_
 
int firstHFQuadPhiRing_
 
int firstHFRing_
 
int firstHORing_
 
unsigned int HBSize_
 
const HcalDDDRecConstantshcons_
 
unsigned int HESize_
 
unsigned int HFSize_
 
unsigned int HOSize_
 
unsigned int HTSize_
 
int lastHBRing_
 
int lastHERing_
 
int lastHFRing_
 
int lastHORing_
 
int maxDepthHB_
 
int maxDepthHE_
 
int maxDepthHF_
 
int maxEta_
 
int maxPhiHE_
 
bool mergePosition_
 
HcalTopologyMode::Mode mode_
 
int nEtaHB_
 
int nEtaHE_
 
unsigned int numberOfShapes_
 
std::vector< double > phioff
 
int singlePhiBins_
 
int topoVersion_
 
HcalTopologyMode::TriggerMode triggerMode_
 
std::vector< int > unitPhi
 
std::vector< int > unitPhiHF
 

Static Private Attributes

static constexpr int chanCalibHB_ [nchanCalibHB_] = {0, 1, 2}
 
static constexpr int chanCalibHE1_ [nchanCalibHE1_] = {0, 1, 3, 4, 5, 6}
 
static constexpr int chanCalibHE2_ = 2
 
static constexpr int chanCalibHF1_ [nchanCalibHF1_] = {0, 1, 8}
 
static constexpr int chanCalibHF2_ = 9
 
static constexpr int chanCalibHO_ [nchanCalibHO_] = {0, 1}
 
static constexpr int chanCalibHOs_ = 7
 
static constexpr int etaCalibHB_ [nEtaCalibHB_] = {-1, 1}
 
static constexpr int etaCalibHBX_ = 16
 
static constexpr int etaCalibHE_ [nEtaCalibHE_] = {-1, 1}
 
static constexpr int etaCalibHEX_ [nEtaCalibHEX_] = {25, 27}
 
static constexpr int etaCalibHF_ [nEtaCalibHF_] = {-1, 1}
 
static constexpr int etaCalibHO_ [nEtaCalibHO_] = {-2, -1, 0, 1, 2}
 
static constexpr int etaCalibHOX_ [nEtaCalibHOX_] = {4, 15}
 
static constexpr int kCALIBhalf = 693
 
static constexpr int kCALIBSizePreLS1 = 2 * kCALIBhalf
 
static constexpr int kCASTORhalf = 224
 
static constexpr unsigned int kchanCalibHB_ = nchanCalibHB_ * kPhiCalibHB_
 
static constexpr unsigned int kchanCalibHE1_ = nchanCalibHE1_ * kPhiCalibHE_
 
static constexpr unsigned int kchanCalibHE2_ = kPhiCalibHE_
 
static constexpr unsigned int kchanCalibHF1_ = nchanCalibHF1_ * kPhiCalibHF1_
 
static constexpr unsigned int kchanCalibHF2_ = 1
 
static constexpr int kHBhalf = 1296
 
static constexpr int kHBSizePreLS1 = 2 * kHBhalf
 
static constexpr int kHcalhalf = kHBhalf + kHEhalf + kHOhalf + kHFhalf
 
static constexpr int kHEhalf = 1296
 
static constexpr int kHESizePreLS1 = 2 * kHEhalf
 
static constexpr int kHFhalf = 864
 
static constexpr int kHFSizePreLS1 = 2 * kHFhalf
 
static constexpr int kHOhalf = 1080
 
static constexpr int kHOSizePreLS1 = 2 * kHOhalf
 
static constexpr int kHThalf = 2088
 
static constexpr int kHThalfPhase1 = 2520
 
static constexpr int kHTSizePhase1 = 2 * kHThalfPhase1
 
static constexpr int kHTSizePreLS1 = 2 * kHThalf
 
static constexpr unsigned int kOffCalibHB_ = 0
 
static constexpr unsigned int kOffCalibHBX_ = kOffCalibHOX_ + nCalibHOX_
 
static constexpr unsigned int kOffCalibHE1_ = kOffCalibHB_ + nCalibHB_
 
static constexpr unsigned int kOffCalibHE2_ = kOffCalibHO2_ + nCalibHO2_
 
static constexpr unsigned int kOffCalibHEX_ = kOffCalibHBX_ + nCalibHBX_
 
static constexpr unsigned int kOffCalibHF1_ = kOffCalibHE1_ + nCalibHE1_
 
static constexpr unsigned int kOffCalibHF2_ = kOffCalibHE2_ + nCalibHE2_
 
static constexpr unsigned int kOffCalibHFX_ = kOffCalibHEX_ + nCalibHEX_
 
static constexpr unsigned int kOffCalibHO1_ = kOffCalibHF1_ + nCalibHF1_
 
static constexpr unsigned int kOffCalibHO2_ = kOffCalibHO1_ + nCalibHO1_
 
static constexpr unsigned int kOffCalibHOX_ = kOffCalibHF2_ + nCalibHF2_
 
static constexpr unsigned int kPhiCalibHB_ = maxPhi_ / mPhiCalibHB_
 
static constexpr unsigned int kPhiCalibHBX_ = maxPhi_ / mPhiCalibHBX_
 
static constexpr unsigned int kPhiCalibHE_ = maxPhi_ / mPhiCalibHE_
 
static constexpr unsigned int kPhiCalibHEX_ = maxPhi_ / mPhiCalibHEX_
 
static constexpr unsigned int kPhiCalibHF1_ = maxPhi_ / mPhiCalibHF1_
 
static constexpr unsigned int kPhiCalibHO0_ = maxPhi_ / mPhiCalibHO0_
 
static constexpr unsigned int kPhiCalibHO1_ = maxPhi_ / mPhiCalibHO1_
 
static constexpr unsigned int kPhiCalibHO2_ = 4 * kPhiCalibHO1_ + kPhiCalibHO0_
 
static constexpr int kSizeForDenseIndexingPreLS1 = 2 * kHcalhalf
 
static constexpr int kZDChalf = 11
 
static constexpr unsigned int maxPhi_ = 72
 
static constexpr int minMaxDepth_ = 4
 
static constexpr unsigned int minPhi_ = 1
 
static constexpr unsigned int mPhiCalibHB_ = 4
 
static constexpr unsigned int mPhiCalibHBX_ = 1
 
static constexpr unsigned int mPhiCalibHE_ = 4
 
static constexpr unsigned int mPhiCalibHEX_ = 2
 
static constexpr unsigned int mPhiCalibHF1_ = 18
 
static constexpr unsigned int mPhiCalibHO0_ = 6
 
static constexpr unsigned int mPhiCalibHO1_ = 12
 
static constexpr unsigned int mPhiCalibHOX_ [nEtaCalibHOX_] = {2, 1}
 
static constexpr unsigned int nCalibHB_ = kchanCalibHB_ * nEtaCalibHB_
 
static constexpr unsigned int nCalibHBX_ = 2 * kPhiCalibHBX_ * nEtaCalibHBX_
 
static constexpr unsigned int nCalibHE1_ = kchanCalibHE1_ * nEtaCalibHE_
 
static constexpr unsigned int nCalibHE2_ = kchanCalibHE2_ * nEtaCalibHE_
 
static constexpr unsigned int nCalibHEX_ = 2 * kPhiCalibHEX_ * nEtaCalibHEX_
 
static constexpr unsigned int nCalibHF1_ = kchanCalibHF1_ * nEtaCalibHF_
 
static constexpr unsigned int nCalibHF2_ = nEtaCalibHF_
 
static constexpr unsigned int nCalibHO1_ = kPhiCalibHO2_ * nchanCalibHO_
 
static constexpr unsigned int nCalibHO2_ = nEtaCalibHO_
 
static constexpr int nCalibHOX_ = 2 * (nPhiCalibHOX_[0] + nPhiCalibHOX_[1])
 
static constexpr unsigned int nchanCalibHB_ = 3
 
static constexpr unsigned int nchanCalibHE1_ = 6
 
static constexpr unsigned int nchanCalibHF1_ = 3
 
static constexpr unsigned int nchanCalibHO_ = 2
 
static constexpr unsigned int nEtaCalibHB_ = 2
 
static constexpr unsigned int nEtaCalibHBX_ = 1
 
static constexpr unsigned int nEtaCalibHE_ = 2
 
static constexpr unsigned int nEtaCalibHEX_ = 2
 
static constexpr unsigned int nEtaCalibHF_ = 2
 
static constexpr unsigned int nEtaCalibHO_ = 5
 
static constexpr unsigned int nEtaCalibHOX_ = 2
 
static constexpr unsigned int nPhiCalibHOX_ [nEtaCalibHOX_] = {36, 72}
 
static constexpr int phiCalibHF2_ = 1
 
static constexpr int phiCalibHO_ [nEtaCalibHO_] = {59, 47, 53, 47, 47}
 
static constexpr int phiCalibHOX1_ = 4
 
static constexpr int phiCalibHOX2_ = 12
 
static constexpr int phiCalibHOX3_ = 6
 

Additional Inherited Members

- Protected Types inherited from CaloSubdetectorTopology
typedef std::pair< int, int > Coordinate
 
- Protected Member Functions inherited from CaloSubdetectorTopology
Coordinate getNeighbourIndex (const Coordinate &coord, const CaloDirection &dir) const
 

Detailed Description

The HcalTopology class contains a set of constants which represent the topology (tower relationship) of the CMS HCAL as built. These constants can be used to determine neighbor relationships and existence of cells.

For use with limited setups (testbeam, cosmic stands, etc), the topology can be limited by creating a rejection list – a list of cells which would normally exist in the full CMS HCAL, but are not present for the specified topology.

Definition at line 26 of file HcalTopology.h.

Member Typedef Documentation

◆ SegmentationMap

typedef std::map<unsigned, std::vector<int> > HcalTopology::SegmentationMap
private

Definition at line 223 of file HcalTopology.h.

Constructor & Destructor Documentation

◆ HcalTopology() [1/2]

HcalTopology::HcalTopology ( const HcalDDDRecConstants hcons,
const bool  mergePosition = false 
)

Definition at line 17 of file HcalTopology.cc.

References CALIBSize_, dPhiTable, dPhiTableHF, PVValHelper::eta, etaBinsHB_, etaBinsHE_, etaHE2HF_, etaHF2HE_, etaTable, etaTableHF, dqmdumpme::first, firstHBRing_, firstHEDoublePhiRing_, firstHEQuadPhiRing_, firstHERing_, firstHETripleDepthRing_, firstHFQuadPhiRing_, firstHFRing_, firstHORing_, HcalDDDRecConstants::getDepth(), HcalDDDRecConstants::getEtaBins(), HcalDDDRecConstants::getEtaRange(), HcalDDDRecConstants::getEtaTable(), HcalDDDRecConstants::getEtaTableHF(), HcalDDDRecConstants::getMaxDepth(), HcalDDDRecConstants::getNEta(), HcalDDDRecConstants::getNPhi(), HcalDDDRecConstants::getPhiOffs(), HcalDDDRecConstants::getPhiTable(), HcalDDDRecConstants::getPhiTableHF(), HcalDDDRecConstants::getTopoMode(), HcalDDDRecConstants::getTriggerMode(), HBSize_, hcons_, HESize_, HFSize_, HOSize_, HTSize_, mps_fire::i, createfilelist::int, IPHI_MAX, isotrackApplyRegressor::k, kCALIBSizePreLS1, kHBSizePreLS1, kHESizePreLS1, kHFSizePreLS1, kHOSizePreLS1, kHTSizePhase1, kHTSizePreLS1, kOffCalibHFX_, lastHBRing_, lastHERing_, lastHFRing_, lastHORing_, HcalTopologyMode::LHC, maxDepthHB_, maxDepthHE_, maxDepthHF_, maxEta_, maxPhiHE_, mode_, HLT_2024v14_cff::nEta, nEtaHB_, nEtaHE_, numberOfShapes_, phioff, relativeConstraints::ring, edm::second(), setDepthSegmentation(), HcalTopologyMode::SLHC, topoVersion_, triggerMode_, HcalTopologyMode::TriggerMode_2009, unit(), unitPhi, unitPhiHF, and units().

Referenced by HcalHardcodeGeometryEP::HcalHardcodeGeometryEP(), and HcalTopologyIdealEP::produce().

18  : hcons_(hcons),
19  mergePosition_(mergePosition),
20  excludeHB_(false),
21  excludeHE_(false),
22  excludeHO_(false),
23  excludeHF_(false),
24  firstHBRing_(1),
25  firstHERing_(999),
26  lastHERing_(0),
27  firstHFRing_(29),
28  lastHFRing_(41),
29  firstHORing_(1),
30  lastHORing_(15),
36  doublePhiBins_(36),
47  if (hcons_->getNPhi(1) > maxPhiHE_)
48  maxPhiHE_ = hcons_->getNPhi(1);
49  for (auto& i : etaBinsHE_) {
50  if (firstHERing_ > i.ieta)
51  firstHERing_ = i.ieta;
52  if (lastHERing_ < i.ieta)
53  lastHERing_ = i.ieta;
54  int unit = static_cast<int>((i.dphi / 5.0_deg) + 0.01);
55  if (unit == 2 && firstHEDoublePhiRing_ > i.ieta)
56  firstHEDoublePhiRing_ = i.ieta;
57  if (unit == 4 && firstHEQuadPhiRing_ > i.ieta)
58  firstHEQuadPhiRing_ = i.ieta;
59  if (i.layer.size() > 2 && firstHETripleDepthRing_ > i.ieta)
61  }
62  if (firstHERing_ > lastHERing_) {
64  } else {
66  }
68  topoVersion_ = 0; //DL
69  HBSize_ = kHBSizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/barrel * barrel/hcal
70  HESize_ = kHESizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/endcap * endcap/hcal
71  HOSize_ = kHOSizePreLS1; // ieta * iphi * 2
72  HFSize_ = kHFSizePreLS1; // ieta * iphi * depth * 2
74  numberOfShapes_ = 87;
75  } else if (mode_ == HcalTopologyMode::SLHC) { // need to know more eventually
76  topoVersion_ = 10;
79  HOSize_ = (lastHORing_ - firstHORing_ + 1) * IPHI_MAX * 2; // ieta * iphi * 2
80  HFSize_ = (lastHFRing_ - firstHFRing_ + 1) * IPHI_MAX * maxDepthHF_ * 2; // ieta * iphi * depth * 2
82  numberOfShapes_ = (maxPhiHE_ > 72) ? 1200 : 500;
83  }
87  } else {
89  }
90 
91 #ifdef EDM_ML_DEBUG
92  edm::LogVerbatim("HCalGeom") << "Topo sizes " << HBSize_ << ":" << HESize_ << ":" << HOSize_ << ":" << HFSize_ << ":"
93  << HTSize_ << ":" << CALIBSize_ << " for mode " << mode_ << ":" << triggerMode_;
94 #endif
95 
96  //The transition between HE/HF in eta
101  phioff = hcons_->getPhiOffs();
102  std::pair<int, int> ietaHF = hcons_->getEtaRange(2);
105  if (etaBinsHE_.size() > 1) {
106  double eta = etaBinsHE_[etaBinsHE_.size() - 1].etaMax;
107  for (unsigned int i = 1; i < etaTableHF.size(); ++i) {
108  if (eta < etaTableHF[i]) {
109  etaHE2HF_ = ietaHF.first + i - 1;
110  break;
111  }
112  }
113  eta = etaTableHF[0];
114  for (auto& i : etaBinsHE_) {
115  if (eta < i.etaMax) {
116  etaHF2HE_ = i.ieta;
117  break;
118  }
119  }
120  }
121  const double fiveDegInRad = 5.0_deg;
122  for (double k : dPhiTable) {
123  int units = (int)(k / fiveDegInRad + 0.5);
124  unitPhi.emplace_back(units);
125  }
126  for (double k : dPhiTableHF) {
127  int units = (int)(k / fiveDegInRad + 0.5);
128  unitPhiHF.emplace_back(units);
129  }
130  int nEta = hcons_->getNEta();
131  for (int ring = 1; ring <= nEta; ++ring) {
132  std::vector<int> segmentation = hcons_->getDepth(ring - 1, false);
133  setDepthSegmentation(ring, segmentation, false);
134 #ifdef EDM_ML_DEBUG
135  edm::LogVerbatim("HCalGeom") << "Set segmentation for ring " << ring << " with " << segmentation.size()
136  << " elements:";
137  for (unsigned int k = 0; k < segmentation.size(); ++k)
138  edm::LogVerbatim("HCalGeom") << "[" << k << "] " << segmentation[k];
139 #endif
140  segmentation = hcons_->getDepth(ring - 1, true);
141  setDepthSegmentation(ring, segmentation, true);
142 #ifdef EDM_ML_DEBUG
143  edm::LogVerbatim("HCalGeom") << "Set Plan-1 segmentation for ring " << ring << " with " << segmentation.size()
144  << " elements:";
145  for (unsigned int k = 0; k < segmentation.size(); ++k)
146  edm::LogVerbatim("HCalGeom") << "[" << k << "] " << segmentation[k];
147 #endif
148  }
149 
150 #ifdef EDM_ML_DEBUG
151  edm::LogVerbatim("HCalGeom") << "Constants in HcalTopology " << firstHBRing_ << ":" << lastHBRing_ << " "
152  << firstHERing_ << ":" << lastHERing_ << ":" << firstHEDoublePhiRing_ << ":"
153  << firstHEQuadPhiRing_ << ":" << firstHETripleDepthRing_ << " " << firstHFRing_ << ":"
154  << lastHFRing_ << ":" << firstHFQuadPhiRing_ << " " << firstHORing_ << ":" << lastHORing_
155  << " " << maxDepthHB_ << ":" << maxDepthHE_ << " " << nEtaHB_ << ":" << nEtaHE_ << " "
156  << etaHE2HF_ << ":" << etaHF2HE_ << " " << maxPhiHE_;
157 #endif
158 }
Log< level::Info, true > LogVerbatim
std::vector< int > unitPhiHF
Definition: HcalTopology.h:218
std::pair< int, int > getEtaRange(const int &i) const
const std::vector< double > & getPhiOffs() const
static constexpr unsigned int kOffCalibHFX_
Definition: HcalTopology.h:299
unsigned int numberOfShapes_
Definition: HcalTopology.h:214
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:216
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHB_
Definition: HcalTopology.h:198
std::vector< int > unitPhi
Definition: HcalTopology.h:218
int getNPhi(const int &type) const
HcalTopologyMode::TriggerMode triggerMode_
Definition: HcalTopology.h:191
unsigned int HESize_
Definition: HcalTopology.h:209
unsigned int HTSize_
Definition: HcalTopology.h:212
static constexpr int kHFSizePreLS1
Definition: HcalTopology.h:234
static constexpr int kHTSizePreLS1
Definition: HcalTopology.h:235
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:198
std::vector< HcalEtaBin > getEtaBins(const int &itype) const
static constexpr int kCALIBSizePreLS1
Definition: HcalTopology.h:237
U second(std::pair< T, U > const &p)
unsigned int CALIBSize_
Definition: HcalTopology.h:213
unsigned int HFSize_
Definition: HcalTopology.h:211
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:190
unsigned int HBSize_
Definition: HcalTopology.h:208
const std::vector< double > & getEtaTable() const
static constexpr int kHESizePreLS1
Definition: HcalTopology.h:232
static constexpr int kHBSizePreLS1
Definition: HcalTopology.h:231
static constexpr int kHOSizePreLS1
Definition: HcalTopology.h:233
std::vector< double > etaTableHF
Definition: HcalTopology.h:216
unsigned int HOSize_
Definition: HcalTopology.h:210
int getMaxDepth(const int &type) const
std::vector< double > etaTable
Definition: HcalTopology.h:216
Basic3DVector unit() const
static constexpr int kHTSizePhase1
Definition: HcalTopology.h:236
const std::vector< double > & getEtaTableHF() const
int firstHEQuadPhiRing_
Definition: HcalTopology.h:201
bool mergePosition_
Definition: HcalTopology.h:186
std::vector< double > phioff
Definition: HcalTopology.h:217
std::vector< double > dPhiTable
Definition: HcalTopology.h:216
TString units(TString variable, Char_t axis)
int firstHETripleDepthRing_
Definition: HcalTopology.h:202
const std::vector< double > & getPhiTable() const
const std::vector< double > & getPhiTableHF() const
void setDepthSegmentation(const unsigned ring, const std::vector< int > &readoutDepths, const bool flag)
std::vector< int > getDepth(const int &det, const int &phi, const int &zside, const unsigned int &eta) const
int firstHEDoublePhiRing_
Definition: HcalTopology.h:201
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHFQuadPhiRing_
Definition: HcalTopology.h:201

◆ HcalTopology() [2/2]

HcalTopology::HcalTopology ( HcalTopologyMode::Mode  mode,
int  maxDepthHB,
int  maxDepthHE,
HcalTopologyMode::TriggerMode  tmode = HcalTopologyMode::TriggerMode_2009 
)

Definition at line 160 of file HcalTopology.cc.

References CALIBSize_, firstHBRing_, firstHERing_, HBSize_, HESize_, HFSize_, HOSize_, HTSize_, IPHI_MAX, kHBSizePreLS1, kHESizePreLS1, kHFSizePreLS1, kHOSizePreLS1, kHTSizePhase1, kHTSizePreLS1, kOffCalibHFX_, lastHBRing_, lastHERing_, HcalTopologyMode::LHC, maxDepthHB(), maxDepthHE(), maxDepthHF_, maxPhiHE_, mode_, nEtaHB_, nEtaHE_, HcalTopologyMode::Run3, HcalTopologyMode::Run4, HcalTopologyMode::SLHC, topoVersion_, triggerMode_, and HcalTopologyMode::TriggerMode_2009.

164  : hcons_(nullptr),
165  mergePosition_(false),
166  excludeHB_(false),
167  excludeHE_(false),
168  excludeHO_(false),
169  excludeHF_(false),
170  mode_(mode),
171  triggerMode_(tmode),
172  firstHBRing_(1),
173  lastHBRing_(16),
174  firstHERing_(16),
175  lastHERing_(29),
176  firstHFRing_(29),
177  lastHFRing_(41),
178  firstHORing_(1),
179  lastHORing_(15),
181  firstHEQuadPhiRing_(999),
185  doublePhiBins_(36),
188  maxDepthHF_(2),
189  etaHE2HF_(30),
190  etaHF2HE_(29),
200  ? 500
201  : 87) {
202  if (mode_ == HcalTopologyMode::LHC) {
203  topoVersion_ = 0; //DL
204  HBSize_ = kHBSizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/barrel * barrel/hcal
205  HESize_ = kHESizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/endcap * endcap/hcal
206  HOSize_ = kHOSizePreLS1; // ieta * iphi * 2
207  HFSize_ = kHFSizePreLS1; // phi * eta * depth * pm
208  } else if ((mode_ == HcalTopologyMode::SLHC) || (mode_ == HcalTopologyMode::Run3) ||
209  (mode_ == HcalTopologyMode::Run4)) { // need to know more eventually
210  HBSize_ = maxDepthHB * 16 * IPHI_MAX * 2;
211  HESize_ = maxDepthHE * (29 - 16 + 1) * maxPhiHE_ * 2;
212  HOSize_ = 15 * IPHI_MAX * 2; // ieta * iphi * 2
213  HFSize_ = IPHI_MAX * 13 * maxDepthHF_ * 2; // phi * eta * depth * pm
215  topoVersion_ = 10;
216  }
217  nEtaHB_ = (lastHBRing_ - firstHBRing_ + 1);
218  nEtaHE_ = (lastHERing_ - firstHERing_ + 1);
221  } else {
223  }
224 
225  edm::LogWarning("HCalGeom") << "This is an incomplete constructor of HcalTopology - be warned that many "
226  << "functionalities will not be there - revert from this - get from EventSetup";
227 }
static constexpr unsigned int kOffCalibHFX_
Definition: HcalTopology.h:299
unsigned int numberOfShapes_
Definition: HcalTopology.h:214
HcalTopologyMode::TriggerMode triggerMode_
Definition: HcalTopology.h:191
int maxDepthHE() const
Definition: HcalTopology.h:140
unsigned int HESize_
Definition: HcalTopology.h:209
unsigned int HTSize_
Definition: HcalTopology.h:212
static constexpr int kHFSizePreLS1
Definition: HcalTopology.h:234
static constexpr int kHTSizePreLS1
Definition: HcalTopology.h:235
int maxDepthHB() const
Definition: HcalTopology.h:139
static constexpr int kCALIBSizePreLS1
Definition: HcalTopology.h:237
unsigned int CALIBSize_
Definition: HcalTopology.h:213
unsigned int HFSize_
Definition: HcalTopology.h:211
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:190
unsigned int HBSize_
Definition: HcalTopology.h:208
HcalTopologyMode::Mode mode() const
Definition: HcalTopology.h:34
static constexpr int kHESizePreLS1
Definition: HcalTopology.h:232
static constexpr int kHBSizePreLS1
Definition: HcalTopology.h:231
static constexpr int kHOSizePreLS1
Definition: HcalTopology.h:233
unsigned int HOSize_
Definition: HcalTopology.h:210
static constexpr int kHTSizePhase1
Definition: HcalTopology.h:236
int firstHEQuadPhiRing_
Definition: HcalTopology.h:201
bool mergePosition_
Definition: HcalTopology.h:186
int firstHETripleDepthRing_
Definition: HcalTopology.h:202
Log< level::Warning, false > LogWarning
int firstHEDoublePhiRing_
Definition: HcalTopology.h:201
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHFQuadPhiRing_
Definition: HcalTopology.h:201

Member Function Documentation

◆ dddConstants()

const HcalDDDRecConstants* HcalTopology::dddConstants ( ) const
inline

◆ decAIEta()

int HcalTopology::decAIEta ( const HcalDetId id,
HcalDetId  neighbors[2] 
) const
private

Get the neighbors of the given cell with lower absolute ieta

Decreasing in |ieta|, there are two neighbors of 40 and 21

Definition at line 776 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, etaHF2HE_, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHERing(), firstHFQuadPhiRing(), firstHFRing(), HcalBarrel, HcalEndcap, HcalForward, hcalRecHitTable_cff::iphi, IPHI_MAX, create_idmaps::n, valid(), and ecaldqm::zside().

Referenced by decIEta(), and incIEta().

776  {
777  int n = 1;
778  int aieta = id.ietaAbs();
779 
780  if (aieta == firstHEDoublePhiRing()) {
781  n = 2;
782  neighbors[0] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi(), id.depth());
783  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi() + 1, id.depth());
784  } else if (aieta == firstHFQuadPhiRing()) {
785  n = 2;
786  neighbors[0] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi(), id.depth());
787  if (id.iphi() == IPHI_MAX - 1)
788  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), 1, id.depth());
789  else
790  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi() + 2, id.depth());
791  } else if (aieta == firstHEQuadPhiRing()) {
792  n = 2;
793  neighbors[0] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi(), id.depth());
794  if (id.iphi() == IPHI_MAX - 1)
795  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), 1, id.depth());
796  else
797  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi() + 2, id.depth());
798  } else if (aieta == 1) {
799  neighbors[0] = HcalDetId(id.subdet(), -aieta * id.zside(), id.iphi(), id.depth());
800  } else if (aieta == firstHERing() && id.subdet() == HcalEndcap) {
801  neighbors[0] = HcalDetId(HcalBarrel, (aieta - 1) * id.zside(), id.iphi(), 1);
802  } else if (aieta == firstHFRing() && id.subdet() == HcalForward) {
803  neighbors[0] = HcalDetId(HcalEndcap, etaHF2HE_ * id.zside(), id.iphi(), 1);
804  } else
805  neighbors[0] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi(), id.depth());
806 
807  if (!valid(neighbors[0]) && n == 2) {
808  if (!valid(neighbors[1]))
809  n = 0;
810  else {
811  n = 1;
812  neighbors[0] = neighbors[1];
813  }
814  }
815  if (n == 2 && !valid(neighbors[1]))
816  n = 1;
817  if (n == 1 && !valid(neighbors[0]))
818  n = 0;
819 
820  return n;
821 }
bool valid(const DetId &id) const override
int zside(DetId const &)
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:103
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:102
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:101
int firstHFRing() const
Definition: HcalTopology.h:96
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:93

◆ decIEta()

int HcalTopology::decIEta ( const HcalDetId id,
HcalDetId  neighbors[2] 
) const

Get the neighbors of the given cell with lower (signed) ieta

Definition at line 743 of file HcalTopology.cc.

References decAIEta(), incAIEta(), and ecaldqm::zside().

Referenced by east().

743  {
744  if (id.zside() == 1)
745  return decAIEta(id, neighbors);
746  else
747  return incAIEta(id, neighbors);
748 }
int decAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
int zside(DetId const &)
int incAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const

◆ decIPhi()

bool HcalTopology::decIPhi ( const HcalDetId id,
HcalDetId neighbor 
) const

Get the neighbor (if present) of the given cell with lower iphi

Definition at line 685 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHFQuadPhiRing(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcalRecHitTable_cff::ieta, ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::barrel::ietaAbs(), hcalRecHitTable_cff::iphi, IPHI_MAX, maxPhiHE_, convertSQLiteXML::ok, valid(), and validRaw().

Referenced by HFStripFilter::runFilter(), and south().

685  {
686  bool ok = valid(id);
687  if (ok) {
688  switch (id.subdet()) {
689  case (HcalBarrel):
690  case (HcalOuter):
691  if (id.iphi() == 1)
692  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX, id.depth());
693  else
694  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 1, id.depth());
695  break;
696  case (HcalEndcap):
697  if (id.ietaAbs() >= firstHEQuadPhiRing()) {
698  if (id.iphi() == 3)
699  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX - 1, id.depth());
700  else
701  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 4, id.depth());
702  } else if (id.ietaAbs() >= firstHEDoublePhiRing()) {
703  if (id.iphi() == 1)
704  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX - 1, id.depth());
705  else
706  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 2, id.depth());
707  } else {
708  if (id.iphi() == 1)
709  neighbor = HcalDetId(id.subdet(), id.ieta(), maxPhiHE_, id.depth());
710  else
711  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 1, id.depth());
712  }
713  break;
714  case (HcalForward):
715  if (id.ietaAbs() >= firstHFQuadPhiRing()) {
716  if (id.iphi() == 3)
717  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX - 1, id.depth());
718  else
719  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 4, id.depth());
720  } else {
721  if (id.iphi() == 1)
722  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX - 1, id.depth());
723  else
724  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 2, id.depth());
725  }
726  if (!validRaw(neighbor))
727  ok = false;
728  break;
729  default:
730  ok = false;
731  }
732  }
733  return ok;
734 }
bool valid(const DetId &id) const override
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:103
bool validRaw(const HcalDetId &id) const
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:102
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:101
static const int IPHI_MAX
Definition: HcalTopology.cc:13

◆ decrementDepth()

bool HcalTopology::decrementDepth ( HcalDetId id) const

Get the detector in front of this one

Definition at line 922 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, depthBinInformation(), hcalRecHitTable_cff::detId, etaBinsHB_, etaBinsHE_, etaHF2HE_, etaRing(), firstHERing(), firstHFRing(), HcalDDDRecConstants::getDepthEta29(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcons_, mps_fire::i, hcalRecHitTable_cff::ieta, hcalRecHitTable_cff::iphi, lastHERing(), mode_, nEtaHB_, HcalTopologyMode::Run3, HcalTopologyMode::Run4, HcalTopologyMode::SLHC, validRaw(), and ecaldqm::zside().

Referenced by down().

922  {
923  HcalSubdetector subdet = detId.subdet();
924  int ieta = detId.ieta();
925  int etaRing = detId.ietaAbs();
926  int depth = detId.depth();
927  int iphi = detId.iphi();
928  int zside = detId.zside();
929  int nDepthBins, startingBin;
930  depthBinInformation(subdet, etaRing, iphi, zside, nDepthBins, startingBin);
931 
932  // see if the new depth bin exists
933  --depth;
934  if ((subdet == HcalOuter) || (subdet == HcalEndcap && etaRing == firstHERing())) {
935  subdet = HcalBarrel;
936  for (int i = 0; i < nEtaHB_; ++i) {
937  if (etaRing == etaBinsHB_[i].ieta) {
938  depth = etaBinsHB_[i].depthStart + etaBinsHB_[i].layer.size() - 1;
939  break;
940  }
941  }
942  } else if ((subdet == HcalEndcap) && (etaRing == lastHERing()) && (depth == hcons_->getDepthEta29(iphi, zside, 0)) &&
945  (ieta > 0) ? --ieta : ++ieta;
946  } else if (depth <= 0) {
947  if (subdet == HcalForward && etaRing == firstHFRing()) {
948  // overlap
949  subdet = HcalEndcap;
950  etaRing = etaHF2HE_;
951  ieta = (ieta > 0) ? etaRing : -etaRing;
952  for (const auto& i : etaBinsHE_) {
953  if (etaRing == i.ieta) {
954  depth = i.depthStart + i.layer.size() - 1;
955  break;
956  }
957  }
958  } else {
959  // no more chances
960  detId = HcalDetId();
961  return false;
962  }
963  }
964  detId = HcalDetId(subdet, ieta, detId.iphi(), depth);
965  return validRaw(detId);
966 }
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHB_
Definition: HcalTopology.h:198
int zside(DetId const &)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:198
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:190
HcalSubdetector
Definition: HcalAssistant.h:31
bool validRaw(const HcalDetId &id) const
void depthBinInformation(HcalSubdetector subdet, int etaRing, int iphi, int zside, int &nDepthBins, int &startingBin) const
finds the number of depth bins and which is the number to start with
int lastHERing() const
Definition: HcalTopology.h:94
int getDepthEta29(const int &iphi, const int &zside, const int &type) const
int firstHFRing() const
Definition: HcalTopology.h:96
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185
int firstHERing() const
Definition: HcalTopology.h:93

◆ denseId2detId()

DetId HcalTopology::denseId2detId ( unsigned int  denseid) const
overridevirtual

return a linear packed id

Reimplemented from CaloSubdetectorTopology.

Definition at line 1578 of file HcalTopology.cc.

References TauDecayModes::dec, Calorimetry_cff::dp, firstHBRing(), firstHERing(), HBSize_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HESize_, HOSize_, recoMuon::in, IPHI_MAX, kHBhalf, kHEhalf, kHFhalf, kHOhalf, kSizeForDenseIndexingPreLS1, lastHBRing(), lastHERing(), maxDepthHB_, maxDepthHE_, maxDepthHF_, maxPhiHE_, ncells(), nEtaHB_, nEtaHE_, DetId::rawId(), and topoVersion_.

Referenced by HcalGeometry::localCorners().

1578  {
1580  int ie(0);
1581  int ip(0);
1582  int dp(0);
1583  int in(denseid);
1584  int iz(1);
1585  if (topoVersion_ == 0) { //DL// pre-LS1
1586  if (denseid < kSizeForDenseIndexingPreLS1) {
1587  if (in > 2 * (kHBhalf + kHEhalf + kHOhalf) - 1) { // HF
1588  sd = HcalForward;
1589  in -= 2 * (kHBhalf + kHEhalf + kHOhalf);
1590  iz = (in < kHFhalf ? 1 : -1);
1591  in %= kHFhalf;
1592  ip = 4 * (in / 48);
1593  in %= 48;
1594  ip += 1 + (in > 21 ? 2 : 0);
1595  if (3 == ip % 4)
1596  in -= 22;
1597  ie = 29 + in / 2;
1598  dp = 1 + in % 2;
1599  } else if (in > 2 * (kHBhalf + kHEhalf) - 1) { // HO
1600  sd = HcalOuter;
1601  in -= 2 * (kHBhalf + kHEhalf);
1602  iz = (in < kHOhalf ? 1 : -1);
1603  in %= kHOhalf;
1604  dp = 4;
1605  ip = 1 + in / 15;
1606  ie = 1 + (in - 15 * (ip - 1));
1607  } else if (in > 2 * kHBhalf - 1) { // Endcap
1608  sd = HcalEndcap;
1609  in -= 2 * kHBhalf;
1610  iz = (in < kHEhalf ? 1 : -1);
1611  in %= kHEhalf;
1612  ip = 2 * (in / 36);
1613  in %= 36;
1614  ip += 1 + in / 28;
1615  if (0 == ip % 2)
1616  in %= 28;
1617  ie = 15 + (in < 2 ? 1 + in : 2 + (in < 20 ? 1 + (in - 2) / 2 : 9 + (in < 26 ? 1 + (in - 20) / 3 : 3)));
1618  dp = (in < 1
1619  ? 3
1620  : (in < 2 ? 1 : (in < 20 ? 1 + (in - 2) % 2 : (in < 26 ? 1 + (in - 20) % 3 : (1 + (in - 26) % 2)))));
1621  } else { // barrel
1622  iz = (in < kHBhalf ? 1 : -1);
1623  in %= kHBhalf;
1624  ip = in / 18 + 1;
1625  in %= 18;
1626  if (in < 14) {
1627  dp = 1;
1628  ie = in + 1;
1629  } else {
1630  in %= 14;
1631  dp = 1 + in % 2;
1632  ie = 15 + in / 2;
1633  }
1634  }
1635  }
1636  } else if (topoVersion_ == 10) {
1637  if (denseid < ncells()) {
1638  if (denseid >= (HBSize_ + HESize_ + HOSize_)) {
1639  sd = HcalForward;
1640  in -= (HBSize_ + HESize_ + HOSize_);
1641  dp = (in % maxDepthHF_) + 1;
1642  ip = (in - dp + 1) % (maxDepthHF_ * IPHI_MAX);
1643  ip = (ip / maxDepthHF_) + 1;
1644  ie = (in - dp + 1 - maxDepthHF_ * (ip - 1)) / (IPHI_MAX * maxDepthHF_);
1645  if (ie > 12) {
1646  ie = 54 - ie;
1647  iz = -1;
1648  } else {
1649  ie += 29;
1650  iz = 1;
1651  }
1652  } else if (denseid >= (HBSize_ + HESize_)) {
1653  sd = HcalOuter;
1654  in -= (HBSize_ + HESize_);
1655  dp = 4;
1656  ip = (in % IPHI_MAX) + 1;
1657  ie = (in - ip + 1) / IPHI_MAX;
1658  if (ie > 14) {
1659  ie = 30 - ie;
1660  iz = -1;
1661  } else {
1662  ie += 1;
1663  iz = 1;
1664  }
1665  } else if (denseid >= (HBSize_)) {
1666  sd = HcalEndcap;
1667  in -= (HBSize_);
1668  dp = (in % maxDepthHE_) + 1;
1669  ip = (in - dp + 1) % (maxDepthHE_ * maxPhiHE_);
1670  ip = (ip / maxDepthHE_) + 1;
1671  ie = (in - dp + 1 - maxDepthHE_ * (ip - 1)) / (maxPhiHE_ * maxDepthHE_);
1672  if (ie >= nEtaHE_) {
1673  ie = lastHERing() + nEtaHE_ - ie;
1674  iz = -1;
1675  } else {
1676  ie = firstHERing() + ie;
1677  iz = 1;
1678  }
1679  } else {
1680  sd = HcalBarrel;
1681  dp = (in % maxDepthHB_) + 1;
1682  ip = (in - dp + 1) % (maxDepthHB_ * IPHI_MAX);
1683  ip = (ip / maxDepthHB_) + 1;
1684  ie = (in - dp + 1 - maxDepthHB_ * (ip - 1)) / (IPHI_MAX * maxDepthHB_);
1685  if (ie >= nEtaHB_) {
1686  ie = lastHBRing() + nEtaHB_ - ie;
1687  iz = -1;
1688  } else {
1689  ie = firstHBRing() + ie;
1690  iz = 1;
1691  }
1692  }
1693  }
1694  }
1695  HcalDetId hid(sd, iz * int(ie), ip, dp);
1696 #ifdef EDM_ML_DEBUG
1697  edm::LogVerbatim("HcalGeom") << "Dens2Det " << topoVersion_ << " i/p " << std::hex << denseid << " : " << hid.rawId()
1698  << std::dec << " | " << hid;
1699 #endif
1700  return hid;
1701 }
Log< level::Info, true > LogVerbatim
unsigned int HESize_
Definition: HcalTopology.h:209
static constexpr int kHBhalf
Definition: HcalTopology.h:227
int firstHBRing() const
Definition: HcalTopology.h:91
int lastHBRing() const
Definition: HcalTopology.h:92
static constexpr int kHOhalf
Definition: HcalTopology.h:227
HcalSubdetector
Definition: HcalAssistant.h:31
unsigned int HBSize_
Definition: HcalTopology.h:208
static constexpr int kHEhalf
Definition: HcalTopology.h:227
unsigned int HOSize_
Definition: HcalTopology.h:210
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
static constexpr int kHFhalf
Definition: HcalTopology.h:227
static constexpr int kSizeForDenseIndexingPreLS1
Definition: HcalTopology.h:230
int lastHERing() const
Definition: HcalTopology.h:94
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:93

◆ denseId2detIdCALIB()

HcalCalibDetId HcalTopology::denseId2detIdCALIB ( const unsigned int &  id) const

return a Calib DetId from linear packed id

Definition at line 1404 of file HcalTopology.cc.

References chanCalibHB_, chanCalibHE1_, chanCalibHE2_, chanCalibHF1_, chanCalibHF2_, chanCalibHO_, chanCalibHOs_, etaCalibHB_, etaCalibHBX_, etaCalibHE_, etaCalibHEX_, etaCalibHF_, etaCalibHO_, etaCalibHOX_, HcalCalibDetId::HBX, HcalBarrel, HcalEmpty, HcalEndcap, HcalForward, HcalOuter, HcalCalibDetId::HEX, HcalCalibDetId::HOCrosstalk, EcalPhiSymFlatTableProducers_cfi::id, hcalRecHitTable_cff::ieta, hcalRecHitTable_cff::iphi, kchanCalibHB_, kchanCalibHE1_, kchanCalibHE2_, kchanCalibHF1_, kchanCalibHF2_, kOffCalibHBX_, kOffCalibHE1_, kOffCalibHE2_, kOffCalibHEX_, kOffCalibHF1_, kOffCalibHF2_, kOffCalibHFX_, kOffCalibHO1_, kOffCalibHO2_, kOffCalibHOX_, kPhiCalibHB_, kPhiCalibHBX_, kPhiCalibHE_, kPhiCalibHEX_, kPhiCalibHF1_, kPhiCalibHO0_, kPhiCalibHO1_, kPhiCalibHO2_, mPhiCalibHB_, mPhiCalibHE_, mPhiCalibHF1_, mPhiCalibHO0_, mPhiCalibHO1_, nPhiCalibHOX_, phiCalibHF2_, phiCalibHO_, phiCalibHOX1_, phiCalibHOX2_, and phiCalibHOX3_.

1404  {
1406  unsigned int hid0(hid);
1407  if (hid0 < kOffCalibHOX_) {
1408  HcalSubdetector subdet(HcalEmpty);
1409  int ieta(0), iphi(0), ichan(0), ctype(0);
1410  if (hid0 < kOffCalibHE1_) {
1411  int id0 = static_cast<int>(hid0);
1412  subdet = HcalBarrel;
1413  iphi = hid0 % kPhiCalibHB_;
1414  int keta = (hid0 < kchanCalibHB_) ? 0 : 1;
1415  ieta = etaCalibHB_[keta];
1416  ichan = (id0 - iphi - keta * kchanCalibHB_) / kPhiCalibHB_;
1417  iphi = mPhiCalibHB_ * (iphi + 1) - 1;
1418  ctype = chanCalibHB_[ichan];
1419  } else if (hid0 < kOffCalibHF1_) {
1420  hid0 -= kOffCalibHE1_;
1421  int id0 = static_cast<int>(hid0);
1422  subdet = HcalEndcap;
1423  iphi = hid0 % kPhiCalibHE_;
1424  int keta = (hid0 < kchanCalibHE1_) ? 0 : 1;
1425  ieta = etaCalibHE_[keta];
1426  ichan = (id0 - iphi - keta * kchanCalibHE1_) / kPhiCalibHE_;
1427  iphi = mPhiCalibHE_ * (iphi + 1) - 1;
1428  ctype = chanCalibHE1_[ichan];
1429  } else if (hid0 < kOffCalibHO1_) {
1430  hid0 -= kOffCalibHF1_;
1431  int id0 = static_cast<int>(hid0);
1432  subdet = HcalForward;
1433  iphi = hid0 % kPhiCalibHF1_;
1434  int keta = (hid0 < kchanCalibHF1_) ? 0 : 1;
1435  ieta = etaCalibHF_[keta];
1436  ichan = (id0 - iphi - keta * kchanCalibHF1_) / kPhiCalibHF1_;
1437  iphi = mPhiCalibHF1_ * iphi + 1;
1438  ctype = chanCalibHF1_[ichan];
1439  } else if (hid0 < kOffCalibHO2_) {
1440  hid0 -= kOffCalibHO1_;
1441  int id0 = static_cast<int>(hid0);
1442  subdet = HcalOuter;
1443  unsigned int kphi = hid0 % kPhiCalibHO2_;
1444  if (kphi < 2 * kPhiCalibHO1_) {
1445  ieta = (kphi >= kPhiCalibHO1_) ? etaCalibHO_[1] : etaCalibHO_[0];
1446  iphi = kphi % kPhiCalibHO1_;
1447  ichan = (id0 - iphi - (ieta + 2) * kPhiCalibHO1_) / kPhiCalibHO2_;
1448  iphi = (iphi + 1) * mPhiCalibHO1_ - 1;
1449  } else if (kphi < (2 * kPhiCalibHO1_ + kPhiCalibHO0_)) {
1450  ieta = etaCalibHO_[2];
1451  iphi = kphi % kPhiCalibHO0_;
1452  ichan = (id0 - iphi - (ieta + 2) * kPhiCalibHO1_) / kPhiCalibHO2_;
1453  iphi = (iphi + 1) * mPhiCalibHO0_ - 1;
1454  } else {
1455  ieta = (kphi >= 3 * kPhiCalibHO1_ + kPhiCalibHO0_) ? etaCalibHO_[4] : etaCalibHO_[3];
1456  iphi = kphi % kPhiCalibHO1_;
1457  ichan = (id0 - iphi - (ieta + 1) * kPhiCalibHO1_ - kPhiCalibHO0_) / kPhiCalibHO2_;
1458  iphi = (iphi + 1) * mPhiCalibHO1_ - 1;
1459  }
1460  ctype = chanCalibHO_[ichan];
1461  } else if (hid0 < kOffCalibHE2_) {
1462  hid0 -= kOffCalibHO2_;
1463  subdet = HcalOuter;
1464  iphi = phiCalibHO_[hid0];
1465  ctype = static_cast<int>(chanCalibHOs_);
1466  ieta = etaCalibHO_[hid0];
1467  } else if (hid0 < kOffCalibHF2_) {
1468  hid0 -= kOffCalibHE2_;
1469  subdet = HcalEndcap;
1470  iphi = hid0 % kPhiCalibHE_;
1471  int keta = (hid0 < kchanCalibHE2_) ? 0 : 1;
1472  ieta = etaCalibHE_[keta];
1473  iphi = mPhiCalibHE_ * (iphi + 1) - 1;
1474  ctype = chanCalibHE2_;
1475  } else {
1476  hid0 -= kOffCalibHF2_;
1477  subdet = HcalForward;
1478  int keta = (hid0 < kchanCalibHF2_) ? 0 : 1;
1479  ieta = etaCalibHF_[keta];
1480  iphi = phiCalibHF2_;
1481  ctype = chanCalibHF2_;
1482  }
1483  id = HcalCalibDetId(subdet, ieta, iphi, ctype);
1484 #ifdef EDM_ML_DEBUG
1485  edm::LogVerbatim("HCalGeom") << "CalibrationBox: " << hid << " o/p " << ieta << ":" << iphi << ":" << ichan << ":"
1486  << ctype << " " << id;
1487 #endif
1488  } else if (hid < kOffCalibHBX_) {
1489  hid0 -= kOffCalibHOX_;
1490  int iphi, ieta;
1491  if (hid0 < nPhiCalibHOX_[1]) {
1492  iphi = static_cast<int>(hid0) + 1;
1493  ieta = -etaCalibHOX_[1];
1494  } else if (hid0 < (nPhiCalibHOX_[1] + nPhiCalibHOX_[0])) {
1495  hid0 -= nPhiCalibHOX_[1];
1496  iphi = ((hid0 + phiCalibHOX1_) % phiCalibHOX2_ < phiCalibHOX3_) ? 2 * hid0 + 1 : 2 * hid0 + 2;
1497  ieta = -etaCalibHOX_[0];
1498  } else if (hid0 < (nPhiCalibHOX_[1] + 2 * nPhiCalibHOX_[0])) {
1499  hid0 -= (nPhiCalibHOX_[1] + nPhiCalibHOX_[0]);
1500  iphi = ((hid0 + phiCalibHOX1_) % phiCalibHOX2_ < phiCalibHOX3_) ? 2 * hid0 + 1 : 2 * hid0 + 2;
1501  ieta = etaCalibHOX_[0];
1502  } else {
1503  hid0 -= (nPhiCalibHOX_[1] + 2 * nPhiCalibHOX_[0]);
1504  iphi = static_cast<int>(hid0) + 1;
1505  ieta = etaCalibHOX_[1];
1506  }
1508 #ifdef EDM_ML_DEBUG
1509  edm::LogVerbatim("HCalGeom") << "HOCrossTalk: " << hid << ":" << hid0 << " o/p " << ieta << ":" << iphi << " "
1510  << id;
1511 #endif
1512  } else if (hid < kOffCalibHEX_) {
1513  hid0 -= kOffCalibHBX_;
1514  int ieta = (hid0 >= kPhiCalibHBX_) ? etaCalibHBX_ : -etaCalibHBX_;
1515  int iphi = (hid0 % kPhiCalibHBX_) + 1;
1517 #ifdef EDM_ML_DEBUG
1518  edm::LogVerbatim("HCalGeom") << "HBX: " << hid << ":" << hid0 << " o/p " << ieta << ":" << iphi << " " << id;
1519 #endif
1520  } else if (hid < kOffCalibHFX_) {
1521  hid0 -= kOffCalibHEX_;
1522  int iphi = 2 * (hid0 % kPhiCalibHEX_) + 1;
1523  int ieta = ((hid0 < kPhiCalibHEX_)
1524  ? -etaCalibHEX_[0]
1525  : ((hid0 < 2 * kPhiCalibHEX_) ? etaCalibHEX_[0]
1526  : ((hid0 < 3 * kPhiCalibHEX_) ? -etaCalibHEX_[1] : etaCalibHEX_[1])));
1528 #ifdef EDM_ML_DEBUG
1529  edm::LogVerbatim("HCalGeom") << "HEX: " << hid << ":" << hid0 << " o/p " << ieta << ":" << iphi << " " << id;
1530 #endif
1531  }
1532  return id;
1533 }
static constexpr int chanCalibHF2_
Definition: HcalTopology.h:279
Log< level::Info, true > LogVerbatim
static constexpr unsigned int kchanCalibHE1_
Definition: HcalTopology.h:252
static constexpr int etaCalibHE_[nEtaCalibHE_]
Definition: HcalTopology.h:251
static constexpr unsigned int kchanCalibHF1_
Definition: HcalTopology.h:259
static constexpr unsigned int kPhiCalibHBX_
Definition: HcalTopology.h:292
static constexpr int etaCalibHBX_
Definition: HcalTopology.h:291
static constexpr unsigned int kOffCalibHFX_
Definition: HcalTopology.h:299
static constexpr unsigned int kchanCalibHE2_
Definition: HcalTopology.h:276
static constexpr unsigned int kchanCalibHF2_
Definition: HcalTopology.h:280
static constexpr unsigned int kOffCalibHE1_
Definition: HcalTopology.h:247
static constexpr unsigned int kPhiCalibHO0_
Definition: HcalTopology.h:268
static constexpr int phiCalibHO_[nEtaCalibHO_]
Definition: HcalTopology.h:266
static constexpr int etaCalibHO_[nEtaCalibHO_]
Definition: HcalTopology.h:265
static constexpr int etaCalibHB_[nEtaCalibHB_]
Definition: HcalTopology.h:244
static constexpr unsigned int nPhiCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:286
static constexpr int chanCalibHE2_
Definition: HcalTopology.h:275
static constexpr int phiCalibHOX3_
Definition: HcalTopology.h:288
static constexpr unsigned int kPhiCalibHB_
Definition: HcalTopology.h:242
static constexpr int phiCalibHOX2_
Definition: HcalTopology.h:288
static constexpr int phiCalibHOX1_
Definition: HcalTopology.h:288
static constexpr unsigned int kOffCalibHEX_
Definition: HcalTopology.h:294
static constexpr int chanCalibHE1_[nchanCalibHE1_]
Definition: HcalTopology.h:250
HcalSubdetector
Definition: HcalAssistant.h:31
static constexpr int etaCalibHEX_[nEtaCalibHEX_]
Definition: HcalTopology.h:296
static constexpr unsigned int kPhiCalibHO2_
Definition: HcalTopology.h:270
static constexpr unsigned int kPhiCalibHO1_
Definition: HcalTopology.h:269
static constexpr unsigned int mPhiCalibHE_
Definition: HcalTopology.h:249
static constexpr int chanCalibHO_[nchanCalibHO_]
Definition: HcalTopology.h:264
static constexpr unsigned int mPhiCalibHO1_
Definition: HcalTopology.h:267
static constexpr unsigned int kOffCalibHOX_
Definition: HcalTopology.h:282
static constexpr unsigned int kPhiCalibHF1_
Definition: HcalTopology.h:256
static constexpr int etaCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:284
static constexpr int chanCalibHOs_
Definition: HcalTopology.h:263
static constexpr unsigned int kOffCalibHF1_
Definition: HcalTopology.h:254
static constexpr int chanCalibHF1_[nchanCalibHF1_]
Definition: HcalTopology.h:257
static constexpr unsigned int kOffCalibHE2_
Definition: HcalTopology.h:274
static constexpr unsigned int kOffCalibHBX_
Definition: HcalTopology.h:289
static constexpr int chanCalibHB_[nchanCalibHB_]
Definition: HcalTopology.h:243
static constexpr unsigned int mPhiCalibHO0_
Definition: HcalTopology.h:267
static constexpr unsigned int kOffCalibHO2_
Definition: HcalTopology.h:272
static constexpr int etaCalibHF_[nEtaCalibHF_]
Definition: HcalTopology.h:258
static constexpr unsigned int kPhiCalibHE_
Definition: HcalTopology.h:249
static constexpr unsigned int mPhiCalibHB_
Definition: HcalTopology.h:242
static constexpr unsigned int kchanCalibHB_
Definition: HcalTopology.h:245
static constexpr int phiCalibHF2_
Definition: HcalTopology.h:279
static constexpr unsigned int kOffCalibHO1_
Definition: HcalTopology.h:261
static constexpr unsigned int kPhiCalibHEX_
Definition: HcalTopology.h:297
static constexpr unsigned int mPhiCalibHF1_
Definition: HcalTopology.h:256
static constexpr unsigned int kOffCalibHF2_
Definition: HcalTopology.h:278

◆ depthBinInformation()

void HcalTopology::depthBinInformation ( HcalSubdetector  subdet,
int  etaRing,
int  iphi,
int  zside,
int &  nDepthBins,
int &  startingBin 
) const

finds the number of depth bins and which is the number to start with

Definition at line 823 of file HcalTopology.cc.

References etaRing(), firstHERing(), firstHETripleDepthRing(), HcalDDDRecConstants::getDepthEta16(), HcalDDDRecConstants::getMaxDepth(), HcalDDDRecConstants::getMinDepth(), HcalTopologyMode::H2HE, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcons_, hcalRecHitTable_cff::iphi, lastHBRing(), lastHERing(), maxDepthHF_, mode_, HcalTopologyMode::Run3, HcalTopologyMode::Run4, HcalTopologyMode::SLHC, and ecaldqm::zside().

Referenced by CaloTowerConstituentsMap::constituentsOf(), decrementDepth(), HcalTrigTowerGeometry::detIds(), and incrementDepth().

824  {
825  if (subdet == HcalBarrel) {
828  startingBin = hcons_->getMinDepth(0, etaRing, iphi, zside);
829  if (etaRing == lastHBRing()) {
830  nDepthBins = hcons_->getDepthEta16(1, iphi, zside) - startingBin + 1;
831  } else {
832  nDepthBins = hcons_->getMaxDepth(0, etaRing, iphi, zside) - startingBin + 1;
833  }
834  } else {
835  if (etaRing <= 14) {
836  nDepthBins = 1;
837  startingBin = 1;
838  } else {
839  nDepthBins = 2;
840  startingBin = 1;
841  }
842  }
843  } else if (subdet == HcalEndcap) {
846  if (etaRing == firstHERing()) {
847  startingBin = hcons_->getDepthEta16(2, iphi, zside);
848  } else {
849  startingBin = hcons_->getMinDepth(1, etaRing, iphi, zside);
850  }
851  nDepthBins = hcons_->getMaxDepth(1, etaRing, iphi, zside) - startingBin + 1;
852  } else {
853  if (etaRing == firstHERing()) {
854  nDepthBins = 1;
855  startingBin = 3;
856  } else if (etaRing == 17) {
857  nDepthBins = 1;
858  startingBin = 1;
859  } else if (etaRing == lastHERing()) {
860  nDepthBins = 2;
861  startingBin = 1;
862  } else {
863  nDepthBins = (etaRing >= firstHETripleDepthRing()) ? 3 : 2;
864  startingBin = 1;
865  }
866  }
867  } else if (subdet == HcalForward) {
868  nDepthBins = maxDepthHF_;
869  startingBin = 1;
870  } else if (subdet == HcalOuter) {
871  nDepthBins = 1;
872  startingBin = 4;
873  } else {
874  edm::LogWarning("HCalGeom") << "Bad HCAL subdetector " << subdet;
875  }
876 }
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
int zside(DetId const &)
int firstHETripleDepthRing() const
Definition: HcalTopology.h:104
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
int lastHBRing() const
Definition: HcalTopology.h:92
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:190
int getMaxDepth(const int &type) const
int lastHERing() const
Definition: HcalTopology.h:94
Log< level::Warning, false > LogWarning
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185
int firstHERing() const
Definition: HcalTopology.h:93

◆ detId2denseId()

unsigned int HcalTopology::detId2denseId ( const DetId id) const
overridevirtual

return a linear packed id

Reimplemented from CaloSubdetectorTopology.

Definition at line 1535 of file HcalTopology.cc.

References TauDecayModes::dec, HcalDetId::depth(), detId2denseIdPreLS1(), firstHBRing(), firstHERing(), HBSize_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HESize_, HOSize_, HcalDetId::ieta(), HcalDetId::iphi(), IPHI_MAX, lastHBRing(), lastHERing(), maxDepthHB_, maxDepthHE_, maxDepthHF_, maxPhiHE_, nEtaHB_, nEtaHE_, HcalDetId::subdet(), and topoVersion_.

Referenced by HFPreReconstructor::fillInfos(), HcalGeometry::getGeometry(), HcalGeometry::getGeometryBase(), HcalGeometry::indexFor(), HcalDDDGeometry::newCellImpl(), HcalGeometry::newCellImpl(), and HBHEPhase1Reconstructor::processData().

1535  {
1536  unsigned int retval(0);
1537  if (topoVersion_ == 0) { // pre-LS1
1538  retval = detId2denseIdPreLS1(id);
1539  } else if (topoVersion_ == 10) {
1540  HcalDetId hid(id);
1541  if (hid.subdet() == HcalBarrel) {
1542  retval = (hid.depth() - 1) + maxDepthHB_ * (hid.iphi() - 1);
1543  if (hid.ieta() > 0)
1544  retval += maxDepthHB_ * IPHI_MAX * (hid.ieta() - firstHBRing());
1545  else
1546  retval += maxDepthHB_ * IPHI_MAX * (hid.ieta() + lastHBRing() + nEtaHB_);
1547  } else if (hid.subdet() == HcalEndcap) {
1548  retval = HBSize_;
1549  retval += (hid.depth() - 1) + maxDepthHE_ * (hid.iphi() - 1);
1550  if (hid.ieta() > 0)
1551  retval += maxDepthHE_ * maxPhiHE_ * (hid.ieta() - firstHERing());
1552  else
1553  retval += maxDepthHE_ * maxPhiHE_ * (hid.ieta() + lastHERing() + nEtaHE_);
1554  } else if (hid.subdet() == HcalOuter) {
1555  retval = HBSize_ + HESize_;
1556  if (hid.ieta() > 0)
1557  retval += (hid.iphi() - 1) + IPHI_MAX * (hid.ieta() - 1);
1558  else
1559  retval += (hid.iphi() - 1) + IPHI_MAX * (30 + hid.ieta());
1560  } else if (hid.subdet() == HcalForward) {
1561  retval = HBSize_ + HESize_ + HOSize_;
1562  retval += (hid.depth() - 1) + maxDepthHF_ * (hid.iphi() - 1);
1563  if (hid.ieta() > 0)
1564  retval += maxDepthHF_ * IPHI_MAX * (hid.ieta() - 29);
1565  else
1566  retval += maxDepthHF_ * IPHI_MAX * ((41 + 13) + hid.ieta());
1567  } else {
1568  retval = 0xFFFFFFFu;
1569  }
1570  }
1571 #ifdef EDM_ML_DEBUG
1572  edm::LogVerbatim("HcalGeom") << "DetId2Dense " << topoVersion_ << " ID " << std::hex << id.rawId() << std::dec
1573  << " | " << HcalDetId(id) << " : " << std::hex << retval << std::dec;
1574 #endif
1575  return retval;
1576 }
Log< level::Info, true > LogVerbatim
unsigned int detId2denseIdPreLS1(const DetId &id) const
unsigned int HESize_
Definition: HcalTopology.h:209
int firstHBRing() const
Definition: HcalTopology.h:91
int lastHBRing() const
Definition: HcalTopology.h:92
unsigned int HBSize_
Definition: HcalTopology.h:208
unsigned int HOSize_
Definition: HcalTopology.h:210
int lastHERing() const
Definition: HcalTopology.h:94
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:93

◆ detId2denseIdCALIB()

unsigned int HcalTopology::detId2denseIdCALIB ( const DetId id) const

return a linear packed id from CALIB

Definition at line 1291 of file HcalTopology.cc.

References funct::abs(), HcalCalibDetId::calibFlavor(), HcalCalibDetId::CalibrationBox, HcalCalibDetId::cboxChannel(), chanCalibHB_, chanCalibHE1_, chanCalibHE2_, chanCalibHF1_, chanCalibHF2_, chanCalibHO_, chanCalibHOs_, etaCalibHB_, etaCalibHBX_, etaCalibHE_, etaCalibHEX_, etaCalibHF_, etaCalibHO_, etaCalibHOX_, spr::find(), HcalCalibDetId::HBX, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalCalibDetId::hcalSubdet(), HcalCalibDetId::HEX, HcalCalibDetId::HOCrosstalk, hcalRecHitTable_cff::ieta, HcalCalibDetId::ieta(), hcalRecHitTable_cff::iphi, HcalCalibDetId::iphi(), kchanCalibHB_, kchanCalibHE1_, kchanCalibHE2_, kchanCalibHF1_, kchanCalibHF2_, kOffCalibHB_, kOffCalibHBX_, kOffCalibHE1_, kOffCalibHE2_, kOffCalibHEX_, kOffCalibHF1_, kOffCalibHF2_, kOffCalibHO1_, kOffCalibHO2_, kOffCalibHOX_, kPhiCalibHB_, kPhiCalibHBX_, kPhiCalibHE_, kPhiCalibHEX_, kPhiCalibHF1_, kPhiCalibHO0_, kPhiCalibHO1_, kPhiCalibHO2_, mPhiCalibHB_, mPhiCalibHE_, mPhiCalibHEX_, mPhiCalibHF1_, mPhiCalibHO0_, mPhiCalibHO1_, nchanCalibHB_, nchanCalibHE1_, nchanCalibHF1_, nchanCalibHO_, nEtaCalibHB_, nEtaCalibHE_, nEtaCalibHF_, nEtaCalibHO_, nPhiCalibHOX_, HcalCalibDetId::zside(), and ecaldqm::zside().

Referenced by HcalLogicalMapGenerator::buildCALIBMap(), HcalLogicalMapGenerator::buildHOXMap(), HcalLogicalMap::checkHashIds(), HcalLogicalMap::getHcalFrontEndId(), and HcalCondObjectContainerBase::indexFor().

1291  {
1292  HcalCalibDetId tid(id);
1293  int channel = tid.cboxChannel();
1294  int ieta = tid.ieta();
1295  int iphi = tid.iphi();
1296  int zside = tid.zside();
1297  unsigned int index = 0xFFFFFFFFu;
1298 
1299  if (tid.calibFlavor() == HcalCalibDetId::CalibrationBox) {
1300  HcalSubdetector subDet = tid.hcalSubdet();
1301 
1302  if (subDet == HcalBarrel) {
1303 #ifdef EDM_ML_DEBUG
1304  edm::LogVerbatim("HCalGeom") << "CALIB_HB: dphi = 4 (18 phi values), 3 channel types (0,1,2), eta = -1 or 1\n "
1305  " total of 18*3*2=108 channels";
1306 #endif
1308  auto kndx = std::find(chanCalibHB_, chanCalibHB_ + nchanCalibHB_, channel);
1309  if (indx != etaCalibHB_ + nEtaCalibHB_ && kndx != chanCalibHB_ + nchanCalibHB_) {
1310  int keta = static_cast<int>(indx - etaCalibHB_);
1311  int kchn = static_cast<int>(kndx - chanCalibHB_);
1312  index = ((iphi + 1) / mPhiCalibHB_ - 1) + kPhiCalibHB_ * kchn + keta * kchanCalibHB_ + kOffCalibHB_;
1313  }
1314  } else if (subDet == HcalEndcap) {
1315 #ifdef EDM_ML_DEBUG
1316  edm::LogVerbatim("HCalGeom") << "CALIB_HE: dphi = 4 (18 phi values), 7 channel types (0,1,2,3,4,5,6), eta = "
1317  "-1/+1\n total of 18*7*2=252 channels if (channel > 2) channel -= 1";
1318 #endif
1320  if (indx != etaCalibHE_ + nEtaCalibHE_) {
1321  int keta = static_cast<int>(indx - etaCalibHE_);
1322  auto kndx = std::find(chanCalibHE1_, chanCalibHE1_ + nchanCalibHE1_, channel);
1323  if (kndx != chanCalibHE1_ + nchanCalibHE1_) {
1324  int kchn = static_cast<int>(kndx - chanCalibHE1_);
1325  index = ((iphi + 1) / mPhiCalibHE_ - 1) + kPhiCalibHE_ * kchn + keta * kchanCalibHE1_ + kOffCalibHE1_;
1326  } else if (channel == chanCalibHE2_) {
1327  index = ((iphi + 1) / mPhiCalibHE_ - 1) + keta * kchanCalibHE2_ + kOffCalibHE2_;
1328  }
1329  }
1330  } else if (subDet == HcalForward) {
1331 #ifdef EDM_ML_DEBUG
1332  edm::LogVerbatim("HCalGeom")
1333  << "CALIB_HF: dphi = 18 (4 phi values), 3 channel types (0,1,8), eta = -1 or +1\n or iphi = 1; "
1334  "channel = 9, eta = -1 or +1 total channels 4*3*2=24 + 2";
1335 #endif
1337  if (indx != etaCalibHF_ + nEtaCalibHF_) {
1338  int keta = static_cast<int>(indx - etaCalibHF_);
1339  auto kndx = std::find(chanCalibHF1_, chanCalibHF1_ + nchanCalibHF1_, channel);
1340  if (kndx != chanCalibHF1_ + nchanCalibHF1_) {
1341  int kchn = static_cast<int>(kndx - chanCalibHF1_);
1342  index = ((iphi - 1) / mPhiCalibHF1_) + kPhiCalibHF1_ * kchn + keta * kchanCalibHF1_ + kOffCalibHF1_;
1343  } else if (channel == chanCalibHF2_) {
1344  index = keta * kchanCalibHF2_ + kOffCalibHF2_;
1345  }
1346  }
1347  } else if (subDet == HcalOuter) {
1348 #ifdef EDM_ML_DEBUG
1349  edm::LogVerbatim("HCalGeom") << "CALIB_HO: ";
1350 #endif
1352  if (indx != etaCalibHO_ + nEtaCalibHO_) {
1353  int keta = static_cast<int>(indx - etaCalibHO_);
1354  auto kndx = std::find(chanCalibHO_, chanCalibHO_ + nchanCalibHO_, channel);
1355  //there are 5 special calib crosstalk channels, one in each ring
1356  if (channel == chanCalibHOs_) {
1357  index = keta + kOffCalibHO2_;
1358  } else if (kndx != chanCalibHO_ + nchanCalibHO_) {
1359  //for HOM/HOP dphi = 6 (12 phi values), 2 channel types (0,1), eta = -2,-1 or 1,2
1360  //for HO0/YB0 dphi = 12 (6 phi values), 2 channel types (0,1), eta = 0
1361  int kchn = static_cast<int>(kndx - chanCalibHO_);
1362  int kphi = (ieta == 0) ? ((iphi + 1) / mPhiCalibHO0_ - 1) : ((iphi + 1) / mPhiCalibHO1_ - 1);
1363  if (ieta < 0) {
1364  index = kphi + kPhiCalibHO2_ * kchn + kPhiCalibHO1_ * keta + kOffCalibHO1_;
1365  } else if (ieta > 0) {
1366  index = kphi + kPhiCalibHO2_ * kchn + kPhiCalibHO1_ * (keta - 1) + kPhiCalibHO0_ + kOffCalibHO1_;
1367  } else {
1368  index = kphi + kPhiCalibHO2_ * kchn + kPhiCalibHO1_ * keta + kOffCalibHO1_;
1369  }
1370  }
1371  }
1372  } else {
1373  edm::LogWarning("HGCalGeom") << "HCAL Det Id not valid!";
1374  }
1375  } else if (tid.calibFlavor() == HcalCalibDetId::HOCrosstalk) {
1376 #ifdef EDM_ML_DEBUG
1377  edm::LogVerbatim("HCalGeom") << "HX: for YB0/HO0 phi is grouped in 6 groups of 6 with dphi=2 but the transitions "
1378  "are 1 or 3 in such a way that the %36 operation yeilds unique values for every "
1379  "iphi\n ieta = 0 for HO2M/HO1M ieta=2 for HO1P/HO2P; /ieta = 1 YB0/HO0";
1380 #endif
1381  int kphi = ((std::abs(ieta) == etaCalibHOX_[0]) ? ((iphi % 2 == 0) ? (iphi / 2 - 1) : (iphi - 1) / 2) : (iphi - 1));
1382  if (std::abs(ieta) == etaCalibHOX_[0]) {
1383  index = kphi + (((zside + 1) * nPhiCalibHOX_[0]) / 2) + nPhiCalibHOX_[1] + kOffCalibHOX_;
1384  } else if (std::abs(ieta) == etaCalibHOX_[1]) {
1385  index = kphi + ((zside + 1) * nPhiCalibHOX_[1]) + kOffCalibHOX_;
1386  }
1387  } else if (tid.calibFlavor() == HcalCalibDetId::HBX) {
1388  if (std::abs(ieta) == etaCalibHBX_) {
1389  index = kOffCalibHBX_ + (iphi - 1) + (zside + 1) * kPhiCalibHBX_ / 2;
1390  }
1391  } else if (tid.calibFlavor() == HcalCalibDetId::HEX) {
1392  if (std::abs(ieta) == etaCalibHEX_[0]) {
1393  index = kOffCalibHEX_ + (iphi - 1) / mPhiCalibHEX_ + (zside + 1) * kPhiCalibHEX_ / 2;
1394  } else if (std::abs(ieta) == etaCalibHEX_[1]) {
1395  index = kOffCalibHEX_ + (iphi - 1) / mPhiCalibHEX_ + (zside + 1) * kPhiCalibHEX_ / 2 + 2 * kPhiCalibHEX_;
1396  }
1397  }
1398 #ifdef EDM_ML_DEBUG
1399  edm::LogVerbatim("HCalGeom") << " " << ieta << " " << zside << " " << iphi << " " << index;
1400 #endif
1401  return index;
1402 }
static constexpr int chanCalibHF2_
Definition: HcalTopology.h:279
Log< level::Info, true > LogVerbatim
static constexpr unsigned int kchanCalibHE1_
Definition: HcalTopology.h:252
static constexpr int etaCalibHE_[nEtaCalibHE_]
Definition: HcalTopology.h:251
static constexpr unsigned int kchanCalibHF1_
Definition: HcalTopology.h:259
static constexpr unsigned int kPhiCalibHBX_
Definition: HcalTopology.h:292
static constexpr int etaCalibHBX_
Definition: HcalTopology.h:291
static constexpr unsigned int kchanCalibHE2_
Definition: HcalTopology.h:276
static constexpr unsigned int kchanCalibHF2_
Definition: HcalTopology.h:280
static constexpr unsigned int kOffCalibHE1_
Definition: HcalTopology.h:247
static constexpr unsigned int nEtaCalibHO_
Definition: HcalTopology.h:262
static constexpr unsigned int kPhiCalibHO0_
Definition: HcalTopology.h:268
int zside(DetId const &)
static constexpr int etaCalibHO_[nEtaCalibHO_]
Definition: HcalTopology.h:265
static constexpr unsigned int nEtaCalibHF_
Definition: HcalTopology.h:255
static constexpr unsigned int nchanCalibHO_
Definition: HcalTopology.h:262
static constexpr int etaCalibHB_[nEtaCalibHB_]
Definition: HcalTopology.h:244
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
static constexpr unsigned int nPhiCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:286
static constexpr int chanCalibHE2_
Definition: HcalTopology.h:275
static constexpr unsigned int nEtaCalibHB_
Definition: HcalTopology.h:241
static constexpr unsigned int kPhiCalibHB_
Definition: HcalTopology.h:242
static constexpr unsigned int nEtaCalibHE_
Definition: HcalTopology.h:248
static constexpr unsigned int nchanCalibHB_
Definition: HcalTopology.h:241
static constexpr unsigned int kOffCalibHEX_
Definition: HcalTopology.h:294
static constexpr unsigned int mPhiCalibHEX_
Definition: HcalTopology.h:295
static constexpr int chanCalibHE1_[nchanCalibHE1_]
Definition: HcalTopology.h:250
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr int etaCalibHEX_[nEtaCalibHEX_]
Definition: HcalTopology.h:296
static constexpr unsigned int kPhiCalibHO2_
Definition: HcalTopology.h:270
static constexpr unsigned int kPhiCalibHO1_
Definition: HcalTopology.h:269
static constexpr unsigned int mPhiCalibHE_
Definition: HcalTopology.h:249
static constexpr unsigned int kOffCalibHB_
Definition: HcalTopology.h:240
static constexpr unsigned int nchanCalibHF1_
Definition: HcalTopology.h:255
static constexpr int chanCalibHO_[nchanCalibHO_]
Definition: HcalTopology.h:264
static constexpr unsigned int nchanCalibHE1_
Definition: HcalTopology.h:248
static constexpr unsigned int mPhiCalibHO1_
Definition: HcalTopology.h:267
static constexpr unsigned int kOffCalibHOX_
Definition: HcalTopology.h:282
static constexpr unsigned int kPhiCalibHF1_
Definition: HcalTopology.h:256
static constexpr int etaCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:284
static constexpr int chanCalibHOs_
Definition: HcalTopology.h:263
static constexpr unsigned int kOffCalibHF1_
Definition: HcalTopology.h:254
static constexpr int chanCalibHF1_[nchanCalibHF1_]
Definition: HcalTopology.h:257
static constexpr unsigned int kOffCalibHE2_
Definition: HcalTopology.h:274
static constexpr unsigned int kOffCalibHBX_
Definition: HcalTopology.h:289
static constexpr int chanCalibHB_[nchanCalibHB_]
Definition: HcalTopology.h:243
static constexpr unsigned int mPhiCalibHO0_
Definition: HcalTopology.h:267
static constexpr unsigned int kOffCalibHO2_
Definition: HcalTopology.h:272
static constexpr int etaCalibHF_[nEtaCalibHF_]
Definition: HcalTopology.h:258
static constexpr unsigned int kPhiCalibHE_
Definition: HcalTopology.h:249
static constexpr unsigned int mPhiCalibHB_
Definition: HcalTopology.h:242
static constexpr unsigned int kchanCalibHB_
Definition: HcalTopology.h:245
Log< level::Warning, false > LogWarning
static constexpr unsigned int kOffCalibHO1_
Definition: HcalTopology.h:261
static constexpr unsigned int kPhiCalibHEX_
Definition: HcalTopology.h:297
static constexpr unsigned int mPhiCalibHF1_
Definition: HcalTopology.h:256
static constexpr unsigned int kOffCalibHF2_
Definition: HcalTopology.h:278

◆ detId2denseIdHB()

unsigned int HcalTopology::detId2denseIdHB ( const DetId id) const

return a linear packed id from HB

Definition at line 1182 of file HcalTopology.cc.

References HcalDetId::depth(), Calorimetry_cff::dp, firstHBRing(), HcalDetId::ieta(), HcalDetId::ietaAbs(), HcalDetId::iphi(), IPHI_MAX, kHBhalf, lastHBRing(), maxDepthHB_, nEtaHB_, topoVersion_, and HcalDetId::zside().

Referenced by HcalLogicalMapGenerator::buildHBEFTMap(), HcalLogicalMap::checkHashIds(), HcalLogicalMap::getHcalFrontEndId(), and HcalCondObjectContainerBase::indexFor().

1182  {
1183  HcalDetId hid(id);
1184  const int ip(hid.iphi());
1185  const int ie(hid.ietaAbs());
1186  const int dp(hid.depth());
1187  const int zn(hid.zside() < 0 ? 1 : 0);
1188  unsigned int retval = 0xFFFFFFFFu;
1189  if (topoVersion_ == 0) {
1190  retval = (ip - 1) * 18 + dp - 1 + ie - (ie < 16 ? 1 : 0) + zn * kHBhalf;
1191  } else if (topoVersion_ == 10) {
1192  retval = (dp - 1) + maxDepthHB_ * (ip - 1);
1193  if (hid.ieta() > 0)
1194  retval += maxDepthHB_ * IPHI_MAX * (hid.ieta() - firstHBRing());
1195  else
1196  retval += maxDepthHB_ * IPHI_MAX * (hid.ieta() + lastHBRing() + nEtaHB_);
1197  }
1198  return retval;
1199 }
static constexpr int kHBhalf
Definition: HcalTopology.h:227
int firstHBRing() const
Definition: HcalTopology.h:91
int lastHBRing() const
Definition: HcalTopology.h:92
static const int IPHI_MAX
Definition: HcalTopology.cc:13

◆ detId2denseIdHE()

unsigned int HcalTopology::detId2denseIdHE ( const DetId id) const

return a linear packed id from HE

Definition at line 1201 of file HcalTopology.cc.

References HcalDetId::depth(), Calorimetry_cff::dp, firstHERing(), HcalDetId::ieta(), HcalDetId::ietaAbs(), HcalDetId::iphi(), kHEhalf, lastHERing(), maxDepthHE_, maxPhiHE_, nEtaHE_, topoVersion_, and HcalDetId::zside().

Referenced by HcalLogicalMapGenerator::buildHBEFTMap(), HcalLogicalMap::checkHashIds(), HcalLogicalMap::getHcalFrontEndId(), and HcalCondObjectContainerBase::indexFor().

1201  {
1202  HcalDetId hid(id);
1203  const int ip(hid.iphi());
1204  const int ie(hid.ietaAbs());
1205  const int dp(hid.depth());
1206  const int zn(hid.zside() < 0 ? 1 : 0);
1207  unsigned int retval = 0xFFFFFFFFu;
1208  if (topoVersion_ == 0) {
1209  retval = (ip - 1) * 8 + (ip / 2) * 20 +
1210  ((ie == 16 || ie == 17)
1211  ? ie - 16
1212  : ((ie >= 18 && ie <= 20)
1213  ? 2 + 2 * (ie - 18) + dp - 1
1214  : ((ie >= 21 && ie <= 26) ? 8 + 2 * (ie - 21) + dp - 1
1215  : ((ie >= 27 && ie <= 28) ? 20 + 3 * (ie - 27) + dp - 1
1216  : 26 + 2 * (ie - 29) + dp - 1)))) +
1217  zn * kHEhalf;
1218  } else if (topoVersion_ == 10) {
1219  retval = (dp - 1) + maxDepthHE_ * (ip - 1);
1220  if (hid.ieta() > 0)
1221  retval += maxDepthHE_ * maxPhiHE_ * (hid.ieta() - firstHERing());
1222  else
1223  retval += maxDepthHE_ * maxPhiHE_ * (hid.ieta() + lastHERing() + nEtaHE_);
1224  }
1225  return retval;
1226 }
static constexpr int kHEhalf
Definition: HcalTopology.h:227
int lastHERing() const
Definition: HcalTopology.h:94
int firstHERing() const
Definition: HcalTopology.h:93

◆ detId2denseIdHF()

unsigned int HcalTopology::detId2denseIdHF ( const DetId id) const

return a linear packed id from HF

Definition at line 1246 of file HcalTopology.cc.

References HcalDetId::depth(), Calorimetry_cff::dp, HcalDetId::ieta(), HcalDetId::ietaAbs(), HcalDetId::iphi(), IPHI_MAX, kHFhalf, maxDepthHF_, topoVersion_, and HcalDetId::zside().

Referenced by HcalLogicalMapGenerator::buildHBEFTMap(), HcalLogicalMap::checkHashIds(), HcalLogicalMap::getHcalFrontEndId(), and HcalCondObjectContainerBase::indexFor().

1246  {
1247  HcalDetId hid(id);
1248  const int ip(hid.iphi());
1249  const int ie(hid.ietaAbs());
1250  const int dp(hid.depth());
1251  const int zn(hid.zside() < 0 ? 1 : 0);
1252 
1253  unsigned int retval = 0xFFFFFFFFu;
1254  if (topoVersion_ == 0) {
1255  retval = ((ip - 1) / 4) * 4 + ((ip - 1) / 2) * 22 + 2 * (ie - 29) + (dp - 1) + zn * kHFhalf;
1256  } else if (topoVersion_ == 10) {
1257  retval = dp - 1 + 2 * (ip - 1);
1258  if (hid.ieta() > 0)
1259  retval += maxDepthHF_ * IPHI_MAX * (hid.ieta() - 29);
1260  else
1261  retval += maxDepthHF_ * IPHI_MAX * ((41 + 13) + hid.ieta());
1262  }
1263  return retval;
1264 }
static constexpr int kHFhalf
Definition: HcalTopology.h:227
static const int IPHI_MAX
Definition: HcalTopology.cc:13

◆ detId2denseIdHO()

unsigned int HcalTopology::detId2denseIdHO ( const DetId id) const

return a linear packed id from HO

Definition at line 1228 of file HcalTopology.cc.

References HcalDetId::ieta(), HcalDetId::ietaAbs(), HcalDetId::iphi(), IPHI_MAX, kHOhalf, topoVersion_, and HcalDetId::zside().

Referenced by HcalLogicalMapGenerator::buildHOXMap(), HcalLogicalMap::checkHashIds(), HcalLogicalMap::getHcalFrontEndId(), and HcalCondObjectContainerBase::indexFor().

1228  {
1229  HcalDetId hid(id);
1230  const int ip(hid.iphi());
1231  const int ie(hid.ietaAbs());
1232  const int zn(hid.zside() < 0 ? 1 : 0);
1233 
1234  unsigned int retval = 0xFFFFFFFFu;
1235  if (topoVersion_ == 0) {
1236  retval = (ip - 1) * 15 + (ie - 1) + zn * kHOhalf;
1237  } else if (topoVersion_ == 10) {
1238  if (hid.ieta() > 0)
1239  retval = (ip - 1) + IPHI_MAX * (hid.ieta() - 1);
1240  else
1241  retval = (ip - 1) + IPHI_MAX * (30 + hid.ieta());
1242  }
1243  return retval;
1244 }
static constexpr int kHOhalf
Definition: HcalTopology.h:227
static const int IPHI_MAX
Definition: HcalTopology.cc:13

◆ detId2denseIdHT()

unsigned int HcalTopology::detId2denseIdHT ( const DetId id) const

return a linear packed id from HT

Definition at line 1266 of file HcalTopology.cc.

References ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::barrel::ietaAbs(), HcalTrigTowerDetId::ietaAbs(), hcalRecHitTable_cff::iphi, HcalTrigTowerDetId::iphi(), kHThalf, kHTSizePhase1, kHTSizePreLS1, HcalTrigTowerDetId::version(), HcalTrigTowerDetId::zside(), and ecaldqm::zside().

Referenced by HcalLogicalMap::checkHashIds(), CaloTPGTranscoderULUT::getOutputLUTId(), and HcalCondObjectContainerBase::indexFor().

1266  {
1267  HcalTrigTowerDetId tid(id);
1268  int zside = tid.zside();
1269  unsigned int ietaAbs = tid.ietaAbs();
1270  unsigned int iphi = tid.iphi();
1271  unsigned int ivers = tid.version();
1272 
1273  unsigned int index;
1274  if (ivers == 0) {
1275  if ((iphi - 1) % 4 == 0)
1276  index = (iphi - 1) * 32 + (ietaAbs - 1) - (12 * ((iphi - 1) / 4));
1277  else
1278  index = (iphi - 1) * 28 + (ietaAbs - 1) + (4 * (((iphi - 1) / 4) + 1));
1279  if (zside == -1)
1280  index += kHThalf;
1281  } else {
1282  index = kHTSizePreLS1;
1283  if (zside == -1)
1284  index += ((kHTSizePhase1 - kHTSizePreLS1) / 2);
1285  index += (36 * (ietaAbs - 30) + ((iphi - 1) / 2));
1286  }
1287 
1288  return index;
1289 }
int zside(DetId const &)
static constexpr int kHTSizePreLS1
Definition: HcalTopology.h:235
static constexpr int kHThalf
Definition: HcalTopology.h:227
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
static constexpr int kHTSizePhase1
Definition: HcalTopology.h:236

◆ detId2denseIdPreLS1()

unsigned int HcalTopology::detId2denseIdPreLS1 ( const DetId id) const
private

Definition at line 1153 of file HcalTopology.cc.

References HcalDetId::depth(), Calorimetry_cff::dp, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalDetId::ietaAbs(), HcalDetId::iphi(), kHBhalf, kHEhalf, kHFhalf, kHOhalf, HcalDetId::subdet(), and HcalDetId::zside().

Referenced by detId2denseId().

1153  {
1154  HcalDetId hid(id);
1155  const HcalSubdetector sd(hid.subdet());
1156  const int ip(hid.iphi());
1157  const int ie(hid.ietaAbs());
1158  const int dp(hid.depth());
1159  const int zn(hid.zside() < 0 ? 1 : 0);
1160  unsigned int retval =
1161  ((sd == HcalBarrel)
1162  ? (ip - 1) * 18 + dp - 1 + ie - (ie < 16 ? 1 : 0) + zn * kHBhalf
1163  : ((sd == HcalEndcap)
1164  ? 2 * kHBhalf + (ip - 1) * 8 + (ip / 2) * 20 +
1165  ((ie == 16 || ie == 17)
1166  ? ie - 16
1167  : ((ie >= 18 && ie <= 20)
1168  ? 2 + 2 * (ie - 18) + dp - 1
1169  : ((ie >= 21 && ie <= 26)
1170  ? 8 + 2 * (ie - 21) + dp - 1
1171  : ((ie >= 27 && ie <= 28) ? 20 + 3 * (ie - 27) + dp - 1
1172  : 26 + 2 * (ie - 29) + dp - 1)))) +
1173  zn * kHEhalf
1174  : ((sd == HcalOuter)
1175  ? 2 * kHBhalf + 2 * kHEhalf + (ip - 1) * 15 + (ie - 1) + zn * kHOhalf
1176  : ((sd == HcalForward) ? 2 * kHBhalf + 2 * kHEhalf + 2 * kHOhalf + ((ip - 1) / 4) * 4 +
1177  ((ip - 1) / 2) * 22 + 2 * (ie - 29) + (dp - 1) + zn * kHFhalf
1178  : 0xFFFFFFFFu))));
1179  return retval;
1180 }
static constexpr int kHBhalf
Definition: HcalTopology.h:227
static constexpr int kHOhalf
Definition: HcalTopology.h:227
HcalSubdetector
Definition: HcalAssistant.h:31
static constexpr int kHEhalf
Definition: HcalTopology.h:227
static constexpr int kHFhalf
Definition: HcalTopology.h:227

◆ doublePhiBins()

int HcalTopology::doublePhiBins ( ) const
inline

Definition at line 106 of file HcalTopology.h.

References doublePhiBins_.

106 { return doublePhiBins_; }

◆ down()

std::vector< DetId > HcalTopology::down ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in down direction (inward)

Implements CaloSubdetectorTopology.

Definition at line 462 of file HcalTopology.cc.

References HcalDetId::changeForm(), decrementDepth(), EcalPhiSymFlatTableProducers_cfi::id, and HcalDetId::oldFormat().

462  {
463  HcalDetId neighbor = id;
464  std::vector<DetId> vNeighborsDetId;
465  if (decrementDepth(neighbor)) {
466  if (neighbor.oldFormat())
467  neighbor.changeForm();
468  vNeighborsDetId.emplace_back(neighbor);
469  }
470  return vNeighborsDetId;
471 }
constexpr bool oldFormat() const
Definition: HcalDetId.h:139
bool decrementDepth(HcalDetId &id) const
constexpr void changeForm()
Definition: HcalDetId.h:198

◆ east()

std::vector< DetId > HcalTopology::east ( const DetId id) const
overridevirtual

Flag=0 for unmerged Id's; =1 for for merged Id's; =2 for either Get the neighbors of the given cell in east direction

Implements CaloSubdetectorTopology.

Definition at line 407 of file HcalTopology.cc.

References decIEta(), mps_fire::i, and nano_mu_digi_cff::rawId.

407  {
408  std::vector<DetId> vNeighborsDetId;
409  HcalDetId neighbors[2];
410  for (int i = 0; i < decIEta(HcalDetId(id), neighbors); i++) {
411  if (neighbors[i].oldFormat())
412  neighbors[i].changeForm();
413  vNeighborsDetId.emplace_back(DetId(neighbors[i].rawId()));
414  }
415  return vNeighborsDetId;
416 }
int decIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
Definition: DetId.h:17

◆ etaMax()

double HcalTopology::etaMax ( HcalSubdetector  subdet) const

Definition at line 1113 of file HcalTopology.cc.

References PVValHelper::eta, etaTable, etaTableHF, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, lastHBRing_, lastHERing_, lastHORing_, and nEtaHE_.

Referenced by HcalGeometry::getCells(), and HcalGeometry::getClosestCell().

1113  {
1114  double eta(0);
1115  switch (subdet) {
1116  case (HcalBarrel):
1117  if (lastHBRing_ < (int)(etaTable.size()))
1119  break;
1120  case (HcalEndcap):
1121  if (lastHERing_ < (int)(etaTable.size()) && nEtaHE_ > 0)
1123  break;
1124  case (HcalOuter):
1125  if (lastHORing_ < (int)(etaTable.size()))
1127  break;
1128  case (HcalForward):
1129  if (!etaTableHF.empty())
1130  eta = etaTableHF[etaTableHF.size() - 1];
1131  break;
1132  default:
1133  eta = 0;
1134  }
1135  return eta;
1136 }
std::vector< double > etaTableHF
Definition: HcalTopology.h:216
std::vector< double > etaTable
Definition: HcalTopology.h:216

◆ etaRange()

std::pair< double, double > HcalTopology::etaRange ( HcalSubdetector  subdet,
int  ieta 
) const

Definition at line 1137 of file HcalTopology.cc.

References etaTable, etaTableHF, firstHFRing_, HcalForward, hcalRecHitTable_cff::ieta, cuy::ii, createfilelist::int, lastHERing_, HcalTopologyMode::LHC, and mode_.

Referenced by HcalHF_PETalgorithm::HFSetFlagFromPET(), HcalHFStatusBitFromRecHits::hfSetFlagFromRecHits(), HcalHF_S9S1algorithm::HFSetFlagFromS9S1(), HcaluLUTTPGCoder::make_cosh_ieta_map(), and HcalTrigTowerGeometry::towerEtaBounds().

1137  {
1138  int ieta = (keta > 0) ? keta : -keta;
1139  if (subdet == HcalForward) {
1140  if (ieta >= firstHFRing_) {
1141  unsigned int ii = (unsigned int)(ieta - firstHFRing_);
1142  if (ii + 1 < etaTableHF.size())
1143  return std::pair<double, double>(etaTableHF[ii], etaTableHF[ii + 1]);
1144  }
1145  } else {
1146  int ietal = (mode_ == HcalTopologyMode::LHC && ieta == lastHERing_ - 1) ? (ieta + 1) : ieta;
1147  if ((ietal < (int)(etaTable.size())) && (ieta > 0))
1148  return std::pair<double, double>(etaTable[ieta - 1], etaTable[ietal]);
1149  }
1150  return std::pair<double, double>(0, 0);
1151 }
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:190
std::vector< double > etaTableHF
Definition: HcalTopology.h:216
std::vector< double > etaTable
Definition: HcalTopology.h:216
ii
Definition: cuy.py:589

◆ etaRing()

int HcalTopology::etaRing ( HcalSubdetector  subdet,
double  eta 
) const

eta and phi index from eta, phi values

Definition at line 1010 of file HcalTopology.cc.

References etaTable, etaTableHF, firstHBRing_, firstHFRing_, HcalForward, isotrackApplyRegressor::k, and lastHERing_.

Referenced by decrementDepth(), depthBinInformation(), HcalGeometry::etaRing(), incrementDepth(), and nPhiBins().

1010  {
1011  int etaring = firstHBRing_;
1012  if (bc == HcalForward) {
1013  etaring = firstHFRing_;
1014  for (unsigned int k = 0; k < etaTableHF.size() - 1; ++k) {
1015  if (abseta < etaTableHF[k + 1]) {
1016  etaring += k;
1017  break;
1018  }
1019  }
1020  } else {
1021  for (unsigned int k = 0; k < etaTable.size() - 1; ++k) {
1022  if (abseta < etaTable[k + 1]) {
1023  etaring += k;
1024  break;
1025  }
1026  }
1027  if (abseta >= etaTable[etaTable.size() - 1])
1028  etaring = lastHERing_;
1029  }
1030  return etaring;
1031 }
std::vector< double > etaTableHF
Definition: HcalTopology.h:216
std::vector< double > etaTable
Definition: HcalTopology.h:216

◆ exclude() [1/2]

void HcalTopology::exclude ( const HcalDetId id)

Add a cell to exclusion list

Definition at line 381 of file HcalTopology.cc.

References exclusionList_, mps_fire::i, EcalPhiSymFlatTableProducers_cfi::id, and pfDeepBoostedJetPreprocessParams_cfi::lower_bound.

Referenced by exclude(), and HcalTopologyRestrictionParser::parse().

381  {
382  std::vector<HcalDetId>::iterator i = std::lower_bound(exclusionList_.begin(), exclusionList_.end(), id);
383  if (i == exclusionList_.end() || *i != id) {
384  exclusionList_.insert(i, id);
385  }
386 }
std::vector< HcalDetId > exclusionList_
Definition: HcalTopology.h:187

◆ exclude() [2/2]

int HcalTopology::exclude ( HcalSubdetector  subdet,
int  ieta1,
int  ieta2,
int  iphi1,
int  iphi2,
int  depth1 = 1,
int  depth2 = 4 
)

Exclude an eta/phi/depth range for a given subdetector

Definition at line 473 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, exclude(), excludeHB_, excludeHE_, excludeHF_, excludeHO_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, EcalPhiSymFlatTableProducers_cfi::id, hcalRecHitTable_cff::ieta, hcaltpdigi_cfi::ieta1, hcaltpdigi_cfi::ieta2, hcalRecHitTable_cff::iphi, WZElectronSkims53X_cff::max, SiStripPI::min, create_idmaps::n, and validRaw().

473  {
474  bool exed = false;
475  // first, check the full detector exclusions... (fast)
476  switch (subdet) {
477  case (HcalBarrel):
478  exed = excludeHB_;
479  break;
480  case (HcalEndcap):
481  exed = excludeHE_;
482  break;
483  case (HcalOuter):
484  exed = excludeHO_;
485  break;
486  case (HcalForward):
487  exed = excludeHF_;
488  break;
489  default:
490  exed = false;
491  }
492  if (exed)
493  return 0; // if the whole detector is excluded...
494 
495  int ieta_l = std::min(ieta1, ieta2);
496  int ieta_h = std::max(ieta1, ieta2);
497  int iphi_l = std::min(iphi1, iphi2);
498  int iphi_h = std::max(iphi1, iphi2);
499  int depth_l = std::min(depth1, depth2);
500  int depth_h = std::max(depth1, depth2);
501 
502  int n = 0;
503  for (int ieta = ieta_l; ieta <= ieta_h; ieta++)
504  for (int iphi = iphi_l; iphi <= iphi_h; iphi++)
505  for (int depth = depth_l; depth <= depth_h; depth++) {
506  HcalDetId id(subdet, ieta, iphi, depth);
507  if (validRaw(id)) { // use 'validRaw' to include check validity in "uncut" detector
508  exclude(id);
509  n++;
510  }
511  }
512  return n;
513 }
void exclude(const HcalDetId &id)
bool validRaw(const HcalDetId &id) const

◆ excludeSubdetector()

void HcalTopology::excludeSubdetector ( HcalSubdetector  subdet)

Exclude an entire subdetector

Definition at line 388 of file HcalTopology.cc.

References excludeHB_, excludeHE_, excludeHF_, excludeHO_, HcalBarrel, HcalEndcap, HcalForward, and HcalOuter.

Referenced by HcalTopologyRestrictionParser::parse().

388  {
389  switch (subdet) {
390  case (HcalBarrel):
391  excludeHB_ = true;
392  break;
393  case (HcalEndcap):
394  excludeHE_ = true;
395  break;
396  case (HcalOuter):
397  excludeHO_ = true;
398  break;
399  case (HcalForward):
400  excludeHF_ = true;
401  break;
402  default:
403  break;
404  }
405 }

◆ firstHBRing()

int HcalTopology::firstHBRing ( ) const
inline

◆ firstHEDoublePhiRing()

int HcalTopology::firstHEDoublePhiRing ( ) const
inline

◆ firstHEQuadPhiRing()

int HcalTopology::firstHEQuadPhiRing ( ) const
inline

◆ firstHERing()

int HcalTopology::firstHERing ( ) const
inline

◆ firstHETripleDepthRing()

int HcalTopology::firstHETripleDepthRing ( ) const
inline

Definition at line 104 of file HcalTopology.h.

References firstHETripleDepthRing_.

Referenced by depthBinInformation().

104 { return firstHETripleDepthRing_; }
int firstHETripleDepthRing_
Definition: HcalTopology.h:202

◆ firstHFQuadPhiRing()

int HcalTopology::firstHFQuadPhiRing ( ) const
inline

◆ firstHFRing()

int HcalTopology::firstHFRing ( ) const
inline

◆ firstHORing()

int HcalTopology::firstHORing ( ) const
inline

Definition at line 98 of file HcalTopology.h.

References firstHORing_.

Referenced by CaloTowerTopology::CaloTowerTopology(), and CaloTowerTopology::convertHcaltoCT().

98 { return firstHORing_; }

◆ getCALIBSize()

unsigned int HcalTopology::getCALIBSize ( ) const
inline

Definition at line 137 of file HcalTopology.h.

References CALIBSize_.

Referenced by HcalCondObjectContainerBase::sizeFor().

137 { return CALIBSize_; }
unsigned int CALIBSize_
Definition: HcalTopology.h:213

◆ getDepthSegmentation()

void HcalTopology::getDepthSegmentation ( const unsigned  ring,
std::vector< int > &  readoutDepths,
const bool  flag = false 
) const

for each of the ~17 depth segments, specify which readout bin they belong to if the ring is not found, the first one with a lower ring will be returned.

Definition at line 1077 of file HcalTopology.cc.

References depthSegmentation_, depthSegmentationOne_, Exception, and relativeConstraints::ring.

Referenced by HcalDbHardcode::getLayersInDepth(), HcalHardcodeGeometryLoader::load(), and segmentBoundaries().

1077  {
1078  // if it doesn't exist, return the first entry with a lower index. So if we only
1079  // have entries for 1 and 17, any input from 1-16 should return the entry for ring 1
1080  SegmentationMap::const_iterator pos;
1081  if (!one) {
1082  pos = depthSegmentation_.upper_bound(ring);
1083  if (pos == depthSegmentation_.begin()) {
1084  throw cms::Exception("HcalTopology") << "No depth segmentation found for ring" << ring;
1085  }
1086  } else {
1087  pos = depthSegmentationOne_.upper_bound(ring);
1088  if (pos == depthSegmentationOne_.begin()) {
1089  throw cms::Exception("HcalTopology") << "No depth segmentation found for ring" << ring;
1090  }
1091  }
1092  --pos;
1093  // pos now refers to the last element with key <= ring.
1094  readoutDepths = pos->second;
1095 }
SegmentationMap depthSegmentation_
Definition: HcalTopology.h:224
SegmentationMap depthSegmentationOne_
Definition: HcalTopology.h:225

◆ getHBSize()

unsigned int HcalTopology::getHBSize ( ) const
inline

Definition at line 132 of file HcalTopology.h.

References HBSize_.

Referenced by HcalGeometry::init(), and HcalCondObjectContainerBase::sizeFor().

132 { return HBSize_; }
unsigned int HBSize_
Definition: HcalTopology.h:208

◆ getHESize()

unsigned int HcalTopology::getHESize ( ) const
inline

Definition at line 133 of file HcalTopology.h.

References HESize_.

Referenced by HcalGeometry::init(), and HcalCondObjectContainerBase::sizeFor().

133 { return HESize_; }
unsigned int HESize_
Definition: HcalTopology.h:209

◆ getHFSize()

unsigned int HcalTopology::getHFSize ( ) const
inline

◆ getHOSize()

unsigned int HcalTopology::getHOSize ( ) const
inline

Definition at line 134 of file HcalTopology.h.

References HOSize_.

Referenced by HcalGeometry::init(), and HcalCondObjectContainerBase::sizeFor().

134 { return HOSize_; }
unsigned int HOSize_
Definition: HcalTopology.h:210

◆ getHTSize()

unsigned int HcalTopology::getHTSize ( ) const
inline

Definition at line 136 of file HcalTopology.h.

References HTSize_.

Referenced by CaloTPGTranscoderULUT::setup(), and HcalCondObjectContainerBase::sizeFor().

136 { return HTSize_; }
unsigned int HTSize_
Definition: HcalTopology.h:212

◆ getMergePositionFlag()

bool HcalTopology::getMergePositionFlag ( ) const
inline

◆ getNumberOfShapes()

unsigned int HcalTopology::getNumberOfShapes ( ) const
inline

Definition at line 161 of file HcalTopology.h.

References numberOfShapes_.

Referenced by HcalGeometry::numberOfShapes().

161 { return numberOfShapes_; }
unsigned int numberOfShapes_
Definition: HcalTopology.h:214

◆ getPhiZOne()

int HcalTopology::getPhiZOne ( std::vector< std::pair< int, int > > &  phiz) const
inline

Definition at line 130 of file HcalTopology.h.

References HcalDDDRecConstants::getPhiZOne(), and hcons_.

130 { return hcons_->getPhiZOne(phiz); }
int getPhiZOne(std::vector< std::pair< int, int >> &phiz) const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

◆ idBack()

HcalDetId HcalTopology::idBack ( const HcalDetId id) const
inline

Definition at line 171 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::idBack().

Referenced by CaloTowersCreationAlgo::hadShwPosFromCells(), and CaloTowersCreationAlgo::hadShwrPos().

171 { return hcons_->idBack(id); }
HcalDetId idBack(const HcalDetId &id) const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

◆ idFront()

HcalDetId HcalTopology::idFront ( const HcalDetId id) const
inline

◆ incAIEta()

int HcalTopology::incAIEta ( const HcalDetId id,
HcalDetId  neighbors[2] 
) const
private

Get the neighbors of the given cell with higher absolute ieta

Increasing in |ieta|, there is always at most one neighbor

Definition at line 751 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, etaHE2HF_, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHFQuadPhiRing(), HcalBarrel, HcalEndcap, HcalForward, hcalRecHitTable_cff::iphi, lastHBRing(), lastHERing(), create_idmaps::n, valid(), and ecaldqm::zside().

Referenced by decIEta(), and incIEta().

751  {
752  int n = 1;
753  int aieta = id.ietaAbs();
754 
755  if (aieta == firstHEDoublePhiRing() - 1 && (id.iphi() % 2) == 0)
756  neighbors[0] = HcalDetId(id.subdet(), (aieta + 1) * id.zside(), id.iphi() - 1, id.depth());
757  else if (aieta == firstHFQuadPhiRing() - 1 && ((id.iphi() + 1) % 4) != 0)
758  neighbors[0] =
759  HcalDetId(id.subdet(), (aieta + 1) * id.zside(), ((id.iphi() == 1) ? (71) : (id.iphi() - 2)), id.depth());
760  else if (aieta == firstHEQuadPhiRing() - 1 && ((id.iphi() + 1) % 4) != 0)
761  neighbors[0] =
762  HcalDetId(id.subdet(), (aieta + 1) * id.zside(), ((id.iphi() == 1) ? (71) : (id.iphi() - 2)), id.depth());
763  else if (aieta == lastHBRing() && id.subdet() == HcalBarrel)
764  neighbors[0] = HcalDetId(HcalEndcap, (aieta + 1) * id.zside(), id.iphi(), 1);
765  else if (aieta == lastHERing() && id.subdet() == HcalEndcap)
766  neighbors[0] = HcalDetId(HcalForward, etaHE2HF_ * id.zside(), id.iphi(), 1);
767  else
768  neighbors[0] = HcalDetId(id.subdet(), (aieta + 1) * id.zside(), id.iphi(), id.depth());
769 
770  if (!valid(neighbors[0]))
771  n = 0;
772  return n;
773 }
bool valid(const DetId &id) const override
int zside(DetId const &)
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:103
int lastHBRing() const
Definition: HcalTopology.h:92
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:102
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:101
int lastHERing() const
Definition: HcalTopology.h:94

◆ incIEta()

int HcalTopology::incIEta ( const HcalDetId id,
HcalDetId  neighbors[2] 
) const

Get the neighbors of the given cell with higher (signed) ieta

Definition at line 736 of file HcalTopology.cc.

References decAIEta(), incAIEta(), and ecaldqm::zside().

Referenced by west().

736  {
737  if (id.zside() == 1)
738  return incAIEta(id, neighbors);
739  else
740  return decAIEta(id, neighbors);
741 }
int decAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
int zside(DetId const &)
int incAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const

◆ incIPhi()

bool HcalTopology::incIPhi ( const HcalDetId id,
HcalDetId neighbor 
) const

Get the neighbor (if present) of the given cell with higher iphi

Definition at line 633 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHFQuadPhiRing(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcalRecHitTable_cff::ieta, ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::barrel::ietaAbs(), hcalRecHitTable_cff::iphi, IPHI_MAX, maxPhiHE_, convertSQLiteXML::ok, valid(), and validRaw().

Referenced by north(), and HFStripFilter::runFilter().

633  {
634  bool ok = valid(id);
635  if (ok) {
636  switch (id.subdet()) {
637  case (HcalBarrel):
638  case (HcalOuter):
639  if (id.iphi() == IPHI_MAX)
640  neighbor = HcalDetId(id.subdet(), id.ieta(), 1, id.depth());
641  else
642  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 1, id.depth());
643  break;
644  case (HcalEndcap):
645  if (id.ietaAbs() >= firstHEQuadPhiRing()) {
646  if (id.iphi() == IPHI_MAX - 1)
647  neighbor = HcalDetId(id.subdet(), id.ieta(), 3, id.depth());
648  else
649  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 4, id.depth());
650  } else if (id.ietaAbs() >= firstHEDoublePhiRing()) {
651  if (id.iphi() == IPHI_MAX - 1)
652  neighbor = HcalDetId(id.subdet(), id.ieta(), 1, id.depth());
653  else
654  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 2, id.depth());
655  } else {
656  if (id.iphi() == maxPhiHE_)
657  neighbor = HcalDetId(id.subdet(), id.ieta(), 1, id.depth());
658  else
659  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 1, id.depth());
660  }
661  break;
662  case (HcalForward):
663  if (id.ietaAbs() >= firstHFQuadPhiRing()) {
664  if (id.iphi() == IPHI_MAX - 1)
665  neighbor = HcalDetId(id.subdet(), id.ieta(), 3, id.depth());
666  else
667  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 4, id.depth());
668  } else {
669  if (id.iphi() == IPHI_MAX - 1)
670  neighbor = HcalDetId(id.subdet(), id.ieta(), 1, id.depth());
671  else
672  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 2, id.depth());
673  }
674  if (!validRaw(neighbor))
675  ok = false;
676  break;
677  default:
678  ok = false;
679  }
680  }
681  return ok;
682 }
bool valid(const DetId &id) const override
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:103
bool validRaw(const HcalDetId &id) const
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:102
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:101
static const int IPHI_MAX
Definition: HcalTopology.cc:13

◆ incrementDepth()

bool HcalTopology::incrementDepth ( HcalDetId id) const

Get the detector behind this one

Definition at line 878 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, depthBinInformation(), hcalRecHitTable_cff::detId, etaRing(), HcalDDDRecConstants::getDepthEta16(), HcalTopologyMode::H2HE, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcons_, hcalRecHitTable_cff::ieta, hcalRecHitTable_cff::iphi, lastHBRing(), lastHERing(), lastHORing(), mode_, HcalTopologyMode::Run3, HcalTopologyMode::Run4, HcalTopologyMode::SLHC, validRaw(), and ecaldqm::zside().

Referenced by HcalGeometry::getClosestCell(), and up().

878  {
879  HcalSubdetector subdet = detId.subdet();
880  int ieta = detId.ieta();
881  int etaRing = detId.ietaAbs();
882  int depth = detId.depth();
883  int iphi = detId.iphi();
884  int zside = detId.zside();
885  int nDepthBins(0), startingBin(0);
886  depthBinInformation(subdet, etaRing, iphi, zside, nDepthBins, startingBin);
887 
888  // see if the new depth bin exists
889  ++depth;
890  if (depth >= (startingBin + nDepthBins)) {
891  // handle on a case-by-case basis
892  if (subdet == HcalBarrel && etaRing < lastHORing()) {
893  // HO
894  subdet = HcalOuter;
895  depth = 4;
896  } else if (subdet == HcalBarrel && etaRing == lastHBRing()) {
897  // overlap
898  subdet = HcalEndcap;
902  } else if ((subdet == HcalEndcap) && (etaRing == lastHERing() - 1) && (mode_ != HcalTopologyMode::SLHC) &&
904  // guard ring HF29 is behind HE 28
905  subdet = HcalForward;
906  (ieta > 0) ? ++ieta : --ieta;
907  depth = 1;
908  } else if ((subdet == HcalEndcap) && (etaRing == lastHERing()) && (mode_ != HcalTopologyMode::SLHC) &&
910  // split cells go to bigger granularity. Ring 29 -> 28
911  (ieta > 0) ? --ieta : ++ieta;
912  } else {
913  // no more chances
914  detId = HcalDetId();
915  return false;
916  }
917  }
918  detId = HcalDetId(subdet, ieta, iphi, depth);
919  return validRaw(detId);
920 }
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
int lastHORing() const
Definition: HcalTopology.h:99
int zside(DetId const &)
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
int lastHBRing() const
Definition: HcalTopology.h:92
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:190
HcalSubdetector
Definition: HcalAssistant.h:31
bool validRaw(const HcalDetId &id) const
void depthBinInformation(HcalSubdetector subdet, int etaRing, int iphi, int zside, int &nDepthBins, int &startingBin) const
finds the number of depth bins and which is the number to start with
int lastHERing() const
Definition: HcalTopology.h:94
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

◆ isBH()

bool HcalTopology::isBH ( ) const
inline

Definition at line 162 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::isBH().

Referenced by CaloTowerTopology::CaloTowerTopology().

162 { return ((hcons_ == nullptr) ? false : hcons_->isBH()); }
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

◆ isExcluded()

bool HcalTopology::isExcluded ( const HcalDetId id) const
private

Definition at line 353 of file HcalTopology.cc.

References excludeHB_, excludeHE_, excludeHF_, excludeHO_, exclusionList_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, mps_fire::i, EcalPhiSymFlatTableProducers_cfi::id, and pfDeepBoostedJetPreprocessParams_cfi::lower_bound.

Referenced by validHcal().

353  {
354  bool exed = false;
355  // first, check the full detector exclusions... (fast)
356  switch (id.subdet()) {
357  case (HcalBarrel):
358  exed = excludeHB_;
359  break;
360  case (HcalEndcap):
361  exed = excludeHE_;
362  break;
363  case (HcalOuter):
364  exed = excludeHO_;
365  break;
366  case (HcalForward):
367  exed = excludeHF_;
368  break;
369  default:
370  exed = false;
371  }
372  // next, check the list (slower)
373  if (!exed && !exclusionList_.empty()) {
374  std::vector<HcalDetId>::const_iterator i = std::lower_bound(exclusionList_.begin(), exclusionList_.end(), id);
375  if (i != exclusionList_.end() && *i == id)
376  exed = true;
377  }
378  return exed;
379 }
std::vector< HcalDetId > exclusionList_
Definition: HcalTopology.h:187

◆ lastHBHERing()

int HcalTopology::lastHBHERing ( ) const
inline

◆ lastHBRing()

int HcalTopology::lastHBRing ( ) const
inline

◆ lastHERing()

int HcalTopology::lastHERing ( ) const
inline

◆ lastHFRing()

int HcalTopology::lastHFRing ( ) const
inline

◆ lastHORing()

int HcalTopology::lastHORing ( ) const
inline

◆ maxDepth() [1/2]

int HcalTopology::maxDepth ( void  ) const

Definition at line 993 of file HcalTopology.cc.

References WZElectronSkims53X_cff::max, maxDepthHB_, maxDepthHE_, maxDepthHF_, and minMaxDepth_.

Referenced by HcalGeometry::getCells(), and HcaluLUTTPGCoder::init().

993  {
994  int maxd1 = std::max(maxDepthHB_, maxDepthHE_);
995  int maxd2 = std::max(maxDepthHF_, minMaxDepth_);
996  return std::max(maxd1, maxd2);
997 }
static constexpr int minMaxDepth_
Definition: HcalTopology.h:238

◆ maxDepth() [2/2]

int HcalTopology::maxDepth ( HcalSubdetector  subdet) const

Definition at line 999 of file HcalTopology.cc.

References HcalBarrel, HcalEndcap, HcalForward, maxDepthHB_, maxDepthHE_, and maxDepthHF_.

999  {
1000  if (bc == HcalBarrel)
1001  return maxDepthHB_;
1002  else if (bc == HcalEndcap)
1003  return maxDepthHE_;
1004  else if (bc == HcalForward)
1005  return maxDepthHF_;
1006  else
1007  return 4;
1008 }

◆ maxDepthHB()

int HcalTopology::maxDepthHB ( ) const
inline

Definition at line 139 of file HcalTopology.h.

References maxDepthHB_.

Referenced by RecAnalyzerMinbias::beginRun(), and HcalTopology().

139 { return maxDepthHB_; }

◆ maxDepthHE()

int HcalTopology::maxDepthHE ( ) const
inline

Definition at line 140 of file HcalTopology.h.

References maxDepthHE_.

Referenced by RecAnalyzerMinbias::beginRun(), HcalTopology(), and HcalTrigTowerGeometry::towerIds().

140 { return maxDepthHE_; }

◆ mergedDepth29()

bool HcalTopology::mergedDepth29 ( HcalDetId  id) const
inline

◆ mergedDepthDetId()

HcalDetId HcalTopology::mergedDepthDetId ( const HcalDetId id) const
inline

◆ mergedDepthList29()

std::vector<int> HcalTopology::mergedDepthList29 ( HcalDetId  id) const
inline

Definition at line 112 of file HcalTopology.h.

References hcons_, hcalRecHitTable_cff::ieta, hcalRecHitTable_cff::iphi, and HcalDDDRecConstants::mergedDepthList29().

112 { return hcons_->mergedDepthList29(id.ieta(), id.iphi()); }
bool mergedDepthList29(int ieta, int iphi, int depth) const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

◆ mode()

HcalTopologyMode::Mode HcalTopology::mode ( void  ) const
inline

◆ ncells()

unsigned int HcalTopology::ncells ( ) const
overridevirtual

return a count of valid cells (for dense indexing use)

Reimplemented from CaloSubdetectorTopology.

Definition at line 1703 of file HcalTopology.cc.

References HBSize_, HESize_, HFSize_, and HOSize_.

Referenced by denseId2detId(), HcalGeometry::getSummary(), HcalHardcodeGeometryLoader::load(), HcalFlexiHardcodeGeometryLoader::load(), and HcalGeometry::sizeForDenseIndex().

1703 { return HBSize_ + HESize_ + HOSize_ + HFSize_; }
unsigned int HESize_
Definition: HcalTopology.h:209
unsigned int HFSize_
Definition: HcalTopology.h:211
unsigned int HBSize_
Definition: HcalTopology.h:208
unsigned int HOSize_
Definition: HcalTopology.h:210

◆ north()

std::vector< DetId > HcalTopology::north ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in north direction

Implements CaloSubdetectorTopology.

Definition at line 429 of file HcalTopology.cc.

References HcalDetId::changeForm(), incIPhi(), HcalDetId::oldFormat(), and DetId::rawId().

429  {
430  std::vector<DetId> vNeighborsDetId;
431  HcalDetId neighbor;
432  if (incIPhi(HcalDetId(id), neighbor)) {
433  if (neighbor.oldFormat())
434  neighbor.changeForm();
435  vNeighborsDetId.emplace_back(DetId(neighbor.rawId()));
436  }
437  return vNeighborsDetId;
438 }
constexpr bool oldFormat() const
Definition: HcalDetId.h:139
bool incIPhi(const HcalDetId &id, HcalDetId &neighbor) const
constexpr void changeForm()
Definition: HcalDetId.h:198
Definition: DetId.h:17
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57

◆ nPhiBins() [1/2]

int HcalTopology::nPhiBins ( int  etaRing) const

how many phi segments in this ring

Definition at line 968 of file HcalTopology.cc.

References doublePhiBins_, etaRing(), firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHFQuadPhiRing(), HcalDDDRecConstants::getEtaRange(), HcalBarrel, hcons_, and singlePhiBins_.

Referenced by CaloTowerHardcodeGeometryLoader::makeCell().

968  {
969  int lastPhiBin = singlePhiBins_;
971  lastPhiBin = doublePhiBins_ / 2;
972  else if (etaRing >= firstHEDoublePhiRing())
973  lastPhiBin = doublePhiBins_;
974  if (hcons_ && etaRing >= hcons_->getEtaRange(1).first && etaRing <= hcons_->getEtaRange(1).second) {
975  return nPhiBins(HcalBarrel, etaRing);
976  }
977  return lastPhiBin;
978 }
std::pair< int, int > getEtaRange(const int &i) const
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:103
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:102
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:101
int nPhiBins(int etaRing) const
how many phi segments in this ring
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

◆ nPhiBins() [2/2]

int HcalTopology::nPhiBins ( HcalSubdetector  subdet,
int  etaRing 
) const

Definition at line 980 of file HcalTopology.cc.

References dPhiTable, dPhiTableHF, etaRing(), firstHBRing_, firstHFRing_, and HcalForward.

980  {
981  double phiTableVal;
982  if (bc == HcalForward) {
983  phiTableVal = dPhiTableHF[etaRing - firstHFRing_];
984  } else {
985  phiTableVal = dPhiTable[etaRing - firstHBRing_];
986  }
987  int lastPhiBin = 0;
988  if (phiTableVal != 0.0)
989  lastPhiBin = static_cast<int>((2._pi / phiTableVal) + 0.001);
990  return lastPhiBin;
991 }
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:216
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
std::vector< double > dPhiTable
Definition: HcalTopology.h:216

◆ phiBin()

int HcalTopology::phiBin ( HcalSubdetector  subdet,
int  etaRing,
double  phi 
) const

Definition at line 1033 of file HcalTopology.cc.

References dPhiTable, dPhiTableHF, firstHBRing_, firstHFRing_, HcalBarrel, HcalEndcap, HcalForward, hcalRecHitTable_cff::iphi, phi, phioff, unit(), unitPhi, and unitPhiHF.

Referenced by HcalGeometry::phiBin().

1033  {
1034  //put phi in correct range (0->2pi)
1035  int index(0);
1036  if (bc == HcalBarrel) {
1037  index = (etaring - firstHBRing_);
1038  phi -= phioff[0];
1039  } else if (bc == HcalEndcap) {
1040  index = (etaring - firstHBRing_);
1041  phi -= phioff[1];
1042  } else if (bc == HcalForward) {
1043  index = (etaring - firstHFRing_);
1044  if (index < static_cast<int>(dPhiTableHF.size())) {
1045  if (index >= 0 && unitPhiHF[index] > 2)
1046  phi -= phioff[4];
1047  else
1048  phi -= phioff[2];
1049  }
1050  }
1051  if (index < 0)
1052  index = 0;
1053  if (phi < 0.0)
1054  phi += 2._pi;
1055  else if (phi > 2._pi)
1056  phi -= 2._pi;
1057  int phibin(1), unit(1);
1058  if (bc == HcalForward) {
1059  if (index < (int)(dPhiTableHF.size())) {
1060  unit = unitPhiHF[index];
1061  phibin = static_cast<int>(phi / dPhiTableHF[index]) + 1;
1062  }
1063  } else {
1064  if (index < (int)(dPhiTable.size())) {
1065  phibin = static_cast<int>(phi / dPhiTable[index]) + 1;
1066  unit = unitPhi[index];
1067  }
1068  }
1069  int iphi(phibin);
1070  if (unit == 2)
1071  iphi = (phibin - 1) * 2 + 1;
1072  else if (unit == 4)
1073  iphi = (phibin - 1) * 4 + 3;
1074  return iphi;
1075 }
std::vector< int > unitPhiHF
Definition: HcalTopology.h:218
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:216
std::vector< int > unitPhi
Definition: HcalTopology.h:218
Basic3DVector unit() const
std::vector< double > phioff
Definition: HcalTopology.h:217
std::vector< double > dPhiTable
Definition: HcalTopology.h:216

◆ producerTag()

static std::string HcalTopology::producerTag ( )
inlinestatic

Definition at line 43 of file HcalTopology.h.

43 { return "HCAL"; }

◆ segmentBoundaries()

std::pair< int, int > HcalTopology::segmentBoundaries ( const unsigned  ring,
const unsigned  depth,
const bool  flag = false 
) const

returns the boundaries of the depth segmentation, so that the first result is the first segment, and the second result is the first one of the next segment. Used for calculating physical bounds.

Definition at line 1105 of file HcalTopology.cc.

References d1, hcalRecHitTable_cff::depth, getDepthSegmentation(), pfDeepBoostedJetPreprocessParams_cfi::lower_bound, relativeConstraints::ring, and pfDeepBoostedJetPreprocessParams_cfi::upper_bound.

1105  {
1106  std::vector<int> readoutDepths;
1107  getDepthSegmentation(ring, readoutDepths, one);
1108  int d1 = std::lower_bound(readoutDepths.begin(), readoutDepths.end(), depth) - readoutDepths.begin();
1109  int d2 = std::upper_bound(readoutDepths.begin(), readoutDepths.end(), depth) - readoutDepths.begin();
1110  return std::pair<int, int>(d1, d2);
1111 }
void getDepthSegmentation(const unsigned ring, std::vector< int > &readoutDepths, const bool flag=false) const
static constexpr float d1

◆ setDepthSegmentation()

void HcalTopology::setDepthSegmentation ( const unsigned  ring,
const std::vector< int > &  readoutDepths,
const bool  flag 
)

Definition at line 1097 of file HcalTopology.cc.

References depthSegmentation_, depthSegmentationOne_, and relativeConstraints::ring.

Referenced by HcalTopology().

1097  {
1098  if (one) {
1099  depthSegmentationOne_[ring] = readoutDepths;
1100  } else {
1101  depthSegmentation_[ring] = readoutDepths;
1102  }
1103 }
SegmentationMap depthSegmentation_
Definition: HcalTopology.h:224
SegmentationMap depthSegmentationOne_
Definition: HcalTopology.h:225

◆ singlePhiBins()

int HcalTopology::singlePhiBins ( ) const
inline

Definition at line 105 of file HcalTopology.h.

References singlePhiBins_.

105 { return singlePhiBins_; }

◆ south()

std::vector< DetId > HcalTopology::south ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in south direction

Implements CaloSubdetectorTopology.

Definition at line 440 of file HcalTopology.cc.

References HcalDetId::changeForm(), decIPhi(), HcalDetId::oldFormat(), and DetId::rawId().

440  {
441  std::vector<DetId> vNeighborsDetId;
442  HcalDetId neighbor;
443  if (decIPhi(HcalDetId(id), neighbor)) {
444  if (neighbor.oldFormat())
445  neighbor.changeForm();
446  vNeighborsDetId.emplace_back(DetId(neighbor.rawId()));
447  }
448  return vNeighborsDetId;
449 }
constexpr bool oldFormat() const
Definition: HcalDetId.h:139
constexpr void changeForm()
Definition: HcalDetId.h:198
bool decIPhi(const HcalDetId &id, HcalDetId &neighbor) const
Definition: DetId.h:17
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57

◆ topoVersion()

int HcalTopology::topoVersion ( ) const
overridevirtual

return a version which identifies the given topology

Reimplemented from CaloSubdetectorTopology.

Definition at line 1705 of file HcalTopology.cc.

References topoVersion_.

Referenced by HcalCondObjectContainerBase::HcalCondObjectContainerBase(), and HcalCondObjectContainerBase::setTopo().

1705 { return topoVersion_; }

◆ triggerMode()

HcalTopologyMode::TriggerMode HcalTopology::triggerMode ( ) const
inline

◆ unmergeDepthDetId()

void HcalTopology::unmergeDepthDetId ( const HcalDetId id,
std::vector< HcalDetId > &  ids 
) const
inline

Definition at line 168 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::unmergeDepthDetId().

Referenced by HcalCollapseAnalyzer::analyze(), HcalGeometry::getBackPosition(), and HcalGeometry::getCorners().

168 { hcons_->unmergeDepthDetId(id, ids); }
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

◆ up()

std::vector< DetId > HcalTopology::up ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in up direction (outward)

Implements CaloSubdetectorTopology.

Definition at line 451 of file HcalTopology.cc.

References HcalDetId::changeForm(), EcalPhiSymFlatTableProducers_cfi::id, incrementDepth(), and HcalDetId::oldFormat().

451  {
452  HcalDetId neighbor = id;
453  std::vector<DetId> vNeighborsDetId;
454  if (incrementDepth(neighbor)) {
455  if (neighbor.oldFormat())
456  neighbor.changeForm();
457  vNeighborsDetId.emplace_back(neighbor);
458  }
459  return vNeighborsDetId;
460 }
constexpr bool oldFormat() const
Definition: HcalDetId.h:139
constexpr void changeForm()
Definition: HcalDetId.h:198
bool incrementDepth(HcalDetId &id) const

◆ valid()

bool HcalTopology::valid ( const DetId id) const
overridevirtual

◆ validCalib()

bool HcalTopology::validCalib ( const HcalCalibDetId id) const

Definition at line 281 of file HcalTopology.cc.

References funct::abs(), HcalCalibDetId::calibFlavor(), HcalCalibDetId::CalibrationBox, HcalCalibDetId::CastorRadFacility, HcalCalibDetId::cboxChannel(), officialStyle::chan, chanCalibHB_, chanCalibHE1_, chanCalibHE2_, chanCalibHF1_, chanCalibHF2_, chanCalibHO_, chanCalibHOs_, etaCalibHB_, etaCalibHBX_, etaCalibHE_, etaCalibHEX_, etaCalibHF_, etaCalibHO_, etaCalibHOX_, spr::find(), HcalCalibDetId::HBX, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalCalibDetId::hcalSubdet(), HcalCalibDetId::HEX, HcalCalibDetId::HOCrosstalk, hcalRecHitTable_cff::ieta, HcalCalibDetId::ieta(), hcalRecHitTable_cff::iphi, HcalCalibDetId::iphi(), HcalCalibDetId::LASERMON, maxPhi_, minPhi_, nchanCalibHB_, nchanCalibHE1_, nchanCalibHF1_, nchanCalibHO_, nEtaCalibHB_, nEtaCalibHE_, nEtaCalibHEX_, nEtaCalibHF_, nEtaCalibHO_, nEtaCalibHOX_, convertSQLiteXML::ok, and HcalCalibDetId::uMNqie.

Referenced by validRaw().

281  {
282  bool ok(false);
283  if (tid.calibFlavor() == HcalCalibDetId::CalibrationBox) {
284  HcalSubdetector subdet = tid.hcalSubdet();
285  int ieta = tid.ieta();
286  int chan = tid.cboxChannel();
287  unsigned int iphi = static_cast<unsigned int>(tid.iphi());
288  if (subdet == HcalBarrel) {
291  (iphi >= minPhi_) && (iphi <= maxPhi_))
292  ok = true;
293  } else if (subdet == HcalEndcap) {
296  (chan == chanCalibHE2_)) &&
297  (iphi >= minPhi_) && (iphi <= maxPhi_))
298  ok = true;
299  } else if (subdet == HcalForward) {
302  (chan == chanCalibHF2_)) &&
303  (iphi >= minPhi_) && (iphi <= maxPhi_))
304  ok = true;
305  } else if (subdet == HcalOuter) {
308  (chan == chanCalibHOs_)) &&
309  (iphi >= minPhi_) && (iphi <= maxPhi_))
310  ok = true;
311  }
312  } else if (tid.calibFlavor() == HcalCalibDetId::HOCrosstalk) {
313  int ieta = std::abs(tid.ieta());
314  unsigned int iphi = static_cast<unsigned int>(tid.iphi());
316  (iphi >= minPhi_) && (iphi <= maxPhi_))
317  ok = true;
318  } else if (tid.calibFlavor() == HcalCalibDetId::HBX) {
319  int ieta = std::abs(tid.ieta());
320  unsigned int iphi = static_cast<unsigned int>(tid.iphi());
321  if ((ieta == etaCalibHBX_) && (iphi >= minPhi_) && (iphi <= maxPhi_))
322  ok = true;
323  } else if (tid.calibFlavor() == HcalCalibDetId::HEX) {
324  int ieta = std::abs(tid.ieta());
325  unsigned int iphi = static_cast<unsigned int>(tid.iphi());
327  (iphi >= minPhi_) && (iphi <= maxPhi_))
328  ok = true;
329  } else if ((tid.calibFlavor() == HcalCalibDetId::uMNqie) || (tid.calibFlavor() == HcalCalibDetId::LASERMON) ||
330  (tid.calibFlavor() == HcalCalibDetId::CastorRadFacility)) {
331  ok = true;
332  }
333  return ok;
334 }
static constexpr int chanCalibHF2_
Definition: HcalTopology.h:279
static constexpr int etaCalibHE_[nEtaCalibHE_]
Definition: HcalTopology.h:251
static constexpr int etaCalibHBX_
Definition: HcalTopology.h:291
static constexpr unsigned int nEtaCalibHO_
Definition: HcalTopology.h:262
static constexpr int etaCalibHO_[nEtaCalibHO_]
Definition: HcalTopology.h:265
static constexpr unsigned int nEtaCalibHF_
Definition: HcalTopology.h:255
static constexpr unsigned int nchanCalibHO_
Definition: HcalTopology.h:262
static constexpr int etaCalibHB_[nEtaCalibHB_]
Definition: HcalTopology.h:244
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
static constexpr int chanCalibHE2_
Definition: HcalTopology.h:275
static constexpr unsigned int nEtaCalibHB_
Definition: HcalTopology.h:241
static constexpr unsigned int nEtaCalibHE_
Definition: HcalTopology.h:248
static constexpr unsigned int maxPhi_
Definition: HcalTopology.h:239
static constexpr unsigned int nchanCalibHB_
Definition: HcalTopology.h:241
static constexpr int chanCalibHE1_[nchanCalibHE1_]
Definition: HcalTopology.h:250
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr int etaCalibHEX_[nEtaCalibHEX_]
Definition: HcalTopology.h:296
static constexpr unsigned int nchanCalibHF1_
Definition: HcalTopology.h:255
static constexpr int chanCalibHO_[nchanCalibHO_]
Definition: HcalTopology.h:264
static constexpr unsigned int nchanCalibHE1_
Definition: HcalTopology.h:248
static constexpr int etaCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:284
static constexpr int chanCalibHOs_
Definition: HcalTopology.h:263
static constexpr unsigned int nEtaCalibHOX_
Definition: HcalTopology.h:283
static constexpr int chanCalibHF1_[nchanCalibHF1_]
Definition: HcalTopology.h:257
static constexpr int chanCalibHB_[nchanCalibHB_]
Definition: HcalTopology.h:243
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi...
static constexpr unsigned int minPhi_
Definition: HcalTopology.h:239
static constexpr int etaCalibHF_[nEtaCalibHF_]
Definition: HcalTopology.h:258
static constexpr unsigned int nEtaCalibHEX_
Definition: HcalTopology.h:295

◆ validDetId()

bool HcalTopology::validDetId ( HcalSubdetector  subdet,
int  ieta,
int  iphi,
int  depth 
) const

◆ validDetIdPreLS1()

bool HcalTopology::validDetIdPreLS1 ( const HcalDetId id) const
private

Is this a valid cell id, ignoring the exclusion list

Basic rules used to derive this code:

HB has 72 towers in iphi. Ieta 1-14 have depth=1, Ieta 15-16 have depth=1 or 2.

HE ieta=16-20 have 72 towers in iphi ieta=21-29 have 36 towers in iphi ieta=16 is depth 3 only ieta=17 is depth 1 only ieta=18-26 & 29 have depth 1 and 2 ieta=27-28 has depth 1-3

HF ieta=29-39 have 36 in iphi ieta=40-41 have 18 in iphi (71,3,7,11...) all have two depths

HO has 15 towers in ieta and 72 in iphi and depth = 4 (one value)

At H2:

HE ieta 17 is two depths HE ieta 22- have 36 towers in iphi (starts one higher) HE ieta 24- has three depths

Definition at line 541 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, Calorimetry_cff::dp, firstHERing(), firstHFQuadPhiRing(), firstHFRing(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::barrel::ietaAbs(), hcalRecHitTable_cff::iphi, IPHI_MAX, and lastHFRing().

541  {
542  const HcalSubdetector sd(id.subdet());
543  const int ie(id.ietaAbs());
544  const int ip(id.iphi());
545  const int dp(id.depth());
546 
547  return ((ip >= 1) && (ip <= IPHI_MAX) && (dp >= 1) && (ie >= 1) &&
548  (((sd == HcalBarrel) && (((ie <= 14) && (dp == 1)) || (((ie == 15) || (ie == 16)) && (dp <= 2)))) ||
549  ((sd == HcalEndcap) &&
550  (((ie == firstHERing()) && (dp == 3)) || ((ie == 17) && (dp == 1)) ||
551  ((ie >= 18) && (ie <= 20) && (dp <= 2)) || ((ie >= 21) && (ie <= 26) && (dp <= 2) && (ip % 2 == 1)) ||
552  ((ie >= 27) && (ie <= 28) && (dp <= 3) && (ip % 2 == 1)) || ((ie == 29) && (dp <= 2) && (ip % 2 == 1)))) ||
553  ((sd == HcalOuter) && (ie <= 15) && (dp == 4)) ||
554  ((sd == HcalForward) && (dp <= 2) &&
555  (((ie >= firstHFRing()) && (ie < firstHFQuadPhiRing()) && (ip % 2 == 1)) ||
556  ((ie >= firstHFQuadPhiRing()) && (ie <= lastHFRing()) && (ip % 4 == 3))))));
557 }
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:103
HcalSubdetector
Definition: HcalAssistant.h:31
int lastHFRing() const
Definition: HcalTopology.h:97
int firstHFRing() const
Definition: HcalTopology.h:96
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:93

◆ validHcal() [1/2]

bool HcalTopology::validHcal ( const HcalDetId id) const

Is this a valid cell id?

Definition at line 234 of file HcalTopology.cc.

References isExcluded(), and validRaw().

Referenced by HcalDigitizer::accumulateCaloHits(), HcalTestSimHitID::analyze(), HcalHBHEMuonAnalyzer::analyze(), HcalHBHEMuonHighEtaAnalyzer::analyzeTracks(), CaloTowersCreationAlgo::hadShwrPos(), AlCaHcalHBHEMuonProducer::produce(), valid(), validDetId(), and validHcal().

234  {
235  // check the raw rules
236  return validRaw(id) && !isExcluded(id);
237 }
bool validRaw(const HcalDetId &id) const
bool isExcluded(const HcalDetId &id) const

◆ validHcal() [2/2]

bool HcalTopology::validHcal ( const HcalDetId id,
const unsigned int  flag 
) const

Is this a valid cell in context of Plan1

Definition at line 336 of file HcalTopology.cc.

References RemoveAddSevLevel::flag, hcons_, HcalDDDRecConstants::isPlan1MergedId(), HcalDDDRecConstants::isPlan1ToBeMergedId(), or, and validHcal().

336  {
337  /* original logic show here because condensed form below is rather terse
338  // check the raw rules
339  bool ok = validHcal(id);
340  if (flag == 0) { // This is all what is needed
341  } else if (flag == 1) { // See if it is in the to be merged list and merged list
342  if (hcons_->isPlan1MergedId(id)) ok = true;
343  else if (hcons_->isPlan1ToBeMergedId(id)) ok = false;
344  } else if (!ok) {
345  ok = hcons_->isPlan1MergedId(id);
346  }
347  return ok;
348  */
349  return (flag > 0 and hcons_->isPlan1MergedId(id)) or
350  ((flag != 1 or !hcons_->isPlan1ToBeMergedId(id)) and validHcal(id));
351 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
bool isPlan1ToBeMergedId(const HcalDetId &id) const
bool validHcal(const HcalDetId &id) const
bool isPlan1MergedId(const HcalDetId &id) const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

◆ validHT()

bool HcalTopology::validHT ( const HcalTrigTowerDetId id) const

Definition at line 243 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, firstHFRing_, hcalRecHitTable_cff::ieta, ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::barrel::ietaAbs(), hcalRecHitTable_cff::iphi, IPHI_MAX, lastHBRing_, maxDepthHE_, or, triggerMode_, HcalTopologyMode::TriggerMode_2009, HcalTopologyMode::TriggerMode_2017, HcalTopologyMode::TriggerMode_2018legacy, and relval_steps::version.

Referenced by CaloTPGTranscoderULUT::HTvalid(), CaloTPGTranscoderULUT::loadHCALCompress(), Phase2L1CaloEGammaEmulator::produce(), L1EGCrystalClusterEmulatorProducer::produce(), and validRaw().

243  {
244  if (id.iphi() < 1 || id.iphi() > IPHI_MAX || id.ieta() == 0)
245  return false;
246  if (id.depth() != 0)
247  return false;
248  if (maxDepthHE_ == 0) {
249  if (id.ietaAbs() > lastHBRing_ && id.ietaAbs() < firstHFRing_)
250  return false;
251  }
252  // Version 2 TPs should be for HBHE when using 1TS filter scheme
253  if (id.version() == 0 or id.version() == 2) {
254  if (id.ietaAbs() > 28) {
256  return false;
258  return false;
259  if ((id.iphi() % 4) != 1)
260  return false;
261  if (id.ietaAbs() > 32)
262  return false;
263  }
264  } else if (id.version() == 1) {
266  return false;
267  if (id.ietaAbs() < 30 || id.ietaAbs() > 41)
268  return false;
269  if (id.ietaAbs() > 29 && ((id.iphi() % 2) == 0))
270  return false;
271  if (id.ietaAbs() > 39 && ((id.iphi() % 4) != 3))
272  return false;
273  } else if (id.version() > 2) {
274  // only versions 0, 1, and 2 are supported
275  return false;
276  }
277 
278  return true;
279 }
HcalTopologyMode::TriggerMode triggerMode_
Definition: HcalTopology.h:191
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
static const int IPHI_MAX
Definition: HcalTopology.cc:13

◆ validRaw()

bool HcalTopology::validRaw ( const HcalDetId id) const
private

Is this a valid cell id?

Definition at line 560 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, etaBinsHE_, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHERing(), firstHFQuadPhiRing(), firstHFRing(), HcalDDDRecConstants::getDepthEta16(), HcalDDDRecConstants::getMaxDepth(), HcalDDDRecConstants::getNoff(), HcalTopologyMode::H2, HcalTopologyMode::H2HE, HcalBarrel, HcalEndcap, HcalForward, HcalOther, HcalOuter, HcalTriggerTower, hcons_, mps_fire::i, hcalRecHitTable_cff::ieta, hcalRecHitTable_cff::iphi, IPHI_MAX, lastHBRing(), lastHERing(), lastHFRing(), lastHORing(), maxEta_, HcalDDDRecConstants::maxHFDepth(), HLT_2024v14_cff::maxPhi, maxPhiHE_, mode_, convertSQLiteXML::ok, nano_mu_digi_cff::rawId, HcalTopologyMode::Run3, HcalTopologyMode::Run4, HcalTopologyMode::SLHC, validCalib(), validHT(), and ecaldqm::zside().

Referenced by decIPhi(), decrementDepth(), exclude(), incIPhi(), incrementDepth(), and validHcal().

560  {
561  bool ok = true;
562  int ieta = id.ieta();
563  int aieta = id.ietaAbs();
564  int depth = id.depth();
565  int iphi = id.iphi();
566  int zside = id.zside();
567  HcalSubdetector subdet = id.subdet();
568  int maxPhi = (subdet == HcalEndcap) ? maxPhiHE_ : IPHI_MAX;
569  if ((ieta == 0 || iphi <= 0 || iphi > maxPhi) || aieta > maxEta_)
570  ok = false; // outer limits
571 
572  if (ok) {
573  if (subdet == HcalBarrel) {
576  if ((aieta > lastHBRing()) || (depth > hcons_->getMaxDepth(0, aieta, iphi, zside)) ||
577  (depth < hcons_->getMinDepth(0, aieta, iphi, zside)))
578  ok = false;
579  } else {
580  if (aieta > lastHBRing() || depth > 2 || (aieta <= 14 && depth > 1))
581  ok = false;
582  }
583  } else if (subdet == HcalEndcap) {
586  if ((depth > hcons_->getMaxDepth(1, aieta, iphi, zside)) ||
587  (depth < hcons_->getMinDepth(1, aieta, iphi, zside)) || (aieta < firstHERing()) || (aieta > lastHERing())) {
588  ok = false;
589  } else {
590  for (const auto& i : etaBinsHE_) {
591  if (aieta == i.ieta) {
592  if (aieta >= firstHEDoublePhiRing() && (iphi % 2) == 0)
593  ok = false;
594  if (aieta >= firstHEQuadPhiRing() && (iphi % 4) != 3)
595  ok = false;
596  if (aieta + 1 == hcons_->getNoff(1)) {
597  if (depth < 1)
598  ok = false;
599  } else {
600  if (depth < i.depthStart)
601  ok = false;
602  }
603  break;
604  }
605  }
606  }
607  } else {
608  if (depth > hcons_->getMaxDepth(1, aieta, iphi, zside) || aieta < firstHERing() || aieta > lastHERing() ||
609  (aieta == firstHERing() && depth != hcons_->getDepthEta16(2, iphi, zside)) ||
610  (aieta == 17 && depth != 1 && mode_ != HcalTopologyMode::H2) || // special case at H2
611  (((aieta >= 17 && aieta < firstHETripleDepthRing()) || aieta == lastHERing()) && depth > 2) ||
612  (aieta >= firstHEDoublePhiRing() && (iphi % 2) == 0))
613  ok = false;
614  }
615  } else if (subdet == HcalOuter) {
616  if (aieta > lastHORing() || iphi > IPHI_MAX || depth != 4)
617  ok = false;
618  } else if (subdet == HcalForward) {
619  if (aieta < firstHFRing() || aieta > lastHFRing() || ((iphi % 2) == 0) ||
620  (depth > hcons_->maxHFDepth(ieta, iphi)) || (aieta >= firstHFQuadPhiRing() && ((iphi + 1) % 4) != 0))
621  ok = false;
622  } else if (subdet == HcalTriggerTower) {
624  } else if (subdet == HcalOther) {
626  } else {
627  ok = false;
628  }
629  }
630  return ok;
631 }
bool validHT(const HcalTrigTowerDetId &id) const
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
int lastHORing() const
Definition: HcalTopology.h:99
int zside(DetId const &)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:198
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:103
int lastHBRing() const
Definition: HcalTopology.h:92
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:190
HcalSubdetector
Definition: HcalAssistant.h:31
int getMaxDepth(const int &type) const
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:102
bool validCalib(const HcalCalibDetId &id) const
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:101
int maxHFDepth(int ieta, int iphi) const
int getNoff(const int &i) const
int lastHERing() const
Definition: HcalTopology.h:94
int lastHFRing() const
Definition: HcalTopology.h:97
int firstHFRing() const
Definition: HcalTopology.h:96
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:93

◆ west()

std::vector< DetId > HcalTopology::west ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in west direction

Implements CaloSubdetectorTopology.

Definition at line 418 of file HcalTopology.cc.

References mps_fire::i, incIEta(), and nano_mu_digi_cff::rawId.

418  {
419  std::vector<DetId> vNeighborsDetId;
420  HcalDetId neighbors[2];
421  for (int i = 0; i < incIEta(HcalDetId(id), neighbors); i++) {
422  if (neighbors[i].oldFormat())
423  neighbors[i].changeForm();
424  vNeighborsDetId.emplace_back(DetId(neighbors[i].rawId()));
425  }
426  return vNeighborsDetId;
427 }
int incIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
Definition: DetId.h:17

◆ withSpecialRBXHBHE()

bool HcalTopology::withSpecialRBXHBHE ( ) const
inline

Definition at line 165 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::withSpecialRBXHBHE().

165 { return hcons_->withSpecialRBXHBHE(); }
bool withSpecialRBXHBHE() const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:185

Member Data Documentation

◆ CALIBSize_

unsigned int HcalTopology::CALIBSize_
private

Definition at line 213 of file HcalTopology.h.

Referenced by getCALIBSize(), and HcalTopology().

◆ chanCalibHB_

constexpr int HcalTopology::chanCalibHB_[nchanCalibHB_] = {0, 1, 2}
staticprivate

Definition at line 243 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ chanCalibHE1_

constexpr int HcalTopology::chanCalibHE1_[nchanCalibHE1_] = {0, 1, 3, 4, 5, 6}
staticprivate

Definition at line 250 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ chanCalibHE2_

constexpr int HcalTopology::chanCalibHE2_ = 2
staticprivate

Definition at line 275 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ chanCalibHF1_

constexpr int HcalTopology::chanCalibHF1_[nchanCalibHF1_] = {0, 1, 8}
staticprivate

Definition at line 257 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ chanCalibHF2_

constexpr int HcalTopology::chanCalibHF2_ = 9
staticprivate

Definition at line 279 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ chanCalibHO_

constexpr int HcalTopology::chanCalibHO_[nchanCalibHO_] = {0, 1}
staticprivate

Definition at line 264 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ chanCalibHOs_

constexpr int HcalTopology::chanCalibHOs_ = 7
staticprivate

Definition at line 263 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ depthSegmentation_

SegmentationMap HcalTopology::depthSegmentation_
private

Definition at line 224 of file HcalTopology.h.

Referenced by getDepthSegmentation(), and setDepthSegmentation().

◆ depthSegmentationOne_

SegmentationMap HcalTopology::depthSegmentationOne_
private

Definition at line 225 of file HcalTopology.h.

Referenced by getDepthSegmentation(), and setDepthSegmentation().

◆ doublePhiBins_

int HcalTopology::doublePhiBins_
private

Definition at line 203 of file HcalTopology.h.

Referenced by doublePhiBins(), and nPhiBins().

◆ dPhiTable

std::vector<double> HcalTopology::dPhiTable
private

Definition at line 216 of file HcalTopology.h.

Referenced by HcalTopology(), nPhiBins(), and phiBin().

◆ dPhiTableHF

std::vector<double> HcalTopology::dPhiTableHF
private

Definition at line 216 of file HcalTopology.h.

Referenced by HcalTopology(), nPhiBins(), and phiBin().

◆ etaBinsHB_

std::vector<HcalDDDRecConstants::HcalEtaBin> HcalTopology::etaBinsHB_
private

Definition at line 198 of file HcalTopology.h.

Referenced by decrementDepth(), and HcalTopology().

◆ etaBinsHE_

std::vector<HcalDDDRecConstants::HcalEtaBin> HcalTopology::etaBinsHE_
private

Definition at line 198 of file HcalTopology.h.

Referenced by decrementDepth(), HcalTopology(), and validRaw().

◆ etaCalibHB_

constexpr int HcalTopology::etaCalibHB_[nEtaCalibHB_] = {-1, 1}
staticprivate

Definition at line 244 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ etaCalibHBX_

constexpr int HcalTopology::etaCalibHBX_ = 16
staticprivate

Definition at line 291 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ etaCalibHE_

constexpr int HcalTopology::etaCalibHE_[nEtaCalibHE_] = {-1, 1}
staticprivate

Definition at line 251 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ etaCalibHEX_

constexpr int HcalTopology::etaCalibHEX_[nEtaCalibHEX_] = {25, 27}
staticprivate

Definition at line 296 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ etaCalibHF_

constexpr int HcalTopology::etaCalibHF_[nEtaCalibHF_] = {-1, 1}
staticprivate

Definition at line 258 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ etaCalibHO_

constexpr int HcalTopology::etaCalibHO_[nEtaCalibHO_] = {-2, -1, 0, 1, 2}
staticprivate

Definition at line 265 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ etaCalibHOX_

constexpr int HcalTopology::etaCalibHOX_[nEtaCalibHOX_] = {4, 15}
staticprivate

Definition at line 284 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), detId2denseIdCALIB(), and validCalib().

◆ etaHE2HF_

int HcalTopology::etaHE2HF_
private

Definition at line 205 of file HcalTopology.h.

Referenced by HcalTopology(), and incAIEta().

◆ etaHF2HE_

int HcalTopology::etaHF2HE_
private

Definition at line 205 of file HcalTopology.h.

Referenced by decAIEta(), decrementDepth(), and HcalTopology().

◆ etaTable

std::vector<double> HcalTopology::etaTable
private

Definition at line 216 of file HcalTopology.h.

Referenced by etaMax(), etaRange(), etaRing(), and HcalTopology().

◆ etaTableHF

std::vector<double> HcalTopology::etaTableHF
private

Definition at line 216 of file HcalTopology.h.

Referenced by etaMax(), etaRange(), etaRing(), and HcalTopology().

◆ excludeHB_

bool HcalTopology::excludeHB_
private

Definition at line 188 of file HcalTopology.h.

Referenced by exclude(), excludeSubdetector(), and isExcluded().

◆ excludeHE_

bool HcalTopology::excludeHE_
private

Definition at line 188 of file HcalTopology.h.

Referenced by exclude(), excludeSubdetector(), and isExcluded().

◆ excludeHF_

bool HcalTopology::excludeHF_
private

Definition at line 188 of file HcalTopology.h.

Referenced by exclude(), excludeSubdetector(), and isExcluded().

◆ excludeHO_

bool HcalTopology::excludeHO_
private

Definition at line 188 of file HcalTopology.h.

Referenced by exclude(), excludeSubdetector(), and isExcluded().

◆ exclusionList_

std::vector<HcalDetId> HcalTopology::exclusionList_
private

Definition at line 187 of file HcalTopology.h.

Referenced by exclude(), and isExcluded().

◆ firstHBRing_

int HcalTopology::firstHBRing_
private

Definition at line 193 of file HcalTopology.h.

Referenced by etaRing(), firstHBRing(), HcalTopology(), nPhiBins(), and phiBin().

◆ firstHEDoublePhiRing_

int HcalTopology::firstHEDoublePhiRing_
private

Definition at line 201 of file HcalTopology.h.

Referenced by firstHEDoublePhiRing(), and HcalTopology().

◆ firstHEQuadPhiRing_

int HcalTopology::firstHEQuadPhiRing_
private

Definition at line 201 of file HcalTopology.h.

Referenced by firstHEQuadPhiRing(), and HcalTopology().

◆ firstHERing_

int HcalTopology::firstHERing_
private

Definition at line 194 of file HcalTopology.h.

Referenced by firstHERing(), and HcalTopology().

◆ firstHETripleDepthRing_

int HcalTopology::firstHETripleDepthRing_
private

Definition at line 202 of file HcalTopology.h.

Referenced by firstHETripleDepthRing(), and HcalTopology().

◆ firstHFQuadPhiRing_

int HcalTopology::firstHFQuadPhiRing_
private

Definition at line 201 of file HcalTopology.h.

Referenced by firstHFQuadPhiRing(), and HcalTopology().

◆ firstHFRing_

int HcalTopology::firstHFRing_
private

Definition at line 195 of file HcalTopology.h.

Referenced by etaRange(), etaRing(), firstHFRing(), HcalTopology(), nPhiBins(), phiBin(), and validHT().

◆ firstHORing_

int HcalTopology::firstHORing_
private

Definition at line 196 of file HcalTopology.h.

Referenced by firstHORing(), and HcalTopology().

◆ HBSize_

unsigned int HcalTopology::HBSize_
private

Definition at line 208 of file HcalTopology.h.

Referenced by denseId2detId(), detId2denseId(), getHBSize(), HcalTopology(), and ncells().

◆ hcons_

const HcalDDDRecConstants* HcalTopology::hcons_
private

◆ HESize_

unsigned int HcalTopology::HESize_
private

Definition at line 209 of file HcalTopology.h.

Referenced by denseId2detId(), detId2denseId(), getHESize(), HcalTopology(), and ncells().

◆ HFSize_

unsigned int HcalTopology::HFSize_
private

Definition at line 211 of file HcalTopology.h.

Referenced by getHFSize(), HcalTopology(), and ncells().

◆ HOSize_

unsigned int HcalTopology::HOSize_
private

Definition at line 210 of file HcalTopology.h.

Referenced by denseId2detId(), detId2denseId(), getHOSize(), HcalTopology(), and ncells().

◆ HTSize_

unsigned int HcalTopology::HTSize_
private

Definition at line 212 of file HcalTopology.h.

Referenced by getHTSize(), and HcalTopology().

◆ kCALIBhalf

constexpr int HcalTopology::kCALIBhalf = 693
staticprivate

Definition at line 228 of file HcalTopology.h.

◆ kCALIBSizePreLS1

constexpr int HcalTopology::kCALIBSizePreLS1 = 2 * kCALIBhalf
staticprivate

Definition at line 237 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kCASTORhalf

constexpr int HcalTopology::kCASTORhalf = 224
staticprivate

Definition at line 228 of file HcalTopology.h.

◆ kchanCalibHB_

constexpr unsigned int HcalTopology::kchanCalibHB_ = nchanCalibHB_ * kPhiCalibHB_
staticprivate

Definition at line 245 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kchanCalibHE1_

constexpr unsigned int HcalTopology::kchanCalibHE1_ = nchanCalibHE1_ * kPhiCalibHE_
staticprivate

Definition at line 252 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kchanCalibHE2_

constexpr unsigned int HcalTopology::kchanCalibHE2_ = kPhiCalibHE_
staticprivate

Definition at line 276 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kchanCalibHF1_

constexpr unsigned int HcalTopology::kchanCalibHF1_ = nchanCalibHF1_ * kPhiCalibHF1_
staticprivate

Definition at line 259 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kchanCalibHF2_

constexpr unsigned int HcalTopology::kchanCalibHF2_ = 1
staticprivate

Definition at line 280 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kHBhalf

constexpr int HcalTopology::kHBhalf = 1296
staticprivate

Definition at line 227 of file HcalTopology.h.

Referenced by denseId2detId(), detId2denseIdHB(), and detId2denseIdPreLS1().

◆ kHBSizePreLS1

constexpr int HcalTopology::kHBSizePreLS1 = 2 * kHBhalf
staticprivate

Definition at line 231 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kHcalhalf

constexpr int HcalTopology::kHcalhalf = kHBhalf + kHEhalf + kHOhalf + kHFhalf
staticprivate

Definition at line 229 of file HcalTopology.h.

◆ kHEhalf

constexpr int HcalTopology::kHEhalf = 1296
staticprivate

Definition at line 227 of file HcalTopology.h.

Referenced by denseId2detId(), detId2denseIdHE(), and detId2denseIdPreLS1().

◆ kHESizePreLS1

constexpr int HcalTopology::kHESizePreLS1 = 2 * kHEhalf
staticprivate

Definition at line 232 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kHFhalf

constexpr int HcalTopology::kHFhalf = 864
staticprivate

Definition at line 227 of file HcalTopology.h.

Referenced by denseId2detId(), detId2denseIdHF(), and detId2denseIdPreLS1().

◆ kHFSizePreLS1

constexpr int HcalTopology::kHFSizePreLS1 = 2 * kHFhalf
staticprivate

Definition at line 234 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kHOhalf

constexpr int HcalTopology::kHOhalf = 1080
staticprivate

Definition at line 227 of file HcalTopology.h.

Referenced by denseId2detId(), detId2denseIdHO(), and detId2denseIdPreLS1().

◆ kHOSizePreLS1

constexpr int HcalTopology::kHOSizePreLS1 = 2 * kHOhalf
staticprivate

Definition at line 233 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kHThalf

constexpr int HcalTopology::kHThalf = 2088
staticprivate

Definition at line 227 of file HcalTopology.h.

Referenced by detId2denseIdHT().

◆ kHThalfPhase1

constexpr int HcalTopology::kHThalfPhase1 = 2520
staticprivate

Definition at line 228 of file HcalTopology.h.

◆ kHTSizePhase1

constexpr int HcalTopology::kHTSizePhase1 = 2 * kHThalfPhase1
staticprivate

Definition at line 236 of file HcalTopology.h.

Referenced by detId2denseIdHT(), and HcalTopology().

◆ kHTSizePreLS1

constexpr int HcalTopology::kHTSizePreLS1 = 2 * kHThalf
staticprivate

Definition at line 235 of file HcalTopology.h.

Referenced by detId2denseIdHT(), and HcalTopology().

◆ kOffCalibHB_

constexpr unsigned int HcalTopology::kOffCalibHB_ = 0
staticprivate

Definition at line 240 of file HcalTopology.h.

Referenced by detId2denseIdCALIB().

◆ kOffCalibHBX_

constexpr unsigned int HcalTopology::kOffCalibHBX_ = kOffCalibHOX_ + nCalibHOX_
staticprivate

Definition at line 289 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHE1_

constexpr unsigned int HcalTopology::kOffCalibHE1_ = kOffCalibHB_ + nCalibHB_
staticprivate

Definition at line 247 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHE2_

constexpr unsigned int HcalTopology::kOffCalibHE2_ = kOffCalibHO2_ + nCalibHO2_
staticprivate

Definition at line 274 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHEX_

constexpr unsigned int HcalTopology::kOffCalibHEX_ = kOffCalibHBX_ + nCalibHBX_
staticprivate

Definition at line 294 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHF1_

constexpr unsigned int HcalTopology::kOffCalibHF1_ = kOffCalibHE1_ + nCalibHE1_
staticprivate

Definition at line 254 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHF2_

constexpr unsigned int HcalTopology::kOffCalibHF2_ = kOffCalibHE2_ + nCalibHE2_
staticprivate

Definition at line 278 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHFX_

constexpr unsigned int HcalTopology::kOffCalibHFX_ = kOffCalibHEX_ + nCalibHEX_
staticprivate

Definition at line 299 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and HcalTopology().

◆ kOffCalibHO1_

constexpr unsigned int HcalTopology::kOffCalibHO1_ = kOffCalibHF1_ + nCalibHF1_
staticprivate

Definition at line 261 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHO2_

constexpr unsigned int HcalTopology::kOffCalibHO2_ = kOffCalibHO1_ + nCalibHO1_
staticprivate

Definition at line 272 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHOX_

constexpr unsigned int HcalTopology::kOffCalibHOX_ = kOffCalibHF2_ + nCalibHF2_
staticprivate

Definition at line 282 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHB_

constexpr unsigned int HcalTopology::kPhiCalibHB_ = maxPhi_ / mPhiCalibHB_
staticprivate

Definition at line 242 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHBX_

constexpr unsigned int HcalTopology::kPhiCalibHBX_ = maxPhi_ / mPhiCalibHBX_
staticprivate

Definition at line 292 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHE_

constexpr unsigned int HcalTopology::kPhiCalibHE_ = maxPhi_ / mPhiCalibHE_
staticprivate

Definition at line 249 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHEX_

constexpr unsigned int HcalTopology::kPhiCalibHEX_ = maxPhi_ / mPhiCalibHEX_
staticprivate

Definition at line 297 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHF1_

constexpr unsigned int HcalTopology::kPhiCalibHF1_ = maxPhi_ / mPhiCalibHF1_
staticprivate

Definition at line 256 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHO0_

constexpr unsigned int HcalTopology::kPhiCalibHO0_ = maxPhi_ / mPhiCalibHO0_
staticprivate

Definition at line 268 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHO1_

constexpr unsigned int HcalTopology::kPhiCalibHO1_ = maxPhi_ / mPhiCalibHO1_
staticprivate

Definition at line 269 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHO2_

constexpr unsigned int HcalTopology::kPhiCalibHO2_ = 4 * kPhiCalibHO1_ + kPhiCalibHO0_
staticprivate

Definition at line 270 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kSizeForDenseIndexingPreLS1

constexpr int HcalTopology::kSizeForDenseIndexingPreLS1 = 2 * kHcalhalf
staticprivate

Definition at line 230 of file HcalTopology.h.

Referenced by denseId2detId().

◆ kZDChalf

constexpr int HcalTopology::kZDChalf = 11
staticprivate

Definition at line 227 of file HcalTopology.h.

◆ lastHBRing_

int HcalTopology::lastHBRing_
private

Definition at line 193 of file HcalTopology.h.

Referenced by etaMax(), HcalTopology(), lastHBHERing(), lastHBRing(), and validHT().

◆ lastHERing_

int HcalTopology::lastHERing_
private

Definition at line 194 of file HcalTopology.h.

Referenced by etaMax(), etaRange(), etaRing(), HcalTopology(), lastHBHERing(), and lastHERing().

◆ lastHFRing_

int HcalTopology::lastHFRing_
private

Definition at line 195 of file HcalTopology.h.

Referenced by HcalTopology(), and lastHFRing().

◆ lastHORing_

int HcalTopology::lastHORing_
private

Definition at line 196 of file HcalTopology.h.

Referenced by etaMax(), HcalTopology(), and lastHORing().

◆ maxDepthHB_

int HcalTopology::maxDepthHB_
private

◆ maxDepthHE_

int HcalTopology::maxDepthHE_
private

◆ maxDepthHF_

int HcalTopology::maxDepthHF_
private

◆ maxEta_

int HcalTopology::maxEta_
private

Definition at line 206 of file HcalTopology.h.

Referenced by HcalTopology(), and validRaw().

◆ maxPhi_

constexpr unsigned int HcalTopology::maxPhi_ = 72
staticprivate

Definition at line 239 of file HcalTopology.h.

Referenced by validCalib().

◆ maxPhiHE_

int HcalTopology::maxPhiHE_
private

◆ mergePosition_

bool HcalTopology::mergePosition_
private

Definition at line 186 of file HcalTopology.h.

Referenced by getMergePositionFlag().

◆ minMaxDepth_

constexpr int HcalTopology::minMaxDepth_ = 4
staticprivate

Definition at line 238 of file HcalTopology.h.

Referenced by maxDepth().

◆ minPhi_

constexpr unsigned int HcalTopology::minPhi_ = 1
staticprivate

Definition at line 239 of file HcalTopology.h.

Referenced by validCalib().

◆ mode_

HcalTopologyMode::Mode HcalTopology::mode_
private

◆ mPhiCalibHB_

constexpr unsigned int HcalTopology::mPhiCalibHB_ = 4
staticprivate

Definition at line 242 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHBX_

constexpr unsigned int HcalTopology::mPhiCalibHBX_ = 1
staticprivate

Definition at line 290 of file HcalTopology.h.

◆ mPhiCalibHE_

constexpr unsigned int HcalTopology::mPhiCalibHE_ = 4
staticprivate

Definition at line 249 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHEX_

constexpr unsigned int HcalTopology::mPhiCalibHEX_ = 2
staticprivate

Definition at line 295 of file HcalTopology.h.

Referenced by detId2denseIdCALIB().

◆ mPhiCalibHF1_

constexpr unsigned int HcalTopology::mPhiCalibHF1_ = 18
staticprivate

Definition at line 256 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHO0_

constexpr unsigned int HcalTopology::mPhiCalibHO0_ = 6
staticprivate

Definition at line 267 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHO1_

constexpr unsigned int HcalTopology::mPhiCalibHO1_ = 12
staticprivate

Definition at line 267 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHOX_

constexpr unsigned int HcalTopology::mPhiCalibHOX_[nEtaCalibHOX_] = {2, 1}
staticprivate

Definition at line 285 of file HcalTopology.h.

◆ nCalibHB_

constexpr unsigned int HcalTopology::nCalibHB_ = kchanCalibHB_ * nEtaCalibHB_
staticprivate

Definition at line 246 of file HcalTopology.h.

◆ nCalibHBX_

constexpr unsigned int HcalTopology::nCalibHBX_ = 2 * kPhiCalibHBX_ * nEtaCalibHBX_
staticprivate

Definition at line 293 of file HcalTopology.h.

◆ nCalibHE1_

constexpr unsigned int HcalTopology::nCalibHE1_ = kchanCalibHE1_ * nEtaCalibHE_
staticprivate

Definition at line 253 of file HcalTopology.h.

◆ nCalibHE2_

constexpr unsigned int HcalTopology::nCalibHE2_ = kchanCalibHE2_ * nEtaCalibHE_
staticprivate

Definition at line 277 of file HcalTopology.h.

◆ nCalibHEX_

constexpr unsigned int HcalTopology::nCalibHEX_ = 2 * kPhiCalibHEX_ * nEtaCalibHEX_
staticprivate

Definition at line 298 of file HcalTopology.h.

◆ nCalibHF1_

constexpr unsigned int HcalTopology::nCalibHF1_ = kchanCalibHF1_ * nEtaCalibHF_
staticprivate

Definition at line 260 of file HcalTopology.h.

◆ nCalibHF2_

constexpr unsigned int HcalTopology::nCalibHF2_ = nEtaCalibHF_
staticprivate

Definition at line 281 of file HcalTopology.h.

◆ nCalibHO1_

constexpr unsigned int HcalTopology::nCalibHO1_ = kPhiCalibHO2_ * nchanCalibHO_
staticprivate

Definition at line 271 of file HcalTopology.h.

◆ nCalibHO2_

constexpr unsigned int HcalTopology::nCalibHO2_ = nEtaCalibHO_
staticprivate

Definition at line 273 of file HcalTopology.h.

◆ nCalibHOX_

constexpr int HcalTopology::nCalibHOX_ = 2 * (nPhiCalibHOX_[0] + nPhiCalibHOX_[1])
staticprivate

Definition at line 287 of file HcalTopology.h.

◆ nchanCalibHB_

constexpr unsigned int HcalTopology::nchanCalibHB_ = 3
staticprivate

Definition at line 241 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nchanCalibHE1_

constexpr unsigned int HcalTopology::nchanCalibHE1_ = 6
staticprivate

Definition at line 248 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nchanCalibHF1_

constexpr unsigned int HcalTopology::nchanCalibHF1_ = 3
staticprivate

Definition at line 255 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nchanCalibHO_

constexpr unsigned int HcalTopology::nchanCalibHO_ = 2
staticprivate

Definition at line 262 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHB_

constexpr unsigned int HcalTopology::nEtaCalibHB_ = 2
staticprivate

Definition at line 241 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHBX_

constexpr unsigned int HcalTopology::nEtaCalibHBX_ = 1
staticprivate

Definition at line 290 of file HcalTopology.h.

◆ nEtaCalibHE_

constexpr unsigned int HcalTopology::nEtaCalibHE_ = 2
staticprivate

Definition at line 248 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHEX_

constexpr unsigned int HcalTopology::nEtaCalibHEX_ = 2
staticprivate

Definition at line 295 of file HcalTopology.h.

Referenced by validCalib().

◆ nEtaCalibHF_

constexpr unsigned int HcalTopology::nEtaCalibHF_ = 2
staticprivate

Definition at line 255 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHO_

constexpr unsigned int HcalTopology::nEtaCalibHO_ = 5
staticprivate

Definition at line 262 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHOX_

constexpr unsigned int HcalTopology::nEtaCalibHOX_ = 2
staticprivate

Definition at line 283 of file HcalTopology.h.

Referenced by validCalib().

◆ nEtaHB_

int HcalTopology::nEtaHB_
private

◆ nEtaHE_

int HcalTopology::nEtaHE_
private

Definition at line 199 of file HcalTopology.h.

Referenced by denseId2detId(), detId2denseId(), detId2denseIdHE(), etaMax(), and HcalTopology().

◆ nPhiCalibHOX_

constexpr unsigned int HcalTopology::nPhiCalibHOX_[nEtaCalibHOX_] = {36, 72}
staticprivate

Definition at line 286 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ numberOfShapes_

unsigned int HcalTopology::numberOfShapes_
private

Definition at line 214 of file HcalTopology.h.

Referenced by getNumberOfShapes(), and HcalTopology().

◆ phiCalibHF2_

constexpr int HcalTopology::phiCalibHF2_ = 1
staticprivate

Definition at line 279 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phiCalibHO_

constexpr int HcalTopology::phiCalibHO_[nEtaCalibHO_] = {59, 47, 53, 47, 47}
staticprivate

Definition at line 266 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phiCalibHOX1_

constexpr int HcalTopology::phiCalibHOX1_ = 4
staticprivate

Definition at line 288 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phiCalibHOX2_

constexpr int HcalTopology::phiCalibHOX2_ = 12
staticprivate

Definition at line 288 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phiCalibHOX3_

constexpr int HcalTopology::phiCalibHOX3_ = 6
staticprivate

Definition at line 288 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phioff

std::vector<double> HcalTopology::phioff
private

Definition at line 217 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().

◆ singlePhiBins_

int HcalTopology::singlePhiBins_
private

Definition at line 203 of file HcalTopology.h.

Referenced by nPhiBins(), and singlePhiBins().

◆ topoVersion_

int HcalTopology::topoVersion_
private

◆ triggerMode_

HcalTopologyMode::TriggerMode HcalTopology::triggerMode_
private

Definition at line 191 of file HcalTopology.h.

Referenced by HcalTopology(), triggerMode(), and validHT().

◆ unitPhi

std::vector<int> HcalTopology::unitPhi
private

Definition at line 218 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().

◆ unitPhiHF

std::vector<int> HcalTopology::unitPhiHF
private

Definition at line 218 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().