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

#include <GeoPixelCable.h>

Inheritance diagram for GeoPixelCable:
Collaboration diagram for GeoPixelCable:

Public Member Functions

 GeoPixelCable (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
int numElements () const
void setElement (int i)
double getStackOffset ()
double zpos ()

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 Member Functions

void fillElements (int layer, int phiSector)

Private Attributes

int m_currentElement
std::vector< int > m_elements

Detailed Description

Definition at line 11 of file GeoPixelCable.h.

Constructor & Destructor Documentation

◆ GeoPixelCable()

GeoPixelCable::GeoPixelCable ( 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 14 of file GeoPixelCable.cxx.

19 : GeoVPixelFactory(ddmgr, mgr, sqliteReader, std::move(mapFPV), std::move(mapAX)),
21{
22 fillElements(m_gmt_mgr->GetLD(), m_gmt_mgr->Phi());
23 if (m_elements.empty()) { // If no information for layer use layer 0 numbers.
24 fillElements(0, m_gmt_mgr->Phi());
25 }
26}
void fillElements(int layer, int phiSector)
std::vector< int > m_elements
PixelGeometryManager * m_gmt_mgr
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 * GeoPixelCable::Build ( )
overridevirtual

Implements GeoVPixelFactory.

Definition at line 50 of file GeoPixelCable.cxx.

50 {
51
52 if (m_currentElement < 0){
53 std::cout << "ERROR: GeoPixelCableCurrent, current element not set." << std::endl;
54 return nullptr;
55 }
56
57
58 int tableIndex = m_elements[m_currentElement];
59 //std::cout << "GeoPixelCable: " << m_currentElement << ", " << tableIndex << std::endl;
60
61 double zstart = m_gmt_mgr->PixelCableZStart(tableIndex);
62 double zend = m_gmt_mgr->PixelCableZEnd(tableIndex);
63 double length = std::abs(zend - zstart);
64 double width = m_gmt_mgr->PixelCableWidth(tableIndex);
65 double thickness = m_gmt_mgr->PixelCableThickness(tableIndex);
66 double weight = m_gmt_mgr->PixelCableWeight(tableIndex);
67 std::string label = m_gmt_mgr->PixelCableLabel(tableIndex);
68
69 std::string matName = m_gmt_mgr->getMaterialName("Cable", m_gmt_mgr->GetLD());
70 const GeoMaterial* cableMat = m_mat_mgr->getMaterial(matName);
71
72 // If weight supplied use it to calculate the required thickness
73 // otherwise use the suppled thickness
74 if (weight != 0) {
75 thickness = weight / (cableMat->getDensity() * length * width);
76 }
77
78 const GeoBox* cableBox = new GeoBox(0.5*thickness,0.5*width,0.5*length);
79 std::string logName = "Cable";
80 std::ostringstream o;
81 o << m_gmt_mgr->getLD_Label() << label;
82 logName = logName+o.str();
83 //std::cout << logName << ": " << weight/Gaudi::Units::g << " g, " << thickness << std::endl;
84
85 GeoLogVol* theCable = new GeoLogVol(logName,cableBox,cableMat);
86 GeoPhysVol* cablePhys = new GeoPhysVol(theCable);
87 return cablePhys;
88}
double length(const pvec &v)
const double width
InDetMaterialManager * m_mat_mgr
std::string label(const std::string &format, int i)
Definition label.h:19

◆ fillElements()

void GeoPixelCable::fillElements ( int layer,
int phiSector )
private

Definition at line 29 of file GeoPixelCable.cxx.

30{
31 int nentries = m_gmt_mgr->PixelCableElements();
32 int biStaveType = m_gmt_mgr->PixelBiStaveType(layer, phiSector);
33
34 for (int i = 0; i < nentries; i++) {
35 // bistave number
36 // 0 means both staves in bistave the same
37 // 1 means odd bistave
38 // 2 means even bistave
39 // If 0 then keep for all staves otherwise keep if odd/even correspond
40 int cableBiStaveNum = m_gmt_mgr->PixelCableBiStaveNum(i);
41 if (m_gmt_mgr->PixelCableLayerNum(i) == layer) {
42 if (!cableBiStaveNum || ((cableBiStaveNum%2) == biStaveType%2)) {
43 m_elements.push_back(i);
44 }
45 }
46 }
47}

◆ getStackOffset()

double GeoPixelCable::getStackOffset ( )

Definition at line 99 of file GeoPixelCable.cxx.

99 {
100 int tableIndex = m_elements[m_currentElement];
101 return m_gmt_mgr->PixelCableStackOffset(tableIndex);
102
103}

◆ numElements()

int GeoPixelCable::numElements ( ) const
inline

Definition at line 19 of file GeoPixelCable.h.

19{return m_elements.size();}

◆ setElement()

void GeoPixelCable::setElement ( int i)
inline

Definition at line 20 of file GeoPixelCable.h.

◆ zpos()

double GeoPixelCable::zpos ( )

Definition at line 91 of file GeoPixelCable.cxx.

91 {
92
93 int tableIndex = m_elements[m_currentElement];
94 double zstart = m_gmt_mgr->PixelCableZStart(tableIndex);
95 double zend = m_gmt_mgr->PixelCableZEnd(tableIndex);
96 return 0.5*(zend + zstart);
97}

Member Data Documentation

◆ m_currentElement

int GeoPixelCable::m_currentElement
private

Definition at line 25 of file GeoPixelCable.h.

◆ m_DDmgr

InDetDD::PixelDetectorManager* GeoVPixelFactory::m_DDmgr
protectedinherited

Definition at line 45 of file GeoVPixelFactory.h.

◆ m_elements

std::vector<int> GeoPixelCable::m_elements
private

Definition at line 26 of file GeoPixelCable.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_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_sqliteReader

GeoModelIO::ReadGeoModel* GeoVPixelFactory::m_sqliteReader
protectedinherited

Definition at line 46 of file GeoVPixelFactory.h.


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