ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_FwdSensor.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_FWDSENSOR_H
6#define SCT_GEOMODEL_SCT_FWDSENSOR_H
7
8
10
11#include <atomic>
12#include <string>
13
14// sensor types
15/*
16#define SENSOR_NT 0
17#define SENSOR_FT 1
18#define SENSOR_NB 2
19#define SENSOR_FB 3
20*/
21
22#define SENSOR_BOTTOM 0
23#define SENSOR_TOP 1
24#include "GeoModelKernel/GeoPhysVol.h"
25
26
27
28namespace InDetDD{class SiDetectorDesign;}
29
31{
32public:
33 SCT_FwdSensor(const std::string & name, int ringType,
34 InDetDD::SCT_DetectorManager* detectorManager,
35 SCT_GeometryManager* geometryManager,
36 SCT_MaterialManager* materials,
37 GeoModelIO::ReadGeoModel* sqliteReader,
38 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
39 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX);
41
42 // Ring type
43 int ringType() const {return m_ringType;}
44
45
46 // Inner radius of physical sensor
47 double innerRadius() const {return m_innerRadius;}
48
49 // Outer radius of physical sensor
50 double outerRadius() const {return m_outerRadius;}
51
52 // Width of silicon at inner radius
53 double innerWidth() const {return m_innerWidth;}
54
55 // Width of silicon at outer radius
56 double outerWidth() const {return m_outerWidth;}
57
58 // Thickness of sensor
59 double thickness() const {return m_thickness;}
60
61 // Length of physical sensor
62 double length() const {return m_outerRadius - m_innerRadius;}
63
64 // Radius of center of sensor.
65 double centerRadius() const {return m_sensorRadius;}
66 double sensorOffset() const {return m_sensorOffset;}
67
68
69 double outerWidthN() const {return m_outerWidthN;}
70 double innerWidthN() const {return m_innerWidthN;}
71 double lengthN() const {return m_lengthN;}
72 double thicknessN() const {return m_thicknessN;}
73
74 double outerWidthF() const {return m_outerWidthF;}
75 double innerWidthF() const {return m_innerWidthF;}
76 double lengthF() const {return m_lengthF;}
77 double thicknessF() const {return m_thicknessF;}
78
79
80 virtual GeoVPhysVol * build(SCT_Identifier id);
81
82 GeoPhysVol * getInactive() {return m_inactive;}
83
84private:
85 void getParameters();
86 virtual const GeoLogVol * preBuild();
87 void makeDesign();
88
90
91 double m_thickness = 0.0; // Thickness of sensor
92 double m_outerRadius = 0.0; // Outer radius of physical sensor
93 double m_innerRadius = 0.0; // Outer radius of physical sensor
94 double m_innerWidth = 0.0; // Width of sensor at inner radius
95 double m_outerWidth = 0.0; // Width of sensor at outer radius
96
97
98 double m_outerWidthN = 0.0; // Outer physical width of near sensor.
99 double m_innerWidthN = 0.0; // Inner width
100 double m_lengthN = 0.0; // Length (radially).
101 double m_thicknessN = 0.0;
102 double m_radiusN = 0.0;
103 double m_activeHalfLengthNear = 0.0; // Active half length
104
105 double m_outerWidthF = 0.0; // Outer physical width of Far sensor.
106 double m_innerWidthF = 0.0; // Inner width
107 double m_lengthF = 0.0; // Length (radially).
108 double m_thicknessF = 0.0;
109 double m_radiusF = 0.0;
110 double m_activeHalfLengthFar = 0.0; // Active half length
111
112 double m_sensorRadius = 0.0; // Physics center (of double wafer)
113
114 double m_sensorOffset = 0.0; // Offset of det element center.
115 // Differs from m_sensorRadius for truncated middle detector
116
117 const GeoMaterial * m_materialSensor = nullptr;
118 const GeoMaterial * m_materialGlass = nullptr;
119
120 GeoIntrusivePtr<GeoPhysVol> m_inactive = nullptr;
121
123
124 mutable std::atomic_bool m_noElementWarning;
125};
126
127#endif // SCT_GEOMODEL_SCT_FWDSENSOR_H
128
129
130
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
Base class for the detector design classes for Pixel and SCT.
double m_innerWidth
double m_innerRadius
double outerRadius() const
double outerWidth() const
double thickness() const
double centerRadius() const
virtual const GeoLogVol * preBuild()
double m_sensorOffset
double sensorOffset() const
int ringType() const
double lengthN() const
double m_sensorRadius
virtual GeoVPhysVol * build(SCT_Identifier id)
double thicknessN() const
const GeoMaterial * m_materialGlass
double outerWidthF() const
double m_activeHalfLengthFar
double length() const
GeoPhysVol * getInactive()
double innerWidthF() const
std::atomic_bool m_noElementWarning
double thicknessF() const
double m_innerWidthN
double innerWidth() const
double innerRadius() const
GeoIntrusivePtr< GeoPhysVol > m_inactive
SCT_FwdSensor(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)
const InDetDD::SiDetectorDesign * m_design
double innerWidthN() const
double m_outerWidthN
double m_outerWidth
double m_activeHalfLengthNear
double lengthF() const
double m_outerRadius
double outerWidthN() const
const GeoMaterial * m_materialSensor
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)
Message Stream Member.