ATLAS Offline Software
SCT_Ski.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "SCT_GeoModel/SCT_Ski.h"
16 
18 
19 #include "GeoModelRead/ReadGeoModel.h"
20 #include "GeoModelKernel/GeoBox.h"
21 #include "GeoModelKernel/GeoTube.h"
22 #include "GeoModelKernel/GeoLogVol.h"
23 #include "GeoModelKernel/GeoPhysVol.h"
24 #include "GeoModelKernel/GeoNameTag.h"
25 #include "GeoModelKernel/GeoIdentifierTag.h"
26 #include "GeoModelKernel/GeoTransform.h"
27 #include "GeoModelKernel/GeoAlignableTransform.h"
28 #include "GeoModelKernel/GeoMaterial.h"
29 #include "GeoModelKernel/GeoShape.h"
30 #include "GeoModelKernel/GeoShapeUnion.h"
31 #include "GeoModelKernel/GeoShapeShift.h"
32 #include "GeoModelKernel/GeoDefinitions.h"
33 #include "GaudiKernel/SystemOfUnits.h"
34 
35 #include <sstream>
36 #include <cmath>
37 
38 SCT_Ski::SCT_Ski(const std::string & name,
40  int stereoSign,
41  double tilt,
42  double length,
43  InDetDD::SCT_DetectorManager* detectorManager,
44  SCT_GeometryManager* geometryManager,
45  SCT_MaterialManager* materials,
46  GeoModelIO::ReadGeoModel* sqliteReader,
47  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
48  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
49  : SCT_UniqueComponentFactory(name, detectorManager, geometryManager, materials, sqliteReader, mapFPV, mapAX),
50  m_stereoSign(stereoSign),
51  m_tilt(tilt),
52  m_length(length),
53  m_module(module)
54 {
55  getParameters();
56  if(!m_sqliteReader) {
58  }
59 }
60 
61 
62 SCT_Ski::~SCT_Ski() = default;
63 
64 void
66 {
67 
69  const SCT_GeneralParameters * generalParameters = m_geometryManager->generalParameters();
70 
71  m_safety = generalParameters->safety();
72 
73  m_radialSep = parameters->skiRadialSep();
74  m_firstStagger = parameters->skiFirstStagger();
75  m_modulesPerSki = parameters->modulesPerSki();
76  for (int iModule = 0; iModule < m_modulesPerSki; iModule++){
77  m_zPos.push_back(parameters->skiZPosition(iModule));
78  m_id.push_back(parameters->skiModuleIdentifier(iModule));
79  }
80 
81  // Various offset for the doglegs, cooling blocks and cooling pipe.
82  // These are not currently needed and are all set to zero.
89 
90  m_coolingBlockOffsetX = parameters->coolingBlockOffsetX();
91  m_coolingBlockOffsetY = parameters->coolingBlockOffsetY();
92  m_coolingBlockOffsetZ = parameters->coolingBlockOffsetZ();
93  m_coolingPipeOffsetX = parameters->coolingPipeOffsetX();
94  m_coolingPipeOffsetY = parameters->coolingPipeOffsetY();
95 
96  m_doglegOffsetX = parameters->doglegOffsetX();
97  m_doglegOffsetY = parameters->doglegOffsetY();
98 }
99 
100 const GeoLogVol *
102 {
103  const double rphiClearance = 0.5*Gaudi::Units::mm;
104  const double radialClearance = 0.5*Gaudi::Units::mm;
105 
106 
107  // Make components.
108  m_dogleg = std::make_unique<SCT_Dogleg>(getName()+"Dogleg", m_detectorManager, m_geometryManager, m_materials);
109  m_coolingBlock = std::make_unique<SCT_CoolingBlock>(getName()+"CoolingBlock",
111  m_coolingPipe = std::make_unique<SCT_CoolingPipe>(getName()+"CoolingPipe", m_length,
113 
114  // We need the sign of the tilt in numerous places
115  int tiltSign = (m_tilt < 0) ? -1 : +1;
116 
117 
118  // The two modules are lined up in x in the unrotated ski. The ski then gets tilted
119  // when placed in the layer.
120  // So the x offset is just the raidal separation and the y offset is zero.
121 
122  double xModuleOffset = 0.5 * m_radialSep;
123 
124  double yModuleOffset = 0.0;
125 
126 
127  //
128  // Calculate position of cooling block
129  //
130  // Position the cooling block m_coolingBlockPhiOffset from the lower egde
131  // of the module and m_coolingBlockRadialOffset from surface of the module.
132 
133  double xCoolingBlockOffset = - m_coolingBlockRadialOffset + coolingBlockOffsetX();
134  double yCoolingBlockOffset = tiltSign *(coolingBlockOffsetY() - m_coolingBlockPhiOffset);
135  double zCoolingBlockOffset = coolingBlockOffsetZ();
136 
137  //
138  // Calculate position of dogleg
139  //
140 
141  double xDoglegOffset = doglegOffsetX() - m_doglegRadialOffset;
142 
143  // NB length of dogleg runs in phi direction.
144  double yDoglegOffset = tiltSign * (doglegOffsetY() + m_doglegPhiOffset);
145 
146  double zDoglegOffset = coolingBlockOffsetZ();
147 
148  //
149  // Calculate position of cooling pipe.
150  //
151  double xCoolingPipePos = coolingPipeOffsetX() - m_coolingPipeRadialOffset;
152  double yCoolingPipePos = coolingPipeOffsetY() + m_coolingPipePhiOffset;
153  m_coolingPipePos = new GeoTransform(GeoTrf::Translate3D(xCoolingPipePos, yCoolingPipePos, 0));
154  //
155  //
156  //
157 
158  int stagger_sign = m_firstStagger;
159  // Loop over modules in ski as we need their z positions.
160  for (int iModule = 0; iModule < m_modulesPerSki; iModule++) {
161 
162  // For compatibility with AGE we need to offset the module in y by -0.5*sep*sin(tilt) so that center
163  // of module lines up with radial line. (Not sure if this is what is done in reality)
164 
165  // Not sure if this needs to be alignable
166  double xModulePos = stagger_sign * xModuleOffset;
167  double yModulePos = yModuleOffset;
168  double zModulePos = m_zPos[iModule];
169 
170  // There is only one type of module and this is rotated one way or the other
171  // to get the phi-v (-ve), u-phi (+ve) orientations
172  GeoTrf::RotateX3D rot(0.5 * m_stereoSign * m_module->stereoAngle());
173  GeoTrf::Translation3D pos(xModulePos, yModulePos, zModulePos);
174  m_modulePos.push_back(GeoTrf::Transform3D(pos*rot));
175 
176  //
177  // Calculate position of cooling block
178  //
179 
180  double xCoolingBlockPos = xCoolingBlockOffset + xModulePos;
181  double yCoolingBlockPos = yCoolingBlockOffset + yModulePos;
182  double zCoolingBlockPos = zCoolingBlockOffset + zModulePos;
183  m_coolingBlockPos.push_back(new GeoTransform(GeoTrf::Translate3D(xCoolingBlockPos, yCoolingBlockPos, zCoolingBlockPos)));
184 
185 
186  //
187  // Calculate position of dogleg
188  //
189  double xDoglegPos = xDoglegOffset + xModulePos;
190  double yDoglegPos = yDoglegOffset + yModulePos;
191  double zDoglegPos = zDoglegOffset + zModulePos;
192  m_doglegPos.push_back(new GeoTransform(GeoTrf::Translate3D(xDoglegPos, yDoglegPos, zDoglegPos)));
193 
194  // alternate staggering
195  stagger_sign = - stagger_sign;
196 
197 
198  }
199 
200  //
201  // calculate envelope for ski with just modules. Not all these are used.
202  // These are coordinates of corners of module's envelopes.
203  //
204 
205  GeoTrf::Vector3D c0(0.0,
206  -(m_module->env1RefPointVector()->y()) + 0.5*(m_module->env1Width()),
207  -(m_module->env1RefPointVector()->z()) + 0.5*(m_module->env1Length()));
208  GeoTrf::Vector3D c1(0.0,
209  -(m_module->env1RefPointVector()->y()) - 0.5*(m_module->env1Width()),
210  -(m_module->env1RefPointVector()->z()) + 0.5*(m_module->env1Length()));
211  GeoTrf::Vector3D c2(0.0,
212  -(m_module->env1RefPointVector()->y()) - 0.5*(m_module->env1Width()),
213  -(m_module->env1RefPointVector()->z()) - 0.5*(m_module->env1Length()));
214  GeoTrf::Vector3D c3(0.0,
215  -(m_module->env1RefPointVector()->y()) + 0.5*(m_module->env1Width()),
216  -(m_module->env1RefPointVector()->z()) - 0.5*(m_module->env1Length()));
217  GeoTrf::Vector3D c4(0.0,
218  -(m_module->env2RefPointVector()->y()) + 0.5*(m_module->env2Width()),
219  -(m_module->env2RefPointVector()->z()) + 0.5*(m_module->env2Length()));
220  GeoTrf::Vector3D c5(0.0,
221  -(m_module->env2RefPointVector()->y()) - 0.5*(m_module->env2Width()),
222  -(m_module->env2RefPointVector()->z()) + 0.5*(m_module->env2Length()));
223  GeoTrf::Vector3D c6(0.0,
224  -(m_module->env2RefPointVector()->y()) - 0.5*(m_module->env2Width()),
225  -(m_module->env2RefPointVector()->z()) - 0.5*(m_module->env2Length()));
226  GeoTrf::Vector3D c7(0.0,
227  -(m_module->env2RefPointVector()->y()) + 0.5*(m_module->env2Width()),
228  -(m_module->env2RefPointVector()->z()) - 0.5*(m_module->env2Length()));
229 
230  double moduleYMax = c4.y();
231  double moduleYMin = c5.y();
232  c0 = GeoTrf::RotateX3D(0.5 * m_stereoSign * m_module->stereoAngle())*c0;
233  c1 = GeoTrf::RotateX3D(0.5 * m_stereoSign * m_module->stereoAngle())*c1;
234  c2 = GeoTrf::RotateX3D(0.5 * m_stereoSign * m_module->stereoAngle())*c2;
235  c3 = GeoTrf::RotateX3D(0.5 * m_stereoSign * m_module->stereoAngle())*c3;
236  c4 = GeoTrf::RotateX3D(0.5 * m_stereoSign * m_module->stereoAngle())*c4;
237  c5 = GeoTrf::RotateX3D(0.5 * m_stereoSign * m_module->stereoAngle())*c5;
238  c6 = GeoTrf::RotateX3D(0.5 * m_stereoSign * m_module->stereoAngle())*c6;
239  c7 = GeoTrf::RotateX3D(0.5 * m_stereoSign * m_module->stereoAngle())*c7;
240 
241  moduleYMax = std::max(std::max(c0.y(), c4.y()), std::max(c7.y(), c3.y()));
242  moduleYMin = std::min(std::min(c1.y(), c5.y()), std::min(c6.y(), c2.y()));
243 
244  double skiWidth = moduleYMax - moduleYMin + 2*rphiClearance;
245 
246  //
247  // NB. The envelope is centered on x.
248  //
249  double skiThickness = m_module->thickness() + 2 * std::abs(xModuleOffset) + radialClearance;
250 
251  // Due to the cooling block and dogleg being next to the module and
252  // as the modules are staggered it is no longer possible to have a
253  // simple envelope around the ski.
254 
255  // Calculate envelope needed. This is a boolean of two rectangles.
256  // 1. Contains the modules and dogleg.
257  // 2. Contains the cooling pipe and cooling block.
258 
259  double xmax1 = 0.5*skiThickness;
260  double xmin1 = -xModuleOffset + xDoglegOffset - 0.5*m_dogleg->thickness();
261  double xmax2 = xmax1;
262  double xmin2 = xCoolingPipePos - m_coolingPipe->pipeRadius();
263 
264  // Take into account possiblity that the dogleg extends past the module.
265 
266  double ymax1 = moduleYMax + rphiClearance;
267  double ymin1 = moduleYMin - rphiClearance;
268  double ymin2,ymax2;
269  if (tiltSign > 0) {
270  ymax2 = std::max(-yModuleOffset + yCoolingBlockOffset + 0.5*m_coolingBlock->width(),
271  yCoolingPipePos + m_coolingPipe->pipeRadius());
272  ymin2 = ymin1;
273  } else {
274  ymax2 = ymax1;
275  ymin2 = std::min(-yModuleOffset + yCoolingBlockOffset - 0.5*m_coolingBlock->width(),
276  yCoolingPipePos - m_coolingPipe->pipeRadius());
277  }
278 
279 
280  // Add some safety
281  xmin1 -= m_safety;
282  xmax1 += m_safety;
283  ymin1 -= m_safety;
284  ymax1 += m_safety;
285 
286  xmin2 -= m_safety;
287  xmax2 += m_safety;
288  ymin2 -= m_safety;
289  ymax2 += m_safety;
290 
291  double xCenter = 0.5*(xmin1+xmax1);
292  double yCenter = 0.5*(ymin1+ymax1);
293  double xShift2 = 0.5*(xmin2+xmax2) - xCenter;
294  double yShift2 = 0.5*(ymin2+ymax2) - yCenter;
295 
296  m_refPointTransform = new GeoTransform(GeoTrf::Translate3D(-xCenter, -yCenter, 0));
297 
298  m_env1RefPointVector = std::make_unique<GeoTrf::Vector3D>(-xCenter, -yCenter, 0.0);
299  m_env2RefPointVector = std::make_unique<GeoTrf::Vector3D>(-xShift2, -yShift2, 0.0);
300  m_env1Thickness = xmax1-xmin1;
301  m_env1Width = ymax1-ymin1;
302  m_env2Thickness = xmax2-xmin2;
303  m_env2Width = ymax2-ymin2;
304 
305  GeoBox * envelope1 = new GeoBox(0.5 * (xmax1-xmin1), 0.5 * (ymax1-ymin1), 0.5 * m_length);
306  GeoBox * envelope2 = new GeoBox(0.5 * (xmax2-xmin2), 0.5 * (ymax2-ymin2), 0.5 * m_length);
307 
308  const GeoShape * skiEnvelopeShape = nullptr;
309 
310  const GeoShape & tmpShape = (*envelope1).
311  add(*envelope2 << GeoTrf::Translate3D(xShift2, yShift2, 0));
312  skiEnvelopeShape = &tmpShape;
313 
314  GeoLogVol * skiLog = new GeoLogVol(getName(), skiEnvelopeShape, m_materials->gasMaterial());
315 
316  // Make names once only so we don't recreate them again again.
317  for (int iModule = 0; iModule < m_modulesPerSki; iModule++) {
318  // Add identifier to name.
319  std::ostringstream name;
320  name << "Module#" << m_id[iModule];
321  m_nameTag.push_back(new GeoNameTag(name.str()));
322  }
323 
324 
325  // Define thickness, width, and length. This is chosen as bounding box centered on the ski rotation axis
326  // which contains the modules and dogleg (ie cooling blocks and cooling pipe is ignored.)
327  m_thickness = 2 * std::abs(xmin1);
328  m_width = skiWidth;
329 
330 
331  // Calculate the clearances. Module envelope1 is the thickness up to the sensors. This is used for the module to
332  // module distance
333 
334  return skiLog;
335 
336 }
337 
338 
339 GeoVPhysVol *
341 {
342  GeoPhysVol * ski=nullptr;
343 
344  if(!m_sqliteReader){
345 
346  ski= new GeoPhysVol(m_logVolume);
347 
348  for (int iModule = 0; iModule < m_modulesPerSki; iModule++) {
349 
350  // Add modules.
351  ski->add(m_refPointTransform);
352  GeoAlignableTransform * moduleTransform = new GeoAlignableTransform(m_modulePos[iModule]);
353  ski->add(moduleTransform);
354  ski->add(m_nameTag[iModule]);
355  ski->add(new GeoIdentifierTag(m_id[iModule]));
356  id.setEtaModule(m_id[iModule]); // Set identifier.
357  GeoVPhysVol * modulePV = m_module->build(id);
358  ski->add(modulePV);
359 
360  // Store alignable transform
361  m_detectorManager->addAlignableTransform(1, id.getWaferId(), moduleTransform, modulePV);
362 
363  // Add dogleg
364  ski->add(m_refPointTransform);
365  ski->add(m_doglegPos[iModule]);
366  ski->add(m_dogleg->getVolume());
367 
368  // and coolingblock
369  ski->add(m_refPointTransform);
370  ski->add(m_coolingBlockPos[iModule]);
371  ski->add(m_coolingBlock->getVolume());
372  }
373 
374  // Add Cooling pipe
375  ski->add(m_refPointTransform);
376  ski->add(m_coolingPipePos);
377  ski->add(m_coolingPipe->getVolume());
378  }
379  else{
380 
381  for (int iModule = 0; iModule < m_modulesPerSki; iModule++) {
382 
383  // Add modules.
384  id.setEtaModule(m_id[iModule]); // Set identifier.
385  m_module->build(id);
386 
387  std::string key="ModuleSKI_"+std::to_string(id.getLayerDisk())+"_"+std::to_string(id.getEtaModule())+"_"+std::to_string(id.getPhiModule());
388 
389  // Store alignable transform
390  m_detectorManager->addAlignableTransform(1, id.getWaferId(), (*m_mapAX)[key], (*m_mapFPV)[key]);
391 
392  }
393  }
394  return ski;
395 }
SCT_BaseBoard.h
SCT_ComponentFactory::m_geometryManager
SCT_GeometryManager * m_geometryManager
Definition: SCT_ComponentFactory.h:42
SCT_Ski::m_zPos
std::vector< double > m_zPos
Definition: SCT_Ski.h:95
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_Module::thickness
double thickness() const
Definition: SCT_Module.h:44
SCT_Ski::getParameters
void getParameters()
Definition: SCT_Ski.cxx:65
SCT_Ski::m_coolingPipePos
GeoIntrusivePtr< GeoTransform > m_coolingPipePos
Definition: SCT_Ski.h:130
InDetDD::SCT_DetectorManager
Definition: SCT_DetectorManager.h:49
SCT_UniqueComponentFactory::m_mapFPV
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
Definition: SCT_ComponentFactory.h:95
max
#define max(a, b)
Definition: cfImp.cxx:41
SCT_GeneralParameters::safety
double safety() const
Definition: SCT_GeneralParameters.cxx:48
SCT_Identifier.h
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_Module::env2Width
double env2Width() const
Definition: SCT_Module.h:52
SCT_UniqueComponentFactory::m_mapAX
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
Definition: SCT_ComponentFactory.h:96
SCT_MaterialManager.h
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
extractSporadic.c1
c1
Definition: extractSporadic.py:134
SCT_CoolingPipe.h
SCT_Ski::m_dogleg
std::unique_ptr< SCT_Dogleg > m_dogleg
Definition: SCT_Ski.h:125
SCT_Module::env1Width
double env1Width() const
Definition: SCT_Module.h:49
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_Module::env1Length
double env1Length() const
Definition: SCT_Module.h:50
SCT_Ski::m_coolingPipeRadialOffset
double m_coolingPipeRadialOffset
Definition: SCT_Ski.h:111
SCT_ComponentFactory::m_detectorManager
InDetDD::SCT_DetectorManager * m_detectorManager
Definition: SCT_ComponentFactory.h:41
SCT_GeometryManager::generalParameters
const SCT_GeneralParameters * generalParameters() const
Definition: SCT_GeometryManager.cxx:105
SCT_Module::stereoAngle
double stereoAngle() const
Definition: SCT_Module.h:61
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_Module::env2Length
double env2Length() const
Definition: SCT_Module.h:53
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:38
SCT_Ski::m_firstStagger
int m_firstStagger
Definition: SCT_Ski.h:91
SCT_GeneralParameters.h
compileRPVLLRates_emergingFilterTest.c3
c3
Definition: compileRPVLLRates_emergingFilterTest.py:559
hotSpotInTAG.c0
c0
Definition: hotSpotInTAG.py:192
python.PyAthena.module
module
Definition: PyAthena.py:134
SCT_Module::build
virtual GeoVPhysVol * build(SCT_Identifier id)
Definition: SCT_Module.cxx:316
SCT_CoolingBlock.h
SCT_Ski::m_env2Thickness
double m_env2Thickness
Definition: SCT_Ski.h:139
SCT_Ski::m_thickness
double m_thickness
Definition: SCT_Ski.h:103
SCT_MaterialManager::gasMaterial
const GeoMaterial * gasMaterial() const
Definition: SCT_MaterialManager.cxx:80
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
SCT_Ski::m_modulesPerSki
int m_modulesPerSki
Definition: SCT_Ski.h:92
SCT_Ski::doglegOffsetX
double doglegOffsetX() const
Definition: SCT_Ski.h:79
add
bool add(const std::string &hname, TKey *tobj)
Definition: fastadd.cxx:55
SCT_GeometryManager::barrelParameters
const SCT_BarrelParameters * barrelParameters() const
Definition: SCT_GeometryManager.cxx:78
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_Dogleg.h
SCT_Module::env1RefPointVector
const GeoTrf::Vector3D * env1RefPointVector() const
Definition: SCT_Module.h:55
SCT_GeneralParameters
Definition: SCT_GeneralParameters.h:16
SCT_Ski.h
SCT_Ski::m_length
double m_length
Definition: SCT_Ski.h:101
min
#define min(a, b)
Definition: cfImp.cxx:40
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::m_module
SCT_Module * m_module
Definition: SCT_Ski.h:124
SCT_ComponentFactory::m_materials
SCT_MaterialManager * m_materials
Definition: SCT_ComponentFactory.h:43
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
compileRPVLLRates.c2
c2
Definition: compileRPVLLRates.py:361
SCT_Ski::m_doglegOffsetX
double m_doglegOffsetX
Definition: SCT_Ski.h:121
SCT_Module.h
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_UniqueComponentFactory::m_logVolume
const GeoLogVol * m_logVolume
Definition: SCT_ComponentFactory.h:90
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
SCT_UniqueComponentFactory
Definition: SCT_ComponentFactory.h:76
SCT_Ski::m_coolingBlockPhiOffset
double m_coolingBlockPhiOffset
Definition: SCT_Ski.h:109
SCT_BarrelParameters
Definition: SCT_BarrelParameters.h:12
SCT_Ski::m_env2RefPointVector
std::unique_ptr< GeoTrf::Vector3D > m_env2RefPointVector
For calculations of envelopes of SCT_DetailLayer.
Definition: SCT_Ski.h:135
InDetDD::SCT_DetectorManager::addAlignableTransform
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms. No access to these, they will be changed by manager:
Definition: SCT_DetectorManager.cxx:264
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
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_BarrelParameters.h
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
SCT_Ski::m_safety
double m_safety
Definition: SCT_Ski.h:93
SCT_Module::env2RefPointVector
const GeoTrf::Vector3D * env2RefPointVector() const
Definition: SCT_Module.h:56
SCT_Ski::m_coolingBlockPos
std::vector< GeoTransform * > m_coolingBlockPos
Definition: SCT_Ski.h:145
SCT_DetectorManager.h
SCT_UniqueComponentFactory::m_sqliteReader
GeoModelIO::ReadGeoModel * m_sqliteReader
Definition: SCT_ComponentFactory.h:91
SCT_Ski::m_coolingBlockOffsetY
double m_coolingBlockOffsetY
Definition: SCT_Ski.h:116
SCT_ComponentFactory::getName
const std::string & getName() const
Definition: SCT_ComponentFactory.h:35
SCT_Ski::m_coolingPipePhiOffset
double m_coolingPipePhiOffset
Definition: SCT_Ski.h:112
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
SCT_GeometryManager.h
SCT_Ski::m_radialSep
double m_radialSep
Definition: SCT_Ski.h:90
SCT_GeometryManager
Definition: SCT_GeometryManager.h:25
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:340
SCT_Ski::preBuild
virtual const GeoLogVol * preBuild()
Definition: SCT_Ski.cxx:101
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37