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)
 
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...
 
unsigned int ncells (int subdet) const
 
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 phase1 () const
 
bool phase1A () const
 
bool phase1B () const
 
bool phase2 () const
 
bool validDetIdPreLS1 (const HcalDetId &id) const
 
bool validRaw (const HcalDetId &id, const bool debug=false) 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 kHBhalfPostLS2 = 4536
 
static constexpr int kHBSizePostLS2 = 2 * kHBhalfPostLS2
 
static constexpr int kHBSizePreLS1 = 2 * kHBhalf
 
static constexpr int kHcalhalf = kHBhalf + kHEhalf + kHOhalf + kHFhalf
 
static constexpr int kHcalhalfPostLS2 = kHBhalfPostLS2 + kHEhalfPostLS2 + kHOhalf + kHFhalfPostLS2
 
static constexpr int kHEhalf = 1296
 
static constexpr int kHEhalfPostLS2 = 3384
 
static constexpr int kHESizePostLS2 = 2 * kHEhalfPostLS2
 
static constexpr int kHESizePreLS1 = 2 * kHEhalf
 
static constexpr int kHFhalf = 864
 
static constexpr int kHFhalfPostLS2 = 1728
 
static constexpr int kHFSizePostLS2 = 2 * kHFhalfPostLS2
 
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 kSizeForDenseIndexingPostLS2 = 2 * kHcalhalfPostLS2
 
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 230 of file HcalTopology.h.

Constructor & Destructor Documentation

◆ HcalTopology()

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_, HcalBarrel, HcalEndcap, HcalForward, 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_, maxDepthHB_, maxDepthHE_, maxDepthHF_, maxEta_, maxPhiHE_, mode_, ncells(), HLT_2024v14_cff::nEta, nEtaHB_, nEtaHE_, numberOfShapes_, phase1(), phioff, relativeConstraints::ring, edm::second(), setDepthSegmentation(), 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  }
67  if (phase1()) {
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 { // 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 
159  // Now redfine some of the sizes
160 #ifdef EDM_ML_DEBUG
161  edm::LogVerbatim("HCalGeom") << "Redefined sizes could be for HB:" << ncells(HcalBarrel)
162  << " HE:" << ncells(HcalEndcap) << " HF: " << ncells(HcalForward);
163 #endif
164 }
Log< level::Info, true > LogVerbatim
std::vector< int > unitPhiHF
Definition: HcalTopology.h:225
std::pair< int, int > getEtaRange(const int &i) const
const std::vector< double > & getPhiOffs() const
static constexpr unsigned int kOffCalibHFX_
Definition: HcalTopology.h:312
unsigned int numberOfShapes_
Definition: HcalTopology.h:221
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:223
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHB_
Definition: HcalTopology.h:205
std::vector< int > unitPhi
Definition: HcalTopology.h:225
int getNPhi(const int &type) const
HcalTopologyMode::TriggerMode triggerMode_
Definition: HcalTopology.h:198
unsigned int HESize_
Definition: HcalTopology.h:216
unsigned int HTSize_
Definition: HcalTopology.h:219
static constexpr int kHFSizePreLS1
Definition: HcalTopology.h:244
static constexpr int kHTSizePreLS1
Definition: HcalTopology.h:245
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:205
std::vector< HcalEtaBin > getEtaBins(const int &itype) const
static constexpr int kCALIBSizePreLS1
Definition: HcalTopology.h:247
U second(std::pair< T, U > const &p)
unsigned int CALIBSize_
Definition: HcalTopology.h:220
unsigned int HFSize_
Definition: HcalTopology.h:218
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:197
unsigned int HBSize_
Definition: HcalTopology.h:215
const std::vector< double > & getEtaTable() const
static constexpr int kHESizePreLS1
Definition: HcalTopology.h:242
static constexpr int kHBSizePreLS1
Definition: HcalTopology.h:241
bool phase1() const
Definition: HcalTopology.h:171
static constexpr int kHOSizePreLS1
Definition: HcalTopology.h:243
std::vector< double > etaTableHF
Definition: HcalTopology.h:223
unsigned int HOSize_
Definition: HcalTopology.h:217
int getMaxDepth(const int &type) const
std::vector< double > etaTable
Definition: HcalTopology.h:223
Basic3DVector unit() const
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
static constexpr int kHTSizePhase1
Definition: HcalTopology.h:246
const std::vector< double > & getEtaTableHF() const
int firstHEQuadPhiRing_
Definition: HcalTopology.h:208
bool mergePosition_
Definition: HcalTopology.h:193
std::vector< double > phioff
Definition: HcalTopology.h:224
std::vector< double > dPhiTable
Definition: HcalTopology.h:223
TString units(TString variable, Char_t axis)
int firstHETripleDepthRing_
Definition: HcalTopology.h:209
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:208
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:192
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHFQuadPhiRing_
Definition: HcalTopology.h:208

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 726 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().

726  {
727  int n = 1;
728  int aieta = id.ietaAbs();
729 
730  if (aieta == firstHEDoublePhiRing()) {
731  n = 2;
732  neighbors[0] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi(), id.depth());
733  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi() + 1, id.depth());
734  } else if (aieta == firstHFQuadPhiRing()) {
735  n = 2;
736  neighbors[0] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi(), id.depth());
737  if (id.iphi() == IPHI_MAX - 1)
738  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), 1, id.depth());
739  else
740  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi() + 2, id.depth());
741  } else if (aieta == firstHEQuadPhiRing()) {
742  n = 2;
743  neighbors[0] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi(), id.depth());
744  if (id.iphi() == IPHI_MAX - 1)
745  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), 1, id.depth());
746  else
747  neighbors[1] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi() + 2, id.depth());
748  } else if (aieta == 1) {
749  neighbors[0] = HcalDetId(id.subdet(), -aieta * id.zside(), id.iphi(), id.depth());
750  } else if (aieta == firstHERing() && id.subdet() == HcalEndcap) {
751  neighbors[0] = HcalDetId(HcalBarrel, (aieta - 1) * id.zside(), id.iphi(), 1);
752  } else if (aieta == firstHFRing() && id.subdet() == HcalForward) {
753  neighbors[0] = HcalDetId(HcalEndcap, etaHF2HE_ * id.zside(), id.iphi(), 1);
754  } else
755  neighbors[0] = HcalDetId(id.subdet(), (aieta - 1) * id.zside(), id.iphi(), id.depth());
756 
757  if (!valid(neighbors[0]) && n == 2) {
758  if (!valid(neighbors[1]))
759  n = 0;
760  else {
761  n = 1;
762  neighbors[0] = neighbors[1];
763  }
764  }
765  if (n == 2 && !valid(neighbors[1]))
766  n = 1;
767  if (n == 1 && !valid(neighbors[0]))
768  n = 0;
769 
770  return n;
771 }
bool valid(const DetId &id) const override
int zside(DetId const &)
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:100
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:99
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:98
int firstHFRing() const
Definition: HcalTopology.h:93
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:90

◆ 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 693 of file HcalTopology.cc.

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

Referenced by east().

693  {
694  if (id.zside() == 1)
695  return decAIEta(id, neighbors);
696  else
697  return incAIEta(id, neighbors);
698 }
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 635 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().

635  {
636  bool ok = valid(id);
637  if (ok) {
638  switch (id.subdet()) {
639  case (HcalBarrel):
640  case (HcalOuter):
641  if (id.iphi() == 1)
642  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX, id.depth());
643  else
644  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 1, id.depth());
645  break;
646  case (HcalEndcap):
647  if (id.ietaAbs() >= firstHEQuadPhiRing()) {
648  if (id.iphi() == 3)
649  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX - 1, id.depth());
650  else
651  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 4, id.depth());
652  } else if (id.ietaAbs() >= firstHEDoublePhiRing()) {
653  if (id.iphi() == 1)
654  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX - 1, id.depth());
655  else
656  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 2, id.depth());
657  } else {
658  if (id.iphi() == 1)
659  neighbor = HcalDetId(id.subdet(), id.ieta(), maxPhiHE_, id.depth());
660  else
661  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 1, id.depth());
662  }
663  break;
664  case (HcalForward):
665  if (id.ietaAbs() >= firstHFQuadPhiRing()) {
666  if (id.iphi() == 3)
667  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX - 1, id.depth());
668  else
669  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 4, id.depth());
670  } else {
671  if (id.iphi() == 1)
672  neighbor = HcalDetId(id.subdet(), id.ieta(), IPHI_MAX - 1, id.depth());
673  else
674  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() - 2, id.depth());
675  }
676  if (!validRaw(neighbor))
677  ok = false;
678  break;
679  default:
680  ok = false;
681  }
682  }
683  return ok;
684 }
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:100
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:99
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:98
bool validRaw(const HcalDetId &id, const bool debug=false) const
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 872 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(), nEtaHB_, phase1B(), validRaw(), and ecaldqm::zside().

Referenced by down().

872  {
873  HcalSubdetector subdet = detId.subdet();
874  int ieta = detId.ieta();
875  int etaRing = detId.ietaAbs();
876  int depth = detId.depth();
877  int iphi = detId.iphi();
878  int zside = detId.zside();
879  int nDepthBins, startingBin;
880  depthBinInformation(subdet, etaRing, iphi, zside, nDepthBins, startingBin);
881 
882  // see if the new depth bin exists
883  --depth;
884  if ((subdet == HcalOuter) || (subdet == HcalEndcap && etaRing == firstHERing())) {
885  subdet = HcalBarrel;
886  for (int i = 0; i < nEtaHB_; ++i) {
887  if (etaRing == etaBinsHB_[i].ieta) {
888  depth = etaBinsHB_[i].depthStart + etaBinsHB_[i].layer.size() - 1;
889  break;
890  }
891  }
892  } else if ((subdet == HcalEndcap) && (etaRing == lastHERing()) && (depth == hcons_->getDepthEta29(iphi, zside, 0)) &&
893  !phase1B()) {
894  (ieta > 0) ? --ieta : ++ieta;
895  } else if (depth <= 0) {
896  if (subdet == HcalForward && etaRing == firstHFRing()) {
897  // overlap
898  subdet = HcalEndcap;
899  etaRing = etaHF2HE_;
900  ieta = (ieta > 0) ? etaRing : -etaRing;
901  for (const auto& i : etaBinsHE_) {
902  if (etaRing == i.ieta) {
903  depth = i.depthStart + i.layer.size() - 1;
904  break;
905  }
906  }
907  } else {
908  // no more chances
909  detId = HcalDetId();
910  return false;
911  }
912  }
913  detId = HcalDetId(subdet, ieta, detId.iphi(), depth);
914  return validRaw(detId);
915 }
bool phase1B() const
Definition: HcalTopology.h:176
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHB_
Definition: HcalTopology.h:205
int zside(DetId const &)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:205
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
HcalSubdetector
Definition: HcalAssistant.h:31
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:91
int getDepthEta29(const int &iphi, const int &zside, const int &type) const
bool validRaw(const HcalDetId &id, const bool debug=false) const
int firstHFRing() const
Definition: HcalTopology.h:93
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:192
int firstHERing() const
Definition: HcalTopology.h:90

◆ denseId2detId()

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

return a linear packed id

Reimplemented from CaloSubdetectorTopology.

Definition at line 1528 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().

1528  {
1530  int ie(0);
1531  int ip(0);
1532  int dp(0);
1533  int in(denseid);
1534  int iz(1);
1535  if (topoVersion_ == 0) { //DL// pre-LS1
1536  if (denseid < kSizeForDenseIndexingPreLS1) {
1537  if (in > 2 * (kHBhalf + kHEhalf + kHOhalf) - 1) { // HF
1538  sd = HcalForward;
1539  in -= 2 * (kHBhalf + kHEhalf + kHOhalf);
1540  iz = (in < kHFhalf ? 1 : -1);
1541  in %= kHFhalf;
1542  ip = 4 * (in / 48);
1543  in %= 48;
1544  ip += 1 + (in > 21 ? 2 : 0);
1545  if (3 == ip % 4)
1546  in -= 22;
1547  ie = 29 + in / 2;
1548  dp = 1 + in % 2;
1549  } else if (in > 2 * (kHBhalf + kHEhalf) - 1) { // HO
1550  sd = HcalOuter;
1551  in -= 2 * (kHBhalf + kHEhalf);
1552  iz = (in < kHOhalf ? 1 : -1);
1553  in %= kHOhalf;
1554  dp = 4;
1555  ip = 1 + in / 15;
1556  ie = 1 + (in - 15 * (ip - 1));
1557  } else if (in > 2 * kHBhalf - 1) { // Endcap
1558  sd = HcalEndcap;
1559  in -= 2 * kHBhalf;
1560  iz = (in < kHEhalf ? 1 : -1);
1561  in %= kHEhalf;
1562  ip = 2 * (in / 36);
1563  in %= 36;
1564  ip += 1 + in / 28;
1565  if (0 == ip % 2)
1566  in %= 28;
1567  ie = 15 + (in < 2 ? 1 + in : 2 + (in < 20 ? 1 + (in - 2) / 2 : 9 + (in < 26 ? 1 + (in - 20) / 3 : 3)));
1568  dp = (in < 1
1569  ? 3
1570  : (in < 2 ? 1 : (in < 20 ? 1 + (in - 2) % 2 : (in < 26 ? 1 + (in - 20) % 3 : (1 + (in - 26) % 2)))));
1571  } else { // barrel
1572  iz = (in < kHBhalf ? 1 : -1);
1573  in %= kHBhalf;
1574  ip = in / 18 + 1;
1575  in %= 18;
1576  if (in < 14) {
1577  dp = 1;
1578  ie = in + 1;
1579  } else {
1580  in %= 14;
1581  dp = 1 + in % 2;
1582  ie = 15 + in / 2;
1583  }
1584  }
1585  }
1586  } else if (topoVersion_ == 10) {
1587  if (denseid < ncells()) {
1588  if (denseid >= (HBSize_ + HESize_ + HOSize_)) {
1589  sd = HcalForward;
1590  in -= (HBSize_ + HESize_ + HOSize_);
1591  dp = (in % maxDepthHF_) + 1;
1592  ip = (in - dp + 1) % (maxDepthHF_ * IPHI_MAX);
1593  ip = (ip / maxDepthHF_) + 1;
1594  ie = (in - dp + 1 - maxDepthHF_ * (ip - 1)) / (IPHI_MAX * maxDepthHF_);
1595  if (ie > 12) {
1596  ie = 54 - ie;
1597  iz = -1;
1598  } else {
1599  ie += 29;
1600  iz = 1;
1601  }
1602  } else if (denseid >= (HBSize_ + HESize_)) {
1603  sd = HcalOuter;
1604  in -= (HBSize_ + HESize_);
1605  dp = 4;
1606  ip = (in % IPHI_MAX) + 1;
1607  ie = (in - ip + 1) / IPHI_MAX;
1608  if (ie > 14) {
1609  ie = 30 - ie;
1610  iz = -1;
1611  } else {
1612  ie += 1;
1613  iz = 1;
1614  }
1615  } else if (denseid >= (HBSize_)) {
1616  sd = HcalEndcap;
1617  in -= (HBSize_);
1618  dp = (in % maxDepthHE_) + 1;
1619  ip = (in - dp + 1) % (maxDepthHE_ * maxPhiHE_);
1620  ip = (ip / maxDepthHE_) + 1;
1621  ie = (in - dp + 1 - maxDepthHE_ * (ip - 1)) / (maxPhiHE_ * maxDepthHE_);
1622  if (ie >= nEtaHE_) {
1623  ie = lastHERing() + nEtaHE_ - ie;
1624  iz = -1;
1625  } else {
1626  ie = firstHERing() + ie;
1627  iz = 1;
1628  }
1629  } else {
1630  sd = HcalBarrel;
1631  dp = (in % maxDepthHB_) + 1;
1632  ip = (in - dp + 1) % (maxDepthHB_ * IPHI_MAX);
1633  ip = (ip / maxDepthHB_) + 1;
1634  ie = (in - dp + 1 - maxDepthHB_ * (ip - 1)) / (IPHI_MAX * maxDepthHB_);
1635  if (ie >= nEtaHB_) {
1636  ie = lastHBRing() + nEtaHB_ - ie;
1637  iz = -1;
1638  } else {
1639  ie = firstHBRing() + ie;
1640  iz = 1;
1641  }
1642  }
1643  }
1644  }
1645  HcalDetId hid(sd, iz * int(ie), ip, dp);
1646 #ifdef EDM_ML_DEBUG
1647  edm::LogVerbatim("HcalGeom") << "Dens2Det " << topoVersion_ << " i/p " << std::hex << denseid << " : " << hid.rawId()
1648  << std::dec << " | " << hid;
1649 #endif
1650  return hid;
1651 }
Log< level::Info, true > LogVerbatim
unsigned int HESize_
Definition: HcalTopology.h:216
static constexpr int kHBhalf
Definition: HcalTopology.h:234
int firstHBRing() const
Definition: HcalTopology.h:88
int lastHBRing() const
Definition: HcalTopology.h:89
static constexpr int kHOhalf
Definition: HcalTopology.h:234
HcalSubdetector
Definition: HcalAssistant.h:31
unsigned int HBSize_
Definition: HcalTopology.h:215
static constexpr int kHEhalf
Definition: HcalTopology.h:234
unsigned int HOSize_
Definition: HcalTopology.h:217
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
static constexpr int kHFhalf
Definition: HcalTopology.h:234
static constexpr int kSizeForDenseIndexingPreLS1
Definition: HcalTopology.h:239
int lastHERing() const
Definition: HcalTopology.h:91
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:90

◆ denseId2detIdCALIB()

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

return a Calib DetId from linear packed id

Definition at line 1354 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_.

1354  {
1356  unsigned int hid0(hid);
1357  if (hid0 < kOffCalibHOX_) {
1358  HcalSubdetector subdet(HcalEmpty);
1359  int ieta(0), iphi(0), ichan(0), ctype(0);
1360  if (hid0 < kOffCalibHE1_) {
1361  int id0 = static_cast<int>(hid0);
1362  subdet = HcalBarrel;
1363  iphi = hid0 % kPhiCalibHB_;
1364  int keta = (hid0 < kchanCalibHB_) ? 0 : 1;
1365  ieta = etaCalibHB_[keta];
1366  ichan = (id0 - iphi - keta * kchanCalibHB_) / kPhiCalibHB_;
1367  iphi = mPhiCalibHB_ * (iphi + 1) - 1;
1368  ctype = chanCalibHB_[ichan];
1369  } else if (hid0 < kOffCalibHF1_) {
1370  hid0 -= kOffCalibHE1_;
1371  int id0 = static_cast<int>(hid0);
1372  subdet = HcalEndcap;
1373  iphi = hid0 % kPhiCalibHE_;
1374  int keta = (hid0 < kchanCalibHE1_) ? 0 : 1;
1375  ieta = etaCalibHE_[keta];
1376  ichan = (id0 - iphi - keta * kchanCalibHE1_) / kPhiCalibHE_;
1377  iphi = mPhiCalibHE_ * (iphi + 1) - 1;
1378  ctype = chanCalibHE1_[ichan];
1379  } else if (hid0 < kOffCalibHO1_) {
1380  hid0 -= kOffCalibHF1_;
1381  int id0 = static_cast<int>(hid0);
1382  subdet = HcalForward;
1383  iphi = hid0 % kPhiCalibHF1_;
1384  int keta = (hid0 < kchanCalibHF1_) ? 0 : 1;
1385  ieta = etaCalibHF_[keta];
1386  ichan = (id0 - iphi - keta * kchanCalibHF1_) / kPhiCalibHF1_;
1387  iphi = mPhiCalibHF1_ * iphi + 1;
1388  ctype = chanCalibHF1_[ichan];
1389  } else if (hid0 < kOffCalibHO2_) {
1390  hid0 -= kOffCalibHO1_;
1391  int id0 = static_cast<int>(hid0);
1392  subdet = HcalOuter;
1393  unsigned int kphi = hid0 % kPhiCalibHO2_;
1394  if (kphi < 2 * kPhiCalibHO1_) {
1395  ieta = (kphi >= kPhiCalibHO1_) ? etaCalibHO_[1] : etaCalibHO_[0];
1396  iphi = kphi % kPhiCalibHO1_;
1397  ichan = (id0 - iphi - (ieta + 2) * kPhiCalibHO1_) / kPhiCalibHO2_;
1398  iphi = (iphi + 1) * mPhiCalibHO1_ - 1;
1399  } else if (kphi < (2 * kPhiCalibHO1_ + kPhiCalibHO0_)) {
1400  ieta = etaCalibHO_[2];
1401  iphi = kphi % kPhiCalibHO0_;
1402  ichan = (id0 - iphi - (ieta + 2) * kPhiCalibHO1_) / kPhiCalibHO2_;
1403  iphi = (iphi + 1) * mPhiCalibHO0_ - 1;
1404  } else {
1405  ieta = (kphi >= 3 * kPhiCalibHO1_ + kPhiCalibHO0_) ? etaCalibHO_[4] : etaCalibHO_[3];
1406  iphi = kphi % kPhiCalibHO1_;
1407  ichan = (id0 - iphi - (ieta + 1) * kPhiCalibHO1_ - kPhiCalibHO0_) / kPhiCalibHO2_;
1408  iphi = (iphi + 1) * mPhiCalibHO1_ - 1;
1409  }
1410  ctype = chanCalibHO_[ichan];
1411  } else if (hid0 < kOffCalibHE2_) {
1412  hid0 -= kOffCalibHO2_;
1413  subdet = HcalOuter;
1414  iphi = phiCalibHO_[hid0];
1415  ctype = static_cast<int>(chanCalibHOs_);
1416  ieta = etaCalibHO_[hid0];
1417  } else if (hid0 < kOffCalibHF2_) {
1418  hid0 -= kOffCalibHE2_;
1419  subdet = HcalEndcap;
1420  iphi = hid0 % kPhiCalibHE_;
1421  int keta = (hid0 < kchanCalibHE2_) ? 0 : 1;
1422  ieta = etaCalibHE_[keta];
1423  iphi = mPhiCalibHE_ * (iphi + 1) - 1;
1424  ctype = chanCalibHE2_;
1425  } else {
1426  hid0 -= kOffCalibHF2_;
1427  subdet = HcalForward;
1428  int keta = (hid0 < kchanCalibHF2_) ? 0 : 1;
1429  ieta = etaCalibHF_[keta];
1430  iphi = phiCalibHF2_;
1431  ctype = chanCalibHF2_;
1432  }
1433  id = HcalCalibDetId(subdet, ieta, iphi, ctype);
1434 #ifdef EDM_ML_DEBUG
1435  edm::LogVerbatim("HCalGeom") << "CalibrationBox: " << hid << " o/p " << ieta << ":" << iphi << ":" << ichan << ":"
1436  << ctype << " " << id;
1437 #endif
1438  } else if (hid < kOffCalibHBX_) {
1439  hid0 -= kOffCalibHOX_;
1440  int iphi, ieta;
1441  if (hid0 < nPhiCalibHOX_[1]) {
1442  iphi = static_cast<int>(hid0) + 1;
1443  ieta = -etaCalibHOX_[1];
1444  } else if (hid0 < (nPhiCalibHOX_[1] + nPhiCalibHOX_[0])) {
1445  hid0 -= nPhiCalibHOX_[1];
1446  iphi = ((hid0 + phiCalibHOX1_) % phiCalibHOX2_ < phiCalibHOX3_) ? 2 * hid0 + 1 : 2 * hid0 + 2;
1447  ieta = -etaCalibHOX_[0];
1448  } else if (hid0 < (nPhiCalibHOX_[1] + 2 * nPhiCalibHOX_[0])) {
1449  hid0 -= (nPhiCalibHOX_[1] + nPhiCalibHOX_[0]);
1450  iphi = ((hid0 + phiCalibHOX1_) % phiCalibHOX2_ < phiCalibHOX3_) ? 2 * hid0 + 1 : 2 * hid0 + 2;
1451  ieta = etaCalibHOX_[0];
1452  } else {
1453  hid0 -= (nPhiCalibHOX_[1] + 2 * nPhiCalibHOX_[0]);
1454  iphi = static_cast<int>(hid0) + 1;
1455  ieta = etaCalibHOX_[1];
1456  }
1458 #ifdef EDM_ML_DEBUG
1459  edm::LogVerbatim("HCalGeom") << "HOCrossTalk: " << hid << ":" << hid0 << " o/p " << ieta << ":" << iphi << " "
1460  << id;
1461 #endif
1462  } else if (hid < kOffCalibHEX_) {
1463  hid0 -= kOffCalibHBX_;
1464  int ieta = (hid0 >= kPhiCalibHBX_) ? etaCalibHBX_ : -etaCalibHBX_;
1465  int iphi = (hid0 % kPhiCalibHBX_) + 1;
1467 #ifdef EDM_ML_DEBUG
1468  edm::LogVerbatim("HCalGeom") << "HBX: " << hid << ":" << hid0 << " o/p " << ieta << ":" << iphi << " " << id;
1469 #endif
1470  } else if (hid < kOffCalibHFX_) {
1471  hid0 -= kOffCalibHEX_;
1472  int iphi = 2 * (hid0 % kPhiCalibHEX_) + 1;
1473  int ieta = ((hid0 < kPhiCalibHEX_)
1474  ? -etaCalibHEX_[0]
1475  : ((hid0 < 2 * kPhiCalibHEX_) ? etaCalibHEX_[0]
1476  : ((hid0 < 3 * kPhiCalibHEX_) ? -etaCalibHEX_[1] : etaCalibHEX_[1])));
1478 #ifdef EDM_ML_DEBUG
1479  edm::LogVerbatim("HCalGeom") << "HEX: " << hid << ":" << hid0 << " o/p " << ieta << ":" << iphi << " " << id;
1480 #endif
1481  }
1482  return id;
1483 }
static constexpr int chanCalibHF2_
Definition: HcalTopology.h:292
Log< level::Info, true > LogVerbatim
static constexpr unsigned int kchanCalibHE1_
Definition: HcalTopology.h:265
static constexpr int etaCalibHE_[nEtaCalibHE_]
Definition: HcalTopology.h:264
static constexpr unsigned int kchanCalibHF1_
Definition: HcalTopology.h:272
static constexpr unsigned int kPhiCalibHBX_
Definition: HcalTopology.h:305
static constexpr int etaCalibHBX_
Definition: HcalTopology.h:304
static constexpr unsigned int kOffCalibHFX_
Definition: HcalTopology.h:312
static constexpr unsigned int kchanCalibHE2_
Definition: HcalTopology.h:289
static constexpr unsigned int kchanCalibHF2_
Definition: HcalTopology.h:293
static constexpr unsigned int kOffCalibHE1_
Definition: HcalTopology.h:260
static constexpr unsigned int kPhiCalibHO0_
Definition: HcalTopology.h:281
static constexpr int phiCalibHO_[nEtaCalibHO_]
Definition: HcalTopology.h:279
static constexpr int etaCalibHO_[nEtaCalibHO_]
Definition: HcalTopology.h:278
static constexpr int etaCalibHB_[nEtaCalibHB_]
Definition: HcalTopology.h:257
static constexpr unsigned int nPhiCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:299
static constexpr int chanCalibHE2_
Definition: HcalTopology.h:288
static constexpr int phiCalibHOX3_
Definition: HcalTopology.h:301
static constexpr unsigned int kPhiCalibHB_
Definition: HcalTopology.h:255
static constexpr int phiCalibHOX2_
Definition: HcalTopology.h:301
static constexpr int phiCalibHOX1_
Definition: HcalTopology.h:301
static constexpr unsigned int kOffCalibHEX_
Definition: HcalTopology.h:307
static constexpr int chanCalibHE1_[nchanCalibHE1_]
Definition: HcalTopology.h:263
HcalSubdetector
Definition: HcalAssistant.h:31
static constexpr int etaCalibHEX_[nEtaCalibHEX_]
Definition: HcalTopology.h:309
static constexpr unsigned int kPhiCalibHO2_
Definition: HcalTopology.h:283
static constexpr unsigned int kPhiCalibHO1_
Definition: HcalTopology.h:282
static constexpr unsigned int mPhiCalibHE_
Definition: HcalTopology.h:262
static constexpr int chanCalibHO_[nchanCalibHO_]
Definition: HcalTopology.h:277
static constexpr unsigned int mPhiCalibHO1_
Definition: HcalTopology.h:280
static constexpr unsigned int kOffCalibHOX_
Definition: HcalTopology.h:295
static constexpr unsigned int kPhiCalibHF1_
Definition: HcalTopology.h:269
static constexpr int etaCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:297
static constexpr int chanCalibHOs_
Definition: HcalTopology.h:276
static constexpr unsigned int kOffCalibHF1_
Definition: HcalTopology.h:267
static constexpr int chanCalibHF1_[nchanCalibHF1_]
Definition: HcalTopology.h:270
static constexpr unsigned int kOffCalibHE2_
Definition: HcalTopology.h:287
static constexpr unsigned int kOffCalibHBX_
Definition: HcalTopology.h:302
static constexpr int chanCalibHB_[nchanCalibHB_]
Definition: HcalTopology.h:256
static constexpr unsigned int mPhiCalibHO0_
Definition: HcalTopology.h:280
static constexpr unsigned int kOffCalibHO2_
Definition: HcalTopology.h:285
static constexpr int etaCalibHF_[nEtaCalibHF_]
Definition: HcalTopology.h:271
static constexpr unsigned int kPhiCalibHE_
Definition: HcalTopology.h:262
static constexpr unsigned int mPhiCalibHB_
Definition: HcalTopology.h:255
static constexpr unsigned int kchanCalibHB_
Definition: HcalTopology.h:258
static constexpr int phiCalibHF2_
Definition: HcalTopology.h:292
static constexpr unsigned int kOffCalibHO1_
Definition: HcalTopology.h:274
static constexpr unsigned int kPhiCalibHEX_
Definition: HcalTopology.h:310
static constexpr unsigned int mPhiCalibHF1_
Definition: HcalTopology.h:269
static constexpr unsigned int kOffCalibHF2_
Definition: HcalTopology.h:291

◆ 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 773 of file HcalTopology.cc.

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

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

774  {
775  if (subdet == HcalBarrel) {
776  if (phase1() || (mode_ == HcalTopologyMode::H2)) {
777  if (etaRing <= 14) {
778  nDepthBins = 1;
779  startingBin = 1;
780  } else {
781  nDepthBins = 2;
782  startingBin = 1;
783  }
784  } else {
785  startingBin = hcons_->getMinDepth(0, etaRing, iphi, zside);
786  if (etaRing == lastHBRing()) {
787  nDepthBins = hcons_->getDepthEta16(1, iphi, zside) - startingBin + 1;
788  } else {
789  nDepthBins = hcons_->getMaxDepth(0, etaRing, iphi, zside) - startingBin + 1;
790  }
791  }
792  } else if (subdet == HcalEndcap) {
793  if (phase1A()) {
794  if (etaRing == firstHERing()) {
795  nDepthBins = 1;
796  startingBin = 3;
797  } else if (etaRing == 17) {
798  nDepthBins = 1;
799  startingBin = 1;
800  } else if (etaRing == lastHERing()) {
801  nDepthBins = 2;
802  startingBin = 1;
803  } else {
804  nDepthBins = (etaRing >= firstHETripleDepthRing()) ? 3 : 2;
805  startingBin = 1;
806  }
807  } else {
808  if (etaRing == firstHERing()) {
809  startingBin = hcons_->getDepthEta16(2, iphi, zside);
810  } else {
811  startingBin = hcons_->getMinDepth(1, etaRing, iphi, zside);
812  }
813  nDepthBins = hcons_->getMaxDepth(1, etaRing, iphi, zside) - startingBin + 1;
814  }
815  } else if (subdet == HcalForward) {
816  nDepthBins = maxDepthHF_;
817  startingBin = 1;
818  } else if (subdet == HcalOuter) {
819  nDepthBins = 1;
820  startingBin = 4;
821  } else {
822  edm::LogWarning("HCalGeom") << "Bad HCAL subdetector " << subdet;
823  }
824 }
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:101
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
int lastHBRing() const
Definition: HcalTopology.h:89
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:197
bool phase1() const
Definition: HcalTopology.h:171
int getMaxDepth(const int &type) const
bool phase1A() const
Definition: HcalTopology.h:172
int lastHERing() const
Definition: HcalTopology.h:91
Log< level::Warning, false > LogWarning
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:192
int firstHERing() const
Definition: HcalTopology.h:90

◆ detId2denseId()

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

return a linear packed id

Reimplemented from CaloSubdetectorTopology.

Definition at line 1485 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().

1485  {
1486  unsigned int retval(0);
1487  if (topoVersion_ == 0) { // pre-LS1
1488  retval = detId2denseIdPreLS1(id);
1489  } else if (topoVersion_ == 10) {
1490  HcalDetId hid(id);
1491  if (hid.subdet() == HcalBarrel) {
1492  retval = (hid.depth() - 1) + maxDepthHB_ * (hid.iphi() - 1);
1493  if (hid.ieta() > 0)
1494  retval += maxDepthHB_ * IPHI_MAX * (hid.ieta() - firstHBRing());
1495  else
1496  retval += maxDepthHB_ * IPHI_MAX * (hid.ieta() + lastHBRing() + nEtaHB_);
1497  } else if (hid.subdet() == HcalEndcap) {
1498  retval = HBSize_;
1499  retval += (hid.depth() - 1) + maxDepthHE_ * (hid.iphi() - 1);
1500  if (hid.ieta() > 0)
1501  retval += maxDepthHE_ * maxPhiHE_ * (hid.ieta() - firstHERing());
1502  else
1503  retval += maxDepthHE_ * maxPhiHE_ * (hid.ieta() + lastHERing() + nEtaHE_);
1504  } else if (hid.subdet() == HcalOuter) {
1505  retval = HBSize_ + HESize_;
1506  if (hid.ieta() > 0)
1507  retval += (hid.iphi() - 1) + IPHI_MAX * (hid.ieta() - 1);
1508  else
1509  retval += (hid.iphi() - 1) + IPHI_MAX * (30 + hid.ieta());
1510  } else if (hid.subdet() == HcalForward) {
1511  retval = HBSize_ + HESize_ + HOSize_;
1512  retval += (hid.depth() - 1) + maxDepthHF_ * (hid.iphi() - 1);
1513  if (hid.ieta() > 0)
1514  retval += maxDepthHF_ * IPHI_MAX * (hid.ieta() - 29);
1515  else
1516  retval += maxDepthHF_ * IPHI_MAX * ((41 + 13) + hid.ieta());
1517  } else {
1518  retval = 0xFFFFFFFu;
1519  }
1520  }
1521 #ifdef EDM_ML_DEBUG
1522  edm::LogVerbatim("HcalGeom") << "DetId2Dense " << topoVersion_ << " ID " << std::hex << id.rawId() << std::dec
1523  << " | " << HcalDetId(id) << " : " << std::hex << retval << std::dec;
1524 #endif
1525  return retval;
1526 }
Log< level::Info, true > LogVerbatim
unsigned int detId2denseIdPreLS1(const DetId &id) const
unsigned int HESize_
Definition: HcalTopology.h:216
int firstHBRing() const
Definition: HcalTopology.h:88
int lastHBRing() const
Definition: HcalTopology.h:89
unsigned int HBSize_
Definition: HcalTopology.h:215
unsigned int HOSize_
Definition: HcalTopology.h:217
int lastHERing() const
Definition: HcalTopology.h:91
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:90

◆ detId2denseIdCALIB()

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

return a linear packed id from CALIB

Definition at line 1241 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().

1241  {
1242  HcalCalibDetId tid(id);
1243  int channel = tid.cboxChannel();
1244  int ieta = tid.ieta();
1245  int iphi = tid.iphi();
1246  int zside = tid.zside();
1247  unsigned int index = 0xFFFFFFFFu;
1248 
1249  if (tid.calibFlavor() == HcalCalibDetId::CalibrationBox) {
1250  HcalSubdetector subDet = tid.hcalSubdet();
1251 
1252  if (subDet == HcalBarrel) {
1253 #ifdef EDM_ML_DEBUG
1254  edm::LogVerbatim("HCalGeom") << "CALIB_HB: dphi = 4 (18 phi values), 3 channel types (0,1,2), eta = -1 or 1\n "
1255  " total of 18*3*2=108 channels";
1256 #endif
1258  auto kndx = std::find(chanCalibHB_, chanCalibHB_ + nchanCalibHB_, channel);
1259  if (indx != etaCalibHB_ + nEtaCalibHB_ && kndx != chanCalibHB_ + nchanCalibHB_) {
1260  int keta = static_cast<int>(indx - etaCalibHB_);
1261  int kchn = static_cast<int>(kndx - chanCalibHB_);
1262  index = ((iphi + 1) / mPhiCalibHB_ - 1) + kPhiCalibHB_ * kchn + keta * kchanCalibHB_ + kOffCalibHB_;
1263  }
1264  } else if (subDet == HcalEndcap) {
1265 #ifdef EDM_ML_DEBUG
1266  edm::LogVerbatim("HCalGeom") << "CALIB_HE: dphi = 4 (18 phi values), 7 channel types (0,1,2,3,4,5,6), eta = "
1267  "-1/+1\n total of 18*7*2=252 channels if (channel > 2) channel -= 1";
1268 #endif
1270  if (indx != etaCalibHE_ + nEtaCalibHE_) {
1271  int keta = static_cast<int>(indx - etaCalibHE_);
1272  auto kndx = std::find(chanCalibHE1_, chanCalibHE1_ + nchanCalibHE1_, channel);
1273  if (kndx != chanCalibHE1_ + nchanCalibHE1_) {
1274  int kchn = static_cast<int>(kndx - chanCalibHE1_);
1275  index = ((iphi + 1) / mPhiCalibHE_ - 1) + kPhiCalibHE_ * kchn + keta * kchanCalibHE1_ + kOffCalibHE1_;
1276  } else if (channel == chanCalibHE2_) {
1277  index = ((iphi + 1) / mPhiCalibHE_ - 1) + keta * kchanCalibHE2_ + kOffCalibHE2_;
1278  }
1279  }
1280  } else if (subDet == HcalForward) {
1281 #ifdef EDM_ML_DEBUG
1282  edm::LogVerbatim("HCalGeom")
1283  << "CALIB_HF: dphi = 18 (4 phi values), 3 channel types (0,1,8), eta = -1 or +1\n or iphi = 1; "
1284  "channel = 9, eta = -1 or +1 total channels 4*3*2=24 + 2";
1285 #endif
1287  if (indx != etaCalibHF_ + nEtaCalibHF_) {
1288  int keta = static_cast<int>(indx - etaCalibHF_);
1289  auto kndx = std::find(chanCalibHF1_, chanCalibHF1_ + nchanCalibHF1_, channel);
1290  if (kndx != chanCalibHF1_ + nchanCalibHF1_) {
1291  int kchn = static_cast<int>(kndx - chanCalibHF1_);
1292  index = ((iphi - 1) / mPhiCalibHF1_) + kPhiCalibHF1_ * kchn + keta * kchanCalibHF1_ + kOffCalibHF1_;
1293  } else if (channel == chanCalibHF2_) {
1294  index = keta * kchanCalibHF2_ + kOffCalibHF2_;
1295  }
1296  }
1297  } else if (subDet == HcalOuter) {
1298 #ifdef EDM_ML_DEBUG
1299  edm::LogVerbatim("HCalGeom") << "CALIB_HO: ";
1300 #endif
1302  if (indx != etaCalibHO_ + nEtaCalibHO_) {
1303  int keta = static_cast<int>(indx - etaCalibHO_);
1304  auto kndx = std::find(chanCalibHO_, chanCalibHO_ + nchanCalibHO_, channel);
1305  //there are 5 special calib crosstalk channels, one in each ring
1306  if (channel == chanCalibHOs_) {
1307  index = keta + kOffCalibHO2_;
1308  } else if (kndx != chanCalibHO_ + nchanCalibHO_) {
1309  //for HOM/HOP dphi = 6 (12 phi values), 2 channel types (0,1), eta = -2,-1 or 1,2
1310  //for HO0/YB0 dphi = 12 (6 phi values), 2 channel types (0,1), eta = 0
1311  int kchn = static_cast<int>(kndx - chanCalibHO_);
1312  int kphi = (ieta == 0) ? ((iphi + 1) / mPhiCalibHO0_ - 1) : ((iphi + 1) / mPhiCalibHO1_ - 1);
1313  if (ieta < 0) {
1314  index = kphi + kPhiCalibHO2_ * kchn + kPhiCalibHO1_ * keta + kOffCalibHO1_;
1315  } else if (ieta > 0) {
1316  index = kphi + kPhiCalibHO2_ * kchn + kPhiCalibHO1_ * (keta - 1) + kPhiCalibHO0_ + kOffCalibHO1_;
1317  } else {
1318  index = kphi + kPhiCalibHO2_ * kchn + kPhiCalibHO1_ * keta + kOffCalibHO1_;
1319  }
1320  }
1321  }
1322  } else {
1323  edm::LogWarning("HGCalGeom") << "HCAL Det Id not valid!";
1324  }
1325  } else if (tid.calibFlavor() == HcalCalibDetId::HOCrosstalk) {
1326 #ifdef EDM_ML_DEBUG
1327  edm::LogVerbatim("HCalGeom") << "HX: for YB0/HO0 phi is grouped in 6 groups of 6 with dphi=2 but the transitions "
1328  "are 1 or 3 in such a way that the %36 operation yeilds unique values for every "
1329  "iphi\n ieta = 0 for HO2M/HO1M ieta=2 for HO1P/HO2P; /ieta = 1 YB0/HO0";
1330 #endif
1331  int kphi = ((std::abs(ieta) == etaCalibHOX_[0]) ? ((iphi % 2 == 0) ? (iphi / 2 - 1) : (iphi - 1) / 2) : (iphi - 1));
1332  if (std::abs(ieta) == etaCalibHOX_[0]) {
1333  index = kphi + (((zside + 1) * nPhiCalibHOX_[0]) / 2) + nPhiCalibHOX_[1] + kOffCalibHOX_;
1334  } else if (std::abs(ieta) == etaCalibHOX_[1]) {
1335  index = kphi + ((zside + 1) * nPhiCalibHOX_[1]) + kOffCalibHOX_;
1336  }
1337  } else if (tid.calibFlavor() == HcalCalibDetId::HBX) {
1338  if (std::abs(ieta) == etaCalibHBX_) {
1339  index = kOffCalibHBX_ + (iphi - 1) + (zside + 1) * kPhiCalibHBX_ / 2;
1340  }
1341  } else if (tid.calibFlavor() == HcalCalibDetId::HEX) {
1342  if (std::abs(ieta) == etaCalibHEX_[0]) {
1343  index = kOffCalibHEX_ + (iphi - 1) / mPhiCalibHEX_ + (zside + 1) * kPhiCalibHEX_ / 2;
1344  } else if (std::abs(ieta) == etaCalibHEX_[1]) {
1345  index = kOffCalibHEX_ + (iphi - 1) / mPhiCalibHEX_ + (zside + 1) * kPhiCalibHEX_ / 2 + 2 * kPhiCalibHEX_;
1346  }
1347  }
1348 #ifdef EDM_ML_DEBUG
1349  edm::LogVerbatim("HCalGeom") << " " << ieta << " " << zside << " " << iphi << " " << index;
1350 #endif
1351  return index;
1352 }
static constexpr int chanCalibHF2_
Definition: HcalTopology.h:292
Log< level::Info, true > LogVerbatim
static constexpr unsigned int kchanCalibHE1_
Definition: HcalTopology.h:265
static constexpr int etaCalibHE_[nEtaCalibHE_]
Definition: HcalTopology.h:264
static constexpr unsigned int kchanCalibHF1_
Definition: HcalTopology.h:272
static constexpr unsigned int kPhiCalibHBX_
Definition: HcalTopology.h:305
static constexpr int etaCalibHBX_
Definition: HcalTopology.h:304
static constexpr unsigned int kchanCalibHE2_
Definition: HcalTopology.h:289
static constexpr unsigned int kchanCalibHF2_
Definition: HcalTopology.h:293
static constexpr unsigned int kOffCalibHE1_
Definition: HcalTopology.h:260
static constexpr unsigned int nEtaCalibHO_
Definition: HcalTopology.h:275
static constexpr unsigned int kPhiCalibHO0_
Definition: HcalTopology.h:281
int zside(DetId const &)
static constexpr int etaCalibHO_[nEtaCalibHO_]
Definition: HcalTopology.h:278
static constexpr unsigned int nEtaCalibHF_
Definition: HcalTopology.h:268
static constexpr unsigned int nchanCalibHO_
Definition: HcalTopology.h:275
static constexpr int etaCalibHB_[nEtaCalibHB_]
Definition: HcalTopology.h:257
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:299
static constexpr int chanCalibHE2_
Definition: HcalTopology.h:288
static constexpr unsigned int nEtaCalibHB_
Definition: HcalTopology.h:254
static constexpr unsigned int kPhiCalibHB_
Definition: HcalTopology.h:255
static constexpr unsigned int nEtaCalibHE_
Definition: HcalTopology.h:261
static constexpr unsigned int nchanCalibHB_
Definition: HcalTopology.h:254
static constexpr unsigned int kOffCalibHEX_
Definition: HcalTopology.h:307
static constexpr unsigned int mPhiCalibHEX_
Definition: HcalTopology.h:308
static constexpr int chanCalibHE1_[nchanCalibHE1_]
Definition: HcalTopology.h:263
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr int etaCalibHEX_[nEtaCalibHEX_]
Definition: HcalTopology.h:309
static constexpr unsigned int kPhiCalibHO2_
Definition: HcalTopology.h:283
static constexpr unsigned int kPhiCalibHO1_
Definition: HcalTopology.h:282
static constexpr unsigned int mPhiCalibHE_
Definition: HcalTopology.h:262
static constexpr unsigned int kOffCalibHB_
Definition: HcalTopology.h:253
static constexpr unsigned int nchanCalibHF1_
Definition: HcalTopology.h:268
static constexpr int chanCalibHO_[nchanCalibHO_]
Definition: HcalTopology.h:277
static constexpr unsigned int nchanCalibHE1_
Definition: HcalTopology.h:261
static constexpr unsigned int mPhiCalibHO1_
Definition: HcalTopology.h:280
static constexpr unsigned int kOffCalibHOX_
Definition: HcalTopology.h:295
static constexpr unsigned int kPhiCalibHF1_
Definition: HcalTopology.h:269
static constexpr int etaCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:297
static constexpr int chanCalibHOs_
Definition: HcalTopology.h:276
static constexpr unsigned int kOffCalibHF1_
Definition: HcalTopology.h:267
static constexpr int chanCalibHF1_[nchanCalibHF1_]
Definition: HcalTopology.h:270
static constexpr unsigned int kOffCalibHE2_
Definition: HcalTopology.h:287
static constexpr unsigned int kOffCalibHBX_
Definition: HcalTopology.h:302
static constexpr int chanCalibHB_[nchanCalibHB_]
Definition: HcalTopology.h:256
static constexpr unsigned int mPhiCalibHO0_
Definition: HcalTopology.h:280
static constexpr unsigned int kOffCalibHO2_
Definition: HcalTopology.h:285
static constexpr int etaCalibHF_[nEtaCalibHF_]
Definition: HcalTopology.h:271
static constexpr unsigned int kPhiCalibHE_
Definition: HcalTopology.h:262
static constexpr unsigned int mPhiCalibHB_
Definition: HcalTopology.h:255
static constexpr unsigned int kchanCalibHB_
Definition: HcalTopology.h:258
Log< level::Warning, false > LogWarning
static constexpr unsigned int kOffCalibHO1_
Definition: HcalTopology.h:274
static constexpr unsigned int kPhiCalibHEX_
Definition: HcalTopology.h:310
static constexpr unsigned int mPhiCalibHF1_
Definition: HcalTopology.h:269
static constexpr unsigned int kOffCalibHF2_
Definition: HcalTopology.h:291

◆ detId2denseIdHB()

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

return a linear packed id from HB

Definition at line 1132 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().

1132  {
1133  HcalDetId hid(id);
1134  const int ip(hid.iphi());
1135  const int ie(hid.ietaAbs());
1136  const int dp(hid.depth());
1137  const int zn(hid.zside() < 0 ? 1 : 0);
1138  unsigned int retval = 0xFFFFFFFFu;
1139  if (topoVersion_ == 0) {
1140  retval = (ip - 1) * 18 + dp - 1 + ie - (ie < 16 ? 1 : 0) + zn * kHBhalf;
1141  } else if (topoVersion_ == 10) {
1142  retval = (dp - 1) + maxDepthHB_ * (ip - 1);
1143  if (hid.ieta() > 0)
1144  retval += maxDepthHB_ * IPHI_MAX * (hid.ieta() - firstHBRing());
1145  else
1146  retval += maxDepthHB_ * IPHI_MAX * (hid.ieta() + lastHBRing() + nEtaHB_);
1147  }
1148  return retval;
1149 }
static constexpr int kHBhalf
Definition: HcalTopology.h:234
int firstHBRing() const
Definition: HcalTopology.h:88
int lastHBRing() const
Definition: HcalTopology.h:89
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 1151 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().

1151  {
1152  HcalDetId hid(id);
1153  const int ip(hid.iphi());
1154  const int ie(hid.ietaAbs());
1155  const int dp(hid.depth());
1156  const int zn(hid.zside() < 0 ? 1 : 0);
1157  unsigned int retval = 0xFFFFFFFFu;
1158  if (topoVersion_ == 0) {
1159  retval = (ip - 1) * 8 + (ip / 2) * 20 +
1160  ((ie == 16 || ie == 17)
1161  ? ie - 16
1162  : ((ie >= 18 && ie <= 20)
1163  ? 2 + 2 * (ie - 18) + dp - 1
1164  : ((ie >= 21 && ie <= 26) ? 8 + 2 * (ie - 21) + dp - 1
1165  : ((ie >= 27 && ie <= 28) ? 20 + 3 * (ie - 27) + dp - 1
1166  : 26 + 2 * (ie - 29) + dp - 1)))) +
1167  zn * kHEhalf;
1168  } else if (topoVersion_ == 10) {
1169  retval = (dp - 1) + maxDepthHE_ * (ip - 1);
1170  if (hid.ieta() > 0)
1171  retval += maxDepthHE_ * maxPhiHE_ * (hid.ieta() - firstHERing());
1172  else
1173  retval += maxDepthHE_ * maxPhiHE_ * (hid.ieta() + lastHERing() + nEtaHE_);
1174  }
1175  return retval;
1176 }
static constexpr int kHEhalf
Definition: HcalTopology.h:234
int lastHERing() const
Definition: HcalTopology.h:91
int firstHERing() const
Definition: HcalTopology.h:90

◆ detId2denseIdHF()

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

return a linear packed id from HF

Definition at line 1196 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().

1196  {
1197  HcalDetId hid(id);
1198  const int ip(hid.iphi());
1199  const int ie(hid.ietaAbs());
1200  const int dp(hid.depth());
1201  const int zn(hid.zside() < 0 ? 1 : 0);
1202 
1203  unsigned int retval = 0xFFFFFFFFu;
1204  if (topoVersion_ == 0) {
1205  retval = ((ip - 1) / 4) * 4 + ((ip - 1) / 2) * 22 + 2 * (ie - 29) + (dp - 1) + zn * kHFhalf;
1206  } else if (topoVersion_ == 10) {
1207  retval = dp - 1 + 2 * (ip - 1);
1208  if (hid.ieta() > 0)
1209  retval += maxDepthHF_ * IPHI_MAX * (hid.ieta() - 29);
1210  else
1211  retval += maxDepthHF_ * IPHI_MAX * ((41 + 13) + hid.ieta());
1212  }
1213  return retval;
1214 }
static constexpr int kHFhalf
Definition: HcalTopology.h:234
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 1178 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().

1178  {
1179  HcalDetId hid(id);
1180  const int ip(hid.iphi());
1181  const int ie(hid.ietaAbs());
1182  const int zn(hid.zside() < 0 ? 1 : 0);
1183 
1184  unsigned int retval = 0xFFFFFFFFu;
1185  if (topoVersion_ == 0) {
1186  retval = (ip - 1) * 15 + (ie - 1) + zn * kHOhalf;
1187  } else if (topoVersion_ == 10) {
1188  if (hid.ieta() > 0)
1189  retval = (ip - 1) + IPHI_MAX * (hid.ieta() - 1);
1190  else
1191  retval = (ip - 1) + IPHI_MAX * (30 + hid.ieta());
1192  }
1193  return retval;
1194 }
static constexpr int kHOhalf
Definition: HcalTopology.h:234
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 1216 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().

1216  {
1217  HcalTrigTowerDetId tid(id);
1218  int zside = tid.zside();
1219  unsigned int ietaAbs = tid.ietaAbs();
1220  unsigned int iphi = tid.iphi();
1221  unsigned int ivers = tid.version();
1222 
1223  unsigned int index;
1224  if (ivers == 0) {
1225  if ((iphi - 1) % 4 == 0)
1226  index = (iphi - 1) * 32 + (ietaAbs - 1) - (12 * ((iphi - 1) / 4));
1227  else
1228  index = (iphi - 1) * 28 + (ietaAbs - 1) + (4 * (((iphi - 1) / 4) + 1));
1229  if (zside == -1)
1230  index += kHThalf;
1231  } else {
1232  index = kHTSizePreLS1;
1233  if (zside == -1)
1234  index += ((kHTSizePhase1 - kHTSizePreLS1) / 2);
1235  index += (36 * (ietaAbs - 30) + ((iphi - 1) / 2));
1236  }
1237 
1238  return index;
1239 }
int zside(DetId const &)
static constexpr int kHTSizePreLS1
Definition: HcalTopology.h:245
static constexpr int kHThalf
Definition: HcalTopology.h:234
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
static constexpr int kHTSizePhase1
Definition: HcalTopology.h:246

◆ detId2denseIdPreLS1()

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

Definition at line 1103 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().

1103  {
1104  HcalDetId hid(id);
1105  const HcalSubdetector sd(hid.subdet());
1106  const int ip(hid.iphi());
1107  const int ie(hid.ietaAbs());
1108  const int dp(hid.depth());
1109  const int zn(hid.zside() < 0 ? 1 : 0);
1110  unsigned int retval =
1111  ((sd == HcalBarrel)
1112  ? (ip - 1) * 18 + dp - 1 + ie - (ie < 16 ? 1 : 0) + zn * kHBhalf
1113  : ((sd == HcalEndcap)
1114  ? 2 * kHBhalf + (ip - 1) * 8 + (ip / 2) * 20 +
1115  ((ie == 16 || ie == 17)
1116  ? ie - 16
1117  : ((ie >= 18 && ie <= 20)
1118  ? 2 + 2 * (ie - 18) + dp - 1
1119  : ((ie >= 21 && ie <= 26)
1120  ? 8 + 2 * (ie - 21) + dp - 1
1121  : ((ie >= 27 && ie <= 28) ? 20 + 3 * (ie - 27) + dp - 1
1122  : 26 + 2 * (ie - 29) + dp - 1)))) +
1123  zn * kHEhalf
1124  : ((sd == HcalOuter)
1125  ? 2 * kHBhalf + 2 * kHEhalf + (ip - 1) * 15 + (ie - 1) + zn * kHOhalf
1126  : ((sd == HcalForward) ? 2 * kHBhalf + 2 * kHEhalf + 2 * kHOhalf + ((ip - 1) / 4) * 4 +
1127  ((ip - 1) / 2) * 22 + 2 * (ie - 29) + (dp - 1) + zn * kHFhalf
1128  : 0xFFFFFFFFu))));
1129  return retval;
1130 }
static constexpr int kHBhalf
Definition: HcalTopology.h:234
static constexpr int kHOhalf
Definition: HcalTopology.h:234
HcalSubdetector
Definition: HcalAssistant.h:31
static constexpr int kHEhalf
Definition: HcalTopology.h:234
static constexpr int kHFhalf
Definition: HcalTopology.h:234

◆ doublePhiBins()

int HcalTopology::doublePhiBins ( ) const
inline

Definition at line 103 of file HcalTopology.h.

References doublePhiBins_.

103 { 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 399 of file HcalTopology.cc.

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

399  {
400  HcalDetId neighbor = id;
401  std::vector<DetId> vNeighborsDetId;
402  if (decrementDepth(neighbor)) {
403  if (neighbor.oldFormat())
404  neighbor.changeForm();
405  vNeighborsDetId.emplace_back(neighbor);
406  }
407  return vNeighborsDetId;
408 }
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 344 of file HcalTopology.cc.

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

344  {
345  std::vector<DetId> vNeighborsDetId;
346  HcalDetId neighbors[2];
347  for (int i = 0; i < decIEta(HcalDetId(id), neighbors); i++) {
348  if (neighbors[i].oldFormat())
349  neighbors[i].changeForm();
350  vNeighborsDetId.emplace_back(DetId(neighbors[i].rawId()));
351  }
352  return vNeighborsDetId;
353 }
int decIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
Definition: DetId.h:17

◆ etaMax()

double HcalTopology::etaMax ( HcalSubdetector  subdet) const

Definition at line 1062 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().

1062  {
1063  double eta(0);
1064  switch (subdet) {
1065  case (HcalBarrel):
1066  if (lastHBRing_ < (int)(etaTable.size()))
1068  break;
1069  case (HcalEndcap):
1070  if (lastHERing_ < (int)(etaTable.size()) && nEtaHE_ > 0)
1072  break;
1073  case (HcalOuter):
1074  if (lastHORing_ < (int)(etaTable.size()))
1076  break;
1077  case (HcalForward):
1078  if (!etaTableHF.empty())
1079  eta = etaTableHF[etaTableHF.size() - 1];
1080  break;
1081  default:
1082  eta = 0;
1083  }
1084  return eta;
1085 }
std::vector< double > etaTableHF
Definition: HcalTopology.h:223
std::vector< double > etaTable
Definition: HcalTopology.h:223

◆ etaRange()

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

Definition at line 1087 of file HcalTopology.cc.

References etaTable, etaTableHF, firstHFRing_, HcalForward, hcalRecHitTable_cff::ieta, cuy::ii, lastHERing_, and phase1().

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

1087  {
1088  int ieta = (keta > 0) ? keta : -keta;
1089  if (subdet == HcalForward) {
1090  if (ieta >= firstHFRing_) {
1091  unsigned int ii = static_cast<unsigned int>(ieta - firstHFRing_);
1092  if (ii + 1 < etaTableHF.size())
1093  return std::pair<double, double>(etaTableHF[ii], etaTableHF[ii + 1]);
1094  }
1095  } else {
1096  int ietal = (phase1() && ieta == lastHERing_ - 1) ? (ieta + 1) : ieta;
1097  if ((ietal < static_cast<int>(etaTable.size())) && (ieta > 0))
1098  return std::pair<double, double>(etaTable[ieta - 1], etaTable[ietal]);
1099  }
1100  return std::pair<double, double>(0, 0);
1101 }
bool phase1() const
Definition: HcalTopology.h:171
std::vector< double > etaTableHF
Definition: HcalTopology.h:223
std::vector< double > etaTable
Definition: HcalTopology.h:223
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 959 of file HcalTopology.cc.

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

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

959  {
960  int etaring = firstHBRing_;
961  if (bc == HcalForward) {
962  etaring = firstHFRing_;
963  for (unsigned int k = 0; k < etaTableHF.size() - 1; ++k) {
964  if (abseta < etaTableHF[k + 1]) {
965  etaring += k;
966  break;
967  }
968  }
969  } else {
970  for (unsigned int k = 0; k < etaTable.size() - 1; ++k) {
971  if (abseta < etaTable[k + 1]) {
972  etaring += k;
973  break;
974  }
975  }
976  if (abseta >= etaTable[etaTable.size() - 1])
977  etaring = lastHERing_;
978  }
979  return etaring;
980 }
std::vector< double > etaTableHF
Definition: HcalTopology.h:223
std::vector< double > etaTable
Definition: HcalTopology.h:223

◆ exclude() [1/2]

void HcalTopology::exclude ( const HcalDetId id)

Add a cell to exclusion list

Definition at line 318 of file HcalTopology.cc.

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

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

318  {
319  std::vector<HcalDetId>::iterator i = std::lower_bound(exclusionList_.begin(), exclusionList_.end(), id);
320  if (i == exclusionList_.end() || *i != id) {
321  exclusionList_.insert(i, id);
322  }
323 }
std::vector< HcalDetId > exclusionList_
Definition: HcalTopology.h:194

◆ 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 410 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().

410  {
411  bool exed = false;
412  // first, check the full detector exclusions... (fast)
413  switch (subdet) {
414  case (HcalBarrel):
415  exed = excludeHB_;
416  break;
417  case (HcalEndcap):
418  exed = excludeHE_;
419  break;
420  case (HcalOuter):
421  exed = excludeHO_;
422  break;
423  case (HcalForward):
424  exed = excludeHF_;
425  break;
426  default:
427  exed = false;
428  }
429  if (exed)
430  return 0; // if the whole detector is excluded...
431 
432  int ieta_l = std::min(ieta1, ieta2);
433  int ieta_h = std::max(ieta1, ieta2);
434  int iphi_l = std::min(iphi1, iphi2);
435  int iphi_h = std::max(iphi1, iphi2);
436  int depth_l = std::min(depth1, depth2);
437  int depth_h = std::max(depth1, depth2);
438 
439  int n = 0;
440  for (int ieta = ieta_l; ieta <= ieta_h; ieta++)
441  for (int iphi = iphi_l; iphi <= iphi_h; iphi++)
442  for (int depth = depth_l; depth <= depth_h; depth++) {
443  HcalDetId id(subdet, ieta, iphi, depth);
444  if (validRaw(id, false)) { // use 'validRaw' to include check validity in "uncut" detector
445  exclude(id);
446  n++;
447  }
448  }
449  return n;
450 }
void exclude(const HcalDetId &id)
bool validRaw(const HcalDetId &id, const bool debug=false) const

◆ excludeSubdetector()

void HcalTopology::excludeSubdetector ( HcalSubdetector  subdet)

Exclude an entire subdetector

Definition at line 325 of file HcalTopology.cc.

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

Referenced by HcalTopologyRestrictionParser::parse().

325  {
326  switch (subdet) {
327  case (HcalBarrel):
328  excludeHB_ = true;
329  break;
330  case (HcalEndcap):
331  excludeHE_ = true;
332  break;
333  case (HcalOuter):
334  excludeHO_ = true;
335  break;
336  case (HcalForward):
337  excludeHF_ = true;
338  break;
339  default:
340  break;
341  }
342 }

◆ 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 101 of file HcalTopology.h.

References firstHETripleDepthRing_.

Referenced by depthBinInformation().

101 { return firstHETripleDepthRing_; }
int firstHETripleDepthRing_
Definition: HcalTopology.h:209

◆ firstHFQuadPhiRing()

int HcalTopology::firstHFQuadPhiRing ( ) const
inline

◆ firstHFRing()

int HcalTopology::firstHFRing ( ) const
inline

◆ firstHORing()

int HcalTopology::firstHORing ( ) const
inline

Definition at line 95 of file HcalTopology.h.

References firstHORing_.

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

95 { return firstHORing_; }

◆ getCALIBSize()

unsigned int HcalTopology::getCALIBSize ( ) const
inline

Definition at line 134 of file HcalTopology.h.

References CALIBSize_.

Referenced by HcalCondObjectContainerBase::sizeFor().

134 { return CALIBSize_; }
unsigned int CALIBSize_
Definition: HcalTopology.h:220

◆ 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 1026 of file HcalTopology.cc.

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

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

1026  {
1027  // if it doesn't exist, return the first entry with a lower index. So if we only
1028  // have entries for 1 and 17, any input from 1-16 should return the entry for ring 1
1029  SegmentationMap::const_iterator pos;
1030  if (!one) {
1031  pos = depthSegmentation_.upper_bound(ring);
1032  if (pos == depthSegmentation_.begin()) {
1033  throw cms::Exception("HcalTopology") << "No depth segmentation found for ring" << ring;
1034  }
1035  } else {
1036  pos = depthSegmentationOne_.upper_bound(ring);
1037  if (pos == depthSegmentationOne_.begin()) {
1038  throw cms::Exception("HcalTopology") << "No depth segmentation found for ring" << ring;
1039  }
1040  }
1041  --pos;
1042  // pos now refers to the last element with key <= ring.
1043  readoutDepths = pos->second;
1044 }
SegmentationMap depthSegmentation_
Definition: HcalTopology.h:231
SegmentationMap depthSegmentationOne_
Definition: HcalTopology.h:232

◆ getHBSize()

unsigned int HcalTopology::getHBSize ( ) const
inline

Definition at line 129 of file HcalTopology.h.

References HBSize_.

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

129 { return HBSize_; }
unsigned int HBSize_
Definition: HcalTopology.h:215

◆ getHESize()

unsigned int HcalTopology::getHESize ( ) const
inline

Definition at line 130 of file HcalTopology.h.

References HESize_.

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

130 { return HESize_; }
unsigned int HESize_
Definition: HcalTopology.h:216

◆ getHFSize()

unsigned int HcalTopology::getHFSize ( ) const
inline

◆ getHOSize()

unsigned int HcalTopology::getHOSize ( ) const
inline

Definition at line 131 of file HcalTopology.h.

References HOSize_.

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

131 { return HOSize_; }
unsigned int HOSize_
Definition: HcalTopology.h:217

◆ getHTSize()

unsigned int HcalTopology::getHTSize ( ) const
inline

Definition at line 133 of file HcalTopology.h.

References HTSize_.

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

133 { return HTSize_; }
unsigned int HTSize_
Definition: HcalTopology.h:219

◆ getMergePositionFlag()

bool HcalTopology::getMergePositionFlag ( ) const
inline

◆ getNumberOfShapes()

unsigned int HcalTopology::getNumberOfShapes ( ) const
inline

Definition at line 158 of file HcalTopology.h.

References numberOfShapes_.

Referenced by HcalGeometry::numberOfShapes().

158 { return numberOfShapes_; }
unsigned int numberOfShapes_
Definition: HcalTopology.h:221

◆ getPhiZOne()

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

Definition at line 127 of file HcalTopology.h.

References HcalDDDRecConstants::getPhiZOne(), and hcons_.

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

◆ idBack()

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

Definition at line 168 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::idBack().

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

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

◆ 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 701 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().

701  {
702  int n = 1;
703  int aieta = id.ietaAbs();
704 
705  if (aieta == firstHEDoublePhiRing() - 1 && (id.iphi() % 2) == 0)
706  neighbors[0] = HcalDetId(id.subdet(), (aieta + 1) * id.zside(), id.iphi() - 1, id.depth());
707  else if (aieta == firstHFQuadPhiRing() - 1 && ((id.iphi() + 1) % 4) != 0)
708  neighbors[0] =
709  HcalDetId(id.subdet(), (aieta + 1) * id.zside(), ((id.iphi() == 1) ? (71) : (id.iphi() - 2)), id.depth());
710  else if (aieta == firstHEQuadPhiRing() - 1 && ((id.iphi() + 1) % 4) != 0)
711  neighbors[0] =
712  HcalDetId(id.subdet(), (aieta + 1) * id.zside(), ((id.iphi() == 1) ? (71) : (id.iphi() - 2)), id.depth());
713  else if (aieta == lastHBRing() && id.subdet() == HcalBarrel)
714  neighbors[0] = HcalDetId(HcalEndcap, (aieta + 1) * id.zside(), id.iphi(), 1);
715  else if (aieta == lastHERing() && id.subdet() == HcalEndcap)
716  neighbors[0] = HcalDetId(HcalForward, etaHE2HF_ * id.zside(), id.iphi(), 1);
717  else
718  neighbors[0] = HcalDetId(id.subdet(), (aieta + 1) * id.zside(), id.iphi(), id.depth());
719 
720  if (!valid(neighbors[0]))
721  n = 0;
722  return n;
723 }
bool valid(const DetId &id) const override
int zside(DetId const &)
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:100
int lastHBRing() const
Definition: HcalTopology.h:89
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:99
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:98
int lastHERing() const
Definition: HcalTopology.h:91

◆ 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 686 of file HcalTopology.cc.

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

Referenced by west().

686  {
687  if (id.zside() == 1)
688  return incAIEta(id, neighbors);
689  else
690  return decAIEta(id, neighbors);
691 }
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 583 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().

583  {
584  bool ok = valid(id);
585  if (ok) {
586  switch (id.subdet()) {
587  case (HcalBarrel):
588  case (HcalOuter):
589  if (id.iphi() == IPHI_MAX)
590  neighbor = HcalDetId(id.subdet(), id.ieta(), 1, id.depth());
591  else
592  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 1, id.depth());
593  break;
594  case (HcalEndcap):
595  if (id.ietaAbs() >= firstHEQuadPhiRing()) {
596  if (id.iphi() == IPHI_MAX - 1)
597  neighbor = HcalDetId(id.subdet(), id.ieta(), 3, id.depth());
598  else
599  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 4, id.depth());
600  } else if (id.ietaAbs() >= firstHEDoublePhiRing()) {
601  if (id.iphi() == IPHI_MAX - 1)
602  neighbor = HcalDetId(id.subdet(), id.ieta(), 1, id.depth());
603  else
604  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 2, id.depth());
605  } else {
606  if (id.iphi() == maxPhiHE_)
607  neighbor = HcalDetId(id.subdet(), id.ieta(), 1, id.depth());
608  else
609  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 1, id.depth());
610  }
611  break;
612  case (HcalForward):
613  if (id.ietaAbs() >= firstHFQuadPhiRing()) {
614  if (id.iphi() == IPHI_MAX - 1)
615  neighbor = HcalDetId(id.subdet(), id.ieta(), 3, id.depth());
616  else
617  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 4, id.depth());
618  } else {
619  if (id.iphi() == IPHI_MAX - 1)
620  neighbor = HcalDetId(id.subdet(), id.ieta(), 1, id.depth());
621  else
622  neighbor = HcalDetId(id.subdet(), id.ieta(), id.iphi() + 2, id.depth());
623  }
624  if (!validRaw(neighbor))
625  ok = false;
626  break;
627  default:
628  ok = false;
629  }
630  }
631  return ok;
632 }
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:100
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:99
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:98
bool validRaw(const HcalDetId &id, const bool debug=false) const
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 826 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, depthBinInformation(), hcalRecHitTable_cff::detId, etaRing(), HcalDDDRecConstants::getDepthEta16(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcons_, hcalRecHitTable_cff::ieta, hcalRecHitTable_cff::iphi, lastHBRing(), lastHERing(), lastHORing(), phase1B(), phase2(), validRaw(), and ecaldqm::zside().

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

826  {
827  HcalSubdetector subdet = detId.subdet();
828  int ieta = detId.ieta();
829  int etaRing = detId.ietaAbs();
830  int depth = detId.depth();
831  int iphi = detId.iphi();
832  int zside = detId.zside();
833  int nDepthBins(0), startingBin(0);
834  depthBinInformation(subdet, etaRing, iphi, zside, nDepthBins, startingBin);
835 
836  // see if the new depth bin exists
837  ++depth;
838  if (depth >= (startingBin + nDepthBins)) {
839  // handle on a case-by-case basis
840  if (subdet == HcalBarrel && etaRing < lastHORing()) {
841  // HO
842  subdet = HcalOuter;
843  depth = 4;
844  } else if (subdet == HcalBarrel && etaRing == lastHBRing()) {
845  // overlap
846  if (phase2()) { // No more chance
847  detId = HcalDetId();
848  return false;
849  } else {
850  subdet = HcalEndcap;
851  if (phase1B())
853  }
854  } else if ((subdet == HcalEndcap) && (etaRing == lastHERing() - 1) && !phase1B()) {
855  // guard ring HF29 is behind HE 28
856  subdet = HcalForward;
857  (ieta > 0) ? ++ieta : --ieta;
858  depth = 1;
859  } else if ((subdet == HcalEndcap) && (etaRing == lastHERing()) && !phase1B()) {
860  // split cells go to bigger granularity. Ring 29 -> 28
861  (ieta > 0) ? --ieta : ++ieta;
862  } else {
863  // no more chances
864  detId = HcalDetId();
865  return false;
866  }
867  }
868  detId = HcalDetId(subdet, ieta, iphi, depth);
869  return validRaw(detId);
870 }
bool phase1B() const
Definition: HcalTopology.h:176
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
int lastHORing() const
Definition: HcalTopology.h:96
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:89
bool phase2() const
Definition: HcalTopology.h:180
HcalSubdetector
Definition: HcalAssistant.h:31
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:91
bool validRaw(const HcalDetId &id, const bool debug=false) const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:192

◆ isBH()

bool HcalTopology::isBH ( ) const
inline

Definition at line 159 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::isBH().

Referenced by CaloTowerTopology::CaloTowerTopology().

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

◆ isExcluded()

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

Definition at line 290 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().

290  {
291  bool exed = false;
292  // first, check the full detector exclusions... (fast)
293  switch (id.subdet()) {
294  case (HcalBarrel):
295  exed = excludeHB_;
296  break;
297  case (HcalEndcap):
298  exed = excludeHE_;
299  break;
300  case (HcalOuter):
301  exed = excludeHO_;
302  break;
303  case (HcalForward):
304  exed = excludeHF_;
305  break;
306  default:
307  exed = false;
308  }
309  // next, check the list (slower)
310  if (!exed && !exclusionList_.empty()) {
311  std::vector<HcalDetId>::const_iterator i = std::lower_bound(exclusionList_.begin(), exclusionList_.end(), id);
312  if (i != exclusionList_.end() && *i == id)
313  exed = true;
314  }
315  return exed;
316 }
std::vector< HcalDetId > exclusionList_
Definition: HcalTopology.h:194

◆ 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 942 of file HcalTopology.cc.

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

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

942  {
943  int maxd1 = std::max(maxDepthHB_, maxDepthHE_);
944  int maxd2 = std::max(maxDepthHF_, minMaxDepth_);
945  return std::max(maxd1, maxd2);
946 }
static constexpr int minMaxDepth_
Definition: HcalTopology.h:251

◆ maxDepth() [2/2]

int HcalTopology::maxDepth ( HcalSubdetector  subdet) const

Definition at line 948 of file HcalTopology.cc.

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

948  {
949  if (bc == HcalBarrel)
950  return maxDepthHB_;
951  else if (bc == HcalEndcap)
952  return maxDepthHE_;
953  else if (bc == HcalForward)
954  return maxDepthHF_;
955  else
956  return 4;
957 }

◆ maxDepthHB()

int HcalTopology::maxDepthHB ( ) const
inline

Definition at line 136 of file HcalTopology.h.

References maxDepthHB_.

Referenced by RecAnalyzerMinbias::beginRun().

136 { return maxDepthHB_; }

◆ maxDepthHE()

int HcalTopology::maxDepthHE ( ) const
inline

Definition at line 137 of file HcalTopology.h.

References maxDepthHE_.

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

137 { 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 109 of file HcalTopology.h.

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

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

◆ mode()

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

◆ ncells() [1/2]

unsigned int HcalTopology::ncells ( ) const
overridevirtual

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

Reimplemented from CaloSubdetectorTopology.

Definition at line 1653 of file HcalTopology.cc.

References HBSize_, HESize_, HFSize_, and HOSize_.

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

1653 { return HBSize_ + HESize_ + HOSize_ + HFSize_; }
unsigned int HESize_
Definition: HcalTopology.h:216
unsigned int HFSize_
Definition: HcalTopology.h:218
unsigned int HBSize_
Definition: HcalTopology.h:215
unsigned int HOSize_
Definition: HcalTopology.h:217

◆ ncells() [2/2]

unsigned int HcalTopology::ncells ( int  subdet) const

Definition at line 1655 of file HcalTopology.cc.

References hcalRecHitTable_cff::depth, PVValHelper::eta, maxEta_, maxPhi_, phi, and validRaw().

1655  {
1656  unsigned int ncell(0);
1657  for (int eta = -maxEta_; eta <= maxEta_; eta++) {
1658  for (unsigned int phi = 1; phi <= maxPhi_; phi++) {
1659  for (int depth = 1; depth <= 7; depth++) {
1660  HcalDetId cell((HcalSubdetector)subdet, eta, phi, depth);
1661  if (validRaw(cell, true))
1662  ++ncell;
1663  }
1664  }
1665  }
1666  return ncell;
1667 }
static constexpr unsigned int maxPhi_
Definition: HcalTopology.h:252
HcalSubdetector
Definition: HcalAssistant.h:31
bool validRaw(const HcalDetId &id, const bool debug=false) const

◆ 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 366 of file HcalTopology.cc.

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

366  {
367  std::vector<DetId> vNeighborsDetId;
368  HcalDetId neighbor;
369  if (incIPhi(HcalDetId(id), neighbor)) {
370  if (neighbor.oldFormat())
371  neighbor.changeForm();
372  vNeighborsDetId.emplace_back(DetId(neighbor.rawId()));
373  }
374  return vNeighborsDetId;
375 }
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 917 of file HcalTopology.cc.

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

Referenced by CaloTowerHardcodeGeometryLoader::makeCell().

917  {
918  int lastPhiBin = singlePhiBins_;
920  lastPhiBin = doublePhiBins_ / 2;
921  else if (etaRing >= firstHEDoublePhiRing())
922  lastPhiBin = doublePhiBins_;
923  if (hcons_ && etaRing >= hcons_->getEtaRange(1).first && etaRing <= hcons_->getEtaRange(1).second) {
924  return nPhiBins(HcalBarrel, etaRing);
925  }
926  return lastPhiBin;
927 }
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:100
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:99
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:98
int nPhiBins(int etaRing) const
how many phi segments in this ring
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:192

◆ nPhiBins() [2/2]

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

Definition at line 929 of file HcalTopology.cc.

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

929  {
930  double phiTableVal;
931  if (bc == HcalForward) {
932  phiTableVal = dPhiTableHF[etaRing - firstHFRing_];
933  } else {
934  phiTableVal = dPhiTable[etaRing - firstHBRing_];
935  }
936  int lastPhiBin = 0;
937  if (phiTableVal != 0.0)
938  lastPhiBin = static_cast<int>((2._pi / phiTableVal) + 0.001);
939  return lastPhiBin;
940 }
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:223
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
std::vector< double > dPhiTable
Definition: HcalTopology.h:223

◆ phase1()

bool HcalTopology::phase1 ( ) const
inlineprivate

◆ phase1A()

bool HcalTopology::phase1A ( ) const
inlineprivate

◆ phase1B()

bool HcalTopology::phase1B ( ) const
inlineprivate

◆ phase2()

bool HcalTopology::phase2 ( ) const
inlineprivate

Definition at line 180 of file HcalTopology.h.

References mode_, and HcalTopologyMode::Run4.

Referenced by incrementDepth(), and validRaw().

180 { return ((mode_ == HcalTopologyMode::Run4)); }
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:197

◆ phiBin()

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

Definition at line 982 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().

982  {
983  //put phi in correct range (0->2pi)
984  int index(0);
985  if (bc == HcalBarrel) {
986  index = (etaring - firstHBRing_);
987  phi -= phioff[0];
988  } else if (bc == HcalEndcap) {
989  index = (etaring - firstHBRing_);
990  phi -= phioff[1];
991  } else if (bc == HcalForward) {
992  index = (etaring - firstHFRing_);
993  if (index < static_cast<int>(dPhiTableHF.size())) {
994  if (index >= 0 && unitPhiHF[index] > 2)
995  phi -= phioff[4];
996  else
997  phi -= phioff[2];
998  }
999  }
1000  if (index < 0)
1001  index = 0;
1002  if (phi < 0.0)
1003  phi += 2._pi;
1004  else if (phi > 2._pi)
1005  phi -= 2._pi;
1006  int phibin(1), unit(1);
1007  if (bc == HcalForward) {
1008  if (index < (int)(dPhiTableHF.size())) {
1009  unit = unitPhiHF[index];
1010  phibin = static_cast<int>(phi / dPhiTableHF[index]) + 1;
1011  }
1012  } else {
1013  if (index < (int)(dPhiTable.size())) {
1014  phibin = static_cast<int>(phi / dPhiTable[index]) + 1;
1015  unit = unitPhi[index];
1016  }
1017  }
1018  int iphi(phibin);
1019  if (unit == 2)
1020  iphi = (phibin - 1) * 2 + 1;
1021  else if (unit == 4)
1022  iphi = (phibin - 1) * 4 + 3;
1023  return iphi;
1024 }
std::vector< int > unitPhiHF
Definition: HcalTopology.h:225
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:223
std::vector< int > unitPhi
Definition: HcalTopology.h:225
Basic3DVector unit() const
std::vector< double > phioff
Definition: HcalTopology.h:224
std::vector< double > dPhiTable
Definition: HcalTopology.h:223

◆ producerTag()

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

Definition at line 39 of file HcalTopology.h.

39 { 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 1054 of file HcalTopology.cc.

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

1054  {
1055  std::vector<int> readoutDepths;
1056  getDepthSegmentation(ring, readoutDepths, one);
1057  int d1 = std::lower_bound(readoutDepths.begin(), readoutDepths.end(), depth) - readoutDepths.begin();
1058  int d2 = std::upper_bound(readoutDepths.begin(), readoutDepths.end(), depth) - readoutDepths.begin();
1059  return std::pair<int, int>(d1, d2);
1060 }
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 1046 of file HcalTopology.cc.

References depthSegmentation_, depthSegmentationOne_, and relativeConstraints::ring.

Referenced by HcalTopology().

1046  {
1047  if (one) {
1048  depthSegmentationOne_[ring] = readoutDepths;
1049  } else {
1050  depthSegmentation_[ring] = readoutDepths;
1051  }
1052 }
SegmentationMap depthSegmentation_
Definition: HcalTopology.h:231
SegmentationMap depthSegmentationOne_
Definition: HcalTopology.h:232

◆ singlePhiBins()

int HcalTopology::singlePhiBins ( ) const
inline

Definition at line 102 of file HcalTopology.h.

References singlePhiBins_.

102 { 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 377 of file HcalTopology.cc.

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

377  {
378  std::vector<DetId> vNeighborsDetId;
379  HcalDetId neighbor;
380  if (decIPhi(HcalDetId(id), neighbor)) {
381  if (neighbor.oldFormat())
382  neighbor.changeForm();
383  vNeighborsDetId.emplace_back(DetId(neighbor.rawId()));
384  }
385  return vNeighborsDetId;
386 }
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 1669 of file HcalTopology.cc.

References topoVersion_.

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

1669 { 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 165 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::unmergeDepthDetId().

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

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

◆ 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 388 of file HcalTopology.cc.

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

388  {
389  HcalDetId neighbor = id;
390  std::vector<DetId> vNeighborsDetId;
391  if (incrementDepth(neighbor)) {
392  if (neighbor.oldFormat())
393  neighbor.changeForm();
394  vNeighborsDetId.emplace_back(neighbor);
395  }
396  return vNeighborsDetId;
397 }
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 218 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().

218  {
219  bool ok(false);
220  if (tid.calibFlavor() == HcalCalibDetId::CalibrationBox) {
221  HcalSubdetector subdet = tid.hcalSubdet();
222  int ieta = tid.ieta();
223  int chan = tid.cboxChannel();
224  unsigned int iphi = static_cast<unsigned int>(tid.iphi());
225  if (subdet == HcalBarrel) {
228  (iphi >= minPhi_) && (iphi <= maxPhi_))
229  ok = true;
230  } else if (subdet == HcalEndcap) {
233  (chan == chanCalibHE2_)) &&
234  (iphi >= minPhi_) && (iphi <= maxPhi_))
235  ok = true;
236  } else if (subdet == HcalForward) {
239  (chan == chanCalibHF2_)) &&
240  (iphi >= minPhi_) && (iphi <= maxPhi_))
241  ok = true;
242  } else if (subdet == HcalOuter) {
245  (chan == chanCalibHOs_)) &&
246  (iphi >= minPhi_) && (iphi <= maxPhi_))
247  ok = true;
248  }
249  } else if (tid.calibFlavor() == HcalCalibDetId::HOCrosstalk) {
250  int ieta = std::abs(tid.ieta());
251  unsigned int iphi = static_cast<unsigned int>(tid.iphi());
253  (iphi >= minPhi_) && (iphi <= maxPhi_))
254  ok = true;
255  } else if (tid.calibFlavor() == HcalCalibDetId::HBX) {
256  int ieta = std::abs(tid.ieta());
257  unsigned int iphi = static_cast<unsigned int>(tid.iphi());
258  if ((ieta == etaCalibHBX_) && (iphi >= minPhi_) && (iphi <= maxPhi_))
259  ok = true;
260  } else if (tid.calibFlavor() == HcalCalibDetId::HEX) {
261  int ieta = std::abs(tid.ieta());
262  unsigned int iphi = static_cast<unsigned int>(tid.iphi());
264  (iphi >= minPhi_) && (iphi <= maxPhi_))
265  ok = true;
266  } else if ((tid.calibFlavor() == HcalCalibDetId::uMNqie) || (tid.calibFlavor() == HcalCalibDetId::LASERMON) ||
267  (tid.calibFlavor() == HcalCalibDetId::CastorRadFacility)) {
268  ok = true;
269  }
270  return ok;
271 }
static constexpr int chanCalibHF2_
Definition: HcalTopology.h:292
static constexpr int etaCalibHE_[nEtaCalibHE_]
Definition: HcalTopology.h:264
static constexpr int etaCalibHBX_
Definition: HcalTopology.h:304
static constexpr unsigned int nEtaCalibHO_
Definition: HcalTopology.h:275
static constexpr int etaCalibHO_[nEtaCalibHO_]
Definition: HcalTopology.h:278
static constexpr unsigned int nEtaCalibHF_
Definition: HcalTopology.h:268
static constexpr unsigned int nchanCalibHO_
Definition: HcalTopology.h:275
static constexpr int etaCalibHB_[nEtaCalibHB_]
Definition: HcalTopology.h:257
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:288
static constexpr unsigned int nEtaCalibHB_
Definition: HcalTopology.h:254
static constexpr unsigned int nEtaCalibHE_
Definition: HcalTopology.h:261
static constexpr unsigned int maxPhi_
Definition: HcalTopology.h:252
static constexpr unsigned int nchanCalibHB_
Definition: HcalTopology.h:254
static constexpr int chanCalibHE1_[nchanCalibHE1_]
Definition: HcalTopology.h:263
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr int etaCalibHEX_[nEtaCalibHEX_]
Definition: HcalTopology.h:309
static constexpr unsigned int nchanCalibHF1_
Definition: HcalTopology.h:268
static constexpr int chanCalibHO_[nchanCalibHO_]
Definition: HcalTopology.h:277
static constexpr unsigned int nchanCalibHE1_
Definition: HcalTopology.h:261
static constexpr int etaCalibHOX_[nEtaCalibHOX_]
Definition: HcalTopology.h:297
static constexpr int chanCalibHOs_
Definition: HcalTopology.h:276
static constexpr unsigned int nEtaCalibHOX_
Definition: HcalTopology.h:296
static constexpr int chanCalibHF1_[nchanCalibHF1_]
Definition: HcalTopology.h:270
static constexpr int chanCalibHB_[nchanCalibHB_]
Definition: HcalTopology.h:256
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:252
static constexpr int etaCalibHF_[nEtaCalibHF_]
Definition: HcalTopology.h:271
static constexpr unsigned int nEtaCalibHEX_
Definition: HcalTopology.h:308

