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 1436 of file PixelDetectorDC1DC2.cxx.

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

◆ ~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 1464 of file PixelDetectorDC1DC2.cxx.

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

◆ operator=()

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

◆ Thickness()

double GeoPixelTubeCables::Thickness ( )

Definition at line 1529 of file PixelDetectorDC1DC2.cxx.

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

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:1550
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:1529
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