ATLAS Offline Software
SCT_Ski.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 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 
17 class GeoMaterial;
18 class GeoLogVol;
19 class GeoNameTag;
20 class GeoTransform;
21 
22 class SCT_Identifier;
23 class SCT_Module;
24 class SCT_Dogleg;
25 class SCT_CoolingBlock;
26 class SCT_CoolingPipe;
27 
29 
30 {
31 public:
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 
47 public:
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;}
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;}
73  double coolingBlockOffsetX() const {return m_coolingBlockOffsetX;}
74  double coolingBlockOffsetY() const {return m_coolingBlockOffsetY;}
75  double coolingBlockOffsetZ() const {return m_coolingBlockOffsetZ;}
76  double coolingPipeOffsetX() const {return m_coolingPipeOffsetX;}
77  double coolingPipeOffsetY() const {return m_coolingPipeOffsetY;}
78 
79  double doglegOffsetX() const {return m_doglegOffsetX;}
80  double doglegOffsetY() const {return m_doglegOffsetY;}
81 
82 private:
83  // Copy and assignment operations not supported, so are private
84  SCT_Ski(const SCT_Ski& ski);
85  SCT_Ski& operator = (const SCT_Ski& ski);
86 
87  void getParameters();
88  virtual const GeoLogVol * preBuild();
89 
90  double m_radialSep = 0.0;
91  int m_firstStagger = 0;
92  int m_modulesPerSki = 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;
108  double m_doglegRadialOffset = 0.0;
113 
114  // There are cooling block & cooling pipe offset parameters.
115  double m_coolingBlockOffsetX = 0.0;
116  double m_coolingBlockOffsetY = 0.0;
117  double m_coolingBlockOffsetZ = 0.0;
118  double m_coolingPipeOffsetX = 0.0;
119  double m_coolingPipeOffsetY = 0.0;
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
SCT_Ski::m_zPos
std::vector< double > m_zPos
Definition: SCT_Ski.h:95
SCT_Ski::dogleg
const SCT_Dogleg * dogleg() const
Definition: SCT_Ski.h:62
SCT_Ski::m_stereoSign
int m_stereoSign
Definition: SCT_Ski.h:98
SCT_MaterialManager
Definition: SCT_MaterialManager.h:21
SCT_Identifier
Definition: SCT_Identifier.h:12
SCT_Ski::m_env1Width
double m_env1Width
Definition: SCT_Ski.h:138
SCT_Ski::getParameters
void getParameters()
Definition: SCT_Ski.cxx:66
SCT_Ski::m_coolingPipePos
GeoIntrusivePtr< GeoTransform > m_coolingPipePos
Definition: SCT_Ski.h:130
InDetDD::SCT_DetectorManager
Definition: SCT_DetectorManager.h:49
SCT_Ski::env2Width
double env2Width() const
Definition: SCT_Ski.h:72
SCT_Ski::coolingBlockOffsetX
double coolingBlockOffsetX() const
Definition: SCT_Ski.h:73
SCT_Ski::coolingBlockOffsetZ
double coolingBlockOffsetZ() const
Definition: SCT_Ski.h:75
SCT_Ski::m_tilt
double m_tilt
Definition: SCT_Ski.h:99
SCT_Ski::thickness
double thickness() const
Definition: SCT_Ski.h:48
SCT_Ski::module
const SCT_Module * module() const
Definition: SCT_Ski.h:61
SCT_Ski::m_coolingBlockOffsetZ
double m_coolingBlockOffsetZ
Definition: SCT_Ski.h:117
SCT_Ski::m_env2Width
double m_env2Width
Definition: SCT_Ski.h:140
SCT_Ski::coolingPipeOffsetX
double coolingPipeOffsetX() const
Definition: SCT_Ski.h:76
SCT_Ski::m_env1RefPointVector
std::unique_ptr< GeoTrf::Vector3D > m_env1RefPointVector
For calculations of envelopes of SCT_DetailLayer.
Definition: SCT_Ski.h:133
SCT_Ski::m_dogleg
std::unique_ptr< SCT_Dogleg > m_dogleg
Definition: SCT_Ski.h:125
SCT_Ski::m_env1Thickness
double m_env1Thickness
Definition: SCT_Ski.h:137
SCT_Ski::m_width
double m_width
Definition: SCT_Ski.h:102
SCT_Ski::m_coolingBlock
std::unique_ptr< SCT_CoolingBlock > m_coolingBlock
Definition: SCT_Ski.h:126
SCT_Ski::coolingBlockOffsetY
double coolingBlockOffsetY() const
Definition: SCT_Ski.h:74
SCT_Module
Definition: SCT_Module.h:25
SCT_Ski::coolingBlock
const SCT_CoolingBlock * coolingBlock() const
Definition: SCT_Ski.h:63
SCT_Ski::width
double width() const
Definition: SCT_Ski.h:49
SCT_Ski::m_coolingPipeRadialOffset
double m_coolingPipeRadialOffset
Definition: SCT_Ski.h:111
SCT_Ski::tilt
double tilt() const
Definition: SCT_Ski.h:58
SCT_Ski::m_refPointTransform
GeoIntrusivePtr< GeoTransform > m_refPointTransform
Definition: SCT_Ski.h:129
SCT_Ski::m_coolingPipeOffsetY
double m_coolingPipeOffsetY
Definition: SCT_Ski.h:119
SCT_ComponentFactory.h
SCT_CoolingBlock
Definition: SCT_CoolingBlock.h:18
SCT_Ski::SCT_Ski
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
SCT_Ski::m_firstStagger
int m_firstStagger
Definition: SCT_Ski.h:91
SCT_Ski::env1RefPointVector
const GeoTrf::Vector3D * env1RefPointVector() const
Definition: SCT_Ski.h:67
SCT_CoolingPipe
Definition: SCT_CoolingPipe.h:18
SCT_Ski::stereoSign
int stereoSign() const
Definition: SCT_Ski.h:59
lumiFormat.i
int i
Definition: lumiFormat.py:85
SCT_Ski::m_env2Thickness
double m_env2Thickness
Definition: SCT_Ski.h:139
SCT_Ski::radialSep
double radialSep() const
Definition: SCT_Ski.h:54
SCT_Ski::m_thickness
double m_thickness
Definition: SCT_Ski.h:103
SCT_Ski::length
double length() const
Definition: SCT_Ski.h:50
SCT_Ski::m_modulesPerSki
int m_modulesPerSki
Definition: SCT_Ski.h:92
SCT_Ski::doglegOffsetX
double doglegOffsetX() const
Definition: SCT_Ski.h:79
SCT_Ski::getRefPointTransform
const GeoTransform * getRefPointTransform() const
Definition: SCT_Ski.h:66
SCT_Ski::m_doglegOffsetY
double m_doglegOffsetY
Definition: SCT_Ski.h:122
SCT_Ski::m_coolingPipeOffsetX
double m_coolingPipeOffsetX
Definition: SCT_Ski.h:118
SCT_Ski::m_modulePos
std::vector< GeoTrf::Transform3D > m_modulePos
Definition: SCT_Ski.h:143
SCT_Ski::m_coolingBlockRadialOffset
double m_coolingBlockRadialOffset
Definition: SCT_Ski.h:110
SCT_Ski::env1Width
double env1Width() const
Definition: SCT_Ski.h:70
SCT_Ski::m_length
double m_length
Definition: SCT_Ski.h:101
SCT_Ski::m_doglegRadialOffset
double m_doglegRadialOffset
Definition: SCT_Ski.h:108
SCT_Ski::m_id
std::vector< int > m_id
Definition: SCT_Ski.h:96
SCT_Ski
Definition: SCT_Ski.h:30
SCT_Ski::m_module
SCT_Module * m_module
Definition: SCT_Ski.h:124
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
SCT_Ski::m_doglegOffsetX
double m_doglegOffsetX
Definition: SCT_Ski.h:121
SCT_Ski::coolingPipeOffsetY
double coolingPipeOffsetY() const
Definition: SCT_Ski.h:77
SCT_Ski::~SCT_Ski
~SCT_Ski()
SCT_Ski::m_doglegPos
std::vector< GeoTransform * > m_doglegPos
Definition: SCT_Ski.h:144
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
SCT_Ski::coolingPipe
const SCT_CoolingPipe * coolingPipe() const
Definition: SCT_Ski.h:64
SCT_Ski::env2Thickness
double env2Thickness() const
Definition: SCT_Ski.h:71
SCT_Ski::env1Thickness
double env1Thickness() const
Definition: SCT_Ski.h:69
SCT_UniqueComponentFactory
Definition: SCT_ComponentFactory.h:76
SCT_Ski::m_coolingBlockPhiOffset
double m_coolingBlockPhiOffset
Definition: SCT_Ski.h:109
SCT_Ski::identifier
int identifier(int i) const
Definition: SCT_Ski.h:53
SCT_Ski::SCT_Ski
SCT_Ski(const SCT_Ski &ski)
SCT_Ski::zPos
double zPos(int i) const
Definition: SCT_Ski.h:52
SCT_Ski::m_env2RefPointVector
std::unique_ptr< GeoTrf::Vector3D > m_env2RefPointVector
For calculations of envelopes of SCT_DetailLayer.
Definition: SCT_Ski.h:135
SCT_Ski::firstStagger
int firstStagger() const
Definition: SCT_Ski.h:55
SCT_Ski::env2RefPointVector
const GeoTrf::Vector3D * env2RefPointVector() const
Definition: SCT_Ski.h:68
SCT_Ski::doglegOffsetY
double doglegOffsetY() const
Definition: SCT_Ski.h:80
SCT_Ski::m_coolingBlockOffsetX
double m_coolingBlockOffsetX
Definition: SCT_Ski.h:115
SCT_Ski::m_coolingPipe
std::unique_ptr< SCT_CoolingPipe > m_coolingPipe
Definition: SCT_Ski.h:127
SCT_Ski::m_safety
double m_safety
Definition: SCT_Ski.h:93
SCT_Ski::m_coolingBlockPos
std::vector< GeoTransform * > m_coolingBlockPos
Definition: SCT_Ski.h:145
SCT_Ski::m_coolingBlockOffsetY
double m_coolingBlockOffsetY
Definition: SCT_Ski.h:116
SCT_Ski::m_coolingPipePhiOffset
double m_coolingPipePhiOffset
Definition: SCT_Ski.h:112
SCT_Ski::m_radialSep
double m_radialSep
Definition: SCT_Ski.h:90
SCT_GeometryManager
Definition: SCT_GeometryManager.h:25
SCT_Ski::modulesPerSki
int modulesPerSki() const
Definition: SCT_Ski.h:56
SCT_Ski::m_nameTag
std::vector< GeoNameTag * > m_nameTag
Definition: SCT_Ski.h:142
SCT_Ski::m_doglegPhiOffset
double m_doglegPhiOffset
Definition: SCT_Ski.h:107
SCT_Ski::build
virtual GeoVPhysVol * build(SCT_Identifier id)
Definition: SCT_Ski.cxx:341
SCT_Dogleg
Definition: SCT_Dogleg.h:21
SCT_Ski::preBuild
virtual const GeoLogVol * preBuild()
Definition: SCT_Ski.cxx:102
SCT_Ski::operator=
SCT_Ski & operator=(const SCT_Ski &ski)