◆ 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 478 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().

478  {
479  const HcalSubdetector sd(id.subdet());
480  const int ie(id.ietaAbs());
481  const int ip(id.iphi());
482  const int dp(id.depth());
483 
484  return ((ip >= 1) && (ip <= IPHI_MAX) && (dp >= 1) && (ie >= 1) &&
485  (((sd == HcalBarrel) && (((ie <= 14) && (dp == 1)) || (((ie == 15) || (ie == 16)) && (dp <= 2)))) ||
486  ((sd == HcalEndcap) &&
487  (((ie == firstHERing()) && (dp == 3)) || ((ie == 17) && (dp == 1)) ||
488  ((ie >= 18) && (ie <= 20) && (dp <= 2)) || ((ie >= 21) && (ie <= 26) && (dp <= 2) && (ip % 2 == 1)) ||
489  ((ie >= 27) && (ie <= 28) && (dp <= 3) && (ip % 2 == 1)) || ((ie == 29) && (dp <= 2) && (ip % 2 == 1)))) ||
490  ((sd == HcalOuter) && (ie <= 15) && (dp == 4)) ||
491  ((sd == HcalForward) && (dp <= 2) &&
492  (((ie >= firstHFRing()) && (ie < firstHFQuadPhiRing()) && (ip % 2 == 1)) ||
493  ((ie >= firstHFQuadPhiRing()) && (ie <= lastHFRing()) && (ip % 4 == 3))))));
494 }
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:100
HcalSubdetector
Definition: HcalAssistant.h:31
int lastHFRing() const
Definition: HcalTopology.h:94
int firstHFRing() const
Definition: HcalTopology.h:93
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:90

