|
|
Go to the documentation of this file.
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);
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),
181 firstHEQuadPhiRing_(999),
182 firstHFQuadPhiRing_(40),
192 HBSize_(kHBSizePreLS1),
193 HESize_(kHESizePreLS1),
196 HTSize_(kHTSizePreLS1),
197 CALIBSize_(kCALIBSizePreLS1),
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";
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))
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;
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);
539 const int ie(
id.ietaAbs());
540 const int ip(
id.
iphi());
543 return ((ip >= 1) && (ip <=
IPHI_MAX) && (
dp >= 1) && (ie >= 1) &&
544 (((
sd ==
HcalBarrel) && (((ie <= 14) && (
dp == 1)) || (((ie == 15) || (ie == 16)) && (
dp <= 2)))) ||
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)))) ||
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();
572 (depth < hcons_->getMinDepth(0, aieta,
iphi,
zside)))
585 if (aieta ==
i.ieta) {
630 switch (
id.subdet()) {
682 switch (
id.subdet()) {
747 int aieta =
id.ietaAbs();
764 if (!
valid(neighbors[0]))
772 int aieta =
id.ietaAbs();
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]))
877 int nDepthBins(0), startingBin(0);
882 if (
depth >= (startingBin + nDepthBins)) {
918 int nDepthBins, startingBin;
934 }
else if (
depth <= 0) {
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) {
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;
1138 return std::pair<double, double>(0, 0);
1144 const int ip(hid.
iphi());
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());
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());
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());
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();
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));
1285 unsigned int index = 0xFFFFFFFFu;
1349 }
else if (
ieta > 0) {
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);
1470 << ctype <<
" " <<
id;
1476 iphi = static_cast<int>(hid0) + 1;
1488 iphi = static_cast<int>(hid0) + 1;
1520 unsigned int retval(0);
1552 retval = 0xFFFFFFFu;
1578 ip += 1 + (
in > 21 ? 2 : 0);
1590 ie = 1 + (
in - 15 * (ip - 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_)) {
static constexpr unsigned int kPhiCalibHBX_
static constexpr unsigned int kPhiCalibHF1_
static constexpr unsigned int kOffCalibHEX_
static constexpr unsigned int kOffCalibHO1_
static constexpr unsigned int nEtaCalibHF_
static constexpr int minMaxDepth_
std::vector< HcalDetId > exclusionList_
bool validHcal(const HcalDetId &id) const
std::vector< DetId > south(const DetId &id) const override
bool isPlan1MergedId(const HcalDetId &id) const
std::vector< double > etaTable
int incIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
constexpr int iphi() const
get the cell iphi
const std::vector< double > & getPhiTableHF() const
static const int IPHI_MAX
static constexpr unsigned int nEtaCalibHB_
const std::vector< double > & getPhiOffs() const
static constexpr int etaCalibHE_[nEtaCalibHE_]
int getDepthEta16(const int &det, const int &iphi, const int &zside) const
static constexpr int phiCalibHO_[nEtaCalibHO_]
static constexpr int chanCalibHOs_
static constexpr unsigned int kOffCalibHFX_
int maxHFDepth(int ieta, int iphi) const
static constexpr int etaCalibHOX_[nEtaCalibHOX_]
HcalCalibDetId denseId2detIdCALIB(const unsigned int &id) const
return a Calib DetId from linear packed id
U second(std::pair< T, U > const &p)
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHB_
unsigned int detId2denseIdHB(const DetId &id) const
return a linear packed id from HB
static constexpr int chanCalibHF1_[nchanCalibHF1_]
constexpr int depth() const
get the tower depth
static constexpr unsigned int kPhiCalibHO0_
std::vector< DetId > down(const DetId &id) const override
static constexpr unsigned int nEtaCalibHO_
int getNPhi(const int &type) const
int decAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
static constexpr unsigned int nchanCalibHO_
int zside() const
get the z-side of the tower (1/-1)
static constexpr unsigned int minPhi_
SegmentationMap depthSegmentation_
int decIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
static constexpr int phiCalibHOX1_
int ietaAbs() const
get the absolute value of the tower ieta
static constexpr unsigned int kOffCalibHB_
int firstHEQuadPhiRing() const
static constexpr unsigned int kOffCalibHOX_
Log< level::Warning, false > LogWarning
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
HcalTopologyMode::TriggerMode triggerMode_
int topoVersion() const override
return a version which identifies the given topology
const std::vector< double > & getPhiTable() const
static constexpr unsigned int nEtaCalibHEX_
constexpr void changeForm()
TString units(TString variable, Char_t axis)
std::vector< double > etaTableHF
std::vector< int > unitPhi
int firstHEDoublePhiRing() const
bool validDetIdPreLS1(const HcalDetId &id) const
const std::vector< double > & getEtaTableHF() const
static constexpr unsigned int kOffCalibHO2_
static constexpr int chanCalibHE2_
static constexpr int etaCalibHB_[nEtaCalibHB_]
int zside() const
get the sign of ieta (+/-1)
unsigned int detId2denseIdPreLS1(const DetId &id) const
unsigned int detId2denseIdHT(const DetId &id) const
return a linear packed id from HT
unsigned int numberOfShapes_
static constexpr int etaCalibHF_[nEtaCalibHF_]
static constexpr int chanCalibHO_[nchanCalibHO_]
void exclude(const HcalDetId &id)
bool validHT(const HcalTrigTowerDetId &id) const
int version() const
get the version code for the trigger tower
unsigned int detId2denseId(const DetId &id) const override
return a linear packed id
static constexpr unsigned int kPhiCalibHE_
static constexpr unsigned int kchanCalibHE1_
SegmentationMap depthSegmentationOne_
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
int firstHETripleDepthRing_
DetId denseId2detId(unsigned int) const override
return a linear packed id
static constexpr unsigned int kOffCalibHE1_
unsigned int detId2denseIdHF(const DetId &id) const
return a linear packed id from HF
static constexpr unsigned int nchanCalibHE1_
static constexpr int phiCalibHOX2_
static constexpr unsigned int nchanCalibHF1_
std::vector< HcalDDDRecConstants::HcalEtaBin > etaBinsHE_
bool decrementDepth(HcalDetId &id) const
bool validRaw(const HcalDetId &id) const
static constexpr unsigned int mPhiCalibHE_
std::vector< double > dPhiTableHF
static constexpr int phiCalibHF2_
unsigned int detId2denseIdHE(const DetId &id) const
return a linear packed id from HE
constexpr int ieta() const
get the cell ieta
static constexpr int etaCalibHEX_[nEtaCalibHEX_]
static constexpr int etaCalibHO_[nEtaCalibHO_]
HcalTopology(const HcalDDDRecConstants *hcons, const bool mergePosition=false)
void excludeSubdetector(HcalSubdetector subdet)
bool incIPhi(const HcalDetId &id, HcalDetId &neighbor) const
constexpr HcalSubdetector subdet() const
get the subdetector
int firstHFQuadPhiRing() const
HcalTopologyMode::Mode mode_
bool decIPhi(const HcalDetId &id, HcalDetId &neighbor) const
int iphi() const
get the low-edge iphi (if relevant)
std::vector< int > unitPhiHF
static constexpr unsigned int nEtaCalibHOX_
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
HcalSubdetector hcalSubdet() const
get the HcalSubdetector (if relevant)
static constexpr unsigned int kPhiCalibHO2_
std::pair< int, int > segmentBoundaries(const unsigned ring, const unsigned depth, const bool flag=false) const
bool validCalib(const HcalCalibDetId &id) const
static constexpr unsigned int kchanCalibHF1_
CalibDetType calibFlavor() const
get the flavor of this calibration detid
constexpr bool oldFormat() const
static constexpr unsigned int kchanCalibHE2_
static constexpr unsigned int nEtaCalibHE_
Basic3DVector unit() const
static constexpr int chanCalibHB_[nchanCalibHB_]
static constexpr unsigned int mPhiCalibHO1_
int incAIEta(const HcalDetId &id, HcalDetId neighbors[2]) const
std::vector< DetId > up(const DetId &id) const override
bool valid(const DetId &id) const override
static constexpr int chanCalibHE1_[nchanCalibHE1_]
double etaMax(HcalSubdetector subdet) const
void setDepthSegmentation(const unsigned ring, const std::vector< int > &readoutDepths, const bool flag)
static constexpr unsigned int mPhiCalibHF1_
std::vector< DetId > west(const DetId &id) const override
constexpr uint32_t rawId() const
get the raw id
std::vector< double > phioff
static constexpr unsigned int kPhiCalibHB_
void getDepthSegmentation(const unsigned ring, std::vector< int > &readoutDepths, const bool flag=false) const
std::pair< int, int > getEtaRange(const int &i) const
bool incrementDepth(HcalDetId &id) const
std::vector< HcalEtaBin > getEtaBins(const int &itype) const
int iphi() const
get the tower iphi
Log< level::Info, true > LogVerbatim
static constexpr unsigned int kchanCalibHB_
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi....
int firstHETripleDepthRing() const
int cboxChannel() const
get the calibration box channel (if relevant)
int getTriggerMode() const
std::pair< double, double > etaRange(HcalSubdetector subdet, int ieta) const
unsigned int detId2denseIdHO(const DetId &id) const
return a linear packed id from HO
unsigned int detId2denseIdCALIB(const DetId &id) const
return a linear packed id from CALIB
std::vector< int > getDepth(const int &det, const int &phi, const int &zside, const unsigned int &eta) const
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
static constexpr unsigned int mPhiCalibHB_
static constexpr unsigned int kchanCalibHF2_
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
int getDepthEta29(const int &iphi, const int &zside, const int &type) const
static constexpr int etaCalibHBX_
static constexpr unsigned int nchanCalibHB_
int getMaxDepth(const int &type) const
static constexpr int phiCalibHOX3_
int nPhiBins(int etaRing) const
how many phi segments in this ring
static constexpr unsigned int maxPhi_
Abs< T >::type abs(const T &t)
constexpr int ietaAbs() const
get the absolute value of the cell ieta
std::vector< DetId > east(const DetId &id) const override
static constexpr unsigned int kPhiCalibHO1_
constexpr int zside() const
get the z-side of the cell (1/-1)
int getNoff(const int &i) const
static constexpr unsigned int kOffCalibHF2_
int firstHEDoublePhiRing_
std::vector< DetId > north(const DetId &id) const override
bool isExcluded(const HcalDetId &id) const
bool isPlan1ToBeMergedId(const HcalDetId &id) const
static constexpr unsigned int nPhiCalibHOX_[nEtaCalibHOX_]
static constexpr int chanCalibHF2_
bool validDetId(HcalSubdetector subdet, int ieta, int iphi, int depth) const
std::vector< double > dPhiTable
static constexpr unsigned int kOffCalibHF1_
static constexpr unsigned int mPhiCalibHEX_
static constexpr unsigned int mPhiCalibHO0_
static constexpr unsigned int kOffCalibHBX_
static constexpr float d1
const HcalDDDRecConstants * hcons_
static constexpr unsigned int kOffCalibHE2_
int phiBin(HcalSubdetector subdet, int etaRing, double phi) const
static constexpr unsigned int kPhiCalibHEX_
const std::vector< double > & getEtaTable() const