ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_FwdSubSpine Class Reference

#include <SCT_FwdSubSpine.h>

Inheritance diagram for SCT_FwdSubSpine:
Collaboration diagram for SCT_FwdSubSpine:

Public Member Functions

 SCT_FwdSubSpine (const std::string &name, int ringType, int spineSide, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials)
const GeoMaterial * material () const
double innerThickness () const
double innerWidth () const
double innerLength () const
double middleThickness () const
double middleWidth () const
double middleLength () const
double outerThickness () const
double outerWidth () const
double outerLength () const
virtual GeoVPhysVol * build ()
GeoVPhysVol * getVolume ()
const std::string & getName () const
std::string intToString (int i) const

Protected Member Functions

double epsilon () const

Protected Attributes

GeoVPhysVol * m_physVolume
InDetDD::SCT_DetectorManagerm_detectorManager
SCT_GeometryManagerm_geometryManager
SCT_MaterialManagerm_materials

Private Member Functions

void getParameters ()

Private Attributes

int m_ringType
int m_spineSide
const GeoMaterial * m_material = nullptr
double m_thickness1 = 0.0
double m_width1 = 0.0
double m_length1 = 0.0
double m_thickness2 = 0.0
double m_width2 = 0.0
double m_length2 = 0.0
double m_thickness3 = 0.0
double m_width3 = 0.0
double m_length3 = 0.0
std::string m_name

Static Private Attributes

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

Detailed Description

Definition at line 19 of file SCT_FwdSubSpine.h.

Constructor & Destructor Documentation

◆ SCT_FwdSubSpine()

SCT_FwdSubSpine::SCT_FwdSubSpine ( const std::string & name,
int ringType,
int spineSide,
InDetDD::SCT_DetectorManager * detectorManager,
SCT_GeometryManager * geometryManager,
SCT_MaterialManager * materials )

Definition at line 37 of file SCT_FwdSubSpine.cxx.

42 : SCT_SharedComponentFactory(name, detectorManager, geometryManager, materials),
43 m_ringType(ringType), m_spineSide(spineSide)
44{
47}
virtual GeoVPhysVol * build()
SCT_SharedComponentFactory(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials=nullptr)

Member Function Documentation

◆ build()

GeoVPhysVol * SCT_FwdSubSpine::build ( )
virtual

Implements SCT_SharedComponentFactory.

Definition at line 75 of file SCT_FwdSubSpine.cxx.

76{
77 // x,y,z are in the geomodel module coordinates
78
79 const SCT_ForwardModuleParameters * parameters = m_geometryManager->forwardModuleParameters();
80
81 const GeoBox * spineShape1 = new GeoBox( m_thickness1/2., m_width1/2., m_length1/2.);
82 const GeoBox * spineShape2 = nullptr;
83 if (m_ringType != 3) spineShape2 = new GeoBox( m_thickness2/2., m_width2/2., m_length2/2.);
84 const GeoBox * spineShape3 = new GeoBox( m_thickness3/2., m_width3/2., m_length3/2.);
85
86
87 double position, position2;
88
89 int HybPos;
90
91 if (m_ringType == 0) { HybPos = -1; } // outer module, hybrid in inner side
92 else { HybPos = 1; } //hybrid in outer side
93
94
95 double widthMain = parameters->fwdSpineWidth(m_ringType); // width of main spine
96
97
98 const GeoShape * subSpineMiddle = nullptr;
99
100 // Inner sub spine
101 double mountPosition = parameters->fwdModuleMountPoint(m_ringType); // mount point to physics center
102 position = mountPosition - parameters->fwdSubSpineInnerRefDist(m_ringType) - 0.5*m_length1;
103 position = position * HybPos;
104 position2 = (widthMain + m_width1) / 2.;
105 const GeoShape & spinePos1 = (*spineShape1 << GeoTrf::TranslateY3D(m_spineSide * position2) << GeoTrf::TranslateZ3D(position) );
106
107
108 // Middle sub spine
109 // Not defined for inner module.
110 if (m_ringType != 3) {
111 position = mountPosition - parameters->fwdSubSpineMiddleRefDist(m_ringType) - 0.5*m_length2;
112 position = position * HybPos;
113 position2 = (widthMain + m_width2) / 2.;
114 const GeoShape & spinePos2 = (*spineShape2 << GeoTrf::TranslateY3D(m_spineSide * position2) << GeoTrf::TranslateZ3D(position) );
115 subSpineMiddle = &spinePos2;
116 }
117
118 // Outer sub spine
119 position = mountPosition - parameters->fwdSubSpineOuterRefDist(m_ringType) - 0.5*m_length3;
120 position = position * HybPos;
121 position2 = (widthMain + m_width3) / 2.;
122 const GeoShape & spinePos3 = (*spineShape3 << GeoTrf::TranslateY3D(m_spineSide * position2) << GeoTrf::TranslateZ3D(position) );
123
124 const GeoShapeUnion & spineTmp = (spinePos1).add(spinePos3);
125 GeoLogVol * spineLog = nullptr;
126 if (m_ringType != 3) {
127 const GeoShapeUnion & spineTmp2 = spineTmp.add(*subSpineMiddle);
128 spineLog = new GeoLogVol(getName(), &spineTmp2, m_material);
129 } else {
130 spineLog = new GeoLogVol(getName(), &spineTmp, m_material);
131 }
132
133 GeoPhysVol * spine = new GeoPhysVol(spineLog);
134
135 return spine;
136}
const std::string & getName() const
SCT_GeometryManager * m_geometryManager
const GeoMaterial * m_material
bool add(const std::string &hname, TKey *tobj)
Definition fastadd.cxx:55

◆ epsilon()

double SCT_ComponentFactory::epsilon ( ) const
protectedinherited

Definition at line 38 of file SCT_ComponentFactory.cxx.

39{
40 return s_epsilon;
41}
static const double s_epsilon

◆ 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_FwdSubSpine::getParameters ( )
private

Definition at line 52 of file SCT_FwdSubSpine.cxx.

53{
54 const SCT_ForwardModuleParameters * parameters = m_geometryManager->forwardModuleParameters();
55
56 m_material = m_materials->getMaterial(parameters->fwdSubSpineMaterial(m_ringType));
57
58 // Width is in direction of module width (ie long axis of arm)
59 // Length is in direction of module length (ie short axis of arm)
60
61 //Inner subspine
62 m_thickness1 = parameters->fwdSpineThickness(m_ringType);
63 m_width1 = parameters->fwdSubSpineInnerWidth(m_ringType);
64 m_length1 = parameters->fwdSubSpineInnerLength(m_ringType);
65 //Middle subspine
66 m_thickness2 = parameters->fwdSpineThickness(m_ringType);
67 m_width2 = parameters->fwdSubSpineMiddleWidth(m_ringType);
68 m_length2 = parameters->fwdSubSpineMiddleLength(m_ringType);
69 //Outer subspine
70 m_thickness3 = parameters->fwdSpineThickness(m_ringType);
71 m_width3 = parameters->fwdSubSpineOuterWidth(m_ringType);
72 m_length3 = parameters->fwdSubSpineOuterLength(m_ringType);
73}
SCT_MaterialManager * m_materials

◆ getVolume()

GeoVPhysVol * SCT_SharedComponentFactory::getVolume ( )
inlineinherited

Definition at line 67 of file SCT_ComponentFactory.h.

67{return m_physVolume;}

◆ innerLength()

double SCT_FwdSubSpine::innerLength ( ) const
inline

Definition at line 34 of file SCT_FwdSubSpine.h.

34{return m_length1;}

◆ innerThickness()

double SCT_FwdSubSpine::innerThickness ( ) const
inline

Definition at line 32 of file SCT_FwdSubSpine.h.

32{return m_thickness1;}

◆ innerWidth()

double SCT_FwdSubSpine::innerWidth ( ) const
inline

Definition at line 33 of file SCT_FwdSubSpine.h.

33{return m_width1;}

◆ 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}

◆ material()

const GeoMaterial * SCT_FwdSubSpine::material ( ) const
inline

Definition at line 29 of file SCT_FwdSubSpine.h.

29{return m_material;}

◆ middleLength()

double SCT_FwdSubSpine::middleLength ( ) const
inline

Definition at line 38 of file SCT_FwdSubSpine.h.

38{return m_length2;}

◆ middleThickness()

double SCT_FwdSubSpine::middleThickness ( ) const
inline

Definition at line 36 of file SCT_FwdSubSpine.h.

36{return m_thickness2;}

◆ middleWidth()

double SCT_FwdSubSpine::middleWidth ( ) const
inline

Definition at line 37 of file SCT_FwdSubSpine.h.

37{return m_width2;}

◆ outerLength()

double SCT_FwdSubSpine::outerLength ( ) const
inline

Definition at line 42 of file SCT_FwdSubSpine.h.

42{return m_length3;}

◆ outerThickness()

double SCT_FwdSubSpine::outerThickness ( ) const
inline

Definition at line 40 of file SCT_FwdSubSpine.h.

40{return m_thickness3;}

◆ outerWidth()

double SCT_FwdSubSpine::outerWidth ( ) const
inline

Definition at line 41 of file SCT_FwdSubSpine.h.

41{return m_width3;}

Member Data Documentation

◆ m_detectorManager

InDetDD::SCT_DetectorManager* SCT_ComponentFactory::m_detectorManager
protectedinherited

Definition at line 41 of file SCT_ComponentFactory.h.

◆ m_geometryManager

SCT_GeometryManager* SCT_ComponentFactory::m_geometryManager
protectedinherited

Definition at line 42 of file SCT_ComponentFactory.h.

◆ m_length1

double SCT_FwdSubSpine::m_length1 = 0.0
private

Definition at line 55 of file SCT_FwdSubSpine.h.

◆ m_length2

double SCT_FwdSubSpine::m_length2 = 0.0
private

Definition at line 59 of file SCT_FwdSubSpine.h.

◆ m_length3

double SCT_FwdSubSpine::m_length3 = 0.0
private

Definition at line 63 of file SCT_FwdSubSpine.h.

◆ m_material

const GeoMaterial* SCT_FwdSubSpine::m_material = nullptr
private

Definition at line 51 of file SCT_FwdSubSpine.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_physVolume

GeoVPhysVol* SCT_SharedComponentFactory::m_physVolume
protectedinherited

Definition at line 70 of file SCT_ComponentFactory.h.

◆ m_ringType

int SCT_FwdSubSpine::m_ringType
private

Definition at line 49 of file SCT_FwdSubSpine.h.

◆ m_spineSide

int SCT_FwdSubSpine::m_spineSide
private

Definition at line 50 of file SCT_FwdSubSpine.h.

◆ m_thickness1

double SCT_FwdSubSpine::m_thickness1 = 0.0
private

Definition at line 53 of file SCT_FwdSubSpine.h.

◆ m_thickness2

double SCT_FwdSubSpine::m_thickness2 = 0.0
private

Definition at line 57 of file SCT_FwdSubSpine.h.

◆ m_thickness3

double SCT_FwdSubSpine::m_thickness3 = 0.0
private

Definition at line 61 of file SCT_FwdSubSpine.h.

◆ m_width1

double SCT_FwdSubSpine::m_width1 = 0.0
private

Definition at line 54 of file SCT_FwdSubSpine.h.

◆ m_width2

double SCT_FwdSubSpine::m_width2 = 0.0
private

Definition at line 58 of file SCT_FwdSubSpine.h.

◆ m_width3

double SCT_FwdSubSpine::m_width3 = 0.0
private

Definition at line 62 of file SCT_FwdSubSpine.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: