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

1424  : GeoVPixelFactory (ddmgr, mgr)
1425 {
1426  //
1427  // Define the log volume in the constructor, so I do it only once.
1428  //
1429 
1430  //
1431  // Length is in the db
1432  //
1433  double halflength = m_gmt_mgr->PixelLadderHalfLength();
1434  //
1435  // The width is the maximum among the componenst widths
1436  //
1439  //
1440  // The thickness has to be calculated
1441  //
1442  double thickness = this->Thickness();
1443  const GeoMaterial* air = m_mat_mgr->getMaterial("std::Air");
1444  const GeoBox* solBox = new GeoBox(thickness*0.5,width*0.5,halflength+m_epsilon);
1445  m_theBox = new GeoLogVol("TubeCablesLog",solBox,air);
1446 
1447 }

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

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

◆ operator=()

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

◆ Thickness()

double GeoPixelTubeCables::Thickness ( )

Definition at line 1515 of file PixelDetectorDC1DC2.cxx.

1515  {
1516  //
1517  // The thickness of the box is calculated starting from the thickness of
1518  // its components: Ladder + cables
1519  //
1520  double thick = m_gmt_mgr->PixelLadderThickness()+
1522  return thick;
1523 }

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
max
#define max(a, b)
Definition: cfImp.cxx:41
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:1536
PixelGeoDC2::GeoVPixelFactory::m_mat_mgr
StoredMaterialManager * m_mat_mgr
Definition: PixelDetectorDC1DC2.h:52
PixelGeoDC2::GeoPixelTubeCables::Thickness
double Thickness()
Definition: PixelDetectorDC1DC2.cxx:1515
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:18
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:24
PixelGeoDC2::PixelGeometryManager::PixelCableZMax
virtual double PixelCableZMax()=0
PixelGeoDC2::PixelGeometryManager::PixelNModule
virtual int PixelNModule()=0
python.SystemOfUnits.pc
float pc
Definition: SystemOfUnits.py:99
PixelGeoDC2::PixelGeometryManager::PixelCableThickness
virtual double PixelCableThickness()=0