ATLAS Offline Software
SCT_DetectorFactory.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //
6 // SCT_DetectorFactory: This is the top level node
7 //
8 
9 
11 
13 
15 
16 //
17 // GeoModel include files:
18 //
21 #include "GeoModelKernel/GeoAlignableTransform.h"
22 #include "GeoModelKernel/GeoDefinitions.h"
23 #include "GeoModelKernel/GeoIdentifierTag.h"
24 #include "GeoModelKernel/GeoLogVol.h"
25 #include "GeoModelKernel/GeoMaterial.h"
26 #include "GeoModelKernel/GeoNameTag.h"
27 #include "GeoModelKernel/GeoPhysVol.h"
28 #include "GeoModelKernel/GeoShape.h"
29 #include "GeoModelKernel/GeoShapeShift.h"
30 #include "GeoModelKernel/GeoShapeUnion.h"
31 #include "GeoModelKernel/GeoTransform.h"
32 #include "GeoModelKernel/GeoTube.h"
33 #include "GeoModelKernel/GeoVPhysVol.h"
35 
39 
43 
52 
54 
55 #include "StoreGate/StoreGateSvc.h"
56 
57 #include "GaudiKernel/ISvcLocator.h"
58 #include "GaudiKernel/SystemOfUnits.h"
59 
60 #include <iomanip>
61 #include <iostream>
62 #include <string>
63 
66 
68  const SCT_Options & options)
69  : InDetDD::DetectorFactoryBase(athenaComps),
70  m_useDynamicAlignFolders(false)
71 {
72 
73  // Create the detector manager
75 
76  // Create the database
77  m_db = std::make_unique<SCT_DataBase>(athenaComps);
78 
79  // Create the material manager
80  m_materials = std::make_unique<SCT_MaterialManager>(m_db.get());
81 
82  // Create the Si common items
83  std::unique_ptr<InDetDD::SiCommonItems> commonItems{std::make_unique<InDetDD::SiCommonItems>(athenaComps->getIdHelper())};
84 
85  // Create the geometry manager.
86  m_geometryManager = std::make_unique<SCT_GeometryManager>(m_db.get());
87  m_geometryManager->setOptions(options);
88  m_geometryManager->setCommonItems(commonItems.get());
89 
90  // Add SiCommonItems to SCT_DetectorManager to hold and delete it.
91  m_detectorManager->setCommonItems(std::move(commonItems));
92 
93  m_useDynamicAlignFolders = options.dynamicAlignFolders();
94 
95  // Set Version information
96  // Get the geometry tag
97  DecodeVersionKey versionKey(geoDbTagSvc(),"SCT");
98  IRDBRecordset_ptr switchSet
99  = rdbAccessSvc()->getRecordsetPtr("SctSwitches", versionKey.tag(), versionKey.node());
100  const IRDBRecord *switches = (*switchSet)[0];
101 
102  std::string layout = "Final";
103  std::string description;
104  if (!switches->isFieldNull("LAYOUT")) {
105  layout = switches->getString("LAYOUT");
106  }
107  if (!switches->isFieldNull("DESCRIPTION")) {
108  description = switches->getString("DESCRIPTION");
109  }
110 
111  std::string versionTag = rdbAccessSvc()->getChildTag("SCT", versionKey.tag(), versionKey.node());
112  std::string versionName = switches->getString("VERSIONNAME");
113  int versionMajorNumber = 3;
114  int versionMinorNumber = 6;
115  int versionPatchNumber = 0;
116  InDetDD::Version version(versionTag,
117  versionName,
118  layout,
119  description,
120  versionMajorNumber,
121  versionMinorNumber,
122  versionPatchNumber);
124 
125 }
126 
127 
129 {
130  // NB the detector manager (m_detectorManager)is stored in the detector store by the
131  // Tool and so we don't delete it.
132 }
133 
134 void SCT_DetectorFactory::create(GeoPhysVol *world)
135 {
136 
137  msg(MSG::INFO) << "Building SCT Detector." << endmsg;
138  msg(MSG::INFO) << " " << m_detectorManager->getVersion().fullDescription() << endmsg;
139 
140  // Change precision.
141  int oldPrecision = std::cout.precision(6);
142 
143  // The tree tops get added to world. We name it "indet" though.
144  GeoPhysVol *indet = world;
145 
146  const SCT_GeneralParameters * sctGeneral = m_geometryManager->generalParameters();
147 
148  GeoTrf::Transform3D sctTransform = sctGeneral->partTransform("SCT");
149 
150  std::string barrelLabel = "Barrel";
151  std::string forwardPlusLabel = "EndcapA";
152  std::string forwardMinusLabel = "EndcapC";
153 
154  bool barrelPresent = sctGeneral->partPresent(barrelLabel);
155  bool forwardPlusPresent = sctGeneral->partPresent(forwardPlusLabel);
156  bool forwardMinusPresent = sctGeneral->partPresent(forwardMinusLabel);
157 
158 
159 
160  //
161  // The Barrel
162  //
163  if (barrelPresent) {
164 
165  msg(MSG::DEBUG) << "Building the SCT Barrel." << endmsg;
166 
168 
169  // Create the SCT Barrel
170  SCT_Barrel sctBarrel("SCT_Barrel", m_detectorManager, m_geometryManager.get(), m_materials.get(), nullptr, nullptr, nullptr);
171 
172  SCT_Identifier id{m_geometryManager->athenaComps()->getIdHelper()};
173  id.setBarrelEC(0);
174  GeoVPhysVol * barrelPV = sctBarrel.build(id);
175  GeoAlignableTransform * barrelTransform = new GeoAlignableTransform(sctTransform * sctGeneral->partTransform(barrelLabel));
176 
177  //indet->add(new GeoNameTag("SCT_Barrel"));
178  // The name tag here is what is used by the GeoModel viewer.
179  GeoNameTag *topLevelNameTag = new GeoNameTag("SCT");
180  indet->add(topLevelNameTag);
181  indet->add(new GeoIdentifierTag(0));
182  indet->add(barrelTransform);
183  indet->add(barrelPV);
184  m_detectorManager->addTreeTop(barrelPV);
185 
186  // Store alignable transform
187  m_detectorManager->addAlignableTransform(3, id.getWaferId(), barrelTransform, barrelPV);
188 
189  }
190 
191  //
192  // The Positive Z Endcap (EndcapA)
193  //
194  if (forwardPlusPresent) {
195 
196  msg(MSG::DEBUG) << "Building the SCT Endcap A (positive z)." << endmsg;
197 
199 
200  // Create the Forward
201  SCT_Forward sctForwardPlus("SCT_ForwardA", +2, m_detectorManager, m_geometryManager.get(), m_materials.get(), nullptr, nullptr, nullptr);
202 
203  SCT_Identifier idFwdPlus{m_geometryManager->athenaComps()->getIdHelper()};
204  idFwdPlus.setBarrelEC(2);
205  GeoVPhysVol * forwardPlusPV = sctForwardPlus.build(idFwdPlus);
206  GeoTrf::Transform3D fwdTransformPlus(sctTransform
207  * sctGeneral->partTransform(forwardPlusLabel)
208  * GeoTrf::TranslateZ3D(sctForwardPlus.zCenter()));
209  GeoAlignableTransform * fwdGeoTransformPlus = new GeoAlignableTransform(fwdTransformPlus);
210 
211  //indet->add(new GeoNameTag("SCT_ForwardPlus"));
212  // The name tag here is what is used by the GeoModel viewer.
213  GeoNameTag *topLevelNameTag = new GeoNameTag("SCT");
214  indet->add(topLevelNameTag);
215  indet->add(new GeoIdentifierTag(2));
216  indet->add(fwdGeoTransformPlus);
217  indet->add(forwardPlusPV);
218  m_detectorManager->addTreeTop(forwardPlusPV);
219 
220  // Store alignable transform
221  m_detectorManager->addAlignableTransform(3, idFwdPlus.getWaferId(), fwdGeoTransformPlus, forwardPlusPV);
222  }
223 
224  //
225  // The Negative Z Endcap (EndcapC)
226  //
227 
228  if (forwardMinusPresent) {
229 
230  msg(MSG::DEBUG) << "Building the SCT Endcap C (negative z)." << endmsg;
231 
233 
234  SCT_Forward sctForwardMinus("SCT_ForwardC", -2, m_detectorManager, m_geometryManager.get(), m_materials.get(), nullptr, nullptr, nullptr);
235 
236  SCT_Identifier idFwdMinus{m_geometryManager->athenaComps()->getIdHelper()};
237  idFwdMinus.setBarrelEC(-2);
238  GeoVPhysVol * forwardMinusPV = sctForwardMinus.build(idFwdMinus);
239 
241  rot = GeoTrf::RotateY3D(180 * Gaudi::Units::degree);
242 
243  GeoTrf::Transform3D fwdTransformMinus(sctTransform
244  * sctGeneral->partTransform(forwardMinusLabel)
245  * rot
246  * GeoTrf::TranslateZ3D(sctForwardMinus.zCenter()));
247  GeoAlignableTransform * fwdGeoTransformMinus = new GeoAlignableTransform(fwdTransformMinus);
248 
249  //indet->add(new GeoNameTag("SCT_ForwardMinus"));
250  // The name tag here is what is used by the GeoModel viewer.
251  GeoNameTag *topLevelNameTag = new GeoNameTag("SCT");
252  indet->add(topLevelNameTag);
253  indet->add(new GeoIdentifierTag(-2));
254  indet->add(fwdGeoTransformMinus);
255  indet->add(forwardMinusPV);
256  m_detectorManager->addTreeTop(forwardMinusPV);
257 
258 
259  // Store alignable transform
260  m_detectorManager->addAlignableTransform(3, idFwdMinus.getWaferId(), fwdGeoTransformMinus, forwardMinusPV);
261  }
262 
263  // Set the neighbours
265 
266  // Set maximum number of strips in numerology.
267  for (int iDesign = 0; iDesign < m_detectorManager->numDesigns(); iDesign++) {
269  }
270 
271  // Register the keys and the level corresponding to the key
272  // and whether it expects a global or local shift.
273  // level 0: sensor, level 1: module, level 2, layer/disc, level 3: whole barrel/enccap
274 
275 
277 
279  m_detectorManager->addFolder("/Indet/Align");
280  m_detectorManager->addChannel("/Indet/Align/ID",3,InDetDD::global);
281  m_detectorManager->addChannel("/Indet/Align/SCT",2,InDetDD::global);
282 
283  if (barrelPresent) {
284  m_detectorManager->addChannel("/Indet/Align/SCTB1",1,InDetDD::local);
285  m_detectorManager->addChannel("/Indet/Align/SCTB2",1,InDetDD::local);
286  m_detectorManager->addChannel("/Indet/Align/SCTB3",1,InDetDD::local);
287  m_detectorManager->addChannel("/Indet/Align/SCTB4",1,InDetDD::local);
288  }
289  if (forwardPlusPresent) {
290  m_detectorManager->addChannel("/Indet/Align/SCTEA1",1,InDetDD::local);
291  m_detectorManager->addChannel("/Indet/Align/SCTEA2",1,InDetDD::local);
292  m_detectorManager->addChannel("/Indet/Align/SCTEA3",1,InDetDD::local);
293  m_detectorManager->addChannel("/Indet/Align/SCTEA4",1,InDetDD::local);
294  m_detectorManager->addChannel("/Indet/Align/SCTEA5",1,InDetDD::local);
295  m_detectorManager->addChannel("/Indet/Align/SCTEA6",1,InDetDD::local);
296  m_detectorManager->addChannel("/Indet/Align/SCTEA7",1,InDetDD::local);
297  m_detectorManager->addChannel("/Indet/Align/SCTEA8",1,InDetDD::local);
298  m_detectorManager->addChannel("/Indet/Align/SCTEA9",1,InDetDD::local);
299  }
300  if (forwardMinusPresent) {
301  m_detectorManager->addChannel("/Indet/Align/SCTEC1",1,InDetDD::local);
302  m_detectorManager->addChannel("/Indet/Align/SCTEC2",1,InDetDD::local);
303  m_detectorManager->addChannel("/Indet/Align/SCTEC3",1,InDetDD::local);
304  m_detectorManager->addChannel("/Indet/Align/SCTEC4",1,InDetDD::local);
305  m_detectorManager->addChannel("/Indet/Align/SCTEC5",1,InDetDD::local);
306  m_detectorManager->addChannel("/Indet/Align/SCTEC6",1,InDetDD::local);
307  m_detectorManager->addChannel("/Indet/Align/SCTEC7",1,InDetDD::local);
308  m_detectorManager->addChannel("/Indet/Align/SCTEC8",1,InDetDD::local);
309  m_detectorManager->addChannel("/Indet/Align/SCTEC9",1,InDetDD::local);
310  }
311  }
312 
313  else {
315  m_detectorManager->addGlobalFolder("/Indet/AlignL1/ID");
316  m_detectorManager->addGlobalFolder("/Indet/AlignL2/SCT");
317  m_detectorManager->addChannel("/Indet/AlignL1/ID",3,InDetDD::global);
318  m_detectorManager->addChannel("/Indet/AlignL2/SCT",2,InDetDD::global);
319  m_detectorManager->addFolder("/Indet/AlignL3");
320 
321  if (barrelPresent) {
322  m_detectorManager->addChannel("/Indet/AlignL3/SCTB1",1,InDetDD::local);
323  m_detectorManager->addChannel("/Indet/AlignL3/SCTB2",1,InDetDD::local);
324  m_detectorManager->addChannel("/Indet/AlignL3/SCTB3",1,InDetDD::local);
325  m_detectorManager->addChannel("/Indet/AlignL3/SCTB4",1,InDetDD::local);
326  }
327  if (forwardPlusPresent) {
328  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA1",1,InDetDD::local);
329  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA2",1,InDetDD::local);
330  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA3",1,InDetDD::local);
331  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA4",1,InDetDD::local);
332  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA5",1,InDetDD::local);
333  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA6",1,InDetDD::local);
334  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA7",1,InDetDD::local);
335  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA8",1,InDetDD::local);
336  m_detectorManager->addChannel("/Indet/AlignL3/SCTEA9",1,InDetDD::local);
337  }
338  if (forwardMinusPresent) {
339  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC1",1,InDetDD::local);
340  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC2",1,InDetDD::local);
341  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC3",1,InDetDD::local);
342  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC4",1,InDetDD::local);
343  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC5",1,InDetDD::local);
344  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC6",1,InDetDD::local);
345  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC7",1,InDetDD::local);
346  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC8",1,InDetDD::local);
347  m_detectorManager->addChannel("/Indet/AlignL3/SCTEC9",1,InDetDD::local);
348  }
349  }
350 
351  // Return precision to its original value
352  std::cout.precision(oldPrecision);
353 
354 }
355 
356 
358 {
359  return m_detectorManager;
360 }
361 
362 
SCT_DetectorFactory::getDetectorManager
virtual const InDetDD::SCT_DetectorManager * getDetectorManager() const
Definition: SCT_DetectorFactory.cxx:357
SCT_Barrel.h
SCT_GeneralParameters::partPresent
bool partPresent(const std::string &partName) const
Definition: SCT_GeneralParameters.cxx:37
SCT_Identifier
Definition: SCT_Identifier.h:12
InDetDD::SiDetectorManager::numerology
const SiNumerology & numerology() const
Access Numerology.
Definition: SiDetectorManager.h:126
InDetDD::SCT_DetectorManager
Definition: SCT_DetectorManager.h:49
SCT_Identifier.h
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
IRDBAccessSvc::getRecordsetPtr
virtual IRDBRecordset_ptr getRecordsetPtr(const std::string &node, const std::string &tag, const std::string &tag2node="", const std::string &connName="ATLASDD")=0
Provides access to the Recordset object containing HVS-tagged data.
SCT_GeoModelAthenaComps.h
InDetDD::timedependent_run2
@ timedependent_run2
Definition: InDetDD_Defs.h:19
SCT_ModuleSideDesign.h
SCT_DetectorFactory::m_detectorManager
InDetDD::SCT_DetectorManager * m_detectorManager
Definition: SCT_DetectorFactory.h:44
SCT_MaterialManager.h
SCT_DataBase.h
InDetDD::SiDetectorManager::numDesigns
int numDesigns() const
Definition: SiDetectorManager.cxx:140
IRDBRecord::getString
virtual const std::string & getString(const std::string &fieldName) const =0
Get string field value.
InDetDD::SiNumerology::addEndcap
void addEndcap(int id)
Definition: SiNumerology.cxx:102
InDetDD::InDetDetectorManager::setVersion
void setVersion(const Version &version)
Definition: InDetDetectorManager.cxx:43
InDetDD::Version
Definition: Version.h:24
DecodeVersionKey::node
const std::string & node() const
Return the version node.
Definition: DecodeVersionKey.cxx:97
InDetDD::static_run1
@ static_run1
Definition: InDetDD_Defs.h:19
SCT_DetectorFactory::create
virtual void create(GeoPhysVol *world)
Definition: SCT_DetectorFactory.cxx:134
InDetDD::global
@ global
Definition: InDetDD_Defs.h:16
InDetDD::DetectorFactoryBase::msg
MsgStream & msg(MSG::Level lvl) const
Definition: InDetDetectorFactoryBase.h:37
InDetDD::SCT_ModuleSideDesign::cells
int cells() const
number of readout stips within module side:
Definition: SCT_ModuleSideDesign.h:228
InDetDD::InDetDetectorManager::addAlignFolderType
void addAlignFolderType(const AlignFolderType alignfolder)
Definition: InDetDetectorManager.cxx:81
SCT_Forward.h
InDetDD::SiDetectorManager::setCommonItems
void setCommonItems(std::unique_ptr< const SiCommonItems > &&commonItems)
Set SiCommonItems.
Definition: SiDetectorManager.cxx:151
SCT_GeneralParameters::partTransform
const GeoTrf::Transform3D & partTransform(const std::string &partName) const
Definition: SCT_GeneralParameters.cxx:30
SCT_Options
Definition: SCT_Options.h:12
SCT_GeneralParameters.h
Version.h
SCT_DetectorFactory::SCT_DetectorFactory
SCT_DetectorFactory(SCT_GeoModelAthenaComps *athenaComps, const SCT_Options &options)
Definition: SCT_DetectorFactory.cxx:67
InDetDD_Defs.h
SCT_Barrel::build
virtual GeoVPhysVol * build(SCT_Identifier id)
Definition: SCT_Barrel.cxx:95
IRDBAccessSvc.h
Definition of the abstract IRDBAccessSvc interface.
SCT_DetectorFactory::m_materials
std::unique_ptr< SCT_MaterialManager > m_materials
Definition: SCT_DetectorFactory.h:47
SCT_DetectorFactory.h
IRDBAccessSvc::getChildTag
virtual std::string getChildTag(const std::string &childNode, const std::string &parentTag, const std::string &parentNode, const std::string &connName="ATLASDD")=0
Gets the tag name for the node by giving its parent node tag.
InDetDD::DetectorFactoryBase::detStore
StoreGateSvc * detStore()
Definition: InDetDetectorFactoryBase.h:27
SCT_Barrel
Definition: SCT_Barrel.h:17
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
SiCommonItems.h
AlignableTransformContainer.h
InDetDD::InDetDetectorManager::addFolder
void addFolder(const std::string &key)
Definition: InDetDetectorManager.cxx:66
DecodeVersionKey
This is a helper class to query the version tags from GeoModelSvc and determine the appropriate tag a...
Definition: DecodeVersionKey.h:18
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
InDetDD::SiNumerology::setMaxNumPhiCells
void setMaxNumPhiCells(int cells)
Definition: SiNumerology.cxx:86
InDetDD::SCT_DetectorManager::addTreeTop
void addTreeTop(const PVConstLink &vol)
Add tree top.
Definition: SCT_DetectorManager.cxx:60
InDetDD::InDetDetectorManager::getVersion
const Version & getVersion() const
Get version information.
Definition: InDetDetectorManager.cxx:33
DecodeVersionKey::tag
const std::string & tag() const
Return version tag.
Definition: DecodeVersionKey.cxx:91
InDetDD::InDetDetectorManager::addGlobalFolder
void addGlobalFolder(const std::string &key)
Definition: InDetDetectorManager.cxx:76
python.AtlRunQueryLib.options
options
Definition: AtlRunQueryLib.py:379
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
SCT_GeneralParameters
Definition: SCT_GeneralParameters.h:16
InDetDD::local
@ local
Definition: InDetDD_Defs.h:16
InDetDD::SCT_DetectorManager::getSCT_Design
const SCT_ModuleSideDesign * getSCT_Design(int i) const
Access to module design, casts to SCT_ModuleSideDesign.
Definition: SCT_DetectorManager.cxx:300
InDetDD::DetectorFactoryBase::geoDbTagSvc
const IGeoDbTagSvc * geoDbTagSvc() const
Definition: InDetDetectorFactoryBase.h:30
InDetDD::SiCommonItems
Definition: SiCommonItems.h:45
StoredMaterialManager.h
SCT_Forward::zCenter
double zCenter() const
Definition: SCT_Forward.h:49
SCT_DetectorFactory::m_useDynamicAlignFolders
bool m_useDynamicAlignFolders
Definition: SCT_DetectorFactory.h:48
SCT_DetectorFactory::m_db
std::unique_ptr< SCT_DataBase > m_db
Definition: SCT_DetectorFactory.h:46
SCT_DetectorFactory::~SCT_DetectorFactory
virtual ~SCT_DetectorFactory()
Definition: SCT_DetectorFactory.cxx:128
DecodeVersionKey.h
get_generator_info.version
version
Definition: get_generator_info.py:33
SCT_DetectorFactory::m_geometryManager
std::unique_ptr< SCT_GeometryManager > m_geometryManager
Definition: SCT_DetectorFactory.h:45
SCT_GeoModelAthenaComps
Class to hold various Athena components.
Definition: SCT_GeoModelAthenaComps.h:14
SCT_GeoModelAthenaComps::getIdHelper
const SCT_ID * getIdHelper() const
Definition: SCT_GeoModelAthenaComps.cxx:19
IRDBRecord.h
Definition of the abstract IRDBRecord interface.
InDetDD::Version::fullDescription
std::string fullDescription() const
Full Description For example, Version: SCT-DC1-00, Name: DC1, Layout: Final, Code Version: 2....
Definition: Version.cxx:90
SCT_Forward
Definition: SCT_Forward.h:18
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
IRDBRecord::isFieldNull
virtual bool isFieldNull(const std::string &fieldName) const =0
Check if the field value is NULL.
IRDBRecord
IRDBRecord is one record in the IRDBRecordset object.
Definition: IRDBRecord.h:27
InDetDD::DetectorFactoryBase::rdbAccessSvc
IRDBAccessSvc * rdbAccessSvc()
Definition: InDetDetectorFactoryBase.h:32
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
DEBUG
#define DEBUG
Definition: page_access.h:11
IRDBRecordset.h
Definition of the abstract IRDBRecordset interface.
InDetDD::InDetDetectorManager::addChannel
void addChannel(const std::string &key, int level, FrameType frame)
Alignment access.
Definition: InDetDetectorManager.cxx:56
StoreGateSvc.h
SCT_Forward::build
virtual GeoVPhysVol * build(SCT_Identifier id)
Definition: SCT_Forward.cxx:132
SCT_GeometryManager.h
python.SystemOfUnits.degree
tuple degree
Definition: SystemOfUnits.py:106
IGeoDbTagSvc.h
InDetDD::SiNumerology::addBarrel
void addBarrel(int id)
Definition: SiNumerology.cxx:97
description
std::string description
glabal timer - how long have I taken so far?
Definition: hcg.cxx:88
InDetDD::SCT_DetectorManager::initNeighbours
virtual void initNeighbours() override
Initialize the neighbours. This can only be done when all elements are built.
Definition: SCT_DetectorManager.cxx:112