227 CLHEP::HepRotation childRotMatrix = CLHEP::HepRotation();
232 childRotation.
rotation().GetComponents(x, y, z);
233 CLHEP::HepRep3x3 tr(x.X(), y.X(), z.X(), x.Y(), y.Y(), z.Y(), x.Z(), y.Z(), z.Z());
234 childRotMatrix = CLHEP::HepRotation(tr);
235 }
else if (
childName ==
"pixfwdNipple:PixelForwardNippleZPlus") {
237 }
else if (
childName ==
"pixfwdNipple:PixelForwardNippleZMinus") {
241 CLHEP::Hep3Vector childTranslation;
242 if (
childName ==
"pixfwdNipple:PixelForwardNippleZPlus") {
244 }
else if (
childName ==
"pixfwdNipple:PixelForwardNippleZMinus") {
253 CLHEP::HepRotation bladeRotMatrix(CLHEP::Hep3Vector(0., 1., 0.), effBladeAngle);
259 double zShiftMax = effBladeZShift * ((nQuarter - 1) / 2.);
261 for (
int iBlade = 0; iBlade <
nBlades; iBlade++) {
270 double phi = (iBlade + 0.5) *
deltaPhi - 90. * CLHEP::deg;
271 int iQuarter = iBlade % nQuarter;
272 double zShift = -zShiftMax + iQuarter * effBladeZShift;
276 CLHEP::HepRotation rotMatrix(CLHEP::Hep3Vector(0., 0., 1.), phi);
277 rotMatrix *= bladeRotMatrix;
281 CLHEP::Hep3Vector translation = rotMatrix(childTranslation + CLHEP::Hep3Vector(0.,
ancorRadius, 0.));
282 translation += CLHEP::Hep3Vector(0., 0., zShift +
zPlane);
291 rotMatrix *= childRotMatrix;
293 make_unique<DDRotationMatrix>(rotMatrix.xx(),
305 DDTranslation ddtran(translation.x(), translation.y(), translation.z());
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >> DD3Vector
double nippleTranslationZ
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
void computeNippleParameters(double endcap)
DDName is used to identify DDD entities uniquely.
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
double nippleTranslationX
CLHEP::HepRotation * nippleRotationZMinus
CLHEP::HepRotation * nippleRotationZPlus
const DDRotationMatrix & rotation() const
Returns the read-only rotation-matrix.
vector< double > childTranslationVector
double nippleTranslationY
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
const std::string & name() const
Returns the name.