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;
57 double dx = 0,
dy = 0,
dz = 0, dx1 = 0, dx2 = 0;
87 if (
thkb_[lay] <= 0) {
95 for (
double k :
rxb_) {
105 php.
dyHB.emplace_back(2. * dy);
106 php.
dxHB.emplace_back(2. * dz);
107 php.
layHB.emplace_back(lay);
112 int iz = copy[nsiz - 5];
113 int fi = copy[nsiz - 4];
115 if (it1 ==
izb_.size())
116 izb_.emplace_back(iz);
118 if (it2 ==
phib_.size())
119 phib_.emplace_back(fi);
122 int ifi = -1, ich = -1;
124 ifi = copy[nsiz - 3];
126 ich = copy[nsiz - 4];
131 if (ifi == 1 && ich == 4) {
138 for (
unsigned int kk = 0;
kk < php.
zHO.size();
kk++) {
142 }
else if (z2 < php.
zHO[
kk]) {
143 php.
zHO.resize(php.
zHO.size() + 2);
144 for (
unsigned int kz = php.
zHO.size() - 1; kz >
kk + 1; kz = kz - 2) {
145 php.
zHO[kz] = php.
zHO[kz - 2];
146 php.
zHO[kz - 1] = php.
zHO[kz - 3];
148 php.
zHO[kk + 1] = z2;
155 php.
zHO.emplace_back(z1);
156 php.
zHO.emplace_back(z2);
159 edm::LogVerbatim(
"HCalGeom") <<
"Detector " << idet <<
" Lay " << lay <<
" fi " << ifi <<
" " << ich <<
" z "
164 }
else if (idet == 4) {
180 for (
double k : php.
zxHE) {
192 php.
dx1HE.emplace_back(-dx1);
193 php.
dx2HE.emplace_back(-dx2);
194 php.
layHE.emplace_back(lay);
198 int iz = copy[nsiz - 7];
199 int fi = copy[nsiz - 5];
201 if (it1 ==
ize_.size())
202 ize_.emplace_back(iz);
204 if (it2 ==
phie_.size())
205 phie_.emplace_back(fi);
207 }
else if (idet == 5) {
210 const std::vector<double>& paras = sol.
parameters();
213 << paras.size() <<
" Parameters";
214 for (
unsigned j = 0;
j < paras.size();
j++)
218 int nz = (int)(paras.size()) - 3;
229 <<
" R " << t.Rho() <<
" Z " << t.z();
Log< level::Info, true > LogVerbatim
std::vector< double > zHO
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
double halfZ(void) const
half of the z-Axis
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
double x1(void) const
Half-length along x of the side at y=-pDy1 of the face at -pDz.
nav_type copyNumbers() const
return the stack of copy numbers
unsigned find(int element, std::vector< int > &array) const
std::vector< double > rhoxHB
std::vector< double > thke_
static const int maxLayer_
std::vector< double > dx2HE
static const int kHELayer1_
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
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_
std::vector< double > dyHE
std::vector< double > zxHB
double x4(void) const
Half-length along x of the side at y=+pDy2 of the face at +pDz.
std::vector< double > rminHE_
bool next()
set current node to the next node in the filtered tree
std::vector< double > dx1HE
Cos< T >::type cos(const T &t)
void loadfinal(HcalParameters &php)
Interface to a Trapezoid.
double y1(void) const
Half-length along y of the face at -pDz.
Abs< T >::type abs(const T &t)
DDSolidShape shape(void) const
The type of the solid.
static const double tan10deg
std::vector< double > rb_
std::vector< double > dyHB
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...
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
double x2(void) const
Half-length along x of the side at y=+pDy1 of the face at -pDz.
std::vector< double > ze_
double y2(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
double x3(void) const
Half-length along x of the side at y=-pDy2 of the face at +pDz.
void clear(HcalParameters &php)