185 LogDebug(
"TIDGeom") <<
"==>> Constructing DDTIDModulePosAlgo...";
209 double dxbot = 0.5 *
dlBottom + sidfr;
210 double dxtop = 0.5 *
dlTop + sidfr;
211 double dxtopenv, dxbotenv;
213 double tanWafer = (dxtop - dxbot) /
fullHeight;
214 double thetaWafer = atan(tanWafer);
226 double tanEnv = (dxtopenv - dxbotenv) / (sideFrameHeight +
boxFrameHeight);
240 for (
int j1 = 0; j1 < 2; j1++) {
247 zCool = coolRadShift[j1];
258 zpos = zCool - zCenter;
259 for (
int j2 = 0; j2 < 2; j2++) {
262 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << copy <<
" positioned in "
263 << parentName <<
" at " <<
DDTranslation(xpos, ypos, zpos) <<
" with " <<
rot;
279 zpos = zBotSpacers - zCenter;
282 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << 1 <<
" positioned in " << parentName
283 <<
" at " <<
DDTranslation(0.0, ypos, zpos) <<
" with no rotation";
295 zpos = zSideSpacers - zCenter;
300 double phix, phiy, phiz;
301 phix = 0. * CLHEP::deg;
302 phiy = 90. * CLHEP::deg;
303 phiz = 0. * CLHEP::deg;
305 double thetay, thetax;
306 thetay = 90. * CLHEP::deg;
307 double thetaz = thetaWafer;
309 for (
int j1 = 0; j1 < 2; j1++) {
313 thetax = 90. * CLHEP::deg + thetaz;
314 double thetadeg = thetax / CLHEP::deg;
321 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << copy <<
" positioned in "
322 << parentName <<
" at " <<
DDTranslation(xpos, ypos, zpos) <<
" with " <<
rot;
340 zpos = zWafer - zCenter;
344 if (rotstr !=
"NULL") {
348 cpv.
position(name, parentName, k + 1, tran, rot);
349 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << k + 1 <<
" positioned in " << parentName
350 <<
" at " << tran <<
" with " <<
rot;
366 zpos = zPitch - zCenter;
368 if (rotstr !=
"NULL") {
375 cpv.
position(name, parentName, k + 1, tran, rot);
376 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << k + 1 <<
" positioned in " << parentName
377 <<
" at " << tran <<
" with " <<
rot;
388 zpos = zHybrid - zCenter;
391 cpv.
position(name, parentName, k + 1, tran, rot);
392 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << k + 1 <<
" positioned in " << parentName
393 <<
" at " << tran <<
" with " <<
rot;
404 zpos = zBoxFrame - zCenter;
407 cpv.
position(name, parentName, k + 1, tran, rot);
408 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << k + 1 <<
" positioned in " << parentName
409 <<
" at " << tran <<
" with " <<
rot;
416 zSideFrame = 0.5 * sideFrameHeight;
420 zpos = zSideFrame - zCenter;
422 if (rotstr !=
"NULL") {
429 cpv.
position(name, parentName, k + 1, tran, rot);
430 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << k + 1 <<
" positioned in " << parentName
431 <<
" at " << tran <<
" with " <<
rot;
437 double kaptonExtraHeight = 0;
441 kaptonExtraHeight = 0.5 * fabs(kaptonExtraHeight);
442 zKapton = 0.5 * (kaptonHeight + kaptonExtraHeight);
446 kaptonExtraHeight = 0.5 * fabs(kaptonExtraHeight);
447 zKapton =
boxFrameHeight + sideFrameHeight - 0.5 * (kaptonHeight + kaptonExtraHeight);
449 zpos = zKapton - zCenter;
451 if (rotstr !=
"NULL") {
458 cpv.
position(name, parentName, k + 1, tran, rot);
459 LogDebug(
"TIDGeom") <<
"DDTIDModulePosAlgo test: " << name <<
" number " << k + 1 <<
" positioned in " << parentName
460 <<
" at " << tran <<
" with " <<
rot;
463 LogDebug(
"TIDGeom") <<
"<<== End of DDTIDModulePosAlgo positioning ...";
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
vector< string > pitchName
vector< string > waferRot
Sin< T >::type sin(const T &t)
vector< string > pitchRot
vector< string > sideFrameName
DDName is used to identify DDD entities uniquely.
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
vector< string > sideFrameRot
vector< double > boxFrameZ
Cos< T >::type cos(const T &t)
vector< double > sideFrameZ
vector< double > coolRadShift
vector< string > kaptonName
vector< string > kaptonRot
vector< string > waferName
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
double sidSpacersRadShift
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation