335 CLHEP::Hep3Vector jC;
336 CLHEP::Hep3Vector kB;
337 string rotNameNippleToCover;
338 string rotNameCoverToNipple;
339 string rotNameNippleToBody;
344 rotNameNippleToCover =
"NippleToCoverZPlus";
345 rotNameCoverToNipple =
"CoverToNippleZPlus";
346 rotNameNippleToBody =
"NippleToBodyZPlus";
350 rotNameNippleToCover =
"NippleToCoverZMinus";
351 rotNameCoverToNipple =
"CoverToNippleZMinus";
352 rotNameNippleToBody =
"NippleToBodyZMinus";
362 CLHEP::HepRotation rCB(CLHEP::Hep3Vector(1. *
sin(effBladeAngle), 0., 1. *
cos(effBladeAngle)),
deltaPhi);
366 CLHEP::Hep3Vector kC = rCB * (kB + tCB);
370 CLHEP::Hep3Vector jkC = kC - jC;
371 double jkLength = jkC.mag();
374 <<
"JK Length " << jkLength * CLHEP::mm;
378 CLHEP::Hep3Vector nippleTranslation((kC + jC) / 2. - CLHEP::Hep3Vector(0.,
ancorRadius, 0.));
384 edm::LogVerbatim(
"PixelGeom") <<
"Child translation : " << nippleTranslation;
388 CLHEP::Hep3Vector vZ(0., 0., 1.);
389 CLHEP::Hep3Vector axis = vZ.cross(jkC);
390 double angleCover = vZ.angle(jkC);
392 CLHEP::HepRotation* rpCN =
new CLHEP::HepRotation(axis, angleCover);
401 DDName(rotNameCoverToNipple,
"pixfwdNipple"),
402 make_unique<DDRotationMatrix>(
403 rpCN->xx(), rpCN->xy(), rpCN->xz(), rpCN->yx(), rpCN->yy(), rpCN->yz(), rpCN->zx(), rpCN->zy(), rpCN->zz()));
404 CLHEP::HepRotation rpNC(axis, -angleCover);
405 edm::LogVerbatim(
"PixelGeom") <<
"DDPixFwdBlades::Defines " <<
DDName(rotNameCoverToNipple,
"pixfwdNipple")
407 DDrot(
DDName(rotNameNippleToCover,
"pixfwdNipple"),
408 make_unique<DDRotationMatrix>(
409 rpNC.xx(), rpNC.xy(), rpNC.xz(), rpNC.yx(), rpNC.yy(), rpNC.yz(), rpNC.zx(), rpNC.zy(), rpNC.zz()));
410 edm::LogVerbatim(
"PixelGeom") <<
"DDPixFwdBlades::Defines " <<
DDName(rotNameNippleToCover,
"pixfwdNipple")
415 CLHEP::HepRotation rpNB(rpNC * rCB);
418 make_unique<DDRotationMatrix>(
419 rpNB.xx(), rpNB.xy(), rpNB.xz(), rpNB.yx(), rpNB.yy(), rpNB.yz(), rpNB.zx(), rpNB.zy(), rpNB.zz()));
420 edm::LogVerbatim(
"PixelGeom") <<
"DDPixFwdBlades::Defines " <<
DDName(rotNameNippleToBody,
"pixfwdNipple") <<
" with " 422 double angleBody = vZ.angle(rpNB * vZ);
Log< level::Info, true > LogVerbatim
double nippleTranslationZ
Sin< T >::type sin(const T &t)
DDName is used to identify DDD entities uniquely.
Cos< T >::type cos(const T &t)
double nippleTranslationX
CLHEP::HepRotation * nippleRotationZMinus
CLHEP::HepRotation * nippleRotationZPlus
double nippleTranslationY
a named constant corresponding to the DDL-XML tag <Constant> and <ConstantsVector> ...