ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_FwdWheel.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef SCT_GEOMODEL_SCT_FWDWHEEL_H
6#define SCT_GEOMODEL_SCT_FWDWHEEL_H
7
9
10#include <memory>
11#include <vector>
12
13
14class SCT_FwdRing;
20class SCT_FwdModule;
21class SCT_FwdFSI;
22
23class FSIDetails;
24
26{
27
28public:
29 SCT_FwdWheel(const std::string & name,
30 int iWheel,
31 const std::vector<SCT_FwdModule *> & modules,
32 int ec,
33 InDetDD::SCT_DetectorManager* detectorManager,
34 SCT_GeometryManager* geometryManager,
35 SCT_MaterialManager* materials,
36 GeoModelIO::ReadGeoModel* sqliteReader,
37 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
38 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX);
40 //Explicitly disallow copy and assignment to appease coverity
41 SCT_FwdWheel(const SCT_FwdWheel &) = delete;
42 SCT_FwdWheel & operator=(const SCT_FwdWheel &) = delete;
43
44 int wheelNum() const {return m_iWheel;}
45
46 // Retrieve basic parameters
47 //
48 double zPosition() const {return m_zPosition;}
49 int numRings() const {return m_numRings;}
50 int ringType(int i) const {return m_ringType[i];}
51 const SCT_FwdRing* ring(int i) {return m_rings[i].get();}
52
53 //
54 // Retrieve derived parameters
55 //
56 double thickness() const {return m_thickness;}
57 double innerRadius() const {return m_innerRadius;}
58 double outerRadius() const {return m_outerRadius;}
59 int totalModules() const {return m_totalModules;}
60
61 virtual GeoVPhysVol * build(SCT_Identifier id);
62
63
64private:
65 void getParameters();
66 virtual const GeoLogVol * preBuild();
67
70
71 // Basic parameters
72 int m_numRings = 0;
73 double m_zPosition = 0.0;
74 std::vector<int> m_ringType;
75 std::vector<int> m_patchPanelType;
76 std::vector<double> m_patchPanelLocAngle;
77 std::vector<bool> m_patchPanelRepeatQuadrant;
81 int m_numWheels = 0;
84 bool m_pPCoolingPresent = false;
86 std::vector<double> m_discFixationLocAngle;
87
88 // Derived parameters
89 double m_innerRadius = 0.0;
90 double m_outerRadius = 0.0;
91 double m_thickness = 0.0;
92 double m_thicknessFront = 0.0;
93 double m_thicknessBack = 0.0;
96 double m_ringMaxRadius = 0.0;
97
98 double m_safety = 0.0;
99
100 // Child detector elements
101 std::vector<std::unique_ptr<SCT_FwdRing>> m_rings;
102 std::unique_ptr<SCT_FwdDiscSupport> m_discSupport;
103 std::vector<std::unique_ptr<SCT_FwdPatchPanel>> m_patchPanel;
104 std::unique_ptr<SCT_FwdPPConnector> m_pPConnector;
105 std::unique_ptr<SCT_FwdPPCooling> m_pPCooling;
106 std::vector<std::unique_ptr<SCT_FwdFSI>> m_fsiType;
107 std::unique_ptr<SCT_FwdDiscFixation> m_discFixation;
108
109 const std::vector<SCT_FwdModule*> & m_modules;
110
111
112 const std::vector<const FSIDetails *> * m_fsiVector = nullptr;
113
114
115};
116
117#endif // SCT_GEOMODEL_SCT_FWDWHEEL_H
118
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
std::vector< std::unique_ptr< SCT_FwdRing > > m_rings
void getParameters()
std::vector< std::unique_ptr< SCT_FwdPatchPanel > > m_patchPanel
std::unique_ptr< SCT_FwdPPCooling > m_pPCooling
bool m_pPCoolingPresent
double m_ringMaxRadius
virtual GeoVPhysVol * build(SCT_Identifier id)
int ringType(int i) const
SCT_FwdWheel(const std::string &name, int iWheel, const std::vector< SCT_FwdModule * > &modules, int ec, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)
std::unique_ptr< SCT_FwdPPConnector > m_pPConnector
const std::vector< SCT_FwdModule * > & m_modules
double innerRadius() const
int numRings() const
bool m_optoHarnessPresent
std::vector< int > m_patchPanelType
double m_outerRadius
std::vector< bool > m_patchPanelRepeatQuadrant
double zPosition() const
std::vector< std::unique_ptr< SCT_FwdFSI > > m_fsiType
bool m_pPConnectorPresent
int m_numPatchPanelTypes
std::unique_ptr< SCT_FwdDiscSupport > m_discSupport
virtual const GeoLogVol * preBuild()
double thickness() const
double m_thicknessBack
int wheelNum() const
double m_innerRadius
double m_safety
std::vector< int > m_ringType
int totalModules() const
std::unique_ptr< SCT_FwdDiscFixation > m_discFixation
int m_numPatchPanelLocs
double m_thickness
double m_zPosition
const SCT_FwdRing * ring(int i)
std::vector< double > m_discFixationLocAngle
std::vector< double > m_patchPanelLocAngle
const std::vector< const FSIDetails * > * m_fsiVector
bool m_discFixationPresent
SCT_FwdWheel & operator=(const SCT_FwdWheel &)=delete
SCT_FwdWheel(const SCT_FwdWheel &)=delete
double outerRadius() const
double m_thicknessFront
SCT_UniqueComponentFactory(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials=nullptr, GeoModelIO::ReadGeoModel *sqliteReader=nullptr, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV=nullptr, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX=nullptr)