diff --git a/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h b/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h index f85225669a307ad07ec44f92efcec0789e47fdf5..baded741db5b4cf7293bb8201d002bc112e25b12 100644 --- a/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h +++ b/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ //**************************************************************************** @@ -25,39 +25,43 @@ #ifndef TILETBREC_TILEDIGITSGAINFILTER_H #define TILETBREC_TILEDIGITSGAINFILTER_H -#include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/ToolHandle.h" +#include "TileEvent/TileDigitsContainer.h" -class TileHWID; +#include "AthenaBaseComps/AthReentrantAlgorithm.h" +#include "StoreGate/ReadHandleKey.h" +#include "StoreGate/WriteHandleKey.h" -#include <string> -#include <vector> +class TileHWID; -/** +/** @class TileDigitsGainFilter @brief This algorithm copies TileDigits from input container to output container */ -class TileDigitsGainFilter: public AthAlgorithm { +class TileDigitsGainFilter: public AthReentrantAlgorithm { public: // Constructor - TileDigitsGainFilter(const std::string& name, ISvcLocator* pSvcLocator); + using AthReentrantAlgorithm::AthReentrantAlgorithm; //Destructor - virtual ~TileDigitsGainFilter(); + virtual ~TileDigitsGainFilter() = default; //Gaudi Hooks StatusCode initialize() override; //!< initialize method - StatusCode execute() override; //!< execute method + StatusCode execute(const EventContext& ctx) const override; //!< execute method StatusCode finalize() override; //!< finalize method private: - const TileHWID* m_tileHWID; + SG::ReadHandleKey<TileDigitsContainer> m_inputContainerKey{this, + "InputDigitsContainer", "TileDigitsCnt", "Input Tile digits container key"}; + + SG::WriteHandleKey<TileDigitsContainer> m_outputContainerKey{this, + "OutputDigitsContainer", "TileDigitsFiltered", "Output Tile digits container key"}; - std::string m_inputContainer; //!< Name of the input TileDigitsContainer - std::string m_outputContainer; //!< Name of the output TileDigitsContainer + Gaudi::Property<int> m_threshold{this, + "HighGainThreshold", 4095, "Threshold to check overflowes in high gain"}; - int m_threshold; + const TileHWID* m_tileHWID{nullptr}; }; diff --git a/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx b/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx index 1361f242988dfa92e44860020e48c5f179d84fd8..b9bca4b1381b255bcb336912a158b684c06300e9 100644 --- a/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx +++ b/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ //***************************************************************************** @@ -17,34 +17,17 @@ // Tile includes #include "TileTBRec/TileDigitsGainFilter.h" -#include "TileEvent/TileDigitsContainer.h" -#include "TileEvent/TileRawChannelContainer.h" #include "TileCalibBlobObjs/TileCalibUtils.h" +#include "TileEvent/TileDigitsContainer.h" #include "TileIdentifier/TileHWID.h" // Atlas includes #include "AthContainers/ConstDataVector.h" -#include "AthenaKernel/errorcheck.h" +#include "StoreGate/ReadHandle.h" +#include "StoreGate/WriteHandle.h" //C++ STL includes #include <vector> -#include <algorithm> -#include <cstring> - -// -// Constructor -// -TileDigitsGainFilter::TileDigitsGainFilter(const std::string& name, ISvcLocator* pSvcLocator) - : AthAlgorithm(name, pSvcLocator) - , m_tileHWID(nullptr) -{ - declareProperty("InputDigitsContainer", m_inputContainer = "TileDigitsCnt"); - declareProperty("OutputDigitsContainer", m_outputContainer = "TileDigitsFiltered"); - declareProperty("HighGainThreshold", m_threshold = 4095); -} - -TileDigitsGainFilter::~TileDigitsGainFilter() { -} // // Alg standard initialize function @@ -53,8 +36,11 @@ StatusCode TileDigitsGainFilter::initialize() { CHECK( detStore()->retrieve(m_tileHWID) ); - ATH_MSG_INFO( "Input digits container: '" << m_inputContainer - << "' output container: '" << m_outputContainer << "'" ); + ATH_CHECK( m_inputContainerKey.initialize() ); + ATH_CHECK( m_outputContainerKey.initialize() ); + + ATH_MSG_INFO( "Input digits container: '" << m_inputContainerKey + << "' output container: '" << m_outputContainerKey << "'" ); ATH_MSG_INFO( "Threshold to check overflowed in HG: " << m_threshold); @@ -68,15 +54,13 @@ StatusCode TileDigitsGainFilter::initialize() { // // Begin Execution Phase. // -StatusCode TileDigitsGainFilter::execute() { +StatusCode TileDigitsGainFilter::execute(const EventContext& ctx) const { + + SG::ReadHandle<TileDigitsContainer> inputContainer(m_inputContainerKey, ctx); + ATH_CHECK( inputContainer.isValid() ); // Create new container for filtered digits auto outputContainer = std::make_unique<TileDigitsContainer>(false, SG::VIEW_ELEMENTS); - - - const TileDigitsContainer* inputContainer(nullptr); - CHECK( evtStore()->retrieve(inputContainer, m_inputContainer) ); - outputContainer->set_unit(inputContainer->get_unit()); outputContainer->set_type(inputContainer->get_type()); outputContainer->set_bsflags(inputContainer->get_bsflags()); @@ -147,11 +131,11 @@ StatusCode TileDigitsGainFilter::execute() { } } - CHECK( outputContainer->addCollection (outColl.release()->asDataVector(), - collIt.hashId()) ); + ATH_CHECK( outputContainer->addCollection (outColl.release()->asDataVector(), collIt.hashId()) ); } - CHECK( evtStore()->record(std::move(outputContainer), m_outputContainer, false) ); + SG::WriteHandle<TileDigitsContainer> outputDigitsContainer(m_outputContainerKey, ctx); + ATH_CHECK( outputDigitsContainer.record(std::move(outputContainer)) ); return StatusCode::SUCCESS; }