ATLAS Offline Software
Loading...
Searching...
No Matches
GeoPixelStaveRing Class Reference

#include <GeoPixelStaveRing.h>

Inheritance diagram for GeoPixelStaveRing:
Collaboration diagram for GeoPixelStaveRing:

Public Member Functions

 GeoPixelStaveRing (InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)
virtual GeoVPhysVol * Build () override
GeoVPhysVol * SetParametersAndBuild (const std::string &, const std::string &)
double GetPositionAlongZAxis () const
double GetInnerRadius () const
double GetOuterRadius () const

Protected Attributes

PixelGeometryManagerm_gmt_mgr
InDetMaterialManagerm_mat_mgr
InDetDD::PixelDetectorManagerm_DDmgr
GeoModelIO::ReadGeoModel * m_sqliteReader
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
const double m_epsilon

Private Attributes

GeoVPhysVol * m_physVol
double m_zPosition
double m_innerRadius
double m_outerRadius
std::string m_ringPosition
std::string m_ringName

Detailed Description

Definition at line 10 of file GeoPixelStaveRing.h.

Constructor & Destructor Documentation

◆ GeoPixelStaveRing()

GeoPixelStaveRing::GeoPixelStaveRing ( InDetDD::PixelDetectorManager * ddmgr,
PixelGeometryManager * mgr,
GeoModelIO::ReadGeoModel * sqliteReader,
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV,
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX )

Definition at line 27 of file GeoPixelStaveRing.cxx.

32 : GeoVPixelFactory (ddmgr, mgr, sqliteReader, std::move(mapFPV), std::move(mapAX)),
33 m_physVol (nullptr),
34 m_zPosition (0),
35 m_innerRadius (0),
36 m_outerRadius (0),
37 m_ringPosition ("AC"),
38 m_ringName ("staveRing")
39{
40}
std::string m_ringPosition
GeoVPhysVol * m_physVol
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)

Member Function Documentation

◆ Build()

GeoVPhysVol * GeoPixelStaveRing::Build ( )
overridevirtual

Implements GeoVPixelFactory.

Definition at line 52 of file GeoPixelStaveRing.cxx.

52 {
53
54 m_gmt_mgr->msg(MSG::INFO) <<"Build detailed stave ring support : "<<m_ringName<<" "<<m_ringPosition<<endmsg;
55
56 double safety = 0.001*Gaudi::Units::mm;
57 bool isBLayer = false;
58 if(m_gmt_mgr->GetLD() == 0) isBLayer = true;
59 GeoPixelSiCrystal theSensor(m_DDmgr, m_gmt_mgr, m_sqliteReader, m_mapFPV, m_mapAX, isBLayer);
60 GeoPixelModule pm(m_DDmgr, m_gmt_mgr, m_sqliteReader, m_mapFPV, m_mapAX, theSensor);
61 if(m_sqliteReader) return nullptr;
62 // Ladder geometry
63
64 double endBlockFixingPoint= m_gmt_mgr->IBLStaveMechanicalStaveEndBlockFixPoint();
65 double totalStaveLength = m_gmt_mgr->IBLStaveLength();
66
67 if(m_ringPosition=="AC")
68 {
69 // Stave ring geometry
70 double ringWidth = m_gmt_mgr->IBLSupportRingWidth();
71 m_innerRadius = m_gmt_mgr->IBLSupportRingInnerRadius();
72 m_outerRadius = m_gmt_mgr->IBLSupportRingOuterRadius();
73 double fixingPoint = m_gmt_mgr->IBLSupportMechanicalStaveRingFixPoint();
74
75 // SES (dec 2012 - IBL pcache ): values hard coded as the one defined in ATLAS-IBL-02-01-00
76 // to get rid off the overlap between staverings ans ladder with ATLAS-IBL-02-00-00 values
77 if(m_innerRadius<29.56) m_innerRadius=29.56; // instead of 29.2
78 if(m_outerRadius>31.85) m_outerRadius=31.85; // instead of 32.
79
80 double endBlockPosition = totalStaveLength*0.5+endBlockFixingPoint;
81 double ringPosition = -ringWidth*0.5+fixingPoint;
82 m_zPosition = endBlockPosition-ringPosition;
83
84 double IPTouterRadius = m_gmt_mgr->IBLServiceGetMaxRadialPosition("IPT","simple",m_zPosition,m_zPosition)+safety;
85 m_gmt_mgr->msg(MSG::DEBUG)<<"IBL stave ring "<<m_zPosition<<" "<<m_innerRadius<<" "<<IPTouterRadius<<endmsg;
86 if(IPTouterRadius>m_innerRadius) m_innerRadius=IPTouterRadius;
87
88 // create log and phys volumes
89 m_gmt_mgr->msg(MSG::DEBUG)<<"-> IBL stave ring "<<m_zPosition<<" "<<m_innerRadius<<" "<<m_outerRadius<<endmsg;
90 const GeoTube* ring_tube = new GeoTube(m_innerRadius,m_outerRadius,ringWidth*0.5);
91 const GeoMaterial* ring_material_weight = m_mat_mgr->getMaterialForVolume("pix::StaveRing_IBLwght",ring_tube->volume());
92 m_gmt_mgr->msg(MSG::DEBUG)<<"IBL stave ring weighted material : "<<(ring_material_weight==nullptr)<<endmsg;
93
94 GeoLogVol * logVol = nullptr;
95 if(ring_material_weight)
96 logVol = new GeoLogVol(m_ringName,ring_tube,ring_material_weight);
97 else {
98 const GeoMaterial* ring_material = m_mat_mgr->getMaterial("pix::StaveRing_IBL");
99 logVol = new GeoLogVol(m_ringName,ring_tube,ring_material);
100 }
101 GeoPhysVol * logVolPV = new GeoPhysVol(logVol);
102 m_gmt_mgr->msg(MSG::INFO) <<"Build detailed stave ring support - logVol : "<<logVol->getName()<<endmsg;
103
104 return logVolPV;
105 }
106
107 // Stave ring geometry
108 double ringWidth = m_gmt_mgr->IBLSupportMidRingWidth();
109 m_innerRadius = m_gmt_mgr->IBLSupportMidRingInnerRadius();
110 m_outerRadius = m_gmt_mgr->IBLSupportMidRingOuterRadius();
111
112 m_zPosition = 0.0;
113
114 // create log and phys volumes
115 const GeoTube* ring_tube = new GeoTube(m_innerRadius,m_outerRadius,ringWidth*0.5);
116 const GeoMaterial* ring_material_weight = m_mat_mgr->getMaterialForVolume("pix::StaveRingMid_IBLwght",ring_tube->volume());
117 GeoLogVol *logVol=nullptr;
118 if(ring_material_weight)
119 logVol = new GeoLogVol(m_ringName,ring_tube,ring_material_weight);
120 else {
121 const GeoMaterial* ring_material = m_mat_mgr->getMaterial("pix::MiddleRing_IBL");
122 logVol = new GeoLogVol(m_ringName,ring_tube,ring_material);
123 }
124
125 GeoPhysVol * logVolPV = new GeoPhysVol(logVol);
126
127 m_gmt_mgr->msg(MSG::INFO) <<"Build detailed stave ring support - logVol : "<<logVol->getName()<<endmsg;
128
129 return logVolPV;
130
131}
#define endmsg
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
PixelGeometryManager * m_gmt_mgr
InDetDD::PixelDetectorManager * m_DDmgr
InDetMaterialManager * m_mat_mgr

