ATLAS Offline Software
Loading...
Searching...
No Matches
PixelGeoDC2::GeoPixelTubeCables Class Reference

#include <PixelDetectorDC1DC2.h>

Inheritance diagram for PixelGeoDC2::GeoPixelTubeCables:
Collaboration diagram for PixelGeoDC2::GeoPixelTubeCables:

Public Member Functions

 GeoPixelTubeCables (InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
virtual ~GeoPixelTubeCables ()=default
 GeoPixelTubeCables (const GeoPixelTubeCables &)=delete
GeoPixelTubeCablesoperator= (const GeoPixelTubeCables &)=delete
virtual GeoVPhysVol * Build () override
double Thickness ()

Protected Attributes

PixelGeometryManagerm_gmt_mgr {}
StoredMaterialManagerm_mat_mgr {}
InDetDD::PixelDetectorManagerm_DDmgr {}
const double m_epsilon {}

Private Attributes

GeoIntrusivePtr< GeoLogVol > m_theBox

Detailed Description

Definition at line 357 of file PixelDetectorDC1DC2.h.

Constructor & Destructor Documentation

◆ GeoPixelTubeCables() [1/2]

GeoPixelTubeCables::GeoPixelTubeCables ( InDetDD::PixelDetectorManager * ddmgr,
PixelGeometryManager * mgr )

Definition at line 1439 of file PixelDetectorDC1DC2.cxx.

1441 : GeoVPixelFactory (ddmgr, mgr)
1442{
1443 //
1444 // Define the log volume in the constructor, so I do it only once.
1445 //
1446
1447 //
1448 // Length is in the db
1449 //
1450 double halflength = m_gmt_mgr->PixelLadderHalfLength();
1451 //
1452 // The width is the maximum among the componenst widths
1453 //
1454 double width = std::max(m_gmt_mgr->PixelLadderWidth(),
1455 m_gmt_mgr->PixelCableWidth());
1456 //
1457 // The thickness has to be calculated
1458 //
1459 double thickness = this->Thickness();
1460 const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
1461 const GeoBox* solBox = new GeoBox(thickness*0.5,width*0.5,halflength+m_epsilon);
1462 m_theBox = new GeoLogVol("TubeCablesLog",solBox,air);
1463
1464}
const double width
GeoIntrusivePtr< GeoLogVol > m_theBox
StoredMaterialManager * m_mat_mgr
PixelGeometryManager * m_gmt_mgr
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)

◆ ~GeoPixelTubeCables()

virtual PixelGeoDC2::GeoPixelTubeCables::~GeoPixelTubeCables ( )
virtualdefault

◆ GeoPixelTubeCables() [2/2]

PixelGeoDC2::GeoPixelTubeCables::GeoPixelTubeCables ( const GeoPixelTubeCables & )
delete

Member Function Documentation

◆ Build()

GeoVPhysVol * GeoPixelTubeCables::Build ( )
overridevirtual

Implements PixelGeoDC2::GeoVPixelFactory.

Definition at line 1467 of file PixelDetectorDC1DC2.cxx.

1467 {
1468 GeoPhysVol* TCPhys = new GeoPhysVol(m_theBox);
1469 //
1470 // Place the Ladder Structure. Don't understand why this is going in the
1471 // tube & cables section...
1472 //
1473 GeoPixelLadderStruct pls (m_DDmgr, m_gmt_mgr);
1474 GeoNameTag* tag = new GeoNameTag("LadderStructure");
1475 GeoVPhysVol* ladderstructPhys = pls.Build() ;
1476 double xpos = 0.5*(-this->Thickness()+m_gmt_mgr->PixelLadderThickness());
1477 GeoTrf::Translate3D pos(xpos,0.,0.);
1478 GeoTransform* xform = new GeoTransform(pos);
1479 TCPhys->add(tag);
1480 TCPhys->add(xform);
1481 TCPhys->add(ladderstructPhys);
1482 //
1483 // Place the cables... ouch!
1484 //
1485 // I do it in a symmetric way, assuming that the routing of the
1486 // central module is done half on the right and half on the left.
1487 // thus I have 7 cables running on each side.
1488 //
1489 GeoPixelCable pc (m_DDmgr, m_gmt_mgr);
1490 double xcabshift = 0.;
1491 for(int ii = 0; ii <= m_gmt_mgr->PixelNModule()/2; ii++) {
1492 pc.SetModuleNumber(ii);
1493 double zcabpos = m_gmt_mgr->PixelCableZMax()-pc.Length()/2.+m_epsilon/2.;
1494 xcabshift += pc.Thickness()/2.;
1495 double xcabpos = - this->Thickness()/2. + m_gmt_mgr->PixelLadderThickness()+xcabshift;
1496 //
1497 // Place the cables on both sides.
1498 // piling them up. this is slightly different from what in G3
1499 // where the cables are not piled up, I don't see a good reason for
1500 // that. In G3 there is an empty space b/w the cable from the center
1501 // and the cable from the first module, as the shift is not calculated
1502 // in the same way.
1503 //
1504 xcabshift += pc.Thickness()/2.;
1505 GeoTrf::Translate3D cablepos(xcabpos,0.,zcabpos);
1506 GeoTransform* xform = new GeoTransform(cablepos);
1507 GeoNameTag *tag = new GeoNameTag("Cable");
1508 //
1509 // Left side
1510 //
1511 GeoVPhysVol *cablePhys1 = pc.Build();
1512 TCPhys->add(tag);
1513 TCPhys->add(xform);
1514 // TCPhys->add(new GeoIdentifierTag(ii) );
1515 TCPhys->add(cablePhys1);
1516 //
1517 // Right side
1518 //
1519 GeoVPhysVol *cablePhys2 = pc.Build();
1520 cablepos = GeoTrf::Translate3D(xcabpos,0.,-zcabpos);
1521 xform = new GeoTransform(cablepos);
1522 TCPhys->add(tag);
1523 TCPhys->add(xform);
1524 // TCPhys->add(new GeoIdentifierTag(ii+100) );
1525 TCPhys->add(cablePhys2);
1526 }
1527
1528 return TCPhys;
1529}
InDetDD::PixelDetectorManager * m_DDmgr

◆ operator=()

GeoPixelTubeCables & PixelGeoDC2::GeoPixelTubeCables::operator= ( const GeoPixelTubeCables & )
delete

◆ Thickness()

double GeoPixelTubeCables::Thickness ( )

Definition at line 1532 of file PixelDetectorDC1DC2.cxx.

1532 {
1533 //
1534 // The thickness of the box is calculated starting from the thickness of
1535 // its components: Ladder + cables
1536 //
1537 double thick = m_gmt_mgr->PixelLadderThickness()+
1538 m_gmt_mgr->PixelCableThickness();
1539 return thick;
1540}

Member Data Documentation

◆ m_DDmgr

InDetDD::PixelDetectorManager* PixelGeoDC2::GeoVPixelFactory::m_DDmgr {}
protectedinherited

Definition at line 53 of file PixelDetectorDC1DC2.h.

53{};

◆ m_epsilon

const double PixelGeoDC2::GeoVPixelFactory::m_epsilon {}
protectedinherited

Definition at line 54 of file PixelDetectorDC1DC2.h.

54{};

◆ m_gmt_mgr

PixelGeometryManager* PixelGeoDC2::GeoVPixelFactory::m_gmt_mgr {}
protectedinherited

Definition at line 51 of file PixelDetectorDC1DC2.h.

51{};

◆ m_mat_mgr

StoredMaterialManager* PixelGeoDC2::GeoVPixelFactory::m_mat_mgr {}
protectedinherited

Definition at line 52 of file PixelDetectorDC1DC2.h.

52{};

◆ m_theBox

GeoIntrusivePtr<GeoLogVol> PixelGeoDC2::GeoPixelTubeCables::m_theBox
private

Definition at line 367 of file PixelDetectorDC1DC2.h.


The documentation for this class was generated from the following files: