|
ATLAS Offline Software
|
#include <SiDetectorManager.h>
|
const SiDetectorManager & | operator= (const SiDetectorManager &right) |
|
| SiDetectorManager (const SiDetectorManager &right) |
|
virtual bool | setAlignableTransformDelta (int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const =0 |
| This method is called by the InDetDetectorManager. More...
|
|
const LevelInfo & | getLevel (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...
|
|
virtual bool | processSpecialAlignment (const std::string &key, InDetDD::AlignFolderType alignfolder) const =0 |
|
virtual bool | processSpecialAlignment (const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const =0 |
|
bool | processGlobalAlignmentContainer (const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const |
|
virtual bool | processGlobalAlignment (const std::string &key, int level, FrameType frame, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const |
|
virtual const AtlasDetectorID * | getIdHelper () const =0 |
|
void | initMessaging () const |
| Initialize our message level and MessageSvc. More...
|
|
Base class for Pixel and SCT Detector managers.
The Detector manager has methods to retrieve the Identifier helper and methods to retrieve the detector elements. It also manages the alignment with methods to register the call backs and infrastructure to associate the alignment transforms with the appropriate alignable transform in GeoModel. There is also access to the layout (Initial, Final, TestBeam) and and version information.
- Author
- : Grant Gorfine
- modified and maintained by Nick Styles & Andreas Salzburger
Definition at line 60 of file SiDetectorManager.h.
◆ SiDetectorManager() [1/2]
InDetDD::SiDetectorManager::SiDetectorManager |
( |
StoreGateSvc * |
detStore, |
|
|
const std::string & |
name |
|
) |
| |
◆ ~SiDetectorManager()
InDetDD::SiDetectorManager::~SiDetectorManager |
( |
| ) |
|
|
virtualdefault |
◆ SiDetectorManager() [2/2]
◆ addAlignableTransform()
virtual void InDetDD::SiDetectorManager::addAlignableTransform |
( |
int |
level, |
|
|
const Identifier & |
id, |
|
|
GeoAlignableTransform * |
xf |
|
) |
| |
|
pure virtual |
◆ addAlignFolderType()
◆ addChannel()
void InDetDD::InDetDetectorManager::addChannel |
( |
const std::string & |
key, |
|
|
int |
level, |
|
|
FrameType |
frame |
|
) |
| |
|
inherited |
Alignment access.
Definition at line 56 of file InDetDetectorManager.cxx.
58 std::string frameStr =
"other";
62 <<
", with frame " << frameStr <<
".");
◆ addDesign()
◆ addDetectorElement()
virtual void InDetDD::SiDetectorManager::addDetectorElement |
( |
SiDetectorElement * |
element | ) |
|
|
pure virtual |
◆ addFolder()
void InDetDD::InDetDetectorManager::addFolder |
( |
const std::string & |
key | ) |
|
|
inherited |
◆ addGlobalFolder()
void InDetDD::InDetDetectorManager::addGlobalFolder |
( |
const std::string & |
key | ) |
|
|
inherited |
◆ addSpecialFolder()
void InDetDD::InDetDetectorManager::addSpecialFolder |
( |
const std::string & |
key | ) |
|
|
inherited |
◆ align() [1/2]
StatusCode InDetDD::InDetDetectorManager::align |
( |
const RawAlignmentObjects & |
alignObjects, |
|
|
GeoVAlignmentStore * |
alignStore |
|
) |
| const |
|
inherited |
Definition at line 208 of file InDetDetectorManager.cxx.
214 bool alignmentChange =
false;
217 for(
const auto& alignObj : alignObjects) {
218 const std::string&
key = alignObj.first;
227 alignmentChange = (alignmentChange ||
status);
228 }
catch(std::runtime_error&
err) {
231 return StatusCode::FAILURE;
239 alignmentChange = (alignmentChange ||
status);
240 }
catch(std::runtime_error&
err) {
243 return StatusCode::FAILURE;
252 alignmentChange = (alignmentChange ||
status);
254 catch(std::runtime_error&
err) {
258 return StatusCode::FAILURE;
268 return StatusCode::RECOVERABLE;
276 return StatusCode::SUCCESS;
◆ align() [2/2]
◆ getDesign()
◆ getDetectorElement() [1/2]
◆ getDetectorElement() [2/2]
◆ getDetectorElementBegin()
virtual SiDetectorElementCollection::const_iterator InDetDD::SiDetectorManager::getDetectorElementBegin |
( |
| ) |
const |
|
pure virtual |
◆ getDetectorElementCollection()
◆ getDetectorElementEnd()
virtual SiDetectorElementCollection::const_iterator InDetDD::SiDetectorManager::getDetectorElementEnd |
( |
| ) |
const |
|
pure virtual |
◆ getIdHelper()
|
privatepure virtualinherited |
◆ getLayout()
const std::string & InDetDD::InDetDetectorManager::getLayout |
( |
| ) |
const |
|
inherited |
◆ getLevel()
Retrieve level information.
Definition at line 87 of file InDetDetectorManager.cxx.
89 std::map<std::string, LevelInfo>::const_iterator iter;
◆ getVersion()
const Version & InDetDD::InDetDetectorManager::getVersion |
( |
| ) |
const |
|
inherited |
◆ identifierBelongs()
virtual bool InDetDD::InDetDetectorManager::identifierBelongs |
( |
const Identifier & |
id | ) |
const |
|
pure virtualinherited |
◆ 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.
◆ initNeighbours()
virtual void InDetDD::SiDetectorManager::initNeighbours |
( |
| ) |
|
|
pure virtual |
◆ invalidateAll()
void InDetDD::SiDetectorManager::invalidateAll |
( |
| ) |
const |
|
virtual |
◆ isPixel()
virtual bool InDetDD::SiDetectorManager::isPixel |
( |
| ) |
const |
|
pure virtual |
◆ isSCT()
bool InDetDD::SiDetectorManager::isSCT |
( |
| ) |
const |
|
inline |
◆ 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.
◆ 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
-
lvl | The message level to test against |
- Returns
- boolean Indicating if messages at given level will be printed
- Return values
-
true | Messages at level "lvl" will be printed |
Definition at line 151 of file AthMessaging.h.
◆ numDesigns()
int InDetDD::SiDetectorManager::numDesigns |
( |
| ) |
const |
◆ numerology() [1/2]
◆ numerology() [2/2]
◆ operator=()
◆ processAlignmentContainer() [1/2]
Definition at line 307 of file InDetDetectorManager.cxx.
309 bool alignmentChange =
false;
312 if (container->
empty()) {
314 <<
" is empty. Probably due to out of range IOV");
316 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
321 std::map<const std::string, const AlignableTransform*> stringToTransform;
322 for (
const auto *
pat : *container) {
323 stringToTransform[
pat->tag()] =
pat;
325 for (
const std::pair<const std::string, const AlignableTransform*>&
value: stringToTransform) {
327 alignmentChange = (alignmentChange ||
status);
329 return alignmentChange;
◆ 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.
281 bool alignmentChange =
false;
286 ATH_MSG_ERROR(
"Cannot find AlignableTransformContainer for key "
287 <<
key <<
" - no misalignment");
289 throw std::runtime_error(
"Unable to apply Inner Detector alignments");
292 if (container->
empty()) {
294 <<
key <<
" is empty. Probably due to out of range IOV");
296 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
299 for (
const auto *
pat : *container) {
302 alignmentChange = (alignmentChange ||
status);
304 return alignmentChange;
◆ processGlobalAlignment()
bool InDetDD::InDetDetectorManager::processGlobalAlignment |
( |
const std::string & |
key, |
|
|
int |
level, |
|
|
FrameType |
frame, |
|
|
const CondAttrListCollection * |
obj = nullptr , |
|
|
GeoVAlignmentStore * |
alignStore = nullptr |
|
) |
| const |
|
privatevirtualinherited |
◆ 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.
399 bool alignmentChange =
false;
405 if (levelInfo.isValid()) {
412 if (!levelInfo.isValid() )
return false;
417 alignmentChange = (alignmentChange ||
status);
419 return alignmentChange;
◆ 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.
336 bool alignmentChange =
false;
341 if (levelInfo.isValid()) {
348 if (!levelInfo.isValid() )
return false;
352 trans_iter != transformCollection->
end();
355 <<
getIdHelper()->show_to_string(trans_iter->identify())
356 <<
" at level " << levelInfo.level());
362 trans_iter->identify(),
367 alignmentChange = (alignmentChange ||
status);
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());
378 ATH_MSG_DEBUG(
"WARNING: Cannot set AlignableTransform for identifier "
379 <<
getIdHelper()->show_to_string(trans_iter->identify())
380 <<
" at level " << levelInfo.level());
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.");
391 return alignmentChange;
◆ processSpecialAlignment() [1/2]
virtual bool InDetDD::InDetDetectorManager::processSpecialAlignment |
( |
const std::string & |
key, |
|
|
const CondAttrListCollection * |
obj = nullptr , |
|
|
GeoVAlignmentStore * |
alignStore = nullptr |
|
) |
| const |
|
privatepure virtualinherited |
◆ processSpecialAlignment() [2/2]
|
privatepure virtualinherited |
◆ setAlignableTransformDelta()
◆ setAlignableTransformGlobalDelta()
Helper method to set delta transform from a global delta - Amg interface.
Definition at line 101 of file SiDetectorManager.cxx.
121 if (!extXF)
return false;
123 const GeoVFullPhysVol * child = extXF->child();
124 if (child && extXF->alignableTransform()) {
127 extXF->alignableTransform()->setDelta(
transform.inverse() * delta *
transform, alignStore);
◆ setAlignableTransformLocalDelta()
Helper method to set delta transform from a local delta - Amg interface.
Definition at line 62 of file SiDetectorManager.cxx.
84 if (!extXF)
return false;
86 const GeoVFullPhysVol* child = extXF->child();
87 if (child && extXF->alignableTransform()) {
94 extXF->alignableTransform()->setDelta(correctedDelta, alignStore);
◆ setCommonItems()
void InDetDD::SiDetectorManager::setCommonItems |
( |
std::unique_ptr< const SiCommonItems > && |
commonItems | ) |
|
◆ setLevel()
void AthMessaging::setLevel |
( |
MSG::Level |
lvl | ) |
|
|
inherited |
◆ setVersion()
void InDetDD::InDetDetectorManager::setVersion |
( |
const Version & |
version | ) |
|
|
inherited |
◆ tag()
const std::string & InDetDD::SiDetectorManager::tag |
( |
| ) |
const |
◆ updateAll()
void InDetDD::SiDetectorManager::updateAll |
( |
| ) |
const |
|
virtual |
◆ ATLAS_THREAD_SAFE
std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_alignfoldertype
◆ m_commonItems
◆ m_designs
◆ m_detStore
◆ m_folders
std::set<std::string> InDetDD::InDetDetectorManager::m_folders |
|
privateinherited |
◆ m_globalFolders
std::set<std::string> InDetDD::InDetDetectorManager::m_globalFolders |
|
privateinherited |
◆ m_imsg
std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_keys
std::map<std::string, LevelInfo> InDetDD::InDetDetectorManager::m_keys |
|
privateinherited |
◆ m_lvl
std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL } |
|
mutableprivateinherited |
◆ 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 |
◆ m_numerology
◆ m_specialFolders
std::set<std::string> InDetDD::InDetDetectorManager::m_specialFolders |
|
privateinherited |
◆ m_suppressWarnings
std::atomic_bool InDetDD::InDetDetectorManager::m_suppressWarnings |
|
mutableprotectedinherited |
◆ m_tag
std::string InDetDD::SiDetectorManager::m_tag |
|
private |
◆ m_version
Version InDetDD::InDetDetectorManager::m_version |
|
privateinherited |
◆ s_invalidLevel
The documentation for this class was generated from the following files:
std::atomic< MSG::Level > m_lvl
Current logging level.
virtual bool identifierBelongs(const Identifier &id) const =0
Check identifier is for this detector.
std::vector< std::unique_ptr< const SiDetectorDesign > > m_designs
A CondMultChanCollection is a template class which can hold a collection of T* objects which are inte...
virtual const AtlasDetectorID * getIdHelper() const =0
std::atomic_bool m_suppressWarnings
const std::string & layout() const
Layout (eg Initial, Final, TestBeam)
#define ATH_MSG_VERBOSE(x)
This class is a collection of AttributeLists where each one is associated with a channel number....
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::map< std::string, LevelInfo > m_keys
IMessageSvc * getMessageSvc(bool quiet=false)
const LevelInfo & getLevel(const std::string &key) const
Retrieve level information.
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
Eigen::Affine3d Transform3D
std::set< std::string > m_globalFolders
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
static const LevelInfo s_invalidLevel
StoreGateSvc * m_detStore
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...
MsgStream & msg() const
The standard message stream.
std::set< std::string > m_folders
virtual bool isPixel() const =0
Methods to query which manager we have.
SiNumerology m_numerology
virtual bool processGlobalAlignment(const std::string &key, int level, FrameType frame, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) 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.
#define ATH_MSG_WARNING(x)
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
std::set< std::string > m_specialFolders
std::string m_nm
Message source name.
bool processAlignmentContainer(const std::string &key) const
return align folder string to use
bool processGlobalAlignmentContainer(const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const
AlignFolderType m_alignfoldertype
virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const =0
InDetDetectorManager(StoreGateSvc *detStore, const std::string &name)
void initMessaging() const
Initialize our message level and MessageSvc.
virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin() const =0
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
std::unique_ptr< const SiCommonItems > m_commonItems
virtual bool processSpecialAlignment(const std::string &key, InDetDD::AlignFolderType alignfolder) const =0
bool empty() const noexcept
Returns true if the collection is empty.