Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
InDetDD::SCT_DetectorManager Class Reference

#include <SCT_DetectorManager.h>

Inheritance diagram for InDetDD::SCT_DetectorManager:
Collaboration diagram for InDetDD::SCT_DetectorManager:

Public Member Functions

 SCT_DetectorManager (StoreGateSvc *detStore)
 Constructor. More...
 
 SCT_DetectorManager (StoreGateSvc *detStore, const std::string &name, const bool doEncapNeighbour=false)
 Constructur with name. More...
 
const std::string & tag () const
 Get tag used in dictionary. More...
 
bool isSCT () const
 
virtual void invalidateAll () const
 Invalidate cache for all detector elements. More...
 
virtual void updateAll () const
 Update all caches. More...
 
const SiDetectorDesignaddDesign (std::unique_ptr< const SiDetectorDesign > &&)
 Access to module design; returns an observer pointer. More...
 
int numDesigns () const
 
const SiDetectorDesigngetDesign (int i) const
 
const SiNumerologynumerology () const
 Access Numerology. More...
 
SiNumerologynumerology ()
 
void setCommonItems (std::unique_ptr< const SiCommonItems > &&commonItems)
 Set SiCommonItems. More...
 
const VersiongetVersion () const
 Get version information. More...
 
const std::string & getLayout () const
 
void setVersion (const Version &version)
 
void addChannel (const std::string &key, int level, FrameType frame)
 Alignment access. More...
 
void addFolder (const std::string &key)
 
void addSpecialFolder (const std::string &key)
 
void addGlobalFolder (const std::string &key)
 
void addAlignFolderType (const AlignFolderType alignfolder)
 
StatusCode align (IOVSVC_CALLBACK_ARGS) const
 
StatusCode align (const RawAlignmentObjects &alignObjects, GeoVAlignmentStore *alignStore) const
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 
Access Raw Geometry
virtual unsigned int getNumTreeTops () const override
 
virtual PVConstLink getTreeTop (unsigned int i) const override
 
void addTreeTop (const PVConstLink &vol)
 Add tree top. More...
 
Access Readout Elements
virtual SiDetectorElementgetDetectorElement (const Identifier &id) const override
 access to individual elements via Identifier More...
 
virtual SiDetectorElementgetDetectorElement (const IdentifierHash &idHash) const override
 access to individual elements via IdentifierHash More...
 
SiDetectorElementgetDetectorElement (int barrel_endcap, int layer_wheel, int phi_module, int eta_module, int side) const
 access to individual elements via module numbering schema More...
 

Static Public Member Functions

static bool setAlignableTransformGlobalDelta (ExtendedAlignableTransform *extXF, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore=nullptr)
 Helper method to set delta transform from a global delta - Amg interface. More...
 
static bool setAlignableTransformLocalDelta (ExtendedAlignableTransform *extXF, const Amg::Transform3D &localToGlobalXF, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore=nullptr)
 Helper method to set delta transform from a local delta - Amg interface. More...
 

Public Attributes

AlignFolderType m_alignfoldertype
 

Protected Attributes

StoreGateSvcm_detStore
 
std::atomic_bool m_suppressWarnings
 

Private Member Functions

const LevelInfogetLevel (const std::string &key) const
 Retrieve level information. More...
 
bool processAlignmentContainer (const std::string &key) const
 return align folder string to use More...
 
bool processAlignmentContainer (const AlignableTransformContainer *container, GeoVAlignmentStore *alignStore) const
 
bool processKey (const std::string &key, const AlignableTransform *transformCollection, GeoVAlignmentStore *alignStore=nullptr) const
 Called by processAlignmentContainer, applies only one key on the transform Collections. More...
 
bool processGlobalAlignmentContainer (const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

std::string m_tag
 
SiNumerology m_numerology
 
std::vector< std::unique_ptr< const SiDetectorDesign > > m_designs
 
std::unique_ptr< const SiCommonItemsm_commonItems
 
Version m_version
 
std::map< std::string, LevelInfom_keys
 
std::set< std::string > m_folders
 
std::set< std::string > m_specialFolders
 
std::set< std::string > m_globalFolders
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Static Private Attributes

static const LevelInfo s_invalidLevel
 

access to whole collectiom via iterators

virtual const SiDetectorElementCollectiongetDetectorElementCollection () const override
 access to whole collectiom More...
 
virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin () const override
 
virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd () const override
 
virtual void addDetectorElement (SiDetectorElement *element) override
 Add elememts during construction. More...
 
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: More...
 
virtual void addAlignableTransform (int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVPhysVol *child)
 As above but does a dynamic_cast to GeoVFullPhysVol. More...
 
virtual void addAlignableTransform (int, const Identifier &, GeoAlignableTransform *) override
 DEPRECATED For backward compatibility. More...
 
virtual void initNeighbours () override
 Initialize the neighbours. This can only be done when all elements are built. More...
 
virtual bool isPixel () const override
 Methods to query which manager we have. More...
 
virtual bool identifierBelongs (const Identifier &id) const override
 Check identifier is for this detector. More...
 
const SCT_ModuleSideDesigngetSCT_Design (int i) const
 Access to module design, casts to SCT_ModuleSideDesign. More...
 
virtual bool processGlobalAlignment (const std::string &, int level, FrameType frame, const CondAttrListCollection *obj, GeoVAlignmentStore *alignStore) const override
 Process new global DB folders for L1 and L2. More...
 
bool processSpecialAlignment (const std::string &key, InDetDD::AlignFolderType alignfolder) const override
 Comply with InDetDetectorManager interface (not implemented for SCT) More...
 
bool processSpecialAlignment (const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const override
 Comply with InDetDetectorManager interface (not implemented for SCT) More...
 
void addMotherDesign (std::unique_ptr< const SCT_ModuleSideDesign > &&)
 
int getStripEndcapEtaNeighbour (const SiDetectorElement *element, IdentifierHash &idHashNeighbour, const bool phi_plus_one=false) const
 
virtual bool setAlignableTransformDelta (int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const override
 implements the main alignment update for delta transforms in different frames, it translates into the LocalDelta or GlobalDelta function of SiDetectorManager More...
 
const SCT_DetectorManageroperator= (const SCT_DetectorManager &right)=delete
 Prevent assign operator. More...
 
 SCT_DetectorManager (const SCT_DetectorManager &right)=delete
 Prevent copy constructor. More...
 
virtual const SCT_IDgetIdHelper () const override
 

Private member data

typedef std::map< Identifier, std::unique_ptr< ExtendedAlignableTransform > > AlignableTransformMap
 
std::vector< PVConstLink > m_volume
 
SiDetectorElementCollection m_elementCollection
 
std::vector< AlignableTransformMapm_higherAlignableTransforms
 
std::vector< std::unique_ptr< ExtendedAlignableTransform > > m_alignableTransforms
 
std::vector< std::unique_ptr< ExtendedAlignableTransform > > m_moduleAlignableTransforms
 
const SCT_IDm_idHelper
 
std::vector< std::unique_ptr< const SCT_ModuleSideDesign > > m_motherDesigns
 
bool m_isLogical
 This variable switches the how the local alignment corrections are applied If true they will be calcualted on top of all of other corrections but in the default reference frame If false they will be calcualted on top of all of other corrections but in the globally aligned reference frame. More...
 
bool m_doEndcapEtaNeighbour
 

Detailed Description

Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT information, access.

Author
: Grant Gorfine
  • modified and maintained by Nick Styles & Andreas Salzburger

Definition at line 49 of file SCT_DetectorManager.h.

Member Typedef Documentation

◆ AlignableTransformMap

Definition at line 175 of file SCT_DetectorManager.h.

Constructor & Destructor Documentation

◆ SCT_DetectorManager() [1/3]

InDetDD::SCT_DetectorManager::SCT_DetectorManager ( StoreGateSvc detStore)

Constructor.

Definition at line 25 of file SCT_DetectorManager.cxx.

26  : SCT_DetectorManager(detStore, "SCT") {}

◆ SCT_DetectorManager() [2/3]

InDetDD::SCT_DetectorManager::SCT_DetectorManager ( StoreGateSvc detStore,
const std::string &  name,
const bool  doEncapNeighbour = false 
)

Constructur with name.

Definition at line 28 of file SCT_DetectorManager.cxx.

32  m_idHelper(nullptr),
33  m_isLogical(false), // Change to true to change the definition of local module corrections
34  m_doEndcapEtaNeighbour(doEndcapEtaNeighbour)
35  {
36  ATH_MSG_VERBOSE("Creating SCT_DetectorManager named " << name);
37  //
38  // Initialized the Identifier helper.
39  //
40  StatusCode sc = detStore->retrieve(m_idHelper, "SCT_ID");
41  if (sc.isFailure()) {
42  ATH_MSG_ERROR("Could not retrieve SCT id helper");
43  }
44  // Initialize the collections.
45  if (m_idHelper) {
49  }
50  }

◆ SCT_DetectorManager() [3/3]

InDetDD::SCT_DetectorManager::SCT_DetectorManager ( const SCT_DetectorManager right)
privatedelete

Prevent copy constructor.

Member Function Documentation

◆ addAlignableTransform() [1/3]

void InDetDD::SCT_DetectorManager::addAlignableTransform ( int  level,
const Identifier id,
GeoAlignableTransform *  xf,
const GeoVFullPhysVol *  child 
)
virtual

Add alignable transforms. No access to these, they will be changed by manager:

Definition at line 342 of file SCT_DetectorManager.cxx.

346  {
347  if (m_idHelper) {
348  if (level == 0) {
349  // Element
350  IdentifierHash idHash = m_idHelper->wafer_hash(id);
351  if (idHash.is_valid()) {
352  m_alignableTransforms[idHash] = std::make_unique<ExtendedAlignableTransform>(transform, child);
353  }
354  } else if (level == 1) {
355  // Module
356  IdentifierHash idHash = m_idHelper->wafer_hash(id);
357  if (idHash.is_valid()) {
358  m_moduleAlignableTransforms[idHash/2] = std::make_unique<ExtendedAlignableTransform>(transform, child);
359  }
360 
361  } else {
362 
363  // Higher levels are saved in a map. NB level=0,1 is treated above.
364  int index = level - FIRST_HIGHER_LEVEL; // level 0 and 1 is treated separately.
365  if (index >= static_cast<int>(m_higherAlignableTransforms.size())) m_higherAlignableTransforms.resize(index+1);
366  m_higherAlignableTransforms[index][id] = std::make_unique<ExtendedAlignableTransform>(transform, child);
367  }
368  }
369  }

◆ addAlignableTransform() [2/3]

void InDetDD::SCT_DetectorManager::addAlignableTransform ( int  level,
const Identifier id,
GeoAlignableTransform *  xf,
const GeoVPhysVol *  child 
)
virtual

As above but does a dynamic_cast to GeoVFullPhysVol.

Definition at line 326 of file SCT_DetectorManager.cxx.

330  {
331  if (m_idHelper) {
332 
333  const GeoVFullPhysVol * childFPV = dynamic_cast<const GeoVFullPhysVol *>(child);
334  if (!childFPV) {
335  ATH_MSG_ERROR("Child of alignable transform is not a full physical volume");
336  } else {
337  addAlignableTransform (level, id, transform, childFPV);
338  }
339  }
340  }

◆ addAlignableTransform() [3/3]

virtual void InDetDD::SCT_DetectorManager::addAlignableTransform ( int  ,
const Identifier ,
GeoAlignableTransform *   
)
inlineoverridevirtual

DEPRECATED For backward compatibility.

Implements InDetDD::SiDetectorManager.

Definition at line 109 of file SCT_DetectorManager.h.

109 {};

◆ addAlignFolderType()

void InDetDD::InDetDetectorManager::addAlignFolderType ( const AlignFolderType  alignfolder)
inherited

Definition at line 81 of file InDetDetectorManager.cxx.

82  {
83  m_alignfoldertype = alignfolder;
84  }

◆ addChannel()

void InDetDD::InDetDetectorManager::addChannel ( const std::string &  key,
int  level,
FrameType  frame 
)
inherited

Alignment access.

Definition at line 56 of file InDetDetectorManager.cxx.

57  {
58  std::string frameStr = "other";
59  if (frame == InDetDD::global) frameStr = "global";
60  if (frame == InDetDD::local) frameStr = "local";
61  ATH_MSG_INFO("Registering alignment channel with key " << key << ", level " << level
62  << ", with frame " << frameStr << ".");
63  m_keys[key] = LevelInfo(level, frame);
64  }

◆ addDesign()

const SiDetectorDesign * InDetDD::SiDetectorManager::addDesign ( std::unique_ptr< const SiDetectorDesign > &&  design)
inherited

Access to module design; returns an observer pointer.

Definition at line 134 of file SiDetectorManager.cxx.

135  {
136  m_designs.push_back(std::move(design));
137  return m_designs.back().get();
138  }

◆ addDetectorElement()

void InDetDD::SCT_DetectorManager::addDetectorElement ( SiDetectorElement element)
overridevirtual

Add elememts during construction.

Implements InDetDD::SiDetectorManager.

Definition at line 106 of file SCT_DetectorManager.cxx.

107  {
108  IdentifierHash idHash = element->identifyHash();
109  if (idHash >= m_elementCollection.size())
110  throw std::runtime_error("SCT_DetectorManager: Error adding detector element.");
111  m_elementCollection[idHash] = element;
112  }

◆ addFolder()

void InDetDD::InDetDetectorManager::addFolder ( const std::string &  key)
inherited

Definition at line 66 of file InDetDetectorManager.cxx.

67  {
68  m_folders.insert(key);
69  }

◆ addGlobalFolder()

void InDetDD::InDetDetectorManager::addGlobalFolder ( const std::string &  key)
inherited

Definition at line 76 of file InDetDetectorManager.cxx.

77  {
78  m_globalFolders.insert(key);
79  }

◆ addMotherDesign()

void InDetDD::SCT_DetectorManager::addMotherDesign ( std::unique_ptr< const SCT_ModuleSideDesign > &&  motherDesign)

Definition at line 462 of file SCT_DetectorManager.cxx.

462  {
463  m_motherDesigns.push_back(std::move(motherDesign));
464  }

◆ addSpecialFolder()

void InDetDD::InDetDetectorManager::addSpecialFolder ( const std::string &  key)
inherited

Definition at line 71 of file InDetDetectorManager.cxx.

72  {
73  m_specialFolders.insert(key);
74  }

◆ addTreeTop()

void InDetDD::SCT_DetectorManager::addTreeTop ( const PVConstLink &  vol)

Add tree top.

Definition at line 62 of file SCT_DetectorManager.cxx.

62  {
63  m_volume.push_back(vol);
64  }

◆ align() [1/2]

StatusCode InDetDD::InDetDetectorManager::align ( const RawAlignmentObjects alignObjects,
GeoVAlignmentStore *  alignStore 
) const
inherited

Definition at line 208 of file InDetDetectorManager.cxx.

209  {
210 
211  ATH_MSG_DEBUG("align() called from an alignment CondAlg");
212  if (!getIdHelper()) return StatusCode::SUCCESS; // To Do: is it really a success?
213 
214  bool alignmentChange = false;
215  // const AlignInfo &aligninfo = AlignInfo(m_alignfoldertype);
216 
217  for(const auto& alignObj : alignObjects) {
218  const std::string& key = alignObj.first;
219 
220  ATH_MSG_DEBUG(" Processing folder " << key);
221 
222  if(m_globalFolders.find(key)!=m_globalFolders.end()) {
223  try {
224  // New global alignemnts
225  const CondAttrListCollection* obj = static_cast<const CondAttrListCollection*>(alignObj.second);
226  bool status = processGlobalAlignmentContainer(key,obj,alignStore);
227  alignmentChange = (alignmentChange || status);
228  } catch(std::runtime_error& err) {
229  // alignments should always exist so we return fatal if we could not process the alignment for this key
230  ATH_MSG_FATAL(err.what());
231  return StatusCode::FAILURE;
232  }
233  }
234  else if(m_folders.find(key)!=m_folders.end()) {
235  try {
236  // Regular alignemnts
237  const AlignableTransformContainer* container = static_cast<const AlignableTransformContainer*>(alignObj.second);
238  bool status = processAlignmentContainer(container,alignStore);
239  alignmentChange = (alignmentChange || status);
240  } catch(std::runtime_error& err) {
241  // alignments should always exist so we return fatal if we could not process the alignment for this key
242  ATH_MSG_FATAL(err.what());
243  return StatusCode::FAILURE;
244  }
245  }
246  else if(m_specialFolders.find(key)!=m_specialFolders.end()) {
247  try {
248  // Detector specific alignments
249  const CondAttrListCollection *obj =
250  static_cast<const CondAttrListCollection*>(alignObj.second);
251  bool status = processSpecialAlignment(key, obj, alignStore);
252  alignmentChange = (alignmentChange || status);
253  }
254  catch(std::runtime_error& err) {
255  // Should always exist if the folder was requested so we return fatal if
256  // we could not process the alignment for this key
257  ATH_MSG_FATAL(err.what());
258  return StatusCode::FAILURE;
259  }
260  }
261  else {
262  // Should not be any other keys specified in raw alignment object.
263  ATH_MSG_ERROR("Unrecognized folder name "<<key<<". Expected names are:");
264  for (const std::string& out:m_globalFolders) ATH_MSG_ERROR("--"<<out);
265  for (const std::string& out:m_folders) ATH_MSG_ERROR("--"<<out);
266  for (const std::string& out:m_specialFolders) ATH_MSG_ERROR("--"<<out);
267 
268  return StatusCode::RECOVERABLE;
269  }
270  }
271  // To Do: custom caching is not going to work in MT
272  /*
273  if(alignmentChange) invalidateAll();
274  */
275 
276  return StatusCode::SUCCESS;
277  }

◆ align() [2/2]

StatusCode InDetDD::InDetDetectorManager::align ( IOVSVC_CALLBACK_ARGS  ) const
inherited

◆ getDesign()

const SiDetectorDesign * InDetDD::SiDetectorManager::getDesign ( int  i) const
inherited

Definition at line 146 of file SiDetectorManager.cxx.

147  {
148  return m_designs[i].get();
149  }

◆ getDetectorElement() [1/3]

SiDetectorElement * InDetDD::SCT_DetectorManager::getDetectorElement ( const Identifier id) const
overridevirtual

access to individual elements via Identifier

Implements InDetDD::SiDetectorManager.

Definition at line 66 of file SCT_DetectorManager.cxx.

67  {
68  // NB the id helpers implementation for getting a hash is not optimal.
69  // Essentially does a binary search.
70  // Make sure it is a wafer Id
71  Identifier waferId = m_idHelper->wafer_id(id);
72  IdentifierHash idHash = m_idHelper->wafer_hash(waferId);
73  if (idHash.is_valid()) {
74  return m_elementCollection[idHash];
75  } else {
76  return nullptr;
77  }
78  }

◆ getDetectorElement() [2/3]

SiDetectorElement * InDetDD::SCT_DetectorManager::getDetectorElement ( const IdentifierHash idHash) const
overridevirtual

access to individual elements via IdentifierHash

Implements InDetDD::SiDetectorManager.

Definition at line 80 of file SCT_DetectorManager.cxx.

81  {
82  return m_elementCollection[idHash];
83  }

◆ getDetectorElement() [3/3]

SiDetectorElement * InDetDD::SCT_DetectorManager::getDetectorElement ( int  barrel_endcap,
int  layer_wheel,
int  phi_module,
int  eta_module,
int  side 
) const

access to individual elements via module numbering schema

Definition at line 85 of file SCT_DetectorManager.cxx.

86  {
87  return getDetectorElement(m_idHelper->wafer_id(barrel_endcap, layer_wheel, phi_module, eta_module, side));
88  }

◆ getDetectorElementBegin()

SiDetectorElementCollection::const_iterator InDetDD::SCT_DetectorManager::getDetectorElementBegin ( ) const
overridevirtual

Implements InDetDD::SiDetectorManager.

Definition at line 95 of file SCT_DetectorManager.cxx.

96  {
97  return m_elementCollection.begin();
98  }

◆ getDetectorElementCollection()

const SiDetectorElementCollection * InDetDD::SCT_DetectorManager::getDetectorElementCollection ( ) const
overridevirtual

access to whole collectiom

Implements InDetDD::SiDetectorManager.

Definition at line 90 of file SCT_DetectorManager.cxx.

91  {
92  return &m_elementCollection;
93  }

◆ getDetectorElementEnd()

SiDetectorElementCollection::const_iterator InDetDD::SCT_DetectorManager::getDetectorElementEnd ( ) const
overridevirtual

Implements InDetDD::SiDetectorManager.

Definition at line 100 of file SCT_DetectorManager.cxx.

101  {
102  return m_elementCollection.end();
103  }

◆ getIdHelper()

const SCT_ID * InDetDD::SCT_DetectorManager::getIdHelper ( ) const
overrideprivatevirtual

Implements InDetDD::InDetDetectorManager.

Definition at line 224 of file SCT_DetectorManager.cxx.

225  {
226  return m_idHelper;
227  }

◆ getLayout()

const std::string & InDetDD::InDetDetectorManager::getLayout ( ) const
inherited

Definition at line 38 of file InDetDetectorManager.cxx.

39  {
40  return m_version.layout();
41  }

◆ getLevel()

const InDetDetectorManager::LevelInfo & InDetDD::InDetDetectorManager::getLevel ( const std::string &  key) const
privateinherited

Retrieve level information.

Definition at line 87 of file InDetDetectorManager.cxx.

88  {
89  std::map<std::string, LevelInfo>::const_iterator iter;
90  iter = m_keys.find(key);
91  if (iter == m_keys.end()) return s_invalidLevel;
92  return iter->second;
93  }

◆ getNumTreeTops()

unsigned int InDetDD::SCT_DetectorManager::getNumTreeTops ( ) const
overridevirtual

Definition at line 52 of file SCT_DetectorManager.cxx.

53  {
54  return m_volume.size();
55  }

◆ getSCT_Design()

const SCT_ModuleSideDesign * InDetDD::SCT_DetectorManager::getSCT_Design ( int  i) const

Access to module design, casts to SCT_ModuleSideDesign.

Definition at line 378 of file SCT_DetectorManager.cxx.

379  {
380  return dynamic_cast<const SCT_ModuleSideDesign *>(getDesign(i));
381  }

◆ getStripEndcapEtaNeighbour()

int InDetDD::SCT_DetectorManager::getStripEndcapEtaNeighbour ( const SiDetectorElement element,
IdentifierHash idHashNeighbour,
const bool  phi_plus_one = false 
) const
private

Definition at line 165 of file SCT_DetectorManager.cxx.

168 {
169  // Check we are well in strip endcap
170  if( !(element->isSCT() && element->isEndcap()) ) return 1;
171 
172  // Now we try to find a neighbour at larger radius
173  Identifier id = element->identify();
174  int bec = m_idHelper->barrel_ec(id);
175  int layer_disk = m_idHelper->layer_disk(id);
176  int phi_module = m_idHelper->phi_module(id);
177  int eta_module = m_idHelper->eta_module(id);
178  int side = m_idHelper->side(id);
179 
180  // We want to find neighbour only for elements on "main" side
181  // since the space points are made from trigger cluster (on side 0 for ITk)
182  // and stero cluster (on side 1 for ITk)
183  if(element->isStereo()) return 1;
184 
185  // Most of the time we want to find neighbours in same phi
186  // but in transition region (eta_module 9->10) the module granularity in phi changes
187  // we have to look for two neighours, at: 2*phi and 2*phi+1
188  int target_phi = phi_module;
189  if (eta_module==9) target_phi = (phi_plus_one)? 2*phi_module+1 : 2*phi_module;
190 
191  // Brute force search, loop on all elements to find a neighbour
192  for(const SiDetectorElement* other_element : m_elementCollection){
193 
194  Identifier other_id = other_element->identify();
195 
196  // To speed up the search, screening firt on bec, then layer_disk, etc...
197  int other_bec = m_idHelper->barrel_ec(other_id);
198  if(other_bec != bec) continue;
199 
200  int other_layer_disk = m_idHelper->layer_disk(other_id);
201  if(other_layer_disk != layer_disk) continue;
202 
203  int other_phi_module = m_idHelper->phi_module(other_id);
204  if(other_phi_module != target_phi) continue;
205 
206  // We keep only neighbour at eta_module+1 (larger radius)
207  int other_eta_module = m_idHelper->eta_module(other_id);
208  if( (other_eta_module-eta_module) != 1 ) continue;
209 
210  // We keep only neighbour on stereo side (side=1 for ITk)
211  int other_side = m_idHelper->side(other_id);
212  if(other_side==side) continue;
213 
214  // If we are here, we found it!
215  idHashNeighbour = other_element->identifyHash();
216  ATH_MSG_VERBOSE(__FUNCTION__<<"found strip endcap neighbour for id="<<id<<" neigh="<<other_id
217  <<" eta:"<<eta_module<<" "<<other_eta_module);
218  return 0;
219  }
220 
221  return 1;
222 }

◆ getTreeTop()

PVConstLink InDetDD::SCT_DetectorManager::getTreeTop ( unsigned int  i) const
overridevirtual

Definition at line 57 of file SCT_DetectorManager.cxx.

58  {
59  return m_volume[i];
60  }

◆ getVersion()

const Version & InDetDD::InDetDetectorManager::getVersion ( ) const
inherited

Get version information.

Definition at line 33 of file InDetDetectorManager.cxx.

34  {
35  return m_version;
36  }

◆ identifierBelongs()

bool InDetDD::SCT_DetectorManager::identifierBelongs ( const Identifier id) const
overridevirtual

Check identifier is for this detector.

Implements InDetDD::InDetDetectorManager.

Definition at line 372 of file SCT_DetectorManager.cxx.

373  {
374  return getIdHelper()->is_sct(id);
375  }

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ initNeighbours()

void InDetDD::SCT_DetectorManager::initNeighbours ( )
overridevirtual

Initialize the neighbours. This can only be done when all elements are built.

Implements InDetDD::SiDetectorManager.

Definition at line 114 of file SCT_DetectorManager.cxx.

115  {
117 
118  // Loop over all elements and set the neighbours
119  for (iter = m_elementCollection.begin(); iter != m_elementCollection.end(); ++iter){
120 
121  SiDetectorElement * element = *iter;
122  if (element) {
123 
124  IdentifierHash idHash = element->identifyHash();
125  IdentifierHash idHashOther;
126 
127  int result;
128  // If no neighbour, result != 0 in which case we leave neighbour as null
129  if(element->isBarrel()){
130  result = m_idHelper->get_next_in_eta(idHash, idHashOther);
131  if (result==0) element->setNextInEta(m_elementCollection[idHashOther]);
132  }
133  else if(m_doEndcapEtaNeighbour){
134  // In endcaps the neighbours cannot be found with id+/-1, therefore we cannot rely on SCT_ID and need
135  // a dedicated search, considering only neighbour at larger radius (compatible wih outgoing particle)
136  result = getStripEndcapEtaNeighbour(element, idHashOther, false);
137  if(result==0) element->setNextInEta(m_elementCollection[idHashOther]);
138 
139  // In ITk strip endcap, when we move from eta_module=9 to eta_module=10 we have change of module
140  // granularity in phi: twice more module in eta_module=10, therefore for module at eta_module=9
141  // and phi_module=phi we have two neighbours at larger radius: both at eta_module=10, but one with
142  // phi_module=2*phi the other with phi_module=2*phi+1, for completeness we store this neighbour in
143  // "PrevInEta" even if it is a misnomer in this case
144  if( m_idHelper->eta_module(element->identify())==9 ){
145  result = getStripEndcapEtaNeighbour(element, idHashOther, true);
146  if(result==0) element->setPrevInEta(m_elementCollection[idHashOther]);
147  }
148  }
149 
150  result = m_idHelper->get_prev_in_eta(idHash, idHashOther);
151  if (result==0) element->setPrevInEta(m_elementCollection[idHashOther]);
152 
153  result = m_idHelper->get_next_in_phi(idHash, idHashOther);
154  if (result==0) element->setNextInPhi(m_elementCollection[idHashOther]);
155 
156  result = m_idHelper->get_prev_in_phi(idHash, idHashOther);
157  if (result==0) element->setPrevInPhi(m_elementCollection[idHashOther]);
158 
159  result = m_idHelper->get_other_side(idHash, idHashOther);
160  if (result==0) element->setOtherSide(m_elementCollection[idHashOther]);
161  }
162  }
163  }

◆ invalidateAll()

void InDetDD::SiDetectorManager::invalidateAll ( ) const
virtualinherited

Invalidate cache for all detector elements.

Implements InDetDD::InDetDetectorManager.

Definition at line 39 of file SiDetectorManager.cxx.

40  {
41  for (SiDetectorElementCollection::const_iterator element_iter = getDetectorElementBegin();
42  element_iter != getDetectorElementEnd();
43  ++element_iter) {
44 
45  if (*element_iter) {
46  (*element_iter)->invalidate();
47  }
48  }
49  }

◆ isPixel()

virtual bool InDetDD::SCT_DetectorManager::isPixel ( ) const
inlineoverridevirtual

Methods to query which manager we have.

Implements InDetDD::SiDetectorManager.

Definition at line 115 of file SCT_DetectorManager.h.

115 {return false;}

◆ isSCT()

bool InDetDD::SiDetectorManager::isSCT ( ) const
inlineinherited

Definition at line 97 of file SiDetectorManager.h.

97 {return !isPixel();}

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ numDesigns()

int InDetDD::SiDetectorManager::numDesigns ( ) const
inherited

Definition at line 140 of file SiDetectorManager.cxx.

141  {
142  return m_designs.size();
143  }

◆ numerology() [1/2]

SiNumerology& InDetDD::SiDetectorManager::numerology ( )
inlineinherited

Definition at line 127 of file SiDetectorManager.h.

127 {return m_numerology;}

◆ numerology() [2/2]

const SiNumerology& InDetDD::SiDetectorManager::numerology ( ) const
inlineinherited

Access Numerology.

Definition at line 126 of file SiDetectorManager.h.

126 {return m_numerology;}

◆ operator=()

const SCT_DetectorManager& InDetDD::SCT_DetectorManager::operator= ( const SCT_DetectorManager right)
privatedelete

Prevent assign operator.

◆ processAlignmentContainer() [1/2]

bool InDetDD::InDetDetectorManager::processAlignmentContainer ( const AlignableTransformContainer container,
GeoVAlignmentStore *  alignStore 
) const
privateinherited

Definition at line 307 of file InDetDetectorManager.cxx.

308  {
309  bool alignmentChange = false;
310 
311  // Check if container is empty - this can occur if it is an invalid IOV.
312  if (container->empty()) {
313  ATH_MSG_ERROR("AlignableTransformContainer "
314  << " is empty. Probably due to out of range IOV"); // To Do: add key to this printout for making it more informative
315  // This should not occur in normal situations so we force job to abort.
316  throw std::runtime_error("Unable to apply Inner Detector alignments.");
317  }
318  // loop over all the AlignableTransform objects in the collection
319  // use only the last ones.
320  // /Indet/AlignL3/SCTEA9 appear repeatedly in tags of the /Indet/AlignL3 folder
321  std::map<const std::string, const AlignableTransform*> stringToTransform;
322  for (const auto *pat : *container) {
323  stringToTransform[pat->tag()] = pat;
324  }
325  for (const std::pair<const std::string, const AlignableTransform*>& value: stringToTransform) {
326  bool status = processKey(value.first, value.second, alignStore);
327  alignmentChange = (alignmentChange || status);
328  }
329  return alignmentChange;
330  }

◆ processAlignmentContainer() [2/2]

bool InDetDD::InDetDetectorManager::processAlignmentContainer ( const std::string &  key) const
privateinherited

return align folder string to use

Process the alignment container, calls processKey

Definition at line 279 of file InDetDetectorManager.cxx.

280  {
281  bool alignmentChange = false;
282 
283  ATH_MSG_DEBUG("Dealing with key as container");
284  const AlignableTransformContainer* container;
285  if (StatusCode::SUCCESS!=m_detStore->retrieve(container, key)) {
286  ATH_MSG_ERROR("Cannot find AlignableTransformContainer for key "
287  << key << " - no misalignment");
288  // This should not occur in normal situations so we force job to abort.
289  throw std::runtime_error("Unable to apply Inner Detector alignments");
290  }
291  // Check if container is empty - this can occur if it is an invalid IOV.
292  if (container->empty()) {
293  ATH_MSG_ERROR("AlignableTransformContainer for key "
294  << key << " is empty. Probably due to out of range IOV");
295  // This should not occur in normal situations so we force job to abort.
296  throw std::runtime_error("Unable to apply Inner Detector alignments.");
297  }
298  // loop over all the AlignableTransform objects in the collection
299  for (const auto *pat : *container) {
300 
301  bool status = processKey(pat->tag(),pat);
302  alignmentChange = (alignmentChange || status);
303  }
304  return alignmentChange;
305  }

◆ processGlobalAlignment()

bool InDetDD::SCT_DetectorManager::processGlobalAlignment ( const std::string &  key,
int  level,
FrameType  frame,
const CondAttrListCollection obj,
GeoVAlignmentStore *  alignStore 
) const
overridevirtual

Process new global DB folders for L1 and L2.

Reimplemented from InDetDD::InDetDetectorManager.

Definition at line 384 of file SCT_DetectorManager.cxx.

386  {
387  ATH_MSG_INFO("Processing new global alignment containers with key " << key << " in the " << frame << " frame at level ");
388 
389  const CondAttrListCollection* atrlistcol=obj;
390  if(atrlistcol==nullptr and m_detStore->retrieve(atrlistcol,key)!=StatusCode::SUCCESS) {
391  ATH_MSG_WARNING("Cannot find new global align Container for key "
392  << key << " - no new global alignment ");
393  return false;
394  }
395 
396  bool alignmentChange = false;
398 
399  // loop over objects in collection
400  for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) {
401  const coral::AttributeList& atrlist=citr->second;
402  // SCT manager, therefore ignore all that is not a SCT Identifier
403  if (atrlist["det"].data<int>()!=2) continue;
404 
405  ident = getIdHelper()->wafer_id(atrlist["bec"].data<int>(),
406  atrlist["layer"].data<int>(),
407  atrlist["ring"].data<int>(),
408  atrlist["sector"].data<int>(),
409  0); // The last is the module side which is at this ident-level always the 0-side
410 
411  // construct new transform
412  // Order of rotations is defined as around z, then y, then x.
413  Amg::Translation3D newtranslation(atrlist["Tx"].data<float>(),atrlist["Ty"].data<float>(),atrlist["Tz"].data<float>());
414  Amg::Transform3D newtrans = newtranslation * Amg::RotationMatrix3D::Identity();
415  newtrans *= Amg::AngleAxis3D(atrlist["Rz"].data<float>()*CLHEP::mrad, Amg::Vector3D(0.,0.,1.));
416  newtrans *= Amg::AngleAxis3D(atrlist["Ry"].data<float>()*CLHEP::mrad, Amg::Vector3D(0.,1.,0.));
417  newtrans *= Amg::AngleAxis3D(atrlist["Rx"].data<float>()*CLHEP::mrad, Amg::Vector3D(1.,0.,0.));
418 
419  ATH_MSG_DEBUG("New global DB -- channel: " << citr->first
420  << " ,det: " << atrlist["det"].data<int>()
421  << " ,bec: " << atrlist["bec"].data<int>()
422  << " ,layer: " << atrlist["layer"].data<int>()
423  << " ,ring: " << atrlist["ring"].data<int>()
424  << " ,sector: " << atrlist["sector"].data<int>()
425  << " ,Tx: " << atrlist["Tx"].data<float>()
426  << " ,Ty: " << atrlist["Ty"].data<float>()
427  << " ,Tz: " << atrlist["Tz"].data<float>()
428  << " ,Rx: " << atrlist["Rx"].data<float>()
429  << " ,Ry: " << atrlist["Ry"].data<float>()
430  << " ,Rz: " << atrlist["Rz"].data<float>());
431 
432  // Set the new transform; Will replace existing one with updated transform
434  ident,
435  newtrans,
436  frame,
437  alignStore);
438 
439  if (!status) {
440  ATH_MSG_DEBUG("Cannot set AlignableTransform for identifier."
441  << getIdHelper()->show_to_string(ident)
442  << " at level " << level << " for new global DB ");
443  }
444 
445  alignmentChange = (alignmentChange || status);
446  }
447  return alignmentChange;
448  }

◆ processGlobalAlignmentContainer()

bool InDetDD::InDetDetectorManager::processGlobalAlignmentContainer ( const std::string &  key,
const CondAttrListCollection obj = nullptr,
GeoVAlignmentStore *  alignStore = nullptr 
) const
privateinherited

Definition at line 395 of file InDetDetectorManager.cxx.

398  {
399  bool alignmentChange = false;
400 
401  ATH_MSG_DEBUG("processing GlobalAlignmentContainer with key: " << key);
402  // From the key determine what level in hierarchy we are dealing with.
403  // returns -1 if unrecognized.
404  const LevelInfo & levelInfo = getLevel(key);
405  if (levelInfo.isValid()) {
406  ATH_MSG_VERBOSE("Processing channel: " << key);
407  } else {
408  ATH_MSG_DEBUG("Channel " << key << " not registered in this manager");
409  }
410  // return silently if unrecognised - this can happen in container mode
411  // when a single container holds transforms for both pixel and SCT
412  if (!levelInfo.isValid() ) return false;
413 
414  // Within detector specific code
415  bool status = processGlobalAlignment(key, levelInfo.level(), levelInfo.frame(), obj, alignStore);
416 
417  alignmentChange = (alignmentChange || status);
418 
419  return alignmentChange;
420 
421  }

◆ processKey()

bool InDetDD::InDetDetectorManager::processKey ( const std::string &  key,
const AlignableTransform transformCollection,
GeoVAlignmentStore *  alignStore = nullptr 
) const
privateinherited

Called by processAlignmentContainer, applies only one key on the transform Collections.

Definition at line 332 of file InDetDetectorManager.cxx.

335  {
336  bool alignmentChange = false;
337 
338  // From the key determine what level in hierarchy we are dealing with.
339  // returns -1 if unrecognized.
340  const LevelInfo & levelInfo = getLevel(key);
341  if (levelInfo.isValid()) {
342  ATH_MSG_VERBOSE("Processing channel: " << key);
343  } else {
344  ATH_MSG_DEBUG("Channel " << key << " not registered in this manager");
345  }
346  // return silently if unrecognised - this can happen in container mode
347  // when a single container holds transforms for both pixel and SCT
348  if (!levelInfo.isValid() ) return false;
349 
350  //Loop over the effected nodes.
351  for (AlignableTransform::AlignTransMem_citr trans_iter = transformCollection->begin();
352  trans_iter != transformCollection->end();
353  ++trans_iter) {
354  ATH_MSG_DEBUG( "Get alignment for identifier "
355  << getIdHelper()->show_to_string(trans_iter->identify())
356  << " at level " << levelInfo.level());
357 
358  // The delta in the conditions DB is not necessarily the same as what is needed in the
359  // alignable transform. At the moment we support global frame, local frame or an alternative frame
360  // The setAlignableTransformDelta method takes care of this correction - this is CLHEP <--> Amg interfaced
361  bool status = setAlignableTransformDelta(levelInfo.level(),
362  trans_iter->identify(),
363  Amg::CLHEPTransformToEigen(trans_iter->transform()),
364  levelInfo.frame(),
365  alignStore);
366 
367  alignmentChange = (alignmentChange || status);
368 
369  if (!status) {
370  if (!identifierBelongs(trans_iter->identify())) {
371  // Its probably OK. Eg /Indet/Align/ID contains alse pixel and sct ids.
372  ATH_MSG_DEBUG("Cannot set AlignableTransform for identifier."
373  << " Probably OK if its /Indet/Align/ID folder. "
374  << getIdHelper()->show_to_string(trans_iter->identify())
375  << " at level " << levelInfo.level());
376  } else {
377  if (m_suppressWarnings) {
378  ATH_MSG_DEBUG("WARNING: Cannot set AlignableTransform for identifier "
379  << getIdHelper()->show_to_string(trans_iter->identify())
380  << " at level " << levelInfo.level());
381  } else {
382  ATH_MSG_WARNING("Cannot set AlignableTransform for identifier "
383  << getIdHelper()->show_to_string(trans_iter->identify())
384  << " at level " << levelInfo.level());
385  ATH_MSG_WARNING("Subsequent WARNINGS will be printed at DEBUG level.");
386  m_suppressWarnings = true;
387  }
388  }
389  }
390  }
391  return alignmentChange;
392  }

◆ processSpecialAlignment() [1/2]

bool InDetDD::SCT_DetectorManager::processSpecialAlignment ( const std::string &  key,
const CondAttrListCollection obj = nullptr,
GeoVAlignmentStore *  alignStore = nullptr 
) const
overridevirtual

Comply with InDetDetectorManager interface (not implemented for SCT)

Implements InDetDD::InDetDetectorManager.

Definition at line 455 of file SCT_DetectorManager.cxx.

457  {
458  return false;
459 
460 }

◆ processSpecialAlignment() [2/2]

bool InDetDD::SCT_DetectorManager::processSpecialAlignment ( const std::string &  key,
InDetDD::AlignFolderType  alignfolder 
) const
overridevirtual

Comply with InDetDetectorManager interface (not implemented for SCT)

Implements InDetDD::InDetDetectorManager.

Definition at line 450 of file SCT_DetectorManager.cxx.

451  {
452  return false;
453 }

◆ setAlignableTransformDelta()

bool InDetDD::SCT_DetectorManager::setAlignableTransformDelta ( int  level,
const Identifier id,
const Amg::Transform3D delta,
FrameType  frame,
GeoVAlignmentStore *  alignStore 
) const
overrideprivatevirtual

implements the main alignment update for delta transforms in different frames, it translates into the LocalDelta or GlobalDelta function of SiDetectorManager

Implements InDetDD::SiDetectorManager.

Definition at line 230 of file SCT_DetectorManager.cxx.

235  {
236 
237  if (level == 0) { // 0 - At the element level
238 
239  // We retrieve it via a hashId.
240  IdentifierHash idHash = m_idHelper->wafer_hash(id);
241  if (!idHash.is_valid()) return false;
242 
243  if (frame == InDetDD::global) { // global shift
244  // Its a global transform
245  return setAlignableTransformGlobalDelta(m_alignableTransforms[idHash].get(), delta, alignStore);
246 
247  } else if (frame == InDetDD::local) { // local shift
248 
249  SiDetectorElement * element = m_elementCollection[idHash];
250  if (!element) return false;
251 
252 
253  // Its a local transform
254  //See header file for definition of m_isLogical
255  if( m_isLogical ){
256  //Ensure cache is up to date and use the alignment corrected local to global transform
257  element->setCache();
258  return setAlignableTransformLocalDelta(m_alignableTransforms[idHash].get(), element->transform(), delta, alignStore);
259  } else
260  //Use default local to global transform
261  return setAlignableTransformLocalDelta(m_alignableTransforms[idHash].get(), element->defTransform(), delta, alignStore);
262 
263  } else {
264  // other not supported
265  ATH_MSG_WARNING("Frames other than global or local are not supported.");
266  return false;
267  }
268 
269  } else if (level == 1) { // module level
270 
271  // We retrieve it via a hashId.
272  IdentifierHash idHash = m_idHelper->wafer_hash(id);
273  if (!idHash.is_valid()) return false;
274 
275  int idModuleHash = idHash / 2;
276 
277  if (idHash%2) {
278  ATH_MSG_WARNING("Side 1 wafer id used for module id");
279  return false;
280  }
281 
282  if (frame == InDetDD::global) { // global shift
283  // Its a global transform
284  return setAlignableTransformGlobalDelta(m_moduleAlignableTransforms[idModuleHash].get(), delta, alignStore);
285  } else if (frame == InDetDD::local) { // local shift
286  SiDetectorElement * element = m_elementCollection[idHash];
287  if (!element) return false;
288 
289  // Its a local transform
290  //See header file for definition of m_isLogical
291  if( m_isLogical ){
292  //Ensure cache is up to date and use the alignment corrected local to global transform
293  element->setCache();
294  return setAlignableTransformLocalDelta(m_moduleAlignableTransforms[idModuleHash].get(), element->moduleTransform(), delta, alignStore);
295  } else
296  //Use default local to global transform
297  return setAlignableTransformLocalDelta(m_moduleAlignableTransforms[idModuleHash].get(), element->defModuleTransform(), delta, alignStore);
298 
299  } else {
300  // other not supported
301  ATH_MSG_WARNING("Frames other than global or local are not supported.");
302  return false;
303  }
304 
305  } else { // higher level
306 
307  if (frame != InDetDD::global) {
308  ATH_MSG_WARNING("Non global shift at higher levels is not supported.");
309  return false;
310  }
311 
312  int index = level - FIRST_HIGHER_LEVEL; // level 0 and 1 is treated separately.
313  if (index >= static_cast<int>(m_higherAlignableTransforms.size())) return false;
314 
315  // We retrieve it from a map.
316  AlignableTransformMap::const_iterator iter;
317  iter = m_higherAlignableTransforms[index].find(id);
318  if (iter == m_higherAlignableTransforms[index].end()) return false;
319 
320  // Its a global transform
321  return setAlignableTransformGlobalDelta((iter->second).get(), delta, alignStore);
322  }
323 
324  }

◆ setAlignableTransformGlobalDelta()

bool InDetDD::SiDetectorManager::setAlignableTransformGlobalDelta ( ExtendedAlignableTransform extXF,
const Amg::Transform3D delta,
GeoVAlignmentStore *  alignStore = nullptr 
)
staticinherited

Helper method to set delta transform from a global delta - Amg interface.

Definition at line 101 of file SiDetectorManager.cxx.

103  {
104  // ATTENTION -------------------------------------------------------- (A.S.)
105  // CLHEP < -- > AMG interface method
106 
107  // Sets the alignable transform delta when the supplied delta is in the global frame.
108 
109  // If the default transform down to the alignable transform is
110  // T = A*B*C
111  // and the alignable transform is C with delta c and the delta in the global frame is g, then
112  // A*B*C*c = g*A*B*C
113  // T*c = g*T
114  // c = T.inverse() * g * T
115 
116  // To get default transform up and including the alignable transform,
117  // we assume the next volume down is a fullphys volume and so its
118  // transform is the transform we want (ie T=A*B*C in the above example).
119 
120 
121  if (!extXF) return false;
122 
123  const GeoVFullPhysVol * child = extXF->child();
124  if (child && extXF->alignableTransform()) {
125  // do the calculation in CLHEP
126  const GeoTrf::Transform3D& transform = child->getDefAbsoluteTransform(alignStore);
127  extXF->alignableTransform()->setDelta(transform.inverse() * delta * transform, alignStore);
128  return true;
129  } else {
130  return false;
131  }
132  }

◆ setAlignableTransformLocalDelta()

bool InDetDD::SiDetectorManager::setAlignableTransformLocalDelta ( ExtendedAlignableTransform extXF,
const Amg::Transform3D localToGlobalXF,
const Amg::Transform3D delta,
GeoVAlignmentStore *  alignStore = nullptr 
)
staticinherited

Helper method to set delta transform from a local delta - Amg interface.

Definition at line 62 of file SiDetectorManager.cxx.

66  {
67  // ATTENTION -------------------------------------------------------- (A.S.)
68  // CLHEP < -- > AMG interface method
69 
70  // Sets the alignable transform delta when the supplied delta is in the local
71  // reconstruction frame
72 
73  // If the default transform to the local recostruction frame is
74  // T = A*B*C*D*E
75  // and the alignable transform is C with delta c and the delat in the local frame is l, then
76  // A*B*C*c*D*E = A*B*C*D*E*l
77  // c = (D*E) * l * (D*E).inverse()
78  // c = (A*B*C).inverse * T * l * T.inverse() * (A*B*C)
79 
80  // To get default transform up and including the alignable transform,
81  // we assume the next volume down is a fullphys volume and so its
82  // transform is the transform we want (ie A*B*C in the above example).
83 
84  if (!extXF) return false;
85 
86  const GeoVFullPhysVol* child = extXF->child();
87  if (child && extXF->alignableTransform()) {
88  // the definitiv absolut transform is in CLHEP -> do the calculation in CLHEP
89  const GeoTrf::Transform3D& transform = child->getDefAbsoluteTransform(alignStore);
90  // calucluate the corrected delta according to the formula above
91  GeoTrf::Transform3D correctedDelta = transform.inverse()*localToGlobalXF // (A*B*C).inverse() * T
92  * delta // l
93  * localToGlobalXF.inverse() * transform; // T.inverse() * (A*B*C)
94  extXF->alignableTransform()->setDelta(correctedDelta, alignStore);
95  return true;
96  } else {
97  return false;
98  }
99  }

◆ setCommonItems()

void InDetDD::SiDetectorManager::setCommonItems ( std::unique_ptr< const SiCommonItems > &&  commonItems)
inherited

Set SiCommonItems.

Definition at line 151 of file SiDetectorManager.cxx.

152  {
153  m_commonItems = std::move(commonItems);
154  }

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

◆ setVersion()

void InDetDD::InDetDetectorManager::setVersion ( const Version version)
inherited

Definition at line 43 of file InDetDetectorManager.cxx.

44  {
46 
47  // Since default alignments are for final layout, Pixel Rome-Initial
48  // layout will result in several (harmless) WARNING message. We suppress these.
49  // Also the SR1 layout produce warnings due to missing parts. We suppress these also.
50  m_suppressWarnings = ( (getName() == "Pixel" &&
51  (version.tag() == "Pixel-01" || version.tag() == "Pixel-DC2-Initial-00"))
52  || version.layout() == "SR1" || version.layout() == "SR1-EndcapC");
53 
54  }

◆ tag()

const std::string & InDetDD::SiDetectorManager::tag ( ) const
inherited

Get tag used in dictionary.

Definition at line 34 of file SiDetectorManager.cxx.

35  {
36  return m_tag;
37  }

◆ updateAll()

void InDetDD::SiDetectorManager::updateAll ( ) const
virtualinherited

Update all caches.

Implements InDetDD::InDetDetectorManager.

Definition at line 51 of file SiDetectorManager.cxx.

52  {
53  for (SiDetectorElementCollection::const_iterator element_iter = getDetectorElementBegin();
54  element_iter != getDetectorElementEnd();
55  ++element_iter) {
56  if (*element_iter) {
57  (*element_iter)->setCache();
58  }
59  }
60  }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_alignableTransforms

std::vector<std::unique_ptr<ExtendedAlignableTransform> > InDetDD::SCT_DetectorManager::m_alignableTransforms
private

Definition at line 177 of file SCT_DetectorManager.h.

◆ m_alignfoldertype

AlignFolderType InDetDD::InDetDetectorManager::m_alignfoldertype
inherited

Definition at line 96 of file InDetDetectorManager.h.

◆ m_commonItems

std::unique_ptr<const SiCommonItems> InDetDD::SiDetectorManager::m_commonItems
privateinherited

Definition at line 149 of file SiDetectorManager.h.

◆ m_designs

std::vector<std::unique_ptr<const SiDetectorDesign> > InDetDD::SiDetectorManager::m_designs
privateinherited

Definition at line 148 of file SiDetectorManager.h.

◆ m_detStore

StoreGateSvc* InDetDD::InDetDetectorManager::m_detStore
protectedinherited

Definition at line 99 of file InDetDetectorManager.h.

◆ m_doEndcapEtaNeighbour

bool InDetDD::SCT_DetectorManager::m_doEndcapEtaNeighbour
private

Definition at line 190 of file SCT_DetectorManager.h.

◆ m_elementCollection

SiDetectorElementCollection InDetDD::SCT_DetectorManager::m_elementCollection
private

Definition at line 174 of file SCT_DetectorManager.h.

◆ m_folders

std::set<std::string> InDetDD::InDetDetectorManager::m_folders
privateinherited

Definition at line 180 of file InDetDetectorManager.h.

◆ m_globalFolders

std::set<std::string> InDetDD::InDetDetectorManager::m_globalFolders
privateinherited

Definition at line 182 of file InDetDetectorManager.h.

◆ m_higherAlignableTransforms

std::vector<AlignableTransformMap> InDetDD::SCT_DetectorManager::m_higherAlignableTransforms
private

Definition at line 176 of file SCT_DetectorManager.h.

◆ m_idHelper

const SCT_ID* InDetDD::SCT_DetectorManager::m_idHelper
private

Definition at line 179 of file SCT_DetectorManager.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_isLogical

bool InDetDD::SCT_DetectorManager::m_isLogical
private

This variable switches the how the local alignment corrections are applied If true they will be calcualted on top of all of other corrections but in the default reference frame If false they will be calcualted on top of all of other corrections but in the globally aligned reference frame.

Definition at line 187 of file SCT_DetectorManager.h.

◆ m_keys

std::map<std::string, LevelInfo> InDetDD::InDetDetectorManager::m_keys
privateinherited

Definition at line 179 of file InDetDetectorManager.h.

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_moduleAlignableTransforms

std::vector<std::unique_ptr<ExtendedAlignableTransform> > InDetDD::SCT_DetectorManager::m_moduleAlignableTransforms
private

Definition at line 178 of file SCT_DetectorManager.h.

◆ m_motherDesigns

std::vector<std::unique_ptr<const SCT_ModuleSideDesign> > InDetDD::SCT_DetectorManager::m_motherDesigns
private

Definition at line 180 of file SCT_DetectorManager.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_numerology

SiNumerology InDetDD::SiDetectorManager::m_numerology
privateinherited

Definition at line 147 of file SiDetectorManager.h.

◆ m_specialFolders

std::set<std::string> InDetDD::InDetDetectorManager::m_specialFolders
privateinherited

Definition at line 181 of file InDetDetectorManager.h.

◆ m_suppressWarnings

std::atomic_bool InDetDD::InDetDetectorManager::m_suppressWarnings
mutableprotectedinherited

Definition at line 100 of file InDetDetectorManager.h.

◆ m_tag

std::string InDetDD::SiDetectorManager::m_tag
privateinherited

Definition at line 146 of file SiDetectorManager.h.

◆ m_version

Version InDetDD::InDetDetectorManager::m_version
privateinherited

Definition at line 178 of file InDetDetectorManager.h.

◆ m_volume

std::vector<PVConstLink> InDetDD::SCT_DetectorManager::m_volume
private

Definition at line 173 of file SCT_DetectorManager.h.

◆ s_invalidLevel

const InDetDetectorManager::LevelInfo InDetDD::InDetDetectorManager::s_invalidLevel
staticprivateinherited

Definition at line 184 of file InDetDetectorManager.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
InDetDD::SCT_DetectorManager::m_higherAlignableTransforms
std::vector< AlignableTransformMap > m_higherAlignableTransforms
Definition: SCT_DetectorManager.h:176
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
SCT_ID::get_next_in_phi
int get_next_in_phi(const IdentifierHash &id, IdentifierHash &next) const
Next wafer hash in phi (return == 0 for neighbor found)
Definition: SCT_ID.cxx:413
CondAttrListCollection::end
const_iterator end() const
Definition: CondAttrListCollection.h:315
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
InDetDD::SiDetectorManager::m_tag
std::string m_tag
Definition: SiDetectorManager.h:146
get_generator_info.result
result
Definition: get_generator_info.py:21
InDetDD::SCT_DetectorManager::getStripEndcapEtaNeighbour
int getStripEndcapEtaNeighbour(const SiDetectorElement *element, IdentifierHash &idHashNeighbour, const bool phi_plus_one=false) const
Definition: SCT_DetectorManager.cxx:165
InDetDD::SCT_DetectorManager::SCT_DetectorManager
SCT_DetectorManager(StoreGateSvc *detStore)
Constructor.
Definition: SCT_DetectorManager.cxx:25
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
InDetDD::SCT_DetectorManager::m_moduleAlignableTransforms
std::vector< std::unique_ptr< ExtendedAlignableTransform > > m_moduleAlignableTransforms
Definition: SCT_DetectorManager.h:178
SCT_ID::get_prev_in_phi
int get_prev_in_phi(const IdentifierHash &id, IdentifierHash &prev) const
Previous wafer hash in phi (return == 0 for neighbor found)
Definition: SCT_ID.cxx:403
InDetDD::InDetDetectorManager::identifierBelongs
virtual bool identifierBelongs(const Identifier &id) const =0
Check identifier is for this detector.
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
InDetDD::SiDetectorManager::SiDetectorManager
SiDetectorManager(StoreGateSvc *detStore, const std::string &name)
Definition: SiDetectorManager.cxx:27
InDetDD::SCT_DetectorManager::m_motherDesigns
std::vector< std::unique_ptr< const SCT_ModuleSideDesign > > m_motherDesigns
Definition: SCT_DetectorManager.h:180
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:770
index
Definition: index.py:1
InDetDD::SiDetectorManager::m_designs
std::vector< std::unique_ptr< const SiDetectorDesign > > m_designs
Definition: SiDetectorManager.h:148
CondMultChanCollection
A CondMultChanCollection is a template class which can hold a collection of T* objects which are inte...
Definition: CondMultChanCollection.h:52
AlignableTransform::AlignTransMem_citr
std::vector< AlignTransMember >::const_iterator AlignTransMem_citr
Definition: AlignableTransform.h:46
InDetDD::SiDetectorManager::setAlignableTransformLocalDelta
static bool setAlignableTransformLocalDelta(ExtendedAlignableTransform *extXF, const Amg::Transform3D &localToGlobalXF, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore=nullptr)
Helper method to set delta transform from a local delta - Amg interface.
Definition: SiDetectorManager.cxx:62
InDetDD::InDetDetectorManager::getIdHelper
virtual const AtlasDetectorID * getIdHelper() const =0
InDetDD::SCT_DetectorManager::m_isLogical
bool m_isLogical
This variable switches the how the local alignment corrections are applied If true they will be calcu...
Definition: SCT_DetectorManager.h:187
InDetDD::SCT_DetectorManager::setAlignableTransformDelta
virtual bool setAlignableTransformDelta(int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const override
implements the main alignment update for delta transforms in different frames, it translates into the...
Definition: SCT_DetectorManager.cxx:230
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
InDetDD::InDetDetectorManager::m_suppressWarnings
std::atomic_bool m_suppressWarnings
Definition: InDetDetectorManager.h:100
CondAttrListCollection::begin
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
Definition: CondAttrListCollection.h:309
athena.value
value
Definition: athena.py:124
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
SCT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: SCT_ID.h:740
InDetDD::global
@ global
Definition: InDetDD_Defs.h:16
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
InDetDD::Version::layout
const std::string & layout() const
Layout (eg Initial, Final, TestBeam)
Definition: Version.cxx:50
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
InDetDD::SCT_DetectorManager::m_idHelper
const SCT_ID * m_idHelper
Definition: SCT_DetectorManager.h:179
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.mrad
int mrad
Definition: SystemOfUnits.py:112
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
InDetDD::SCT_DetectorManager::getDetectorElement
virtual SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements via Identifier
Definition: SCT_DetectorManager.cxx:66
InDetDD::InDetDetectorManager::m_keys
std::map< std::string, LevelInfo > m_keys
Definition: InDetDetectorManager.h:179
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
InDetDD::InDetDetectorManager::getLevel
const LevelInfo & getLevel(const std::string &key) const
Retrieve level information.
Definition: InDetDetectorManager.cxx:87
dumpTruth.getName
getName
Definition: dumpTruth.py:34
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
InDetDD::SCT_DetectorManager::getIdHelper
virtual const SCT_ID * getIdHelper() const override
Definition: SCT_DetectorManager.cxx:224
InDetDD::SiDetectorManager::setAlignableTransformGlobalDelta
static bool setAlignableTransformGlobalDelta(ExtendedAlignableTransform *extXF, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore=nullptr)
Helper method to set delta transform from a global delta - Amg interface.
Definition: SiDetectorManager.cxx:101
StoreGateSvc::retrieve
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
TRT::Hit::side
@ side
Definition: HitInfo.h:83
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:182
lumiFormat.i
int i
Definition: lumiFormat.py:85
InDetDD::SCT_DetectorManager::m_alignableTransforms
std::vector< std::unique_ptr< ExtendedAlignableTransform > > m_alignableTransforms
Definition: SCT_DetectorManager.h:177
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AlignableTransform::end
AlignTransMem_citr end() const
Definition: AlignableTransform.h:106
InDetDD::SiDetectorManager::getDesign
const SiDetectorDesign * getDesign(int i) const
Definition: SiDetectorManager.cxx:146
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
InDetDD::InDetDetectorManager::m_globalFolders
std::set< std::string > m_globalFolders
Definition: InDetDetectorManager.h:182
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
InDetDD::FIRST_HIGHER_LEVEL
const int FIRST_HIGHER_LEVEL
Definition: PixelDetectorManager.cxx:22
InDetDD::InDetDetectorManager::s_invalidLevel
static const LevelInfo s_invalidLevel
Definition: InDetDetectorManager.h:184
SCT_ID::wafer_hash
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
Definition: SCT_ID.h:492
SCT_ID::get_other_side
int get_other_side(const IdentifierHash &id, IdentifierHash &other) const
Wafer hash on other side.
Definition: SCT_ID.cxx:443
InDetDD::InDetDetectorManager::m_detStore
StoreGateSvc * m_detStore
Definition: InDetDetectorManager.h:99
InDetDD::InDetDetectorManager::setAlignableTransformDelta
virtual bool setAlignableTransformDelta(int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore=nullptr) const =0
Set method applying the delta transform (in global or local frame) onto the geoModel transform : CLHE...
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
IdentifierHash::is_valid
bool is_valid() const
Check if id is in a valid state.
InDetDD::local
@ local
Definition: InDetDD_Defs.h:16
dso-stats.pat
pat
Definition: dso-stats.py:39
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
InDetDD::InDetDetectorManager::m_folders
std::set< std::string > m_folders
Definition: InDetDetectorManager.h:180
InDetDD::SCT_DetectorManager::m_elementCollection
SiDetectorElementCollection m_elementCollection
Definition: SCT_DetectorManager.h:174
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
InDetDD::SiDetectorManager::isPixel
virtual bool isPixel() const =0
Methods to query which manager we have.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
SCT_ID::wafer_hash_max
size_type wafer_hash_max(void) const
Definition: SCT_ID.cxx:645
InDetDD::SCT_DetectorManager::m_volume
std::vector< PVConstLink > m_volume
Definition: SCT_DetectorManager.h:173
InDetDD::SiDetectorManager::m_numerology
SiNumerology m_numerology
Definition: SiDetectorManager.h:147
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
InDetDD::InDetDetectorManager::processGlobalAlignment
virtual bool processGlobalAlignment(const std::string &key, int level, FrameType frame, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const
Definition: InDetDetectorManager.cxx:424
TRT::Hit::ident
@ ident
Definition: HitInfo.h:77
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDetDD::InDetDetectorManager::processKey
bool processKey(const std::string &key, const AlignableTransform *transformCollection, GeoVAlignmentStore *alignStore=nullptr) const
Called by processAlignmentContainer, applies only one key on the transform Collections.
Definition: InDetDetectorManager.cxx:332
SCT_ID::get_prev_in_eta
int get_prev_in_eta(const IdentifierHash &id, IdentifierHash &prev) const
Previous wafer hash in eta (return == 0 for neighbor found)
Definition: SCT_ID.cxx:423
SCT_ID::get_next_in_eta
int get_next_in_eta(const IdentifierHash &id, IdentifierHash &next) const
Next wafer hash in eta (return == 0 for neighbor found)
Definition: SCT_ID.cxx:433
get_generator_info.version
version
Definition: get_generator_info.py:33
DeMoScan.index
string index
Definition: DeMoScan.py:364
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition: CondAttrListCollection.h:63
Amg::CLHEPTransformToEigen
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
Definition: CLHEPtoEigenConverter.h:38
InDetDD::InDetDetectorManager::m_specialFolders
std::set< std::string > m_specialFolders
Definition: InDetDetectorManager.h:181
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:342
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
SCT_ID::eta_module
int eta_module(const Identifier &id) const
Definition: SCT_ID.h:746
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
InDetDD::InDetDetectorManager::processAlignmentContainer
bool processAlignmentContainer(const std::string &key) const
return align folder string to use
Definition: InDetDetectorManager.cxx:279
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
InDetDD::InDetDetectorManager::m_version
Version m_version
Definition: InDetDetectorManager.h:178
InDetDD::InDetDetectorManager::processGlobalAlignmentContainer
bool processGlobalAlignmentContainer(const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const
Definition: InDetDetectorManager.cxx:395
InDetDD::InDetDetectorManager::m_alignfoldertype
AlignFolderType m_alignfoldertype
Definition: InDetDetectorManager.h:96
SCT_ID::side
int side(const Identifier &id) const
Definition: SCT_ID.h:752
Amg::AngleAxis3D
Eigen::AngleAxisd AngleAxis3D
Definition: GeoPrimitives.h:45
InDetDD::SiDetectorManager::getDetectorElementEnd
virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const =0
merge.status
status
Definition: merge.py:17
AlignableTransform::begin
AlignTransMem_citr begin() const
Definition: AlignableTransform.h:104
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
SCT_ID::wafer_id
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
Definition: SCT_ID.h:464
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
InDetDD::SiDetectorManager::getDetectorElementBegin
virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin() const =0
InDetDD::SCT_DetectorManager::m_doEndcapEtaNeighbour
bool m_doEndcapEtaNeighbour
Definition: SCT_DetectorManager.h:190
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
python.PyAthena.obj
obj
Definition: PyAthena.py:132
InDetDD::SiDetectorManager::m_commonItems
std::unique_ptr< const SiCommonItems > m_commonItems
Definition: SiDetectorManager.h:149
InDetDD::InDetDetectorManager::processSpecialAlignment
virtual bool processSpecialAlignment(const std::string &key, InDetDD::AlignFolderType alignfolder) const =0
Definition: InDetDetectorManager.cxx:432
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14