6 #include "CLHEP/Units/GlobalPhysicalConstants.h" 7 #include "CLHEP/Units/GlobalSystemOfUnits.h" 14 edm::LogInfo(
"HCalGeom") <<
"HcalDDDSimConstants::HcalDDDSimConstants (const HcalParameter* hp) constructor\n";
20 std::cout <<
"HcalDDDSimConstants: " << cellTypes.size()
21 <<
" cells of type HCal (All)\n";
27 edm::LogInfo (
"HCalGeom") <<
"HcalDDDSimConstants::destructed!!!\n";
32 const int&
depth,
const int& etaR,
33 const int& iphi)
const {
42 double eta = 0, deta = 0,
phi = 0, dphi = 0, rz = 0, drz = 0;
43 bool ok =
false, flagrz =
true;
46 && etaR >=etaMn && etaR <= etaMx && depth > 0) ok =
true;
47 if (idet == static_cast<int>(
HcalEndcap) && depth>(
int)(
hpar->
zHE.size()))ok=
false;
49 else if (idet == static_cast<int>(
HcalOuter) && depth != 4) ok=
false;
52 eta =
getEta(idet, etaR, zside, depth);
59 }
else if (idet == static_cast<int>(
HcalEndcap)) {
67 phi =-fioff + (iphi - 0.5)*fibin;
71 if (ir > 0 && ir <
nR) {
77 edm::LogInfo(
"HCalGeom") <<
"HcalDDDSimConstants: wrong eta " << etaR
78 <<
" (" << ir <<
"/" <<
nR <<
") Detector " 82 }
else if (etaR <=
nEta) {
83 int laymin(depth), laymax(depth);
84 if (idet == static_cast<int>(
HcalOuter)) {
102 << depth <<
" or etaR " << etaR
103 <<
" for detector " << idet;
107 edm::LogWarning(
"HCalGeom") <<
"HcalDDDSimConstants: wrong depth " << depth
113 std::cout <<
"HcalDDDSimConstants: det/side/depth/etaR/phi " 114 << idet <<
"/" << zside <<
"/" << depth <<
"/" 115 << etaR <<
"/" << iphi <<
" Cell Flag " << tmp.
ok 116 <<
" " << tmp.
eta <<
" " << tmp.
deta <<
" phi " 117 << tmp.
phi <<
" " << tmp.
dphi <<
" r(z) " << tmp.
rz 118 <<
" " << tmp.
drz <<
" " << tmp.
flagrz << std::endl;
125 const int& lay)
const {
133 unsigned int id = layerGroup.size();
134 for (
unsigned int i = 0;
i < layerGroup.size();
i++) {
135 if (layer == (
int)(layerGroup[
i].layer)) {
145 std::vector<std::pair<double,double> > gcons;
147 for (
unsigned int i=0;
i<
hpar->
rHB.size(); ++
i) {
151 for (
unsigned int i=0;
i<
hpar->
zHE.size(); ++
i) {
159 const int&
zside)
const {
164 std::cout <<
"getDepthEta16: " << det <<
":" << depth << std::endl;
171 std::vector<int> phis;
174 int zside = (phis[0] > 0) ? 1 : -1;
175 int iphi = (phis[0] > 0) ? phis[0] : -phis[0];
177 if (det == 1 && depthsp > depth) depth = depthsp;
178 if (det == 2 && depthsp < depth) depth = depthsp;
184 const int&
i)
const {
192 const bool& planOne)
const {
194 if (i == 0 && planOne) {
195 std::vector<int> phis;
198 int zside = (phis[0] > 0) ? 1 : -1;
199 int iphi = (phis[0] > 0) ? phis[0] : -phis[0];
201 if (depthsp > depth) depth = depthsp;
210 int hsubdet(0), ieta(0);
212 double heta = fabs(eta);
227 etaR = (eta >= 0. ? hR : -hR);
229 return std::pair<int,double>(hsubdet,etaR);
233 const double& hetaR) {
238 for (
int i =
nR-1;
i > 0;
i--)
239 if (hetaR < hpar->rTable[
i]) ieta =
hpar->
etaMin[2] +
nR - i - 1;
242 for (
int i = 0;
i <
nEta-1;
i++)
249 }
else if (det == static_cast<int>(
HcalEndcap)) {
258 int depth,
const int& lay) {
261 std::cout <<
"HcalDDDEsimConstants:getEtaDepth: I/P " << det <<
":" << etaR
262 <<
":" << phi <<
":" << zside <<
":" << depth <<
":" << lay <<
"\n";
265 if ((det == static_cast<int>(
HcalEndcap)) && (etaR == 17) && (lay == 1))
268 }
else if (det == static_cast<int>(
HcalOuter)) {
272 depth =
layerGroup(det, etaR, phi, zside, lay-1);
273 if (etaR ==
hpar->
noff[0] && lay > 1) {
275 kphi = (kphi-1)%4 + 1;
276 if (kphi == 2 || kphi == 3)
277 depth =
layerGroup(det, etaR, phi, zside, lay-2);
279 }
else if (det == static_cast<int>(
HcalBarrel)) {
296 std::cout <<
"HcalDDDEsimConstants:getEtaDepth: O/P " << etaR <<
":" << depth
299 return std::pair<int,int>(etaR,
depth);
303 const double&
z)
const {
306 double eta = fabs(etaR);
311 if (eta <= hpar->etaTable[10]) eta =
hpar->
etaTable[10]+0.001;
312 }
else if (zz >
hpar->
zHO[1]) {
313 if (eta <= hpar->etaTable[4]) eta =
hpar->
etaTable[4]+0.001;
316 eta = (z >= 0. ? eta : -
eta);
318 std::cout <<
"R " << r <<
" Z " << z <<
" eta " << etaR
319 <<
":" << eta << std::endl;
320 if (eta != etaR)
edm::LogInfo (
"HCalGeom") <<
"**** Check *****";
359 const int&
zside)
const {
368 const int&
depth)
const {
372 if (det == 1 || det == 2) {
388 const int&
depth)
const {
392 if (det == 1 || det ==2) {
393 layer =
depths[depth-1][eta-1];
409 const bool& partialDetOnly)
const {
412 if (partialDetOnly) {
416 }
else if (det == 1 || det == 2) {
425 }
else if (det == 3) {
427 }
else if (det == 4) {
437 const bool& partialDetOnly)
const {
440 if (partialDetOnly) {
444 }
else if (det == 3) {
446 }
else if (det == 4) {
453 unsigned int type = (det == 1) ? 0 : 1;
473 const int& ieta)
const {
475 double fioff(0), fibin(0);
490 return std::pair<double,double>(fioff,fibin);
493 std::vector<std::pair<int,double> >
496 std::vector<std::pair<int,double> > phis;
497 int ietaAbs = (ieta > 0) ? ieta : -ieta;
498 std::pair<double,double> ficons =
getPhiCons(subdet, ietaAbs);
499 int nphi =
int((CLHEP::twopi+0.1*ficons.second)/ficons.second);
501 for (
int ifi = 0; ifi < nphi; ++ifi) {
502 double phi =-ficons.first + (ifi+0.5)*ficons.second;
504 phis.emplace_back(std::pair<int,double>(iphi,phi));
507 std::cout <<
"getPhis: subdet|ieta|iphi " << subdet <<
"|" << ieta
508 <<
" with " << phis.size() <<
" phi bins" << std::endl;
509 for (
unsigned int k=0;
k<phis.size(); ++
k)
511 << phis[
k].
second/CLHEP::deg << std::endl;
520 edm::LogInfo (
"HCalGeom") <<
"HcalDDDSimConstants: " << cellTypes.size()
521 <<
" cells of type HCal Barrel\n";
522 for (
unsigned int i=0;
i<cellTypes.size();
i++)
523 edm::LogInfo (
"HCalGeom") <<
"Cell " <<
i <<
" " << cellTypes[
i] <<
"\n";
528 edm::LogInfo (
"HCalGeom") <<
"HcalDDDSimConstants: " << hoCells.size()
529 <<
" cells of type HCal Outer\n";
530 for (
unsigned int i=0;
i<hoCells.size();
i++)
531 edm::LogInfo (
"HCalGeom") <<
"Cell " <<
i <<
" " << hoCells[
i] <<
"\n";
533 cellTypes.insert(cellTypes.end(), hoCells.begin(), hoCells.end());
537 edm::LogInfo (
"HCalGeom") <<
"HcalDDDSimConstants: " << heCells.size()
538 <<
" cells of type HCal Endcap\n";
539 for (
unsigned int i=0;
i<heCells.size();
i++)
540 edm::LogInfo (
"HCalGeom") <<
"Cell " <<
i <<
" " << heCells[
i] <<
"\n";
542 cellTypes.insert(cellTypes.end(), heCells.begin(), heCells.end());
546 edm::LogInfo (
"HCalGeom") <<
"HcalDDDSimConstants: " << hfCells.size()
547 <<
" cells of type HCal Forward\n";
548 for (
unsigned int i=0;
i<hfCells.size();
i++)
549 edm::LogInfo (
"HCalGeom") <<
"Cell " <<
i <<
" " << hfCells[
i] <<
"\n";
551 cellTypes.insert(cellTypes.end(), hfCells.begin(), hfCells.end());
557 int ieta,
int depthl)
const {
559 std::vector<HcalCellType> cellTypes;
561 if (
dzVcal < 0)
return cellTypes;
564 int dmin, dmax, indx, nz;
574 dmin = 4; dmax = 4; indx = 0; nz =
nzHB;
580 if (depthl > 0) dmin = dmax = depthl;
581 int ietamin = (ieta>0) ? ieta :
hpar->
etaMin[indx];
582 int ietamax = (ieta>0) ? ieta :
hpar->
etaMax[indx];
583 int phi = (indx == 2) ? 3 : 1;
586 int subdet0 =
static_cast<int>(subdet);
594 for (
int eta=ietamin;
eta<=ietamax;
eta++) {
595 for (
int iz=0; iz<nz; ++iz) {
596 int zside = -2*iz + 1;
599 std::vector<std::pair<int,double> > phis =
getPhis(subdet0,
eta);
603 std::vector<int> phiMiss2;
610 for (
int miss=0; miss<
hpar->
noff[5+iz]; miss++) {
611 phiMiss2.emplace_back(
hpar->
noff[kk]);
625 temp2.
setPhi(phis,phiMiss2,fioff,dphi,unit);
626 cellTypes.emplace_back(temp2);
631 std::vector<int> phiMiss3;
632 for (
auto & phi : phis) {
635 if ((
eta*zside ==
l.ieta()) &&
636 (phi.first ==
l.iphi())) {
641 if (!ok) phiMiss3.emplace_back(phi.first);
646 temp3.
setPhi(phis,phiMiss2,fioff,dphi,unit);
647 cellTypes.emplace_back(temp3);
661 if ((eta ==
k.ieta()) && (iphi ==
k.iphi())) {
665 if (!ok) mxdepth = 2;
672 unsigned int num = 0;
674 for (
auto & cellType : cellTypes) {
675 num += (
unsigned int)(cellType.nPhiBins());
678 std::cout <<
"HcalDDDSimConstants:numberOfCells " 679 << cellTypes.size() <<
" " << num
680 <<
" for subdetector " << subdet << std::endl;
688 if (units==2) iphi_skip = (phi-1)*2+1;
689 else if (units==4) iphi_skip = (phi-1)*4-1;
690 if (iphi_skip < 0) iphi_skip += 72;
696 std::vector<int> phis;
698 int kphi = (detsp > 0) ? phis[0] : 1;
699 int zside = (kphi > 0) ? 1 : -1;
700 int iphi = (kphi > 0) ? kphi : -kphi;
739 const double fiveDegInRad = 2*
M_PI/72;
740 int units =
int(dphi/fiveDegInRad+0.5);
741 if (units < 1) units = 1;
754 std::cout <<
"HcalDDDSimConstants:Read LayerGroup" <<
i <<
":";
767 <<
" and dzVcal " <<
dzVcal << std::endl;
773 for (
int i=0;
i<nEta-1; ++
i) {
775 int laymax = (imx > 0) ?
layerGroup(
i, imx-1 ) : 0;
776 if (i < hpar->
etaMax[0]) {
777 int laymax0 = (imx > 16) ?
layerGroup(
i, 16) : laymax;
778 if (
i+1 ==
hpar->
etaMax[0] && laymax0 > 2) laymax0 = 2;
781 if (
i >=
hpar->
etaMin[1]-1 && i < hpar->etaMax[1]) {
786 for (
int i=0;
i<4; ++
i)
792 for (
int i=0;
i<maxdepth; ++
i) {
793 for (
int k=0;
k<nEta-1; ++
k) {
796 for (
int l=layermx-1;
l >= 0; --
l) {
818 <<
" endcap half-sectors" << std::endl;
833 <<
" " <<
etaHO[2] <<
" " <<
etaHO[3] << std::endl;
836 for (
unsigned int i=0;
i<
hpar->
zHO.size(); ++
i)
842 int noffl(noffsize+5);
843 if ((
int)(
hpar->
noff.size()) > (noffsize+3)) {
848 if ((
int)(
hpar->
noff.size()) > (noffsize+4)) {
849 noffl += (2*
hpar->
noff[noffsize+4]);
860 << noffl <<
":" <<
isBH_ << std::endl;
862 <<
" HE (min) " <<
depthEta16[1] <<
"; max depth for itea = 29 : (" 866 if ((
int)(
hpar->
noff.size()) > (noffsize+4)) {
869 for (
int k=0;
k<npair; ++
k) {
886 int noffk(noffsize+5);
887 if ((
int)(
hpar->
noff.size()) > (noffsize+5)) {
888 noffk += (2*
hpar->
noff[noffsize+4]);
889 if ((
int)(
hpar->
noff.size()) > noffk+5) {
895 double wt = 0.1*(
hpar->
noff[noffk+6]);
896 if ((
int)(
hpar->
noff.size()) >= (noffk+7+nphi+3*ndeps)) {
897 if (dtype == 1 || dtype == 2) {
898 std::vector<int> ifi, iet, ily, idp;
899 for (
int i=0;
i<nphi; ++
i) ifi.emplace_back(
hpar->
noff[noffk+7+
i]);
900 for (
int i=0;
i<ndeps;++
i) {
901 iet.emplace_back(
hpar->
noff[noffk+7+nphi+3*
i]);
902 ily.emplace_back(
hpar->
noff[noffk+7+nphi+3*
i+1]);
903 idp.emplace_back(
hpar->
noff[noffk+7+nphi+3*
i+2]);
906 std::cout <<
"Initialize HcalLayerDepthMap for Detector " << dtype
910 std::cout <<
" and " << ndeps <<
" depth sections" << std::endl;
911 for (
int i=0;
i<ndeps;++
i)
912 std::cout <<
" [" <<
i <<
"] " << iet[
i] <<
" " << ily[
i] <<
" " 913 << idp[
i] << std::endl;
915 <<
":" << ndp16 <<
":" << ndp29 <<
" L0 Wt " 920 int zside = (ifi[0]>0) ? 1 : -1;
921 int iphi = (ifi[0]>0) ? ifi[0] : -ifi[0];
925 int noffm = (noffk+7+nphi+3*ndeps);
926 if ((
int)(
hpar->
noff.size()) > noffm) {
928 if (ndnext > 4 && (
int)(
hpar->
noff.size()) >= noffm+ndnext) {
932 if (ndnext > 11 && (
int)(
hpar->
noff.size()) >= noffm+ndnext) {
942 <<
":" <<
layFHE[2] << std::endl;
958 std::cout <<
"Detector type and maximum depth for all RBX " 960 <<
" and for special RBX " <<
depthMaxSp_.first <<
":" 966 const int&
depth)
const {
971 if (ir > 0 && ir <
nR) {
973 if (depth%2 != 1) z +=
dlShort;
977 if (etaR > 0 && etaR <
nEta) {
980 }
else if (det == static_cast<int>(
HcalOuter)) {
983 }
else if (etaR ==
hpar->
noff[2]+1) {
987 }
else if (etaR ==
hpar->
noff[3]+1) {
998 std::cout <<
"HcalDDDSimConstants::deltaEta " << etaR <<
" " 999 << depth <<
" ==> " << tmp << std::endl;
1010 if (ir > 0 && ir <
nR) {
1012 if (depth%2 != 1) z +=
dlShort;
1016 if (etaR > 0 && etaR <
nEta) {
1019 }
else if (det == static_cast<int>(
HcalOuter)) {
1022 }
else if (etaR ==
hpar->
noff[2]+1) {
1024 }
else if (etaR ==
hpar->
noff[3]) {
1026 }
else if (etaR ==
hpar->
noff[3]+1) {
1036 if (zside == 0) tmp = -
tmp;
1038 std::cout <<
"HcalDDDSimConstants::getEta " << etaR <<
" " 1039 << zside <<
" " << depth <<
" ==> " << tmp <<
"\n";
1047 if (z != 0) tmp = -
log(
tan(0.5*atan(r/z)));
1049 std::cout <<
"HcalDDDSimConstants::getEta " << r <<
" " << z
1050 <<
" ==> " << tmp << std::endl;
1056 const int&
depth)
const {
1077 const int&
depth)
const {
1099 edm::LogVerbatim(
"HcalGeom") <<
"HcalDDDSimConstants::printTileHB for eta " 1100 << eta <<
" and depth " <<
depth;
1103 double thetaL = 2.*atan(
exp(-etaL));
1105 double thetaH = 2.*atan(
exp(-etaH));
1108 edm::LogVerbatim(
"HcalGeom") <<
"\ntileHB:: eta|depth " << zside*eta <<
"|" 1109 << depth <<
" theta " << thetaH/CLHEP::deg
1110 <<
":" << thetaL/CLHEP::deg <<
" Layer " 1111 << layL <<
":" << layH-1;
1112 for (
int lay=layL; lay<layH; ++lay) {
1113 std::vector<double>
area(2,0);
1128 << std::setw(8) << area[0] <<
" " 1129 << std::setw(8) << area[1];
1137 double thetaL = 2.*atan(
exp(-etaL));
1139 double thetaH = 2.*atan(
exp(-etaH));
1144 if (phib > 6*CLHEP::deg) nphi = 1;
1145 edm::LogVerbatim(
"HcalGeom") <<
"\ntileHE:: Eta/depth " << zside*eta <<
"|" 1146 << depth <<
" theta " << thetaH/CLHEP::deg
1147 <<
":" << thetaL/CLHEP::deg <<
" Layer " 1148 << layL <<
":" << layH-1 <<
" phi " << nphi;
1149 for (
int lay=layL; lay<layH; ++lay) {
1150 std::vector<double>
area(4,0);
1156 if ((lay != 0 || eta == 18) &&
1165 double ar1=0, ar2=0;
1167 ar1 = 0.5*(rmax-rmin)*(dx1+dx2-4.*
hpar->
dx1HE[
k]);
1169 ar1 = 0.5*(rmax-rmin)*(dx1+dx2-2.*
hpar->
dx1HE[
k]);
1170 ar2 = 0.5*(rmax-rmin)*((rmax+rmin)*
tan(10.*CLHEP::deg)-4*
hpar->
dx1HE[
k])-ar1;
1178 if (area[0] > 0 && area[1] > 0) {
1180 if (eta == 18) lay0++;
1183 << std::setw(8) << area[0] <<
" " 1184 << std::setw(8) << area[1];
1187 << std::setw(8) << area[0] <<
" " 1188 << std::setw(8) << area[1] <<
":" 1189 << std::setw(8) << area[2] <<
" " 1190 << std::setw(8) << area[3];
1199 if (it.layer == (
unsigned int)(eta + 1)) {
1200 return it.layerGroup.size();
1202 if (it.layer > (
unsigned int)(eta + 1))
break;
1203 k = it.layerGroup.size();
1211 if (it.layer == (
unsigned int)(eta + 1)) {
1212 return it.layerGroup.at(i);
1214 if (it.layer > (
unsigned int)(eta + 1))
break;
1215 k = it.layerGroup.at(i);
1224 int depth0 =
findDepth(det,eta,phi,zside,lay);
1225 unsigned int depth = (depth0 > 0) ? (
unsigned int)(depth0) :
layerGroup(eta-1,lay);
std::vector< double > zHO
std::vector< double > etaTable
unsigned int layerGroupSize(int eta) const
int findDepth(const int &det, const int &eta, const int &phi, const int &zside, const int &lay) const
unsigned int layerGroup(int eta, int i) const
void initialize(const int subdet, const int ietaMax, const int dep16C, const int dep29C, const double wtl0C, std::vector< int > const &iphi, std::vector< int > const &ieta, std::vector< int > const &layer, std::vector< int > const &depth)
std::vector< int > maxDepth
std::vector< double > rHB
int getFrontLayer(const int &det, const int &eta) const
std::vector< double > rhoxHB
Sin< T >::type sin(const T &t)
static const int maxLayer_
std::vector< double > HBGains
int getLayerFront(const int &det, const int &eta, const int &phi, const int &zside, const int &depth) const
int getMinDepth(const int &det, const int &eta, const int &phi, const int &zside, const bool &partialOnly) const
bool isValid(const int det, const int phi, const int zside) const
Geom::Theta< T > theta() const
std::vector< int > HEShift
int phiNumber(const int &phi, const int &unit) const
void printTileHB(const int &eta, const int &phi, const int &zside, const int &depth) const
HcalDDDSimConstants(const HcalParameters *hp)
HcalCellType::HcalCell cell(const int &det, const int &zside, const int &depth, const int &etaR, const int &iphi) const
double getEtaHO(const double &etaR, const double &x, const double &y, const double &z) const
int getShift(const HcalSubdetector &subdet, const int &depth) const
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 > depths[nDepthMax]
int getLayerFront(const int subdet, const int ieta, const int iphi, const int zside, const int depth) const
std::vector< double > rhoxHE
U second(std::pair< T, U > const &p)
std::pair< int, int > getDepths(const int eta) const
std::vector< std::pair< double, double > > getConstHBHE(const int &type) const
std::vector< double > zxHE
int validDet(std::vector< int > &phis) const
std::vector< double > zHE
std::vector< LayerItem > layerGroupEtaSim
std::vector< double > dyHE
int getMaxDepth(const int &type) const
void setPhi(const std::vector< std::pair< int, double >> &phis, const std::vector< int > &iphiMiss, double foff, double dphi, int unit)
int getDepthEta29(const int &phi, const int &zside, const int &i) const
int unitPhi(const int &det, const int &etaR) const
std::vector< double > dx1HE
std::vector< double > rHO
std::pair< int, int > depthMaxDf_
unsigned int findLayer(const int &layer, const std::vector< HcalParameters::LayerItem > &layerGroup) const
std::vector< double > dzHE
Cos< T >::type cos(const T &t)
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
std::vector< HcalCellType > HcalCellTypes() const
int getLayerMax(const int &eta, const int &depth) const
std::vector< HcalDetId > idHF2QIE
std::pair< int, int > getEtaDepth(const int &det, int etaR, const int &phi, const int &zside, int depth, const int &lay)
int getLastLayer(const int &det, const int &eta) const
std::vector< int > HFShift
int getMaxDepthLastHE(const int subdet, const int iphi, const int zside) const
int getDepth(const int subdet, const int ieta, const int iphi, const int zside, const int layer) const
unsigned int numberOfCells(const HcalSubdetector &) const
double getLayer0Wt(const int &det, const int &phi, const int &zside) const
int getDepthEta16M(const int &det) const
int getDepthEta29M(const int &i, const bool &planOne) const
std::vector< double > HEGains
double getLayer0Wt(const int subdet, const int iphi, const int zside) const
std::vector< double > dyHB
std::vector< double > phioff
int getDepth16(const int subdet, const int iphi, const int zside) const
std::pair< int, double > getDetEta(const double &eta, const int &depth)
std::vector< double > gparHF
std::pair< int, int > getModHalfHBHE(const int &type) const
int getLayerBack(const int &det, const int &eta, const int &phi, const int &zside, const int &depth) const
std::vector< double > Layer0Wt
std::vector< double > dxHB
double deltaEta(const int &det, const int &eta, const int &depth) const
std::vector< std::vector< double > > tmp
std::vector< double > rTable
std::vector< double > phitable
TString units(TString variable, Char_t axis)
std::vector< double > phibin
std::vector< double > drHB
std::vector< double > HFGains
int getEta(const int &det, const int &lay, const double &hetaR)
static unsigned int const shift
std::pair< int, int > depthMaxSp_
std::vector< int > HBShift
const HcalParameters * hpar
std::vector< int > maxDepth
int maxHFDepth(const int &ieta, const int &iphi) const
void printTileHE(const int &eta, const int &phi, const int &zside, const int &depth) const
std::pair< double, double > getPhiCons(const int &det, const int &ieta) const
static const int maxLayerHB_
double getGain(const HcalSubdetector &subdet, const int &depth) const
std::vector< std::pair< int, double > > getPhis(const int &subdet, const int &ieta) const
int getDepthMax(const int subdet, const int iphi, const int zside) const
std::vector< int > etaMin
int getDepthEta16(const int &det, const int &phi, const int &zside) const