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

#include <SCT_InterLink.h>

Inheritance diagram for SCT_InterLink:
Collaboration diagram for SCT_InterLink:

Public Member Functions

 SCT_InterLink (const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials)
 ~SCT_InterLink ()
double innerRadius () const
double outerRadius () const
double length () const
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 ()
virtual GeoVPhysVol * build ()

Private Attributes

std::string m_materialName
double m_innerRadius = 0.0
double m_outerRadius = 0.0
double m_length = 0.0
double m_dPhi = 0.0
double m_phiPos = 0.0
int m_nRepeat = 0
bool m_includeFSIFlange = false
double m_innerRadiusFSIFlange = 0.0
double m_outerRadiusFSIFlange = 0.0
std::string m_materialNameFSIFlange
std::string m_materialNameBearing
double m_innerRadiusBearing = 0.0
double m_outerRadiusBearing = 0.0
double m_lengthBearing = 0.0
double m_dPhiBearing = 0.0
double m_phiPosBearing = 0.0
int m_nRepeatBearing = 0
GeoIntrusivePtr< const GeoTube > m_interLinkShape {}
GeoIntrusivePtr< const GeoLogVol > m_interLinkLog {}
GeoIntrusivePtr< GeoPhysVol > m_interLink {}
GeoIntrusivePtr< const GeoTubs > m_interLinkSegShape {}
GeoIntrusivePtr< const GeoLogVol > m_interLinkSegLog {}
GeoIntrusivePtr< GeoPhysVol > m_interLinkSeg {}
GeoIntrusivePtr< const GeoTubs > m_bearingShape {}
GeoIntrusivePtr< const GeoLogVol > m_bearingLog {}
GeoIntrusivePtr< GeoPhysVol > m_bearing {}
GeoIntrusivePtr< const GeoTubs > m_FSIFlangeShape {}
GeoIntrusivePtr< const GeoLogVol > m_FSIFlangeLog {}
GeoIntrusivePtr< GeoPhysVol > m_FSIFlange {}
std::vector< GeoIntrusivePtr< GeoTransform > > m_geoTransforms {}
std::string m_name

Static Private Attributes

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

Detailed Description

Definition at line 20 of file SCT_InterLink.h.

Constructor & Destructor Documentation

◆ SCT_InterLink()

SCT_InterLink::SCT_InterLink ( const std::string & name,
InDetDD::SCT_DetectorManager * detectorManager,
SCT_GeometryManager * geometryManager,
SCT_MaterialManager * materials )

Definition at line 19 of file SCT_InterLink.cxx.

23 : SCT_SharedComponentFactory(name, detectorManager, geometryManager, materials),
24 m_interLinkShape(nullptr),
25 m_interLinkLog(nullptr),
26 m_interLink(nullptr),
27 m_interLinkSegShape(nullptr),
28 m_interLinkSegLog(nullptr),
29 m_interLinkSeg(nullptr),
30 m_bearingShape(nullptr),
31 m_bearingLog(nullptr),
32 m_bearing(nullptr),
33 m_FSIFlangeShape(nullptr),
34 m_FSIFlangeLog(nullptr),
35 m_FSIFlange(nullptr)
36{
39}
SCT_SharedComponentFactory(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials=nullptr)

◆ ~SCT_InterLink()

SCT_InterLink::~SCT_InterLink ( )
default

Member Function Documentation

◆ build()

GeoVPhysVol * SCT_InterLink::build ( )
privatevirtual

Implements SCT_SharedComponentFactory.

Definition at line 84 of file SCT_InterLink.cxx.

85{
86 // Make the interlink.
87 if(m_nRepeat == 1) {
88 // For old geometry interlink is a simple tube of material
90 const GeoMaterial* material = m_materials->getMaterialForVolume(m_materialName, m_interLinkShape->volume());
91 if(!material) {material = m_materials->getMaterial(m_materialName);}
92 m_interLinkLog = new GeoLogVol(getName(), m_interLinkShape, material);
93 m_interLink = new GeoPhysVol(m_interLinkLog);
94 }
95
96 else {
97 // In updated version we make air tube containing interlink segments and B6 bearings
98 // And also include FSI flange segments if defined
99 // Air tube:
101 m_interLinkLog = new GeoLogVol(getName(), m_interLinkShape, m_materials->gasMaterial());
102 m_interLink = new GeoPhysVol(m_interLinkLog);
103
104 // Interlink segments:
105 m_interLinkSegShape = new GeoTubs(m_innerRadius, m_outerRadius, 0.5*m_length, - 0.5*m_dPhi*Gaudi::Units::radian, m_dPhi*Gaudi::Units::radian);
106 m_interLinkSegLog = new GeoLogVol("InterlinkSegment", m_interLinkSegShape, m_materials->getMaterialForVolume(m_materialName, m_interLinkSegShape->volume()));
107 m_interLinkSeg = new GeoPhysVol(m_interLinkSegLog);
108
109 for(int i=0; i<m_nRepeat; i++) {
110 double interlinkAngle = m_phiPos + (i * 360./m_nRepeat)*Gaudi::Units::deg;
111 GeoTransform* geoTransform = new GeoTransform(GeoTrf::RotateZ3D(interlinkAngle));
112 m_geoTransforms.push_back(geoTransform);
113 m_interLink->add(geoTransform);
115 }
116
117 // B6 bearings
118 m_bearingShape = new GeoTubs(m_innerRadiusBearing, m_outerRadiusBearing, 0.5*m_lengthBearing, - 0.5*m_dPhiBearing*Gaudi::Units::radian, m_dPhiBearing*Gaudi::Units::radian);
119 m_bearingLog = new GeoLogVol("Bearing", m_bearingShape, m_materials->getMaterialForVolume(m_materialNameBearing, m_bearingShape->volume()));
120 m_bearing = new GeoPhysVol(m_bearingLog);
121
122 for(int i=0; i<m_nRepeatBearing; i++) {
123 double bearingAngle = m_phiPosBearing + (i * 360./m_nRepeatBearing)*Gaudi::Units::deg;
124 GeoTransform* geoTransform = new GeoTransform(GeoTrf::RotateZ3D(bearingAngle));
125 m_geoTransforms.push_back(geoTransform);
126 m_interLink->add(geoTransform);
128 }
129
130 // FSI Flange segments:
131 // These exactly fill gaps between interlink segments, with smaller radial extent
133 double dPhiFSI = (360./m_nRepeat)*Gaudi::Units::deg - m_dPhi;
134 m_FSIFlangeShape = new GeoTubs(m_innerRadiusFSIFlange, m_outerRadiusFSIFlange, 0.5*m_length, - 0.5*dPhiFSI*Gaudi::Units::radian, dPhiFSI*Gaudi::Units::radian);
135 m_FSIFlangeLog = new GeoLogVol("FSIFlangeSegment", m_FSIFlangeShape, m_materials->getMaterialForVolume(m_materialNameFSIFlange, m_FSIFlangeShape->volume()));
136 m_FSIFlange = new GeoPhysVol(m_FSIFlangeLog);
137
138 for(int i=0; i<m_nRepeat; i++) {
139 double phiPosFSI = m_phiPos + (180./m_nRepeat)*Gaudi::Units::deg;
140 double FSIFlangeAngle = phiPosFSI + (i * 360./m_nRepeat)*Gaudi::Units::deg;
141 GeoTransform* geoTransform = new GeoTransform(GeoTrf::RotateZ3D(FSIFlangeAngle));
142 m_geoTransforms.push_back(geoTransform);
143 m_interLink->add(geoTransform);
145 }
146 }
147 }
148
149 return m_interLink;
150}
const std::string & getName() const
SCT_MaterialManager * m_materials

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

Definition at line 44 of file SCT_InterLink.cxx.

