ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_Ski.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_SKI_H
6#define SCT_GEOMODEL_SCT_SKI_H
7
9
10#include "GeoModelKernel/GeoDefinitions.h"
11#include "GeoModelKernel/GeoVPhysVol.h"
12
13#include <memory>
14#include <string>
15#include <vector>
16
17class GeoMaterial;
18class GeoLogVol;
19class GeoNameTag;
20class GeoTransform;
21
22class SCT_Identifier;
23class SCT_Module;
24class SCT_Dogleg;
26class SCT_CoolingPipe;
27
29
30{
31public:
32 SCT_Ski(const std::string & name,
34 int stereoSign,
35 double tilt,
36 double length,
37 InDetDD::SCT_DetectorManager* detectorManager,
38 SCT_GeometryManager* geometryManager,
39 SCT_MaterialManager* materials,
40 GeoModelIO::ReadGeoModel* sqliteReader,
41 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
42 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX);
43
45 virtual GeoVPhysVol * build(SCT_Identifier id);
46
47public:
48 double thickness() const {return m_thickness;}
49 double width() const {return m_width;}
50 double length() const {return m_length;}
51
52 double zPos(int i) const {return m_zPos[i];}
53 int identifier(int i) const {return m_id[i];}
54 double radialSep() const {return m_radialSep;}
55 int firstStagger() const {return m_firstStagger;}
56 int modulesPerSki() const {return m_modulesPerSki;}
57
58 double tilt() const {return m_tilt;}
59 int stereoSign() const {return m_stereoSign;}
60
61 const SCT_Module * module() const {return m_module;}
62 const SCT_Dogleg * dogleg() const {return m_dogleg.get();}
63 const SCT_CoolingBlock * coolingBlock() const {return m_coolingBlock.get();}
64 const SCT_CoolingPipe * coolingPipe() const {return m_coolingPipe.get();}
65
66 const GeoTransform * getRefPointTransform() const {return m_refPointTransform;}
67 const GeoTrf::Vector3D * env1RefPointVector() const {return m_env1RefPointVector.get();}
68 const GeoTrf::Vector3D * env2RefPointVector() const {return m_env2RefPointVector.get();}
69 double env1Thickness() const {return m_env1Thickness;}
70 double env1Width() const {return m_env1Width;}
71 double env2Thickness() const {return m_env2Thickness;}
72 double env2Width() const {return m_env2Width;}
78
79 double doglegOffsetX() const {return m_doglegOffsetX;}
80 double doglegOffsetY() const {return m_doglegOffsetY;}
81
82private:
83 // Copy and assignment operations not supported, so are private
84 SCT_Ski(const SCT_Ski& ski);
86
87 void getParameters();
88 virtual const GeoLogVol * preBuild();
89
90 double m_radialSep = 0.0;
93 double m_safety = 0.0;
94
95 std::vector<double> m_zPos;
96 std::vector<int> m_id;
97
99 double m_tilt;
100
101 double m_length;
102 double m_width = 0.0;
103 double m_thickness = 0.0;
104
105
106 // These are currently all set to zero.
107 double m_doglegPhiOffset = 0.0;
113
114 // There are cooling block & cooling pipe offset parameters.
120
121 double m_doglegOffsetX = 0.0;
122 double m_doglegOffsetY = 0.0;
123
125 std::unique_ptr<SCT_Dogleg> m_dogleg;
126 std::unique_ptr<SCT_CoolingBlock> m_coolingBlock;
127 std::unique_ptr<SCT_CoolingPipe> m_coolingPipe;
128
129 GeoIntrusivePtr<GeoTransform> m_refPointTransform{};
130 GeoIntrusivePtr<GeoTransform> m_coolingPipePos{};
131
133 std::unique_ptr<GeoTrf::Vector3D> m_env1RefPointVector;
135 std::unique_ptr<GeoTrf::Vector3D> m_env2RefPointVector;
136
137 double m_env1Thickness = 0.0;
138 double m_env1Width = 0.0;
139 double m_env2Thickness = 0.0;
140 double m_env2Width = 0.0;
141
142 std::vector<GeoNameTag *> m_nameTag;
143 std::vector<GeoTrf::Transform3D> m_modulePos;
144 std::vector<GeoTransform *> m_doglegPos;
145 std::vector<GeoTransform *> m_coolingBlockPos;
146
147};
148
149#endif // SCT_GEOMODEL_SCT_SKI_H
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
double m_doglegPhiOffset
Definition SCT_Ski.h:107
SCT_Ski & operator=(const SCT_Ski &ski)
double length() const
Definition SCT_Ski.h:50
int stereoSign() const
Definition SCT_Ski.h:59
std::vector< GeoTransform * > m_coolingBlockPos
Definition SCT_Ski.h:145
virtual const GeoLogVol * preBuild()
Definition SCT_Ski.cxx:102
double m_coolingBlockOffsetY
Definition SCT_Ski.h:116
std::unique_ptr< SCT_Dogleg > m_dogleg
Definition SCT_Ski.h:125
double doglegOffsetY() const
Definition SCT_Ski.h:80
double coolingBlockOffsetY() const
Definition SCT_Ski.h:74
double m_radialSep
Definition SCT_Ski.h:90
const SCT_CoolingPipe * coolingPipe() const
Definition SCT_Ski.h:64
double m_length
Definition SCT_Ski.h:101
int m_firstStagger
Definition SCT_Ski.h:91
double m_coolingPipeOffsetX
Definition SCT_Ski.h:118
double m_env1Width
Definition SCT_Ski.h:138
double m_width
Definition SCT_Ski.h:102
std::vector< GeoTrf::Transform3D > m_modulePos
Definition SCT_Ski.h:143
double m_env1Thickness
Definition SCT_Ski.h:137
double m_coolingBlockOffsetX
Definition SCT_Ski.h:115
double m_doglegRadialOffset
Definition SCT_Ski.h:108
double coolingBlockOffsetZ() const
Definition SCT_Ski.h:75
std::unique_ptr< GeoTrf::Vector3D > m_env1RefPointVector
For calculations of envelopes of SCT_DetailLayer.
Definition SCT_Ski.h:133
std::vector< double > m_zPos
Definition SCT_Ski.h:95
int modulesPerSki() const
Definition SCT_Ski.h:56
double env1Width() const
Definition SCT_Ski.h:70
double m_tilt
Definition SCT_Ski.h:99
double m_coolingPipeOffsetY
Definition SCT_Ski.h:119
double m_safety
Definition SCT_Ski.h:93
double width() const
Definition SCT_Ski.h:49
double coolingBlockOffsetX() const
Definition SCT_Ski.h:73
double m_coolingPipeRadialOffset
Definition SCT_Ski.h:111
int firstStagger() const
Definition SCT_Ski.h:55
double env2Width() const
Definition SCT_Ski.h:72
SCT_Ski(const SCT_Ski &ski)
int m_modulesPerSki
Definition SCT_Ski.h:92
double m_coolingPipePhiOffset
Definition SCT_Ski.h:112
SCT_Module * m_module
Definition SCT_Ski.h:124
void getParameters()
Definition SCT_Ski.cxx:66
double env1Thickness() const
Definition SCT_Ski.h:69
double m_coolingBlockRadialOffset
Definition SCT_Ski.h:110
int identifier(int i) const
Definition SCT_Ski.h:53
double m_env2Thickness
Definition SCT_Ski.h:139
std::vector< GeoNameTag * > m_nameTag
Definition SCT_Ski.h:142
const SCT_Module * module() const
Definition SCT_Ski.h:61
double coolingPipeOffsetY() const
Definition SCT_Ski.h:77
double thickness() const
Definition SCT_Ski.h:48
std::unique_ptr< SCT_CoolingBlock > m_coolingBlock
Definition SCT_Ski.h:126
const GeoTrf::Vector3D * env1RefPointVector() const
Definition SCT_Ski.h:67
GeoIntrusivePtr< GeoTransform > m_refPointTransform
Definition SCT_Ski.h:129
int m_stereoSign
Definition SCT_Ski.h:98
GeoIntrusivePtr< GeoTransform > m_coolingPipePos
Definition SCT_Ski.h:130
double m_coolingBlockPhiOffset
Definition SCT_Ski.h:109
std::unique_ptr< SCT_CoolingPipe > m_coolingPipe
Definition SCT_Ski.h:127
double tilt() const
Definition SCT_Ski.h:58
double doglegOffsetX() const
Definition SCT_Ski.h:79
const SCT_CoolingBlock * coolingBlock() const
Definition SCT_Ski.h:63
std::unique_ptr< GeoTrf::Vector3D > m_env2RefPointVector
For calculations of envelopes of SCT_DetailLayer.
Definition SCT_Ski.h:135
double m_coolingBlockOffsetZ
Definition SCT_Ski.h:117
double m_doglegOffsetY
Definition SCT_Ski.h:122
double zPos(int i) const
Definition SCT_Ski.h:52
std::vector< GeoTransform * > m_doglegPos
Definition SCT_Ski.h:144
double radialSep() const
Definition SCT_Ski.h:54
double coolingPipeOffsetX() const
Definition SCT_Ski.h:76
const GeoTransform * getRefPointTransform() const
Definition SCT_Ski.h:66
double env2Thickness() const
Definition SCT_Ski.h:71
const SCT_Dogleg * dogleg() const
Definition SCT_Ski.h:62
std::vector< int > m_id
Definition SCT_Ski.h:96
double m_thickness
Definition SCT_Ski.h:103
double m_doglegOffsetX
Definition SCT_Ski.h:121
virtual GeoVPhysVol * build(SCT_Identifier id)
Definition SCT_Ski.cxx:341
double m_env2Width
Definition SCT_Ski.h:140
SCT_Ski(const std::string &name, SCT_Module *module, int stereoSign, double tilt, double length, 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)
Definition SCT_Ski.cxx:39
const GeoTrf::Vector3D * env2RefPointVector() const
Definition SCT_Ski.h:68
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)