ATLAS Offline Software
SCT_Layer.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 //
6 // CPW 17/8/06
7 // Version using new model of services from A. Tricoli
8 //
17 #include "SCT_GeoModel/SCT_Clamp.h"
21 #include "SCT_GeoModel/SCT_Ski.h"
28 
31 
32 #include "GeoModelRead/ReadGeoModel.h"
33 #include "GeoModelKernel/GeoTube.h"
34 #include "GeoModelKernel/GeoLogVol.h"
35 #include "GeoModelKernel/GeoPhysVol.h"
36 #include "GeoModelKernel/GeoFullPhysVol.h"
37 #include "GeoModelKernel/GeoNameTag.h"
38 #include "GeoModelKernel/GeoIdentifierTag.h"
39 #include "GeoModelKernel/GeoTransform.h"
40 #include "GeoModelKernel/GeoAlignableTransform.h"
41 #include "GeoModelKernel/GeoMaterial.h"
42 #include "GeoModelKernel/GeoShapeSubtraction.h"
43 #include "GeoModelKernel/GeoDefinitions.h"
44 #include "GaudiKernel/SystemOfUnits.h"
45 
46 #include <sstream>
47 #include <cmath>
48 
49 inline double sqr(double x) {return x * x;}
50 
51 SCT_Layer::SCT_Layer(const std::string & name,
52  int iLayer,
54  InDetDD::SCT_DetectorManager* detectorManager,
55  SCT_GeometryManager* geometryManager,
56  SCT_MaterialManager* materials,
57  GeoModelIO::ReadGeoModel* sqliteReader,
58  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
59  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
60 : SCT_UniqueComponentFactory(name, detectorManager, geometryManager, materials, sqliteReader, mapFPV, mapAX),
61  m_iLayer(iLayer),
62  m_module(module)
63 {
64  getParameters();
66 }
67 
69 {
70 }
71 
72 void
74 {
76  const SCT_GeneralParameters * generalParameters = m_geometryManager->generalParameters();
77 
78  m_safety = generalParameters->safety();
79  m_radius = parameters->radius(m_iLayer);
80  m_skisPerLayer = parameters->skisPerLayer(m_iLayer);
81  m_tilt = parameters->tilt(m_iLayer);
82  m_stereoSign = parameters->layerStereoSign(m_iLayer);
83  m_bracketPhiOffset = parameters->layerBracketPhiOffset(m_iLayer);
84  m_phiRefModule = parameters->layerPhiOfRefModule(m_iLayer);
85 
86  m_outerRadiusOfSupport = parameters->supportCylOuterRadius(m_iLayer);
87  m_activeLength = parameters->activeLength();
88  m_cylinderLength = parameters->cylinderLength();
89 
90  m_includeFSI = parameters->includeFSI();
91  if (m_includeFSI) {
92  m_nRepeatEndJewel = parameters->fsiEndJewelNRepeat(m_iLayer);
93  m_phiEndJewel = parameters->fsiEndJewelPhi(m_iLayer);
94  m_zEndJewel = parameters->fsiEndJewelZ(m_iLayer);
95  m_nRepeatScorpion = parameters->fsiScorpionNRepeat(m_iLayer);
96  m_phiScorpion = parameters->fsiScorpionPhi(m_iLayer);
97  m_zScorpion = parameters->fsiScorpionZ(m_iLayer);
98  }
99 
100  // Set numerology
103 
104 }
105 
106 
107 
108 const GeoLogVol *
110 {
111  // Build the components required for the layer.
112  // We use the layer number as a string quite a bit
113  std::string layerNumStr = intToString(m_iLayer);
114  // Make the ski
115  // The ski length is now reduced to m_activeLength to make room for the cooling inlet/outlet volumes
116  m_ski = std::make_unique<SCT_Ski>("Ski"+layerNumStr, m_module, m_stereoSign, m_tilt, m_activeLength,
118 
119 
120  //
121  // Calculations for making active layer components - called ski.
122  // This is the modules + doglegs + cooling blocks + coolingpipe
123  //
124  double divisionAngle = 360. * Gaudi::Units::degree / m_skisPerLayer;
125 
126  // We define here the first module(id = 0) as the nearest module to phi = 0 with positive phi.
127  // We allow slightly negative in case of rounding errors.
128 
129  double moduleCount = m_phiRefModule / divisionAngle;
130  m_skiPhiStart = divisionAngle * (moduleCount - floor(moduleCount +0.5 -0.0001));
131 
132  if(m_sqliteReader) return nullptr;
133 
134  // Build the Flanges
135  m_flange = std::make_unique<SCT_Flange>("Flange"+layerNumStr, m_iLayer, m_detectorManager, m_geometryManager, m_materials);
136 
137  // Build the SupportCyl
138  m_supportCyl = std::make_unique<SCT_SupportCyl>("SupportCyl"+layerNumStr, m_iLayer, m_cylinderLength,
140 
141  // Build the FSI end jewel, scorpion and fibre mask
142  // Mask runs between scorpions and flange in z - must be built after these
143  if (m_includeFSI) {
144  m_endJewel = std::make_unique<SCT_FSIEndJewel>("FSIEndJewel"+layerNumStr, m_detectorManager, m_geometryManager, m_materials);
145  m_scorpion = std::make_unique<SCT_FSIScorpion>("FSIScorpion"+layerNumStr, m_detectorManager, m_geometryManager, m_materials);
146  double length_mask = 0.5*m_cylinderLength - m_flange->length() - m_zScorpion - 0.5*m_scorpion->length();
147  m_fibreMask = std::make_unique<SCT_FSIFibreMask>("FSIFibreMask"+layerNumStr, m_iLayer, length_mask,
149  }
150 
151  m_skiAuxPhiStart = 0;
152 
153  //
154  // Make SkiAux - This is the brackets, harness and power tape.
155  //
156  // Bracket is placed at edge of division.
157  // -tiltSign * (r*divisionAngle/2 - bracket_width/2)
158  // Works for both +ve and -ve tilt.
159  m_bracket = std::make_unique<SCT_Bracket>("Bracket"+layerNumStr, m_detectorManager, m_geometryManager, m_materials);
160 
161  m_harness = std::make_unique<SCT_Harness>("Harness"+layerNumStr, m_cylinderLength,
163  m_skiPowerTape = std::make_unique<SCT_SkiPowerTape>("SkiPowerTape"+layerNumStr, m_ski.get(), m_cylinderLength,
165 
166  int tiltSign = (m_tilt < 0) ? -1 : +1;
167 
168  double bracketOffset = m_skiPhiStart - tiltSign * m_bracketPhiOffset;
169  double powerTapeOffset = bracketOffset - tiltSign * 0.5*divisionAngle;
170  // tiltSign not really necessary in powerTapeOffset calculate
171  // - but keeps the bracket and powertape pair associated with the same ski
172 
173 
174  // Make the SkiAux. This is layer dependent.
175  m_skiAux = std::make_unique<SCT_SkiAux>("SkiAux"+layerNumStr,
176  m_ski.get(),
177  m_bracket.get(),
178  m_harness.get(),
179  m_skiPowerTape.get(),
181  bracketOffset,
182  powerTapeOffset,
183  divisionAngle,
186  m_materials);
187 
188  // Build the clamp: we cannot do this until we have the dimensions of SkiAux
189  m_clamp = std::make_unique<SCT_Clamp>("Clamp"+layerNumStr, m_iLayer, m_skiAux->outerRadius(),
191 
192  // Build the volume representing the cooling inlets, outlet and U-bends.
193  // We cannot do this until we have the dimensions of the clamp
194  double coolingInnerRadius = m_clamp->outerRadius();
195  double clearance = 1*Gaudi::Units::mm;
196  double coolingLength = 0.5*m_cylinderLength - 0.5*m_activeLength - clearance;
197  m_coolingEnd = std::make_unique<SCT_CoolingEnd>("CoolingEnd"+layerNumStr, m_iLayer, coolingInnerRadius, coolingLength,
199 
200  //
201  // Calculate the envelopes.
202  //
203 
204 
205  //
206  // Active Layer Envelope extent
207  // Envelope for the active part (ie containing all the skis for the layer)
208  //
209  double rMinActive, rMaxActive;
210 
211  // Returns the min and max radius for the active envelope
212  activeEnvelopeExtent(rMinActive, rMaxActive);
213 
214  // Add some safety
215  rMinActive -= m_safety;
216  rMaxActive += m_safety;
217 
218  // But active layer now includes clamp....
219  rMinActive = m_skiAux->outerRadius();
220 
221  m_innerRadiusActive = rMinActive;
222  m_outerRadiusActive = rMaxActive;
223 
224  //
225  // Extent Envelope for support cyl, flanges and close-outs.
226  //
227  double rMinSupport = std::min(m_supportCyl->innerRadius(),m_flange->innerRadius());
228  //
229  // Overall Layer Envelope extent
230  //
231  // Inner radius is inner radius of support.
232  m_innerRadius = rMinSupport;
234 
235  //
236  // Make envelope for layer; length is now same as support cylinder
237  //
238  double length = m_cylinderLength;
239  // double length = m_layerLength;
240  // if (m_iLayer == 0) {length = m_cylinderLength + m_safety;}
241  const GeoTube * layerEnvelopeTube = new GeoTube(m_innerRadius, m_outerRadius, 0.5 * length);
242 
243  GeoLogVol * layerLog = new GeoLogVol(getName(), layerEnvelopeTube, m_materials->gasMaterial());
244 
245  // Check for overlap.
246  if (m_skiAux->outerRadius() > rMinActive) {
247  std::cout << "----> WARNING: SCT_Layer: Overlap between active layer and aux layer." << std::endl;
248  }
249 
250  return layerLog;
251 }
252 
253 GeoVPhysVol *
255 {
256 
257  double divisionAngle = 360 * Gaudi::Units::degree / m_skisPerLayer;
258 
259  if(m_sqliteReader) {
260  for (int iSki = 0; iSki < m_skisPerLayer; iSki++){
261  id.setPhiModule(iSki);
262  m_ski->build(id);
263 
264  }
265  return nullptr;
266  }
267 
268 
269  // We make this a fullPhysVol for alignment code.
270  GeoFullPhysVol * layer = new GeoFullPhysVol(m_logVolume);
271 
272 
273  //
274  // Active Layer
275  //
276  // Make envelope for active layer
277  //
278  const GeoTube * activeLayerEnvelopeShape = new GeoTube(m_innerRadiusActive, m_outerRadiusActive, 0.5 * m_cylinderLength);
279  GeoLogVol * activeLayerLog = new GeoLogVol(getName()+"Active", activeLayerEnvelopeShape, m_materials->gasMaterial());
280  GeoPhysVol * activeLayer = new GeoPhysVol(activeLayerLog);
281 
282  for (int iSki = 0; iSki < m_skisPerLayer; iSki++){
283  std::ostringstream name; name << "Ski#" << iSki;
284 
285  double phi = m_skiPhiStart + iSki * divisionAngle;
286 
288  pos = GeoTrf::RotateZ3D(phi)*pos;
289  GeoTrf::Transform3D rot = GeoTrf::RotateZ3D(m_tilt)*GeoTrf::RotateZ3D(phi);
290 
291  // Because the ski envelope center is not positioned at the rotation axis for the ski we must first
292  // apply the inverse of refPointTransform() of the ski.
293  GeoTrf::Transform3D trans(GeoTrf::Transform3D(GeoTrf::Translate3D(pos.x(),pos.y(),pos.z())*rot) * m_ski->getRefPointTransform()->getTransform().inverse());
294 
295  activeLayer->add(new GeoAlignableTransform(trans));
296  activeLayer->add(new GeoNameTag(name.str()));
297  activeLayer->add(new GeoIdentifierTag(iSki));
298  id.setPhiModule(iSki);
299  activeLayer->add(m_ski->build(id));
300  }
301 
302  // And add the service material
303  double clampZPos = 0.5 * m_cylinderLength - 0.5 * m_clamp->length();
304  activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(clampZPos)));
305  activeLayer->add(m_clamp->getVolume());
306  activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-clampZPos)));
307  activeLayer->add(m_clamp->getVolume());
308 
309  double coolingZPos = 0.5 * m_cylinderLength - 0.5 * m_coolingEnd->length();
310  activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(coolingZPos)));
311  activeLayer->add(m_coolingEnd->getVolume());
312  activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-coolingZPos)));
313  activeLayer->add(m_coolingEnd->getVolume());
314 
315  //
316  // Aux Layer
317  // Envelope for brackets and powertapes.
318  //
319  const GeoTube * auxLayerEnvelopeShape = new GeoTube(m_skiAux->innerRadius(), m_skiAux->outerRadius(),
320  0.5*m_skiAux->length());
321  GeoLogVol * auxLayerLog = new GeoLogVol(getName()+"Aux", auxLayerEnvelopeShape, m_materials->gasMaterial());
322  GeoPhysVol * auxLayer = new GeoPhysVol(auxLayerLog);
323 
324  for (int iSki = 0; iSki < m_skisPerLayer; iSki++){
325  //for (int iSki = 0; iSki < 2; iSki++){
326  double phi = m_skiAuxPhiStart + iSki * divisionAngle;
327  auxLayer->add(new GeoTransform(GeoTrf::RotateZ3D(phi)));
328  auxLayer->add(m_skiAux->getVolume());
329  }
330 
331 
332  //
333  // Support Layer
334  //
335 
336  // Envelope for support cylinder, flanges and FSI.
337  // Layer0 no longer needs cut-out
338  //
339  const GeoTube * supportLayerTube = new GeoTube(m_innerRadius, m_outerRadiusOfSupport, 0.5 * m_cylinderLength);
340  GeoLogVol * supportLayerLog = new GeoLogVol(getName()+"Support", supportLayerTube,
342  GeoPhysVol * supportLayer = new GeoPhysVol(supportLayerLog);
343 
344  // Position flanges. One at each end.
345  double flangeZPos = 0.5 * m_cylinderLength - 0.5 * m_flange->length();
346  supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(flangeZPos)));
347  supportLayer->add(m_flange->getVolume());
348  supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-flangeZPos)));
349  supportLayer->add(m_flange->getVolume());
350 
351  // Position supportCyl
352  supportLayer->add(m_supportCyl->getVolume());
353 
354  if(m_includeFSI) {
355  // Position FSI fibre masks
356  double fibreMaskZPos = 0.5 * m_cylinderLength - m_flange->length() - 0.5 * m_fibreMask->length();
357  supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(fibreMaskZPos)));
358  supportLayer->add(m_fibreMask->getVolume());
359  supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-fibreMaskZPos)));
360  supportLayer->add(m_fibreMask->getVolume());
361 
362  // Position FSI End jewels
363  double jewelRadius = std::sqrt(m_fibreMask->innerRadius()*m_fibreMask->innerRadius() - 0.25 * m_endJewel->rPhiWidth()*m_endJewel->rPhiWidth()) - 0.5 * m_endJewel->radialWidth();
364  for ( int i=0; i<m_nRepeatEndJewel; i++) {
365  double jewelAngle = m_phiEndJewel + i * 360.*Gaudi::Units::degree/m_nRepeatEndJewel;
366  supportLayer->add(new GeoTransform(GeoTrf::RotateZ3D(jewelAngle)*GeoTrf::TranslateX3D(jewelRadius)*GeoTrf::TranslateZ3D(m_zEndJewel)));
367  supportLayer->add(m_endJewel->getVolume());
368  supportLayer->add(new GeoTransform(GeoTrf::RotateZ3D(jewelAngle)*GeoTrf::TranslateX3D(jewelRadius)*GeoTrf::TranslateZ3D(-m_zEndJewel)));
369  supportLayer->add(m_endJewel->getVolume());
370  }
371 
372  // Position FSI Scorpions
373  double scorpionRadius = std::sqrt(m_supportCyl->innerRadius()*m_supportCyl->innerRadius() - 0.25 * m_scorpion->rPhiWidth()*m_scorpion->rPhiWidth()) - 0.5 * m_scorpion->radialWidth();
374  for ( int i=0; i<m_nRepeatScorpion; i++) {
375  double scorpionAngle = m_phiScorpion + i * 360.*Gaudi::Units::degree/m_nRepeatScorpion;
376  supportLayer->add(new GeoTransform(GeoTrf::RotateZ3D(scorpionAngle)*GeoTrf::TranslateX3D(scorpionRadius)*GeoTrf::TranslateZ3D(m_zScorpion)));
377  supportLayer->add(m_scorpion->getVolume());
378  supportLayer->add(new GeoTransform(GeoTrf::RotateZ3D(scorpionAngle)*GeoTrf::TranslateX3D(scorpionRadius)*GeoTrf::TranslateZ3D(-m_zScorpion)));
379  supportLayer->add(m_scorpion->getVolume());
380  }
381  }
382 
383  // Extra Material
385  xMat.add(supportLayer, "SCTLayer"+intToString(m_iLayer));
386 
387 
388  // Now place all the sub layers into the overall layer.
389  layer->add(activeLayer);
390  layer->add(auxLayer);
391  layer->add(supportLayer);
392 
393  return layer;
394 }
395 
396 void
397 SCT_Layer::activeEnvelopeExtent(double & rmin, double & rmax)
398 {
399 
400  // These are the coordinates of the corners of the ski envelope.
401  // x is in the radial direction and x is in the phi direction.
402 
403  //GeoTrf::Vector3D c0();
404  GeoTrf::Vector3D c1(-(m_ski->env1RefPointVector()->x()) - 0.5*(m_ski->env1Thickness()),
405  -(m_ski->env1RefPointVector()->y()) + 0.5*(m_ski->env1Width()),
406  0.0);
407  GeoTrf::Vector3D c2(-(m_ski->env2RefPointVector()->x()) - 0.5*(m_ski->env2Thickness()),
408  -(m_ski->env2RefPointVector()->y()) + 0.5*(m_ski->env2Width()),
409  0.0);
410  //GeoTrf::Vector3D c3();
411  GeoTrf::Vector3D c4(-(m_ski->env1RefPointVector()->x()) + 0.5*(m_ski->env1Thickness()),
412  -(m_ski->env1RefPointVector()->y()) - 0.5*(m_ski->env1Width()),
413  0.0);
414 
415  //c0.rotateZ(m_tilt);
416  c1 = GeoTrf::RotateZ3D(m_tilt)*c1;
417  c2 = GeoTrf::RotateZ3D(m_tilt)*c2;
418  //c3.rotateZ(m_tilt);
419  c4 = GeoTrf::RotateZ3D(m_tilt)*c4;
420 
421  GeoTrf::Vector3D vxmax = c4;
422  GeoTrf::Vector3D vxmin;
423  if (c1.x() < c2.x()) {
424  vxmin = c1;
425  }
426  else {
427  vxmin = c2;
428  }
429 
430  double xmax = vxmax.x();
431  double xmin = vxmin.x();
432  double ymax = vxmax.y();
433  double ymin = vxmin.y();
434 
435  rmax = sqrt(sqr(m_radius + xmax) + sqr(ymax));
436  rmin = sqrt(sqr(m_radius + xmin) + sqr(ymin));
437 }
438 // *** End of modified lines. ------------------ (07)*********************************
439 
440 double
442 {
443  // Calculate skiPhiOffset such that active silicon touches edge of division
444  // This is what is done in AGE.
445 
446  // First calculated for abs(m_tilt).
447 
448  double divisionAngle = 360 * Gaudi::Units::degree / m_skisPerLayer;
449 
450  // double activeHalfWidth = 0.5 * m_skiAux->ski()->module()->activeWidth();
451  // double moduleHalfThickness = 0.5 * m_skiAux->ski()->module()->thickness();
452  double activeHalfWidth = 0.5 * m_module->activeWidth();
453  double moduleHalfThickness = 0.5 * m_module->thickness();
454 
455  // rotate top points by tilt xin,yin (-X,+Y) and xout,yout (+X,+Y)
456  double ctilt = std::abs(cos(m_tilt));
457  double stilt = std::abs(sin(m_tilt));
458  double xin = m_radius
459  - ctilt * moduleHalfThickness - stilt * activeHalfWidth;
460  double yin = - stilt * moduleHalfThickness + ctilt * activeHalfWidth;
461  double xout = m_radius
462  + ctilt * moduleHalfThickness - stilt * activeHalfWidth;
463  double yout = stilt * moduleHalfThickness + ctilt * activeHalfWidth;
464  double alpha_in = atan(yin/xin);
465  double alpha_out = atan(yout/xout);
466  double alpha = std::max(alpha_in, alpha_out);
467 
468  int tiltSign = (m_tilt < 0) ? -1 : 1;
469  // As ski is larger than (ie alpha > divisionAngle/2)
470  // skiPhiOffset < 0 for +ve tilt and > 0 for -ve tilt.
471  double skiPhiOffset = tiltSign * (0.5 * divisionAngle - alpha);
472 
473  return skiPhiOffset;
474 }
SCT_Layer::m_includeFSI
bool m_includeFSI
Definition: SCT_Layer.h:102
SCT_ComponentFactory::m_geometryManager
SCT_GeometryManager * m_geometryManager
Definition: SCT_ComponentFactory.h:42
SCT_Layer::m_outerRadius
double m_outerRadius
Definition: SCT_Layer.h:87
SCT_MaterialManager
Definition: SCT_MaterialManager.h:21
SCT_Identifier
Definition: SCT_Identifier.h:12
ymin
double ymin
Definition: listroot.cxx:63
SCT_Layer::m_stereoSign
int m_stereoSign
Definition: SCT_Layer.h:82
SCT_Module::thickness
double thickness() const
Definition: SCT_Module.h:44
SCT_Layer::m_ski
std::unique_ptr< SCT_Ski > m_ski
Definition: SCT_Layer.h:111
InDetDD::SiDetectorManager::numerology
const SiNumerology & numerology() const
Access Numerology.
Definition: SiDetectorManager.h:126
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
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SCT_Layer::m_coolingEnd
std::unique_ptr< SCT_CoolingEnd > m_coolingEnd
Definition: SCT_Layer.h:113
SCT_UniqueComponentFactory::m_mapAX
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
Definition: SCT_ComponentFactory.h:96
SCT_MaterialManager.h
SCT_Flange.h
extractSporadic.c1
c1
Definition: extractSporadic.py:134
SCT_Layer::build
virtual GeoVPhysVol * build(SCT_Identifier id)
Definition: SCT_Layer.cxx:254
SCT_Layer::m_bracket
std::unique_ptr< SCT_Bracket > m_bracket
Definition: SCT_Layer.h:114
SCT_Layer::m_zEndJewel
double m_zEndJewel
Definition: SCT_Layer.h:105
SCT_Module
Definition: SCT_Module.h:25
ExtraMaterial.h
SCT_Layer::m_skiPhiStart
double m_skiPhiStart
Definition: SCT_Layer.h:96
SCT_Layer::m_nRepeatScorpion
int m_nRepeatScorpion
Definition: SCT_Layer.h:106
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
SCT_Harness.h
SCT_Layer::m_outerRadiusOfSupport
double m_outerRadiusOfSupport
Definition: SCT_Layer.h:94
SCT_Module::activeWidth
double activeWidth() const
Definition: SCT_Module.h:63
SCT_ComponentFactory::m_detectorManager
InDetDD::SCT_DetectorManager * m_detectorManager
Definition: SCT_ComponentFactory.h:41
x
#define x
SCT_Layer::m_safety
double m_safety
Definition: SCT_Layer.h:84
SCT_SkiPowerTape.h
SCT_Layer::m_innerRadiusActive
double m_innerRadiusActive
Definition: SCT_Layer.h:91
SCT_GeometryManager::generalParameters
const SCT_GeneralParameters * generalParameters() const
Definition: SCT_GeometryManager.cxx:105
InDetDD::ExtraMaterial::add
void add(GeoPhysVol *parent, const std::string &parentName, double zPos=0)
Definition: ExtraMaterial.cxx:42
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
SCT_FSIFibreMask.h
SCT_GeneralParameters.h
python.PyAthena.module
module
Definition: PyAthena.py:134
SCT_Layer::m_bracketPhiOffset
double m_bracketPhiOffset
Definition: SCT_Layer.h:99
SCT_Layer::m_clamp
std::unique_ptr< SCT_Clamp > m_clamp
Definition: SCT_Layer.h:112
SCT_Layer::m_skiPowerTape
std::unique_ptr< SCT_SkiPowerTape > m_skiPowerTape
Definition: SCT_Layer.h:116
SCT_Layer::SCT_Layer
SCT_Layer(const std::string &name, int iLayer, SCT_Module *module, 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_Layer.cxx:51
SCT_Layer::m_fibreMask
std::unique_ptr< SCT_FSIFibreMask > m_fibreMask
Definition: SCT_Layer.h:122
lumiFormat.i
int i
Definition: lumiFormat.py:92
xmin
double xmin
Definition: listroot.cxx:60
SCT_Layer::m_phiScorpion
double m_phiScorpion
Definition: SCT_Layer.h:107
SCT_MaterialManager::gasMaterial
const GeoMaterial * gasMaterial() const
Definition: SCT_MaterialManager.cxx:80
SCT_Layer::m_endJewel
std::unique_ptr< SCT_FSIEndJewel > m_endJewel
Definition: SCT_Layer.h:120
SCT_Layer::m_nRepeatEndJewel
int m_nRepeatEndJewel
Definition: SCT_Layer.h:103
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
SCT_Layer::m_skiAuxPhiStart
double m_skiAuxPhiStart
Definition: SCT_Layer.h:97
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
SCT_Layer::length
double length() const
Definition: SCT_Layer.h:65
SCT_Layer::m_supportCyl
std::unique_ptr< SCT_SupportCyl > m_supportCyl
Definition: SCT_Layer.h:119
SCT_GeometryManager::barrelParameters
const SCT_BarrelParameters * barrelParameters() const
Definition: SCT_GeometryManager.cxx:78
SCT_Layer::m_module
SCT_Module * m_module
Definition: SCT_Layer.h:110
SCT_GeometryManager::distortedMatManager
InDetDD::DistortedMaterialManager * distortedMatManager() const
Definition: SCT_GeometryManager.cxx:111
SCT_Clamp.h
SCT_FSIScorpion.h
SCT_ComponentFactory::intToString
std::string intToString(int i) const
Definition: SCT_ComponentFactory.cxx:29
SCT_GeneralParameters
Definition: SCT_GeneralParameters.h:16
SCT_Ski.h
SCT_Layer::m_radius
double m_radius
Definition: SCT_Layer.h:83
min
#define min(a, b)
Definition: cfImp.cxx:40
SCT_Layer::m_skiAux
std::unique_ptr< SCT_SkiAux > m_skiAux
Definition: SCT_Layer.h:117
sqr
double sqr(double x)
Definition: SCT_Layer.cxx:49
SCT_ComponentFactory::m_materials
SCT_MaterialManager * m_materials
Definition: SCT_ComponentFactory.h:43
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
compileRPVLLRates.c2
c2
Definition: compileRPVLLRates.py:361
InDetDD::SiNumerology::setNumEtaModulesForLayer
void setNumEtaModulesForLayer(int layer, int nEtaModules)
Definition: SiNumerology.cxx:67
SCT_Layer::m_outerRadiusActive
double m_outerRadiusActive
Definition: SCT_Layer.h:92
SCT_Module.h
SCT_Layer::m_tilt
double m_tilt
Definition: SCT_Layer.h:81
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
SCT_SupportCyl.h
SCT_UniqueComponentFactory::m_logVolume
const GeoLogVol * m_logVolume
Definition: SCT_ComponentFactory.h:90
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
SCT_Layer::m_phiEndJewel
double m_phiEndJewel
Definition: SCT_Layer.h:104
SCT_FSIEndJewel.h
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
SCT_UniqueComponentFactory
Definition: SCT_ComponentFactory.h:76
SCT_Layer::m_scorpion
std::unique_ptr< SCT_FSIScorpion > m_scorpion
Definition: SCT_Layer.h:121
SCT_Bracket.h
SCT_BarrelParameters
Definition: SCT_BarrelParameters.h:12
xmax
double xmax
Definition: listroot.cxx:61
SCT_Layer::m_innerRadius
double m_innerRadius
Definition: SCT_Layer.h:86
SCT_BarrelParameters.h
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
SCT_Layer::m_cylinderLength
double m_cylinderLength
Definition: SCT_Layer.h:88
SCT_Layer::m_phiRefModule
double m_phiRefModule
Definition: SCT_Layer.h:100
SCT_Layer.h
SCT_Layer::calcSkiPhiOffset
double calcSkiPhiOffset()
Definition: SCT_Layer.cxx:441
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
SCT_Layer::~SCT_Layer
virtual ~SCT_Layer()
Definition: SCT_Layer.cxx:68
SCT_Layer::m_iLayer
int m_iLayer
Definition: SCT_Layer.h:78
SCT_DetectorManager.h
SCT_SkiAux.h
SCT_UniqueComponentFactory::m_sqliteReader
GeoModelIO::ReadGeoModel * m_sqliteReader
Definition: SCT_ComponentFactory.h:91
InDetDD::ExtraMaterial
Definition: ExtraMaterial.h:23
SCT_Layer::m_harness
std::unique_ptr< SCT_Harness > m_harness
Definition: SCT_Layer.h:115
InDetDD::SiNumerology::setNumPhiModulesForLayer
void setNumPhiModulesForLayer(int layer, int nPhiModules)
Definition: SiNumerology.cxx:61
SCT_ComponentFactory::getName
const std::string & getName() const
Definition: SCT_ComponentFactory.h:35
SCT_Layer::m_zScorpion
double m_zScorpion
Definition: SCT_Layer.h:108
SCT_Layer::getParameters
void getParameters()
Definition: SCT_Layer.cxx:73
SCT_CoolingEnd.h
SCT_GeometryManager.h
SCT_Layer::m_flange
std::unique_ptr< SCT_Flange > m_flange
Definition: SCT_Layer.h:118
python.SystemOfUnits.degree
tuple degree
Definition: SystemOfUnits.py:106
SCT_Layer::activeEnvelopeExtent
void activeEnvelopeExtent(double &rmin, double &rmax)
Definition: SCT_Layer.cxx:397
SCT_GeometryManager
Definition: SCT_GeometryManager.h:25
SCT_Layer::m_skisPerLayer
int m_skisPerLayer
Definition: SCT_Layer.h:80
ymax
double ymax
Definition: listroot.cxx:64
SCT_Layer::m_activeLength
double m_activeLength
Definition: SCT_Layer.h:89
SCT_Layer::preBuild
virtual const GeoLogVol * preBuild()
Definition: SCT_Layer.cxx:109