From 490721d2a5828ca6b9e7cfe932c1e1be45c166e8 Mon Sep 17 00:00:00 2001 From: Frank Winklmeier <fwinkl@cern> Date: Thu, 6 Aug 2020 10:19:33 +0200 Subject: [PATCH] MagFieldUtils: Add field reader test algorithm Add a test algorithm to read/print the magnetic field conditions object. --- MagneticField/MagFieldUtils/CMakeLists.txt | 4 +-- .../MagFieldUtils/src/MagFieldCondReader.cxx | 33 +++++++++++++++++++ .../MagFieldUtils/src/MagFieldCondReader.h | 31 +++++++++++++++++ .../src/components/MagFieldUtils_entries.cxx | 3 +- 4 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 MagneticField/MagFieldUtils/src/MagFieldCondReader.cxx create mode 100644 MagneticField/MagFieldUtils/src/MagFieldCondReader.h diff --git a/MagneticField/MagFieldUtils/CMakeLists.txt b/MagneticField/MagFieldUtils/CMakeLists.txt index 433f9eda168..54ac61d2513 100644 --- a/MagneticField/MagFieldUtils/CMakeLists.txt +++ b/MagneticField/MagFieldUtils/CMakeLists.txt @@ -14,9 +14,7 @@ atlas_add_component( MagFieldUtils src/*.cxx src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${XERCESC_INCLUDE_DIRS} ${GEANT4_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES} ${GEANT4_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GaudiKernel MagFieldInterfaces ) + LINK_LIBRARIES ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES} ${GEANT4_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GaudiKernel MagFieldConditions MagFieldInterfaces ) # Install files from the package: -atlas_install_headers( MagFieldUtils ) atlas_install_joboptions( share/*.py ) - diff --git a/MagneticField/MagFieldUtils/src/MagFieldCondReader.cxx b/MagneticField/MagFieldUtils/src/MagFieldCondReader.cxx new file mode 100644 index 00000000000..e90b199f13c --- /dev/null +++ b/MagneticField/MagFieldUtils/src/MagFieldCondReader.cxx @@ -0,0 +1,33 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#include "MagFieldCondReader.h" + +MagField::CondReader::CondReader(const std::string& name, ISvcLocator* pSvcLocator) : + AthReentrantAlgorithm(name, pSvcLocator) +{} + +StatusCode MagField::CondReader::initialize() +{ + ATH_CHECK(m_fieldCacheKey.initialize()); + + return StatusCode::SUCCESS; +} + +StatusCode MagField::CondReader::execute(const EventContext& ctx) const +{ + SG::ReadCondHandle<AtlasFieldCacheCondObj> rh{m_fieldCacheKey, ctx}; + const AtlasFieldCacheCondObj* fieldCondObj{*rh}; + if (fieldCondObj == nullptr) { + ATH_MSG_ERROR("Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheKey.key()); + return StatusCode::FAILURE; + } + + MagField::AtlasFieldCache fieldCache; + fieldCondObj->getInitializedCache(fieldCache); + + ATH_MSG_INFO("Field status: solenoid=" << fieldCache.solenoidOn() << ", toroids=" << fieldCache.toroidOn()); + + return StatusCode::SUCCESS; +} diff --git a/MagneticField/MagFieldUtils/src/MagFieldCondReader.h b/MagneticField/MagFieldUtils/src/MagFieldCondReader.h new file mode 100644 index 00000000000..96fbf4046fa --- /dev/null +++ b/MagneticField/MagFieldUtils/src/MagFieldCondReader.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef MAGFIELDUTILS_MAGFIELDCONDREADER_H +#define MAGFIELDUTILS_MAGFIELDCONDREADER_H + +#include "AthenaBaseComps/AthReentrantAlgorithm.h" +#include "MagFieldConditions/AtlasFieldCacheCondObj.h" +#include "StoreGate/ReadHandleKey.h" + +namespace MagField { + + /** + * Testing algorithm to read magnetic field + */ + class CondReader : public AthReentrantAlgorithm { + + public: + CondReader(const std::string& name, ISvcLocator* pSvcLocator); + StatusCode initialize() override; + StatusCode execute(const EventContext& ctx) const override; + + private: + SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheKey{ + this, "AtlasFieldCacheCondObj", "fieldCondObj", "Magnetic Field conditions object key"}; + }; + +} // namespace MagField + +#endif diff --git a/MagneticField/MagFieldUtils/src/components/MagFieldUtils_entries.cxx b/MagneticField/MagFieldUtils/src/components/MagFieldUtils_entries.cxx index f0d04aae274..ae4d9b8978c 100644 --- a/MagneticField/MagFieldUtils/src/components/MagFieldUtils_entries.cxx +++ b/MagneticField/MagFieldUtils/src/components/MagFieldUtils_entries.cxx @@ -1,8 +1,9 @@ #include "MagFieldUtils/MagFieldTestbedAlg.h" #include "MagFieldUtils/SolenoidTest.h" #include "MagFieldUtils/IdentityManipulator.h" +#include "../MagFieldCondReader.h" DECLARE_COMPONENT( MagField::MagFieldTestbedAlg ) DECLARE_COMPONENT( MagField::SolenoidTest ) DECLARE_COMPONENT( MagField::IdentityManipulator ) - +DECLARE_COMPONENT( MagField::CondReader ) -- GitLab