ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_FwdModule.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_FWDMODULE_H
6#define SCT_GEOMODEL_SCT_FWDMODULE_H
7
9
10#include "SCT_FwdSensor.h"
11
12#include <memory>
13#include <string>
14
15class SCT_Identifier;
17class SCT_FwdHybrid;
18class SCT_FwdSpine;
19class SCT_FwdSubSpine;
20
21class GeoTransform;
22class GeoVPhysVol;
23class GeoPhysVol;
24
25
27{
28public:
29
30 SCT_FwdModule(const std::string & name, int ringType,
31 InDetDD::SCT_DetectorManager* detectorManager,
32 SCT_GeometryManager* geometryManager,
33 SCT_MaterialManager* materials,
34 GeoModelIO::ReadGeoModel* sqliteReader,
35 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
36 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX);
38 //explicitly disallow copy, assignment to appease coverity
39 SCT_FwdModule(const SCT_FwdModule &) = delete;
41
42 // Ring type
43 int ringType() const {return m_ringType;}
44
45 virtual GeoVPhysVol* build(SCT_Identifier id);
46
47 double stereoAngle() const {return m_stereoAngle;}
48
49 double moduleShift() const {return m_moduleShift;}
50
51 double length() const {return m_length;}
52 double outerWidth() const {return m_widthOuter;}
53 double innerWidth() const {return m_widthInner;}
54 double thickness() const {return m_thickness;}
55
56 double innerRadius() const {return m_innerRadius;}
57 double outerRadius() const {return m_outerRadius;}
58
59 double centerRadius() const {return 0.5 * (m_innerRadius + m_outerRadius);}
60 double sensorCenterRadius() const {return m_sensor->centerRadius();}
61 double powerTapeStart() const {return m_powerTapeStart;}
62
63 double mainMountPointRadius() const {return m_mainMountPoint;}
64 double secMountPointRadius() const {return m_secMountPoint;}
65 double endModuleRadius() const {return m_endLocator;}
66
67private:
68 void getParameters();
69 virtual const GeoLogVol * preBuild();
70
71// const std::string & m_name;
73
74 double m_stereoAngle = 0.0; // Magnitude of stereo angle
75 double m_length = 0.0;
76 double m_widthOuter = 0.0;
77 double m_widthInner = 0.0;
78 double m_thickness = 0.0;
79 double m_moduleShift = 0.0;
80 double m_glueThickness = 0.0;
84 int m_upperSide = 0;
85
86 double m_innerRadius = 0.0;
87 double m_outerRadius = 0.0;
88 double m_powerTapeStart = 0.0;
89
90 double m_mainMountPoint = 0.0;
91 double m_secMountPoint = 0.0;
92 double m_endLocator = 0.0;
93
94 bool m_connectorPresent = false;
95
96public:
97 // Child detector elements
98 std::unique_ptr<SCT_FwdSensor> m_sensor;
99 std::unique_ptr<SCT_FwdModuleConnector> m_connector;
100 std::unique_ptr<SCT_FwdHybrid> m_hybrid;
101 std::unique_ptr<SCT_FwdSpine> m_spine;
102 std::unique_ptr<SCT_FwdSubSpine> m_subspineL;
103 std::unique_ptr<SCT_FwdSubSpine> m_subspineR;
104};
105
106#endif // SCT_GEOMODEL_SCT_FWDMODULE_H
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
double thickness() const
double m_widthInner
int ringType() const
double m_outerRadius
SCT_FwdModule(const SCT_FwdModule &)=delete
std::unique_ptr< SCT_FwdSensor > m_sensor
std::unique_ptr< SCT_FwdModuleConnector > m_connector
virtual GeoVPhysVol * build(SCT_Identifier id)
double m_mountPointToCenter
double sensorCenterRadius() const
double outerWidth() const
double stereoAngle() const
double m_distBtwMountPoints
double innerWidth() const
double m_secMountPoint
double m_stereoAngle
double innerRadius() const
double m_glueThickness
double mainMountPointRadius() const
double m_mainMountPoint
double endModuleRadius() const
SCT_FwdModule & operator=(const SCT_FwdModule &)=delete
double m_powerTapeStart
std::unique_ptr< SCT_FwdSubSpine > m_subspineR
double m_innerRadius
std::unique_ptr< SCT_FwdSpine > m_spine
double length() const
double secMountPointRadius() const
bool m_connectorPresent
virtual const GeoLogVol * preBuild()
double powerTapeStart() const
double centerRadius() const
double m_endLocator
double outerRadius() const
double m_moduleShift
std::unique_ptr< SCT_FwdHybrid > m_hybrid
double m_widthOuter
double moduleShift() const
std::unique_ptr< SCT_FwdSubSpine > m_subspineL
SCT_FwdModule(const std::string &name, int ringType, 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)
bool m_hybridIsOnInnerEdge
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)