15#include "GeoModelKernel/GeoVolumeCursor.h"
16#include "GeoModelKernel/GeoPhysVol.h"
40 return StatusCode::SUCCESS;
52 <<
". In theory this should not be called, but may happen"
53 <<
" if multiple concurrent events are being processed out of order.");
54 return StatusCode::SUCCESS;
62 PVConstLink ATLASWorld = theExpt->
getPhysVol();
63 GeoIntrusivePtr<GeoPhysVol> world{make_intrusive<GeoPhysVol>(ATLASWorld->getLogVol())};
68 std::unique_ptr<MuonGM::MuonDetectorManager> MuonMgrData(mgr);
74 if (MuonMgrData->mmIdHelper() && MuonMgrData->stgcIdHelper()) {
77 ATH_MSG_FATAL(
"unable to add NSW ReadoutGeometry in the MuonDetectorManager in conditions store");
78 return StatusCode::FAILURE;
83 ATH_MSG_ERROR(
"Cannot find conditions data container for MM passivation!");
84 return StatusCode::FAILURE;
87 MuonMgrData->setMMPassivation(readMmPass.
cptr());
97 if (!readILinesHandle.
isValid()){
99 return StatusCode::FAILURE;
102 ATH_CHECK(MuonMgrData->updateCSCInternalAlignmentMap(**readILinesHandle));
110 if (!readMdtAsBuiltHandle.
isValid()) {
112 return StatusCode::FAILURE;
115 ATH_CHECK(MuonMgrData->updateMdtAsBuiltParams(**readMdtAsBuiltHandle));
123 if(!readNswAsBuilt.
isValid()) {
124 ATH_MSG_ERROR(
"Cannot find conditions data container for NSW as-built!");
125 return StatusCode::FAILURE;
128 MuonMgrData->setNswAsBuilt(*readNswAsBuilt);
133 if(!readsTGCAsBuilt.
isValid()){
134 ATH_MSG_ERROR(
"Cannot find conditions data container for sTGC as-built");
135 return StatusCode::FAILURE;
138 MuonMgrData->setsTGCAsBuilt(*readsTGCAsBuilt);
147 if (!readALinesHandle.
isValid()) {
149 return StatusCode::FAILURE;
152 ATH_CHECK(MuonMgrData->updateAlignment(**readALinesHandle));
153 }
else ATH_MSG_INFO(
"Do not apply the A Lines of the alignment");
160 if (!readBLinesHandle.
isValid()) {
162 return StatusCode::FAILURE;
165 ATH_CHECK (MuonMgrData->updateDeformations(**readBLinesHandle));
166 }
else ATH_MSG_INFO(
"Do not apply the B Lines of the alignment");
170 MuonMgrData->addTreeTop(world);
172 if (world->refCount() != 2) {
173 ATH_MSG_FATAL(
"The leaking reference counter to the GeoModel world detected "<<world->refCount());
174 return StatusCode::FAILURE;
177 ATH_MSG_INFO(
"recorded new " << writeHandle.
key() <<
" with range " << writeHandle.
getRange() <<
" into Conditions Store");
179 return StatusCode::SUCCESS;
192 GeoVolumeCursor detStoreCursor{MuonDetMgrDS->
getTreeTop(0)};
193 while (!detStoreCursor.atEnd()) {
194 PVConstLink worldNode(detStoreCursor.getVolume());
196 const GeoLogVol* logVol = worldNode->getLogVol();
197 const std::string_view vname = logVol->getName();
198 detStoreCursor.next();
199 if (vname.find(
"Station") != std::string::npos)
continue;
201 const GeoVPhysVol& pvConstLink = *worldNode;
202 ATH_MSG_DEBUG(
"Volume in the static world "<<vname<<
" "<<
typeid(pvConstLink).name()
203 <<
"children: "<<worldNode->getNChildNodes()<<
" cursor: "<<
Amg::toString(transform));
204 condMgrWorld->add(make_intrusive<GeoTransform>(transform));
205 condMgrWorld->add(const_pointer_cast(worldNode));
207 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
Hold mappings of ranges to condition objects.
macros to associate a CLID to a type
a traits class that associates a CLID to a type T It also detects whether T inherits from Gaudi DataO...
const ServiceHandle< StoreGateSvc > & detStore() const
Base class for conditions algorithms.
static bool BuildReadoutGeometry(MuonGM::MuonDetectorManager *mgr)
GeoPhysVol * getPhysVol()
Destructor.
static EventIDRange infiniteRunLB()
Produces an EventIDRange that is infinite in RunLumi and invalid in Time.
SG::ReadCondHandleKey< ALineContainer > m_readILineKey
Gaudi::Property< bool > m_applyBLines
Apply the chamber deformation model (Mdts + Nsw)
Gaudi::Property< bool > m_applyNswAsBuilt
StatusCode copyInertMaterial(MuonGM::MuonDetectorManager &detMgr) const
SG::ReadCondHandleKey< BLineContainer > m_readBLineKey
virtual StatusCode initialize() override final
SG::ReadCondHandleKey< sTGCAsBuiltData > m_readsTGCAsBuiltKey
ToolHandle< MuonDetectorTool > m_iGeoModelTool
SG::ReadCondHandleKey< NswAsBuiltDbData > m_readNswAsBuiltKey
Gaudi::Property< bool > m_applyALines
Apply translations and rotations to align the Muon stations.
SG::WriteCondHandleKey< MuonGM::MuonDetectorManager > m_writeDetectorManagerKey
SG::ReadCondHandleKey< ALineContainer > m_readALineKey
MuonDetectorCondAlg(const std::string &name, ISvcLocator *pSvcLocator)
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
SG::ReadCondHandleKey< NswPassivationDbData > m_condMmPassivKey
Gaudi::Property< bool > m_applysTGCAsBuilt
SG::ReadCondHandleKey< MdtAsBuiltContainer > m_readMdtAsBuiltKey
virtual StatusCode execute(const EventContext &ctx) const override final
Gaudi::Property< bool > m_applyMdtAsBuilt
Gaudi::Property< bool > m_applyMmPassivation
Gaudi::Property< bool > m_applyILines
Apply internal transformations on the CSCs.
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
virtual PVConstLink getTreeTop(unsigned int i) const
const DataObjID & fullKey() const
const_pointer_type cptr()
const std::string & key() const
void addDependency(const EventIDRange &range)
const EventIDRange & getRange() const
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
const DataObjID & fullKey() const
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Eigen::Affine3d Transform3D