54 int copyNo = startCopyNo;
56 double xphi = xQuadrant * tiltAngle;
57 double yphi = yQuadrant * tiltAngle;
58 double theta = 90._deg;
61 double phiZ = 3 *
theta;
65 double offsetX = xQuadrant * 0.5 * offsetXY;
66 double offsetY = yQuadrant * 0.5 * offsetXY;
69 int rowmax(0), column(0);
80 double limit1 =
sqrt((offsetX + 0.5 * xQuadrant * offsetXY) *
81 (offsetX + 0.5 * xQuadrant * offsetXY) +
82 (offsetY + 0.5 * yQuadrant * offsetXY) *
83 (offsetY + 0.5 * yQuadrant * offsetXY));
84 double limit2 =
sqrt((offsetX - 0.5 * xQuadrant * offsetXY) *
85 (offsetX - 0.5 * xQuadrant * offsetXY) +
86 (offsetY - 0.5 * yQuadrant * offsetXY) *
87 (offsetY - 0.5 * yQuadrant * offsetXY));
92 <<
m_childName <<
" copyNo = " << copyNo <<
" (" << column
93 <<
"," << row <<
"): offsetX,Y = " << offsetX <<
"," 94 << offsetY <<
" limit=" << limit1 <<
":" << limit2
102 rotstr += std::to_string(copyNo);
107 std::make_unique<DDRotationMatrix>(
111 90._deg, xphi, 0.0))));
116 <<
"Module " << copyNo <<
": location = " << tran <<
" Rotation " 126 <<
" (" << column <<
"," << row <<
"): offsetX,Y = " << offsetX
127 <<
"," << offsetY <<
" is out of limit=" << limit1 <<
":" << limit2
132 yphi += yQuadrant * 2. * tiltAngle;
133 offsetY += yQuadrant * offsetXY;
136 if (row > rowmax) rowmax = row;
138 xphi += xQuadrant * 2. * tiltAngle;
139 yphi = yQuadrant * tiltAngle;
140 offsetY = yQuadrant * 0.5 * offsetXY;
141 offsetX += xQuadrant * offsetXY;
145 << rowmax <<
" rows and " << column <<
" columns in quadrant " 146 << xQuadrant <<
":" << yQuadrant;
Geom::Theta< T > theta() const
DDName is used to identify DDD entities uniquely.
std::string m_idNameSpace
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
Abs< T >::type abs(const T &t)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)