 |
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)=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 209 of file InDetDetectorManager.cxx.
215 bool alignmentChange =
false;
218 for(
const auto& alignObj : alignObjects) {
219 const std::string&
key = alignObj.first;
228 alignmentChange = (alignmentChange ||
status);
229 }
catch(std::runtime_error&
err) {
232 return StatusCode::FAILURE;
240 alignmentChange = (alignmentChange ||
status);
241 }
catch(std::runtime_error&
err) {
244 return StatusCode::FAILURE;
253 alignmentChange = (alignmentChange ||
status);
255 catch(std::runtime_error&
err) {
259 return StatusCode::FAILURE;
269 return StatusCode::RECOVERABLE;
272 return StatusCode::SUCCESS;
◆ align() [2/2]
◆ getDesign()
◆ getDetectorElement() [1/2]
◆ getDetectorElement() [2/2]
◆ getDetectorElementBegin() [1/2]
◆ getDetectorElementBegin() [2/2]
◆ getDetectorElementCollection()
◆ getDetectorElementEnd() [1/2]
◆ getDetectorElementEnd() [2/2]
◆ getIdHelper()
|
privatepure virtualinherited |
◆ getLayout()
const std::string & InDetDD::InDetDetectorManager::getLayout |
( |
| ) |
const |
|
inherited |
◆ getLevel()
◆ 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 |
( |
| ) |
|
|
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 303 of file InDetDetectorManager.cxx.
305 bool alignmentChange =
false;
308 if (container->
empty()) {
310 <<
" is empty. Probably due to out of range IOV");
312 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
317 std::map<const std::string, const AlignableTransform*> stringToTransform;
318 for (
const auto *
pat : *container) {
319 stringToTransform[
pat->tag()] =
pat;
321 for (
const std::pair<const std::string, const AlignableTransform*>&
value: stringToTransform) {
323 alignmentChange = (alignmentChange ||
status);
325 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 275 of file InDetDetectorManager.cxx.
277 bool alignmentChange =
false;
282 ATH_MSG_ERROR(
"Cannot find AlignableTransformContainer for key "
283 <<
key <<
" - no misalignment");
285 throw std::runtime_error(
"Unable to apply Inner Detector alignments");
288 if (container->
empty()) {
290 <<
key <<
" is empty. Probably due to out of range IOV");
292 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
295 for (
const auto *
pat : *container) {
298 alignmentChange = (alignmentChange ||
status);
300 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 391 of file InDetDetectorManager.cxx.
395 bool alignmentChange =
false;
401 if (levelInfo.isValid()) {
408 if (!levelInfo.isValid() )
return false;
413 alignmentChange = (alignmentChange ||
status);
415 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 328 of file InDetDetectorManager.cxx.
332 bool alignmentChange =
false;
337 if (levelInfo.isValid()) {
344 if (!levelInfo.isValid() )
return false;
348 trans_iter != transformCollection->
end();
351 <<
getIdHelper()->show_to_string(trans_iter->identify())
352 <<
" at level " << levelInfo.level());
358 trans_iter->identify(),
363 alignmentChange = (alignmentChange ||
status);
368 ATH_MSG_DEBUG(
"Cannot set AlignableTransform for identifier."
369 <<
" Probably OK if its /Indet/Align/ID folder. "
370 <<
getIdHelper()->show_to_string(trans_iter->identify())
371 <<
" at level " << levelInfo.level());
374 ATH_MSG_DEBUG(
"WARNING: Cannot set AlignableTransform for identifier "
375 <<
getIdHelper()->show_to_string(trans_iter->identify())
376 <<
" at level " << levelInfo.level());
379 <<
getIdHelper()->show_to_string(trans_iter->identify())
380 <<
" at level " << levelInfo.level());
381 ATH_MSG_WARNING(
"Subsequent WARNINGS will be printed at DEBUG level.");
387 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.
DataModel_detail::iterator< DataVector > iterator
Standard iterator.
virtual bool identifierBelongs(const Identifier &id) const =0
Check identifier is for this detector.
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
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 bool processSpecialAlignment(const std::string &key, InDetDD::AlignFolderType alignfolder)=0
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
bool empty() const noexcept
Returns true if the collection is empty.