100 CLHEP::HepRotation rCB(CLHEP::Hep3Vector(1. *
sin(effBladeAngle), 0., 1. *
cos(effBladeAngle)),
deltaPhi);
103 CLHEP::Hep3Vector kC = rCB * (kB + tCB);
106 CLHEP::Hep3Vector jkC = kC - jC;
107 double jkLength = jkC.mag();
109 edm::LogVerbatim(
"PixelGeom") <<
"+++++++++++++++ DDPixFwdRotation: JK Length " << jkLength * CLHEP::mm;
112 CLHEP::Hep3Vector nippleTranslation((kC + jC) / 2. - CLHEP::Hep3Vector(0.,
ancorRadius_, 0.));
113 edm::LogVerbatim(
"PixelGeom") <<
"Child translation : " << nippleTranslation;
116 CLHEP::Hep3Vector vZ(0., 0., 1.);
117 CLHEP::Hep3Vector axis = vZ.cross(jkC);
118 double angleCover = vZ.angle(jkC);
120 CLHEP::HepRotation* rpCN =
new CLHEP::HepRotation(axis, angleCover);
124 std::make_unique<DDRotationMatrix>(
125 rpCN->xx(), rpCN->xy(), rpCN->xz(), rpCN->yx(), rpCN->yy(), rpCN->yz(), rpCN->zx(), rpCN->zy(), rpCN->zz()));
126 CLHEP::HepRotation rpNC(axis, -angleCover);
131 std::make_unique<DDRotationMatrix>(
132 rpNC.xx(), rpNC.xy(), rpNC.xz(), rpNC.yx(), rpNC.yy(), rpNC.yz(), rpNC.zx(), rpNC.zy(), rpNC.zz()));
137 CLHEP::HepRotation rpNB(rpNC * rCB);
139 std::make_unique<DDRotationMatrix>(
140 rpNB.xx(), rpNB.xy(), rpNB.xz(), rpNB.yx(), rpNB.yy(), rpNB.yz(), rpNB.zx(), rpNB.zy(), rpNB.zz()));
143 edm::LogVerbatim(
"PixelGeom") <<
" Angle to body : " << vZ.angle(rpNB * vZ);
Log< level::Info, true > LogVerbatim
Sin< T >::type sin(const T &t)
DDName is used to identify DDD entities uniquely.
Cos< T >::type cos(const T &t)
std::string rotNameCoverToNipple_
std::string rotNameNippleToBody_
a named constant corresponding to the DDL-XML tag <Constant> and <ConstantsVector> ...
std::string rotNameNippleToCover_