6 #include "CLHEP/Units/GlobalPhysicalConstants.h" 7 #include "CLHEP/Units/GlobalSystemOfUnits.h" 16 : hpar(hp), hcons(hc) {
18 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants::HcalDDDRecConstants (const HcalParameters* hp) constructor";
35 if (it->layer == eta + 1)
36 return it->layerGroup;
37 if (it->layer > eta + 1)
38 return last->layerGroup;
41 return last->layerGroup;
46 for (
unsigned int lay = 0; lay < layers.size(); ++lay)
47 depths.emplace_back(layers[lay + 1]);
55 const unsigned int&
eta)
const {
62 for (
unsigned int lay = 0; lay < layers.size(); ++lay)
63 depths.emplace_back(layers[lay + 1]);
69 std::vector<HcalDDDRecConstants::HcalEtaBin>
bins;
70 unsigned int type = (itype == 0) ? 0 : 1;
72 std::vector<int> phiSp;
75 for (
int iz = 0; iz < 2; ++iz) {
76 int zside = 2 * iz - 1;
78 std::vector<std::pair<int, double>> phis =
getPhis(subdet,
ieta);
79 std::vector<std::pair<int, double>> phiUse;
81 if (subdet == subdetSp) {
82 for (
auto&
phi : phis) {
83 if (
std::find(phiSp.begin(), phiSp.end(), (zside *
phi.first)) == phiSp.end()) {
84 phiUse.emplace_back(
phi);
88 phiUse.insert(phiUse.end(), phis.begin(), phis.end());
94 if (subdetSp == subdet) {
96 std::vector<std::pair<int, double>> phis =
getPhis(subdet,
ieta);
97 for (
int iz = 0; iz < 2; ++iz) {
98 int zside = 2 * iz - 1;
99 std::vector<std::pair<int, double>> phiUse;
100 for (
int i : phiSp) {
101 for (
auto&
phi : phis) {
102 if (
i == zside *
phi.first) {
103 phiUse.emplace_back(
phi);
108 if (!phiUse.empty()) {
117 for (
unsigned int i = 0;
i < bins.size(); ++
i) {
118 edm::LogVerbatim(
"HcalGeom") <<
"Bin[" <<
i <<
"]: Eta = (" << bins[
i].ieta <<
":" << bins[
i].etaMin <<
":" 119 << bins[
i].etaMax <<
"), Zside = " << bins[
i].zside <<
", phis = (" 120 << bins[
i].phis.size() <<
":" << bins[
i].dphi <<
") and " << bins[
i].layer.size()
121 <<
" depths (start) " << bins[
i].depthStart;
122 for (
unsigned int k = 0;
k < bins[
i].layer.size(); ++
k)
123 edm::LogVerbatim(
"HcalGeom") <<
" [" <<
k <<
"] " << bins[
i].layer[
k].first <<
":" << bins[
i].layer[
k].second;
125 for (
unsigned int k = 0;
k < bins[
i].phis.size(); ++
k)
126 edm::LogVerbatim(
"HcalGeom") <<
"[" <<
k <<
"] " << bins[
i].phis[
k].first <<
":" << bins[
i].phis[
k].second;
133 int ietaAbs = (ieta > 0) ? ieta : -ieta;
136 (subdet == static_cast<int>(
HcalOuter))) {
138 int kphi = (unit == 2) ? ((iphi - 1) / 2 + 1) : iphi;
141 phi = foff + (kphi - 0.5) *
phibin[ietaAbs - 1];
145 int kphi = (unit == 4) ? ((iphi - 3) / 4 + 1) : ((iphi - 1) / 2 + 1);
148 phi = foff + (kphi - 0.5) *
hpar->
phitable[ietaAbs - 1];
155 edm::LogVerbatim(
"HcalGeom") <<
"getEtaPhi: subdet|ieta|iphi " << subdet <<
"|" << ieta <<
"|" << iphi <<
" eta|phi " 158 return std::pair<double, double>(
eta,
phi);
162 int ieta = (keta > 0) ? keta : -keta;
163 int zside = (keta > 0) ? 1 : -1;
165 if ((subdet == static_cast<int>(
HcalOuter)) ||
174 phi0 = (iphi + 1) / 2;
176 }
else if (unit == 4) {
177 phi0 = (iphi + 1) / 4;
196 kphi = (kphi - 1) % 4 + 1;
197 if (kphi == 2 || kphi == 3)
204 edm::LogVerbatim(
"HcalGeom") <<
"getHCID: input " << subdet <<
":" << ieta <<
":" << iphi <<
":" << idepth <<
":" 205 << lay <<
" output " <<
eta <<
":" <<
phi <<
":" <<
depth;
211 std::vector<HcalDDDRecConstants::HFCellParameters>
cells;
214 for (
unsigned int k = 0;
k <
nEta; ++
k) {
217 int iphi = (dphi == 4) ? 3 : 1;
218 int nphi = 72 / dphi;
222 cells.emplace_back(cell1);
224 cells.emplace_back(cell2);
237 cells.emplace_back(cell1);
240 for (
unsigned int k = 0;
k <
nEta; ++
k) {
243 int iphi = (dphi == 4) ? 3 : 1;
244 int nphi = 72 / dphi;
248 cells.emplace_back(cell1);
250 cells.emplace_back(cell2);
255 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants returns " << cells.size() <<
" HF cell parameters";
256 for (
unsigned int k = 0;
k < cells.size(); ++
k)
257 edm::LogVerbatim(
"HcalGeom") <<
"Cell[" <<
k <<
"] : (" << cells[
k].ieta <<
", " << cells[
k].depth <<
", " 258 << cells[
k].firstPhi <<
", " << cells[
k].stepPhi <<
", " << cells[
k].nPhi <<
", " 259 << cells[
k].rMin <<
", " << cells[
k].rMax <<
")";
271 edm::LogVerbatim(
"HcalGeom") <<
"getLayerDepth::Input " << ieta <<
" Output " << layers.size() <<
" entries";
272 for (std::map<int, int>::iterator itr = layers.begin(); itr != layers.end(); ++itr)
278 int subdet = (idet == 1) ? 1 : 2;
279 int zside = (ieta > 0) ? 1 : -1;
283 if (layBack < 0 && eta <= hpar->
etaMax[1]) {
291 if (layBack < 0 || layBack > laymax)
294 edm::LogVerbatim(
"HcalGeom") <<
"getLayerBack::Input " << idet <<
":" << ieta <<
":" << iphi <<
":" << depth
295 <<
" Output " << layBack;
301 int subdet = (idet == 1) ? 1 : 2;
302 int zside = (ieta > 0) ? 1 : -1;
306 if ((layFront < 0) || ((subdet == static_cast<int>(
HcalEndcap)) && (eta == 16))) {
307 if ((subdet == static_cast<int>(
HcalEndcap)) && (eta == 16)) {
309 }
else if (eta <= hpar->
etaMax[1]) {
312 if ((
int)(
k) >= laymin) {
320 if (layFront < laymin)
324 edm::LogVerbatim(
"HcalGeom") <<
"getLayerFront::Input " << idet <<
":" << ieta <<
":" << iphi <<
":" << depth
325 <<
" Output " << layFront;
331 unsigned int type = (itype == 0) ? 0 : 1;
340 if (type == 0 && ieta ==
iEtaMax[type])
342 if (type == 1 && ieta >=
hpar->
noff[1])
347 edm::LogVerbatim(
"HcalGeom") <<
"getMaxDepth::Input " << itype <<
":" << ieta <<
":" << iphi <<
":" << zside
348 <<
" Output " << lmax;
358 }
else if (itype == 3) {
361 unsigned int type = (itype == 0) ? 0 : 1;
363 if (type == 1 && ieta ==
iEtaMin[type])
374 std::vector<std::pair<int, double>> phis;
375 int ietaAbs = (ieta > 0) ? ieta : -ieta;
378 double fioff = ficons.first;
380 int nphi =
int((2._pi + 0.1 * dphi) / dphi);
382 for (
int ifi = 0; ifi < nphi; ++ifi) {
383 double phi = -fioff + (ifi + 0.5) * dphi;
385 phis.emplace_back(std::pair<int, double>(iphi, phi));
388 edm::LogVerbatim(
"HcalGeom") <<
"getEtaPhi: subdet|ieta|iphi " << subdet <<
"|" << ieta <<
" with " << phis.size()
390 for (
unsigned int k = 0;
k < phis.size(); ++
k)
403 int zside = (
k > 0) ? 1 : -1;
404 int phi = (
k > 0) ?
k : -
k;
405 phiz.emplace_back(std::pair<int, int>(phi, zside));
409 edm::LogVerbatim(
"HcalGeom") <<
"Special RBX for detector " << subdet <<
" with " << phiz.size() <<
" phi/z bins";
410 for (
unsigned int k = 0;
k < phiz.size(); ++
k)
411 edm::LogVerbatim(
"HcalGeom") <<
" [" <<
k <<
"] " << phiz[
k].first <<
":" << phiz[
k].second;
417 return getRZ(subdet, ieta, 1, depth);
425 edm::LogVerbatim(
"HcalGeom") <<
"getRZ: subdet|ieta|ipho|depth " << subdet <<
"|" << ieta <<
"|" << iphi <<
"|" 426 << depth <<
" lay|rz " << layf <<
"|" << rz;
436 edm::LogVerbatim(
"HcalGeom") <<
"getRZ: subdet|layer " << subdet <<
"|" << layer <<
" rz " << rz;
442 int subdet =
id.subdetId();
443 int ieta =
id.ieta();
444 int iphi =
id.iphi();
445 int depth =
id.depth();
448 double rzf = (layf < 0)
453 double rzb = (layb < 0)
458 edm::LogVerbatim(
"HcalGeom") <<
"getRZ: subdet|ieta|ipho|depth " << subdet <<
"|" << ieta <<
"|" << iphi <<
"|" 459 << depth <<
" lay|rz (front) " << layf <<
"|" << rzf <<
" lay|rz (back) " << layb <<
"|" 462 return std::pair<double, double>(rzf, rzb);
466 std::vector<HcalDDDRecConstants::HcalActiveLength> actives;
467 std::vector<HcalDDDRecConstants::HcalEtaBin>
bins =
getEtaBins(type);
469 unsigned int kount(0);
471 for (
auto&
bin : bins) {
474 int stype = (
bin.phis.size() > 4) ? 0 : 1;
477 double eta = 0.5 * (
bin.etaMin +
bin.etaMax);
479 double scale = 1.0 / ((type == 0) ?
sin(theta) :
cos(theta));
482 edm::LogVerbatim(
"HcalGeom") <<
"Eta " << ieta <<
" zside " << zside <<
" depth " << depth <<
" Layers " << layf
483 <<
":" << layl <<
":" <<
bin.layer.size();
484 for (
auto ll :
bin.layer)
489 for (
unsigned int i = 0;
i <
bin.layer.size(); ++
i) {
493 for (
int j = lmin;
j <= lmax; ++
j) {
495 if ((type == 1) && (ieta <= 18))
501 edm::LogVerbatim(
"HcalGeom") <<
"Type " << type <<
" L " << lmin <<
":" << lmax <<
" T " << thick;
503 thick *= (2. *
scale);
506 active.
iphis.emplace_back(
phi.first);
507 actives.emplace_back(active);
512 <<
" zside " << active.
zside <<
" depth " << active.
depth <<
" type " << active.
stype 513 <<
" thick " << active.
thick;
522 std::vector<HcalCellType>
cells;
525 std::vector<int> missPhi;
526 for (
const auto& etabin : etabins) {
527 std::vector<HcalCellType>
temp;
528 std::vector<int>
count;
529 std::vector<double> dmin, dmax;
530 for (
unsigned int il = 0; il < etabin.layer.size(); ++il) {
532 temp.emplace_back(cell);
533 count.emplace_back(0);
534 dmin.emplace_back(0);
535 dmax.emplace_back(0);
537 int ieta = etabin.ieta;
540 for (
unsigned int il = 0; il < etabin.layer.size(); ++il) {
541 for (
auto& ic : cellsm) {
542 if (ic.depthSegment() >= etabin.layer[il].first && ic.depthSegment() <= etabin.layer[il].second &&
543 ic.etaBin() == temp[il].etaBin() && ic.zside() == temp[il].zside()) {
544 if (count[il] == 0) {
546 dmin[il] = ic.depthMin();
547 dmax[il] = ic.depthMax();
550 if (ic.depthMin() < dmin[il])
551 dmin[il] = ic.depthMin();
552 if (ic.depthMax() > dmax[il])
553 dmax[il] = ic.depthMax();
558 for (
unsigned int il = 0; il < etabin.layer.size(); ++il) {
559 int depth = etabin.depthStart + (
int)(il);
560 temp[il].setEta(ieta, etabin.etaMin, etabin.etaMax);
561 temp[il].setDepth(depth, dmin[il], dmax[il]);
564 temp[il].setPhi(etabin.phis, missPhi, foff, etabin.dphi,
unit);
565 cells.emplace_back(temp[il]);
569 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants: found " << cells.size() <<
" cells for sub-detector type " 571 for (
unsigned int ic = 0; ic < cells.size(); ++ic)
582 int zside = (ieta > 0) ? 1 : -1;
584 if ((eta >= etamin) && (eta <=
iEtaMax[1])) {
585 int depthMax =
getMaxDepth(1, etamin, iphi, zside);
587 if (depth >= depthMin && depth <= depthMax)
596 int zside = (ieta > 0) ? 1 : -1;
598 if ((eta >= etamin) && (eta <=
iEtaMax[1])) {
599 int depthMax =
getMaxDepth(1, etamin, iphi, zside);
601 depths.reserve(depthMax - depthMin + 1);
603 depths.emplace_back(
depth);
610 unsigned int num = 0;
612 for (
auto& cellType : cellTypes) {
613 num += (
unsigned int)(cellType.nPhiBins());
616 edm::LogInfo(
"HCalGeom") <<
"HcalDDDRecConstants:numberOfCells " << cellTypes.size() <<
" " << num
617 <<
" for subdetector " << subdet;
629 unsigned int ncell(0);
630 for (
auto& etabin : etabins) {
631 ncell += ((etabin.phis.size()) * (etabin.layer.size()));
648 std::map<HcalDetId, HcalDetId>::const_iterator itr =
detIdSp_.find(
id);
657 std::map<HcalDetId, std::vector<HcalDetId>>::const_iterator itr =
detIdSpR_.find(
id);
659 hid =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi(), (itr->second)[0].
depth());
665 std::map<HcalDetId, std::vector<HcalDetId>>::const_iterator itr =
detIdSpR_.find(
id);
667 hid =
HcalDetId(
id.subdet(),
id.ieta(),
id.iphi(), (itr->second).back().depth());
673 std::map<HcalDetId, std::vector<HcalDetId>>::const_iterator itr =
detIdSpR_.find(
id);
675 ids.emplace_back(
id);
677 for (
auto k : itr->second) {
679 ids.emplace_back(hid);
685 for (
auto k : idsOld) {
686 std::map<HcalDetId, HcalDetId>::const_iterator itr =
detIdSp_.find(
k);
688 idsNew.emplace_back(
k);
690 idsNew.emplace_back(itr->second);
696 std::map<HcalDetId, HcalDetId>::const_iterator itr;
698 ids.emplace_back(itr->first);
700 std::map<HcalDetId, std::vector<HcalDetId>>::const_iterator itr;
702 ids.emplace_back(itr->first);
704 return (!ids.empty());
710 std::vector<std::pair<int, double>>& phis,
711 std::map<int, int>&
layers,
713 std::vector<HcalDDDRecConstants::HcalEtaBin>&
bins)
const {
716 double dphi =
phibin[ieta - 1];
719 etabin.
phis.insert(etabin.
phis.end(), phis.begin(), phis.end());
725 int lmin(0), lmax(0);
727 std::map<int, int>::iterator itr = layers.begin();
728 if (!layers.empty()) {
729 int dep = itr->second;
732 unsigned lymx0 = (layers.size() > lymax) ? lymax : layers.size();
735 <<
":" << lymax <<
" Depth " << dep <<
":" << itr->second;
737 for (itr = layers.begin(); itr != layers.end(); ++itr, ++
l)
738 edm::LogVerbatim(
"HcalGeom") <<
"Layer [" << l <<
"] " << itr->first <<
":" << itr->second;
740 for (
unsigned int l = 0; l < phis.size(); ++
l)
743 for (itr = layers.begin(); itr != layers.end(); ++itr) {
744 if (itr->first <= (
int)(lymx0)) {
745 if (itr->second == dep) {
749 }
else if (itr->second > dep) {
752 int lmax0 = (lmax >= lmin) ? lmax : lmin;
754 etabin0.
layer.emplace_back(std::pair<int, int>(lmin, lmax0));
756 etabin.
layer.emplace_back(std::pair<int, int>(lmin, lmax0));
768 if (itr->first == (
int)(lymx0))
774 etabin0.
layer.emplace_back(std::pair<int, int>(lmin, lmax));
775 etabin0.
phis.insert(etabin0.
phis.end(), phis.begin(), phis.end());
776 bins.emplace_back(etabin0);
779 <<
":" << lmin <<
":" << lmax <<
" phis " << phis.size();
780 for (
unsigned int k = 0;
k < etabin0.
layer.size(); ++
k)
785 etabin.
layer.emplace_back(std::pair<int, int>(lmin, lmax));
792 bins.emplace_back(etabin);
795 << lmin <<
":" << lmax <<
" phis " << etabin.
phis.size();
796 for (
unsigned int k = 0;
k < etabin.
layer.size(); ++
k)
805 edm::LogError(
"HCalGeom") <<
"HcalDDDRecConstants: sizes of the vectors " 806 <<
" etaGroup (" << nEta <<
") and phiGroup (" <<
hpar->
phigroup.size()
808 throw cms::Exception(
"DDException") <<
"HcalDDDRecConstants: inconsistent array sizes" << nEta <<
":" 818 int ieta(0), ietaHB(0), ietaHE(0), ietaHEM(0);
820 for (
int i = 0;
i <
nEta; ++
i) {
825 <<
" at index " <<
i <<
" of etaTable from SimConstant";
827 <<
"HcalDDDRecConstants: Going beyond the array boundary " <<
hpar->
etaTable.size() <<
" at index " <<
i 828 <<
" of etaTable from SimConstant";
835 if (ieta <= hpar->
etaMax[0])
837 if (ieta <= hpar->
etaMin[1])
839 if (ieta <= hpar->etaMax[1])
848 for (
unsigned int k = 0;
k < 4; ++
k)
853 for (
int i = 0;
i <
nEta; ++
i) {
855 phibin.emplace_back(dphi);
856 int nphi = (
int)((2._pi + 0.001) / dphi);
872 int nphi = (
int)((2._pi + 0.001) /
i);
877 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants: Modified eta/deltaphi table for " << nEta <<
" bins";
878 for (
int i = 0; i <
nEta; ++
i)
882 for (
unsigned int i = 0; i <
phiUnitS.size(); ++
i)
884 for (
unsigned int i = 0; i <
nPhiBins.size(); ++
i)
895 for (
int i = 0; i <
nEta; ++
i) {
897 int laymax = (imx > 0) ?
layerGroup(i, imx - 1) : 0;
899 int laymax0 = (imx > 16) ?
layerGroup(i, 16) : laymax;
903 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants:HB " << i <<
" " << imx <<
" " << laymax <<
" " << laymax0;
910 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants:HE " << i <<
" " << imx <<
" " << laymax;
917 for (
int i = 0; i < 4; ++
i)
925 for (
unsigned int i = 0; i <
hpar->
rHB.size(); ++
i) {
930 <<
" halves and " <<
gconsHB.size() <<
" layers";
931 for (
unsigned int i = 0; i <
gconsHB.size(); ++
i)
936 for (
unsigned int i = 0; i <
hpar->
zHE.size(); ++
i) {
941 <<
" halves and " <<
gconsHE.size() <<
" layers";
942 for (
unsigned int i = 0; i <
gconsHE.size(); ++
i)
960 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants:Detector type and maximum depth for all RBX " 966 std::vector<int> phis;
971 int phi = (phis[0] > 0) ? phis[0] : -phis[0];
972 int zside = (phis[0] > 0) ? 1 : -1;
975 for (
int eta = etas.first;
eta <= etas.second; ++
eta) {
976 std::map<int, std::pair<int, int>> oldDep;
979 for (
int lay = 0; lay < lymax; ++lay) {
983 oldDep[
depth] = std::pair<int, int>(lmin, lay - 1);
989 oldDep[
depth] = std::pair<int, int>(lmin, lymax - 1);
991 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants:Eta|Phi|Zside " <<
eta <<
":" << phi <<
":" << zside
992 <<
" with " << oldDep.size() <<
" old Depths";
994 for (
std::map<
int, std::pair<int, int>>::const_iterator itr = oldDep.begin(); itr != oldDep.end(); ++itr, ++
kk)
995 edm::LogVerbatim(
"HcalGeom") <<
"[" << kk <<
"] " << itr->first <<
" --> " << itr->second.first <<
":" 996 << itr->second.second;
999 for (
int ndepth = depths.first; ndepth <= depths.second; ++ndepth) {
1003 std::vector<int>
count(oldDep.size(), 0);
1006 for (
int lay = layFront; lay <= layBack; ++lay) {
1008 for (
std::map<
int, std::pair<int, int>>::iterator itr = oldDep.begin(); itr != oldDep.end(); ++itr, ++
l) {
1009 if (lay >= (itr->second).first && lay <= (itr->second).
second) {
1015 int odepth(0), maxlay(0);
1017 for (
std::map<
int, std::pair<int, int>>::iterator itr = oldDep.begin(); itr != oldDep.end(); ++itr, ++
l) {
1018 if (
count[l] > maxlay) {
1019 odepth = itr->first;
1024 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants:New Depth " << ndepth <<
" old Depth " << odepth
1025 <<
" max " << maxlay;
1027 for (
int k : phis) {
1028 zside = (
k > 0) ? 1 : -1;
1029 phi = (
k > 0) ?
k : -
k;
1032 HcalDetId newId(subdet, zside * eta, phi, ndepth);
1033 HcalDetId oldId(subdet, zside * eta, phi, odepth);
1035 std::vector<HcalDetId>
ids;
1036 std::map<HcalDetId, std::vector<HcalDetId>>::iterator itr =
detIdSpR_.find(oldId);
1039 ids.emplace_back(newId);
1046 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants:Map for merging new channels to old channel" 1047 <<
" IDs with " <<
detIdSp_.size() <<
" entries";
1050 edm::LogVerbatim(
"HcalGeom") <<
"[" << l <<
"] Special " << itr.first <<
" Standard " << itr.second;
1053 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDRecConstants:Reverse Map for mapping old to new IDs with " 1057 edm::LogVerbatim(
"HcalGeom") <<
"[" << l <<
"] Standard " << itr.first <<
" Special";
1058 for (
auto itr1 : itr.second)
1069 if (it.layer == (
unsigned int)(eta + 1)) {
1070 return it.layerGroup.size();
1072 if (it.layer > (
unsigned int)(eta + 1))
1074 k = it.layerGroup.size();
1082 if (it.layer == (
unsigned int)(eta + 1)) {
1083 return it.layerGroup.at(i);
1085 if (it.layer > (
unsigned int)(eta + 1))
1087 k = it.layerGroup.at(i);
int getPhiZOne(std::vector< std::pair< int, int >> &phiz) const
std::vector< int > getDepth(const int &det, const int &phi, const int &zside, const unsigned int &eta) const
std::map< HcalDetId, HcalDetId > detIdSp_
std::vector< double > etaTable
std::vector< int > iEtaMin
std::vector< int > etagroup
std::pair< int, int > depthMaxSp_
std::pair< double, double > getEtaPhi(const int &subdet, const int &ieta, const int &iphi) const
int findDepth(const int &det, const int &eta, const int &phi, const int &zside, const int &lay) const
void getLayerDepth(const int subdet, const int ieta, const int iphi, const int zside, std::map< int, int > &layers) const
std::vector< double > rHB
HcalDetId mergedDepthDetId(const HcalDetId &id) const
int getFrontLayer(const int &det, const int &eta) const
constexpr NumType convertRadToDeg(NumType radians)
Sin< T >::type sin(const T &t)
bool mergedDepthList29(int ieta, int iphi, int depth) const
int getMinDepth(const int &det, const int &eta, const int &phi, const int &zside, const bool &partialOnly) const
Geom::Theta< T > theta() const
unsigned int layerGroup(int eta, int i) const
void getOneEtaBin(HcalSubdetector subdet, int ieta, int zside, std::vector< std::pair< int, double >> &phis, std::map< int, int > &layers, bool planOne, std::vector< HcalDDDRecConstants::HcalEtaBin > &bins) const
int phiNumber(const int &phi, const int &unit) const
static const int maxLayer_
std::vector< int > maxDepth
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< double > etaTableHF
int getLayerBack(const int subdet, const int ieta, const int iphi, const int zside, const int depth) const
std::vector< int > etaMax
std::vector< int > phiUnitS
std::pair< int, int > getMaxDepthDet(const int &i) const
int getLayerFront(const int subdet, const int ieta, const int iphi, const int zside, const int depth) const
U second(std::pair< T, U > const &p)
std::vector< std::pair< double, double > > gconsHE
const HcalParameters * hpar
std::pair< int, int > getDepths(const int eta) const
int validDet(std::vector< int > &phis) const
std::pair< int, int > depthMaxDf_
std::vector< double > zHE
std::vector< HcalEtaBin > getEtaBins(const int &itype) const
std::vector< double > phibin
int getMaxDepth(const int &type) const
const std::vector< double > & getRTableHF() const
void specialRBXHBHE(const std::vector< HcalDetId > &, std::vector< HcalDetId > &) const
int getDepthEta29(const int &phi, const int &zside, const int &i) const
unsigned int numberOfCells(HcalSubdetector) const
HcalDetId idFront(const HcalDetId &id) const
int unitPhi(const int &det, const int &etaR) const
HcalID getHCID(int subdet, int ieta, int iphi, int lay, int idepth) const
std::vector< double > dzHE
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
double getRZ(const int &subdet, const int &ieta, const int &depth) const
Cos< T >::type cos(const T &t)
const std::vector< double > & getPhiTableHF() const
std::vector< HFCellParameters > getHFCellParameters() const
const std::vector< int > & getPhis() const
std::vector< int > iEtaMax
Abs< T >::type abs(const T &t)
std::vector< HcalCellType > HcalCellTypes() const
std::vector< int > ietaMap
std::vector< int > nPhiBins
std::vector< std::pair< int, int > > layer
std::vector< std::pair< int, int > > etaSimValu
void getLayerDepth(const int &ieta, std::map< int, int > &layers) const
int getLastLayer(const int &det, const int &eta) const
std::vector< HcalCellType > HcalCellTypes(HcalSubdetector) const
unsigned int numberOfCells(const HcalSubdetector &) const
int getLayerFront(const int &det, const int &eta, const int &phi, const int &depth) const
std::vector< std::pair< int, double > > getPhis(const int &subdet, const int &ieta) const
HcalDetId idBack(const HcalDetId &id) const
std::vector< std::pair< double, double > > gconsHB
int getDepthEta16M(const int &det) const
int getDepthEta29M(const int &i, const bool &planOne) const
std::pair< int, int > validEta() const
std::vector< double > phioff
unsigned int layerGroupSize(int eta) const
std::vector< double > etaTable
HcalDDDRecConstants(const HcalParameters *hp, const HcalDDDSimConstants &hc)
int getMaxDepth(const int &type) const
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
std::vector< double > phitable
TString units(TString variable, Char_t axis)
std::vector< double > phibin
std::vector< LayerItem > layerGroupEtaRec
std::vector< double > drHB
const HcalDDDSimConstants & hcons
std::vector< std::pair< int, double > > phis
std::vector< HcalActiveLength > getThickActive(const int &type) const
const std::vector< HcalDetId > & getIdHF2QIE() const
std::vector< int > maxDepth
std::vector< int > phigroup
int getLayerBack(const int &det, const int &eta, const int &phi, const int &depth) const
static const int maxLayerHB_
std::pair< double, double > getPhiCons(const int &det, const int &ieta) const
std::map< HcalDetId, std::vector< HcalDetId > > detIdSpR_
std::vector< int > etaMin
unsigned int nCells() const
Basic3DVector unit() const
int getDepthEta16(const int &det, const int &phi, const int &zside) const
const HcalLayerDepthMap * ldMap() const