23 double dz1(0), dz2(0);
25 if (zf1 != zFront1.begin())
27 if (((zf1 + 1) != zFront1.end()) && (
std::abs(*(zf1 + 1) - zf) <
tol_)) {
32 if (zf2 != zFront2.begin())
35 if (zb1 != zFront1.begin())
37 if ((zb1 != zFront1.begin()) && (
std::abs(*zb1 - zb) <
tol_)) {
42 if (zb2 != zFront2.begin())
45 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalGeomTools::radius:zf " << zf <<
" : " << *zf1 <<
" : " << *zf2 <<
" zb " << zb
46 <<
" : " << *zb1 <<
" : " << *zb2 <<
" Flag " <<
flag;
48 if ((zf1 == zb1) && (zf2 == zb2)) {
50 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalGeomTools::radius:Try 1: " << zf <<
":" << zb <<
" dz " << dz1 <<
":" << dz2;
53 rin.emplace_back(
radius(zf + dz1, zFront1, rFront1, slope1));
54 rout.emplace_back(
radius(zf, zFront2, rFront2, slope2));
56 rin.emplace_back(
radius(zb + dz2, zFront1, rFront1, slope1));
57 rout.emplace_back(
radius(zb, zFront2, rFront2, slope2));
58 }
else if (zf1 == zb1) {
61 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalGeomTools::radius:Try 2:" << zf <<
":" << *zb2 <<
" (" << z1 <<
") : " << zb;
64 rin.emplace_back(
radius(zf, zFront1, rFront1, slope1));
65 rout.emplace_back(
radius(zf, zFront2, rFront2, slope2));
66 if (
slope(*zb2, zFront2, slope2) <
tol_) {
67 zz.emplace_back(*zb2);
68 rin.emplace_back(
radius(*zb2, zFront1, rFront1, slope1));
69 rout.emplace_back(
radius(*zb2 -
tol_, zFront2, rFront2, slope2));
72 zz.emplace_back(*zb2);
73 rin.emplace_back(
radius(*zb2, zFront1, rFront1, slope1));
74 rout.emplace_back(
radius(*zb2, zFront2, rFront2, slope2));
77 rin.emplace_back(
radius(zb, zFront1, rFront1, slope1));
78 rout.emplace_back(
radius(zb, zFront2, rFront2, slope2));
79 }
else if (zf2 == zb2) {
81 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalGeomTools::radius:Try 3: " << zf <<
":" << *zb1 <<
":" << zb;
84 rin.emplace_back(
radius(zf, zFront1, rFront1, slope1));
85 rout.emplace_back(
radius(zf, zFront2, rFront2, slope2));
86 if (
slope(*zb1, zFront1, slope1) <
tol_) {
87 zz.emplace_back(*zb1);
88 rin.emplace_back(
radius(*zb1 -
tol_, zFront1, rFront1, slope1));
89 rout.emplace_back(
radius(*zb1, zFront2, rFront2, slope2));
92 zz.emplace_back(*zb1);
93 rin.emplace_back(
radius(*zb1, zFront1, rFront1, slope1));
94 rout.emplace_back(
radius(*zb1, zFront2, rFront2, slope2));
97 rin.emplace_back(
radius(zb, zFront1, rFront1, slope1));
98 rout.emplace_back(
radius(zb, zFront2, rFront2, slope2));
103 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalGeomTools::radius:Try 4: " << zf <<
":" << z1 <<
" : " <<
z2 <<
":" << zb;
106 rin.emplace_back(
radius(zf, zFront1, rFront1, slope1));
107 rout.emplace_back(
radius(zf, zFront2, rFront2, slope2));
109 rin.emplace_back(
radius(z1, zFront1, rFront1, slope1));
110 rout.emplace_back(
radius(z1, zFront2, rFront2, slope2));
112 rin.emplace_back(
radius(
z2, zFront1, rFront1, slope1));
113 rout.emplace_back(
radius(
z2, zFront2, rFront2, slope2));
115 rin.emplace_back(
radius(zb, zFront1, rFront1, slope1));
116 rout.emplace_back(
radius(zb, zFront2, rFront2, slope2));
118 double rmin = *(std::min_element(rout.begin(), rout.end()));
120 for (
auto&
rr : rout)
124 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalGeomTools::radius has " <<
zz.size() <<
" sections: " << rmin;
125 for (
unsigned int k = 0;
k <
zz.size(); ++
k)