CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | 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...
 
void depthBinInformation (HcalSubdetector subdet, int etaRing, int iphi, int zside, int &nDepthBins, int &startingBin) const
 finds the number of depth bins and which is the number to start with More...
 
unsigned int detId2denseId (const DetId &id) const override
 return a linear packed id More...
 
unsigned int detId2denseIdCALIB (const DetId &id) const
 return a linear packed id from CALIB More...
 
unsigned int detId2denseIdHB (const DetId &id) const
 return a linear packed id from HB More...
 
unsigned int detId2denseIdHE (const DetId &id) const
 return a linear packed id from HE More...
 
unsigned int detId2denseIdHF (const DetId &id) const
 return a linear packed id from HF More...
 
unsigned int detId2denseIdHO (const DetId &id) const
 return a linear packed id from HO More...
 
unsigned int detId2denseIdHT (const DetId &id) const
 return a linear packed id from HT More...
 
int doublePhiBins () const
 
std::vector< DetIddown (const DetId &id) const override
 
std::vector< DetIdeast (const DetId &id) const override
 
double etaMax (HcalSubdetector subdet) const
 
std::pair< double, double > etaRange (HcalSubdetector subdet, int ieta) const
 
int etaRing (HcalSubdetector subdet, double eta) const
 eta and phi index from eta, phi values More...
 
void exclude (const HcalDetId &id)
 
int exclude (HcalSubdetector subdet, int ieta1, int ieta2, int iphi1, int iphi2, int depth1=1, int depth2=4)
 
void excludeSubdetector (HcalSubdetector subdet)
 
int firstHBRing () const
 
int firstHEDoublePhiRing () const
 
int firstHEQuadPhiRing () const
 
int firstHERing () const
 
int firstHETripleDepthRing () const
 
int firstHFQuadPhiRing () const
 
int firstHFRing () const
 
int firstHORing () const
 
unsigned int getCALIBSize () const
 
void getDepthSegmentation (const unsigned ring, std::vector< int > &readoutDepths, const bool flag=false) const
 
unsigned int getHBSize () const
 
unsigned int getHESize () const
 
unsigned int getHFSize () const
 
unsigned int getHOSize () const
 
unsigned int getHTSize () const
 
bool getMergePositionFlag () const
 
unsigned int getNumberOfShapes () const
 
int getPhiZOne (std::vector< std::pair< int, int > > &phiz) const
 
 HcalTopology (const HcalDDDRecConstants *hcons, const bool mergePosition=false)
 
 HcalTopology (HcalTopologyMode::Mode mode, int maxDepthHB, int maxDepthHE, HcalTopologyMode::TriggerMode tmode=HcalTopologyMode::TriggerMode_2009)
 
HcalDetId idBack (const HcalDetId &id) const
 
HcalDetId idFront (const HcalDetId &id) const
 
int incIEta (const HcalDetId &id, HcalDetId neighbors[2]) const
 
bool incIPhi (const HcalDetId &id, HcalDetId &neighbor) const
 
bool incrementDepth (HcalDetId &id) const
 
bool isBH () const
 
int lastHBRing () const
 
int lastHERing () const
 
int lastHFRing () const
 
int lastHORing () const
 
int maxDepth (HcalSubdetector subdet) const
 
int maxDepthHB () const
 
int maxDepthHE () const
 
bool mergedDepth29 (HcalDetId id) const
 
HcalDetId mergedDepthDetId (const HcalDetId &id) const
 
std::vector< int > mergedDepthList29 (HcalDetId id) const
 
HcalTopologyMode::Mode mode () const
 
unsigned int ncells () const override
 return a count of valid cells (for dense indexing use) More...
 
std::vector< DetIdnorth (const DetId &id) const override
 
int nPhiBins (int etaRing) const
 how many phi segments in this ring More...
 
int nPhiBins (HcalSubdetector subdet, int etaRing) const
 
int phiBin (HcalSubdetector subdet, int etaRing, double phi) const
 
std::pair< int, int > segmentBoundaries (const unsigned ring, const unsigned depth, const bool flag=false) const
 
void setDepthSegmentation (const unsigned ring, const std::vector< int > &readoutDepths, const bool flag)
 
int singlePhiBins () const
 
std::vector< DetIdsouth (const DetId &id) const override
 
int topoVersion () const override
 return a version which identifies the given topology More...
 
HcalTopologyMode::TriggerMode triggerMode () const
 
void unmergeDepthDetId (const HcalDetId &id, std::vector< HcalDetId > &ids) const
 
std::vector< DetIdup (const DetId &id) const override
 
bool valid (const DetId &id) const override
 
bool 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

enum  {
  kHBhalf = 1296, kHEhalf = 1296, kHOhalf = 1080, kHFhalf = 864,
  kHThalf = 2088, kZDChalf = 11, kCASTORhalf = 224, kCALIBhalf = 693,
  kHThalfPhase1 = 2520, kHcalhalf = kHBhalf + kHEhalf + kHOhalf + kHFhalf
}
 
enum  { kSizeForDenseIndexingPreLS1 = 2*kHcalhalf }
 
enum  { kHBSizePreLS1 = 2*kHBhalf }
 
enum  { kHESizePreLS1 = 2*kHEhalf }
 
enum  { kHOSizePreLS1 = 2*kHOhalf }
 
enum  { kHFSizePreLS1 = 2*kHFhalf }
 
enum  { kHTSizePreLS1 = 2*kHThalf }
 
enum  { kHTSizePhase1 = 2*kHThalfPhase1 }
 
enum  { kCALIBSizePreLS1 = 2*kCALIBhalf }
 
typedef std::map< unsigned, std::vector< int > > SegmentationMap
 

Private Member Functions

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

Private Attributes

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

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

Member Typedef Documentation

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

Definition at line 229 of file HcalTopology.h.

Member Enumeration Documentation

anonymous enum
private
Enumerator
kHBhalf 
kHEhalf 
kHOhalf 
kHFhalf 
kHThalf 
kZDChalf 
kCASTORhalf 
kCALIBhalf 
kHThalfPhase1 
kHcalhalf 

Definition at line 233 of file HcalTopology.h.

anonymous enum
private
Enumerator
kSizeForDenseIndexingPreLS1 

Definition at line 243 of file HcalTopology.h.

anonymous enum
private
Enumerator
kHBSizePreLS1 

Definition at line 244 of file HcalTopology.h.

anonymous enum
private
Enumerator
kHESizePreLS1 

Definition at line 245 of file HcalTopology.h.

anonymous enum
private
Enumerator
kHOSizePreLS1 

Definition at line 246 of file HcalTopology.h.

anonymous enum
private
Enumerator
kHFSizePreLS1 

Definition at line 247 of file HcalTopology.h.

anonymous enum
private
Enumerator
kHTSizePreLS1 

Definition at line 248 of file HcalTopology.h.

anonymous enum
private
Enumerator
kHTSizePhase1 

Definition at line 249 of file HcalTopology.h.

anonymous enum
private
Enumerator
kCALIBSizePreLS1 

Definition at line 250 of file HcalTopology.h.

Constructor & Destructor Documentation

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

Definition at line 19 of file HcalTopology.cc.

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

Referenced by HcalTopologyIdealEP::produce().

20  :
21  hcons_(hcons), mergePosition_(mergePosition),
22  excludeHB_(false), excludeHE_(false), excludeHO_(false), excludeHF_(false),
23  firstHBRing_(1),
24  firstHERing_(999), lastHERing_(0),
25  firstHFRing_(29), lastHFRing_(41),
26  firstHORing_(1), lastHORing_(15),
30 
41  for (auto & i : etaBinsHE_) {
42  if (firstHERing_ > i.ieta) firstHERing_ = i.ieta;
43  if (lastHERing_ < i.ieta) lastHERing_ = i.ieta;
44  int unit = static_cast<int>((i.dphi / 5.0_deg) + 0.01);
45  if (unit == 2 && firstHEDoublePhiRing_ > i.ieta)
46  firstHEDoublePhiRing_ = i.ieta;
47  if (unit == 4 && firstHEQuadPhiRing_ > i.ieta)
48  firstHEQuadPhiRing_ = i.ieta;
49  if (i.layer.size() > 2 && firstHETripleDepthRing_ > i.ieta)
51  }
54  topoVersion_=0; //DL
55  HBSize_ = kHBSizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/barrel * barrel/hcal
56  HESize_ = kHESizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/endcap * endcap/hcal
57  HOSize_ = kHOSizePreLS1; // ieta * iphi * 2
58  HFSize_ = kHFSizePreLS1; // ieta * iphi * depth * 2
59  numberOfShapes_ = 87;
60  } else if (mode_==HcalTopologyMode::SLHC) { // need to know more eventually
61  topoVersion_=10;
62  HBSize_ = nEtaHB_*IPHI_MAX*maxDepthHB_*2;
64  HOSize_ = (lastHORing_-firstHORing_+1)*IPHI_MAX*2; // ieta * iphi * 2
65  HFSize_ = (lastHFRing_-firstHFRing_+1)*IPHI_MAX*maxDepthHF_*2; // ieta * iphi * depth * 2
66  numberOfShapes_ = (maxPhiHE_ > 72) ? 1200 : 500;
67  }
71  } else {
73  }
74 
75 #ifdef EDM_ML_DEBUG
76  std::cout << "Topo sizes " << HBSize_ << ":" << HESize_ << ":" << HOSize_
77  << ":" << HFSize_ << ":" << HTSize_ << " for mode " << mode_
78  << ":" << triggerMode_ << std::endl;
79 #endif
80 
81  //The transition between HE/HF in eta
87  std::pair<int,int> ietaHF = hcons_->getEtaRange(2);
88  double eta = etaBinsHE_[etaBinsHE_.size()-1].etaMax;
90  for (unsigned int i=1; i<etaTableHF.size(); ++i) {
91  if (eta < etaTableHF[i]) {
92  etaHE2HF_ = ietaHF.first + i - 1;
93  break;
94  }
95  }
96  eta = etaTableHF[0];
98  for (auto & i : etaBinsHE_) {
99  if (eta < i.etaMax) {
100  etaHF2HE_ = i.ieta;
101  break;
102  }
103  }
104  const double fiveDegInRad = 5.0_deg;
105  for (double k : dPhiTable) {
106  int units = (int)(k/fiveDegInRad+0.5);
107  unitPhi.emplace_back(units);
108  }
109  for (double k : dPhiTableHF) {
110  int units = (int)(k/fiveDegInRad+0.5);
111  unitPhiHF.emplace_back(units);
112  }
113  int nEta = hcons_->getNEta();
114  for (int ring=1; ring<=nEta; ++ring) {
115  std::vector<int> segmentation = hcons_->getDepth(ring-1,false);
116  setDepthSegmentation(ring,segmentation,false);
117 #ifdef EDM_ML_DEBUG
118  std::cout << "Set segmentation for ring " << ring << " with "
119  << segmentation.size() << " elements:";
120  for (unsigned int k=0; k<segmentation.size(); ++k)
121  std::cout << " " << segmentation[k];
122  std::cout << std::endl;
123 #endif
124  segmentation = hcons_->getDepth(ring-1,true);
125  setDepthSegmentation(ring,segmentation,true);
126 #ifdef EDM_ML_DEBUG
127  std::cout << "Set Plan-1 segmentation for ring " << ring << " with "
128  << segmentation.size() << " elements:";
129  for (unsigned int k=0; k<segmentation.size(); ++k)
130  std::cout << " " << segmentation[k];
131  std::cout << std::endl;
132 #endif
133  }
134 
135 #ifdef EDM_ML_DEBUG
136  std::cout << "Constants in HcalTopology " << firstHBRing_ << ":"
137  << lastHBRing_ << " " << firstHERing_ << ":" << lastHERing_ << ":"
138  << firstHEDoublePhiRing_ << ":" << firstHEQuadPhiRing_ << ":"
139  << firstHETripleDepthRing_ << " " << firstHFRing_ << ":"
140  << lastHFRing_ << ":" << firstHFQuadPhiRing_ << " " << firstHORing_
141  << ":" << lastHORing_ << " " << maxDepthHB_ << ":" << maxDepthHE_
142  << " " << nEtaHB_ << ":" << nEtaHE_ << " " << etaHE2HF_ << ":"
143  << etaHF2HE_ << " " << maxPhiHE_ << std::endl;
144 #endif
145 }
std::vector< int > getDepth(const int &det, const int &phi, const int &zside, const unsigned int &eta) const
std::vector< int > unitPhiHF
Definition: HcalTopology.h:224
unsigned int numberOfShapes_
Definition: HcalTopology.h:220
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:222
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHB_
Definition: HcalTopology.h:204
std::vector< int > unitPhi
Definition: HcalTopology.h:224
const std::vector< double > & getEtaTableHF() const
HcalTopologyMode::TriggerMode triggerMode_
Definition: HcalTopology.h:197
unsigned int HESize_
Definition: HcalTopology.h:215
unsigned int HTSize_
Definition: HcalTopology.h:218
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:204
const std::vector< double > & getPhiOffs() const
std::pair< int, int > getEtaRange(const int &i) const
U second(std::pair< T, U > const &p)
std::vector< HcalEtaBin > getEtaBins(const int &itype) const
unsigned int HFSize_
Definition: HcalTopology.h:217
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:196
unsigned int HBSize_
Definition: HcalTopology.h:214
std::vector< double > etaTableHF
Definition: HcalTopology.h:222
unsigned int HOSize_
Definition: HcalTopology.h:216
std::vector< double > etaTable
Definition: HcalTopology.h:222
int k[5][pyjets_maxn]
int firstHEQuadPhiRing_
Definition: HcalTopology.h:207
bool mergePosition_
Definition: HcalTopology.h:192
std::vector< double > phioff
Definition: HcalTopology.h:223
const std::vector< double > & getPhiTable() const
int getMaxDepth(const int &type) const
const std::vector< double > & getEtaTable() const
std::vector< double > dPhiTable
Definition: HcalTopology.h:222
TString units(TString variable, Char_t axis)
const std::vector< double > & getPhiTableHF() const
int firstHETripleDepthRing_
Definition: HcalTopology.h:208
void setDepthSegmentation(const unsigned ring, const std::vector< int > &readoutDepths, const bool flag)
int firstHEDoublePhiRing_
Definition: HcalTopology.h:207
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
static const int IPHI_MAX
Definition: HcalTopology.cc:15
int firstHFQuadPhiRing_
Definition: HcalTopology.h:207
int getNPhi(const int &type) const
HcalTopology::HcalTopology ( HcalTopologyMode::Mode  mode,
int  maxDepthHB,
int  maxDepthHE,
HcalTopologyMode::TriggerMode  tmode = HcalTopologyMode::TriggerMode_2009 
)

Definition at line 147 of file HcalTopology.cc.

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

147  :
148  hcons_(nullptr), mergePosition_(false),
149  excludeHB_(false), excludeHE_(false), excludeHO_(false), excludeHF_(false),
150  mode_(mode), triggerMode_(tmode),
151  firstHBRing_(1), lastHBRing_(16),
152  firstHERing_(16), lastHERing_(29),
153  firstHFRing_(29), lastHFRing_(41),
154  firstHORing_(1), lastHORing_(15),
166  numberOfShapes_(( mode==HcalTopologyMode::SLHC ) ? 500 : 87 ) {
167 
169  topoVersion_=0; //DL
170  HBSize_= kHBSizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/barrel * barrel/hcal
171  HESize_= kHESizePreLS1; // qie-per-fiber * fiber/rm * rm/rbx * rbx/endcap * endcap/hcal
172  HOSize_= kHOSizePreLS1; // ieta * iphi * 2
173  HFSize_= kHFSizePreLS1; // phi * eta * depth * pm
174  } else if (mode_==HcalTopologyMode::SLHC) { // need to know more eventually
176  HESize_= maxDepthHE*(29-16+1)*maxPhiHE_*2;
177  HOSize_= 15*IPHI_MAX*2; // ieta * iphi * 2
178  HFSize_= IPHI_MAX*13*maxDepthHF_*2; // phi * eta * depth * pm
179  topoVersion_=10;
180  }
185  } else {
187  }
188 
189  edm::LogWarning("CaloTopology") << "This is an incomplete constructor of HcalTopology - be warned that many functionalities will not be there - revert from this - get from EventSetup";
190 }
unsigned int numberOfShapes_
Definition: HcalTopology.h:220
int maxDepthHE() const
Definition: HcalTopology.h:146
HcalTopologyMode::TriggerMode triggerMode_
Definition: HcalTopology.h:197
unsigned int HESize_
Definition: HcalTopology.h:215
unsigned int HTSize_
Definition: HcalTopology.h:218
HcalTopologyMode::Mode mode() const
Definition: HcalTopology.h:31
unsigned int HFSize_
Definition: HcalTopology.h:217
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:196
unsigned int HBSize_
Definition: HcalTopology.h:214
unsigned int HOSize_
Definition: HcalTopology.h:216
int firstHEQuadPhiRing_
Definition: HcalTopology.h:207
bool mergePosition_
Definition: HcalTopology.h:192
int maxDepthHB() const
Definition: HcalTopology.h:145
int firstHETripleDepthRing_
Definition: HcalTopology.h:208
int firstHEDoublePhiRing_
Definition: HcalTopology.h:207
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
static const int IPHI_MAX
Definition: HcalTopology.cc:15
int firstHFQuadPhiRing_
Definition: HcalTopology.h:207

Member Function Documentation

const HcalDDDRecConstants* HcalTopology::dddConstants ( ) const
inline
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 be two neighbors of 40 and 21

Definition at line 621 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, etaHF2HE_, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHERing(), firstHFQuadPhiRing(), firstHFRing(), HcalBarrel, HcalEndcap, IPHI_MAX, gen::n, valid(), and ecaldqm::zside().

Referenced by decIEta(), idBack(), and incIEta().

621  {
622  int n=1;
623  int aieta=id.ietaAbs();
624 
625  if (aieta==firstHEDoublePhiRing()) {
626  n=2;
627  neighbors[0]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),id.iphi(),id.depth());
628  neighbors[1]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),id.iphi()+1,id.depth());
629  } else if (aieta==firstHFQuadPhiRing()) {
630  n=2;
631  neighbors[0]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),id.iphi(),id.depth());
632  if (id.iphi()==IPHI_MAX-1) neighbors[1]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),1,id.depth());
633  else neighbors[1]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),id.iphi()+2,id.depth());
634  } else if (aieta==firstHEQuadPhiRing()) {
635  n=2;
636  neighbors[0]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),id.iphi(),id.depth());
637  if (id.iphi()==IPHI_MAX-1) neighbors[1]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),1,id.depth());
638  else neighbors[1]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),id.iphi()+2,id.depth());
639  } else if (aieta==1) {
640  neighbors[0]=HcalDetId(id.subdet(),-aieta*id.zside(),id.iphi(),id.depth());
641  } else if (aieta==firstHERing()) {
642  neighbors[0]=HcalDetId(HcalBarrel,(aieta-1)*id.zside(),id.iphi(),1);
643  } else if (aieta==firstHFRing()) {
644  neighbors[0]=HcalDetId(HcalEndcap,etaHF2HE_*id.zside(),id.iphi(),1);
645  } else
646  neighbors[0]=HcalDetId(id.subdet(),(aieta-1)*id.zside(),id.iphi(),id.depth());
647 
648  if (!valid(neighbors[0]) && n==2) {
649  if (!valid(neighbors[1])) n=0;
650  else {
651  n=1;
652  neighbors[0]=neighbors[1];
653  }
654  }
655  if (n==2 && !valid(neighbors[1])) n=1;
656  if (n==1 && !valid(neighbors[0])) n=0;
657 
658  return n;
659 }
int firstHFRing() const
Definition: HcalTopology.h:91
bool valid(const DetId &id) const override
int zside(DetId const &)
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:96
int firstHERing() const
Definition: HcalTopology.h:89
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:98
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:97
static const int IPHI_MAX
Definition: HcalTopology.cc:15
int HcalTopology::decIEta ( const HcalDetId id,
HcalDetId  neighbors[2] 
) const

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

Definition at line 593 of file HcalTopology.cc.

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

Referenced by east(), and producerTag().

593  {
594  if (id.zside()==1) return decAIEta(id,neighbors);
595  else return incAIEta(id,neighbors);
596 }
int zside(DetId const &)
int decAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
int incAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
bool HcalTopology::decIPhi ( const HcalDetId id,
HcalDetId neighbor 
) const

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

Definition at line 551 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHFQuadPhiRing(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, IPHI_MAX, maxPhiHE_, convertSQLiteXML::ok, valid(), and validRaw().

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

551  {
552  bool ok=valid(id);
553  if (ok) {
554  switch (id.subdet()) {
555  case (HcalBarrel):
556  case (HcalOuter):
557  if (id.iphi()==1) neighbor=HcalDetId(id.subdet(),id.ieta(),IPHI_MAX,id.depth());
558  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()-1,id.depth());
559  break;
560  case (HcalEndcap):
561  if (id.ietaAbs()>=firstHEQuadPhiRing()) {
562  if (id.iphi()==3) neighbor=HcalDetId(id.subdet(),id.ieta(),IPHI_MAX-1,id.depth());
563  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()-4,id.depth());
564  } else if (id.ietaAbs()>=firstHEDoublePhiRing()) {
565  if (id.iphi()==1) neighbor=HcalDetId(id.subdet(),id.ieta(),IPHI_MAX-1,id.depth());
566  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()-2,id.depth());
567  } else {
568  if (id.iphi()==1) neighbor=HcalDetId(id.subdet(),id.ieta(),maxPhiHE_,id.depth());
569  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()-1,id.depth());
570  }
571  break;
572  case (HcalForward):
573  if (id.ietaAbs()>=firstHFQuadPhiRing()) {
574  if (id.iphi()==3) neighbor=HcalDetId(id.subdet(),id.ieta(),IPHI_MAX-1,id.depth());
575  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()-4,id.depth());
576  } else {
577  if (id.iphi()==1) neighbor=HcalDetId(id.subdet(),id.ieta(),IPHI_MAX-1,id.depth());
578  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()-2,id.depth());
579  }
580  if (!validRaw(neighbor)) ok = false;
581  break;
582  default: ok=false;
583  }
584  }
585  return ok;
586 }
bool valid(const DetId &id) const override
bool validRaw(const HcalDetId &id) const
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:96
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:98
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:97
static const int IPHI_MAX
Definition: HcalTopology.cc:15
bool HcalTopology::decrementDepth ( HcalDetId id) const

Get the detector in front of this one

Definition at line 761 of file HcalTopology.cc.

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

Referenced by down(), and producerTag().

761  {
762  HcalSubdetector subdet = detId.subdet();
763  int ieta = detId.ieta();
764  int etaRing = detId.ietaAbs();
765  int depth = detId.depth();
766  int iphi = detId.iphi();
767  int zside = detId.zside();
768  int nDepthBins, startingBin;
769  depthBinInformation(subdet, etaRing, iphi, zside, nDepthBins, startingBin);
770 
771  // see if the new depth bin exists
772  --depth;
773  if ((subdet == HcalOuter) ||
774  (subdet == HcalEndcap && etaRing == firstHERing())) {
775  subdet = HcalBarrel;
776  for (int i=0; i<nEtaHB_; ++i) {
777  if (etaRing == etaBinsHB_[i].ieta) {
778  depth = etaBinsHB_[i].depthStart+etaBinsHB_[i].layer.size()-1;
779  break;
780  }
781  }
782  } else if (subdet == HcalEndcap && etaRing == lastHERing() &&
783  depth == hcons_->getDepthEta29(iphi,zside,0) &&
785  (ieta > 0) ? --ieta : ++ieta;
786  } else if (depth <= 0) {
787  if (subdet == HcalForward && etaRing == firstHFRing()) {
788  // overlap
789  subdet = HcalEndcap;
790  etaRing= etaHF2HE_;
791  ieta = (ieta > 0) ? etaRing : -etaRing;
792  for (const auto & i : etaBinsHE_) {
793  if (etaRing == i.ieta) {
794  depth = i.depthStart+i.layer.size()-1;
795  break;
796  }
797  }
798  } else {
799  // no more chances
800  detId = HcalDetId();
801  return false;
802  }
803  }
804  detId = HcalDetId(subdet, ieta, detId.iphi(), depth);
805  return validRaw(detId);
806 }
int firstHFRing() const
Definition: HcalTopology.h:91
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHB_
Definition: HcalTopology.h:204
int zside(DetId const &)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:204
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
bool validRaw(const HcalDetId &id) const
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:196
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
HcalSubdetector
Definition: HcalAssistant.h:31
int getDepthEta29(const int &iphi, const int &zside, const int &type) const
int firstHERing() const
Definition: HcalTopology.h:89
int lastHERing() const
Definition: HcalTopology.h:90
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
DetId HcalTopology::denseId2detId ( unsigned int  denseid) const
overridevirtual

return a linear packed id

Reimplemented from CaloSubdetectorTopology.

Definition at line 1193 of file HcalTopology.cc.

References gather_cfg::cout, TauDecayModes::dec, 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(), sd, and topoVersion_.

Referenced by HcalGeometry::localCorners(), CaloGeometryDBEP< T, U >::produceAligned(), and producerTag().

1193  {
1194 
1196  int ie ( 0 ) ;
1197  int ip ( 0 ) ;
1198  int dp ( 0 ) ;
1199  int in ( denseid ) ;
1200  int iz ( 1 ) ;
1201  if (topoVersion_==0) { //DL// pre-LS1
1202  if (denseid < kSizeForDenseIndexingPreLS1) {
1203  if ( in > 2*( kHBhalf + kHEhalf + kHOhalf ) - 1 ) { // HF
1204  sd = HcalForward ;
1205  in -= 2*( kHBhalf + kHEhalf + kHOhalf ) ;
1206  iz = ( in<kHFhalf ? 1 : -1 ) ;
1207  in %= kHFhalf ;
1208  ip = 4*( in/48 ) ;
1209  in %= 48 ;
1210  ip += 1 + ( in>21 ? 2 : 0 ) ;
1211  if( 3 == ip%4 ) in -= 22 ;
1212  ie = 29 + in/2 ;
1213  dp = 1 + in%2 ;
1214  } else if ( in > 2*( kHBhalf + kHEhalf ) - 1 ) { // HO
1215  sd = HcalOuter ;
1216  in -= 2*( kHBhalf + kHEhalf ) ;
1217  iz = ( in<kHOhalf ? 1 : -1 ) ;
1218  in %= kHOhalf ;
1219  dp = 4 ;
1220  ip = 1 + in/15 ;
1221  ie = 1 + ( in - 15*( ip - 1 ) ) ;
1222  } else if ( in > 2*kHBhalf - 1 ) { // Endcap
1223  sd = HcalEndcap ;
1224  in -= 2*kHBhalf ;
1225  iz = ( in<kHEhalf ? 1 : -1 ) ;
1226  in %= kHEhalf ;
1227  ip = 2*( in/36 ) ;
1228  in %= 36 ;
1229  ip += 1 + in/28 ;
1230  if( 0 == ip%2 ) in %= 28 ;
1231  ie = 15 + ( in<2 ? 1 + in : 2 +
1232  ( in<20 ? 1 + ( in - 2 )/2 : 9 +
1233  ( in<26 ? 1 + ( in - 20 )/3 : 3 ) ) ) ;
1234  dp = ( in<1 ? 3 :
1235  ( in<2 ? 1 :
1236  ( in<20 ? 1 + ( in - 2 )%2 :
1237  ( in<26 ? 1 + ( in - 20 )%3 :
1238  ( 1 + ( in - 26 )%2 ) ) ) ) ) ;
1239  } else { // barrel
1240  iz = ( in<kHBhalf ? 1 : -1 ) ;
1241  in %= kHBhalf ;
1242  ip = in/18 + 1 ;
1243  in %= 18 ;
1244  if ( in < 14 ) {
1245  dp = 1 ;
1246  ie = in + 1 ;
1247  } else {
1248  in %= 14 ;
1249  dp = 1 + in%2 ;
1250  ie = 15 + in/2 ;
1251  }
1252  }
1253  }
1254  } else if (topoVersion_==10) {
1255  if (denseid < ncells()) {
1256  if (denseid >= (HBSize_+HESize_+HOSize_)) {
1257  sd = HcalForward ;
1258  in -= (HBSize_+HESize_+HOSize_);
1259  dp = (in%maxDepthHF_) + 1;
1260  ip = (in - dp + 1)%(maxDepthHF_*IPHI_MAX);
1261  ip = (ip/maxDepthHF_) + 1;
1262  ie = (in - dp + 1 - maxDepthHF_*(ip -1))/(IPHI_MAX*maxDepthHF_);
1263  if (ie > 12) {ie = 54 -ie; iz = -1;}
1264  else {ie += 29; iz = 1;}
1265  } else if (denseid >= (HBSize_+HESize_)) {
1266  sd = HcalOuter ;
1267  in -= (HBSize_+HESize_);
1268  dp = 4;
1269  ip = (in%IPHI_MAX) + 1;
1270  ie = (in - ip + 1)/IPHI_MAX;
1271  if (ie > 14) {ie = 30 -ie; iz = -1;}
1272  else {ie += 1; iz = 1;}
1273  } else if (denseid >= (HBSize_)) {
1274  sd = HcalEndcap ;
1275  in -= (HBSize_);
1276  dp = (in%maxDepthHE_)+1;
1277  ip = (in - dp + 1)%(maxDepthHE_*maxPhiHE_);
1278  ip = (ip/maxDepthHE_) + 1;
1279  ie = (in - dp + 1 - maxDepthHE_*(ip-1))/(maxPhiHE_*maxDepthHE_);
1280  if (ie >= nEtaHE_) {ie = lastHERing()+nEtaHE_ - ie; iz = -1;}
1281  else {ie = firstHERing() + ie; iz = 1;}
1282  } else {
1283  sd = HcalBarrel ;
1284  dp = (in%maxDepthHB_)+1;
1285  ip = (in - dp + 1)%(maxDepthHB_*IPHI_MAX);
1286  ip = (ip/maxDepthHB_) + 1;
1287  ie = (in - dp + 1 - maxDepthHB_*(ip-1))/(IPHI_MAX*maxDepthHB_);
1288  if (ie >= nEtaHB_) {ie = lastHBRing()+nEtaHB_ - ie; iz = -1;}
1289  else {ie = firstHBRing() + ie; iz = 1;}
1290  }
1291  }
1292  }
1293  HcalDetId hid(sd, iz*int(ie), ip, dp);
1294 #ifdef EDM_ML_DEBUG
1295  std::cout << "Dens2Det " << topoVersion_ << " i/p " << std::hex << denseid
1296  << " : " << hid.rawId() << std::dec << " | " << hid << std::endl;
1297 #endif
1298  return hid;
1299 }
int firstHBRing() const
Definition: HcalTopology.h:87
unsigned int HESize_
Definition: HcalTopology.h:215
int lastHBRing() const
Definition: HcalTopology.h:88
HcalSubdetector
Definition: HcalAssistant.h:31
unsigned int HBSize_
Definition: HcalTopology.h:214
unsigned int HOSize_
Definition: HcalTopology.h:216
double sd
int firstHERing() const
Definition: HcalTopology.h:89
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
int lastHERing() const
Definition: HcalTopology.h:90
static const int IPHI_MAX
Definition: HcalTopology.cc:15
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 662 of file HcalTopology.cc.

References MessageLogger_cfi::cerr, firstHERing(), firstHETripleDepthRing(), HcalDDDRecConstants::getDepthEta16(), HcalDDDRecConstants::getMaxDepth(), HcalDDDRecConstants::getMinDepth(), HcalTopologyMode::H2HE, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcons_, lastHBRing(), lastHERing(), maxDepthHF_, mode_, and HcalTopologyMode::SLHC.

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

664  {
665 
666  if(subdet == HcalBarrel) {
668  startingBin = hcons_->getMinDepth(0,etaRing,iphi,zside);
669  if (etaRing==lastHBRing()) {
670  nDepthBins = hcons_->getDepthEta16(1,iphi,zside)-startingBin+1;
671  } else {
672  nDepthBins = hcons_->getMaxDepth(0,etaRing,iphi,zside)-startingBin+1;
673  }
674  } else {
675  if (etaRing<=14) {
676  nDepthBins = 1;
677  startingBin = 1;
678  } else {
679  nDepthBins = 2;
680  startingBin = 1;
681  }
682  }
683  } else if(subdet == HcalEndcap) {
685  if (etaRing==firstHERing()) {
686  startingBin = hcons_->getDepthEta16(2,iphi,zside);
687  } else {
688  startingBin = hcons_->getMinDepth(1,etaRing,iphi,zside);
689  }
690  nDepthBins = hcons_->getMaxDepth(1,etaRing,iphi,zside)-startingBin+1;
691  } else {
692  if (etaRing==firstHERing()) {
693  nDepthBins = 1;
694  startingBin = 3;
695  } else if (etaRing==17) {
696  nDepthBins = 1;
697  startingBin = 1;
698  } else if (etaRing==lastHERing()) {
699  nDepthBins = 2;
700  startingBin = 1;
701  } else {
702  nDepthBins = (etaRing >= firstHETripleDepthRing()) ? 3 : 2;
703  startingBin = 1;
704  }
705  }
706  } else if(subdet == HcalForward) {
707  nDepthBins = maxDepthHF_;
708  startingBin = 1;
709  } else if(subdet == HcalOuter) {
710  nDepthBins = 1;
711  startingBin = 4;
712  } else {
713  std::cerr << "Bad HCAL subdetector " << subdet << std::endl;
714  }
715 }
int lastHBRing() const
Definition: HcalTopology.h:88
int zside(DetId const &)
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:196
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
int firstHETripleDepthRing() const
Definition: HcalTopology.h:99
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
int getMaxDepth(const int &type) const
int firstHERing() const
Definition: HcalTopology.h:89
int lastHERing() const
Definition: HcalTopology.h:90
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
unsigned int HcalTopology::detId2denseId ( const DetId id) const
overridevirtual

return a linear packed id

Reimplemented from CaloSubdetectorTopology.

Definition at line 1157 of file HcalTopology.cc.

References gather_cfg::cout, 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 HcalGeometry::getGeometry(), HcalGeometry::getGeometryBase(), HcalGeometry::indexFor(), HcalDDDGeometry::newCellImpl(), HcalGeometry::newCellImpl(), CaloGeometryDBEP< T, U >::produceAligned(), and producerTag().

1157  {
1158  unsigned int retval(0);
1159  if (topoVersion_==0) { // pre-LS1
1160  retval = detId2denseIdPreLS1(id);
1161  } else if (topoVersion_==10) {
1162  HcalDetId hid(id);
1163  if (hid.subdet()==HcalBarrel) {
1164  retval = (hid.depth()-1)+maxDepthHB_*(hid.iphi()-1);
1165  if (hid.ieta()>0) retval+=maxDepthHB_*IPHI_MAX*(hid.ieta()-firstHBRing());
1166  else retval+=maxDepthHB_*IPHI_MAX*(hid.ieta()+lastHBRing()+nEtaHB_);
1167  } else if (hid.subdet()==HcalEndcap) {
1168  retval = HBSize_;
1169  retval+= (hid.depth()-1)+maxDepthHE_*(hid.iphi()-1);
1170  if (hid.ieta()>0) retval+=maxDepthHE_*maxPhiHE_*(hid.ieta()-firstHERing());
1171  else retval+=maxDepthHE_*maxPhiHE_*(hid.ieta()+lastHERing()+nEtaHE_);
1172  } else if (hid.subdet()==HcalOuter) {
1173  retval = HBSize_+HESize_;
1174  if (hid.ieta()>0) retval+=(hid.iphi()-1)+IPHI_MAX*(hid.ieta()-1);
1175  else retval+=(hid.iphi()-1)+IPHI_MAX*(30+hid.ieta());
1176  } else if (hid.subdet()==HcalForward) {
1177  retval = HBSize_+HESize_+HOSize_;
1178  retval+= (hid.depth()-1)+maxDepthHF_*(hid.iphi()-1);
1179  if (hid.ieta()>0) retval+=maxDepthHF_*IPHI_MAX*(hid.ieta()-29);
1180  else retval+=maxDepthHF_*IPHI_MAX*((41+13)+hid.ieta());
1181  } else {
1182  return 0xFFFFFFFu;
1183  }
1184  }
1185 #ifdef EDM_ML_DEBUG
1186  std::cout << "DetId2Dense " << topoVersion_ << " ID " << std::hex
1187  << id.rawId() << std::dec << " | " << HcalDetId(id) << " : "
1188  << std::hex << retval << std::dec << std::endl;
1189 #endif
1190  return retval;
1191 }
unsigned int detId2denseIdPreLS1(const DetId &id) const
int firstHBRing() const
Definition: HcalTopology.h:87
unsigned int HESize_
Definition: HcalTopology.h:215
int lastHBRing() const
Definition: HcalTopology.h:88
unsigned int HBSize_
Definition: HcalTopology.h:214
unsigned int HOSize_
Definition: HcalTopology.h:216
int firstHERing() const
Definition: HcalTopology.h:89
int lastHERing() const
Definition: HcalTopology.h:90
static const int IPHI_MAX
Definition: HcalTopology.cc:15
unsigned int HcalTopology::detId2denseIdCALIB ( const DetId id) const

return a linear packed id from CALIB

Definition at line 1099 of file HcalTopology.cc.

References funct::abs(), HcalCalibDetId::calibFlavor(), HcalCalibDetId::CalibrationBox, HcalCalibDetId::cboxChannel(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalCalibDetId::hcalSubdet(), HcalCalibDetId::HOCrosstalk, HcalCalibDetId::ieta(), HcalCalibDetId::iphi(), HcalCalibDetId::zside(), and ecaldqm::zside().

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

1099  {
1100  HcalCalibDetId tid(id);
1101  int channel = tid.cboxChannel();
1102  int ieta = tid.ieta();
1103  int iphi = tid.iphi();
1104  int zside = tid.zside();
1105  unsigned int index=0xFFFFFFFFu;
1106 
1107  if (tid.calibFlavor()==HcalCalibDetId::CalibrationBox) {
1108 
1109  HcalSubdetector subDet = tid.hcalSubdet();
1110 
1111  if (subDet==HcalBarrel) {
1112  //std::cout<<"CALIB_HB: ";
1113  //dphi = 4 (18 phi values), 3 channel types (0,1,2), eta = -1 or 1
1114  //total of 18*3*2=108 channels
1115  index = ((iphi+1)/4-1) + 18*channel + 27*(ieta+1);
1116  } else if (subDet==HcalEndcap) {
1117  //std::cout<<"CALIB_HE: ";
1118  //dphi = 4 (18 phi values), 6 channel types (0,1,3,4,5,6), eta = -1 or 1
1119  //total of 18*6*2=216 channels
1120  if (channel>2) channel-=1;
1121  index = ((iphi+1)/4-1) + 18*channel + 54*(ieta+1) + 108;
1122  } else if (subDet==HcalForward) {
1123  //std::cout<<"CALIB_HF: ";
1124  //dphi = 18 (4 phi values), 3 channel types (0,1,8), eta = -1 or 1
1125  if (channel==8) channel = 2;
1126  //total channels 4*3*2=24
1127  index = (iphi-1)/18 + 4*channel + 6*(ieta+1) + 324;
1128  } else if (subDet==HcalOuter) {
1129  //std::cout<<"CALIB_HO: ";
1130  //there are 5 special calib crosstalk channels, one in each ring
1131  if (channel==7) {
1132  index = (ieta+2) + 420;
1133  //for HOM/HOP dphi = 6 (12 phi values), 2 channel types (0,1), eta = -2,-1 or 1,2
1134  //for HO0/YB0 dphi = 12 (6 phi values), 2 channel types (0,1), eta = 0
1135  } else{
1136  if (ieta<0) index = ((iphi+1)/12-1) + 36*channel + 6*(ieta+2) + 348;
1137  else if (ieta>0) index = ((iphi+1)/12-1) + 36*channel + 6*(ieta+2) + 6 + 348;
1138  else index = ((iphi+1)/6-1) + 36*channel + 6*(ieta+2) + 348;
1139  }
1140  } else {
1141  edm::LogWarning("CaloTopology") << "HCAL Det Id not valid!";
1142  index = 0;
1143  }
1144 
1145  } else if (tid.calibFlavor()==HcalCalibDetId::HOCrosstalk) {
1146  //std::cout<<"HX: ";
1147  //for YB0/HO0 phi is grouped in 6 groups of 6 with dphi=2 but the transitions are 1 or 3
1148  // in such a way that the %36 operation yeilds unique values for every iphi
1149  if (abs(ieta)==4) index = ((iphi-1)%36) + (((zside+1)*36)/2) + 72 + 425; //ieta = 1 YB0/HO0;
1150  else index = (iphi-1) + (36*(zside+1)*2) + 425; //ieta = 0 for HO2M/HO1M ieta=2 for HO1P/HO2P;
1151  }
1152  //std::cout << " " << ieta << " " << zside << " " << iphi << " " << depth << " " << index << std::endl;
1153  return index;
1154 }
int zside(DetId const &)
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
unsigned int HcalTopology::detId2denseIdHB ( const DetId id) const

return a linear packed id from HB

Definition at line 1004 of file HcalTopology.cc.

References HcalDetId::depth(), 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(), HcalCondObjectContainerBase::indexFor(), and maxDepthHE().

1004  {
1005  HcalDetId hid(id);
1006  const int ip (hid.iphi() ) ;
1007  const int ie (hid.ietaAbs() ) ;
1008  const int dp (hid.depth() ) ;
1009  const int zn (hid.zside() < 0 ? 1 : 0 ) ;
1010  unsigned int retval = 0xFFFFFFFFu;
1011  if (topoVersion_==0) {
1012  retval=( ip - 1 )*18 + dp - 1 + ie - ( ie<16 ? 1 : 0 ) + zn*kHBhalf;
1013  } else if (topoVersion_==10) {
1014  retval=(dp-1)+maxDepthHB_*(ip-1);
1015  if (hid.ieta()>0) retval+=maxDepthHB_*IPHI_MAX*(hid.ieta()-firstHBRing());
1016  else retval+=maxDepthHB_*IPHI_MAX*(hid.ieta()+lastHBRing()+nEtaHB_);
1017  }
1018  return retval;
1019 }
int firstHBRing() const
Definition: HcalTopology.h:87
int lastHBRing() const
Definition: HcalTopology.h:88
static const int IPHI_MAX
Definition: HcalTopology.cc:15
unsigned int HcalTopology::detId2denseIdHE ( const DetId id) const

return a linear packed id from HE

Definition at line 1021 of file HcalTopology.cc.

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

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

1021  {
1022  HcalDetId hid(id);
1023  const int ip (hid.iphi() ) ;
1024  const int ie (hid.ietaAbs() ) ;
1025  const int dp (hid.depth() ) ;
1026  const int zn (hid.zside() < 0 ? 1 : 0 ) ;
1027  unsigned int retval = 0xFFFFFFFFu;
1028  if (topoVersion_==0) {
1029  retval=( ip - 1 )*8 + ( ip/2 )*20 +
1030  ( ( ie==16 || ie==17 ) ? ie - 16 :
1031  ( ( ie>=18 && ie<=20 ) ? 2 + 2*( ie - 18 ) + dp - 1 :
1032  ( ( ie>=21 && ie<=26 ) ? 8 + 2*( ie - 21 ) + dp - 1 :
1033  ( ( ie>=27 && ie<=28 ) ? 20 + 3*( ie - 27 ) + dp - 1 :
1034  26 + 2*( ie - 29 ) + dp - 1 ) ) ) ) + zn*kHEhalf;
1035  } else if (topoVersion_==10) {
1036  retval=(dp-1)+maxDepthHE_*(ip-1);
1037  if (hid.ieta()>0) retval+=maxDepthHE_*maxPhiHE_*(hid.ieta()-firstHERing());
1038  else retval+=maxDepthHE_*maxPhiHE_*(hid.ieta()+lastHERing()+nEtaHE_);
1039  }
1040  return retval;
1041 }
int firstHERing() const
Definition: HcalTopology.h:89
int lastHERing() const
Definition: HcalTopology.h:90
unsigned int HcalTopology::detId2denseIdHF ( const DetId id) const

return a linear packed id from HF

Definition at line 1059 of file HcalTopology.cc.

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

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

1059  {
1060  HcalDetId hid(id);
1061  const int ip (hid.iphi() ) ;
1062  const int ie (hid.ietaAbs() ) ;
1063  const int dp (hid.depth() ) ;
1064  const int zn (hid.zside() < 0 ? 1 : 0 ) ;
1065 
1066  unsigned int retval = 0xFFFFFFFFu;
1067  if (topoVersion_==0) {
1068  retval = ( ( ip - 1 )/4 )*4 + ( ( ip - 1 )/2 )*22 +
1069  2*( ie - 29 ) + ( dp - 1 ) + zn*kHFhalf;
1070  } else if (topoVersion_==10) {
1071  retval=dp-1+2*(ip-1);
1072  if (hid.ieta()>0) retval+=maxDepthHF_*IPHI_MAX*(hid.ieta()-29);
1073  else retval+=maxDepthHF_*IPHI_MAX*((41+13)+hid.ieta());
1074  }
1075  return retval;
1076 }
static const int IPHI_MAX
Definition: HcalTopology.cc:15
unsigned int HcalTopology::detId2denseIdHO ( const DetId id) const

return a linear packed id from HO

Definition at line 1043 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(), HcalCondObjectContainerBase::indexFor(), and maxDepthHE().

1043  {
1044  HcalDetId hid(id);
1045  const int ip (hid.iphi() ) ;
1046  const int ie (hid.ietaAbs() ) ;
1047  const int zn (hid.zside() < 0 ? 1 : 0 ) ;
1048 
1049  unsigned int retval = 0xFFFFFFFFu;
1050  if (topoVersion_==0) {
1051  retval=( ip - 1 )*15 + ( ie - 1 ) + zn*kHOhalf;
1052  } else if (topoVersion_==10) {
1053  if (hid.ieta()>0) retval=(ip-1)+IPHI_MAX*(hid.ieta()-1);
1054  else retval=(ip-1)+IPHI_MAX*(30+hid.ieta());
1055  }
1056  return retval;
1057 }
static const int IPHI_MAX
Definition: HcalTopology.cc:15
unsigned int HcalTopology::detId2denseIdHT ( const DetId id) const

return a linear packed id from HT

Definition at line 1078 of file HcalTopology.cc.

References HcalTrigTowerDetId::ietaAbs(), HcalTrigTowerDetId::iphi(), kHThalf, kHTSizePhase1, kHTSizePreLS1, HcalTrigTowerDetId::version(), HcalTrigTowerDetId::zside(), and ecaldqm::zside().

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

1078  {
1079  HcalTrigTowerDetId tid(id);
1080  int zside = tid.zside();
1081  unsigned int ietaAbs = tid.ietaAbs();
1082  unsigned int iphi = tid.iphi();
1083  unsigned int ivers = tid.version();
1084 
1085  unsigned int index;
1086  if (ivers == 0) {
1087  if ((iphi-1)%4==0) index = (iphi-1)*32 + (ietaAbs-1) - (12*((iphi-1)/4));
1088  else index = (iphi-1)*28 + (ietaAbs-1) + (4*(((iphi-1)/4)+1));
1089  if (zside == -1) index += kHThalf;
1090  } else {
1091  index = kHTSizePreLS1;
1092  if (zside == -1) index += ((kHTSizePhase1-kHTSizePreLS1)/2);
1093  index += (36 * (ietaAbs - 30) + ((iphi - 1)/2));
1094  }
1095 
1096  return index;
1097 }
int zside(DetId const &)
unsigned int HcalTopology::detId2denseIdPreLS1 ( const DetId id) const
private

Definition at line 977 of file HcalTopology.cc.

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

Referenced by detId2denseId(), and idBack().

977  {
978 
979  HcalDetId hid(id);
980  const HcalSubdetector sd (hid.subdet() ) ;
981  const int ip (hid.iphi() ) ;
982  const int ie (hid.ietaAbs() ) ;
983  const int dp (hid.depth() ) ;
984  const int zn (hid.zside() < 0 ? 1 : 0 ) ;
985  unsigned int retval = ( ( sd == HcalBarrel ) ?
986  ( ip - 1 )*18 + dp - 1 + ie - ( ie<16 ? 1 : 0 ) + zn*kHBhalf :
987  ( ( sd == HcalEndcap ) ?
988  2*kHBhalf + ( ip - 1 )*8 + ( ip/2 )*20 +
989  ( ( ie==16 || ie==17 ) ? ie - 16 :
990  ( ( ie>=18 && ie<=20 ) ? 2 + 2*( ie - 18 ) + dp - 1 :
991  ( ( ie>=21 && ie<=26 ) ? 8 + 2*( ie - 21 ) + dp - 1 :
992  ( ( ie>=27 && ie<=28 ) ? 20 + 3*( ie - 27 ) + dp - 1 :
993  26 + 2*( ie - 29 ) + dp - 1 ) ) ) ) + zn*kHEhalf :
994  ( ( sd == HcalOuter ) ?
995  2*kHBhalf + 2*kHEhalf + ( ip - 1 )*15 + ( ie - 1 ) + zn*kHOhalf :
996  ( ( sd == HcalForward ) ?
997  2*kHBhalf + 2*kHEhalf + 2*kHOhalf +
998  ( ( ip - 1 )/4 )*4 + ( ( ip - 1 )/2 )*22 +
999  2*( ie - 29 ) + ( dp - 1 ) + zn*kHFhalf : 0xFFFFFFFFu ) ) ) ) ;
1000  return retval;
1001 }
HcalSubdetector
Definition: HcalAssistant.h:31
double sd
int HcalTopology::doublePhiBins ( ) const
inline

Definition at line 101 of file HcalTopology.h.

References depthBinInformation(), doublePhiBins_, etaRing(), and ecaldqm::zside().

101 {return doublePhiBins_;}
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 332 of file HcalTopology.cc.

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

Referenced by producerTag().

332  {
333  HcalDetId neighbor = id;
334  std::vector<DetId> vNeighborsDetId;
335  if (decrementDepth(neighbor)) {
336  if (neighbor.oldFormat()) neighbor.changeForm();
337  vNeighborsDetId.emplace_back(neighbor);
338  }
339  return vNeighborsDetId;
340 }
bool decrementDepth(HcalDetId &id) const
bool oldFormat() const
Definition: HcalDetId.h:147
void changeForm()
Definition: HcalDetId.h:195
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 282 of file HcalTopology.cc.

References decIEta(), and mps_fire::i.

Referenced by spr::newHCALIdEW(), and producerTag().

282  {
283  std::vector<DetId> vNeighborsDetId;
284  HcalDetId neighbors[2];
285  for (int i=0;i<decIEta(HcalDetId(id),neighbors);i++) {
286  if (neighbors[i].oldFormat()) neighbors[i].changeForm();
287  vNeighborsDetId.emplace_back(DetId(neighbors[i].rawId()));
288  }
289  return vNeighborsDetId;
290 }
int decIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
Definition: DetId.h:18
double HcalTopology::etaMax ( HcalSubdetector  subdet) const

Definition at line 941 of file HcalTopology.cc.

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

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

941  {
942  double eta(0);
943  switch (subdet) {
944  case(HcalBarrel):
945  if (lastHBRing_ < (int)(etaTable.size())) eta=etaTable[lastHBRing_];
946  break;
947  case(HcalEndcap):
948  if (lastHERing_ < (int)(etaTable.size()) && nEtaHE_ > 0) eta=etaTable[lastHERing_];
949  break;
950  case(HcalOuter):
951  if (lastHORing_ < (int)(etaTable.size())) eta=etaTable[lastHORing_];
952  break;
953  case(HcalForward):
954  if (!etaTableHF.empty()) eta=etaTableHF[etaTableHF.size()-1];
955  break;
956  default: eta=0;
957  }
958  return eta;
959 }
std::vector< double > etaTableHF
Definition: HcalTopology.h:222
std::vector< double > etaTable
Definition: HcalTopology.h:222
std::pair< double, double > HcalTopology::etaRange ( HcalSubdetector  subdet,
int  ieta 
) const

Definition at line 960 of file HcalTopology.cc.

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

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

961  {
962  int ieta = (keta > 0) ? keta : -keta;
963  if (subdet == HcalForward) {
964  if (ieta >= firstHFRing_) {
965  unsigned int ii = (unsigned int)(ieta-firstHFRing_);
966  if (ii+1 < etaTableHF.size())
967  return std::pair<double,double>(etaTableHF[ii],etaTableHF[ii+1]);
968  }
969  } else {
970  int ietal = (mode_==HcalTopologyMode::LHC && ieta == lastHERing_-1) ? (ieta+1) : ieta;
971  if ((ietal < (int)(etaTable.size())) && (ieta > 0))
972  return std::pair<double,double>(etaTable[ieta-1],etaTable[ietal]);
973  }
974  return std::pair<double,double>(0,0);
975 }
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:196
std::vector< double > etaTableHF
Definition: HcalTopology.h:222
std::vector< double > etaTable
Definition: HcalTopology.h:222
ii
Definition: cuy.py:590
int HcalTopology::etaRing ( HcalSubdetector  subdet,
double  eta 
) const

eta and phi index from eta, phi values

Definition at line 839 of file HcalTopology.cc.

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

Referenced by decrementDepth(), doublePhiBins(), HcalGeometry::etaRing(), incrementDepth(), and mergedDepthList29().

839  {
840  int etaring = firstHBRing_;
841  if (bc == HcalForward) {
842  etaring = firstHFRing_;
843  for (unsigned int k=0; k<etaTableHF.size()-1; ++k) {
844  if (abseta < etaTableHF[k+1]) {
845  etaring += k;
846  break;
847  }
848  }
849  } else {
850  for (unsigned int k=0; k<etaTable.size()-1; ++k) {
851  if (abseta < etaTable[k+1]) {
852  etaring += k;
853  break;
854  }
855  }
856  if (abseta >= etaTable[etaTable.size()-1]) etaring = lastHERing_;
857  }
858  return etaring;
859 }
std::vector< double > etaTableHF
Definition: HcalTopology.h:222
std::vector< double > etaTable
Definition: HcalTopology.h:222
int k[5][pyjets_maxn]
void HcalTopology::exclude ( const HcalDetId id)

Add a cell to exclusion list

Definition at line 265 of file HcalTopology.cc.

References exclusionList_, mps_fire::i, and triggerObjects_cff::id.

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

265  {
266  std::vector<HcalDetId>::iterator i=std::lower_bound(exclusionList_.begin(),exclusionList_.end(),id);
267  if (i==exclusionList_.end() || *i!=id) {
268  exclusionList_.insert(i,id);
269  }
270 }
std::vector< HcalDetId > exclusionList_
Definition: HcalTopology.h:193
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 342 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, exclude(), excludeHB_, excludeHE_, excludeHF_, excludeHO_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, triggerObjects_cff::id, SiStripPI::max, min(), gen::n, and validRaw().

342  {
343 
344  bool exed=false;
345  // first, check the full detector exclusions... (fast)
346  switch (subdet) {
347  case(HcalBarrel): exed=excludeHB_; break;
348  case(HcalEndcap): exed=excludeHE_; break;
349  case(HcalOuter): exed=excludeHO_; break;
350  case(HcalForward): exed=excludeHF_; break;
351  default: exed=false;
352  }
353  if (exed) return 0; // if the whole detector is excluded...
354 
355  int ieta_l=std::min(ieta1,ieta2);
356  int ieta_h=std::max(ieta1,ieta2);
357  int iphi_l=std::min(iphi1,iphi2);
358  int iphi_h=std::max(iphi1,iphi2);
359  int depth_l=std::min(depth1,depth2);
360  int depth_h=std::max(depth1,depth2);
361 
362  int n=0;
363  for (int ieta=ieta_l; ieta<=ieta_h; ieta++)
364  for (int iphi=iphi_l; iphi<=iphi_h; iphi++)
365  for (int depth=depth_l; depth<=depth_h; depth++) {
366  HcalDetId id(subdet,ieta,iphi,depth);
367  if (validRaw(id)) { // use 'validRaw' to include check validity in "uncut" detector
368  exclude(id);
369  n++;
370  }
371  }
372  return n;
373 }
void exclude(const HcalDetId &id)
bool validRaw(const HcalDetId &id) const
T min(T a, T b)
Definition: MathUtil.h:58
void HcalTopology::excludeSubdetector ( HcalSubdetector  subdet)

Exclude an entire subdetector

Definition at line 272 of file HcalTopology.cc.

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

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

272  {
273  switch (subdet) {
274  case(HcalBarrel): excludeHB_=true; break;
275  case(HcalEndcap): excludeHE_=true; break;
276  case(HcalOuter): excludeHO_=true; break;
277  case(HcalForward): excludeHF_=true; break;
278  default: break;
279  }
280 }
int HcalTopology::firstHBRing ( ) const
inline
int HcalTopology::firstHEDoublePhiRing ( ) const
inline
int HcalTopology::firstHEQuadPhiRing ( ) const
inline
int HcalTopology::firstHERing ( ) const
inline
int HcalTopology::firstHETripleDepthRing ( ) const
inline
int HcalTopology::firstHFQuadPhiRing ( ) const
inline
int HcalTopology::firstHFRing ( ) const
inline
int HcalTopology::firstHORing ( ) const
inline

Definition at line 93 of file HcalTopology.h.

References firstHORing_.

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

93 {return firstHORing_;}
unsigned int HcalTopology::getCALIBSize ( ) const
inline

Definition at line 143 of file HcalTopology.h.

References CALIBSize_.

Referenced by HcalCondObjectContainerBase::sizeFor().

143 {return CALIBSize_;}
unsigned int CALIBSize_
Definition: HcalTopology.h:219
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 899 of file HcalTopology.cc.

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

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

901  {
902  // if it doesn't exist, return the first entry with a lower index. So if we only
903  // have entries for 1 and 17, any input from 1-16 should return the entry for ring 1
904  SegmentationMap::const_iterator pos;
905  if (!one) {
906  pos = depthSegmentation_.upper_bound(ring);
907  if (pos == depthSegmentation_.begin()) {
908  throw cms::Exception("HcalTopology") << "No depth segmentation found for ring" << ring;
909  }
910  } else {
911  pos = depthSegmentationOne_.upper_bound(ring);
912  if (pos == depthSegmentationOne_.begin()) {
913  throw cms::Exception("HcalTopology") << "No depth segmentation found for ring" << ring;
914  }
915  }
916  --pos;
917  // pos now refers to the last element with key <= ring.
918  readoutDepths = pos->second;
919 }
SegmentationMap depthSegmentation_
Definition: HcalTopology.h:230
SegmentationMap depthSegmentationOne_
Definition: HcalTopology.h:231
unsigned int HcalTopology::getHBSize ( ) const
inline

Definition at line 138 of file HcalTopology.h.

References HBSize_.

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

138 {return HBSize_;}
unsigned int HBSize_
Definition: HcalTopology.h:214
unsigned int HcalTopology::getHESize ( ) const
inline

Definition at line 139 of file HcalTopology.h.

References HESize_.

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

139 {return HESize_;}
unsigned int HESize_
Definition: HcalTopology.h:215
unsigned int HcalTopology::getHFSize ( ) const
inline
unsigned int HcalTopology::getHOSize ( ) const
inline

Definition at line 140 of file HcalTopology.h.

References HOSize_.

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

140 {return HOSize_;}
unsigned int HOSize_
Definition: HcalTopology.h:216
unsigned int HcalTopology::getHTSize ( ) const
inline

Definition at line 142 of file HcalTopology.h.

References HTSize_.

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

142 {return HTSize_;}
unsigned int HTSize_
Definition: HcalTopology.h:218
bool HcalTopology::getMergePositionFlag ( ) const
inline
unsigned int HcalTopology::getNumberOfShapes ( ) const
inline

Definition at line 164 of file HcalTopology.h.

References numberOfShapes_.

Referenced by HcalGeometry::numberOfShapes(), and CaloGeometryDBEP< T, U >::produceAligned().

164 { return numberOfShapes_; }
unsigned int numberOfShapes_
Definition: HcalTopology.h:220
int HcalTopology::getPhiZOne ( std::vector< std::pair< int, int > > &  phiz) const
inline

Definition at line 136 of file HcalTopology.h.

References HcalDDDRecConstants::getPhiZOne(), and hcons_.

136 {return hcons_->getPhiZOne(phiz);}
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
int getPhiZOne(std::vector< std::pair< int, int > > &phiz) const
HcalDetId HcalTopology::idBack ( const HcalDetId id) const
inline
HcalDetId HcalTopology::idFront ( const HcalDetId id) const
inline
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 599 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, etaHE2HF_, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHFQuadPhiRing(), HcalEndcap, HcalForward, lastHBRing(), lastHERing(), gen::n, valid(), and ecaldqm::zside().

Referenced by decIEta(), idBack(), and incIEta().

599  {
600  int n=1;
601  int aieta=id.ietaAbs();
602 
603  if (aieta==firstHEDoublePhiRing()-1 && (id.iphi()%2)==0)
604  neighbors[0]=HcalDetId(id.subdet(),(aieta+1)*id.zside(),id.iphi()-1,id.depth());
605  else if (aieta==firstHFQuadPhiRing()-1 && ((id.iphi()+1)%4)!=0)
606  neighbors[0]=HcalDetId(id.subdet(),(aieta+1)*id.zside(),((id.iphi()==1)?(71):(id.iphi()-2)),id.depth());
607  else if (aieta==firstHEQuadPhiRing()-1 && ((id.iphi()+1)%4)!=0)
608  neighbors[0]=HcalDetId(id.subdet(),(aieta+1)*id.zside(),((id.iphi()==1)?(71):(id.iphi()-2)),id.depth());
609  else if (aieta==lastHBRing())
610  neighbors[0]=HcalDetId(HcalEndcap,(aieta+1)*id.zside(),id.iphi(),1);
611  else if (aieta==lastHERing())
612  neighbors[0]=HcalDetId(HcalForward,etaHE2HF_*id.zside(),id.iphi(),1);
613  else
614  neighbors[0]=HcalDetId(id.subdet(),(aieta+1)*id.zside(),id.iphi(),id.depth());
615 
616  if (!valid(neighbors[0])) n=0;
617  return n;
618 }
bool valid(const DetId &id) const override
int lastHBRing() const
Definition: HcalTopology.h:88
int zside(DetId const &)
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:96
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:98
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:97
int lastHERing() const
Definition: HcalTopology.h:90
int HcalTopology::incIEta ( const HcalDetId id,
HcalDetId  neighbors[2] 
) const

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

Definition at line 588 of file HcalTopology.cc.

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

Referenced by producerTag(), and west().

588  {
589  if (id.zside()==1) return incAIEta(id,neighbors);
590  else return decAIEta(id,neighbors);
591 }
int zside(DetId const &)
int decAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
int incAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
bool HcalTopology::incIPhi ( const HcalDetId id,
HcalDetId neighbor 
) const

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

Definition at line 513 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHFQuadPhiRing(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, IPHI_MAX, maxPhiHE_, convertSQLiteXML::ok, valid(), and validRaw().

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

513  {
514  bool ok=valid(id);
515  if (ok) {
516  switch (id.subdet()) {
517  case (HcalBarrel):
518  case (HcalOuter):
519  if (id.iphi()==IPHI_MAX) neighbor=HcalDetId(id.subdet(),id.ieta(),1,id.depth());
520  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()+1,id.depth());
521  break;
522  case (HcalEndcap):
523  if (id.ietaAbs()>=firstHEQuadPhiRing()) {
524  if (id.iphi()==IPHI_MAX-1) neighbor=HcalDetId(id.subdet(),id.ieta(),3,id.depth());
525  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()+4,id.depth());
526  } else if (id.ietaAbs()>=firstHEDoublePhiRing()) {
527  if (id.iphi()==IPHI_MAX-1) neighbor=HcalDetId(id.subdet(),id.ieta(),1,id.depth());
528  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()+2,id.depth());
529  } else {
530  if (id.iphi()==maxPhiHE_) neighbor=HcalDetId(id.subdet(),id.ieta(),1,id.depth());
531  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()+1,id.depth());
532  }
533  break;
534  case (HcalForward):
535  if (id.ietaAbs()>=firstHFQuadPhiRing()) {
536  if (id.iphi()==IPHI_MAX-1) neighbor=HcalDetId(id.subdet(),id.ieta(),3,id.depth());
537  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()+4,id.depth());
538  } else {
539  if (id.iphi()==IPHI_MAX-1) neighbor=HcalDetId(id.subdet(),id.ieta(),1,id.depth());
540  else neighbor=HcalDetId(id.subdet(),id.ieta(),id.iphi()+2,id.depth());
541  }
542  if (!validRaw(neighbor)) ok = false;
543  break;
544  default: ok=false;
545  }
546  }
547  return ok;
548 }
bool valid(const DetId &id) const override
bool validRaw(const HcalDetId &id) const
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:96
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:98
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:97
static const int IPHI_MAX
Definition: HcalTopology.cc:15
bool HcalTopology::incrementDepth ( HcalDetId id) const

Get the detector behind this one

Definition at line 717 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, HcalDetId::depth(), depthBinInformation(), etaRing(), HcalDDDRecConstants::getDepthEta16(), HcalTopologyMode::H2HE, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcons_, HcalDetId::ieta(), HcalDetId::ietaAbs(), HcalDetId::iphi(), lastHBRing(), lastHERing(), lastHORing(), mode_, HcalTopologyMode::SLHC, HcalDetId::subdet(), validRaw(), HcalDetId::zside(), and ecaldqm::zside().

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

717  {
718 
719  HcalSubdetector subdet = detId.subdet();
720  int ieta = detId.ieta();
721  int etaRing = detId.ietaAbs();
722  int depth = detId.depth();
723  int iphi = detId.iphi();
724  int zside = detId.zside();
725  int nDepthBins(0), startingBin(0);
726  depthBinInformation(subdet, etaRing, iphi, zside, nDepthBins, startingBin);
727 
728  // see if the new depth bin exists
729  ++depth;
730  if (depth >= (startingBin+nDepthBins)) {
731  // handle on a case-by-case basis
732  if (subdet == HcalBarrel && etaRing < lastHORing()) {
733  // HO
734  subdet = HcalOuter;
735  depth = 4;
736  } else if (subdet == HcalBarrel && etaRing == lastHBRing()) {
737  // overlap
738  subdet = HcalEndcap;
740  depth = hcons_->getDepthEta16(2,iphi,zside);
741  } else if (subdet == HcalEndcap && etaRing == lastHERing()-1 &&
743  // guard ring HF29 is behind HE 28
744  subdet = HcalForward;
745  (ieta > 0) ? ++ieta : --ieta;
746  depth = 1;
747  } else if (subdet == HcalEndcap && etaRing == lastHERing() &&
749  // split cells go to bigger granularity. Ring 29 -> 28
750  (ieta > 0) ? --ieta : ++ieta;
751  } else {
752  // no more chances
753  detId = HcalDetId();
754  return false;
755  }
756  }
757  detId = HcalDetId(subdet, ieta, iphi, depth);
758  return validRaw(detId);
759 }
int lastHBRing() const
Definition: HcalTopology.h:88
int zside(DetId const &)
void depthBinInformation(HcalSubdetector subdet, int etaRing, int iphi, int zside, int &nDepthBins, int &startingBin) const
finds the number of depth bins and which is the number to start with
bool validRaw(const HcalDetId &id) const
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:196
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
HcalSubdetector
Definition: HcalAssistant.h:31
int lastHORing() const
Definition: HcalTopology.h:94
int lastHERing() const
Definition: HcalTopology.h:90
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
bool HcalTopology::isBH ( ) const
inline

Definition at line 165 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::isBH().

Referenced by CaloTowerTopology::CaloTowerTopology().

165 { return ((hcons_ == nullptr) ? false : hcons_->isBH()); }
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
bool HcalTopology::isExcluded ( const HcalDetId id) const
private

Definition at line 247 of file HcalTopology.cc.

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

Referenced by idBack(), and validHcal().

247  {
248  bool exed=false;
249  // first, check the full detector exclusions... (fast)
250  switch (id.subdet()) {
251  case(HcalBarrel): exed=excludeHB_; break;
252  case(HcalEndcap): exed=excludeHE_; break;
253  case(HcalOuter): exed=excludeHO_; break;
254  case(HcalForward): exed=excludeHF_; break;
255  default: exed=false;
256  }
257  // next, check the list (slower)
258  if (!exed && !exclusionList_.empty()) {
259  std::vector<HcalDetId>::const_iterator i=std::lower_bound(exclusionList_.begin(),exclusionList_.end(),id);
260  if (i!=exclusionList_.end() && *i==id) exed=true;
261  }
262  return exed;
263 }
std::vector< HcalDetId > exclusionList_
Definition: HcalTopology.h:193
int HcalTopology::lastHBRing ( ) const
inline
int HcalTopology::lastHERing ( ) const
inline
int HcalTopology::lastHFRing ( ) const
inline
int HcalTopology::lastHORing ( ) const
inline
int HcalTopology::maxDepth ( HcalSubdetector  subdet) const

Definition at line 832 of file HcalTopology.cc.

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

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

832  {
833  if (bc == HcalBarrel) return maxDepthHB_;
834  else if (bc == HcalEndcap) return maxDepthHE_;
835  else if (bc == HcalForward) return maxDepthHF_;
836  else return 4;
837 }
int HcalTopology::maxDepthHB ( ) const
inline

Definition at line 145 of file HcalTopology.h.

References maxDepthHB_.

Referenced by RecAnalyzerMinbias::beginRun().

145 { return maxDepthHB_;}
int HcalTopology::maxDepthHE ( ) const
inline
bool HcalTopology::mergedDepth29 ( HcalDetId  id) const
inline
HcalDetId HcalTopology::mergedDepthDetId ( const HcalDetId id) const
inline
std::vector<int> HcalTopology::mergedDepthList29 ( HcalDetId  id) const
inline

Definition at line 110 of file HcalTopology.h.

References PVValHelper::eta, etaRing(), getDepthSegmentation(), hcons_, HcalDDDRecConstants::mergedDepthList29(), nPhiBins(), phi, phiBin(), relativeConstraints::ring, segmentBoundaries(), and setDepthSegmentation().

110  {
111  return hcons_->mergedDepthList29(id.ieta(), id.iphi());
112  }
bool mergedDepthList29(int ieta, int iphi, int depth) const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
HcalTopologyMode::Mode HcalTopology::mode ( void  ) const
inline
unsigned int HcalTopology::ncells ( ) const
overridevirtual

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

Reimplemented from CaloSubdetectorTopology.

Definition at line 1301 of file HcalTopology.cc.

References HBSize_, HESize_, HFSize_, and HOSize_.

Referenced by denseId2detId(), HcalGeometry::getSummary(), HcalHardcodeGeometryLoader::load(), HcalFlexiHardcodeGeometryLoader::load(), CaloGeometryDBEP< T, U >::produceAligned(), producerTag(), and HcalGeometry::sizeForDenseIndex().

1301  {
1302  return HBSize_+HESize_+HOSize_+HFSize_;
1303 }
unsigned int HESize_
Definition: HcalTopology.h:215
unsigned int HFSize_
Definition: HcalTopology.h:217
unsigned int HBSize_
Definition: HcalTopology.h:214
unsigned int HOSize_
Definition: HcalTopology.h:216
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 302 of file HcalTopology.cc.

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

Referenced by spr::newHCALIdNS(), and producerTag().

302  {
303  std::vector<DetId> vNeighborsDetId;
304  HcalDetId neighbor;
305  if (incIPhi(HcalDetId(id),neighbor)) {
306  if (neighbor.oldFormat()) neighbor.changeForm();
307  vNeighborsDetId.emplace_back(DetId(neighbor.rawId()));
308  }
309  return vNeighborsDetId;
310 }
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
bool incIPhi(const HcalDetId &id, HcalDetId &neighbor) const
bool oldFormat() const
Definition: HcalDetId.h:147
Definition: DetId.h:18
void changeForm()
Definition: HcalDetId.h:195
int HcalTopology::nPhiBins ( int  etaRing) const

how many phi segments in this ring

Definition at line 808 of file HcalTopology.cc.

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

Referenced by CaloTowerHardcodeGeometryLoader::makeCell(), and mergedDepthList29().

808  {
809  int lastPhiBin=singlePhiBins_;
810  if (etaRing >= firstHFQuadPhiRing() || etaRing >= firstHEQuadPhiRing()) lastPhiBin=doublePhiBins_/2;
811  else if (etaRing >= firstHEDoublePhiRing()) lastPhiBin=doublePhiBins_;
812  if (hcons_ && etaRing >= hcons_->getEtaRange(1).first &&
813  etaRing <= hcons_->getEtaRange(1).second) {
814  return nPhiBins(HcalBarrel, etaRing);
815  }
816  return lastPhiBin;
817 }
int nPhiBins(int etaRing) const
how many phi segments in this ring
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 firstHEDoublePhiRing() const
Definition: HcalTopology.h:96
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:98
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:97
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
int HcalTopology::nPhiBins ( HcalSubdetector  subdet,
int  etaRing 
) const

Definition at line 819 of file HcalTopology.cc.

References dPhiTable, dPhiTableHF, firstHBRing_, firstHFRing_, and HcalForward.

819  {
820  double phiTableVal;
821  if (bc == HcalForward) {
822  phiTableVal = dPhiTableHF[etaRing-firstHFRing_];
823  } else {
824  phiTableVal = dPhiTable[etaRing-firstHBRing_];
825  }
826  int lastPhiBin = 0;
827  if (phiTableVal != 0.0)
828  lastPhiBin = static_cast<int>((2._pi / phiTableVal) + 0.001);
829  return lastPhiBin;
830 }
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:222
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
std::vector< double > dPhiTable
Definition: HcalTopology.h:222
int HcalTopology::phiBin ( HcalSubdetector  subdet,
int  etaRing,
double  phi 
) const

Definition at line 861 of file HcalTopology.cc.

References dPhiTable, dPhiTableHF, firstHBRing_, firstHFRing_, HcalBarrel, HcalEndcap, HcalForward, phioff, csvLumiCalc::unit, unitPhi, and unitPhiHF.

Referenced by mergedDepthList29(), and HcalGeometry::phiBin().

861  {
862  //put phi in correct range (0->2pi)
863  int index(0);
864  if (bc == HcalBarrel) {
865  index = (etaring-firstHBRing_);
866  phi -= phioff[0];
867  } else if (bc == HcalEndcap) {
868  index = (etaring-firstHBRing_);
869  phi -= phioff[1];
870  } else if (bc == HcalForward) {
871  index = (etaring-firstHFRing_);
872  if (index < static_cast<int>(dPhiTableHF.size())) {
873  if (index >= 0 && unitPhiHF[index] > 2) phi -= phioff[4];
874  else phi -= phioff[2];
875  }
876  }
877  if (index < 0)
878  index = 0;
879  if (phi < 0.0) phi += 2._pi;
880  else if (phi > 2._pi) phi -= 2._pi;
881  int phibin(1), unit(1);
882  if (bc == HcalForward) {
883  if (index < (int)(dPhiTableHF.size())) {
884  unit = unitPhiHF[index];
885  phibin = static_cast<int>(phi/dPhiTableHF[index])+1;
886  }
887  } else {
888  if (index < (int)(dPhiTable.size())) {
889  phibin = static_cast<int>(phi/dPhiTable[index])+1;
890  unit = unitPhi[index];
891  }
892  }
893  int iphi(phibin);
894  if (unit == 2) iphi = (phibin-1)*2+1;
895  else if (unit == 4) iphi = (phibin-1)*4+3;
896  return iphi;
897 }
std::vector< int > unitPhiHF
Definition: HcalTopology.h:224
std::vector< double > dPhiTableHF
Definition: HcalTopology.h:222
std::vector< int > unitPhi
Definition: HcalTopology.h:224
std::vector< double > phioff
Definition: HcalTopology.h:223
std::vector< double > dPhiTable
Definition: HcalTopology.h:222
static std::string HcalTopology::producerTag ( )
inlinestatic
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 931 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, and getDepthSegmentation().

Referenced by mergedDepthList29().

933  {
934  std::vector<int> readoutDepths;
935  getDepthSegmentation(ring, readoutDepths, one);
936  int d1 = std::lower_bound(readoutDepths.begin(), readoutDepths.end(), depth) - readoutDepths.begin();
937  int d2 = std::upper_bound(readoutDepths.begin(), readoutDepths.end(), depth) - readoutDepths.begin();
938  return std::pair<int, int>(d1, d2);
939 }
void getDepthSegmentation(const unsigned ring, std::vector< int > &readoutDepths, const bool flag=false) const
void HcalTopology::setDepthSegmentation ( const unsigned  ring,
const std::vector< int > &  readoutDepths,
const bool  flag 
)

Definition at line 921 of file HcalTopology.cc.

References depthSegmentation_, depthSegmentationOne_, and relativeConstraints::ring.

Referenced by HcalTopology(), and mergedDepthList29().

923  {
924  if (one) {
925  depthSegmentationOne_[ring] = readoutDepths;
926  } else {
927  depthSegmentation_[ring] = readoutDepths;
928  }
929 }
SegmentationMap depthSegmentation_
Definition: HcalTopology.h:230
SegmentationMap depthSegmentationOne_
Definition: HcalTopology.h:231
int HcalTopology::singlePhiBins ( ) const
inline

Definition at line 100 of file HcalTopology.h.

References singlePhiBins_.

100 {return singlePhiBins_;}
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 312 of file HcalTopology.cc.

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

Referenced by spr::newHCALIdNS(), and producerTag().

312  {
313  std::vector<DetId> vNeighborsDetId;
314  HcalDetId neighbor;
315  if (decIPhi(HcalDetId(id),neighbor)) {
316  if (neighbor.oldFormat()) neighbor.changeForm();
317  vNeighborsDetId.emplace_back(DetId(neighbor.rawId()));
318  }
319  return vNeighborsDetId;
320 }
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
bool decIPhi(const HcalDetId &id, HcalDetId &neighbor) const
bool oldFormat() const
Definition: HcalDetId.h:147
Definition: DetId.h:18
void changeForm()
Definition: HcalDetId.h:195
int HcalTopology::topoVersion ( ) const
overridevirtual

return a version which identifies the given topology

Reimplemented from CaloSubdetectorTopology.

Definition at line 1305 of file HcalTopology.cc.

References topoVersion_.

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

1305  {
1306  return topoVersion_;
1307 }
HcalTopologyMode::TriggerMode HcalTopology::triggerMode ( ) const
inline
void HcalTopology::unmergeDepthDetId ( const HcalDetId id,
std::vector< HcalDetId > &  ids 
) const
inline

Definition at line 171 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::unmergeDepthDetId().

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

172  {
174  }
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
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 322 of file HcalTopology.cc.

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

Referenced by spr::matrixHCALIdsDepth(), and producerTag().

322  {
323  HcalDetId neighbor = id;
324  std::vector<DetId> vNeighborsDetId;
325  if (incrementDepth(neighbor)) {
326  if (neighbor.oldFormat()) neighbor.changeForm();
327  vNeighborsDetId.emplace_back(neighbor);
328  }
329  return vNeighborsDetId;
330 }
bool oldFormat() const
Definition: HcalDetId.h:147
bool incrementDepth(HcalDetId &id) const
void changeForm()
Definition: HcalDetId.h:195
bool HcalTopology::valid ( const DetId id) const
overridevirtual
bool HcalTopology::validDetId ( HcalSubdetector  subdet,
int  ieta,
int  iphi,
int  depth 
) const

Definition at line 202 of file HcalTopology.cc.

References validHcal().

Referenced by producerTag().

203  {
204  return validHcal(HcalDetId(subdet,ieta,iphi,depth));
205 }
bool validHcal(const HcalDetId &id) const
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 401 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, firstHERing(), firstHFQuadPhiRing(), firstHFRing(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, IPHI_MAX, lastHFRing(), and sd.

Referenced by idBack().

401  {
402  const HcalSubdetector sd (id.subdet());
403  const int ie (id.ietaAbs());
404  const int ip (id.iphi());
405  const int dp (id.depth());
406 
407  return ( ( ip >= 1 ) &&
408  ( ip <= IPHI_MAX ) &&
409  ( dp >= 1 ) &&
410  ( ie >= 1 ) &&
411  ( ( ( sd == HcalBarrel ) &&
412  ( ( ( ie <= 14 ) &&
413  ( dp == 1 ) ) ||
414  ( ( ( ie == 15 ) || ( ie == 16 ) ) &&
415  ( dp <= 2 ) ) ) ) ||
416  ( ( sd == HcalEndcap ) &&
417  ( ( ( ie == firstHERing() ) &&
418  ( dp == 3 ) ) ||
419  ( ( ie == 17 ) &&
420  ( dp == 1 ) ) ||
421  ( ( ie >= 18 ) &&
422  ( ie <= 20 ) &&
423  ( dp <= 2 ) ) ||
424  ( ( ie >= 21 ) &&
425  ( ie <= 26 ) &&
426  ( dp <= 2 ) &&
427  ( ip%2 == 1 ) ) ||
428  ( ( ie >= 27 ) &&
429  ( ie <= 28 ) &&
430  ( dp <= 3 ) &&
431  ( ip%2 == 1 ) ) ||
432  ( ( ie == 29 ) &&
433  ( dp <= 2 ) &&
434  ( ip%2 == 1 ) ) ) ) ||
435  ( ( sd == HcalOuter ) &&
436  ( ie <= 15 ) &&
437  ( dp == 4 ) ) ||
438  ( ( sd == HcalForward ) &&
439  ( dp <= 2 ) &&
440  ( ( ( ie >= firstHFRing() ) &&
441  ( ie < firstHFQuadPhiRing() ) &&
442  ( ip%2 == 1 ) ) ||
443  ( ( ie >= firstHFQuadPhiRing() ) &&
444  ( ie <= lastHFRing() ) &&
445  ( ip%4 == 3 ) ) ) ) ) ) ;
446 }
int firstHFRing() const
Definition: HcalTopology.h:91
int lastHFRing() const
Definition: HcalTopology.h:92
HcalSubdetector
Definition: HcalAssistant.h:31
double sd
int firstHERing() const
Definition: HcalTopology.h:89
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:98
static const int IPHI_MAX
Definition: HcalTopology.cc:15
bool HcalTopology::validHcal ( const HcalDetId id) const

Is this a valid cell id?

Definition at line 197 of file HcalTopology.cc.

References isExcluded(), and validRaw().

Referenced by HcalDigitizer::accumulateCaloHits(), HcalHBHEMuonAnalyzer::analyze(), CaloTowersCreationAlgo::hadShwrPos(), producerTag(), valid(), validDetId(), and validHcal().

197  {
198  // check the raw rules
199  return validRaw(id) && !isExcluded(id);
200 }
bool isExcluded(const HcalDetId &id) const
bool validRaw(const HcalDetId &id) const
bool HcalTopology::validHcal ( const HcalDetId id,
const unsigned int  flag 
) const

Is this a valid cell in context of Plan1

Definition at line 231 of file HcalTopology.cc.

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

231  {
232  /* original logic show here because condensed form below is rather terse
233  // check the raw rules
234  bool ok = validHcal(id);
235  if (flag == 0) { // This is all what is needed
236  } else if (flag == 1) { // See if it is in the to be merged list and merged list
237  if (hcons_->isPlan1MergedId(id)) ok = true;
238  else if (hcons_->isPlan1ToBeMergedId(id)) ok = false;
239  } else if (!ok) {
240  ok = hcons_->isPlan1MergedId(id);
241  }
242  return ok;
243  */
244  return (flag>0 and hcons_->isPlan1MergedId(id)) or ((flag!=1 or !hcons_->isPlan1ToBeMergedId(id)) and validHcal(id));
245 }
bool validHcal(const HcalDetId &id) const
bool isPlan1MergedId(const HcalDetId &id) const
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
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
bool HcalTopology::validHT ( const HcalTrigTowerDetId id) const

Definition at line 207 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, IPHI_MAX, triggerMode_, HcalTopologyMode::TriggerMode_2009, HcalTopologyMode::TriggerMode_2017, HcalTopologyMode::TriggerMode_2018legacy, and jets_cff::version.

Referenced by HcalLutAnalyzer::analyze(), CaloTPGTranscoderULUT::HTvalid(), CaloTPGTranscoderULUT::loadHCALCompress(), producerTag(), and validRaw().

207  {
208 
209  if (id.iphi()<1 || id.iphi()>IPHI_MAX || id.ieta()==0) return false;
210  if (id.depth() != 0) return false;
211  if (id.version()==0) {
212  if (id.ietaAbs() > 28) {
215  if ((id.iphi() % 4) != 1) return false;
216  if (id.ietaAbs() > 32) return false;
217  }
218  } else if (id.version()==1) {
220  if (id.ietaAbs()<30 || id.ietaAbs()>41) return false;
221  if (id.ietaAbs()>29 && ((id.iphi()%2)==0)) return false;
222  if (id.ietaAbs()>39 && ((id.iphi()%4)!=3)) return false;
223  } else if (id.version()>1) {
224  // only versions 0 and 1 are supported
225  return false;
226  }
227 
228  return true;
229 }
HcalTopologyMode::TriggerMode triggerMode_
Definition: HcalTopology.h:197
static const int IPHI_MAX
Definition: HcalTopology.cc:15
bool HcalTopology::validRaw ( const HcalDetId id) const
private

Is this a valid cell id?

Definition at line 449 of file HcalTopology.cc.

References egammaForCoreTracking_cff::depth, etaBinsHE_, firstHEDoublePhiRing(), firstHEQuadPhiRing(), firstHERing(), firstHETripleDepthRing(), firstHFQuadPhiRing(), firstHFRing(), HcalDDDRecConstants::getDepthEta16(), HcalDDDRecConstants::getMaxDepth(), HcalDDDRecConstants::getNoff(), HcalTopologyMode::H2, HcalTopologyMode::H2HE, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalTriggerTower, hcons_, mps_fire::i, IPHI_MAX, lastHBRing(), lastHERing(), lastHFRing(), lastHORing(), maxEta_, HcalDDDRecConstants::maxHFDepth(), trackingParticleSelector_cfi::maxPhi, maxPhiHE_, mode_, convertSQLiteXML::ok, HcalTopologyMode::SLHC, validHT(), and ecaldqm::zside().

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

449  {
450  bool ok=true;
451  int ieta=id.ieta();
452  int aieta=id.ietaAbs();
453  int depth=id.depth();
454  int iphi=id.iphi();
455  int zside=id.zside();
456  HcalSubdetector subdet=id.subdet();
457  int maxPhi = (subdet==HcalEndcap) ? maxPhiHE_ : IPHI_MAX;
458  if ((ieta==0 || iphi<=0 || iphi>maxPhi) || aieta>maxEta_) ok = false; // outer limits
459 
460  if (ok) {
461  if (subdet==HcalBarrel) {
463  if ((aieta>lastHBRing()) ||
464  (depth>hcons_->getMaxDepth(0,aieta,iphi,zside)) ||
465  (depth<hcons_->getMinDepth(0,aieta,iphi,zside))) ok=false;
466  } else {
467  if (aieta>lastHBRing() || depth>2 || (aieta<=14 && depth>1)) ok=false;
468  }
469  } else if (subdet==HcalEndcap) {
471  if ((depth>hcons_->getMaxDepth(1,aieta,iphi,zside)) ||
472  (depth<hcons_->getMinDepth(1,aieta,iphi,zside)) ||
473  (aieta<firstHERing()) || (aieta>lastHERing())) {
474  ok = false;
475  } else {
476  for (const auto & i : etaBinsHE_) {
477  if (aieta == i.ieta) {
478  if (aieta >= firstHEDoublePhiRing() && (iphi%2)==0) ok=false;
479  if (aieta >= firstHEQuadPhiRing() && (iphi%4)!=3) ok=false;
480  if (aieta+1 == hcons_->getNoff(1)) {
481  if (depth < 1) ok = false;
482  } else {
483  if (depth < i.depthStart) ok = false;
484  }
485  break;
486  }
487  }
488  }
489  } else {
490  if (depth>hcons_->getMaxDepth(1,aieta,iphi,zside) ||
491  aieta<firstHERing() || aieta>lastHERing() ||
492  (aieta==firstHERing() && depth!=hcons_->getDepthEta16(2,iphi,zside)) ||
493  (aieta==17 && depth!=1 && mode_!=HcalTopologyMode::H2) || // special case at H2
494  (((aieta>=17 && aieta<firstHETripleDepthRing()) ||
495  aieta==lastHERing()) && depth>2) ||
496  (aieta>=firstHEDoublePhiRing() && (iphi%2)==0)) ok=false;
497  }
498  } else if (subdet==HcalOuter) {
499  if (aieta>lastHORing() || iphi>IPHI_MAX || depth!=4) ok=false;
500  } else if (subdet==HcalForward) {
501  if (aieta<firstHFRing() || aieta>lastHFRing() || ((iphi%2)==0) ||
502  (depth>hcons_->maxHFDepth(ieta,iphi)) ||
503  (aieta>=firstHFQuadPhiRing() && ((iphi+1)%4)!=0)) ok=false;
504  } else if (subdet==HcalTriggerTower) {
505  ok=validHT(HcalTrigTowerDetId(id.rawId()));
506  } else {
507  ok=false;
508  }
509  }
510  return ok;
511 }
int firstHFRing() const
Definition: HcalTopology.h:91
int lastHBRing() const
Definition: HcalTopology.h:88
int zside(DetId const &)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
Definition: HcalTopology.h:204
HcalTopologyMode::Mode mode_
Definition: HcalTopology.h:196
int firstHETripleDepthRing() const
Definition: HcalTopology.h:99
int lastHFRing() const
Definition: HcalTopology.h:92
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
HcalSubdetector
Definition: HcalAssistant.h:31
int firstHEDoublePhiRing() const
Definition: HcalTopology.h:96
int getNoff(const int &i) const
int getMaxDepth(const int &type) const
int firstHERing() const
Definition: HcalTopology.h:89
int firstHFQuadPhiRing() const
Definition: HcalTopology.h:98
int firstHEQuadPhiRing() const
Definition: HcalTopology.h:97
int maxHFDepth(int ieta, int iphi) const
int lastHORing() const
Definition: HcalTopology.h:94
int lastHERing() const
Definition: HcalTopology.h:90
const HcalDDDRecConstants * hcons_
Definition: HcalTopology.h:191
static const int IPHI_MAX
Definition: HcalTopology.cc:15
bool validHT(const HcalTrigTowerDetId &id) const
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 292 of file HcalTopology.cc.

References mps_fire::i, and incIEta().

Referenced by spr::newHCALIdEW(), and producerTag().

292  {
293  std::vector<DetId> vNeighborsDetId;
294  HcalDetId neighbors[2];
295  for (int i=0;i<incIEta(HcalDetId(id),neighbors);i++) {
296  if (neighbors[i].oldFormat()) neighbors[i].changeForm();
297  vNeighborsDetId.emplace_back(DetId(neighbors[i].rawId()));
298  }
299  return vNeighborsDetId;
300 }
int incIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
Definition: DetId.h:18
bool HcalTopology::withSpecialRBXHBHE ( ) const
inline

Definition at line 168 of file HcalTopology.h.

References hcons_, and HcalDDDRecConstants::withSpecialRBXHBHE().

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

Member Data Documentation

unsigned int HcalTopology::CALIBSize_
private

Definition at line 219 of file HcalTopology.h.

Referenced by getCALIBSize().

SegmentationMap HcalTopology::depthSegmentation_
private

Definition at line 230 of file HcalTopology.h.

Referenced by getDepthSegmentation(), and setDepthSegmentation().

SegmentationMap HcalTopology::depthSegmentationOne_
private

Definition at line 231 of file HcalTopology.h.

Referenced by getDepthSegmentation(), and setDepthSegmentation().

int HcalTopology::doublePhiBins_
private

Definition at line 209 of file HcalTopology.h.

Referenced by doublePhiBins(), and nPhiBins().

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

Definition at line 222 of file HcalTopology.h.

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

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

Definition at line 222 of file HcalTopology.h.

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

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

Definition at line 204 of file HcalTopology.h.

Referenced by decrementDepth(), and HcalTopology().

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

Definition at line 204 of file HcalTopology.h.

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

int HcalTopology::etaHE2HF_
private

Definition at line 211 of file HcalTopology.h.

Referenced by HcalTopology(), and incAIEta().

int HcalTopology::etaHF2HE_
private

Definition at line 211 of file HcalTopology.h.

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

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

Definition at line 222 of file HcalTopology.h.

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

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

Definition at line 222 of file HcalTopology.h.

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

bool HcalTopology::excludeHB_
private

Definition at line 194 of file HcalTopology.h.

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

bool HcalTopology::excludeHE_
private

Definition at line 194 of file HcalTopology.h.

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

bool HcalTopology::excludeHF_
private

Definition at line 194 of file HcalTopology.h.

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

bool HcalTopology::excludeHO_
private

Definition at line 194 of file HcalTopology.h.

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

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

Definition at line 193 of file HcalTopology.h.

Referenced by exclude(), and isExcluded().

int HcalTopology::firstHBRing_
private

Definition at line 199 of file HcalTopology.h.

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

int HcalTopology::firstHEDoublePhiRing_
private

Definition at line 207 of file HcalTopology.h.

Referenced by firstHEDoublePhiRing(), and HcalTopology().

int HcalTopology::firstHEQuadPhiRing_
private

Definition at line 207 of file HcalTopology.h.

Referenced by firstHEQuadPhiRing(), and HcalTopology().

int HcalTopology::firstHERing_
private

Definition at line 200 of file HcalTopology.h.

Referenced by firstHERing(), and HcalTopology().

int HcalTopology::firstHETripleDepthRing_
private

Definition at line 208 of file HcalTopology.h.

Referenced by firstHETripleDepthRing(), and HcalTopology().

int HcalTopology::firstHFQuadPhiRing_
private

Definition at line 207 of file HcalTopology.h.

Referenced by firstHFQuadPhiRing(), and HcalTopology().

int HcalTopology::firstHFRing_
private

Definition at line 201 of file HcalTopology.h.

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

int HcalTopology::firstHORing_
private

Definition at line 202 of file HcalTopology.h.

Referenced by firstHORing(), and HcalTopology().

unsigned int HcalTopology::HBSize_
private

Definition at line 214 of file HcalTopology.h.

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

const HcalDDDRecConstants* HcalTopology::hcons_
private
unsigned int HcalTopology::HESize_
private

Definition at line 215 of file HcalTopology.h.

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

unsigned int HcalTopology::HFSize_
private

Definition at line 217 of file HcalTopology.h.

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

unsigned int HcalTopology::HOSize_
private

Definition at line 216 of file HcalTopology.h.

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

unsigned int HcalTopology::HTSize_
private

Definition at line 218 of file HcalTopology.h.

Referenced by getHTSize(), and HcalTopology().

int HcalTopology::lastHBRing_
private

Definition at line 199 of file HcalTopology.h.

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

int HcalTopology::lastHERing_
private

Definition at line 200 of file HcalTopology.h.

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

int HcalTopology::lastHFRing_
private

Definition at line 201 of file HcalTopology.h.

Referenced by HcalTopology(), and lastHFRing().

int HcalTopology::lastHORing_
private

Definition at line 202 of file HcalTopology.h.

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

int HcalTopology::maxDepthHB_
private
int HcalTopology::maxDepthHE_
private
int HcalTopology::maxDepthHF_
private
int HcalTopology::maxEta_
private

Definition at line 212 of file HcalTopology.h.

Referenced by HcalTopology(), and validRaw().

int HcalTopology::maxPhiHE_
private
bool HcalTopology::mergePosition_
private

Definition at line 192 of file HcalTopology.h.

Referenced by getMergePositionFlag().

HcalTopologyMode::Mode HcalTopology::mode_
private
int HcalTopology::nEtaHB_
private
int HcalTopology::nEtaHE_
private

Definition at line 205 of file HcalTopology.h.

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

unsigned int HcalTopology::numberOfShapes_
private

Definition at line 220 of file HcalTopology.h.

Referenced by getNumberOfShapes(), and HcalTopology().

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

Definition at line 223 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().

int HcalTopology::singlePhiBins_
private

Definition at line 209 of file HcalTopology.h.

Referenced by nPhiBins(), and singlePhiBins().

int HcalTopology::topoVersion_
private
HcalTopologyMode::TriggerMode HcalTopology::triggerMode_
private

Definition at line 197 of file HcalTopology.h.

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

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

Definition at line 224 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().

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

Definition at line 224 of file HcalTopology.h.

Referenced by HcalTopology(), and phiBin().