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 42 of file SCT_Module.cxx.

49 : SCT_UniqueComponentFactory(name, detectorManager, geometryManager, materials, sqliteReader, mapFPV, mapAX)
50 {
51  getParameters();
53 }

◆ ~SCT_Module()

SCT_Module::~SCT_Module ( )

Definition at line 56 of file SCT_Module.cxx.

57 {
58 }

◆ 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 316 of file SCT_Module.cxx.

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

◆ 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 37 of file SCT_ComponentFactory.cxx.

38 {
39  return s_epsilon;
40 }

◆ 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 62 of file SCT_Module.cxx.

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

◆ 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 29 of file SCT_ComponentFactory.cxx.

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

◆ 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 82 of file SCT_Module.cxx.

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

◆ 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:
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
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
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
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
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
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:43
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:83
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:62
SCT_Module::preBuild
virtual const GeoLogVol * preBuild()
Definition: SCT_Module.cxx:82
python.PyAthena.module
module
Definition: PyAthena.py:134
python.SystemOfUnits.radian
int radian
Definition: SystemOfUnits.py:104
SCT_Module::m_env1Thickness
double m_env1Thickness
Definition: SCT_Module.h:81
SCT_Module::m_baseBoardOffsetY
double m_baseBoardOffsetY
Definition: SCT_Module.h:90
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
SCT_MaterialManager::gasMaterial
const GeoMaterial * gasMaterial() const
Definition: SCT_MaterialManager.cxx:80
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:127
add
bool add(const std::string &hname, TKey *tobj)
Definition: fastadd.cxx:55
SCT_ComponentFactory::intToString
std::string intToString(int i) const
Definition: SCT_ComponentFactory.cxx:29
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
min
#define min(a, b)
Definition: cfImp.cxx:40
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:195
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:157
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
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