ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
SCT_Module Class Reference

#include <SCT_Module.h>

Inheritance diagram for SCT_Module:
Collaboration diagram for SCT_Module:

Public Member Functions

 SCT_Module (const std::string &name, 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)
 
 ~SCT_Module ()
 
 SCT_Module (const SCT_Module &)=delete
 
SCT_Moduleoperator= (const SCT_Module &)=delete
 
virtual GeoVPhysVol * build (SCT_Identifier id)
 
double thickness () const
 
double width () const
 
double length () const
 
double env1Thickness () const
 
double env1Width () const
 
double env1Length () const
 
double env2Thickness () const
 
double env2Width () const
 
double env2Length () const
 
const GeoTrf::Vector3D * env1RefPointVector () const
 
const GeoTrf::Vector3D * env2RefPointVector () const
 
double sensorGap () const
 
double stereoInner () const
 
double stereoOuter () const
 
double stereoAngle () const
 
double activeWidth () const
 
double baseBoardOffsetY () const
 
double baseBoardOffsetZ () const
 
const SCT_InnerSideinnerSide () const
 
const SCT_OuterSideouterSide () const
 
const SCT_BaseBoardbaseBoard () const
 
const std::string & getName () const
 
std::string intToString (int i) const
 

Protected Member Functions

double epsilon () const
 

Protected Attributes

const GeoLogVol * m_logVolume
 
GeoModelIO::ReadGeoModel * m_sqliteReader
 
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
 
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
 
InDetDD::SCT_DetectorManagerm_detectorManager
 
SCT_GeometryManagerm_geometryManager
 
SCT_MaterialManagerm_materials
 

Private Member Functions

void getParameters ()
 
virtual const GeoLogVol * preBuild ()
 

Private Attributes

double m_thickness = 0.0
 
double m_width = 0.0
 
double m_length = 0.0
 
double m_env1Thickness = 0.0
 
double m_env1Width = 0.0
 
double m_env1Length = 0.0
 
double m_env2Thickness = 0.0
 
double m_env2Width = 0.0
 
double m_env2Length = 0.0
 
double m_activeWidth = 0.0
 
double m_baseBoardOffsetY = 0.0
 
double m_baseBoardOffsetZ = 0.0
 
double m_sensorGap = 0.0
 
double m_stereoInner = 0.0
 
double m_stereoOuter = 0.0
 
double m_stereoAngle = 0.0
 
int m_upperSide = 0
 
double m_safety = 0.0
 
std::unique_ptr< SCT_InnerSidem_innerSide
 
std::unique_ptr< SCT_OuterSidem_outerSide
 
std::unique_ptr< SCT_BaseBoardm_baseBoard
 
std::unique_ptr< GeoTrf::Transform3D > m_innerSidePos
 
std::unique_ptr< GeoTrf::Transform3D > m_outerSidePos
 
std::unique_ptr< GeoTrf::Translate3D > m_baseBoardPos
 
std::unique_ptr< GeoTrf::Vector3D > m_env1RefPointVector
 
std::unique_ptr< GeoTrf::Vector3D > m_env2RefPointVector
 
std::string m_name
 

Static Private Attributes

static const double s_epsilon = 1.0e-6 * Gaudi::Units::mm
 

Detailed Description

Definition at line 23 of file SCT_Module.h.

Constructor & Destructor Documentation

◆ SCT_Module() [1/2]

SCT_Module::SCT_Module ( const std::string &  name,
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 at line 43 of file SCT_Module.cxx.

50 : SCT_UniqueComponentFactory(name, detectorManager, geometryManager, materials, sqliteReader, std::move(mapFPV), std::move(mapAX))
51 {
52  getParameters();
54 }

◆ ~SCT_Module()

SCT_Module::~SCT_Module ( )

Definition at line 57 of file SCT_Module.cxx.

58 {
59 }

◆ SCT_Module() [2/2]

SCT_Module::SCT_Module ( const SCT_Module )
delete

Member Function Documentation

◆ activeWidth()

double SCT_Module::activeWidth ( ) const
inline

Definition at line 63 of file SCT_Module.h.

63 {return m_activeWidth;}

◆ baseBoard()

const SCT_BaseBoard* SCT_Module::baseBoard ( ) const
inline

Definition at line 70 of file SCT_Module.h.

70 {return m_baseBoard.get();}

◆ baseBoardOffsetY()

double SCT_Module::baseBoardOffsetY ( ) const
inline

Definition at line 65 of file SCT_Module.h.

65 {return m_baseBoardOffsetY;}

◆ baseBoardOffsetZ()

double SCT_Module::baseBoardOffsetZ ( ) const
inline

Definition at line 66 of file SCT_Module.h.

66 {return m_baseBoardOffsetZ;}

◆ build()

GeoVPhysVol * SCT_Module::build ( SCT_Identifier  id)
virtual

Implements SCT_UniqueComponentFactory.

Definition at line 317 of file SCT_Module.cxx.

318 {
319  GeoFullPhysVol * module=nullptr;
320 
321  if(!m_sqliteReader){
322 
323  module=new GeoFullPhysVol(m_logVolume);
324 
325 
326  // We make these fullPhysVols for the alignment code.
327  // We probably should make the transform for the sensor
328  // alignable rather than the "side" to save making an extra full phys volume.
329 
330  //
331  // Build the module
332  //
333  // Add Baseboard
334  GeoTransform * baseBoardTransform = new GeoTransform(*m_baseBoardPos);
335  module->add(baseBoardTransform);
336  module->add(m_baseBoard->getVolume());
337 
338  // Add innerside
339  GeoAlignableTransform * innerTransform = new GeoAlignableTransform(*m_innerSidePos);
340  module->add(innerTransform);
341  int innerSideNumber = (m_upperSide) ? 0 : 1;
342  module->add(new GeoNameTag("Side#"+intToString(innerSideNumber))); // Identifier side=0
343  module->add(new GeoIdentifierTag(innerSideNumber));
344  id.setSide(innerSideNumber);
345  Identifier innerId = id.getWaferId();
346  GeoVPhysVol * innerSide = m_innerSide->build(id);
347  module->add(innerSide);
348  // Store alignable transform
349  m_detectorManager->addAlignableTransform(0, innerId, innerTransform, innerSide);
350 
351  // Add outerside
352  GeoAlignableTransform * outerTransform = new GeoAlignableTransform(*m_outerSidePos);
353  module->add(outerTransform);
354  int outerSideNumber = m_upperSide;
355  module->add(new GeoNameTag("Side#"+intToString(outerSideNumber))); // Identifier side=1
356  module->add(new GeoIdentifierTag(outerSideNumber));
357  id.setSide(outerSideNumber);
358  Identifier outerId = id.getWaferId();
359  GeoVPhysVol * outerSide = m_outerSide->build(id);
360  module->add(outerSide);
361  // Store alignable transform
362  m_detectorManager->addAlignableTransform(0, outerId, outerTransform, outerSide);
363  } else
364  {
365 
366  // Add innerside
367  int innerSideNumber = (m_upperSide) ? 0 : 1;
368  id.setSide(innerSideNumber);
369  // Store alignable transform
370  Identifier innerId = id.getWaferId();
371  m_innerSide->build(id);
372 
373  std::string key="Side#"+intToString(innerSideNumber)+"_"+std::to_string(id.getBarrelEC())+"_"+std::to_string(id.getLayerDisk())+"_"+std::to_string(id.getEtaModule())+"_"+std::to_string(id.getPhiModule());
375 
376 
377  // Add outerside
378  int outerSideNumber = m_upperSide;
379  id.setSide(outerSideNumber);
380  // Store alignable transform
381  Identifier outerId = id.getWaferId();
382  m_outerSide->build(id);
383 
384  key="Side#"+intToString(outerSideNumber)+"_"+std::to_string(id.getBarrelEC())+"_"+std::to_string(id.getLayerDisk())+"_"+std::to_string(id.getEtaModule())+"_"+std::to_string(id.getPhiModule());
386 
387  }
388  return module;
389 }

◆ env1Length()

double SCT_Module::env1Length ( ) const
inline

Definition at line 50 of file SCT_Module.h.

50 {return m_env1Length;}

◆ env1RefPointVector()

const GeoTrf::Vector3D* SCT_Module::env1RefPointVector ( ) const
inline

Definition at line 55 of file SCT_Module.h.

55 {return m_env1RefPointVector.get();}

◆ env1Thickness()

double SCT_Module::env1Thickness ( ) const
inline

Definition at line 48 of file SCT_Module.h.

48 {return m_env1Thickness;}

◆ env1Width()

double SCT_Module::env1Width ( ) const
inline

Definition at line 49 of file SCT_Module.h.

49 {return m_env1Width;}

◆ env2Length()

double SCT_Module::env2Length ( ) const
inline

Definition at line 53 of file SCT_Module.h.

53 {return m_env2Length;}

◆ env2RefPointVector()

const GeoTrf::Vector3D* SCT_Module::env2RefPointVector ( ) const
inline

Definition at line 56 of file SCT_Module.h.

56 {return m_env2RefPointVector.get();}

◆ env2Thickness()

double SCT_Module::env2Thickness ( ) const
inline

Definition at line 51 of file SCT_Module.h.

51 {return m_env2Thickness;}

◆ env2Width()

double SCT_Module::env2Width ( ) const
inline

Definition at line 52 of file SCT_Module.h.

52 {return m_env2Width;}

◆ epsilon()

double SCT_ComponentFactory::epsilon ( ) const
protectedinherited

Definition at line 38 of file SCT_ComponentFactory.cxx.

39 {
40  return s_epsilon;
41 }

◆ getName()

const std::string& SCT_ComponentFactory::getName ( ) const
inlineinherited

Definition at line 35 of file SCT_ComponentFactory.h.

35 {return m_name;}

◆ getParameters()

void SCT_Module::getParameters ( )
private

Definition at line 63 of file SCT_Module.cxx.

64 {
66  const SCT_GeneralParameters * generalParameters = m_geometryManager->generalParameters();
67  m_safety = generalParameters->safety();
68 
69  m_sensorGap = parameters->moduleSensorToSensorGap();
70 
71  m_stereoAngle = parameters->moduleStereoAngle();
72  int sign = parameters->moduleStereoUpperSign();
73  m_upperSide = parameters->moduleUpperSideNumber();
76 
77  m_baseBoardOffsetY = parameters->baseBoardOffsetY();
78  m_baseBoardOffsetZ = parameters->baseBoardOffsetZ();
79 }

◆ innerSide()

const SCT_InnerSide* SCT_Module::innerSide ( ) const
inline

Definition at line 68 of file SCT_Module.h.

68 {return m_innerSide.get();}

◆ intToString()

std::string SCT_ComponentFactory::intToString ( int  i) const
inherited

Definition at line 30 of file SCT_ComponentFactory.cxx.

31 {
32  std::ostringstream str;
33  str << i;
34  return str.str();
35 }

◆ length()

double SCT_Module::length ( ) const
inline

Definition at line 46 of file SCT_Module.h.

46 {return m_length;}

◆ operator=()

SCT_Module& SCT_Module::operator= ( const SCT_Module )
delete

◆ outerSide()

const SCT_OuterSide* SCT_Module::outerSide ( ) const
inline

Definition at line 69 of file SCT_Module.h.

69 {return m_outerSide.get();}

◆ preBuild()

const GeoLogVol * SCT_Module::preBuild ( )
privatevirtual

Implements SCT_UniqueComponentFactory.

Definition at line 83 of file SCT_Module.cxx.

84 {
85  // Create child components
86  m_outerSide = std::make_unique<SCT_OuterSide>("OuterSide", m_detectorManager, m_geometryManager, m_materials, m_sqliteReader, m_mapFPV, m_mapAX);
87  m_innerSide = std::make_unique<SCT_InnerSide>("InnerSide", m_detectorManager, m_geometryManager, m_materials, m_sqliteReader, m_mapFPV, m_mapAX);
88 
89  if(m_sqliteReader) return nullptr;
90 
91  m_baseBoard = std::make_unique<SCT_BaseBoard>("BaseBoard", m_detectorManager, m_geometryManager, m_materials);
92  //
93  // We have 2 envelopes.
94  // 1. It contains two sensors and baseBoard.
95  // 2. It contains hybrid and pigtail.
96  //
97  // See "doc/cornerName.ps".
98  //
99 
100  // We need to take into account the safety incorporated in the inner and outer side
101  // envelopes.
102  double sensorWidth = m_innerSide->sensor()->width() + m_safety;
103  double sensorLength = m_innerSide->sensor()->length() + m_safety;
104  double innerSideHybridWidth = m_innerSide->hybrid()->width() + m_safety;
105  double innerSideHybridLength = m_innerSide->hybrid()->length() + m_safety;
106  double outerSideHybridWidth = m_outerSide->hybrid()->width() + m_safety;
107  double outerSideHybridLength = m_outerSide->hybrid()->length() + m_safety;
108  double baseBoardWidth = m_baseBoard->width() + m_safety;
109  double baseBoardLength = m_baseBoard->length() + m_safety;
110  double outerSidePigtailLength = m_outerSide->pigtail()->length() + m_safety;
111 
112 
113  // Define constants for convenience.
114  // for corner of outer side sensor.
115  GeoTrf::Vector3D a(0.0, 0.5 * sensorWidth, 0.5 * sensorLength);
116  GeoTrf::Vector3D b(0.0, -0.5 * sensorWidth, a.z());
117  GeoTrf::Vector3D c(0.0, b.y(),-0.5 * sensorLength);
118  GeoTrf::Vector3D d(0.0, a.y(), c.z());
119 
120  // for corner of inner side sensor.
121  GeoTrf::Vector3D e(0.0, a.y(), a.z());
122  GeoTrf::Vector3D f(0.0, b.y(), b.z());
123  GeoTrf::Vector3D g(0.0, c.y(), c.z());
124  GeoTrf::Vector3D h(0.0, d.y(), d.z());
125 
126  // for corner of base board.
127  GeoTrf::Vector3D u(0.0,
128  m_baseBoardOffsetY + 0.5*baseBoardWidth,
129  m_baseBoardOffsetZ + 0.5*baseBoardLength);
130  GeoTrf::Vector3D v(0.0, m_baseBoardOffsetY - 0.5*baseBoardWidth, u.z());
131  GeoTrf::Vector3D w(0.0, v.y(), m_baseBoardOffsetZ - 0.5*baseBoardLength);
132  GeoTrf::Vector3D x(0.0, u.y(),w.z());
133 
134  // for corner of hybrid, connectorouter and pigtail of outer side.
135  GeoTrf::Vector3D i(0.0,
136  0.5*outerSideHybridWidth,
137  m_outerSide->hybridOffsetZ() + 0.5*outerSidePigtailLength);
138  GeoTrf::Vector3D l(0.0,
139  -0.5*outerSideHybridWidth - m_outerSide->pigtail()->width(), i.z());
140  GeoTrf::Vector3D m(0.0, l.y(),
141  m_outerSide->hybridOffsetZ() - 0.5*outerSidePigtailLength);
142  GeoTrf::Vector3D p(0.0, i.y(),
143  m.z());
144 
145 
146 
147  // for corner of hybrid and interConnect of inner side.
148  GeoTrf::Vector3D q(0.0, 0.5*outerSideHybridWidth, m_outerSide->hybridOffsetZ() + 0.5*outerSideHybridLength );
149  GeoTrf::Vector3D r(0.0, -0.5*innerSideHybridWidth, q.z());
150  GeoTrf::Vector3D s(0.0, r.y(), m_innerSide->hybridOffsetZ() - 0.5*innerSideHybridLength);
151  GeoTrf::Vector3D t(0.0, q.y(), s.z());
152 
153  // All points turn +-20 mGaudi::Units::rad around physical center of module.
154  a = GeoTrf::RotateX3D(m_stereoOuter/Gaudi::Units::radian)*a;
155  b = GeoTrf::RotateX3D(m_stereoOuter/Gaudi::Units::radian)*b;
156  c = GeoTrf::RotateX3D(m_stereoOuter/Gaudi::Units::radian)*c;
157  d = GeoTrf::RotateX3D(m_stereoOuter/Gaudi::Units::radian)*d;
158 
159  e = GeoTrf::RotateX3D(m_stereoInner/Gaudi::Units::radian)*e;
160  f = GeoTrf::RotateX3D(m_stereoInner/Gaudi::Units::radian)*f;
161  g = GeoTrf::RotateX3D(m_stereoInner/Gaudi::Units::radian)*g;
162  h = GeoTrf::RotateX3D(m_stereoInner/Gaudi::Units::radian)*h;
163 
164  i = GeoTrf::RotateX3D(m_stereoOuter/Gaudi::Units::radian)*i;
165  //k.rotateX(m_stereoOuter/Gaudi::Units::radian);
166  l = GeoTrf::RotateX3D(m_stereoOuter/Gaudi::Units::radian)*l;
167  m = GeoTrf::RotateX3D(m_stereoOuter/Gaudi::Units::radian)*m;
168  //n.rotateX(m_stereoOuter/Gaudi::Units::radian);
169  p = GeoTrf::RotateX3D(m_stereoOuter/Gaudi::Units::radian)*p;
170 
171  q = GeoTrf::RotateX3D(m_stereoInner/Gaudi::Units::radian)*q;
172  r = GeoTrf::RotateX3D(m_stereoInner/Gaudi::Units::radian)*r;
173  s = GeoTrf::RotateX3D(m_stereoInner/Gaudi::Units::radian)*s;
174  t = GeoTrf::RotateX3D(m_stereoInner/Gaudi::Units::radian)*t;
175 
176  // Calculate demension of envelope1.
177  const double z_ab = std::max(a.z(), b.z());
178  const double z_ef = std::max(e.z(), f.z());
179  const double z_cd = std::min(c.z(), d.z());
180  const double z_gh = std::min(g.z(), h.z());
181 
182  const double y_ad = std::max(a.y(), d.y());
183  const double y_eh = std::max(e.y(), h.y());
184  const double y_bc = std::min(b.y(), c.y());
185  const double y_fg = std::min(f.y(), g.y());
186 
187  const double zmaxEnv1 = std::max(z_ab, z_ef);
188  const double zminEnv1 = std::min(z_cd, z_gh);
189 
190  const double ypre_maxEnv1 = std::max(y_ad, y_eh);
191  const double ypre_minEnv1 = std::min(y_bc, y_fg);
192 
193  const double ymaxEnv1 = std::max(ypre_maxEnv1, u.y());
194  const double yminEnv1 = std::min(ypre_minEnv1, v.y());
195 
196  // some temporary value.
197  const double thicknessEnv1 = m_sensorGap + 2.0*m_outerSide->sensor()->thickness();
198  const double lengthEnv1 = zmaxEnv1 - zminEnv1;
199  const double widthEnv1 = ymaxEnv1 - yminEnv1;
200 
201  // Center of evnelope1.
202  const double xCenterEnv1 = 0.0;
203  const double yCenterEnv1 = yminEnv1 + 0.5*widthEnv1;
204  const double zCenterEnv1 = zmaxEnv1 - 0.5*lengthEnv1;
205 
206  m_env1RefPointVector = std::make_unique<GeoTrf::Vector3D>(-xCenterEnv1, -yCenterEnv1, -zCenterEnv1);
207 
208  // Calculate demension of envelope2.
209  const double z_ikl = std::max(i.z(), l.z());
210  const double z_qr = std::max(q.z(), r.z());
211  const double z_mnp = std::min(m.z(), p.z());
212  const double z_st = std::min(s.z(), t.z());
213 
214  const double y_ip = std::max(i.y(), p.y());
215  const double y_qt = std::max(q.y(), t.y());
216  const double y_lm = std::min(l.y(), m.y());
217  const double y_rs = std::min(r.y(), s.y());
218 
219  const double zmaxEnv2 = std::max(z_ikl, z_qr);
220  const double zminEnv2 = std::min(z_mnp, z_st);
221 
222  const double ymaxEnv2 = std::max(y_ip, y_qt);
223  const double yminEnv2 = std::min(y_lm, y_rs);
224 
225  const double thicknessEnv2 = 2.0*(m_outerSide->hybridOffsetX() +
226  0.5*m_innerSide->sensor()->thickness() +
227  0.5*m_sensorGap +
228  0.5*m_outerSide->hybrid()->thickness());
229  const double lengthEnv2 = zmaxEnv2 - zminEnv2;
230  const double widthEnv2 = ymaxEnv2 - yminEnv2;
231 
232  // Center of envelope2.
233  const double xCenterEnv2 = 0.0;
234  const double yCenterEnv2 = ymaxEnv2 - 0.5*widthEnv2;
235  const double zCenterEnv2 = zmaxEnv2 - 0.5*lengthEnv2;
236 
237  m_env2RefPointVector = std::make_unique<GeoTrf::Vector3D>(-xCenterEnv2, -yCenterEnv2, -zCenterEnv2);
238 
239  // Calculate dimension of subbox
240  const double xmaxSubBox = - 0.5*m_baseBoard->thickness() - m_safety;
241  const double xminSubBox = - 0.5*thicknessEnv2 - 2.0*m_safety;
242 
243  const double ymaxSubBox = std::min(r.y(), s.y()) - m_safety;
244  const double yminSubBox = yminEnv2 - 2.0*m_safety;
245 
246  const double zmaxSubBox = zmaxEnv1 + 2.0*m_safety;
247  const double zminSubBox = zminEnv1 - 2.0*m_safety;
248 
249  const double thicknessSubBox = xmaxSubBox - xminSubBox;
250  const double widthSubBox = ymaxSubBox - yminSubBox;
251  const double lengthSubBox = zmaxSubBox - zminSubBox;
252 
253  // Center of subbox.
254  const double xCenterSubBox = xmaxSubBox - 0.5*thicknessSubBox;
255  const double yCenterSubBox = ymaxSubBox - 0.5*widthSubBox;
256  const double zCenterSubBox = zmaxSubBox - 0.5*lengthSubBox;
257 
258 
259  m_env1Thickness = thicknessEnv1 + 2*m_safety;
260  m_env1Width = widthEnv1 + 2*m_safety;
261  m_env1Length = lengthEnv1 + 2*m_safety;
262 
263  m_env2Thickness = thicknessEnv2 + 2*m_safety;
264  m_env2Width = widthEnv2 + 2*m_safety;
265  m_env2Length = lengthEnv2 + 2*m_safety;
266 
267  // Envelope 2 defines the overall thickness. NB. The ski assumes the
268  // the envelope "thickness" is centered on x, which it is.
273 
274  // Calculate a few things.
275  const double OSPosX = 0.5*m_sensorGap + 0.5*m_innerSide->sensor()->thickness();
276  const double ISPosX = -(0.5*m_sensorGap + 0.5*m_innerSide->sensor()->thickness());
277 
278  //
279  // Make an envelope for the whole module.
280  //
281  const GeoBox * envelope1 = new GeoBox(0.5*m_env1Thickness, 0.5*m_env1Width, 0.5*m_env1Length);
282  const GeoBox * envelope2 = new GeoBox(0.5*m_env2Thickness, 0.5*m_env2Width, 0.5*m_env2Length);
283 
284  const GeoBox * subBox = new GeoBox(0.5*thicknessSubBox, 0.5*widthSubBox, 0.6*lengthSubBox);
285 
286  // In the following, envelope1 and envelope2 are added and SUBBOX is pulled.
287  const GeoShape & moduleEnvelope = (*envelope1 << GeoTrf::Translate3D(xCenterEnv1, yCenterEnv1, zCenterEnv1)).
288  add(*envelope2 << GeoTrf::Translate3D(xCenterEnv2, yCenterEnv2, zCenterEnv2)).
289  subtract(*subBox << GeoTrf::Translate3D(xCenterSubBox, yCenterSubBox, zCenterSubBox));
290 
291  const GeoLogVol * moduleLog = new GeoLogVol(getName(), &moduleEnvelope, m_materials->gasMaterial());
292 
293  //
294  // inner side
295  //
296  GeoTrf::Transform3D rotInner = GeoTrf::RotateX3D(m_stereoInner) * GeoTrf::RotateZ3D(180*Gaudi::Units::deg);
297  m_innerSidePos = std::make_unique<GeoTrf::Transform3D>(GeoTrf::Transform3D(GeoTrf::Translation3D(ISPosX, 0.0, 0.0)*rotInner));
298 
299  //
300  // outer side
301  //
302  GeoTrf::RotateX3D rotOuter(m_stereoOuter);
303  m_outerSidePos = std::make_unique<GeoTrf::Transform3D>(GeoTrf::Transform3D(GeoTrf::Translation3D(OSPosX, 0.0, 0.0)*rotOuter));
304 
305  //
306  // base board
307  //
308  const double baseBoardPosY = m_baseBoardOffsetY;
309  const double baseBoardPosZ = m_baseBoardOffsetZ;
310  m_baseBoardPos = std::make_unique<GeoTrf::Translate3D>(0.0, baseBoardPosY, baseBoardPosZ);
311 
312  return moduleLog;
313 }

◆ sensorGap()

double SCT_Module::sensorGap ( ) const
inline

Definition at line 58 of file SCT_Module.h.

58 {return m_sensorGap;}

◆ stereoAngle()

double SCT_Module::stereoAngle ( ) const
inline

Definition at line 61 of file SCT_Module.h.

61 {return m_stereoAngle;}

◆ stereoInner()

double SCT_Module::stereoInner ( ) const
inline

Definition at line 59 of file SCT_Module.h.

59 {return m_stereoInner;}

◆ stereoOuter()

double SCT_Module::stereoOuter ( ) const
inline

Definition at line 60 of file SCT_Module.h.

60 {return m_stereoOuter;}

◆ thickness()

double SCT_Module::thickness ( ) const
inline

Definition at line 44 of file SCT_Module.h.

44 {return m_thickness;}

◆ width()

double SCT_Module::width ( ) const
inline

Definition at line 45 of file SCT_Module.h.

45 {return m_width;}

Member Data Documentation

◆ m_activeWidth

double SCT_Module::m_activeWidth = 0.0
private

Definition at line 88 of file SCT_Module.h.

◆ m_baseBoard

std::unique_ptr<SCT_BaseBoard> SCT_Module::m_baseBoard
private

Definition at line 102 of file SCT_Module.h.

◆ m_baseBoardOffsetY

double SCT_Module::m_baseBoardOffsetY = 0.0
private

Definition at line 90 of file SCT_Module.h.

◆ m_baseBoardOffsetZ

double SCT_Module::m_baseBoardOffsetZ = 0.0
private

Definition at line 91 of file SCT_Module.h.

◆ m_baseBoardPos

std::unique_ptr<GeoTrf::Translate3D> SCT_Module::m_baseBoardPos
private

Definition at line 106 of file SCT_Module.h.

◆ m_detectorManager

InDetDD::SCT_DetectorManager* SCT_ComponentFactory::m_detectorManager
protectedinherited

Definition at line 41 of file SCT_ComponentFactory.h.

◆ m_env1Length

double SCT_Module::m_env1Length = 0.0
private

Definition at line 83 of file SCT_Module.h.

◆ m_env1RefPointVector

std::unique_ptr<GeoTrf::Vector3D> SCT_Module::m_env1RefPointVector
private

Definition at line 108 of file SCT_Module.h.

◆ m_env1Thickness

double SCT_Module::m_env1Thickness = 0.0
private

Definition at line 81 of file SCT_Module.h.

◆ m_env1Width

double SCT_Module::m_env1Width = 0.0
private

Definition at line 82 of file SCT_Module.h.

◆ m_env2Length

double SCT_Module::m_env2Length = 0.0
private

Definition at line 86 of file SCT_Module.h.

◆ m_env2RefPointVector

std::unique_ptr<GeoTrf::Vector3D> SCT_Module::m_env2RefPointVector
private

Definition at line 109 of file SCT_Module.h.

◆ m_env2Thickness

double SCT_Module::m_env2Thickness = 0.0
private

Definition at line 84 of file SCT_Module.h.

◆ m_env2Width

double SCT_Module::m_env2Width = 0.0
private

Definition at line 85 of file SCT_Module.h.

◆ m_geometryManager

SCT_GeometryManager* SCT_ComponentFactory::m_geometryManager
protectedinherited

Definition at line 42 of file SCT_ComponentFactory.h.

◆ m_innerSide

std::unique_ptr<SCT_InnerSide> SCT_Module::m_innerSide
private

Definition at line 100 of file SCT_Module.h.

◆ m_innerSidePos

std::unique_ptr<GeoTrf::Transform3D> SCT_Module::m_innerSidePos
private

Definition at line 104 of file SCT_Module.h.

◆ m_length

double SCT_Module::m_length = 0.0
private

Definition at line 79 of file SCT_Module.h.

◆ m_logVolume

const GeoLogVol* SCT_UniqueComponentFactory::m_logVolume
protectedinherited

Definition at line 90 of file SCT_ComponentFactory.h.

◆ m_mapAX

std::shared_ptr<std::map<std::string, GeoAlignableTransform*> > SCT_UniqueComponentFactory::m_mapAX
protectedinherited

Definition at line 96 of file SCT_ComponentFactory.h.

◆ m_mapFPV

std::shared_ptr<std::map<std::string, GeoFullPhysVol*> > SCT_UniqueComponentFactory::m_mapFPV
protectedinherited

Definition at line 95 of file SCT_ComponentFactory.h.

◆ m_materials

SCT_MaterialManager* SCT_ComponentFactory::m_materials
protectedinherited

Definition at line 43 of file SCT_ComponentFactory.h.

◆ m_name

std::string SCT_ComponentFactory::m_name
privateinherited

Definition at line 49 of file SCT_ComponentFactory.h.

◆ m_outerSide

std::unique_ptr<SCT_OuterSide> SCT_Module::m_outerSide
private

Definition at line 101 of file SCT_Module.h.

◆ m_outerSidePos

std::unique_ptr<GeoTrf::Transform3D> SCT_Module::m_outerSidePos
private

Definition at line 105 of file SCT_Module.h.

◆ m_safety

double SCT_Module::m_safety = 0.0
private

Definition at line 98 of file SCT_Module.h.

◆ m_sensorGap

double SCT_Module::m_sensorGap = 0.0
private

Definition at line 93 of file SCT_Module.h.

◆ m_sqliteReader

GeoModelIO::ReadGeoModel* SCT_UniqueComponentFactory::m_sqliteReader
protectedinherited

Definition at line 91 of file SCT_ComponentFactory.h.

◆ m_stereoAngle

double SCT_Module::m_stereoAngle = 0.0
private

Definition at line 96 of file SCT_Module.h.

◆ m_stereoInner

double SCT_Module::m_stereoInner = 0.0
private

Definition at line 94 of file SCT_Module.h.

◆ m_stereoOuter

double SCT_Module::m_stereoOuter = 0.0
private

Definition at line 95 of file SCT_Module.h.

◆ m_thickness

double SCT_Module::m_thickness = 0.0
private

Definition at line 77 of file SCT_Module.h.

◆ m_upperSide

int SCT_Module::m_upperSide = 0
private

Definition at line 97 of file SCT_Module.h.

◆ m_width

double SCT_Module::m_width = 0.0
private

Definition at line 78 of file SCT_Module.h.

◆ s_epsilon

const double SCT_ComponentFactory::s_epsilon = 1.0e-6 * Gaudi::Units::mm
staticprivateinherited

Definition at line 50 of file SCT_ComponentFactory.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
beamspotman.r
def r
Definition: beamspotman.py:676
SCT_Module::m_thickness
double m_thickness
Definition: SCT_Module.h:77
SCT_ComponentFactory::m_geometryManager
SCT_GeometryManager * m_geometryManager
Definition: SCT_ComponentFactory.h:42
SCT_ComponentFactory::m_name
std::string m_name
Definition: SCT_ComponentFactory.h:49
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
SCT_UniqueComponentFactory::m_mapFPV
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
Definition: SCT_ComponentFactory.h:95
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
SCT_Module::m_env2Thickness
double m_env2Thickness
Definition: SCT_Module.h:84
SCT_GeneralParameters::safety
double safety() const
Definition: SCT_GeneralParameters.cxx:48
SCT_Module::m_length
double m_length
Definition: SCT_Module.h:79
SCT_Module::m_env1Width
double m_env1Width
Definition: SCT_Module.h:82
SCT_UniqueComponentFactory::m_mapAX
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
Definition: SCT_ComponentFactory.h:96
hist_file_dump.d
d
Definition: hist_file_dump.py:137
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
SCT_Module::m_stereoInner
double m_stereoInner
Definition: SCT_Module.h:94
SCT_UniqueComponentFactory::SCT_UniqueComponentFactory
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)
Definition: SCT_ComponentFactory.cxx:44
SCT_Module::m_outerSide
std::unique_ptr< SCT_OuterSide > m_outerSide
Definition: SCT_Module.h:101
deg
#define deg
Definition: SbPolyhedron.cxx:17
SCT_Module::innerSide
const SCT_InnerSide * innerSide() const
Definition: SCT_Module.h:68
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
SCT_Module::m_env1Length
double m_env1Length
Definition: SCT_Module.h:83
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SCT_Module::m_env2RefPointVector
std::unique_ptr< GeoTrf::Vector3D > m_env2RefPointVector
Definition: SCT_Module.h:109
SCT_ComponentFactory::m_detectorManager
InDetDD::SCT_DetectorManager * m_detectorManager
Definition: SCT_ComponentFactory.h:41
x
#define x
SCT_Module::m_env1RefPointVector
std::unique_ptr< GeoTrf::Vector3D > m_env1RefPointVector
Definition: SCT_Module.h:108
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
SCT_GeometryManager::generalParameters
const SCT_GeneralParameters * generalParameters() const
Definition: SCT_GeometryManager.cxx:105
SCT_Module::m_upperSide
int m_upperSide
Definition: SCT_Module.h:97
SCT_Module::getParameters
void getParameters()
Definition: SCT_Module.cxx:63
SCT_Module::preBuild
virtual const GeoLogVol * preBuild()
Definition: SCT_Module.cxx:83
python.PyAthena.module
module
Definition: PyAthena.py:131
python.SystemOfUnits.radian
int radian
Definition: SystemOfUnits.py:104
SCT_Module::m_env1Thickness
double m_env1Thickness
Definition: SCT_Module.h:81
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
SCT_Module::m_baseBoardOffsetY
double m_baseBoardOffsetY
Definition: SCT_Module.h:90
lumiFormat.i
int i
Definition: lumiFormat.py:85
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
SCT_MaterialManager::gasMaterial
const GeoMaterial * gasMaterial() const
Definition: SCT_MaterialManager.cxx:69
extractSporadic.h
list h
Definition: extractSporadic.py:97
SCT_Module::m_env2Length
double m_env2Length
Definition: SCT_Module.h:86
SCT_Module::m_outerSidePos
std::unique_ptr< GeoTrf::Transform3D > m_outerSidePos
Definition: SCT_Module.h:105
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
SCT_Module::m_stereoAngle
double m_stereoAngle
Definition: SCT_Module.h:96
SCT_Module::m_baseBoardOffsetZ
double m_baseBoardOffsetZ
Definition: SCT_Module.h:91
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:107
add
bool add(const std::string &hname, TKey *tobj)
Definition: fastadd.cxx:55
hist_file_dump.f
f
Definition: hist_file_dump.py:135
SCT_ComponentFactory::intToString
std::string intToString(int i) const
Definition: SCT_ComponentFactory.cxx:30
SCT_GeneralParameters
Definition: SCT_GeneralParameters.h:16
SCT_Module::m_width
double m_width
Definition: SCT_Module.h:78
SCT_ComponentFactory::s_epsilon
static const double s_epsilon
Definition: SCT_ComponentFactory.h:50
SCT_GeometryManager::barrelModuleParameters
const SCT_BarrelModuleParameters * barrelModuleParameters() const
Definition: SCT_GeometryManager.cxx:84
SCT_ComponentFactory::m_materials
SCT_MaterialManager * m_materials
Definition: SCT_ComponentFactory.h:43
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
SCT_BarrelModuleParameters
Definition: SCT_BarrelModuleParameters.h:12
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.PyAthena.v
v
Definition: PyAthena.py:154
a
TList * a
Definition: liststreamerinfos.cxx:10
h
python.CaloScaleNoiseConfig.str
str
Definition: CaloScaleNoiseConfig.py:78
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_Module::m_baseBoard
std::unique_ptr< SCT_BaseBoard > m_baseBoard
Definition: SCT_Module.h:102
SCT_Module::m_env2Width
double m_env2Width
Definition: SCT_Module.h:85
SCT_Module::m_activeWidth
double m_activeWidth
Definition: SCT_Module.h:88
SCT_Module::m_stereoOuter
double m_stereoOuter
Definition: SCT_Module.h:95
extractSporadic.q
list q
Definition: extractSporadic.py:98
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
str
Definition: BTagTrackIpAccessor.cxx:11
SCT_Module::m_innerSidePos
std::unique_ptr< GeoTrf::Transform3D > m_innerSidePos
Definition: SCT_Module.h:104
SCT_UniqueComponentFactory::m_sqliteReader
GeoModelIO::ReadGeoModel * m_sqliteReader
Definition: SCT_ComponentFactory.h:91
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
python.compressB64.c
def c
Definition: compressB64.py:93
SCT_ComponentFactory::getName
const std::string & getName() const
Definition: SCT_ComponentFactory.h:35
SCT_Module::outerSide
const SCT_OuterSide * outerSide() const
Definition: SCT_Module.h:69
SCT_Module::m_baseBoardPos
std::unique_ptr< GeoTrf::Translate3D > m_baseBoardPos
Definition: SCT_Module.h:106
SCT_Module::m_innerSide
std::unique_ptr< SCT_InnerSide > m_innerSide
Definition: SCT_Module.h:100
SCT_Module::m_sensorGap
double m_sensorGap
Definition: SCT_Module.h:93
SCT_Module::m_safety
double m_safety
Definition: SCT_Module.h:98
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14