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

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;
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();
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();
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 }

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

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:
GeoPixelStaveRing::m_outerRadius
double m_outerRadius
Definition: GeoPixelStaveRing.h:29
GeoPixelStaveRing::m_ringPosition
std::string m_ringPosition
Definition: GeoPixelStaveRing.h:30
PixelGeometryManager::IBLSupportMidRingOuterRadius
virtual double IBLSupportMidRingOuterRadius()=0
PixelGeometryManager::IBLSupportRingInnerRadius
virtual double IBLSupportRingInnerRadius()=0
PixelGeometryManager::msg
MsgStream & msg(MSG::Level lvl) const
Definition: PixelGeometryManager.h:611
GeoPixelStaveRing::m_innerRadius
double m_innerRadius
Definition: GeoPixelStaveRing.h:29
GeoPixelStaveRing::m_ringName
std::string m_ringName
Definition: GeoPixelStaveRing.h:31
PixelGeometryManager::IBLSupportMidRingWidth
virtual double IBLSupportMidRingWidth()=0
GeoVPixelFactory::m_mapAX
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
Definition: GeoVPixelFactory.h:48
PixelGeometryManager::IBLSupportRingOuterRadius
virtual double IBLSupportRingOuterRadius()=0
GeoVPixelFactory::m_sqliteReader
GeoModelIO::ReadGeoModel * m_sqliteReader
Definition: GeoVPixelFactory.h:46
PixelGeometryManager::IBLSupportMidRingInnerRadius
virtual double IBLSupportMidRingInnerRadius()=0
GeoVPixelFactory::m_DDmgr
InDetDD::PixelDetectorManager * m_DDmgr
Definition: GeoVPixelFactory.h:45
GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: GeoVPixelFactory.h:43
GeoVPixelFactory::m_mapFPV
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
Definition: GeoVPixelFactory.h:47
GeoPixelStaveRing::m_physVol
GeoVPhysVol * m_physVol
Definition: GeoPixelStaveRing.h:27
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
GeoPixelSiCrystal
Definition: GeoPixelSiCrystal.h:20
PixelGeometryManager::IBLServiceGetMaxRadialPosition
virtual double IBLServiceGetMaxRadialPosition(const std::string &srvName, const std::string &srvType, double srvZmin, double srvZmax)=0
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
InDetMaterialManager::getMaterialForVolume
const GeoMaterial * getMaterialForVolume(const std::string &materialName, double volume, const std::string &newName="")
Create and get material with a density calculated to give weight in predefined weight table.
Definition: InDetMaterialManager.cxx:460
GeoVPixelFactory::GeoVPixelFactory
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)
Definition: GeoVPixelFactory.cxx:11
PixelGeometryManager::IBLSupportRingWidth
virtual double IBLSupportRingWidth()=0
PixelGeometryManager::IBLStaveLength
virtual double IBLStaveLength()=0
GeoVPixelFactory::m_mat_mgr
InDetMaterialManager * m_mat_mgr
Definition: GeoVPixelFactory.h:44
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
PixelGeometryManager::IBLSupportMechanicalStaveRingFixPoint
virtual double IBLSupportMechanicalStaveRingFixPoint()=0
GeoPixelStaveRing::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelStaveRing.cxx:52
PixelGeometryManager::IBLStaveMechanicalStaveEndBlockFixPoint
virtual double IBLStaveMechanicalStaveEndBlockFixPoint()=0
DEBUG
#define DEBUG
Definition: page_access.h:11
GeoPixelModule
Definition: GeoPixelModule.h:14
InDetMaterialManager::getMaterial
const GeoMaterial * getMaterial(const std::string &materialName)
Get material. First looks for locally defined material and if not found looks in GeoModel material ma...
Definition: InDetMaterialManager.cxx:96
GeoPixelStaveRing::m_zPosition
double m_zPosition
Definition: GeoPixelStaveRing.h:28
PixelGeometryManager::GetLD
virtual int GetLD()=0