159 LogDebug(
"TIDGeom") <<
"==>> Constructing DDTIDModuleAlgo...";
182 double dxbot = 0.5*
dlBottom + sidfr;
183 double dxtop = 0.5*
dlTop + sidfr;
184 double dxtopenv, dxbotenv;
196 double bl1 = dxbotenv;
197 double bl2 = dxtopenv;
203 h1, bl1, bl1, 0, h1, bl2, bl2, 0);
206 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
207 <<
" Trap made of " <<
genMat <<
" of dimensions " << dz
208 <<
", 0, 0, " << h1 <<
", " << bl1 <<
", " << bl1
209 <<
", 0, " << h1 <<
", " << bl2 <<
", " << bl2
221 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
222 <<
" Box made of " << matter.
ddname() <<
" of dimensions " 223 << dx <<
", " << dy <<
", " <<
dz;
234 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
235 <<
" Box made of " << matter.ddname() <<
" of dimensions " 236 << dx <<
", " << dy <<
", " <<
dz;
246 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
247 <<
" Box made of " << matter.ddname() <<
" of dimensions " 248 << dx <<
", " << dy <<
", " <<
dz;
269 dz = 0.5 * sideFrameHeight;
272 dz, 0, 0, h1, bbl1, bbl1, 0,
274 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
275 <<
" Trap made of " << matter.ddname() <<
" of dimensions " 276 << dz <<
", 0, 0, " << h1 <<
", " << bbl1 <<
", " 277 << bbl1 <<
", 0, " << h1 <<
", " << bbl2 <<
", " 300 dz, 0,0, h1,bbl1,bbl1, 0,
302 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
303 <<
" Trap made of " << matter.ddname() <<
" of dimensions " 304 << dz <<
", 0, 0, " << h1 <<
", " << bbl1 <<
", " 305 << bbl1 <<
", 0, " << h1 <<
", " << bbl2 <<
", " 310 if (rotstr !=
"NULL") {
317 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test: " << holeFrame.name()
318 <<
" number 1 positioned in " << sideFrame.name()
319 <<
" at (0,0," << zpos <<
") with no rotation";
323 double kaptonExtraHeight=0;
329 kaptonExtraHeight = 0.5*fabs(kaptonExtraHeight);
340 kaptonExtraHeight = 0.5*fabs(kaptonExtraHeight);
347 dz = 0.5 * (kaptonHeight+kaptonExtraHeight);
355 dz, 0, 0, h1, bbl1, bbl1, 0,
368 bbl2 = bbl1*0.000001;
369 double thet = atan((bbl1-bbl2)/(2*dz));
372 dz, thet, 0, h1, bbl1, bbl1, 0,
381 zpos = 0.5 * kaptonHeight - bbl2;
386 solidUncut, solidCut,
391 dz, 0, 0, h1, bbl1, bbl1, 0,
396 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
397 <<
" SUBTRACTION SOLID Trap made of " << matter.ddname()
398 <<
" of dimensions " << dz <<
", 0, 0, " << h1
399 <<
", " << bbl1 <<
", " << bbl1 <<
", 0, " << h1
400 <<
", " << bbl2 <<
", " << bbl2 <<
", 0";
409 bbl1 = dxbot - kaptonWidth + kaptonOver*(dxtop-dxbot)/
fullHeight;
410 bbl2 = dxtop - kaptonWidth;
411 zpos = 0.5*(kaptonHeight-kaptonExtraHeight-
dz);
418 bbl1 = dxbot - kaptonWidth;
419 bbl2 = dxtop - kaptonWidth - kaptonOver*(dxtop-dxbot)/
fullHeight;
420 zpos = -0.5*(kaptonHeight-kaptonExtraHeight-
dz);
425 dz, 0,0, h1,bbl1,bbl1, 0,
427 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
428 <<
" Trap made of " << matter.ddname() <<
" of dimensions " 429 << dz <<
", 0, 0, " << h1 <<
", " << bbl1 <<
", " 430 << bbl1 <<
", 0, " << h1 <<
", " << bbl2 <<
", " 435 if (rotstr !=
"NULL") {
442 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test: " << holeKapton.name()
443 <<
" number 1 positioned in " << kapton.name()
444 <<
" at (0,0," << zpos <<
") with no rotation";
461 dz, 0,0, h1,bl1,bl1,0, h1,bl2,bl2,0);
462 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
463 <<
" Trap made of " << matter.ddname() <<
" of dimensions " 464 << dz <<
", 0, 0, " << h1 <<
", " << bl1 <<
", " 465 << bl1 <<
", 0, " << h1 <<
", " << bl2 <<
", " 483 dz, 0,0, h1,bl2,bl1,0, h1,bl2,bl1,0);
484 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
485 <<
" Trap made of " << matter.ddname() <<
" of dimensions " 486 << dz <<
", 0, 0, " << h1 <<
", " << bl2 <<
", " 487 << bl1 <<
", 0, " << h1 <<
", " << bl2 <<
", " 491 if (rotstr !=
"NULL") {
498 cpv.
position(active, wafer, 1, tran, rot);
499 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test: " << active.name()
500 <<
" number 1 positioned in " << wafer.name()
501 <<
" at " << tran <<
" with " <<
rot;
517 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
518 <<
" Box made of " << matter.ddname() <<
" of dimensions" 519 <<
" " << dx <<
", " << dy <<
", " <<
dz;
529 double thet = atan((bl1-bl2)/(2.*dz));
532 dz, thet, 0, h1, bl1, bl1, 0,
534 LogDebug(
"TIDGeom") <<
"DDTIDModuleAlgo test:\t" << solid.
name()
535 <<
" Trap made of " << matter.ddname() <<
" of " 536 <<
"dimensions " << dz <<
", " << thet/CLHEP::deg
537 <<
", 0, " << h1 <<
", " << bl1 <<
", " << bl1
538 <<
", 0, " << h1 <<
", " << bl2 <<
", " << bl2
544 LogDebug(
"TIDGeom") <<
"<<== End of DDTIDModuleAlgo construction ...";
DDMaterial is used to define and access material information.
Sin< T >::type sin(const T &t)
DDName is used to identify DDD entities uniquely.
std::vector< std::string > waferName
std::vector< std::string > holeKaptonName
A DDSolid represents the shape of a part.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
std::vector< std::string > kaptonName
Cos< T >::type cos(const T &t)
std::vector< std::string > holeFrameRot
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
std::vector< std::string > sideFrameName
static DDSolid trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
std::vector< double > waferThick
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
std::vector< std::string > holeFrameName
std::vector< double > backplaneThick
std::vector< std::string > pitchName
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
std::vector< std::string > activeName
std::vector< std::string > holeKaptonRot