ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::SiGeometryManagerTool Class Reference

#include <SiGeometryManagerTool.h>

Inheritance diagram for InDet::SiGeometryManagerTool:

Public Member Functions

 SiGeometryManagerTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~SiGeometryManagerTool ()
StatusCode initialize ()
StatusCode finalize ()
int ReadGeometry (int solveLevel)
 read the geometry Method is called from the main AlignAlg to build the geometry based on the requested level of alignment.
void PrintModPositions ()
void StoreModPositions (std::string)
void buildGeometry ()
 builds geometry for Silicon alignment
void addModuleParameters (Trk::AlignModule *module, DataVector< DataVector< Trk::AlignPar > > *allFullModPars, DataVector< DataVector< Trk::AlignPar > > *allActiveModPars)
 adds alignment parameters for the module checks for active parameters and calls setSigmas()
bool checkAlignLevel ()
 check whether the alignment level is correct
void setLogStream (std::ostream *os)
 sets the output stream for the logfile
virtual void setNtuple (TFile *)
 Sets output ntuple file, to be implemented if needed for detector-specific implementation.
virtual int getNextIDHash ()
 get next free IDHash usable for new AlignModule
virtual void setFirstIDHash (unsigned int idhash)
 set first free IDHash usable for new AlignModule
virtual void setModuleList (Trk::AlignModuleList *list)
 set pointer to module list to which the modules should be added to
virtual void setHashMaps (std::vector< Trk::AlignModuleList * > *maps)
 set pointer to vector of hashMaps to which the elements should be added to
virtual int alignLevel ()
 get alignment level
virtual void setAlignLevel (int level)
 set alignment level
virtual int alignLevelBarrel ()
 get alignment level
virtual void setAlignLevelBarrel (int level)
 set alignment level
virtual bool checkAlignLevelBarrel ()
 check whether the alignment level is allowed
virtual int alignLevelEndcaps ()
 get alignment level
virtual void setAlignLevelEndcaps (int level)
 set alignment level
virtual bool checkAlignLevelEndcaps ()
 check whether the alignment level is allowed
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Protected Attributes

Trk::AlignModuleListm_alignModuleListPtr = nullptr
 pointer to module list to which the modules are added
std::vector< Trk::AlignModuleList * > * m_idHashToAlignModuleMapsPtr = nullptr
 pointer to vector of hashMaps to which the elements are added
int m_hashCounter = 0
 variable for setting the idHash of the AlignModules
std::ostream * m_logStream = nullptr
 logfile output stream
int m_alignLevel = 0
 alignment level
int m_alignLevelBarrel = 0
 alignment level
int m_alignLevelEndcaps = 0
 alignment level

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void buildL0 ()
 creates L0 AlignModules for Silicon
void setSigmas (Trk::AlignModule *mod, DataVector< Trk::AlignPar > *modPars)
 sets sigmas for modules
bool moduleSelected (Trk::AlignModule *mod)
 check wheather module is selected for module pointer
bool moduleSelected (unsigned long long modId)
 check wheather module is selected for module id
void dumpGeometry ()
 print basic geometry info to screen
bool isOneDetOnly (const Trk::AlignModule *mod, Trk::AlignModule::DetectorType dettype) const
 check whether the module is of a single detector type
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const InDetDD::PixelDetectorManagerm_pixelDetManager
 pointer to PIX detector manager
const InDetDD::SCT_DetectorManagerm_sctDetManager
 pointer to SCT detector manager
const PixelIDm_pixHelper
 pointer to PIX detector manager
const SCT_IDm_sctHelper
 pointer to SCT detector manager
const SiliconIDm_idHelper
 pointer to Silicon detector manager
ToolHandle< Trk::IGeometryManagerToolm_pixelGeoManager
 pointer to Pixel geometry manager
ToolHandle< Trk::IGeometryManagerToolm_sctGeoManager
 pointer to SCT geometry manager
ToolHandle< Trk::IAlignModuleToolm_alignModuleTool
 pointer to AlignModuleTool
Trk::AlignModuleList m_alignModuleList
Trk::AlignModuleList m_idHashToAlignModuleMap
std::vector< Trk::AlignModuleList * > m_idHashToAlignModuleMaps
DataVector< DataVector< Trk::AlignPar > > * m_alignParList
DataVector< DataVector< Trk::AlignPar > > * m_fullAlignParList
bool m_alignX
bool m_alignY
bool m_alignZ
bool m_alignRotX
bool m_alignRotY
bool m_alignRotZ
double m_sigmaX
double m_sigmaY
double m_sigmaZ
double m_sigmaRotX
double m_sigmaRotY
double m_sigmaRotZ
bool m_alignPixel
bool m_alignSCT
bool m_doModuleSelection
std::vector< unsigned long long > m_moduleSelection
bool m_dumpGeometry
bool m_actualGeom
Gaudi::Property< std::string > m_pixelDetManagerName {this,"PixelDetectorManager","Pixel","Name of the Pixel Detector Manager to attempt to retrieve"}
Gaudi::Property< std::string > m_stripDetManagerName {this,"StripDetectorManager","SCT","Name of the Strip Detector Manager to attempt to retrieve"}
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 49 of file SiGeometryManagerTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ SiGeometryManagerTool()

InDet::SiGeometryManagerTool::SiGeometryManagerTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 30 of file SiGeometryManagerTool.cxx.

33 : AthAlgTool(type,name,parent)
34 , m_pixelDetManager(nullptr)
35 , m_sctDetManager(nullptr)
36 , m_pixHelper()
37 , m_sctHelper()
38 , m_idHelper()
40 , m_sctGeoManager("")
41 , m_alignModuleTool("Trk::AlignModuleTool/AlignModuleTool")
43 , m_alignParList(nullptr)
44 , m_fullAlignParList(nullptr)
45 {
46 declareInterface<IGeometryManagerTool>(this);
47 declareProperty("AlignModuleTool", m_alignModuleTool);
48
49 declareProperty("PixelGeometryManager", m_pixelGeoManager);
50 declareProperty("SCTGeometryManager", m_sctGeoManager);
51
52 // Silicon joboptions
53 declareProperty("AlignPixel", m_alignPixel = true);
54 declareProperty("AlignSCT", m_alignSCT = true);
55
56 declareProperty("AlignX", m_alignX = true);
57 declareProperty("AlignY", m_alignY = true);
58 declareProperty("AlignZ", m_alignZ = true);
59 declareProperty("AlignRotX", m_alignRotX = true);
60 declareProperty("AlignRotY", m_alignRotY = true);
61 declareProperty("AlignRotZ", m_alignRotZ = true);
62
63 declareProperty("SetSigmaX", m_sigmaX = 1.);
64 declareProperty("SetSigmaY", m_sigmaY = 1.);
65 declareProperty("SetSigmaZ", m_sigmaZ = 1.);
66 declareProperty("SetSigmaRotX", m_sigmaRotX = 0.001);
67 declareProperty("SetSigmaRotY", m_sigmaRotY = 0.001);
68 declareProperty("SetSigmaRotZ", m_sigmaRotZ = 0.001);
69
70 // defines alignment level
71 declareProperty("AlignmentLevel", m_alignLevel = -1);
72
73 declareProperty("doModuleSelection", m_doModuleSelection = false);
74 declareProperty("ModuleSelection", m_moduleSelection);
75
76 declareProperty("DumpGeometry", m_dumpGeometry = true);
77 declareProperty("ActualGeometry", m_actualGeom = false);
78
79 m_hashCounter = 0;
80 m_logStream = nullptr;
81 }
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const InDetDD::PixelDetectorManager * m_pixelDetManager
pointer to PIX detector manager
DataVector< DataVector< Trk::AlignPar > > * m_alignParList
ToolHandle< Trk::IGeometryManagerTool > m_pixelGeoManager
pointer to Pixel geometry manager
ToolHandle< Trk::IAlignModuleTool > m_alignModuleTool
pointer to AlignModuleTool
const SCT_ID * m_sctHelper
pointer to SCT detector manager
const SiliconID * m_idHelper
pointer to Silicon detector manager
ToolHandle< Trk::IGeometryManagerTool > m_sctGeoManager
pointer to SCT geometry manager
DataVector< DataVector< Trk::AlignPar > > * m_fullAlignParList
std::vector< unsigned long long > m_moduleSelection
const InDetDD::SCT_DetectorManager * m_sctDetManager
pointer to SCT detector manager
const PixelID * m_pixHelper
pointer to PIX detector manager
std::vector< Trk::AlignModuleList * > m_idHashToAlignModuleMaps
std::ostream * m_logStream
logfile output stream
int m_hashCounter
variable for setting the idHash of the AlignModules
std::vector< AlignModule * > AlignModuleList

◆ ~SiGeometryManagerTool()

InDet::SiGeometryManagerTool::~SiGeometryManagerTool ( )
virtual

Definition at line 84 of file SiGeometryManagerTool.cxx.

85 {
86 ATH_MSG_DEBUG("deleting alignModuleList");
87 for (const auto & i:m_alignModuleList) delete i;
88 m_alignModuleList.clear();
89
90 ATH_MSG_DEBUG("deleting fullAlignParList");
91 delete m_fullAlignParList;
92 ATH_MSG_DEBUG("deleting alignParList");
93 delete m_alignParList;
94 }
#define ATH_MSG_DEBUG(x)

Member Function Documentation

◆ addModuleParameters()

void InDet::SiGeometryManagerTool::addModuleParameters ( Trk::AlignModule * module,
DataVector< DataVector< Trk::AlignPar > > * allFullModPars,
DataVector< DataVector< Trk::AlignPar > > * allActiveModPars )
virtual

adds alignment parameters for the module checks for active parameters and calls setSigmas()

Reimplemented from Trk::IGeometryManagerTool.

Definition at line 422 of file SiGeometryManagerTool.cxx.

423 {
424 // for standalone Pixel and SCT modules call the respective methods
426 m_pixelGeoManager->addModuleParameters(module,allFullModPars,allActiveModPars);
427 return;
428 }
429 else if(isOneDetOnly(module,Trk::AlignModule::SCT)) {
430 m_sctGeoManager->addModuleParameters(module,allFullModPars,allActiveModPars);
431 return;
432 }
433
434 // for combined modules do the work here
435
436 // prepare all parameters
437 DataVector<Trk::AlignPar> * fullModPars = new DataVector<Trk::AlignPar>(SG::OWN_ELEMENTS);
438 fullModPars->push_back(new Trk::AlignPar(module,Trk::AlignModule::TransX));
439 fullModPars->push_back(new Trk::AlignPar(module,Trk::AlignModule::TransY));
440 fullModPars->push_back(new Trk::AlignPar(module,Trk::AlignModule::TransZ));
441 fullModPars->push_back(new Trk::AlignPar(module,Trk::AlignModule::RotX));
442 fullModPars->push_back(new Trk::AlignPar(module,Trk::AlignModule::RotY));
443 fullModPars->push_back(new Trk::AlignPar(module,Trk::AlignModule::RotZ));
444
445 // set sigmas
446 setSigmas(module,fullModPars);
447
448 // select active parameters based on jobOption properties
449 DataVector<Trk::AlignPar> * activeModPars = new DataVector<Trk::AlignPar>(SG::VIEW_ELEMENTS);
450 for(unsigned int ipar=0;ipar<fullModPars->size();++ipar) {
451
452 Identifier AlimodID = module->identify();
453
454 ATH_MSG_DEBUG("Silicon module with id "<<AlimodID);
455 if( (fullModPars->at(ipar)->paramType() == Trk::AlignModule::TransX && m_alignX)
456 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::TransY && m_alignY)
457 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::TransZ && m_alignZ)
458 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::RotX && m_alignRotX)
459 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::RotY && m_alignRotY)
460 || (fullModPars->at(ipar)->paramType() == Trk::AlignModule::RotZ && m_alignRotZ) ) {
461 ATH_MSG_DEBUG("parameter type "<<fullModPars->at(ipar)->paramType()<<" is now active");
462 activeModPars->push_back(fullModPars->at(ipar));
463 }
464 else
465 ATH_MSG_DEBUG("parameter type "<<fullModPars->at(ipar)->paramType()<<" is NOT active");
466 }
467
468 // now add parameters to the list
469 allFullModPars->push_back(fullModPars);
470 allActiveModPars->push_back(activeModPars);
471 }
const T * at(size_type n) const
Access an element, as an rvalue.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
void setSigmas(Trk::AlignModule *mod, DataVector< Trk::AlignPar > *modPars)
sets sigmas for modules
bool isOneDetOnly(const Trk::AlignModule *mod, Trk::AlignModule::DetectorType dettype) const
check whether the module is of a single detector type
@ OWN_ELEMENTS
this data object owns its elements
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts

◆ alignLevel()

virtual int Trk::IGeometryManagerTool::alignLevel ( )
inlinevirtualinherited

get alignment level

Definition at line 80 of file IGeometryManagerTool.h.

80{ return m_alignLevel; }

◆ alignLevelBarrel()

virtual int Trk::IGeometryManagerTool::alignLevelBarrel ( )
inlinevirtualinherited

get alignment level

Definition at line 86 of file IGeometryManagerTool.h.

86{ return m_alignLevelBarrel; }
int m_alignLevelBarrel
alignment level

◆ alignLevelEndcaps()

virtual int Trk::IGeometryManagerTool::alignLevelEndcaps ( )
inlinevirtualinherited

get alignment level

Definition at line 95 of file IGeometryManagerTool.h.

95{ return m_alignLevelEndcaps; }
int m_alignLevelEndcaps
alignment level

◆ buildGeometry()

void InDet::SiGeometryManagerTool::buildGeometry ( )
virtual

builds geometry for Silicon alignment

Reimplemented from Trk::IGeometryManagerTool.

Definition at line 262 of file SiGeometryManagerTool.cxx.

263 {
264 ATH_MSG_INFO("Preparing the Silicon geometry");
265
266 int idHash = 0;
267
268 if(m_alignLevel==0)
269 buildL0();
270
271 else {
272
273 // PIXEL
274 if(m_alignPixel) {
275 m_pixelGeoManager->setFirstIDHash(idHash);
278
279 m_pixelGeoManager->buildGeometry();
280
281 idHash=m_pixelGeoManager->getNextIDHash();
282 }
283
284 // SCT
285 if(m_alignSCT) {
286 m_sctGeoManager->setFirstIDHash(idHash);
289
290 m_sctGeoManager->buildGeometry();
291 }
292 }
293
294 }
#define ATH_MSG_INFO(x)
void buildL0()
creates L0 AlignModules for Silicon
Trk::AlignModuleList * m_alignModuleListPtr
pointer to module list to which the modules are added
std::vector< Trk::AlignModuleList * > * m_idHashToAlignModuleMapsPtr
pointer to vector of hashMaps to which the elements are added

◆ buildL0()

void InDet::SiGeometryManagerTool::buildL0 ( )
private

creates L0 AlignModules for Silicon

Definition at line 297 of file SiGeometryManagerTool.cxx.

298 {
299 ATH_MSG_INFO("Preparing the Silicon geometry for L0");
300 // ========================================
301 // Level 0 is just one module containing
302 // the whole Silicon detector (Pixel+SCT)
303
304 Trk::AlignModule * silicon = new Trk::AlignModule(this);
305 silicon->setIdHash(getNextIDHash());
306 silicon->setName("Silicon");
307
308 // use the identifier of the Pixel for the whole Silicon at L0
309 silicon->setIdentifier(m_pixHelper->wafer_id(0,0,0,0));
310
311 // check if we're aligning Silicon
312 if(!moduleSelected(silicon)) {
313 ATH_MSG_DEBUG("Module "<<silicon->name()<<" NOT selected");
314 delete silicon;
315 return;
316 }
317
318 ATH_MSG_DEBUG("Created module "<<silicon->name()<<" idHash: "<<silicon->identifyHash()<<" identifier: "<<silicon->identify());
319
320 // for L0 alignment the alignment frame is equal to the global frame
321 // and since the PIXEL and SCT detector element positions are also stored
322 // in the global frame in DB, transform is identity
323 const Amg::Transform3D transform = Amg::Transform3D::Identity();
324
325 // PIXEL
326 // get maximum number of elements from the helper
327 unsigned int pixelmaxHash = m_pixHelper->wafer_hash_max();
328 ATH_MSG_DEBUG("maxHash for the Pixel: "<<pixelmaxHash);
329
331 m_idHashToAlignModuleMapsPtr->at(Trk::AlignModule::Pixel) = new Trk::AlignModuleList((size_t)(pixelmaxHash),nullptr);
333
334 // ==================================================================
335 // loop over Pixel elements and add them to respective alignModules
336 // ==================================================================
337 for (unsigned int index = 0; index < pixelmaxHash; index++) {
338 IdentifierHash idHash = index;
339 Identifier id = m_pixHelper->wafer_id(idHash);
340
341 ATH_MSG_DEBUG(" Pixel DetectorElement idhash: "<<index);
342 ATH_MSG_DEBUG(" DetectorElement id: "<<id);
343
344 // get the element via hash
345 const SiDetectorElement * element2 = m_pixelDetManager->getDetectorElement(id);
346 if (element2) {
347 const Trk::TrkDetElementBase * element = static_cast<const Trk::TrkDetElementBase*> (element2);
348
349 // get element location for debugging
350 // HepGeom::Point3D<double> center = element->transform() * HepGeom::Point3D<double>();
351 // ATH_MSG_DEBUG(" DetectorElement idhash: " << index);
352 // ATH_MSG_DEBUG(" DetectorElement id: " << id << " with center = " << center);
353 // ATH_MSG_DEBUG(" Is Barrel: "<< m_pixHelper->is_barrel(id));
354
355 // add element to respective AlignModule
356
357 // add to the pixel structure
358 if(msgLvl(MSG::DEBUG)) {
359 if (m_pixHelper->is_barrel(id))
360 msg(MSG::DEBUG)<<"... Pixel barrel element"<<endmsg;
361 else
362 msg(MSG::DEBUG)<<"... Pixel endcap element"<<endmsg;
363 }
364 silicon->addDetElement(Trk::AlignModule::Pixel,element,transform);
365
366 // and fill the corresponding map
367 (*pixelIdHashMap)[idHash] = silicon;
368 }
369 else
370 ATH_MSG_DEBUG("No Pixel detector with id: "<<id);
371 }
372
373 // SCT
374 // get maximum number of elements from the helper
375 unsigned int sctmaxHash = m_sctHelper->wafer_hash_max();
376 ATH_MSG_DEBUG("maxHash for the SCT: "<<sctmaxHash);
377
379 m_idHashToAlignModuleMapsPtr->at(Trk::AlignModule::SCT) = new Trk::AlignModuleList((size_t)(sctmaxHash),nullptr);
381
382 // ================================================================
383 // loop over SCT elements and add them to respective alignModules
384 // ================================================================
385 for (unsigned int index = 0; index < sctmaxHash; index++) {
386 IdentifierHash idHash = index;
387 Identifier id = m_sctHelper->wafer_id(idHash);
388
389 ATH_MSG_DEBUG(" SCT DetectorElement idhash: "<<index);
390 ATH_MSG_DEBUG(" DetectorElement id: "<<id);
391
392 // get the element via hash
393 const SiDetectorElement * element2 = m_sctDetManager->getDetectorElement(id);
394 if (element2) {
395 const Trk::TrkDetElementBase * element = static_cast<const Trk::TrkDetElementBase*> (element2);
396
397 // add element to respective AlignModule
398
399 // add to the sct barrel structure
400 if(msgLvl(MSG::DEBUG)) {
401 if (m_sctHelper->is_barrel(id))
402 msg(MSG::DEBUG)<<"... SCT barrel element"<<endmsg;
403 else
404 msg(MSG::DEBUG)<<"... SCT endcap element"<<endmsg;
405 }
406 silicon->addDetElement(Trk::AlignModule::SCT,element,transform);
407
408 // and fill the corresponding map
409 (*sctIdHashMap)[idHash] = silicon;
410 }
411 else
412 ATH_MSG_DEBUG("No SCT detector with id: "<<id);
413 }
414
415 // add created module to the geometry
416 m_alignModuleListPtr->push_back(silicon);
417
418 ATH_MSG_DEBUG("Silicon L0 module successfully added to the list");
419 }
#define endmsg
bool msgLvl(const MSG::Level lvl) const
MsgStream & msg() const
bool moduleSelected(Trk::AlignModule *mod)
check wheather module is selected for module pointer
void setIdHash(IdentifierHash id)
Definition AlignModule.h:93
Identifier identify() const
Definition AlignModule.h:97
void setIdentifier(Identifier identifier)
Set and return identifier of module.
Definition AlignModule.h:96
const std::string & name() const
Definition AlignModule.h:89
void setName(const std::string &name)
Set and return name of align module (i.e.
Definition AlignModule.h:88
void addDetElement(AlignModule::DetectorType detType, const TrkDetElementBase *det, const Amg::Transform3D &transform, Identifier id=Identifier())
used to add a detector element to the align module with a align frame to detector element local frame...
IdentifierHash identifyHash() const
Set and return index of module, used by alignment classes to keep track of order of align module.
Definition AlignModule.h:92
virtual int getNextIDHash()
get next free IDHash usable for new AlignModule
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
str index
Definition DeMoScan.py:362

◆ checkAlignLevel()

bool InDet::SiGeometryManagerTool::checkAlignLevel ( )
virtual

check whether the alignment level is correct

Reimplemented from Trk::IGeometryManagerTool.

Definition at line 160 of file SiGeometryManagerTool.cxx.

161 {
162 switch(m_alignLevel) {
163
164 case 0:
165 // for L0 we don't need the other two managers so everything is ok
166 ATH_MSG_INFO("Setting up level 0 alignment of the Silicon");
167 break;
168
169 case 1: case 2: case 3:
170 // for levels 1,2,3 we need the managers and we have to
171 // set the levels in them
172 if( (m_pixelGeoManager.empty() && m_alignPixel) || (m_sctGeoManager.empty() && m_alignSCT) ) {
173 ATH_MSG_ERROR("PixelGeometryManagerTool and/or SCTGeometryManagerTool not available");
174 ATH_MSG_ERROR("Can't set alignment geometry.");
175 return false;
176 }
177
178 ATH_MSG_INFO("Setting up level "<<m_alignLevel<<" alignment of the Silicon");
179 m_pixelGeoManager->setAlignLevel(m_alignLevel);
180 m_sctGeoManager->setAlignLevel(m_alignLevel);
181
182 // we also check that the managers support the levels
183 if( (m_alignPixel && !m_pixelGeoManager->checkAlignLevel()) || (m_alignSCT && !m_sctGeoManager->checkAlignLevel()) )
184 return false;
185 break;
186
187 case -1:
188 // if level is not set here (i.e. it is equal to -1) we need the Pixel and SCT
189 // managers but we trust their setup, we don't need to check it
190 if( (m_pixelGeoManager.empty() && m_alignPixel) || (m_sctGeoManager.empty() && m_alignSCT) ) {
191 ATH_MSG_ERROR("PixelGeometryManagerTool and/or SCTGeometryManagerTool not available");
192 ATH_MSG_ERROR("Can't set alignment geometry.");
193 return false;
194 }
195 break;
196
197 default:
198 ATH_MSG_ERROR("Unknown alignment level "<<m_alignLevel<<". Can't set alignment geometry.");
199 return false;
200
201 }
202
203 return true;
204 }
#define ATH_MSG_ERROR(x)

◆ checkAlignLevelBarrel()

virtual bool Trk::IGeometryManagerTool::checkAlignLevelBarrel ( )
inlinevirtualinherited

check whether the alignment level is allowed

Reimplemented in InDet::PixelGeometryManagerTool, InDet::SCTGeometryManagerTool, and InDet::TRTGeometryManagerTool.

Definition at line 92 of file IGeometryManagerTool.h.

92{ return true; }

◆ checkAlignLevelEndcaps()

virtual bool Trk::IGeometryManagerTool::checkAlignLevelEndcaps ( )
inlinevirtualinherited

check whether the alignment level is allowed

Reimplemented in InDet::PixelGeometryManagerTool, InDet::SCTGeometryManagerTool, and InDet::TRTGeometryManagerTool.

Definition at line 101 of file IGeometryManagerTool.h.

101{ return true; }

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ dumpGeometry()

void InDet::SiGeometryManagerTool::dumpGeometry ( )
private

print basic geometry info to screen

Definition at line 523 of file SiGeometryManagerTool.cxx.

524 {
525
526 ATH_MSG_INFO("---------------------------------------------------");
527 ATH_MSG_INFO("Try to write an Si geom root file:");
528 TGeoManager* gm=new TGeoManager("Silicon","Silicon");
529 TGeoMaterial* mat=new TGeoMaterial("Vacuum",0,0,0);
530 TGeoMedium* med=new TGeoMedium("Vacuum",1,mat);
531 TGeoVolume* top = gm->MakeBox("Silicon",med,2000.,2000.,10000.);
532 gm->SetTopVolume(top);
533 TGeoVolume* Si_cog[60000]; //where does 22000 come from? For ITk this is too small it seems. Make configurable?
534 TGeoVolume* Si[60000];
535 int Si_count=0;
536 TGeoTranslation* tr[60000];
537 TGeoRotation* ro[60000];
538 TGeoCombiTrans* mx[60000];
539
540 TGeoTranslation* nulltrans=new TGeoTranslation(0.0,0.0,0.0);
541 TGeoRotation* nullrota=new TGeoRotation();
542 nullrota->SetAngles(0.0,0.0,0.0); // Euler angles
543 TGeoRotation* fliprota=new TGeoRotation();
544 fliprota->SetAngles(0.0,-90.0,0.0); // Euler angles (rotation around X)
545 TGeoCombiTrans* donothing=new TGeoCombiTrans(*nulltrans,*nullrota);
546 TGeoCombiTrans* swapaxes=new TGeoCombiTrans(*nulltrans,*fliprota);
547
548 Amg::Vector3D ea;
550
551 // First prepare the higher level (L1, L2) structures:
552 TGeoVolume* L0_A = gm->MakeTube("L0_A",med,0.0,1100.0,5000.0);
553 L0_A->SetVisibility(kFALSE);
554 top->AddNodeOverlap(L0_A,Si_count,donothing);
555 Si_count++;
556 TGeoVolume* L1_IBL_A = gm->MakeTube("L1_IBL_A",med,20.0,40.0,700.0);
557 L1_IBL_A->SetVisibility(kFALSE);
558 L0_A->AddNodeOverlap(L1_IBL_A,Si_count,donothing);
559 Si_count++;
560 TGeoVolume* L1_DBM_A = gm->MakeTube("L1_DBM_A",med,20.0,40.0,1000.0);
561 L1_DBM_A->SetVisibility(kFALSE);
562 L0_A->AddNodeOverlap(L1_DBM_A,Si_count,donothing);
563 Si_count++;
564 TGeoVolume* L1_PIX_A = gm->MakeTube("L1_PIX_A",med,40.0,150.0,700.0);
565 L1_PIX_A->SetVisibility(kFALSE);
566 L0_A->AddNodeOverlap(L1_PIX_A,Si_count,donothing);
567 Si_count++;
568 TGeoVolume* L1_SCTA_A = gm->MakeTube("L1_SCTA_A",med,250.0,550.0,3000.0);
569 L1_SCTA_A->SetVisibility(kFALSE);
570 L0_A->AddNodeOverlap(L1_SCTA_A,Si_count,donothing);
571 Si_count++;
572 TGeoVolume* L1_SCTB_A = gm->MakeTube("L1_SCTB_A",med,250.0,550.0,3000.0);
573 L1_SCTB_A->SetVisibility(kFALSE);
574 L0_A->AddNodeOverlap(L1_SCTB_A,Si_count,donothing);
575 Si_count++;
576 TGeoVolume* L1_SCTC_A = gm->MakeTube("L1_SCTC_A",med,250.0,550.0,3000.0);
577 L1_SCTC_A->SetVisibility(kFALSE);
578 L0_A->AddNodeOverlap(L1_SCTC_A,Si_count,donothing);
579 Si_count++;
580
581
582
583 ATH_MSG_INFO("---------------------------------------------------");
584 ATH_MSG_INFO("Summary of the alignment geometry");
585 ATH_MSG_INFO("Number of alignable objects: "<< m_alignModuleList.size());
586 for(unsigned int i=0;i<m_alignModuleList.size();i++) {
587 const Trk::AlignModule* module = m_alignModuleList.at(i);
588 ATH_MSG_INFO(i<<". "<< module->name());
589 ATH_MSG_INFO(" - identifier: "<<module->identify());
590 ATH_MSG_INFO(" - identifierHash: "<<module->identifyHash());
591
592 unsigned int npix(0);
593 unsigned int nsct(0);
594 unsigned int nSi(0);
595 bool isPix(false);
596 bool isSCT(false);
597 if(module->detElementCollection(Trk::AlignModule::Pixel)) {
598 npix = module->detElementCollection(Trk::AlignModule::Pixel)->size();
599 nSi = npix; isPix = true;
600 ATH_MSG_INFO(" - has "<<npix<<" Pixel modules");
601 }
602 if(module->detElementCollection(Trk::AlignModule::SCT)) {
603 nsct = module->detElementCollection(Trk::AlignModule::SCT)->size();
604 nSi = nsct; isSCT = true;
605 ATH_MSG_INFO(" - has "<<nsct<<" SCT modules");
606 }
607 if(!isPix && !isSCT) ATH_MSG_INFO(" UNKNOWN module found: "<<module->identify());
608
609 // Loop over all detector elements of this align module:
610 for(unsigned int j=0;j<nSi;j++) {
611 const SiDetectorElement * element=nullptr;
612 if(isPix) element = dynamic_cast<const SiDetectorElement*>(module->detElementCollection(Trk::AlignModule::Pixel)->at(j));
613 if(isSCT) element = dynamic_cast<const SiDetectorElement*>(module->detElementCollection(Trk::AlignModule::SCT)->at(j));
614 if (not element){
615 ATH_MSG_WARNING("Dynamic cast to SiDetectorElement from pixel or SCT module failed");
616 return;
617 }
618 const Identifier element_id = element->identify();
619 int det;
620 int bec;
621 int layer;
622 int ring;
623 int sector;
624 int side;
625 // in the future, the InDetAlignDBTool::idToDetSet should be directly used !
626 bool resok=false;
627 if (m_pixHelper->is_pixel(element_id)) {
628 det=1;
629 bec=m_pixHelper->barrel_ec(element_id);
630 layer=m_pixHelper->layer_disk(element_id);
631 ring=m_pixHelper->eta_module(element_id);
632 sector=m_pixHelper->phi_module(element_id);
633 side=0;
634 resok=true;
635 } else if (m_sctHelper->is_sct(element_id)) {
636 det=2;
637 bec=m_sctHelper->barrel_ec(element_id);
638 layer=m_sctHelper->layer_disk(element_id);
639 ring=m_sctHelper->eta_module(element_id);
640 sector=m_sctHelper->phi_module(element_id);
641 side=m_sctHelper->side(element_id);
642 resok=true;
643 }
644 if(!resok) ATH_MSG_INFO(" UNRESOLVED module found: "<<element_id);
645
646 if(resok && !(element->isStereo())) { // take only phi SCT modules and Pixels
647 // extract the transformation parameters from Eigen:
648 if( m_actualGeom ) {
649 xyz = element->transform().translation(); // translation (actual)
650 ea = element->transform().rotation().eulerAngles(2, 0, 2); // Euler angles (actual)
651 } else {
652 xyz = element->defTransform().translation(); // translation (nominal)
653 ea = element->defTransform().rotation().eulerAngles(2, 0, 2); // Euler angles (nominal)
654 }
655
656 ATH_MSG_INFO(">>> Element ident,det,bec,layer,ring,sector,side: "<<element_id<<", "<<det<<", "<<bec<<", "<<layer<<", "<<ring<<", "<<sector<<", "<<side);
657 ATH_MSG_INFO(">>> Element length/width/thickness: "<<element->length()<<", "<<element->width()<<", "<<element->thickness());
658 if(element->isSCT() && element->isEndcap())
659 ATH_MSG_INFO(">>> SCT Endcap wedge, min/max "<<element->minWidth()<<" / "<<element->maxWidth());
660 ATH_MSG_INFO(">>> Center position: "<<element->center());
661 ATH_MSG_INFO(">>> Default transformation: ");
662 ATH_MSG_INFO(">>> translation: "<<xyz);
663 ATH_MSG_INFO(">>> Euler angles: Phi="<<57.2957*ea[0]<<" Theta="<<57.2957*ea[1]<<" Psi="<<57.2957*ea[2]);
664
665
666 ATH_MSG_INFO("Adding a volume to the Silicon geometry:");
667 TString nname = "Si_COG_";
668 TString mname = "Si_MOD_";
669 TString undsc = "_";
670
671 std::string det_str = std::to_string(det);
672 std::string bec_str = std::to_string( bec);
673 std::string layer_str = std::to_string( layer);
674 std::string ring_str = std::to_string( ring);
675 std::string sector_str = std::to_string( sector);
676 const auto suffix = TString(det_str)+undsc+TString(bec_str)+undsc+TString(layer_str)+undsc+TString(ring_str)+undsc+TString(sector_str);
677 nname += suffix;
678 mname += suffix;
679
680 Si_cog[Si_count] = gm->MakeSphere(nname,med,0.0,element->length(),0.0,180.0,0.0,360.0); // invisible container
681 Si_cog[Si_count]->SetVisibility(kFALSE);
682 // create a wedge for SCT Endcap, otherwise a box:
683 if(element->isSCT() && element->isEndcap()) {
684 Si[Si_count] = gm->MakeTrd1(mname,med,0.5*element->minWidth(),0.5*element->maxWidth(),0.5*element->thickness(),0.5*element->length()); // this is a wedge!
685 } else {
686 Si[Si_count] = gm->MakeBox(mname,med,0.5*element->width(),0.5*element->thickness(),0.5*element->length()); // creator takes the half-lengths!
687 }
688 tr[Si_count] = new TGeoTranslation();
689 tr[Si_count]->SetTranslation(xyz[0],xyz[1],xyz[2]);
690 ro[Si_count] = new TGeoRotation();
691 ro[Si_count]->SetAngles(57.2957*ea[0],57.2957*ea[1],57.2957*ea[2]);
692 mx[Si_count] = new TGeoCombiTrans(*tr[Si_count],*ro[Si_count]);
693
694 TGeoVolume* parrent_elem = nullptr;
695 switch(det)
696 {
697 case 1:
698 if(bec==0 && layer==0) parrent_elem = L1_IBL_A;
699 else if(abs(bec)==4) parrent_elem = L1_DBM_A;
700 else parrent_elem = L1_PIX_A;
701 break;
702 case 2:
703 switch(bec)
704 {
705 case -2:
706 parrent_elem = L1_SCTC_A;
707 break;
708 case 0:
709 parrent_elem = L1_SCTB_A;
710 break;
711 case 2:
712 parrent_elem = L1_SCTA_A;
713 break;
714 default:
715 break;
716 }
717 break;
718 default:
719 break;
720 }
721 if(parrent_elem) {
722 // parrent_elem->AddNode(Si_cog[Si_count],Si_count,mx[Si_count]);
723 // top->AddNode(Si_cog[Si_count],Si_count,mx[Si_count]);
724 top->AddNode(Si_cog[Si_count],0,mx[Si_count]);
725 // Si_cog[Si_count]->AddNode(Si[Si_count],Si_count,gGeoIdentity);
726 // Si_cog[Si_count]->AddNode(Si[Si_count],side,swapaxes);
727 Si_cog[Si_count]->AddNode(Si[Si_count],0,swapaxes);
728 Si_count++;
729 }
730 }
731 }
732
733
734 if(npix && nsct)
735 ATH_MSG_INFO(" - has "<<npix+nsct<<" Silicon modules in total");
736
737 Amg::Transform3D localtoglobal = (module->globalFrameToAlignFrame()).inverse();
738 ATH_MSG_DEBUG(" - local to global : "<<std::setprecision(12)<<localtoglobal.translation()<<" "<<localtoglobal.rotation());
739
740 DataVector<Trk::AlignPar> * pars = m_alignModuleTool->getAlignPars(module);
741 int npars = pars->size();
742 ATH_MSG_DEBUG(" - number of active transform parameters: "<<npars);
743 for(int j=0;j<npars;j++)
744 ATH_MSG_DEBUG(" * par "<<j<<": sigma = "<<(*pars)[j]->sigma());
745
746 }
747
748
749 // close geometry end write the geometry root file:
750 gm->CloseGeometry();
751 gm->Export("Silicon.root","Silicon","v");
752
753 }
#define ATH_MSG_WARNING(x)
if(febId1==febId2)
@ top
#define xyz
Eigen::Matrix< double, 3, 1 > Vector3D
@ layer
Definition HitInfo.h:79

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode InDet::SiGeometryManagerTool::finalize ( )
virtual

Implements Trk::IGeometryManagerTool.

Definition at line 152 of file SiGeometryManagerTool.cxx.

153 {
154 ATH_MSG_DEBUG("finalize() of SiGeometryManagerTool");
155
156 return StatusCode::SUCCESS;
157 }

◆ getNextIDHash()

virtual int Trk::IGeometryManagerTool::getNextIDHash ( )
inlinevirtualinherited

get next free IDHash usable for new AlignModule

Definition at line 65 of file IGeometryManagerTool.h.

65{ return m_hashCounter++; };

◆ initialize()

StatusCode InDet::SiGeometryManagerTool::initialize ( )
virtual

Implements Trk::IGeometryManagerTool.

Definition at line 97 of file SiGeometryManagerTool.cxx.

98 {
99 ATH_MSG_DEBUG("initialize() of SiGeometryManagerTool");
100
101 // retrieve AlignModuleTool
102 ATH_CHECK( m_alignModuleTool.retrieve() );
103
104 // retrieve Pixel helper
106
107 // retrieve SCT helper
109
110 // retrieve silicon helper
112
113 // retrieve SCT detector manager
115
116 // retrieve PIX detector manager
118
119 // dump module selection
120 if(m_doModuleSelection && msgLvl(MSG::INFO)) {
121 int idx{};
122 ATH_MSG_INFO("Creating geometry for selected "<<m_moduleSelection.size()<<" modules:");
123 for(const auto & mod:m_moduleSelection)
124 ATH_MSG_INFO(" "<<idx++<<". "<<mod);
125 }
126
127 // retrieve PixelGeometryManagerTool
128 if ( !m_pixelGeoManager.empty() ) {
129 ATH_CHECK( m_pixelGeoManager.retrieve() );
130 }
131
132 // retrieve SCTGeometryManagerTool
133 if ( !m_sctGeoManager.empty() ) {
134 ATH_CHECK( m_sctGeoManager.retrieve() );
135 }
136
137 if(!m_alignPixel && !m_alignSCT) {
138 ATH_MSG_FATAL("Alignment of both Pixel and SCT turned off. Aborting.");
139 return StatusCode::FAILURE;
140 }
141
142 // check allowed alignment level
143 if(!checkAlignLevel()) {
144 ATH_MSG_FATAL("Wrong alignment level.");
145 return StatusCode::FAILURE;
146 }
147
148 return StatusCode::SUCCESS;
149 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
const ServiceHandle< StoreGateSvc > & detStore() const
Gaudi::Property< std::string > m_pixelDetManagerName
bool checkAlignLevel()
check whether the alignment level is correct
Gaudi::Property< std::string > m_stripDetManagerName
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & IGeometryManagerTool::interfaceID ( )
inlinestaticinherited

Definition at line 121 of file IGeometryManagerTool.h.

121 {
123}
static const InterfaceID IID_TRKALIGNINTERFACES_IGeometryManagerTool("IGeometryManagerTool", 1, 0)

◆ isOneDetOnly()

bool InDet::SiGeometryManagerTool::isOneDetOnly ( const Trk::AlignModule * mod,
Trk::AlignModule::DetectorType dettype ) const
private

check whether the module is of a single detector type

Definition at line 756 of file SiGeometryManagerTool.cxx.

757 {
758 ATH_MSG_DEBUG("in isOneDetOnly for detector type "<<dettype);
759 const Trk::AlignModule::DetElementCollection * coll = mod->detElementCollection(dettype);
760 if(!coll || coll->empty())
761 return false;
762
763 int nelem(0);
764 for(int i=1;i<Trk::AlignModule::NDetectorTypes;i++) {
765 if(i==dettype)
766 continue;
767 coll = mod->detElementCollection((Trk::AlignModule::DetectorType)i);
768 if(coll)
769 nelem += coll->size();
770 }
771
772 if(nelem)
773 return false;
774
775 ATH_MSG_DEBUG("module IS of type "<<dettype);
776 return true;
777 }
std::vector< const TrkDetElementBase * > DetElementCollection
typedefs to contain detector element pointers and transforms
Definition AlignModule.h:60

◆ moduleSelected() [1/2]

bool InDet::SiGeometryManagerTool::moduleSelected ( Trk::AlignModule * mod)
private

check wheather module is selected for module pointer

Definition at line 517 of file SiGeometryManagerTool.cxx.

518 {
519 return moduleSelected(mod->identify().get_compact());
520 }

◆ moduleSelected() [2/2]

bool InDet::SiGeometryManagerTool::moduleSelected ( unsigned long long modId)
private

check wheather module is selected for module id

Definition at line 474 of file SiGeometryManagerTool.cxx.

475 {
477 return true;
478
479 int nsel = m_moduleSelection.size();
480 for(int i=0;i<nsel;++i)
481 if(m_moduleSelection.at(i) == id)
482 return true;
483
484 return false;
485 }

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ PrintModPositions()

void InDet::SiGeometryManagerTool::PrintModPositions ( )
inlinevirtual

Implements Trk::IGeometryManagerTool.

Definition at line 65 of file SiGeometryManagerTool.h.

65{};

◆ ReadGeometry()

int InDet::SiGeometryManagerTool::ReadGeometry ( int solveLevel)
virtual

read the geometry Method is called from the main AlignAlg to build the geometry based on the requested level of alignment.

It calls the other build() methods based on that.

Implements Trk::IGeometryManagerTool.

Definition at line 217 of file SiGeometryManagerTool.cxx.

218 {
219 ATH_MSG_DEBUG("in ReadGeometry() solveLevel="<<solveLevel);
220
221 // set pointers
224
225 // build alignment geometry
227
228 // now set the alignment parameters
229 // first prepare the parameter lists
230 m_alignParList = new DataVector< DataVector<Trk::AlignPar> >(SG::OWN_ELEMENTS);
231 m_fullAlignParList = new DataVector< DataVector<Trk::AlignPar> >(SG::OWN_ELEMENTS);
232 // loop over modules
233 ATH_MSG_DEBUG("Adding module parameters to modules");
234 std::vector<Trk::AlignModule *>::const_iterator imod = m_alignModuleList.begin();
235 std::vector<Trk::AlignModule *>::const_iterator imod_end = m_alignModuleList.end();
236 for( ; imod!=imod_end ; ++imod) {
237 ATH_MSG_DEBUG("Module "<<(*imod)->name());
239 }
240
241 // set alignModuleList and hash table in the alignModuleTool
243 ATH_MSG_DEBUG(" geometry set in m_alignModuleTool");
244
245 // set alignPar lists in the alignModuleTool
246 ATH_MSG_DEBUG(" alignParList = "<<m_alignParList);
247 ATH_MSG_DEBUG(" fullAlignParList = "<<m_fullAlignParList);
249 ATH_MSG_DEBUG(" AlignParLists set in m_alignModuleTool");
250
251 // dump summary about the geometry setup
252 if (m_dumpGeometry)
253 dumpGeometry();
254
255 int nDoF= m_alignModuleTool->nAlignParameters();
256 ATH_MSG_INFO("Total number of degrees of freedom: "<<nDoF);
257
258 return nDoF;
259 }
void buildGeometry()
builds geometry for Silicon alignment
void dumpGeometry()
print basic geometry info to screen
void addModuleParameters(Trk::AlignModule *module, DataVector< DataVector< Trk::AlignPar > > *allFullModPars, DataVector< DataVector< Trk::AlignPar > > *allActiveModPars)
adds alignment parameters for the module checks for active parameters and calls setSigmas()

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setAlignLevel()

virtual void Trk::IGeometryManagerTool::setAlignLevel ( int level)
inlinevirtualinherited

◆ setAlignLevelBarrel()

virtual void Trk::IGeometryManagerTool::setAlignLevelBarrel ( int level)
inlinevirtualinherited

set alignment level

Definition at line 89 of file IGeometryManagerTool.h.

◆ setAlignLevelEndcaps()

virtual void Trk::IGeometryManagerTool::setAlignLevelEndcaps ( int level)
inlinevirtualinherited

set alignment level

Definition at line 98 of file IGeometryManagerTool.h.

◆ setFirstIDHash()

virtual void Trk::IGeometryManagerTool::setFirstIDHash ( unsigned int idhash)
inlinevirtualinherited

set first free IDHash usable for new AlignModule

Definition at line 68 of file IGeometryManagerTool.h.

68{ m_hashCounter=idhash; };

◆ setHashMaps()

virtual void Trk::IGeometryManagerTool::setHashMaps ( std::vector< Trk::AlignModuleList * > * maps)
inlinevirtualinherited

set pointer to vector of hashMaps to which the elements should be added to

Definition at line 74 of file IGeometryManagerTool.h.

◆ setLogStream()

void InDet::SiGeometryManagerTool::setLogStream ( std::ostream * os)
virtual

sets the output stream for the logfile

Reimplemented from Trk::IGeometryManagerTool.

Definition at line 207 of file SiGeometryManagerTool.cxx.

208 {
209 m_logStream = os;
210 if (!m_pixelGeoManager.empty())
211 m_pixelGeoManager->setLogStream(m_logStream);
212 if (!m_sctGeoManager.empty())
213 m_sctGeoManager->setLogStream(m_logStream);
214 }

◆ setModuleList()

virtual void Trk::IGeometryManagerTool::setModuleList ( Trk::AlignModuleList * list)
inlinevirtualinherited

set pointer to module list to which the modules should be added to

Definition at line 71 of file IGeometryManagerTool.h.

list(name, path='/')
Definition histSizes.py:38

◆ setNtuple()

virtual void Trk::IGeometryManagerTool::setNtuple ( TFile * )
inlinevirtualinherited

Sets output ntuple file, to be implemented if needed for detector-specific implementation.

Definition at line 52 of file IGeometryManagerTool.h.

52{}

◆ setSigmas()

void InDet::SiGeometryManagerTool::setSigmas ( Trk::AlignModule * mod,
DataVector< Trk::AlignPar > * modPars )
private

sets sigmas for modules

Definition at line 488 of file SiGeometryManagerTool.cxx.

489 {
490 ATH_MSG_DEBUG("Setting sigmas for module: "<<module->name());
491 for(unsigned int ipar=0;ipar<modPars->size();++ipar)
492 switch(modPars->at(ipar)->paramType()) {
494 modPars->at(ipar)->setSigma(m_sigmaX);
495 break;
497 modPars->at(ipar)->setSigma(m_sigmaY);
498 break;
500 modPars->at(ipar)->setSigma(m_sigmaZ);
501 break;
503 modPars->at(ipar)->setSigma(m_sigmaRotX);
504 break;
506 modPars->at(ipar)->setSigma(m_sigmaRotY);
507 break;
509 modPars->at(ipar)->setSigma(m_sigmaRotZ);
510 break;
511 default:
512 break;
513 }
514 }

◆ StoreModPositions()

void InDet::SiGeometryManagerTool::StoreModPositions ( std::string )
inlinevirtual

Implements Trk::IGeometryManagerTool.

Definition at line 66 of file SiGeometryManagerTool.h.

66{};

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_actualGeom

bool InDet::SiGeometryManagerTool::m_actualGeom
private

Definition at line 144 of file SiGeometryManagerTool.h.

◆ m_alignLevel

int Trk::IGeometryManagerTool::m_alignLevel = 0
protectedinherited

alignment level

Definition at line 115 of file IGeometryManagerTool.h.

◆ m_alignLevelBarrel

int Trk::IGeometryManagerTool::m_alignLevelBarrel = 0
protectedinherited

alignment level

Definition at line 116 of file IGeometryManagerTool.h.

◆ m_alignLevelEndcaps

int Trk::IGeometryManagerTool::m_alignLevelEndcaps = 0
protectedinherited

alignment level

Definition at line 117 of file IGeometryManagerTool.h.

◆ m_alignModuleList

Trk::AlignModuleList InDet::SiGeometryManagerTool::m_alignModuleList
private

Definition at line 113 of file SiGeometryManagerTool.h.

◆ m_alignModuleListPtr

Trk::AlignModuleList* Trk::IGeometryManagerTool::m_alignModuleListPtr = nullptr
protectedinherited

pointer to module list to which the modules are added

Definition at line 106 of file IGeometryManagerTool.h.

◆ m_alignModuleTool

ToolHandle<Trk::IAlignModuleTool> InDet::SiGeometryManagerTool::m_alignModuleTool
private

pointer to AlignModuleTool

Definition at line 111 of file SiGeometryManagerTool.h.

◆ m_alignParList

DataVector< DataVector<Trk::AlignPar> >* InDet::SiGeometryManagerTool::m_alignParList
private

Definition at line 118 of file SiGeometryManagerTool.h.

◆ m_alignPixel

bool InDet::SiGeometryManagerTool::m_alignPixel
private

Definition at line 137 of file SiGeometryManagerTool.h.

◆ m_alignRotX

bool InDet::SiGeometryManagerTool::m_alignRotX
private

Definition at line 125 of file SiGeometryManagerTool.h.

◆ m_alignRotY

bool InDet::SiGeometryManagerTool::m_alignRotY
private

Definition at line 126 of file SiGeometryManagerTool.h.

◆ m_alignRotZ

bool InDet::SiGeometryManagerTool::m_alignRotZ
private

Definition at line 127 of file SiGeometryManagerTool.h.

◆ m_alignSCT

bool InDet::SiGeometryManagerTool::m_alignSCT
private

Definition at line 138 of file SiGeometryManagerTool.h.

◆ m_alignX

bool InDet::SiGeometryManagerTool::m_alignX
private

Definition at line 122 of file SiGeometryManagerTool.h.

◆ m_alignY

bool InDet::SiGeometryManagerTool::m_alignY
private

Definition at line 123 of file SiGeometryManagerTool.h.

◆ m_alignZ

bool InDet::SiGeometryManagerTool::m_alignZ
private

Definition at line 124 of file SiGeometryManagerTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doModuleSelection

bool InDet::SiGeometryManagerTool::m_doModuleSelection
private

Definition at line 140 of file SiGeometryManagerTool.h.

◆ m_dumpGeometry

bool InDet::SiGeometryManagerTool::m_dumpGeometry
private

Definition at line 143 of file SiGeometryManagerTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fullAlignParList

DataVector< DataVector<Trk::AlignPar> >* InDet::SiGeometryManagerTool::m_fullAlignParList
private

Definition at line 119 of file SiGeometryManagerTool.h.

◆ m_hashCounter

int Trk::IGeometryManagerTool::m_hashCounter = 0
protectedinherited

variable for setting the idHash of the AlignModules

Definition at line 111 of file IGeometryManagerTool.h.

◆ m_idHashToAlignModuleMap

Trk::AlignModuleList InDet::SiGeometryManagerTool::m_idHashToAlignModuleMap
private

Definition at line 114 of file SiGeometryManagerTool.h.

◆ m_idHashToAlignModuleMaps

std::vector<Trk::AlignModuleList *> InDet::SiGeometryManagerTool::m_idHashToAlignModuleMaps
private

Definition at line 116 of file SiGeometryManagerTool.h.

◆ m_idHashToAlignModuleMapsPtr

std::vector<Trk::AlignModuleList *>* Trk::IGeometryManagerTool::m_idHashToAlignModuleMapsPtr = nullptr
protectedinherited

pointer to vector of hashMaps to which the elements are added

Definition at line 109 of file IGeometryManagerTool.h.

◆ m_idHelper

const SiliconID* InDet::SiGeometryManagerTool::m_idHelper
private

pointer to Silicon detector manager

Definition at line 106 of file SiGeometryManagerTool.h.

◆ m_logStream

std::ostream* Trk::IGeometryManagerTool::m_logStream = nullptr
protectedinherited

logfile output stream

Definition at line 113 of file IGeometryManagerTool.h.

◆ m_moduleSelection

std::vector<unsigned long long> InDet::SiGeometryManagerTool::m_moduleSelection
private

Definition at line 141 of file SiGeometryManagerTool.h.

◆ m_pixelDetManager

const InDetDD::PixelDetectorManager* InDet::SiGeometryManagerTool::m_pixelDetManager
private

pointer to PIX detector manager

Definition at line 101 of file SiGeometryManagerTool.h.

◆ m_pixelDetManagerName

Gaudi::Property<std::string> InDet::SiGeometryManagerTool::m_pixelDetManagerName {this,"PixelDetectorManager","Pixel","Name of the Pixel Detector Manager to attempt to retrieve"}
private

Definition at line 146 of file SiGeometryManagerTool.h.

146{this,"PixelDetectorManager","Pixel","Name of the Pixel Detector Manager to attempt to retrieve"};

◆ m_pixelGeoManager

ToolHandle<Trk::IGeometryManagerTool> InDet::SiGeometryManagerTool::m_pixelGeoManager
private

pointer to Pixel geometry manager

Definition at line 108 of file SiGeometryManagerTool.h.

◆ m_pixHelper

const PixelID* InDet::SiGeometryManagerTool::m_pixHelper
private

pointer to PIX detector manager

Definition at line 104 of file SiGeometryManagerTool.h.

◆ m_sctDetManager

const InDetDD::SCT_DetectorManager* InDet::SiGeometryManagerTool::m_sctDetManager
private

pointer to SCT detector manager

Definition at line 102 of file SiGeometryManagerTool.h.

◆ m_sctGeoManager

ToolHandle<Trk::IGeometryManagerTool> InDet::SiGeometryManagerTool::m_sctGeoManager
private

pointer to SCT geometry manager

Definition at line 109 of file SiGeometryManagerTool.h.

◆ m_sctHelper

const SCT_ID* InDet::SiGeometryManagerTool::m_sctHelper
private

pointer to SCT detector manager

Definition at line 105 of file SiGeometryManagerTool.h.

◆ m_sigmaRotX

double InDet::SiGeometryManagerTool::m_sigmaRotX
private

Definition at line 132 of file SiGeometryManagerTool.h.

◆ m_sigmaRotY

double InDet::SiGeometryManagerTool::m_sigmaRotY
private

Definition at line 133 of file SiGeometryManagerTool.h.

◆ m_sigmaRotZ

double InDet::SiGeometryManagerTool::m_sigmaRotZ
private

Definition at line 134 of file SiGeometryManagerTool.h.

◆ m_sigmaX

double InDet::SiGeometryManagerTool::m_sigmaX
private

Definition at line 129 of file SiGeometryManagerTool.h.

◆ m_sigmaY

double InDet::SiGeometryManagerTool::m_sigmaY
private

Definition at line 130 of file SiGeometryManagerTool.h.

◆ m_sigmaZ

double InDet::SiGeometryManagerTool::m_sigmaZ
private

Definition at line 131 of file SiGeometryManagerTool.h.

◆ m_stripDetManagerName

Gaudi::Property<std::string> InDet::SiGeometryManagerTool::m_stripDetManagerName {this,"StripDetectorManager","SCT","Name of the Strip Detector Manager to attempt to retrieve"}
private

Definition at line 147 of file SiGeometryManagerTool.h.

147{this,"StripDetectorManager","SCT","Name of the Strip Detector Manager to attempt to retrieve"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: