10 using namespace geant_units;
11 using namespace geant_units::operators;
19 mergePosition_(mergePosition),
31 firstHEDoublePhiRing_(999),
32 firstHEQuadPhiRing_(999),
33 firstHFQuadPhiRing_(40),
34 firstHETripleDepthRing_(999),
54 int unit =
static_cast<int>((
i.dphi / 5.0_deg) + 0.01);
105 if (etaBinsHE_.size() > 1) {
106 double eta = etaBinsHE_[etaBinsHE_.size() - 1].etaMax;
114 for (
auto&
i : etaBinsHE_) {
115 if (eta <
i.etaMax) {
121 const double fiveDegInRad = 5.0_deg;
123 int units = (int)(
k / fiveDegInRad + 0.5);
127 int units = (int)(
k / fiveDegInRad + 0.5);
135 edm::LogVerbatim(
"HCalGeom") <<
"Set segmentation for ring " <<
ring <<
" with " << segmentation.size()
137 for (
unsigned int k = 0;
k < segmentation.size(); ++
k)
143 edm::LogVerbatim(
"HCalGeom") <<
"Set Plan-1 segmentation for ring " <<
ring <<
" with " << segmentation.size()
145 for (
unsigned int k = 0;
k < segmentation.size(); ++
k)
165 mergePosition_(
false),
180 firstHEDoublePhiRing_((mode == HcalTopologyMode::
H2 || mode == HcalTopologyMode::
H2HE) ? (22) : (21)),
181 firstHEQuadPhiRing_(999),
182 firstHFQuadPhiRing_(40),
183 firstHETripleDepthRing_((mode == HcalTopologyMode::
H2 || mode == HcalTopologyMode::
H2HE) ? (24) : (27)),
186 maxDepthHB_(maxDepthHB),
187 maxDepthHE_(maxDepthHE),
192 HBSize_(kHBSizePreLS1),
193 HESize_(kHESizePreLS1),
196 HTSize_(kHTSizePreLS1),
197 CALIBSize_(kCALIBSizePreLS1),
198 numberOfShapes_((mode == HcalTopologyMode::
SLHC) ? 500 : 87) {
221 edm::LogWarning(
"HCalGeom") <<
"This is an incomplete constructor of HcalTopology - be warned that many "
222 <<
"functionalities will not be there - revert from this - get from EventSetup";
240 if (
id.iphi() < 1 ||
id.iphi() >
IPHI_MAX ||
id.ieta() == 0)
250 if (
id.ietaAbs() > 28) {
255 if ((
id.iphi() % 4) != 1)
257 if (
id.ietaAbs() > 32)
260 }
else if (
id.
version() == 1) {
263 if (
id.ietaAbs() < 30 ||
id.ietaAbs() > 41)
265 if (
id.ietaAbs() > 29 && ((
id.iphi() % 2) == 0))
267 if (
id.ietaAbs() > 39 && ((
id.iphi() % 4) != 3))
281 int ieta = tid.
ieta();
283 unsigned int iphi =
static_cast<unsigned int>(tid.
iphi());
310 unsigned int iphi =
static_cast<unsigned int>(tid.
iphi());
316 unsigned int iphi =
static_cast<unsigned int>(tid.
iphi());
321 unsigned int iphi =
static_cast<unsigned int>(tid.
iphi());
352 switch (
id.subdet()) {
404 std::vector<DetId> vNeighborsDetId;
407 if (neighbors[
i].oldFormat())
408 neighbors[
i].changeForm();
409 vNeighborsDetId.emplace_back(
DetId(neighbors[
i].rawId()));
411 return vNeighborsDetId;
415 std::vector<DetId> vNeighborsDetId;
418 if (neighbors[
i].oldFormat())
419 neighbors[
i].changeForm();
420 vNeighborsDetId.emplace_back(
DetId(neighbors[
i].rawId()));
422 return vNeighborsDetId;
426 std::vector<DetId> vNeighborsDetId;
431 vNeighborsDetId.emplace_back(
DetId(neighbor.
rawId()));
433 return vNeighborsDetId;
437 std::vector<DetId> vNeighborsDetId;
442 vNeighborsDetId.emplace_back(
DetId(neighbor.
rawId()));
444 return vNeighborsDetId;
449 std::vector<DetId> vNeighborsDetId;
453 vNeighborsDetId.emplace_back(neighbor);
455 return vNeighborsDetId;
460 std::vector<DetId> vNeighborsDetId;
464 vNeighborsDetId.emplace_back(neighbor);
466 return vNeighborsDetId;
491 int ieta_l =
std::min(ieta1, ieta2);
492 int ieta_h =
std::max(ieta1, ieta2);
493 int iphi_l =
std::min(iphi1, iphi2);
494 int iphi_h =
std::max(iphi1, iphi2);
495 int depth_l =
std::min(depth1, depth2);
496 int depth_h =
std::max(depth1, depth2);
499 for (
int ieta = ieta_l; ieta <= ieta_h; ieta++)
500 for (
int iphi = iphi_l; iphi <= iphi_h; iphi++)
539 const int ie(
id.ietaAbs());
540 const int ip(
id.iphi());
541 const int dp(
id.
depth());
543 return ((ip >= 1) && (ip <=
IPHI_MAX) && (dp >= 1) && (ie >= 1) &&
544 (((sd ==
HcalBarrel) && (((ie <= 14) && (dp == 1)) || (((ie == 15) || (ie == 16)) && (dp <= 2)))) ||
546 (((ie ==
firstHERing()) && (dp == 3)) || ((ie == 17) && (dp == 1)) ||
547 ((ie >= 18) && (ie <= 20) && (dp <= 2)) || ((ie >= 21) && (ie <= 26) && (dp <= 2) && (ip % 2 == 1)) ||
548 ((ie >= 27) && (ie <= 28) && (dp <= 3) && (ip % 2 == 1)) || ((ie == 29) && (dp <= 2) && (ip % 2 == 1)))) ||
549 ((sd ==
HcalOuter) && (ie <= 15) && (dp == 4)) ||
558 int ieta =
id.ieta();
559 int aieta =
id.ietaAbs();
560 int depth =
id.depth();
561 int iphi =
id.iphi();
562 int zside =
id.zside();
565 if ((ieta == 0 || iphi <= 0 || iphi > maxPhi) || aieta >
maxEta_)
572 (depth < hcons_->getMinDepth(0, aieta, iphi, zside)))
575 if (aieta >
lastHBRing() || depth > 2 || (aieta <= 14 && depth > 1))
581 (depth < hcons_->getMinDepth(1, aieta, iphi, zside)) || (aieta <
firstHERing()) || (aieta >
lastHERing())) {
585 if (aieta ==
i.ieta) {
594 if (depth <
i.depthStart)
605 (((aieta >= 17 && aieta < firstHETripleDepthRing()) || aieta == lastHERing()) && depth > 2) ||
630 switch (
id.subdet()) {
636 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() + 1,
id.
depth());
643 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() + 4,
id.
depth());
648 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() + 2,
id.
depth());
653 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() + 1,
id.
depth());
661 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() + 4,
id.
depth());
666 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() + 2,
id.
depth());
682 switch (
id.subdet()) {
688 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() - 1,
id.
depth());
695 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() - 4,
id.
depth());
700 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() - 2,
id.
depth());
705 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() - 1,
id.
depth());
713 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() - 4,
id.
depth());
718 neighbor =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi() - 2,
id.
depth());
747 int aieta =
id.ietaAbs();
750 neighbors[0] =
HcalDetId(
id.subdet(), (aieta + 1) *
id.
zside(),
id.iphi() - 1,
id.
depth());
753 HcalDetId(
id.subdet(), (aieta + 1) *
id.
zside(), ((
id.iphi() == 1) ? (71) : (
id.iphi() - 2)),
id.
depth());
756 HcalDetId(
id.subdet(), (aieta + 1) *
id.
zside(), ((
id.iphi() == 1) ? (71) : (
id.iphi() - 2)),
id.
depth());
764 if (!
valid(neighbors[0]))
772 int aieta =
id.ietaAbs();
777 neighbors[1] =
HcalDetId(
id.subdet(), (aieta - 1) *
id.
zside(),
id.iphi() + 1,
id.
depth());
784 neighbors[1] =
HcalDetId(
id.subdet(), (aieta - 1) *
id.
zside(),
id.iphi() + 2,
id.
depth());
791 neighbors[1] =
HcalDetId(
id.subdet(), (aieta - 1) *
id.
zside(),
id.iphi() + 2,
id.
depth());
792 }
else if (aieta == 1) {
801 if (!
valid(neighbors[0]) && n == 2) {
802 if (!
valid(neighbors[1]))
806 neighbors[0] = neighbors[1];
809 if (n == 2 && !
valid(neighbors[1]))
811 if (n == 1 && !
valid(neighbors[0]))
818 HcalSubdetector subdet,
int etaRing,
int iphi,
int zside,
int& nDepthBins,
int& startingBin)
const {
848 }
else if (etaRing == 17) {
872 int ieta = detId.
ieta();
875 int iphi = detId.
iphi();
877 int nDepthBins(0), startingBin(0);
882 if (depth >= (startingBin + nDepthBins)) {
896 (ieta > 0) ? ++ieta : --ieta;
900 (ieta > 0) ? --ieta : ++ieta;
907 detId =
HcalDetId(subdet, ieta, iphi, depth);
913 int ieta = detId.
ieta();
916 int iphi = detId.
iphi();
918 int nDepthBins, startingBin;
933 (ieta > 0) ? --ieta : ++ieta;
934 }
else if (depth <= 0) {
939 ieta = (ieta > 0) ? etaRing : -etaRing;
941 if (etaRing ==
i.ieta) {
942 depth =
i.depthStart +
i.layer.size() - 1;
976 if (phiTableVal != 0.0)
977 lastPhiBin =
static_cast<int>((2._pi / phiTableVal) + 0.001);
1009 for (
unsigned int k = 0;
k <
etaTable.size() - 1; ++
k) {
1032 if (index < static_cast<int>(
dPhiTableHF.size())) {
1043 else if (phi > 2._pi)
1045 int phibin(1),
unit(1);
1059 iphi = (phibin - 1) * 2 + 1;
1061 iphi = (phibin - 1) * 4 + 3;
1068 SegmentationMap::const_iterator pos;
1072 throw cms::Exception(
"HcalTopology") <<
"No depth segmentation found for ring" <<
ring;
1077 throw cms::Exception(
"HcalTopology") <<
"No depth segmentation found for ring" <<
ring;
1082 readoutDepths = pos->second;
1094 std::vector<int> readoutDepths;
1097 int d2 =
std::upper_bound(readoutDepths.begin(), readoutDepths.end(),
depth) - readoutDepths.begin();
1098 return std::pair<int, int>(
d1, d2);
1126 int ieta = (keta > 0) ? keta : -keta;
1135 if ((ietal < (
int)(
etaTable.size())) && (ieta > 0))
1136 return std::pair<double, double>(
etaTable[ieta - 1], etaTable[ietal]);
1138 return std::pair<double, double>(0, 0);
1144 const int ip(hid.
iphi());
1146 const int dp(hid.
depth());
1147 const int zn(hid.
zside() < 0 ? 1 : 0);
1148 unsigned int retval =
1150 ? (ip - 1) * 18 + dp - 1 + ie - (ie < 16 ? 1 : 0) + zn *
kHBhalf
1152 ? 2 *
kHBhalf + (ip - 1) * 8 + (ip / 2) * 20 +
1153 ((ie == 16 || ie == 17)
1155 : ((ie >= 18 && ie <= 20)
1156 ? 2 + 2 * (ie - 18) + dp - 1
1157 : ((ie >= 21 && ie <= 26)
1158 ? 8 + 2 * (ie - 21) + dp - 1
1159 : ((ie >= 27 && ie <= 28) ? 20 + 3 * (ie - 27) + dp - 1
1160 : 26 + 2 * (ie - 29) + dp - 1)))) +
1165 ((ip - 1) / 2) * 22 + 2 * (ie - 29) + (dp - 1) + zn *
kHFhalf
1172 const int ip(hid.
iphi());
1174 const int dp(hid.
depth());
1175 const int zn(hid.
zside() < 0 ? 1 : 0);
1176 unsigned int retval = 0xFFFFFFFFu;
1178 retval = (ip - 1) * 18 + dp - 1 + ie - (ie < 16 ? 1 : 0) + zn *
kHBhalf;
1191 const int ip(hid.
iphi());
1193 const int dp(hid.
depth());
1194 const int zn(hid.
zside() < 0 ? 1 : 0);
1195 unsigned int retval = 0xFFFFFFFFu;
1197 retval = (ip - 1) * 8 + (ip / 2) * 20 +
1198 ((ie == 16 || ie == 17)
1200 : ((ie >= 18 && ie <= 20)
1201 ? 2 + 2 * (ie - 18) + dp - 1
1202 : ((ie >= 21 && ie <= 26) ? 8 + 2 * (ie - 21) + dp - 1
1203 : ((ie >= 27 && ie <= 28) ? 20 + 3 * (ie - 27) + dp - 1
1204 : 26 + 2 * (ie - 29) + dp - 1)))) +
1218 const int ip(hid.
iphi());
1220 const int zn(hid.
zside() < 0 ? 1 : 0);
1222 unsigned int retval = 0xFFFFFFFFu;
1224 retval = (ip - 1) * 15 + (ie - 1) + zn *
kHOhalf;
1236 const int ip(hid.
iphi());
1238 const int dp(hid.
depth());
1239 const int zn(hid.
zside() < 0 ? 1 : 0);
1241 unsigned int retval = 0xFFFFFFFFu;
1243 retval = ((ip - 1) / 4) * 4 + ((ip - 1) / 2) * 22 + 2 * (ie - 29) + (dp - 1) + zn *
kHFhalf;
1245 retval = dp - 1 + 2 * (ip - 1);
1257 unsigned int ietaAbs = tid.
ietaAbs();
1258 unsigned int iphi = tid.
iphi();
1259 unsigned int ivers = tid.
version();
1263 if ((iphi - 1) % 4 == 0)
1264 index = (iphi - 1) * 32 + (ietaAbs - 1) - (12 * ((iphi - 1) / 4));
1266 index = (iphi - 1) * 28 + (ietaAbs - 1) + (4 * (((iphi - 1) / 4) + 1));
1273 index += (36 * (ietaAbs - 30) + ((iphi - 1) / 2));
1282 int ieta = tid.
ieta();
1283 int iphi = tid.
iphi();
1285 unsigned int index = 0xFFFFFFFFu;
1349 }
else if (ieta > 0) {
1365 int kphi = ((
std::abs(ieta) ==
etaCalibHOX_[0]) ? ((iphi % 2 == 0) ? (iphi / 2 - 1) : (iphi - 1) / 2) : (iphi - 1));
1388 unsigned int hid0(hid);
1391 int id0, keta, ieta, iphi, ichan, ctype;
1393 id0 =
static_cast<int>(hid0);
1403 id0 =
static_cast<int>(hid0);
1413 id0 =
static_cast<int>(hid0);
1423 id0 =
static_cast<int>(hid0);
1451 id0 =
static_cast<int>(hid0);
1460 id0 =
static_cast<int>(hid0);
1469 edm::LogVerbatim(
"HCalGeom") <<
"CalibrationBox: " << hid <<
" o/p " << ieta <<
":" << iphi <<
":" << ichan <<
":"
1470 << ctype <<
" " <<
id;
1476 iphi =
static_cast<int>(hid0) + 1;
1488 iphi =
static_cast<int>(hid0) + 1;
1493 edm::LogVerbatim(
"HCalGeom") <<
"HOCrossTalk: " << hid <<
":" << hid0 <<
" o/p " << ieta <<
":" << iphi <<
" "
1502 edm::LogVerbatim(
"HCalGeom") <<
"HBX: " << hid <<
":" << hid0 <<
" o/p " << ieta <<
":" << iphi <<
" " <<
id;
1513 edm::LogVerbatim(
"HCalGeom") <<
"HEX: " << hid <<
":" << hid0 <<
" o/p " << ieta <<
":" << iphi <<
" " <<
id;
1520 unsigned int retval(0);
1552 retval = 0xFFFFFFFu;
1578 ip += 1 + (in > 21 ? 2 : 0);
1590 ie = 1 + (in - 15 * (ip - 1));
1591 }
else if (in > 2 *
kHBhalf - 1) {
1601 ie = 15 + (in < 2 ? 1 + in : 2 + (in < 20 ? 1 + (in - 2) / 2 : 9 + (in < 26 ? 1 + (in - 20) / 3 : 3)));
1604 : (in < 2 ? 1 : (in < 20 ? 1 + (in - 2) % 2 : (in < 26 ? 1 + (in - 20) % 3 : (1 + (in - 26) % 2)))));
1621 if (denseid <
ncells()) {
1649 }
else if (denseid >= (
HBSize_)) {
1679 HcalDetId hid(sd, iz *
int(ie), ip, dp);
static constexpr int minMaxDepth_
static constexpr int chanCalibHF2_
Log< level::Info, true > LogVerbatim
std::vector< int > getDepth(const int &det, const int &phi, const int &zside, const unsigned int &eta) const
std::vector< int > unitPhiHF
int zside() const
get the z-side of the tower (1/-1)
static constexpr unsigned int kchanCalibHE1_
static constexpr int etaCalibHE_[nEtaCalibHE_]
static constexpr unsigned int kchanCalibHF1_
static constexpr unsigned int kPhiCalibHBX_
void getDepthSegmentation(const unsigned ring, std::vector< int > &readoutDepths, const bool flag=false) const
int decIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
bool validCalib(const HcalCalibDetId &id) const
constexpr int ietaAbs() const
get the absolute value of the cell ieta
static constexpr int etaCalibHBX_
static constexpr unsigned int kOffCalibHFX_
unsigned int numberOfShapes_
unsigned int detId2denseIdPreLS1(const DetId &id) const
std::vector< double > dPhiTableHF
void excludeSubdetector(HcalSubdetector subdet)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHB_
uint16_t *__restrict__ id
int phiBin(HcalSubdetector subdet, int etaRing, double phi) 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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
constexpr int zside() const
get the z-side of the cell (1/-1)
int topoVersion() const override
return a version which identifies the given topology
std::vector< int > unitPhi
CalibDetType calibFlavor() const
get the flavor of this calibration detid
static constexpr unsigned int kchanCalibHE2_
bool validDetId(HcalSubdetector subdet, int ieta, int iphi, int depth) const
tuple chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi...
bool valid(const DetId &id) const override
constexpr bool oldFormat() const
unsigned int detId2denseIdHT(const DetId &id) const
return a linear packed id from HT
unsigned int detId2denseIdHF(const DetId &id) const
return a linear packed id from HF
std::vector< DetId > south(const DetId &id) const override
void exclude(const HcalDetId &id)
const std::vector< double > & getEtaTableHF() const
HcalTopologyMode::TriggerMode triggerMode_
constexpr uint32_t rawId() const
get the raw id
static constexpr unsigned int kchanCalibHF2_
int nPhiBins(int etaRing) const
how many phi segments in this ring
static constexpr unsigned int kOffCalibHE1_
__host__ __device__ constexpr RandomIt upper_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
int incIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
unsigned int detId2denseId(const DetId &id) const override
return a linear packed id
static constexpr unsigned int nEtaCalibHO_
bool decrementDepth(HcalDetId &id) const
unsigned int detId2denseIdHB(const DetId &id) const
return a linear packed id from HB
static constexpr unsigned int kPhiCalibHO0_
static constexpr int phiCalibHO_[nEtaCalibHO_]
bool decIPhi(const HcalDetId &id, HcalDetId &neighbor) const
static constexpr int etaCalibHO_[nEtaCalibHO_]
static constexpr unsigned int nEtaCalibHF_
static constexpr unsigned int nchanCalibHO_
bool validHcal(const HcalDetId &id) const
static constexpr int etaCalibHB_[nEtaCalibHB_]
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
static constexpr unsigned int nPhiCalibHOX_[nEtaCalibHOX_]
HcalCalibDetId denseId2detIdCALIB(const unsigned int &id) const
return a Calib DetId from linear packed id
const std::vector< double > & getPhiOffs() const
static constexpr int chanCalibHE2_
static constexpr unsigned int nEtaCalibHB_
int getTriggerMode() const
static constexpr int phiCalibHOX3_
static constexpr unsigned int kPhiCalibHB_
static constexpr unsigned int nEtaCalibHE_
U second(std::pair< T, U > const &p)
bool isExcluded(const HcalDetId &id) const
static constexpr unsigned int maxPhi_
std::vector< DetId > up(const DetId &id) const override
constexpr HcalSubdetector subdet() const
get the subdetector
static constexpr int phiCalibHOX2_
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
constexpr void changeForm()
static constexpr unsigned int nchanCalibHB_
std::vector< HcalEtaBin > getEtaBins(const int &itype) const
std::pair< int, int > segmentBoundaries(const unsigned ring, const unsigned depth, const bool flag=false) const
bool incIPhi(const HcalDetId &id, HcalDetId &neighbor) const
bool isPlan1MergedId(const HcalDetId &id) const
static constexpr int phiCalibHOX1_
bool validRaw(const HcalDetId &id) const
constexpr int iphi() const
get the cell iphi
int decAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
static constexpr unsigned int kOffCalibHEX_
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
HcalTopologyMode::Mode mode_
HcalTopology(const HcalDDDRecConstants *hcons, const bool mergePosition=false)
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
static constexpr unsigned int mPhiCalibHEX_
int firstHETripleDepthRing() const
static constexpr int chanCalibHE1_[nchanCalibHE1_]
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
Abs< T >::type abs(const T &t)
constexpr int ieta() const
get the cell ieta
DetId denseId2detId(unsigned int) const override
return a linear packed id
int getDepthEta29(const int &iphi, const int &zside, const int &type) const
static constexpr int etaCalibHEX_[nEtaCalibHEX_]
static constexpr unsigned int kPhiCalibHO2_
std::vector< double > etaTableHF
int firstHEDoublePhiRing() const
SegmentationMap depthSegmentation_
static constexpr unsigned int kPhiCalibHO1_
SegmentationMap depthSegmentationOne_
static constexpr unsigned int mPhiCalibHE_
std::vector< DetId > east(const DetId &id) const override
std::vector< double > etaTable
static constexpr unsigned int kOffCalibHB_
static constexpr unsigned int nchanCalibHF1_
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
std::vector< DetId > down(const DetId &id) const override
static constexpr int chanCalibHO_[nchanCalibHO_]
static constexpr unsigned int nchanCalibHE1_
static constexpr unsigned int mPhiCalibHO1_
static constexpr unsigned int kOffCalibHOX_
static constexpr unsigned int kPhiCalibHF1_
int iphi() const
get the low-edge iphi (if relevant)
bool validDetIdPreLS1(const HcalDetId &id) const
bool incrementDepth(HcalDetId &id) const
static constexpr int etaCalibHOX_[nEtaCalibHOX_]
int zside() const
get the sign of ieta (+/-1)
std::vector< double > phioff
const std::vector< double > & getPhiTable() const
static constexpr int chanCalibHOs_
int getNoff(const int &i) const
static constexpr unsigned int kOffCalibHF1_
static constexpr unsigned int nEtaCalibHOX_
static constexpr int chanCalibHF1_[nchanCalibHF1_]
static constexpr unsigned int kOffCalibHE2_
int version() const
get the version code for the trigger tower
int getMaxDepth(const int &type) const
static constexpr unsigned int kOffCalibHBX_
static constexpr int chanCalibHB_[nchanCalibHB_]
const std::vector< double > & getEtaTable() const
int firstHFQuadPhiRing() const
std::vector< DetId > north(const DetId &id) const override
static constexpr unsigned int mPhiCalibHO0_
std::vector< double > dPhiTable
int cboxChannel() const
get the calibration box channel (if relevant)
static constexpr unsigned int kOffCalibHO2_
std::pair< double, double > etaRange(HcalSubdetector subdet, int ieta) const
TString units(TString variable, Char_t axis)
const std::vector< double > & getPhiTableHF() const
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
static constexpr unsigned int minPhi_
int firstHETripleDepthRing_
unsigned int detId2denseIdHO(const DetId &id) const
return a linear packed id from HO
static constexpr int etaCalibHF_[nEtaCalibHF_]
std::vector< HcalDetId > exclusionList_
unsigned int detId2denseIdHE(const DetId &id) const
return a linear packed id from HE
bool isPlan1ToBeMergedId(const HcalDetId &id) const
static constexpr unsigned int kPhiCalibHE_
static constexpr unsigned int mPhiCalibHB_
static constexpr unsigned int kchanCalibHB_
int firstHEQuadPhiRing() const
HcalSubdetector hcalSubdet() const
get the HcalSubdetector (if relevant)
std::vector< DetId > west(const DetId &id) const override
constexpr int depth() const
get the tower depth
void setDepthSegmentation(const unsigned ring, const std::vector< int > &readoutDepths, const bool flag)
std::pair< int, int > getEtaRange(const int &i) const
Log< level::Warning, false > LogWarning
static constexpr int phiCalibHF2_
int maxHFDepth(int ieta, int iphi) const
static constexpr unsigned int kOffCalibHO1_
static constexpr unsigned int nEtaCalibHEX_
static constexpr float d1
static constexpr unsigned int kPhiCalibHEX_
int incAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
unsigned int detId2denseIdCALIB(const DetId &id) const
return a linear packed id from CALIB
static constexpr unsigned int mPhiCalibHF1_
int ietaAbs() const
get the absolute value of the tower ieta
int iphi() const
get the tower iphi
double etaMax(HcalSubdetector subdet) const
int firstHEDoublePhiRing_
const HcalDDDRecConstants * hcons_
static const int IPHI_MAX
static constexpr unsigned int kOffCalibHF2_
Basic3DVector unit() const
int getNPhi(const int &type) const
bool validHT(const HcalTrigTowerDetId &id) const