From 866082a0821048c1049a87715b030eae91e52b2e Mon Sep 17 00:00:00 2001 From: Pavol Strizenec <pavol.strizenec@cern.ch> Date: Tue, 11 Dec 2018 17:40:24 +0000 Subject: [PATCH] DataHandles in CellsInConeThinning --- .../CellsInConeThinning.h | 16 ++++++-- .../src/CellsInConeThinning.cxx | 37 ++++++++----------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCalo/DerivationFrameworkCalo/CellsInConeThinning.h b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCalo/DerivationFrameworkCalo/CellsInConeThinning.h index ddff34add9c..91f301868d0 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCalo/DerivationFrameworkCalo/CellsInConeThinning.h +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCalo/DerivationFrameworkCalo/CellsInConeThinning.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -15,6 +15,12 @@ #include "xAODCaloEvent/CaloClusterFwd.h" #include "xAODEgamma/EgammaFwd.h" #include "DerivationFrameworkInterfaces/IAugmentationTool.h" +#include "StoreGate/ReadHandleKey.h" +#include "StoreGate/WriteHandleKey.h" +#include "xAODEgamma/EgammaContainer.h" +#include "CaloEvent/CaloCellContainer.h" +#include "xAODCaloEvent/CaloCluster.h" + namespace ExpressionParsing { class ExpressionParser; @@ -33,9 +39,11 @@ namespace DerivationFramework { StatusCode addBranches() const; private: - std::string m_SGKey; - std::string m_InputCellsSGKey; - std::string m_OutputClusterSGKey; + SG::ReadHandleKey<xAOD::EgammaContainer> m_SGKey{this, "InputSGKey", "Electrons", "SG key for input container"}; + SG::ReadHandleKey<CaloCellContainer> m_InputCellsSGKey{this, "InputCellsSGKey", "AllCalo", "SG key for input cells container"}; + SG::WriteHandleKey<xAOD::CaloClusterContainer> m_OutputClusterSGKey{this, "OutputClusterSGKey", "EgammaDummyClusters", "SG key for output"}; + SG::WriteHandleKey<CaloClusterCellLinkContainer> m_OutputCellLinkSGKey{this, "OutputCellLinksSGKey", "EgammaDummyCellLink", "SG key for output cell links"}; + std::string m_selectionString; double m_dr; ExpressionParsing::ExpressionParser *m_parser; diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCalo/src/CellsInConeThinning.cxx b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCalo/src/CellsInConeThinning.cxx index 4735593d386..a58e9d22ebf 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCalo/src/CellsInConeThinning.cxx +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCalo/src/CellsInConeThinning.cxx @@ -1,12 +1,9 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -#include "xAODCaloEvent/CaloCluster.h" #include "CaloUtils/CaloClusterStoreHelper.h" -#include "CaloEvent/CaloCellContainer.h" #include "CaloEvent/CaloCellLinkContainer.h" -#include "xAODEgamma/EgammaContainer.h" #include "ExpressionEvaluation/ExpressionParser.h" #include "ExpressionEvaluation/SGxAODProxyLoader.h" @@ -20,22 +17,21 @@ DerivationFramework::CellsInConeThinning::CellsInConeThinning(const std::string& const std::string& name, const IInterface* parent) : AthAlgTool(type, name, parent), - m_SGKey("Electrons"), - m_InputCellsSGKey("AllCalo"), - m_OutputClusterSGKey("EgammaDummyClusters"), m_selectionString(""), m_dr(0.5), m_parser(0) { declareInterface<DerivationFramework::IAugmentationTool>(this); - declareProperty("InputSGKey", m_SGKey="Electrons"); - declareProperty("InputCellsSGKey",m_InputCellsSGKey="AllCalo"); - declareProperty("OutputClusterSGKey",m_OutputClusterSGKey="dummyCluster"); declareProperty("deltaR",m_dr=0.5); } StatusCode DerivationFramework::CellsInConeThinning::initialize(){ + ATH_CHECK(m_SGKey.initialize()); + ATH_CHECK(m_InputCellsSGKey.initialize()); + ATH_CHECK(m_OutputClusterSGKey.initialize()); + ATH_CHECK(m_OutputCellLinkSGKey.initialize()); + if (m_selectionString!="") { ExpressionParsing::MultipleProxyLoader *proxyLoaders = new ExpressionParsing::MultipleProxyLoader(); proxyLoaders->push_back(new ExpressionParsing::SGxAODProxyLoader(evtStore())); @@ -59,11 +55,11 @@ StatusCode DerivationFramework::CellsInConeThinning::finalize(){ StatusCode DerivationFramework::CellsInConeThinning::addBranches() const{ ///Make new container - xAOD::CaloClusterContainer* dummyClusterContainer = CaloClusterStoreHelper::makeContainer(&*evtStore(), - m_OutputClusterSGKey, - msg()); + SG::WriteHandle<xAOD::CaloClusterContainer> dclHdl(m_OutputClusterSGKey); + ATH_CHECK(CaloClusterStoreHelper::AddContainerWriteHandle(&(*evtStore()), dclHdl, msg())); /// Input objects - const xAOD::EgammaContainer* egammas = evtStore()->retrieve< const xAOD::EgammaContainer >(m_SGKey); + SG::ReadHandle<xAOD::EgammaContainer> egHdl(m_SGKey); + const xAOD::EgammaContainer *egammas = egHdl.cptr(); if(!egammas ) { ATH_MSG_ERROR( "Couldn't retrieve egamma container with key: " <<m_SGKey); return StatusCode::FAILURE; @@ -74,7 +70,8 @@ StatusCode DerivationFramework::CellsInConeThinning::addBranches() const{ return StatusCode::SUCCESS; } - const CaloCellContainer* cells = evtStore()->retrieve< const CaloCellContainer >(m_InputCellsSGKey); + SG::ReadHandle<CaloCellContainer> cellHdl(m_InputCellsSGKey); + const CaloCellContainer* cells = cellHdl.cptr(); if(!cells) { ATH_MSG_ERROR( "Couldn't retrieve cell container with key: " <<m_InputCellsSGKey); return StatusCode::FAILURE; @@ -94,7 +91,7 @@ StatusCode DerivationFramework::CellsInConeThinning::addBranches() const{ if(entries.at(index)==true){ xAOD::CaloCluster *dummy = CaloClusterStoreHelper::makeCluster(cells); DerivationFramework::CellsInCone::egammaSelect(dummy,cells,eg,m_dr); - dummyClusterContainer->push_back(dummy); + dclHdl->push_back(dummy); } ++index; } @@ -104,14 +101,12 @@ StatusCode DerivationFramework::CellsInConeThinning::addBranches() const{ for (const xAOD::Egamma* eg : *egammas){ xAOD::CaloCluster *dummy = CaloClusterStoreHelper::makeCluster(cells); DerivationFramework::CellsInCone::egammaSelect(dummy,cells,eg,m_dr); - dummyClusterContainer->push_back(dummy); + dclHdl->push_back(dummy); } } ///Finalize clusters - CHECK( CaloClusterStoreHelper::finalizeClusters(&*evtStore(), - dummyClusterContainer, - m_OutputClusterSGKey, - msg())); + SG::WriteHandle<CaloClusterCellLinkContainer> cellLinks(m_OutputCellLinkSGKey); + ATH_CHECK( CaloClusterStoreHelper::finalizeClusters(cellLinks, dclHdl.ptr())); ///Return return StatusCode::SUCCESS; } -- GitLab