◆ validHcal() [1/2]

bool HcalTopology::validHcal ( const HcalDetId id) const

Is this a valid cell id?

Definition at line 171 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().

171  {
172  // check the raw rules
173  return validRaw(id, false) && !isExcluded(id);
174 }
bool validRaw(const HcalDetId &id, const bool debug=false) 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 273 of file HcalTopology.cc.

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

273  {
274  /* original logic show here because condensed form below is rather terse
275  // check the raw rules
276  bool ok = validHcal(id);
277  if (flag == 0) { // This is all what is needed
278  } else if (flag == 1) { // See if it is in the to be merged list and merged list
279  if (hcons_->isPlan1MergedId(id)) ok = true;
280  else if (hcons_->isPlan1ToBeMergedId(id)) ok = false;
281  } else if (!ok) {
282  ok = hcons_->isPlan1MergedId(id);
283  }
284  return ok;
285  */
286  return (flag > 0 and hcons_->isPlan1MergedId(id)) or
287  ((flag != 1 or !hcons_->isPlan1ToBeMergedId(id)) and validHcal(id));
288 }
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:192

◆ validHT()

bool HcalTopology::validHT ( const HcalTrigTowerDetId id) const

Definition at line 180 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().

180  {
181  if (id.iphi() < 1 || id.iphi() > IPHI_MAX || id.ieta() == 0)
182  return false;
183  if (id.depth() != 0)
184  return false;
185  if (maxDepthHE_ == 0) {
186  if (id.ietaAbs() > lastHBRing_ && id.ietaAbs() < firstHFRing_)
187  return false;
188  }
189  // Version 2 TPs should be for HBHE when using 1TS filter scheme
190  if (id.version() == 0 or id.version() == 2) {
191  if (id.ietaAbs() > 28) {
193  return false;
195  return false;
196  if ((id.iphi() % 4) != 1)
197  return false;
198  if (id.ietaAbs() > 32)
199  return false;
200  }
201  } else if (id.version() == 1) {
203  return false;
204  if (id.ietaAbs() < 30 || id.ietaAbs() > 41)
205  return false;
206  if (id.ietaAbs() > 29 && ((id.iphi() % 2) == 0))
207  return false;
208  if (id.ietaAbs() > 39 && ((id.iphi() % 4) != 3))
209  return false;
210  } else if (id.version() > 2) {
211  // only versions 0, 1, and 2 are supported
212  return false;
213  }
214 
215  return true;
216 }
HcalTopologyMode::TriggerMode triggerMode_
Definition: HcalTopology.h:198
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 bool  debug = false 
) const
private

Is this a valid cell id?

Definition at line 497 of file HcalTopology.cc.

References nano_mu_local_reco_cff::bool, debug, hcalRecHitTable_cff::depth, etaBinsHE_, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHERing(), firstHFQuadPhiRing(), firstHFRing(), HcalDDDRecConstants::getDepthEta16(), HcalDDDRecConstants::getMaxDepth(), HcalDDDRecConstants::getMinDepth(), HcalDDDRecConstants::getNoff(), HcalTopologyMode::H2, 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, phase1(), phase1A(), phase1B(), phase2(), nano_mu_digi_cff::rawId, validCalib(), validHT(), and ecaldqm::zside().

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

499  {
500 #else
501  const bool) const {
502 #endif
503  bool ok = true;
504  int ieta = id.ieta();
505  int aieta = id.ietaAbs();
506  int depth = id.depth();
507  int iphi = id.iphi();
508  int zside = id.zside();
509  HcalSubdetector subdet = id.subdet();
510  int maxPhi = (subdet == HcalEndcap) ? maxPhiHE_ : IPHI_MAX;
511  if ((ieta == 0 || iphi <= 0 || iphi > maxPhi) || aieta > maxEta_)
512  ok = false; // outer limits
513 
514  if (ok) {
515  if (subdet == HcalBarrel) {
516  if (phase1()) {
517  if (aieta > lastHBRing() || depth > 2 || (aieta <= 14 && depth > 1))
518  ok = false;
519  } else {
520  if ((aieta > lastHBRing()) || (depth > hcons_->getMaxDepth(0, aieta, iphi, zside)) ||
521  (depth < hcons_->getMinDepth(0, aieta, iphi, zside)))
522  ok = false;
523  }
524  } else if (subdet == HcalEndcap) {
525  if (phase1A()) {
526  if (depth > hcons_->getMaxDepth(1, aieta, iphi, zside) || aieta < firstHERing() || aieta > lastHERing() ||
527  (aieta == firstHERing() && depth != hcons_->getDepthEta16(2, iphi, zside)) ||
528  (aieta == 17 && depth != 1 && mode_ != HcalTopologyMode::H2) || // special case at H2
529  (((aieta >= 17 && aieta < firstHETripleDepthRing()) || aieta == lastHERing()) && depth > 2) ||
530  (aieta >= firstHEDoublePhiRing() && (iphi % 2) == 0))
531  ok = false;
532  } else {
533  if ((depth > hcons_->getMaxDepth(1, aieta, iphi, zside)) ||
534  (depth < hcons_->getMinDepth(1, aieta, iphi, zside)) || (aieta < firstHERing()) || (aieta > lastHERing())) {
535  ok = false;
536  } else {
537  for (const auto& i : etaBinsHE_) {
538  if (aieta == i.ieta) {
539  if (aieta >= firstHEDoublePhiRing() && (iphi % 2) == 0)
540  ok = false;
541  if (aieta >= firstHEQuadPhiRing() && (iphi % 4) != 3)
542  ok = false;
543  if (aieta + 1 == hcons_->getNoff(1)) {
544  if (depth < 1)
545  ok = false;
546  } else {
547  if (depth < i.depthStart)
548  ok = false;
549  }
550  break;
551  }
552  }
553  }
554  }
555  } else if (subdet == HcalOuter) {
556  if (aieta > lastHORing() || iphi > IPHI_MAX || depth != 4)
557  ok = false;
558  } else if (subdet == HcalForward) {
559  if (aieta < firstHFRing() || aieta > lastHFRing() || ((iphi % 2) == 0) ||
560  (depth > hcons_->maxHFDepth(ieta, iphi)) || (aieta >= firstHFQuadPhiRing() && ((iphi + 1) % 4) != 0))
561  ok = false;
562  } else if (subdet == HcalTriggerTower) {
564  } else if (subdet == HcalOther) {
566  } else {
567  ok = false;
568  }
569  }
570 #ifdef EDM_ML_DEBUG
571  if (debug)
572  edm::LogVerbatim("HCalGeom") << "HcalValdRaw ID: " << subdet << ":" << aieta << ":" << depth << ":" << iphi << ":"
573  << zside << " Mode " << mode_ << ":" << phase1() << ":" << phase1A() << ":"
574  << phase1B() << ":" << phase2() << " Limits HB " << lastHBRing() << " HE "
575  << firstHERing() << ":" << lastHERing() << ":" << firstHEDoublePhiRing() << ":"
576  << firstHEQuadPhiRing() << " Depth " << hcons_->getMaxDepth(0, aieta, iphi, zside)
577  << ":" << hcons_->getMinDepth(0, aieta, iphi, zside) << ":"
578  << hcons_->getDepthEta16(2, iphi, zside) << " OK " << ok;
579 #endif
580  return ok;
581 }
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
Log< level::Info, true > LogVerbatim
bool phase1B() const
Definition: HcalTopology.h:176
bool validHT(const HcalTrigTowerDetId &id) const
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
int lastHORing() const
Definition: HcalTopology.h:96
int zside(DetId const &)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:205
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:100
int lastHBRing() const
Definition: HcalTopology.h:89
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:197
bool phase2() const
Definition: HcalTopology.h:180
HcalSubdetector
Definition: HcalAssistant.h:31
bool phase1() const
Definition: HcalTopology.h:171
int getMaxDepth(const int &type) const
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:99
bool validCalib(const HcalCalibDetId &id) const
#define debug
Definition: HDRShower.cc:19
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:98
int maxHFDepth(int ieta, int iphi) const
bool phase1A() const
Definition: HcalTopology.h:172
int getNoff(const int &i) const
int lastHERing() const
Definition: HcalTopology.h:91
int lastHFRing() const
Definition: HcalTopology.h:94
int firstHFRing() const
Definition: HcalTopology.h:93
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:192
static const int IPHI_MAX
Definition: HcalTopology.cc:13
int firstHERing() const
Definition: HcalTopology.h:90

◆ 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 355 of file HcalTopology.cc.

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

355  {
356  std::vector<DetId> vNeighborsDetId;
357  HcalDetId neighbors[2];
358  for (int i = 0; i < incIEta(HcalDetId(id), neighbors); i++) {
359  if (neighbors[i].oldFormat())
360  neighbors[i].changeForm();
361  vNeighborsDetId.emplace_back(DetId(neighbors[i].rawId()));
362  }
363  return vNeighborsDetId;
364 }
int incIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
Definition: DetId.h:17

◆ withSpecialRBXHBHE()

bool HcalTopology::withSpecialRBXHBHE ( ) const
inline

Definition at line 162 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::withSpecialRBXHBHE().

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

Member Data Documentation

◆ CALIBSize_

unsigned int HcalTopology::CALIBSize_
private

Definition at line 220 of file HcalTopology.h.

Referenced by getCALIBSize(), and HcalTopology().

◆ chanCalibHB_

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

Definition at line 256 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 263 of file HcalTopology.h.

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

◆ chanCalibHE2_

constexpr int HcalTopology::chanCalibHE2_ = 2
staticprivate

Definition at line 288 of file HcalTopology.h.

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

◆ chanCalibHF1_

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

Definition at line 270 of file HcalTopology.h.

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

◆ chanCalibHF2_

constexpr int HcalTopology::chanCalibHF2_ = 9
staticprivate

Definition at line 292 of file HcalTopology.h.

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

◆ chanCalibHO_

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

Definition at line 277 of file HcalTopology.h.

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

◆ chanCalibHOs_

constexpr int HcalTopology::chanCalibHOs_ = 7
staticprivate

Definition at line 276 of file HcalTopology.h.

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

◆ depthSegmentation_

SegmentationMap HcalTopology::depthSegmentation_
private

Definition at line 231 of file HcalTopology.h.

Referenced by getDepthSegmentation(), and setDepthSegmentation().

◆ depthSegmentationOne_

SegmentationMap HcalTopology::depthSegmentationOne_
private

Definition at line 232 of file HcalTopology.h.

Referenced by getDepthSegmentation(), and setDepthSegmentation().

◆ doublePhiBins_

int HcalTopology::doublePhiBins_
private

Definition at line 210 of file HcalTopology.h.

Referenced by doublePhiBins(), and nPhiBins().

◆ dPhiTable

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

Definition at line 223 of file HcalTopology.h.

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

◆ dPhiTableHF

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

Definition at line 223 of file HcalTopology.h.

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

◆ etaBinsHB_

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

Definition at line 205 of file HcalTopology.h.

Referenced by decrementDepth(), and HcalTopology().

◆ etaBinsHE_

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

Definition at line 205 of file HcalTopology.h.

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

◆ etaCalibHB_

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

Definition at line 257 of file HcalTopology.h.

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

◆ etaCalibHBX_

constexpr int HcalTopology::etaCalibHBX_ = 16
staticprivate

Definition at line 304 of file HcalTopology.h.

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

◆ etaCalibHE_

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

Definition at line 264 of file HcalTopology.h.

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

◆ etaCalibHEX_

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

Definition at line 309 of file HcalTopology.h.

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

◆ etaCalibHF_

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

Definition at line 271 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 278 of file HcalTopology.h.

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

◆ etaCalibHOX_

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

Definition at line 297 of file HcalTopology.h.

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

◆ etaHE2HF_

int HcalTopology::etaHE2HF_
private

Definition at line 212 of file HcalTopology.h.

Referenced by HcalTopology(), and incAIEta().

◆ etaHF2HE_

int HcalTopology::etaHF2HE_
private

Definition at line 212 of file HcalTopology.h.

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

◆ etaTable

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

Definition at line 223 of file HcalTopology.h.

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

◆ etaTableHF

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

Definition at line 223 of file HcalTopology.h.

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

◆ excludeHB_

bool HcalTopology::excludeHB_
private

Definition at line 195 of file HcalTopology.h.

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

◆ excludeHE_

bool HcalTopology::excludeHE_
private

Definition at line 195 of file HcalTopology.h.

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

◆ excludeHF_

bool HcalTopology::excludeHF_
private

Definition at line 195 of file HcalTopology.h.

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

◆ excludeHO_

bool HcalTopology::excludeHO_
private

Definition at line 195 of file HcalTopology.h.

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

◆ exclusionList_

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

Definition at line 194 of file HcalTopology.h.

Referenced by exclude(), and isExcluded().

◆ firstHBRing_

int HcalTopology::firstHBRing_
private

Definition at line 200 of file HcalTopology.h.

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

◆ firstHEDoublePhiRing_

int HcalTopology::firstHEDoublePhiRing_
private

Definition at line 208 of file HcalTopology.h.

Referenced by firstHEDoublePhiRing(), and HcalTopology().

◆ firstHEQuadPhiRing_

int HcalTopology::firstHEQuadPhiRing_
private

Definition at line 208 of file HcalTopology.h.

Referenced by firstHEQuadPhiRing(), and HcalTopology().

◆ firstHERing_

int HcalTopology::firstHERing_
private

Definition at line 201 of file HcalTopology.h.

Referenced by firstHERing(), and HcalTopology().

◆ firstHETripleDepthRing_

int HcalTopology::firstHETripleDepthRing_
private

Definition at line 209 of file HcalTopology.h.

Referenced by firstHETripleDepthRing(), and HcalTopology().

◆ firstHFQuadPhiRing_

int HcalTopology::firstHFQuadPhiRing_
private

Definition at line 208 of file HcalTopology.h.

Referenced by firstHFQuadPhiRing(), and HcalTopology().

◆ firstHFRing_

int HcalTopology::firstHFRing_
private

Definition at line 202 of file HcalTopology.h.

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

◆ firstHORing_

int HcalTopology::firstHORing_
private

Definition at line 203 of file HcalTopology.h.

Referenced by firstHORing(), and HcalTopology().

◆ HBSize_

unsigned int HcalTopology::HBSize_
private

Definition at line 215 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 216 of file HcalTopology.h.

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

◆ HFSize_

unsigned int HcalTopology::HFSize_
private

Definition at line 218 of file HcalTopology.h.

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

◆ HOSize_

unsigned int HcalTopology::HOSize_
private

Definition at line 217 of file HcalTopology.h.

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

◆ HTSize_

unsigned int HcalTopology::HTSize_
private

Definition at line 219 of file HcalTopology.h.

Referenced by getHTSize(), and HcalTopology().

◆ kCALIBhalf

constexpr int HcalTopology::kCALIBhalf = 693
staticprivate

Definition at line 235 of file HcalTopology.h.

◆ kCALIBSizePreLS1

constexpr int HcalTopology::kCALIBSizePreLS1 = 2 * kCALIBhalf
staticprivate

Definition at line 247 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kCASTORhalf

constexpr int HcalTopology::kCASTORhalf = 224
staticprivate

Definition at line 235 of file HcalTopology.h.

◆ kchanCalibHB_

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

Definition at line 258 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kchanCalibHE1_

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

Definition at line 265 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kchanCalibHE2_

constexpr unsigned int HcalTopology::kchanCalibHE2_ = kPhiCalibHE_
staticprivate

Definition at line 289 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kchanCalibHF1_

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

Definition at line 272 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kchanCalibHF2_

constexpr unsigned int HcalTopology::kchanCalibHF2_ = 1
staticprivate

Definition at line 293 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kHBhalf

constexpr int HcalTopology::kHBhalf = 1296
staticprivate

Definition at line 234 of file HcalTopology.h.

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

◆ kHBhalfPostLS2

constexpr int HcalTopology::kHBhalfPostLS2 = 4536
staticprivate

Definition at line 237 of file HcalTopology.h.

◆ kHBSizePostLS2

constexpr int HcalTopology::kHBSizePostLS2 = 2 * kHBhalfPostLS2
staticprivate

Definition at line 248 of file HcalTopology.h.

◆ kHBSizePreLS1

constexpr int HcalTopology::kHBSizePreLS1 = 2 * kHBhalf
staticprivate

Definition at line 241 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kHcalhalf

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

Definition at line 236 of file HcalTopology.h.

◆ kHcalhalfPostLS2

constexpr int HcalTopology::kHcalhalfPostLS2 = kHBhalfPostLS2 + kHEhalfPostLS2 + kHOhalf + kHFhalfPostLS2
staticprivate

Definition at line 238 of file HcalTopology.h.

◆ kHEhalf

constexpr int HcalTopology::kHEhalf = 1296
staticprivate

Definition at line 234 of file HcalTopology.h.

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

◆ kHEhalfPostLS2

constexpr int HcalTopology::kHEhalfPostLS2 = 3384
staticprivate

Definition at line 237 of file HcalTopology.h.

◆ kHESizePostLS2

constexpr int HcalTopology::kHESizePostLS2 = 2 * kHEhalfPostLS2
staticprivate

Definition at line 249 of file HcalTopology.h.

◆ kHESizePreLS1

constexpr int HcalTopology::kHESizePreLS1 = 2 * kHEhalf
staticprivate

Definition at line 242 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kHFhalf

constexpr int HcalTopology::kHFhalf = 864
staticprivate

Definition at line 234 of file HcalTopology.h.

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

◆ kHFhalfPostLS2

constexpr int HcalTopology::kHFhalfPostLS2 = 1728
staticprivate

Definition at line 237 of file HcalTopology.h.

◆ kHFSizePostLS2

constexpr int HcalTopology::kHFSizePostLS2 = 2 * kHFhalfPostLS2
staticprivate

Definition at line 250 of file HcalTopology.h.

◆ kHFSizePreLS1

constexpr int HcalTopology::kHFSizePreLS1 = 2 * kHFhalf
staticprivate

Definition at line 244 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kHOhalf

constexpr int HcalTopology::kHOhalf = 1080
staticprivate

Definition at line 234 of file HcalTopology.h.

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

◆ kHOSizePreLS1

constexpr int HcalTopology::kHOSizePreLS1 = 2 * kHOhalf
staticprivate

Definition at line 243 of file HcalTopology.h.

Referenced by HcalTopology().

◆ kHThalf

constexpr int HcalTopology::kHThalf = 2088
staticprivate

Definition at line 234 of file HcalTopology.h.

Referenced by detId2denseIdHT().

◆ kHThalfPhase1

constexpr int HcalTopology::kHThalfPhase1 = 2520
staticprivate

Definition at line 235 of file HcalTopology.h.

◆ kHTSizePhase1

constexpr int HcalTopology::kHTSizePhase1 = 2 * kHThalfPhase1
staticprivate

Definition at line 246 of file HcalTopology.h.

Referenced by detId2denseIdHT(), and HcalTopology().

◆ kHTSizePreLS1

constexpr int HcalTopology::kHTSizePreLS1 = 2 * kHThalf
staticprivate

Definition at line 245 of file HcalTopology.h.

Referenced by detId2denseIdHT(), and HcalTopology().

◆ kOffCalibHB_

constexpr unsigned int HcalTopology::kOffCalibHB_ = 0
staticprivate

Definition at line 253 of file HcalTopology.h.

Referenced by detId2denseIdCALIB().

◆ kOffCalibHBX_

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

Definition at line 302 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHE1_

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

Definition at line 260 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHE2_

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

Definition at line 287 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHEX_

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

Definition at line 307 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHF1_

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

Definition at line 267 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHF2_

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

Definition at line 291 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHFX_

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

Definition at line 312 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and HcalTopology().

◆ kOffCalibHO1_

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

Definition at line 274 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHO2_

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

Definition at line 285 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kOffCalibHOX_

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

Definition at line 295 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHB_

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

Definition at line 255 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHBX_

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

Definition at line 305 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHE_

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

Definition at line 262 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHEX_

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

Definition at line 310 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHF1_

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

Definition at line 269 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHO0_

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

Definition at line 281 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHO1_

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

Definition at line 282 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kPhiCalibHO2_

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

Definition at line 283 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ kSizeForDenseIndexingPostLS2

constexpr int HcalTopology::kSizeForDenseIndexingPostLS2 = 2 * kHcalhalfPostLS2
staticprivate

Definition at line 240 of file HcalTopology.h.

◆ kSizeForDenseIndexingPreLS1

constexpr int HcalTopology::kSizeForDenseIndexingPreLS1 = 2 * kHcalhalf
staticprivate

Definition at line 239 of file HcalTopology.h.

Referenced by denseId2detId().

◆ kZDChalf

constexpr int HcalTopology::kZDChalf = 11
staticprivate

Definition at line 234 of file HcalTopology.h.

◆ lastHBRing_

int HcalTopology::lastHBRing_
private

Definition at line 200 of file HcalTopology.h.

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

◆ lastHERing_

int HcalTopology::lastHERing_
private

Definition at line 201 of file HcalTopology.h.

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

◆ lastHFRing_

int HcalTopology::lastHFRing_
private

Definition at line 202 of file HcalTopology.h.

Referenced by HcalTopology(), and lastHFRing().

◆ lastHORing_

int HcalTopology::lastHORing_
private

Definition at line 203 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 213 of file HcalTopology.h.

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

◆ maxPhi_

constexpr unsigned int HcalTopology::maxPhi_ = 72
staticprivate

Definition at line 252 of file HcalTopology.h.

Referenced by ncells(), and validCalib().

◆ maxPhiHE_

int HcalTopology::maxPhiHE_
private

◆ mergePosition_

bool HcalTopology::mergePosition_
private

Definition at line 193 of file HcalTopology.h.

Referenced by getMergePositionFlag().

◆ minMaxDepth_

constexpr int HcalTopology::minMaxDepth_ = 4
staticprivate

Definition at line 251 of file HcalTopology.h.

Referenced by maxDepth().

◆ minPhi_

constexpr unsigned int HcalTopology::minPhi_ = 1
staticprivate

Definition at line 252 of file HcalTopology.h.

Referenced by validCalib().

◆ mode_

HcalTopologyMode::Mode HcalTopology::mode_
private

◆ mPhiCalibHB_

constexpr unsigned int HcalTopology::mPhiCalibHB_ = 4
staticprivate

Definition at line 255 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHBX_

constexpr unsigned int HcalTopology::mPhiCalibHBX_ = 1
staticprivate

Definition at line 303 of file HcalTopology.h.

◆ mPhiCalibHE_

constexpr unsigned int HcalTopology::mPhiCalibHE_ = 4
staticprivate

Definition at line 262 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHEX_

constexpr unsigned int HcalTopology::mPhiCalibHEX_ = 2
staticprivate

Definition at line 308 of file HcalTopology.h.

Referenced by detId2denseIdCALIB().

◆ mPhiCalibHF1_

constexpr unsigned int HcalTopology::mPhiCalibHF1_ = 18
staticprivate

Definition at line 269 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHO0_

constexpr unsigned int HcalTopology::mPhiCalibHO0_ = 6
staticprivate

Definition at line 280 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHO1_

constexpr unsigned int HcalTopology::mPhiCalibHO1_ = 12
staticprivate

Definition at line 280 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ mPhiCalibHOX_

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

Definition at line 298 of file HcalTopology.h.

◆ nCalibHB_

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

Definition at line 259 of file HcalTopology.h.

◆ nCalibHBX_

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

Definition at line 306 of file HcalTopology.h.

◆ nCalibHE1_

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

Definition at line 266 of file HcalTopology.h.

◆ nCalibHE2_

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

Definition at line 290 of file HcalTopology.h.

◆ nCalibHEX_

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

Definition at line 311 of file HcalTopology.h.

◆ nCalibHF1_

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

Definition at line 273 of file HcalTopology.h.

◆ nCalibHF2_

constexpr unsigned int HcalTopology::nCalibHF2_ = nEtaCalibHF_
staticprivate

Definition at line 294 of file HcalTopology.h.

◆ nCalibHO1_

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

Definition at line 284 of file HcalTopology.h.

◆ nCalibHO2_

constexpr unsigned int HcalTopology::nCalibHO2_ = nEtaCalibHO_
staticprivate

Definition at line 286 of file HcalTopology.h.

◆ nCalibHOX_

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

Definition at line 300 of file HcalTopology.h.

◆ nchanCalibHB_

constexpr unsigned int HcalTopology::nchanCalibHB_ = 3
staticprivate

Definition at line 254 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nchanCalibHE1_

constexpr unsigned int HcalTopology::nchanCalibHE1_ = 6
staticprivate

Definition at line 261 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nchanCalibHF1_

constexpr unsigned int HcalTopology::nchanCalibHF1_ = 3
staticprivate

Definition at line 268 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nchanCalibHO_

constexpr unsigned int HcalTopology::nchanCalibHO_ = 2
staticprivate

Definition at line 275 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHB_

constexpr unsigned int HcalTopology::nEtaCalibHB_ = 2
staticprivate

Definition at line 254 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHBX_

constexpr unsigned int HcalTopology::nEtaCalibHBX_ = 1
staticprivate

Definition at line 303 of file HcalTopology.h.

◆ nEtaCalibHE_

constexpr unsigned int HcalTopology::nEtaCalibHE_ = 2
staticprivate

Definition at line 261 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHEX_

constexpr unsigned int HcalTopology::nEtaCalibHEX_ = 2
staticprivate

Definition at line 308 of file HcalTopology.h.

Referenced by validCalib().

◆ nEtaCalibHF_

constexpr unsigned int HcalTopology::nEtaCalibHF_ = 2
staticprivate

Definition at line 268 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHO_

constexpr unsigned int HcalTopology::nEtaCalibHO_ = 5
staticprivate

Definition at line 275 of file HcalTopology.h.

Referenced by detId2denseIdCALIB(), and validCalib().

◆ nEtaCalibHOX_

constexpr unsigned int HcalTopology::nEtaCalibHOX_ = 2
staticprivate

Definition at line 296 of file HcalTopology.h.

Referenced by validCalib().

◆ nEtaHB_

int HcalTopology::nEtaHB_
private

◆ nEtaHE_

int HcalTopology::nEtaHE_
private

Definition at line 206 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 299 of file HcalTopology.h.

Referenced by denseId2detIdCALIB(), and detId2denseIdCALIB().

◆ numberOfShapes_

unsigned int HcalTopology::numberOfShapes_
private

Definition at line 221 of file HcalTopology.h.

Referenced by getNumberOfShapes(), and HcalTopology().

◆ phiCalibHF2_

constexpr int HcalTopology::phiCalibHF2_ = 1
staticprivate

Definition at line 292 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phiCalibHO_

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

Definition at line 279 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phiCalibHOX1_

constexpr int HcalTopology::phiCalibHOX1_ = 4
staticprivate

Definition at line 301 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phiCalibHOX2_

constexpr int HcalTopology::phiCalibHOX2_ = 12
staticprivate

Definition at line 301 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phiCalibHOX3_

constexpr int HcalTopology::phiCalibHOX3_ = 6
staticprivate

Definition at line 301 of file HcalTopology.h.

Referenced by denseId2detIdCALIB().

◆ phioff

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

Definition at line 224 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().

◆ singlePhiBins_

int HcalTopology::singlePhiBins_
private

Definition at line 210 of file HcalTopology.h.

Referenced by nPhiBins(), and singlePhiBins().

◆ topoVersion_

int HcalTopology::topoVersion_
private

◆ triggerMode_

HcalTopologyMode::TriggerMode HcalTopology::triggerMode_
private

Definition at line 198 of file HcalTopology.h.

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

◆ unitPhi

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

Definition at line 225 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().

◆ unitPhiHF

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

Definition at line 225 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().