◆ GetInnerRadius()

double GeoPixelStaveRing::GetInnerRadius ( ) const
inline

Definition at line 23 of file GeoPixelStaveRing.h.

23{ return m_innerRadius; }

◆ GetOuterRadius()

double GeoPixelStaveRing::GetOuterRadius ( ) const
inline

Definition at line 24 of file GeoPixelStaveRing.h.

24{ return m_outerRadius; }

◆ GetPositionAlongZAxis()

double GeoPixelStaveRing::GetPositionAlongZAxis ( ) const
inline

Definition at line 21 of file GeoPixelStaveRing.h.

21{ return m_zPosition; }

◆ SetParametersAndBuild()

GeoVPhysVol * GeoPixelStaveRing::SetParametersAndBuild ( const std::string & ringName,
const std::string & ringPos )

Definition at line 42 of file GeoPixelStaveRing.cxx.

44{
45 m_ringName=ringName;
46 m_ringPosition=ringPos;
47 m_physVol = Build();
48
49 return m_physVol;
50}
virtual GeoVPhysVol * Build() override

Member Data Documentation

◆ m_DDmgr

InDetDD::PixelDetectorManager* GeoVPixelFactory::m_DDmgr
protectedinherited

Definition at line 45 of file GeoVPixelFactory.h.

◆ m_epsilon

const double GeoVPixelFactory::m_epsilon
protectedinherited

Definition at line 49 of file GeoVPixelFactory.h.

◆ m_gmt_mgr

PixelGeometryManager* GeoVPixelFactory::m_gmt_mgr
protectedinherited

Definition at line 43 of file GeoVPixelFactory.h.

◆ m_innerRadius

double GeoPixelStaveRing::m_innerRadius
private

Definition at line 29 of file GeoPixelStaveRing.h.

◆ m_mapAX

std::shared_ptr<std::map<std::string, GeoAlignableTransform*> > GeoVPixelFactory::m_mapAX
protectedinherited

Definition at line 48 of file GeoVPixelFactory.h.

◆ m_mapFPV

std::shared_ptr<std::map<std::string, GeoFullPhysVol*> > GeoVPixelFactory::m_mapFPV
protectedinherited

Definition at line 47 of file GeoVPixelFactory.h.

◆ m_mat_mgr

InDetMaterialManager* GeoVPixelFactory::m_mat_mgr
protectedinherited

Definition at line 44 of file GeoVPixelFactory.h.

◆ m_outerRadius

double GeoPixelStaveRing::m_outerRadius
private

Definition at line 29 of file GeoPixelStaveRing.h.

◆ m_physVol

GeoVPhysVol* GeoPixelStaveRing::m_physVol
private

Definition at line 27 of file GeoPixelStaveRing.h.

◆ m_ringName

std::string GeoPixelStaveRing::m_ringName
private

Definition at line 31 of file GeoPixelStaveRing.h.

◆ m_ringPosition

std::string GeoPixelStaveRing::m_ringPosition
private

Definition at line 30 of file GeoPixelStaveRing.h.

◆ m_sqliteReader

GeoModelIO::ReadGeoModel* GeoVPixelFactory::m_sqliteReader
protectedinherited

Definition at line 46 of file GeoVPixelFactory.h.

◆ m_zPosition

double GeoPixelStaveRing::m_zPosition
private

Definition at line 28 of file GeoPixelStaveRing.h.


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