45{
46 const SCT_BarrelParameters * parameters = m_geometryManager->barrelParameters();
47
48 // Interlink parameters
49 m_materialName = parameters->interLinkMaterial();
50 m_length = parameters->interLinkDeltaZ();
51 m_innerRadius = parameters->interLinkInnerRadius();
52 m_outerRadius = parameters->interLinkOuterRadius();
53 m_dPhi = parameters->interLinkDeltaPhi();
54 m_phiPos = parameters->interLinkPhiPos();
55 m_nRepeat = parameters->interLinkNRepeat();
56
57 // FSIFlange parameters: only for non-uniform interlink
58 if(m_nRepeat > 1) {
59 m_includeFSIFlange = parameters->includeFSI();
60 }
61 else {
62 m_includeFSIFlange = false;
63 }
65 m_innerRadiusFSIFlange = parameters->fsiFlangeInnerRadius();
66 m_outerRadiusFSIFlange = parameters->fsiFlangeOuterRadius();
67 m_materialNameFSIFlange = parameters->fsiFlangeMaterial();
68 }
69
70 // B6 bearing parameters: only for non-uniform interlink
71 if(m_nRepeat > 1) {
72 m_materialNameBearing = parameters->bearingMaterial();
75 m_outerRadiusBearing = parameters->thermalShieldBulkheadInnerRadius();
76 m_dPhiBearing = parameters->bearingDeltaPhi();
77 m_phiPosBearing = parameters->bearingPhiPos();
78 m_nRepeatBearing = parameters->bearingNRepeat();
79 }
80
81}
SCT_GeometryManager * m_geometryManager

◆ getVolume()

GeoVPhysVol * SCT_SharedComponentFactory::getVolume ( )
inlineinherited

Definition at line 67 of file SCT_ComponentFactory.h.

67{return m_physVolume;}

◆ innerRadius()

double SCT_InterLink::innerRadius ( ) const
inline

Definition at line 32 of file SCT_InterLink.h.

32{return m_innerRadius;}

◆ 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_InterLink::length ( ) const
inline

Definition at line 34 of file SCT_InterLink.h.

34{return m_length;}

◆ outerRadius()

double SCT_InterLink::outerRadius ( ) const
inline

Definition at line 33 of file SCT_InterLink.h.

33{return m_outerRadius;}

Member Data Documentation

◆ m_bearing

GeoIntrusivePtr<GeoPhysVol> SCT_InterLink::m_bearing {}
private

Definition at line 72 of file SCT_InterLink.h.

72{};

◆ m_bearingLog

GeoIntrusivePtr<const GeoLogVol> SCT_InterLink::m_bearingLog {}
private

Definition at line 71 of file SCT_InterLink.h.

71{};

◆ m_bearingShape

GeoIntrusivePtr<const GeoTubs> SCT_InterLink::m_bearingShape {}
private

Definition at line 70 of file SCT_InterLink.h.

70{};

◆ m_detectorManager

InDetDD::SCT_DetectorManager* SCT_ComponentFactory::m_detectorManager
protectedinherited

Definition at line 41 of file SCT_ComponentFactory.h.

◆ m_dPhi

double SCT_InterLink::m_dPhi = 0.0
private

Definition at line 45 of file SCT_InterLink.h.

◆ m_dPhiBearing

double SCT_InterLink::m_dPhiBearing = 0.0
private

Definition at line 60 of file SCT_InterLink.h.

◆ m_FSIFlange

GeoIntrusivePtr<GeoPhysVol> SCT_InterLink::m_FSIFlange {}
private

Definition at line 75 of file SCT_InterLink.h.

75{};

◆ m_FSIFlangeLog

GeoIntrusivePtr<const GeoLogVol> SCT_InterLink::m_FSIFlangeLog {}
private

Definition at line 74 of file SCT_InterLink.h.

74{};

◆ m_FSIFlangeShape

GeoIntrusivePtr<const GeoTubs> SCT_InterLink::m_FSIFlangeShape {}
private

Definition at line 73 of file SCT_InterLink.h.

73{};

◆ m_geometryManager

SCT_GeometryManager* SCT_ComponentFactory::m_geometryManager
protectedinherited

Definition at line 42 of file SCT_ComponentFactory.h.

◆ m_geoTransforms

std::vector<GeoIntrusivePtr<GeoTransform> > SCT_InterLink::m_geoTransforms {}
private

Definition at line 76 of file SCT_InterLink.h.

76{};

◆ m_includeFSIFlange

bool SCT_InterLink::m_includeFSIFlange = false
private

Definition at line 50 of file SCT_InterLink.h.

◆ m_innerRadius

double SCT_InterLink::m_innerRadius = 0.0
private

Definition at line 42 of file SCT_InterLink.h.

◆ m_innerRadiusBearing

double SCT_InterLink::m_innerRadiusBearing = 0.0
private

Definition at line 57 of file SCT_InterLink.h.

◆ m_innerRadiusFSIFlange

double SCT_InterLink::m_innerRadiusFSIFlange = 0.0
private

Definition at line 51 of file SCT_InterLink.h.

◆ m_interLink

GeoIntrusivePtr<GeoPhysVol> SCT_InterLink::m_interLink {}
private

Definition at line 66 of file SCT_InterLink.h.

66{};

◆ m_interLinkLog

GeoIntrusivePtr<const GeoLogVol> SCT_InterLink::m_interLinkLog {}
private

Definition at line 65 of file SCT_InterLink.h.

65{};

◆ m_interLinkSeg

GeoIntrusivePtr<GeoPhysVol> SCT_InterLink::m_interLinkSeg {}
private

Definition at line 69 of file SCT_InterLink.h.

69{};

◆ m_interLinkSegLog

GeoIntrusivePtr<const GeoLogVol> SCT_InterLink::m_interLinkSegLog {}
private

Definition at line 68 of file SCT_InterLink.h.

68{};

◆ m_interLinkSegShape

GeoIntrusivePtr<const GeoTubs> SCT_InterLink::m_interLinkSegShape {}
private

Definition at line 67 of file SCT_InterLink.h.

67{};

◆ m_interLinkShape

GeoIntrusivePtr<const GeoTube> SCT_InterLink::m_interLinkShape {}
private

Definition at line 64 of file SCT_InterLink.h.

64{};

◆ m_length

double SCT_InterLink::m_length = 0.0
private

Definition at line 44 of file SCT_InterLink.h.

◆ m_lengthBearing

double SCT_InterLink::m_lengthBearing = 0.0
private

Definition at line 59 of file SCT_InterLink.h.

◆ m_materialName

std::string SCT_InterLink::m_materialName
private

Definition at line 41 of file SCT_InterLink.h.

◆ m_materialNameBearing

std::string SCT_InterLink::m_materialNameBearing
private

Definition at line 56 of file SCT_InterLink.h.

◆ m_materialNameFSIFlange

std::string SCT_InterLink::m_materialNameFSIFlange
private

Definition at line 53 of file SCT_InterLink.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_nRepeat

int SCT_InterLink::m_nRepeat = 0
private

Definition at line 47 of file SCT_InterLink.h.

◆ m_nRepeatBearing

int SCT_InterLink::m_nRepeatBearing = 0
private

Definition at line 62 of file SCT_InterLink.h.

◆ m_outerRadius

double SCT_InterLink::m_outerRadius = 0.0
private

Definition at line 43 of file SCT_InterLink.h.

◆ m_outerRadiusBearing

double SCT_InterLink::m_outerRadiusBearing = 0.0
private

Definition at line 58 of file SCT_InterLink.h.

◆ m_outerRadiusFSIFlange

double SCT_InterLink::m_outerRadiusFSIFlange = 0.0
private

Definition at line 52 of file SCT_InterLink.h.

◆ m_phiPos

double SCT_InterLink::m_phiPos = 0.0
private

Definition at line 46 of file SCT_InterLink.h.

◆ m_phiPosBearing

double SCT_InterLink::m_phiPosBearing = 0.0
private

Definition at line 61 of file SCT_InterLink.h.

◆ m_physVolume

GeoVPhysVol* SCT_SharedComponentFactory::m_physVolume
protectedinherited

Definition at line 70 of file SCT_ComponentFactory.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: