ATLAS Offline Software
Public Member Functions | Protected Attributes | Private Attributes | List of all members
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  //
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 }

◆ ~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  //
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  //
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 }

◆ 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()+
1539  return thick;
1540 }

Member Data Documentation

◆ m_DDmgr

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

Definition at line 53 of file PixelDetectorDC1DC2.h.

◆ m_epsilon

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

Definition at line 54 of file PixelDetectorDC1DC2.h.

◆ m_gmt_mgr

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

Definition at line 51 of file PixelDetectorDC1DC2.h.

◆ m_mat_mgr

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

Definition at line 52 of file PixelDetectorDC1DC2.h.

◆ 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:
PixelGeoDC2::GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: PixelDetectorDC1DC2.h:51
PixelGeoDC2::PixelGeometryManager::PixelLadderThickness
virtual double PixelLadderThickness()=0
PixelGeoDC2::GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: PixelDetectorDC1DC2.h:53
PixelGeoDC2::GeoVPixelFactory::m_epsilon
const double m_epsilon
Definition: PixelDetectorDC1DC2.h:54
PixelGeoDC2::PixelGeometryManager::PixelLadderHalfLength
virtual double PixelLadderHalfLength()=0
PixelGeoDC2::GeoPixelLadderStruct
Definition: PixelDetectorDC1DC2.h:235
PixelGeoDC2::GeoVPixelFactory::GeoVPixelFactory
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
Definition: PixelDetectorDC1DC2.cxx:1553
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
PixelGeoDC2::GeoVPixelFactory::m_mat_mgr
StoredMaterialManager * m_mat_mgr
Definition: PixelDetectorDC1DC2.h:52
PixelGeoDC2::GeoPixelTubeCables::Thickness
double Thickness()
Definition: PixelDetectorDC1DC2.cxx:1532
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
PixelGeoDC2::PixelGeometryManager::PixelCableWidth
virtual double PixelCableWidth()=0
PixelGeoDC2::GeoPixelCable
Definition: PixelDetectorDC1DC2.h:79
PixelGeoDC2::PixelGeometryManager::PixelLadderWidth
virtual double PixelLadderWidth()=0
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
PixelGeoDC2::GeoPixelTubeCables::m_theBox
GeoIntrusivePtr< GeoLogVol > m_theBox
Definition: PixelDetectorDC1DC2.h:367
StoredMaterialManager::getMaterial
virtual const GeoMaterial * getMaterial(const std::string &name)=0
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:23
PixelGeoDC2::PixelGeometryManager::PixelCableZMax
virtual double PixelCableZMax()=0
PixelGeoDC2::PixelGeometryManager::PixelNModule
virtual int PixelNModule()=0
python.SystemOfUnits.pc
float pc
Definition: SystemOfUnits.py:114
PixelGeoDC2::PixelGeometryManager::PixelCableThickness
virtual double PixelCableThickness()=0