From 201e9d82cf5b407bfaa6ea203bf05df1cb4d5bfa Mon Sep 17 00:00:00 2001 From: Edward Moyse <edward.moyse@cern.ch> Date: Wed, 28 Sep 2022 13:49:58 +0200 Subject: [PATCH] Merge branch 'IdMaker_Fix' into 'master' MuonIdHelpers - Fix Identifier creation if parts of the information is taken from an existing one See merge request atlas/athena!57070 (cherry picked from commit c4daa8308895c45286c34434610c2b8ebe05f9bb) 51cc3550 Fix generation of Identifiers from partially existing ones --- .../MuonIdHelpers/MuonIdHelper.h | 6 ++++- .../MuonIdHelpers/src/CscIdHelper.cxx | 8 +++---- .../MuonIdHelpers/src/MdtIdHelper.cxx | 10 ++++----- .../MuonIdHelpers/src/MmIdHelper.cxx | 11 +++++----- .../MuonIdHelpers/src/RpcIdHelper.cxx | 22 +++++++++---------- .../MuonIdHelpers/src/TgcIdHelper.cxx | 6 ++--- .../MuonIdHelpers/src/sTgcIdHelper.cxx | 16 +++++++------- 7 files changed, 41 insertions(+), 38 deletions(-) diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelper.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelper.h index 42957bdb24ac..4d06d0d6c83e 100644 --- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelper.h +++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelper.h @@ -309,7 +309,11 @@ protected: void addStationID(Identifier& id, int stationName, int stationEta, int stationPhi, int technology) const; void addStationID(ExpandedIdentifier& id, int stationName, int stationEta, int stationPhi, int technology) const; - + + inline void resetAndSet(const IdDictFieldImplementation & dict, const int new_val, Identifier& id ) const { + dict.reset(id); + dict.pack(new_val,id); + } private: // Copy constructor - do not use! MuonIdHelper(const MuonIdHelper& other) = delete; diff --git a/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx index fca77b6ca4bd..8353a2a9099c 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/CscIdHelper.cxx @@ -880,10 +880,10 @@ Identifier CscIdHelper::channelID(const std::string& stationNameStr, int station Identifier CscIdHelper::channelID(const Identifier& id, int chamberLayer, int wireLayer, int measuresPhi, int strip) const { Identifier result(id); - m_cla_impl.pack(chamberLayer, result); - m_lay_impl.pack(wireLayer, result); - m_mea_impl.pack(measuresPhi, result); - m_str_impl.pack(strip, result); + resetAndSet(m_cla_impl, chamberLayer, result); + resetAndSet(m_lay_impl, wireLayer, result); + resetAndSet(m_mea_impl, measuresPhi, result); + resetAndSet(m_str_impl, strip, result); return result; } Identifier CscIdHelper::channelID(const Identifier& id, int chamberLayer, int wireLayer, int measuresPhi, int strip, bool& isValid) const { diff --git a/MuonSpectrometer/MuonIdHelpers/src/MdtIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/MdtIdHelper.cxx index 5ce6f808b2f0..520232cd613d 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/MdtIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/MdtIdHelper.cxx @@ -301,8 +301,8 @@ Identifier MdtIdHelper::multilayerID(const Identifier& channelID) const { } Identifier MdtIdHelper::multilayerID(const Identifier& moduleID, int multilayer) const { - Identifier result(moduleID); - m_mla_impl.pack(multilayer, result); + Identifier result{moduleID}; + resetAndSet(m_mla_impl, multilayer, result); return result; } @@ -712,9 +712,9 @@ Identifier MdtIdHelper::channelID(const std::string& stationNameStr, int station Identifier MdtIdHelper::channelID(const Identifier& id, int multilayer, int tubeLayer, int tube) const { Identifier result(id); - m_mla_impl.pack(multilayer, result); - m_lay_impl.pack(tubeLayer, result); - m_tub_impl.pack(tube, result); + resetAndSet(m_mla_impl, multilayer, result); + resetAndSet(m_lay_impl, tubeLayer, result); + resetAndSet(m_tub_impl, tube, result); return result; } Identifier MdtIdHelper::channelID(const Identifier& id, int multilayer, int tubeLayer, int tube, bool& isValid) const { diff --git a/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx index b5396811e746..15eecafe9d99 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/MmIdHelper.cxx @@ -284,7 +284,7 @@ Identifier MmIdHelper::multilayerID(const Identifier& channelID) const { /*******************************************************************************/ Identifier MmIdHelper::multilayerID(const Identifier& moduleID, int multilayer) const { Identifier result(moduleID); - m_mplet_impl.pack(multilayer, result); + resetAndSet(m_mplet_impl, multilayer, result); return result; } Identifier MmIdHelper::multilayerID(const Identifier& moduleID, int multilayer, bool& isValid) const { @@ -695,11 +695,10 @@ Identifier MmIdHelper::channelID(const std::string& stationNameStr, int stationE /*******************************************************************************/ Identifier MmIdHelper::channelID(const Identifier& id, int multilayer, int gasGap, int channel) const { - Identifier result(id); - m_mplet_impl.pack(multilayer, result); - m_gap_impl.pack(gasGap, result); - m_cha_impl.pack(channel, result); - + Identifier result{id}; + resetAndSet(m_mplet_impl, multilayer, result); + resetAndSet(m_gap_impl, gasGap, result); + resetAndSet(m_cha_impl, channel, result); return result; } Identifier MmIdHelper::channelID(const Identifier& id, int multilayer, int gasGap, int channel, bool& isValid) const { diff --git a/MuonSpectrometer/MuonIdHelpers/src/RpcIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/RpcIdHelper.cxx index a599f4c093e0..35d16b029b21 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/RpcIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/RpcIdHelper.cxx @@ -844,7 +844,7 @@ Identifier RpcIdHelper::elementID(const std::string& stationNameStr, int station Identifier RpcIdHelper::elementID(const Identifier& id, int doubletR) const { Identifier result(id); - m_dbr_impl.pack(doubletR, result); + resetAndSet(m_dbr_impl, doubletR, result); return result; } @@ -897,8 +897,8 @@ Identifier RpcIdHelper::panelID(const Identifier& channelID) const { Identifier RpcIdHelper::panelID(const Identifier& padID, int gasGap, int measuresPhi) const { Identifier result(padID); - m_gap_impl.pack(gasGap, result); - m_mea_impl.pack(measuresPhi, result); + resetAndSet(m_gap_impl, gasGap, result); + resetAndSet(m_mea_impl, measuresPhi, result); return result; } Identifier RpcIdHelper::panelID(const Identifier& padID, int gasGap, int measuresPhi, bool& isValid) const { @@ -944,7 +944,7 @@ Identifier RpcIdHelper::gapID(const Identifier& panelID) const { Identifier RpcIdHelper::gapID(const Identifier& padID, int gasGap) const { Identifier result(padID); - m_gap_impl.pack(gasGap, result); + resetAndSet(m_gap_impl, gasGap, result); return result; } Identifier RpcIdHelper::gapID(const Identifier& padID, int gasGap, bool& isValid) const { @@ -996,11 +996,11 @@ Identifier RpcIdHelper::channelID(const std::string& stationNameStr, int station Identifier RpcIdHelper::channelID(const Identifier& id, int doubletZ, int doubletPhi, int gasGap, int measuresPhi, int strip) const { // pack fields independently Identifier result(id); - m_dbz_impl.pack(doubletZ, result); - m_dbp_impl.pack(doubletPhi, result); - m_gap_impl.pack(gasGap, result); - m_mea_impl.pack(measuresPhi, result); - m_str_impl.pack(strip, result); + resetAndSet(m_dbz_impl, doubletZ, result); + resetAndSet(m_dbp_impl, doubletPhi, result); + resetAndSet(m_gap_impl, gasGap, result); + resetAndSet(m_mea_impl, measuresPhi, result); + resetAndSet(m_str_impl, strip, result); return result; } Identifier RpcIdHelper::channelID(const Identifier& id, int doubletZ, int doubletPhi, int gasGap, int measuresPhi, int strip, @@ -1062,8 +1062,8 @@ Identifier RpcIdHelper::padID(int stationName, int stationEta, int stationPhi, i Identifier RpcIdHelper::padID(const Identifier& id, int doubletZ, int doubletPhi) const { // pack fields independently Identifier result(id); - m_dbz_impl.pack(doubletZ, result); - m_dbp_impl.pack(doubletPhi, result); + resetAndSet(m_dbz_impl, doubletZ, result); + resetAndSet(m_dbp_impl, doubletPhi, result); return result; } Identifier RpcIdHelper::padID(const Identifier& id, int doubletZ, int doubletPhi, bool& isValid) const { diff --git a/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx index ebb69df535f0..bb355a82fcd7 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/TgcIdHelper.cxx @@ -603,9 +603,9 @@ Identifier TgcIdHelper::channelID(const std::string& stationNameStr, int station Identifier TgcIdHelper::channelID(const Identifier& id, int gasGap, int isStrip, int channel) const { Identifier result(id); - m_gap_impl.pack(gasGap, result); - m_ist_impl.pack(isStrip, result); - m_cha_impl.pack(channel, result); + resetAndSet(m_gap_impl, gasGap, result); + resetAndSet(m_ist_impl, isStrip, result); + resetAndSet(m_cha_impl, channel, result); return result; } Identifier TgcIdHelper::channelID(const Identifier& id, int gasGap, int isStrip, int channel, bool& isValid) const { diff --git a/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx b/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx index 7c9787676356..a1a0aefddf43 100644 --- a/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx +++ b/MuonSpectrometer/MuonIdHelpers/src/sTgcIdHelper.cxx @@ -295,7 +295,7 @@ Identifier sTgcIdHelper::multilayerID(const Identifier& channelID) const { /*******************************************************************************/ Identifier sTgcIdHelper::multilayerID(const Identifier& moduleID, int multilayer) const { Identifier result(moduleID); - m_mplet_impl.pack(multilayer, result); + resetAndSet(m_mplet_impl, multilayer, result); return result; } Identifier sTgcIdHelper::multilayerID(const Identifier& moduleID, int multilayer, bool& isValid) const { @@ -847,10 +847,10 @@ Identifier sTgcIdHelper::channelID(const std::string& stationNameStr, int statio /*******************************************************************************/ Identifier sTgcIdHelper::channelID(const Identifier& id, int multilayer, int gasGap, int channelType, int channel) const { Identifier result = parentID(id); - m_mplet_impl.pack(multilayer, result); - m_gap_impl.pack(gasGap, result); - m_typ_impl.pack(channelType, result); - m_cha_impl.pack(channel, result); + resetAndSet(m_mplet_impl, multilayer, result); + resetAndSet(m_gap_impl, gasGap, result); + resetAndSet(m_typ_impl, channelType, result); + resetAndSet(m_cha_impl, channel, result); return result; } Identifier sTgcIdHelper::channelID(const Identifier& id, int multilayer, int gasGap, int channelType, int channel, bool& isValid) const { @@ -910,9 +910,9 @@ Identifier sTgcIdHelper::padID(const std::string& stationNameStr, int stationEta Identifier sTgcIdHelper::padID(const Identifier& id, int multilayer, int gasGap, int channelType, int padEta, int padPhi) const { Identifier result(id); if (channelType != Pad) return result; - m_mplet_impl.pack(multilayer, result); - m_gap_impl.pack(gasGap, result); - m_typ_impl.pack(channelType, result); + resetAndSet(m_mplet_impl, multilayer, result); + resetAndSet(m_gap_impl, gasGap, result); + resetAndSet(m_typ_impl, channelType, result); int channel = (padPhi - 1) * PadEtaMax + padEta; m_cha_impl.pack(channel, result); -- GitLab