diff --git a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/NswAsBuiltDbData.h b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/NswAsBuiltDbData.h index 850a37484de23c30e3c2a9486a167462d3f811bb..9e914c32e35d770efd9ba4814688f3b663c05c62 100644 --- a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/NswAsBuiltDbData.h +++ b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/NswAsBuiltDbData.h @@ -20,15 +20,11 @@ public: #ifndef SIMULATIONBASE /// Storage to the micromega as built calculator using MmAsBuiltPtr = GeoModel::TransientConstSharedPtr<NswAsBuilt::StripCalculator>; - using sTgcAsBuiltPtr = GeoModel::TransientConstSharedPtr<NswAsBuilt::StgcStripCalculator>; #else /// Define a dummy pointer object if the project is AthSimulation using MmAsBuiltPtr = char; - using sTgcAsBuiltPtr = char; #endif MmAsBuiltPtr microMegaData{}; - /// Storage to the stgc as built calculator - sTgcAsBuiltPtr sTgcData{}; NswAsBuiltDbData() = default; ~NswAsBuiltDbData() = default; diff --git a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/sTGCAsBuiltData2.h b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/sTGCAsBuiltData.h similarity index 83% rename from MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/sTGCAsBuiltData2.h rename to MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/sTGCAsBuiltData.h index 94e0ab791861e9b7d9cfcf46caa676b866b02648..e70e9a0a6ae6b1ed3cfe22226ad5f3452e67b51c 100644 --- a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/sTGCAsBuiltData2.h +++ b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/MuonAlignmentData/sTGCAsBuiltData.h @@ -12,7 +12,7 @@ #include "GeoPrimitives/GeoPrimitives.h" /** - * @class sTGCAsBuiltData2 + * @class sTGCAsBuiltData * * @brief Class holding the sTGC as built conditions data and applying it. The model consists of four parameters: * - offset: shift of the strip layer in the precission coordinate @@ -24,9 +24,9 @@ * */ -class sTGCAsBuiltData2: public AthMessaging { +class sTGCAsBuiltData: public AthMessaging { public: - sTGCAsBuiltData2(const Muon::IMuonIdHelperSvc* idHelperSvc); + sTGCAsBuiltData(const Muon::IMuonIdHelperSvc* idHelperSvc); // returns the local positon corrected for the as built parameters Amg::Vector2D correctPosition(const Identifier& channelId, const Amg::Vector2D& pos) const; // Set the parameters of the as build model (shift, rotation, scale) @@ -47,6 +47,8 @@ class sTGCAsBuiltData2: public AthMessaging { ParMap m_asBuiltData{}; }; -CLASS_DEF( sTGCAsBuiltData2 , 189786421 , 1 ); -CONDCONT_DEF( sTGCAsBuiltData2 , 15989615 ); +std::ostream& operator<<(std::ostream& ostr, const sTGCAsBuiltData::Parameters& par); + +CLASS_DEF( sTGCAsBuiltData , 154485394 , 1 ); +CONDCONT_DEF( sTGCAsBuiltData , 66070092 ); #endif diff --git a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/sTGCAsBuiltData2.cxx b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/sTGCAsBuiltData.cxx similarity index 72% rename from MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/sTGCAsBuiltData2.cxx rename to MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/sTGCAsBuiltData.cxx index 75e4c7424ecef7fbbc3f948e53fb98a680c67b55..bc5acd536020a525d1b0e296e594ae926ebd2b53 100644 --- a/MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/sTGCAsBuiltData2.cxx +++ b/MuonSpectrometer/MuonAlignment/MuonAlignmentData/src/sTGCAsBuiltData.cxx @@ -1,16 +1,22 @@ /* Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ -#include "MuonAlignmentData/sTGCAsBuiltData2.h" +#include "MuonAlignmentData/sTGCAsBuiltData.h" #include "GeoPrimitives/GeoPrimitivesToStringConverter.h" -sTGCAsBuiltData2::sTGCAsBuiltData2(const Muon::IMuonIdHelperSvc* idHelperSvc): - AthMessaging{"sTGCAsBuiltData2"}, + +std::ostream& operator<<(std::ostream& ostr, const sTGCAsBuiltData::Parameters& par){ + return ostr << "Offset " << par.offset << " rotxy " << par.rotation << " scale " << par.scale << " nonPara " << par.nonPara; +} + + +sTGCAsBuiltData::sTGCAsBuiltData(const Muon::IMuonIdHelperSvc* idHelperSvc): + AthMessaging{"sTGCAsBuiltData"}, m_idHelperSvc{idHelperSvc} {} -Amg::Vector2D sTGCAsBuiltData2::correctPosition(const Identifier& channelId, const Amg::Vector2D& pos) const { +Amg::Vector2D sTGCAsBuiltData::correctPosition(const Identifier& channelId, const Amg::Vector2D& pos) const { ParMap::const_iterator par_itr = m_asBuiltData.find(m_idHelperSvc->gasGapId(channelId)); if(par_itr == m_asBuiltData.end()){ ATH_MSG_WARNING("Missing as built parameters for gas gap " << m_idHelperSvc->toString(channelId)); @@ -23,13 +29,14 @@ Amg::Vector2D sTGCAsBuiltData2::correctPosition(const Identifier& channelId, con // For the QL3 modules described by the legacy (Run 3) geometry EDM the origin of the local frame is shifted with respect to the actual center of the gap. // Therefore a shift is introduced which stabilizes the as built fit which must also be applied here since the parameters are expressed using the actual center of the gap. float shift = (std::fabs(m_idHelperSvc->stationEta(channelId)) == 3 && m_idHelperSvc->stationNameString(channelId) == "STL" ? 24.74 : 0.0); + ATH_MSG_VERBOSE("applying as built parameters " << pars); correctedPos.x() = pos.x() + (pars.offset * convScale + pars.rotation *convScale * pos.y() + pars.scale*convScale*(pos.x() + shift ) + pars.nonPara * convScale * convScale * (pos.x() + shift )*pos.y()); return correctedPos; } -StatusCode sTGCAsBuiltData2::setParameters(const Identifier& channelId, const Parameters& pars){ +StatusCode sTGCAsBuiltData::setParameters(const Identifier& channelId, const Parameters& pars){ const Identifier gasGapId = m_idHelperSvc->gasGapId(channelId); auto insert_itr = m_asBuiltData.insert(std::make_pair(gasGapId, pars)); if (!insert_itr.second) { diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/NswAsBuiltCondAlg.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/NswAsBuiltCondAlg.h index 44a8c6cdcc293385377e4aa24cf0716429d1608b..f09fb9291e14cca1429a4f540840a48256cb8e8a 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/NswAsBuiltCondAlg.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/NswAsBuiltCondAlg.h @@ -23,11 +23,8 @@ public: private: SG::ReadCondHandleKey<CondAttrListCollection> m_readMmAsBuiltParamsKey{this, "ReadMmAsBuiltParamsKey", "/MUONALIGN/ASBUILTPARAMS/MM", "Key of MM/ASBUILTPARAMS input condition data"}; - SG::ReadCondHandleKey<CondAttrListCollection> m_readSTgcAsBuiltParamsKey{this, "ReadSTgcAsBuiltParamsKey", "/MUONALIGN/ASBUILTPARAMS/STGC", - "Key of sTGC/ASBUILTPARAMS input condition data"}; Gaudi::Property<std::string> m_MmJsonPath{this,"MicroMegaJSON", "", "Pass As-Built parameters for MM chambers from an Ascii file"}; - Gaudi::Property<std::string> m_StgcJsonPath{this, "sTgcJSON", "", "Pass As-Built parameters for sTGC chambers from an Ascii file"}; SG::WriteCondHandleKey<NswAsBuiltDbData> m_writeNswAsBuiltKey{this, "WriteNswAsBuiltKey", "NswAsBuiltDbData", "Key of output muon alignment MM+STGC/AsBuilt condition data"}; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/sTGCAsBuiltCondAlg2.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/sTGCAsBuiltCondAlg.h similarity index 70% rename from MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/sTGCAsBuiltCondAlg2.h rename to MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/sTGCAsBuiltCondAlg.h index c2fbd3e817e0dbb6cf871ce57211b6df9fe3bb22..ab490e9eb02d88a41f568c15a1b2cf3a02f38030 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/sTGCAsBuiltCondAlg2.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/MuonCondAlg/sTGCAsBuiltCondAlg.h @@ -2,13 +2,13 @@ Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ -#ifndef MUONCONDALG_sTGCAsBuiltCondAlg2_H -#define MUONCONDALG_sTGCAsBuiltCondAlg2_H +#ifndef MUONCONDALG_sTGCAsBuiltCondAlg_H +#define MUONCONDALG_sTGCAsBuiltCondAlg_H // Athena includes #include "AthenaBaseComps/AthReentrantAlgorithm.h" #include "AthenaPoolUtilities/CondAttrListCollection.h" -#include "MuonAlignmentData/sTGCAsBuiltData2.h" +#include "MuonAlignmentData/sTGCAsBuiltData.h" #include "MuonIdHelpers/IMuonIdHelperSvc.h" #include "StoreGate/ReadCondHandleKey.h" #include "StoreGate/WriteCondHandleKey.h" @@ -18,10 +18,10 @@ /** * Conditions algorithm to load the alternativ sTGC as built constants. */ -class sTGCAsBuiltCondAlg2 : public AthReentrantAlgorithm { +class sTGCAsBuiltCondAlg : public AthReentrantAlgorithm { public: - sTGCAsBuiltCondAlg2(const std::string& name, ISvcLocator* svc); - virtual ~sTGCAsBuiltCondAlg2() = default; + using AthReentrantAlgorithm::AthReentrantAlgorithm; + virtual ~sTGCAsBuiltCondAlg() = default; virtual StatusCode initialize() override; virtual StatusCode execute(const EventContext& ctx) const override; virtual bool isReEntrant() const override { return false; } @@ -29,14 +29,14 @@ public: private: /// Parse efficiency data from COOL StatusCode parseDataFromJSON(const nlohmann::json& lines, - sTGCAsBuiltData2& effiData) const; + sTGCAsBuiltData& effiData) const; ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; /// Load the gasGap efficiencies from a JSON file Gaudi::Property<std::string> m_readFromJSON{this, "readFromJSON", "" }; - SG::WriteCondHandleKey<sTGCAsBuiltData2> m_writeKey{this, "WriteKey", "sTGCAsBuilt2", "Key of the efficiency data in the CondStore"}; + SG::WriteCondHandleKey<sTGCAsBuiltData> m_writeKey{this, "WriteKey", "sTGCAsBuilt", "Key of the efficiency data in the CondStore"}; SG::ReadCondHandleKey<CondAttrListCollection> m_readKeyDb{this, "ReadKey", "", "Folder of the STGC efficiencies as they're stored in COOL"}; }; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/NswAsBuiltCondAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/NswAsBuiltCondAlg.cxx index 403200ceb338a349ca63cffbfc238520a3a6ef92..f77e69678f5ac23c22332b1f229dd68765f3f6b5 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/NswAsBuiltCondAlg.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/NswAsBuiltCondAlg.cxx @@ -14,14 +14,10 @@ } StatusCode NswAsBuiltCondAlg::initialize() { ATH_CHECK(m_readMmAsBuiltParamsKey.initialize(m_MmJsonPath.value().empty() && !m_readMmAsBuiltParamsKey.empty())); - ATH_CHECK(m_readSTgcAsBuiltParamsKey.initialize(m_StgcJsonPath.value().empty() && !m_readSTgcAsBuiltParamsKey.empty())); ATH_CHECK(m_writeNswAsBuiltKey.initialize()); if (!m_MmJsonPath.value().empty()) ATH_MSG_INFO("Load MicroMega as-built from external JSON "<< m_MmJsonPath); else if (!m_readMmAsBuiltParamsKey.empty()) ATH_MSG_INFO("Load MicroMega as-built from COOL <"<<m_readMmAsBuiltParamsKey.key()<<">"); else ATH_MSG_INFO("MicroMega as-built is deactiviated"); - if (!m_StgcJsonPath.value().empty()) ATH_MSG_INFO("Load sTGC as-built from external JSON "<<m_StgcJsonPath); - else if (!m_readSTgcAsBuiltParamsKey.empty()) ATH_MSG_INFO("Load sTGC as-built from COOL <"<<m_readSTgcAsBuiltParamsKey.key()<<">"); - else ATH_MSG_INFO("sTGC as-built is deactiviated"); return StatusCode::SUCCESS; } @@ -73,42 +69,7 @@ StatusCode NswAsBuiltCondAlg::execute(const EventContext& ctx) const { writeCdo->microMegaData->parseJSON(buffer.str()); } - if (!m_readSTgcAsBuiltParamsKey.empty()) { - SG::ReadCondHandle<CondAttrListCollection> readHandle{m_readSTgcAsBuiltParamsKey, ctx}; - if (!readHandle.isValid()) { - ATH_MSG_ERROR("Null pointer to the read STGC/ASBUILTPARAMS conditions object"); - return StatusCode::FAILURE; - } - writeHandle.addDependency(readHandle); - ATH_MSG_INFO("Size of STGC/ASBUILTPARAMS CondAttrListCollection " << readHandle.fullKey() - << " ->size()= " << readHandle->size()); - unsigned int nLines{0}; - for( CondAttrListCollection::const_iterator itr = readHandle->begin(); itr != readHandle->end(); ++itr) { - const coral::AttributeList& atr = itr->second; - const std::string data{*(static_cast<const std::string*>((atr["data"]).addressOfData()))}; - ATH_MSG_DEBUG(__FILE__<<":"<<__LINE__<<" data load is " << data << " FINISHED HERE "); - writeCdo->sTgcData = std::make_unique<NswAsBuilt::StgcStripCalculator>(); - writeCdo->sTgcData->parseJSON(data); - ++nLines; - } - if(nLines>1) { - ATH_MSG_FATAL(nLines << " data objects were loaded for STGC/ASBUILTPARAMS! Expected only one for this validity range!"); - return StatusCode::FAILURE; - } - } - if (!m_StgcJsonPath.value().empty()){ - ATH_MSG_INFO("Load micromega as-built constants from a JSON file"); - std::ifstream thefile{PathResolverFindCalibFile(m_StgcJsonPath)}; - if (!thefile.good()) { - ATH_MSG_FATAL("No such file or directory "<<m_StgcJsonPath); - return StatusCode::FAILURE; - } - std::stringstream buffer; - buffer << thefile.rdbuf(); - writeCdo->sTgcData = std::make_unique<NswAsBuilt::StgcStripCalculator>(); - writeCdo->sTgcData->parseJSON(buffer.str()); - } - if (!writeCdo->sTgcData && !writeCdo->microMegaData) { + if (!writeCdo->microMegaData) { ATH_MSG_ERROR("No AsBuilt constants were loaded. Please check the algorithm configucration"); return StatusCode::FAILURE; } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/components/MuonCondAlg_entries.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/components/MuonCondAlg_entries.cxx index 33ab0bebe095864475d3b7c2748c3efb77ec595b..a169236d0d2aa5237543d9d83d19fa8b488a63b7 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/components/MuonCondAlg_entries.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/components/MuonCondAlg_entries.cxx @@ -20,7 +20,7 @@ #include "MuonCondAlg/NswAsBuiltCondAlg.h" #include "MuonCondAlg/MdtAsBuiltCondAlg.h" #include "MuonCondAlg/CscILinesCondAlg.h" -#include "MuonCondAlg/sTGCAsBuiltCondAlg2.h" +#include "MuonCondAlg/sTGCAsBuiltCondAlg.h" #include "MuonCondAlg/MmCTPCondDbAlg.h" @@ -43,5 +43,5 @@ DECLARE_COMPONENT(NswAsBuiltCondAlg) DECLARE_COMPONENT(MdtAsBuiltCondAlg) DECLARE_COMPONENT(CscILinesCondAlg) DECLARE_COMPONENT(NswUncertDbAlg) -DECLARE_COMPONENT(sTGCAsBuiltCondAlg2) +DECLARE_COMPONENT(sTGCAsBuiltCondAlg) DECLARE_COMPONENT(MmCTPCondDbAlg) \ No newline at end of file diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/sTGCAsBuiltCondAlg2.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/sTGCAsBuiltCondAlg.cxx similarity index 86% rename from MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/sTGCAsBuiltCondAlg2.cxx rename to MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/sTGCAsBuiltCondAlg.cxx index 2c3c7718ae6d2039c99811274d784786db5cc0de..597fcaa7ded724a4a8bc4e9e555491794924aea3 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/sTGCAsBuiltCondAlg2.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/src/sTGCAsBuiltCondAlg.cxx @@ -2,18 +2,16 @@ Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ -#include "MuonCondAlg/sTGCAsBuiltCondAlg2.h" +#include "MuonCondAlg/sTGCAsBuiltCondAlg.h" #include <StoreGate/WriteCondHandle.h> #include <AthenaKernel/IOVInfiniteRange.h> #include <PathResolver/PathResolver.h> #include <fstream> -sTGCAsBuiltCondAlg2::sTGCAsBuiltCondAlg2(const std::string& name, ISvcLocator* pSvcLocator) : - AthReentrantAlgorithm(name, pSvcLocator) {} // Initialize -StatusCode sTGCAsBuiltCondAlg2::initialize() { +StatusCode sTGCAsBuiltCondAlg::initialize() { ATH_MSG_DEBUG("initializing " << name()); ATH_CHECK(m_idHelperSvc.retrieve()); ATH_CHECK(m_writeKey.initialize()); @@ -30,10 +28,10 @@ StatusCode sTGCAsBuiltCondAlg2::initialize() { } // execute -StatusCode sTGCAsBuiltCondAlg2::execute(const EventContext& ctx) const { +StatusCode sTGCAsBuiltCondAlg::execute(const EventContext& ctx) const { ATH_MSG_DEBUG("execute " << name()); // launching Write Cond Handle - SG::WriteCondHandle<sTGCAsBuiltData2> writeHandle{m_writeKey, ctx}; + SG::WriteCondHandle<sTGCAsBuiltData> writeHandle{m_writeKey, ctx}; if (writeHandle.isValid()) { ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid." << " In theory this should not be called, but may happen" @@ -41,7 +39,7 @@ StatusCode sTGCAsBuiltCondAlg2::execute(const EventContext& ctx) const { return StatusCode::SUCCESS; } writeHandle.addDependency(EventIDRange(IOVInfiniteRange::infiniteTime())); - std::unique_ptr<sTGCAsBuiltData2> writeCdo{std::make_unique<sTGCAsBuiltData2>(m_idHelperSvc.get())}; + std::unique_ptr<sTGCAsBuiltData> writeCdo{std::make_unique<sTGCAsBuiltData>(m_idHelperSvc.get())}; if (!m_readKeyDb.empty()) { SG::ReadCondHandle<CondAttrListCollection> readHandle{m_readKeyDb, ctx}; if (!readHandle.isValid()) { @@ -69,8 +67,8 @@ StatusCode sTGCAsBuiltCondAlg2::execute(const EventContext& ctx) const { ATH_MSG_DEBUG("Recorded new " << writeHandle.key() << " with range " << writeHandle.getRange() << " into Conditions Store"); return StatusCode::SUCCESS; } -StatusCode sTGCAsBuiltCondAlg2::parseDataFromJSON(const nlohmann::json& lines, - sTGCAsBuiltData2& effiData) const { +StatusCode sTGCAsBuiltCondAlg::parseDataFromJSON(const nlohmann::json& lines, + sTGCAsBuiltData& effiData) const { for (auto& corr : lines.items()) { nlohmann::json line = corr.value(); /// Station Component identification @@ -88,7 +86,7 @@ StatusCode sTGCAsBuiltCondAlg2::parseDataFromJSON(const nlohmann::json& lines, return StatusCode::FAILURE; } - sTGCAsBuiltData2::Parameters pars; + sTGCAsBuiltData::Parameters pars; pars.offset = line["offset"]; pars.rotation = line["rotation"]; pars.scale = line["scale"]; diff --git a/MuonSpectrometer/MuonConfig/python/MuonConfigFlags.py b/MuonSpectrometer/MuonConfig/python/MuonConfigFlags.py index d4445154382be99a9b37a139f30e7a4dd2f7229e..a01387c02a3b697e3b0299a8c1c201bab555be9c 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonConfigFlags.py +++ b/MuonSpectrometer/MuonConfig/python/MuonConfigFlags.py @@ -132,7 +132,7 @@ def createMuonConfigFlags(): mcf.addFlag("Muon.Align.UseBLines", lambda prevFlags: 'all' if _muonAlignMode(prevFlags) else 'none') # Can be ['none','all','barrel','endcaps'] mcf.addFlag("Muon.Align.UseILines", lambda prevFlags: (_muonAlignMode(prevFlags))) mcf.addFlag("Muon.Align.UseAsBuilt", lambda prevFlags: (_muonAlignMode(prevFlags))) - mcf.addFlag("Muon.Align.UsesTGCAsBuild2",False) + mcf.addFlag("Muon.Align.UsesTGCAsBuild",False) # Muon Trigger Flags mcf.addFlag("Muon.MuonTrigger", False) diff --git a/MuonSpectrometer/MuonConfig/python/MuonGeometryConfig.py b/MuonSpectrometer/MuonConfig/python/MuonGeometryConfig.py index fa8b240eff8153031fb350b5a8eddb20820e8a86..49bf3a1e503511fa4733aeeea65914c223ac84d5 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonGeometryConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonGeometryConfig.py @@ -125,11 +125,10 @@ def MuonAlignmentCondAlgCfg(flags, name="MuonAlignmentCondAlg", **kwargs): pass else : acc.merge(MdtAsBuiltCondAlgCfg(flags)) - if(flags.Muon.Align.UsesTGCAsBuild2): - acc.merge(sTGCAsBuiltCondAlg2Cfg(flags)) - acc.merge(NswAsBuiltCondAlgCfg(flags,sTgcJSON="",ReadSTgcAsBuiltParamsKey="")) # make sure regular sTGC as built is disabled - else: - acc.merge(NswAsBuiltCondAlgCfg(flags)) + acc.merge(NswAsBuiltCondAlgCfg(flags)) + + if(flags.Muon.Align.UsesTGCAsBuild): + acc.merge(sTGCAsBuiltCondAlgCfg(flags)) kwargs.setdefault("ParlineFolders", ParlineFolders) MuonAlign = CompFactory.MuonAlignmentCondAlg(name, **kwargs) @@ -150,12 +149,8 @@ def NswAsBuiltCondAlgCfg(flags, name = "NswAsBuiltCondAlg", **kwargs): if flags.GeoModel.Run < LHCPeriod.Run3: return result kwargs.setdefault("MicroMegaJSON","") - kwargs.setdefault("sTgcJSON","") kwargs.setdefault("ReadMmAsBuiltParamsKey","/MUONALIGN/ASBUILTPARAMS/MM") - #kwargs.setdefault("ReadSTgcAsBuiltParamsKey","/MUONALIGN/ASBUILTPARAMS/STGC") # This is the folder that sould be used once the as builts are validated, so keep it here but commented out - kwargs.setdefault("ReadSTgcAsBuiltParamsKey","") # disable the stgc part of NswAsBuilt, proper code cleanup will follow - ##TODO: remove hard-coded tag once the global tag is ready from IOVDbSvc.IOVDbSvcConfig import addFolders @@ -165,17 +160,17 @@ def NswAsBuiltCondAlgCfg(flags, name = "NswAsBuiltCondAlg", **kwargs): result.addCondAlgo(the_alg, primary = True) return result -def sTGCAsBuiltCondAlg2Cfg(flags, name = "sTGCAsBuiltCondAlg2", **kwargs): +def sTGCAsBuiltCondAlgCfg(flags, name = "sTGCAsBuiltCondAlg", **kwargs): result = ComponentAccumulator() #### Do not apply the as-built correction if not activated - if flags.GeoModel.Run < LHCPeriod.Run3 or not flags.Muon.Align.UsesTGCAsBuild2: + if flags.GeoModel.Run < LHCPeriod.Run3 or not flags.Muon.Align.UsesTGCAsBuild: return result kwargs.setdefault("readFromJSON","") if not kwargs["readFromJSON"]: kwargs.setdefault("ReadKey","/MUONALIGN/ASBUILTPARAMS/STGC") from IOVDbSvc.IOVDbSvcConfig import addFolders - result.merge(addFolders( flags, kwargs["ReadKey"], 'MUONALIGN_OFL', className='CondAttrListCollection')) - the_alg = CompFactory.sTGCAsBuiltCondAlg2(name,**kwargs) + result.merge(addFolders( flags, kwargs["ReadKey"], 'MUONALIGN_OFL', className='CondAttrListCollection', tag = 'MUONALIGN_STG_IntAl_alCons_noQL3_v01')) + the_alg = CompFactory.sTGCAsBuiltCondAlg(name,**kwargs) result.addCondAlgo(the_alg, primary=True) return result @@ -222,7 +217,7 @@ def MuonDetectorCondAlgCfg(flags, name = "MuonDetectorCondAlg", **kwargs): kwargs.setdefault("applyBLines", len([alg for alg in result.getCondAlgos() if alg.name == "MuonAlignmentCondAlg"])>0) kwargs.setdefault("applyILines", len([alg for alg in result.getCondAlgos() if alg.name == "CscILinesCondAlg"])>0) kwargs.setdefault("applyNswAsBuilt", len([alg for alg in result.getCondAlgos() if alg.name == "NswAsBuiltCondAlg"])>0) - kwargs.setdefault("applysTGCAsBuilt2", len([alg for alg in result.getCondAlgos() if alg.name == "sTGCAsBuiltCondAlg2"])>0) + kwargs.setdefault("applysTGCAsBuilt", len([alg for alg in result.getCondAlgos() if alg.name == "sTGCAsBuiltCondAlg"])>0) kwargs.setdefault("applyMdtAsBuilt", len([alg for alg in result.getCondAlgos() if alg.name == "MdtAsBuiltCondAlg"])>0) diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h index 360e1f0bfab6c8b89a0e26c611022d2b5f0cb7b4..80e13f8b26b649d6e9f37f0f9f9c900843473f6a 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h @@ -17,7 +17,7 @@ #include "GeoModelKernel/GeoVDetectorManager.h" #include "MuonAlignmentData/CorrContainer.h" #include "MuonAlignmentData/NswAsBuiltDbData.h" -#include "MuonAlignmentData/sTGCAsBuiltData2.h" +#include "MuonAlignmentData/sTGCAsBuiltData.h" #include "MuonIdHelpers/IMuonIdHelperSvc.h" #include "MuonReadoutGeometry/GenericRPCCache.h" #include "MuonReadoutGeometry/GenericTGCCache.h" @@ -207,17 +207,14 @@ namespace MuonGM { StatusCode updateCSCInternalAlignmentMap(const ALineContainer& cscIntAline); void setNswAsBuilt(const NswAsBuiltDbData* nswAsBuiltData); - void setsTGCAsBuilt2(const sTGCAsBuiltData2* stgcAsBuilt2); + void setsTGCAsBuilt(const sTGCAsBuiltData* stgcAsBuilt); #ifndef SIMULATIONBASE const NswAsBuilt::StripCalculator* getMMAsBuiltCalculator() const { return m_nswAsBuilt ? m_nswAsBuilt->microMegaData.get() : nullptr; } - const NswAsBuilt::StgcStripCalculator* getStgcAsBuiltCalculator() const { - return m_nswAsBuilt ? m_nswAsBuilt->sTgcData.get() : nullptr; ; - } #endif - const sTGCAsBuiltData2* getsTGCAsBuilt2() const { - return m_stgcAsBuildData2; + const sTGCAsBuiltData* getsTGCAsBuilt() const { + return m_stgcAsBuildData; } // map the RPC station indices (0-NRpcStatType) back to the RpcIdHelper stationNames @@ -283,7 +280,7 @@ namespace MuonGM { const NswAsBuiltDbData* m_nswAsBuilt{nullptr}; - const sTGCAsBuiltData2* m_stgcAsBuildData2 {nullptr}; + const sTGCAsBuiltData* m_stgcAsBuildData {nullptr}; /// RPC name caches std::map<int, int> m_rpcStatToIdx; diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx index 28aa093ad1f3fe1776aa53a83fe41dc466798864..d2225ca70463fe7ceb19b37b02df87abbdf18a54 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx @@ -627,8 +627,8 @@ namespace MuonGM { m_nswAsBuilt = nswAsBuiltData; } - void MuonDetectorManager::setsTGCAsBuilt2(const sTGCAsBuiltData2* stgcAsBuilt2) { - m_stgcAsBuildData2 = stgcAsBuilt2; + void MuonDetectorManager::setsTGCAsBuilt(const sTGCAsBuiltData* stgcAsBuilt) { + m_stgcAsBuildData = stgcAsBuilt; } const MdtReadoutElement* MuonDetectorManager::getMdtReadoutElement(const IdentifierHash& id) const { diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx index 5734cde0fc10922d6ecef7c57fdb052a9eb81271..5a1a1128bed5323964a1dbc1c814510dc879ac71 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx @@ -44,6 +44,7 @@ #include "RDBAccessSvc/IRDBRecord.h" #include "RDBAccessSvc/IRDBRecordset.h" #include "GeoModelInterfaces/IGeoDbTagSvc.h" +#include "GeoPrimitives/GeoPrimitivesToStringConverter.h" namespace MuonGM { @@ -940,57 +941,22 @@ namespace MuonGM { return; } - bool conditionsApplied{false}; - Amg::Transform3D trfToML{Amg::Transform3D::Identity()}; - #ifndef SIMULATIONBASE //********************* // As-Built (MuonNswAsBuilt is not included in AthSimulation) //********************* - const NswAsBuilt::StgcStripCalculator* sc = manager()->getStgcAsBuiltCalculator(); - if(manager()->getsTGCAsBuilt2() && design->type == MuonChannelDesign::ChannelType::etaStrip){ - pos.head(2) = manager()->getsTGCAsBuilt2()->correctPosition(layerId, pos.head(2)); - - } else if (sc && design->type == MuonChannelDesign::ChannelType::etaStrip) { - - Amg::Vector2D lpos(locXpos, locYpos); - - // express the local position w.r.t. the nearest active strip - Amg::Vector2D rel_pos; - int istrip = design->positionRelativeToStrip(lpos, rel_pos); - if (istrip < 0) { - MsgStream log(Athena::getMessageSvc(), "sTgcReadoutElement"); - log << MSG::WARNING << "As-built corrections are provided only for eta strips within the active area. Returning." << endmsg; - return; - } - - // setup strip calculator - NswAsBuilt::stripIdentifier_t strip_id; - strip_id.quadruplet = { (largeSector() ? NswAsBuilt::quadrupletIdentifier_t::STL : NswAsBuilt::quadrupletIdentifier_t::STS), getStationEta(), getStationPhi(), m_ml }; - strip_id.ilayer = manager()->stgcIdHelper()->gasGap(layerId); - strip_id.istrip = istrip; - - // get the position coordinates, in the chamber frame, from NswAsBuilt. - // applying the 10um shift along the beam axis for strips (see fillCache()). - NswAsBuilt::StgcStripCalculator::position_t calcPos = sc->getPositionAlongStgcStrip(NswAsBuilt::Element::ParameterClass::CORRECTION, strip_id, rel_pos.y(), rel_pos.x()); - - if (calcPos.isvalid == NswAsBuilt::StgcStripCalculator::IsValid::VALID) { - pos = calcPos.pos; - pos[0] += (strip_id.ilayer%2) ? 0.01 : -0.01; // 1st layer gets +0.01; layer numbering starts from 1 - - // signal that pos is now in the chamber reference frame - // (don't go back to the layer frame yet, since we may apply b-lines later on) - trfToML = m_delta.inverse()*absTransform().inverse()*transform(layerId); - conditionsApplied = true; - } + if(manager()->getsTGCAsBuilt() && design->type == MuonChannelDesign::ChannelType::etaStrip){ + pos.head(2) = manager()->getsTGCAsBuilt()->correctPosition(layerId, pos.head(2)); + #ifndef NDEBUG - else { - MsgStream log(Athena::getMessageSvc(), "sTgcReadoutElement"); - if (log.level() <= MSG::DEBUG) { - log << MSG::DEBUG << "No as-built corrections provided for stEta: "<<getStationEta() << " stPhi: "<<getStationPhi()<<" ml: "<<m_ml<<" layer: "<<strip_id.ilayer<< endmsg; - } + } + else { + MsgStream log(Athena::getMessageSvc(), "sTgcReadoutElement"); + if (log.level() <= MSG::DEBUG) { + log << MSG::DEBUG << "No as-built corrections provided for stEta: "<<getStationEta() << " stPhi: "<<getStationPhi()<<" ml: "<<m_ml<<" layer: "<<strip_id.ilayer<< endmsg; } + } #endif } #endif @@ -1000,19 +966,14 @@ namespace MuonGM { // B-Lines //********************* if (has_BLines()) { - // go to the multilayer reference frame if we are not already there - if (!conditionsApplied) { - trfToML = m_delta.inverse()*absTransform().inverse()*transform(layerId); - pos = trfToML*pos; - - // signal that pos is now in the multilayer reference frame - conditionsApplied = true; - } - posOnDefChamber(pos); + // go to the muultilayer frame + Amg::Transform3D trfToML = m_delta.inverse()*absTransform().inverse()*transform(layerId); + pos = trfToML*pos; + posOnDefChamber(pos); + // back to the layer reference frame from where we started + pos = trfToML.inverse()*pos; + } - - // back to the layer reference frame from where we started - if (conditionsApplied) pos = trfToML.inverse()*pos; } } // namespace MuonGM diff --git a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorCondAlg.h b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorCondAlg.h index e749285b5ea62f0febd4e7055afb6334223eda40..8a095ec73b66904fb67555bacd42cb03a6f6a19a 100644 --- a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorCondAlg.h +++ b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorCondAlg.h @@ -9,7 +9,7 @@ #include "GaudiKernel/ToolHandle.h" #include "MuonAlignmentData/CorrContainer.h" #include "MuonAlignmentData/NswAsBuiltDbData.h" -#include "MuonAlignmentData/sTGCAsBuiltData2.h" +#include "MuonAlignmentData/sTGCAsBuiltData.h" #include "MuonGeoModel/MuonDetectorTool.h" #include "MuonReadoutGeometry/MuonDetectorManager.h" #include "MuonAlignmentData/NswPassivationDbData.h" @@ -37,7 +37,7 @@ class MuonDetectorCondAlg : public AthReentrantAlgorithm { Gaudi::Property<bool> m_applyNswAsBuilt{this, "applyNswAsBuilt", true, "Toggles the application of the Nsw as-built parameters"}; - Gaudi::Property<bool> m_applysTGCAsBuilt2{this, "applysTGCAsBuilt2", false, + Gaudi::Property<bool> m_applysTGCAsBuilt{this, "applysTGCAsBuilt", false, "Toggles the application of the alternative sTGC as-built parameters"}; Gaudi::Property<bool> m_applyMdtAsBuilt{this, "applyMdtAsBuilt", true, @@ -59,7 +59,7 @@ class MuonDetectorCondAlg : public AthReentrantAlgorithm { "Key of input muon alignment CSC/ILine condition data"}; SG::ReadCondHandleKey<MdtAsBuiltContainer> m_readMdtAsBuiltKey{this, "ReadMdtAsBuiltKey", "MdtAsBuiltContainer", "Key of output muon alignment MDT/AsBuilt condition data"}; SG::ReadCondHandleKey<NswAsBuiltDbData> m_readNswAsBuiltKey{this, "ReadNswAsBuiltKey", "NswAsBuiltDbData", "Key of NswAsBuiltDbData object containing conditions data for NSW as-built params!"}; - SG::ReadCondHandleKey<sTGCAsBuiltData2> m_readsTGCAsBuilt2Key{this, "ReadsTGCAsBuilt2Key", "sTGCAsBuilt2", "Key of sTGCAsBuiltData2 object containing conditions data for alternative sTGC as-built model!"}; + SG::ReadCondHandleKey<sTGCAsBuiltData> m_readsTGCAsBuiltKey{this, "ReadsTGCAsBuiltKey", "sTGCAsBuilt", "Key of sTGCAsBuiltData object containing conditions data for the sTGC as-built model!"}; SG::ReadCondHandleKey<NswPassivationDbData> m_condMmPassivKey {this, "condMmPassivKey", "NswPassivationDbData", "Key of NswPassivationDbData object containing passivation data for MMs"}; // Write Handle diff --git a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorCondAlg.cxx b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorCondAlg.cxx index d85ef423094fcdbffb1dbb8d5b664de8271915a8..2381bf9e8ca099cb2093f1b15b67ff4df59cf428 100644 --- a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorCondAlg.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorCondAlg.cxx @@ -29,14 +29,14 @@ StatusCode MuonDetectorCondAlg::initialize() { ATH_CHECK(m_readILineKey.initialize(m_applyILines)); ATH_CHECK(m_readMdtAsBuiltKey.initialize(m_applyMdtAsBuilt)); ATH_CHECK(m_readNswAsBuiltKey.initialize(m_applyNswAsBuilt)); - ATH_CHECK(m_readsTGCAsBuilt2Key.initialize(m_applysTGCAsBuilt2)); + ATH_CHECK(m_readsTGCAsBuiltKey.initialize(m_applysTGCAsBuilt)); ATH_CHECK(m_condMmPassivKey.initialize(m_applyMmPassivation)); ATH_CHECK(m_idHelperSvc.retrieve()); ATH_CHECK(m_writeDetectorManagerKey.initialize()); ATH_CHECK(m_worldWriteKey.initialize()); ATH_MSG_INFO("Initialize successful -- "<<m_applyALines<<", "<<m_applyBLines<<"," <<m_applyILines<<","<<m_applyMdtAsBuilt<<"," - <<m_applyNswAsBuilt<<","<<m_applyMmPassivation << "," << m_applysTGCAsBuilt2); + <<m_applyNswAsBuilt<<","<<m_applyMmPassivation << "," << m_applysTGCAsBuilt); return StatusCode::SUCCESS; } @@ -133,14 +133,14 @@ StatusCode MuonDetectorCondAlg::execute(const EventContext& ctx) const { MuonMgrData->setNswAsBuilt(*readNswAsBuilt); } - if(!m_readsTGCAsBuilt2Key.empty()){ - SG::ReadCondHandle<sTGCAsBuiltData2> readsTGCAsBuilt2{m_readsTGCAsBuilt2Key, ctx}; - if(!readsTGCAsBuilt2.isValid()){ - ATH_MSG_ERROR("Cannot find conditions data container for sTGC as-built 2"); + if(!m_readsTGCAsBuiltKey.empty()){ + SG::ReadCondHandle<sTGCAsBuiltData> readsTGCAsBuilt{m_readsTGCAsBuiltKey, ctx}; + if(!readsTGCAsBuilt.isValid()){ + ATH_MSG_ERROR("Cannot find conditions data container for sTGC as-built"); return StatusCode::FAILURE; } - writeHandle.addDependency(readsTGCAsBuilt2); - MuonMgrData->setsTGCAsBuilt2(*readsTGCAsBuilt2); + writeHandle.addDependency(readsTGCAsBuilt); + MuonMgrData->setsTGCAsBuilt(*readsTGCAsBuilt); } diff --git a/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonAlignmentDataR4/MuonAlignmentDataR4/sTgcAlignmentStore.h b/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonAlignmentDataR4/MuonAlignmentDataR4/sTgcAlignmentStore.h index 5ab8213f75c51a718b88015aaf14b7d5391e0e2c..f1653d67bfdb34a0d622f7d6915351d426dc4bff 100644 --- a/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonAlignmentDataR4/MuonAlignmentDataR4/sTgcAlignmentStore.h +++ b/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonAlignmentDataR4/MuonAlignmentDataR4/sTgcAlignmentStore.h @@ -7,6 +7,7 @@ #include <MuonAlignmentData/BLinePar.h> #include <MuonAlignmentData/NswAsBuiltDbData.h> +#include <MuonAlignmentData/sTGCAsBuiltData.h> #include <ActsGeometryInterfaces/AlignmentStore.h> /* Alignment store to additionally ship the sTgc as-built parameters and * B-Line deformation parameters through the Acts geometry context. @@ -16,8 +17,7 @@ class sTgcAlignmentStore: public ActsTrk::AlignmentStore { sTgcAlignmentStore() = default; /// @brief Pointer to the collection of passivation parameters /// if the project is not AthSimulation. Otherwise, it's a char - using sTgcAsBuiltPtr = NswAsBuiltDbData::sTgcAsBuiltPtr; - sTgcAsBuiltPtr asBuiltPars{}; + const sTGCAsBuiltData* asBuiltPars{}; /// Caches the micromega BLine parameter. void cacheBLine(const Identifier& detElId, const BLinePar& bline); diff --git a/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonCondAlgR4/src/ActsMuonAlignCondAlg.cxx b/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonCondAlgR4/src/ActsMuonAlignCondAlg.cxx index 4ea58b0fd5e40fa1c47ac9321c8ef079b743b874..cae93187d80df53719b5be4dfe7d5c0bf3b9143a 100644 --- a/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonCondAlgR4/src/ActsMuonAlignCondAlg.cxx +++ b/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonCondAlgR4/src/ActsMuonAlignCondAlg.cxx @@ -184,9 +184,9 @@ StatusCode ActsMuonAlignCondAlg::loadMmDeformPars(const EventContext& ctx, StatusCode ActsMuonAlignCondAlg::loadStgcDeformPars(const EventContext& ctx, ActsTrk::RawGeomAlignStore& store) const{ std::unique_ptr<sTgcAlignmentStore> trkAlignment = std::make_unique<sTgcAlignmentStore>(); - if (m_applyNswAsBuilt) { - CREATE_READHANDLE(NswAsBuiltDbData, m_readNswAsBuiltKey); - trkAlignment->asBuiltPars = readHandle->sTgcData; + if (m_applyNswAsBuilt && !m_readsTgcAsBuiltKey.empty()) { + CREATE_READHANDLE(sTGCAsBuiltData, m_readsTgcAsBuiltKey); + trkAlignment->asBuiltPars = *readHandle; } if (m_applyBLines) { CREATE_READHANDLE(BLineContainer, m_readKeyBLines); @@ -213,10 +213,11 @@ StatusCode ActsMuonAlignCondAlg::declareDependencies(const EventContext& ctx, CREATE_READHANDLE(ALineContainer, m_readKeyALines); writeHandle.addDependency(readHandle); } - const bool isNsw = detType == ActsTrk::DetectorType::sTgc || - detType == ActsTrk::DetectorType::Mm; + const bool issTGC = detType == ActsTrk::DetectorType::sTgc; + const bool isMm = detType == ActsTrk::DetectorType::Mm; const bool isMdt = detType == ActsTrk::DetectorType::Mdt; - if (m_applyBLines&& (isNsw || isMdt)) { + + if (m_applyBLines&& (issTGC || isMm || isMdt)) { CREATE_READHANDLE(BLineContainer, m_readKeyBLines); writeHandle.addDependency(readHandle); } @@ -228,10 +229,14 @@ StatusCode ActsMuonAlignCondAlg::declareDependencies(const EventContext& ctx, CREATE_READHANDLE(NswPassivationDbData, m_readNswPassivKey); writeHandle.addDependency(readHandle); } - if (m_applyNswAsBuilt && isNsw) { + if (m_applyNswAsBuilt && isMm) { CREATE_READHANDLE(NswAsBuiltDbData, m_readNswAsBuiltKey); writeHandle.addDependency(readHandle); } + if(m_applyNswAsBuilt && issTGC && !m_readsTgcAsBuiltKey.empty()){ + CREATE_READHANDLE(sTGCAsBuiltData, m_readsTgcAsBuiltKey); + writeHandle.addDependency(readHandle); + } return StatusCode::SUCCESS; } diff --git a/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonCondAlgR4/src/ActsMuonAlignCondAlg.h b/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonCondAlgR4/src/ActsMuonAlignCondAlg.h index c0aa85c8af007fd8f4e9a5a641668e9e1e4b11a5..cf9c53894b5e3dcd58a395a7dcc9ed2b5b4e4ad1 100644 --- a/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonCondAlgR4/src/ActsMuonAlignCondAlg.h +++ b/MuonSpectrometer/MuonPhaseII/MuonConditions/MuonCondAlgR4/src/ActsMuonAlignCondAlg.h @@ -18,6 +18,8 @@ #include <MuonAlignmentDataR4/MmAlignmentStore.h> #include <MuonAlignmentDataR4/sTgcAlignmentStore.h> +#include <MuonAlignmentData/sTGCAsBuiltData.h> + #include <map> #include <set> #include <unordered_map> @@ -77,6 +79,8 @@ private: "Key of output muon alignment MDT/AsBuilt condition data"}; SG::ReadCondHandleKey<NswAsBuiltDbData> m_readNswAsBuiltKey{this, "ReadNswAsBuiltKey", "NswAsBuiltDbData", "Key of NswAsBuiltDbData object containing conditions data for NSW as-built params!"}; + SG::ReadCondHandleKey<sTGCAsBuiltData> m_readsTgcAsBuiltKey{this, "ReadsTgcAsBuiltKey", "", + "Key of sTGCAsBuiltDbData object containing conditions data for sTgc as-built params!"}; SG::ReadCondHandleKey<NswPassivationDbData> m_readNswPassivKey {this, "dMmPassivationKey", "NswPassivationDbData", "Key of NswPassivationDbData object containing passivation data for MMs"};