48 int idet = 0, lay = -1;
49 int nsiz =
static_cast<int>(
copy.size());
51 lay =
copy[nsiz - 1] / 10;
53 idet =
copy[nsiz - 2] / 1000;
55 idet =
copy[nsiz - 3] / 1000;
57 idet =
copy[nsiz - 2] / 1000;
59 std::ostringstream st1;
60 for (
unsigned int k = 0;
k <
copy.size(); ++
k)
61 st1 <<
" " <<
copy[
k];
65 double dx = 0,
dy = 0,
dz = 0, dx1 = 0, dx2 = 0;
89 edm::LogVerbatim(
"HCalGeom") <<
"HB " <<
sol.name() <<
" Shape " <<
sol.shape() <<
" Layer " << lay <<
" R " 95 if (
thkb_[lay] <= 0) {
103 for (
double k :
rxb_) {
113 php.
dyHB.emplace_back(2. *
dy);
114 php.
dxHB.emplace_back(2. *
dz);
115 php.
layHB.emplace_back(lay);
120 int iz =
copy[nsiz - 5];
121 int fi =
copy[nsiz - 4];
123 if (it1 ==
izb_.size())
124 izb_.emplace_back(iz);
126 if (it2 ==
phib_.size())
127 phib_.emplace_back(fi);
130 int ifi = -1, ich = -1;
132 ifi =
copy[nsiz - 3];
134 ich =
copy[nsiz - 4];
139 if (ifi == 1 && ich == 4) {
146 for (
unsigned int kk = 0;
kk < php.
zHO.size();
kk++) {
151 php.
zHO.resize(php.
zHO.size() + 2);
152 for (
unsigned int kz = php.
zHO.size() - 1; kz >
kk + 1; kz = kz - 2) {
153 php.
zHO[kz] = php.
zHO[kz - 2];
154 php.
zHO[kz - 1] = php.
zHO[kz - 3];
163 php.
zHO.emplace_back(z1);
164 php.
zHO.emplace_back(
z2);
167 edm::LogVerbatim(
"HCalGeom") <<
"Detector " << idet <<
" Lay " << lay <<
" fi " << ifi <<
" " << ich <<
" z " 172 }
else if (idet == 4) {
175 edm::LogVerbatim(
"HCalGeom") <<
"HE " <<
sol.name() <<
" Shape " <<
sol.shape() <<
" Layer " << lay <<
" Z " 188 for (
double k : php.
zxHE) {
200 php.
dx1HE.emplace_back(-dx1);
201 php.
dx2HE.emplace_back(-dx2);
202 php.
layHE.emplace_back(lay);
206 int iz =
copy[nsiz - 7];
207 int fi =
copy[nsiz - 5];
209 if (it1 ==
ize_.size())
210 ize_.emplace_back(iz);
212 if (it2 ==
phie_.size())
213 phie_.emplace_back(fi);
215 }
else if (idet == 5) {
218 const std::vector<double>& paras =
sol.parameters();
221 << paras.size() <<
" Parameters";
222 for (
unsigned j = 0;
j < paras.size();
j++)
226 int nz = (
int)(paras.size()) - 3;
237 edm::LogVerbatim(
"HCalGeom") <<
"Sets for Detector " << idet <<
" for " <<
sol.name() <<
" Flag " <<
hf 243 edm::LogVerbatim(
"HCalGeom") <<
"Unknown Detector " << idet <<
" for " <<
sol.name() <<
" Shape " <<
sol.shape()
244 <<
" R " <<
t.Rho() <<
" Z " <<
t.z();
Log< level::Info, true > LogVerbatim
std::vector< double > zHO
nav_type copyNumbers() const
return the stack of copy numbers
std::vector< double > rhoxHB
std::vector< double > thke_
static const int maxLayer_
double halfZ(void) const
half of the z-Axis
std::vector< double > dx2HE
static const int kHELayer1_
A DDSolid represents the shape of a part.
std::vector< double > rxb_
std::vector< double > rhoxHE
std::vector< double > zxHE
static constexpr double k_ScaleFromDDDToG4
static const int kHELayer2_
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
std::vector< double > dyHE
std::vector< double > zxHB
std::vector< double > rminHE_
bool next()
set current node to the next node in the filtered tree
std::vector< double > dx1HE
unsigned find(int element, std::vector< int > &array) const
Cos< T >::type cos(const T &t)
void loadfinal(HcalParameters &php)
Interface to a Trapezoid.
Abs< T >::type abs(const T &t)
double y2(void) const
Half-length along y of the face at +pDz.
static const double tan10deg
std::vector< double > rb_
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
std::vector< double > dyHB
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
double alpha1(void) const
Angle with respect to the y axis from the centre of the side at y=-pDy1 to the centre at y=+pDy1 of t...
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
double alpha2(void) const
Angle with respect to the y axis from the centre of the side at y=-pDy2 to the centre at y=+pDy2 of t...
std::vector< double > dxHB
std::vector< double > ze_
double y1(void) const
Half-length along y of the face at -pDz.
std::vector< double > thkb_
std::vector< double > rmaxHE_
const DDTranslation & translation() const
The absolute translation of the current node.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
void clear(HcalParameters &php)
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.