diff --git a/Trigger/TrigHypothesis/TrigHIHypo/src/HICaloCellCorectionTool.cxx b/Trigger/TrigHypothesis/TrigHIHypo/src/HICaloCellCorectionTool.cxx index c17b37459e9907a887871dd81643af927767c778..77891cc0857d6a993d1569a904ab44b13f1fff26 100644 --- a/Trigger/TrigHypothesis/TrigHIHypo/src/HICaloCellCorectionTool.cxx +++ b/Trigger/TrigHypothesis/TrigHIHypo/src/HICaloCellCorectionTool.cxx @@ -4,32 +4,29 @@ #include "HICaloCellCorectionTool.h" +#include "StoreGate/ReadHandle.h" + HICaloCellCorectionTool::HICaloCellCorectionTool(const std::string& type, const std::string& name, const IInterface* parent) - :AthAlgTool(type,name,parent), - m_eventShape(nullptr), - m_avgEnergy(0) + : base_class(type,name,parent) { - declareInterface<ICaloCellMakerTool>(this); - // declareProperty("CaloCellContainerName",m_CaloCellContainerName="SubtractedCells", "Name of corrected collection of cells"); - declareProperty("HIEventShapeContainerName",m_HIEventShapeContainerName="HLT_xAOD__HIEventShapeContainer_HIUE", "This HIEventShapeContainer object will be used"); - // declareProperty("EventShapeFillerTool", m_eventShapeTool,"EventShapeFillerTool "); + declareProperty("HIEventShapeContainerName",m_eventShapeKey="HLT_xAOD__HIEventShapeContainer_HIUE", "This HIEventShapeContainer object will be used"); } -StatusCode HICaloCellCorectionTool::initialize(){ - +StatusCode HICaloCellCorectionTool::initialize() +{ + ATH_CHECK( m_eventShapeKey.initialize() ); return StatusCode::SUCCESS; } StatusCode HICaloCellCorectionTool::process(CaloCellContainer* cells){ - + const EventContext& ctx = Gaudi::Hive::currentContext(); // ATH_MSG_INFO( evtStore()->dump() ); - - m_eventShape = nullptr; - CHECK( evtStore()->retrieve(m_eventShape, m_HIEventShapeContainerName) ); + + SG::ReadHandle<xAOD::HIEventShapeContainer> eventShape (m_eventShapeKey, ctx); CaloCellContainer clone(SG::VIEW_ELEMENTS); // this is not newed as it will be disposed at the return from this fucntion clone.insert(clone.end(), cells->begin(), cells->end()); @@ -44,12 +41,12 @@ StatusCode HICaloCellCorectionTool::process(CaloCellContainer* cells){ double cellEta = cell->eta(); double cellsinTheta = cell->sinTh(); - m_avgEnergy = getAvgEnergy(cellLayer, cellEta); + double avgEnergy = getAvgEnergy(*eventShape, cellLayer, cellEta); double cellEt = cell->et(); - //ATH_MSG_INFO( "Correction " << cellEt << " " << m_avgEnergy); + //ATH_MSG_INFO( "Correction " << cellEt << " " << avgEnergy); - double totEnergy = cellEt - m_avgEnergy; + double totEnergy = cellEt - avgEnergy; totEnergy /= cellsinTheta; CaloCell* cell_clone = cell->clone(); cell_clone->setEnergy(totEnergy); @@ -61,11 +58,15 @@ StatusCode HICaloCellCorectionTool::process(CaloCellContainer* cells){ } -double HICaloCellCorectionTool::getAvgEnergy(const int layer, const double eta){ - unsigned int size = m_eventShape->size(); +double +HICaloCellCorectionTool::getAvgEnergy(const xAOD::HIEventShapeContainer& eventShape, + const int layer, + const double eta) const +{ + unsigned int size = eventShape.size(); for(unsigned int i =0; i<size; i++){ - const xAOD::HIEventShape* ev = m_eventShape->at(i); + const xAOD::HIEventShape* ev = eventShape.at(i); int evLayer = ev->layer(); if(evLayer == layer && (eta <= ev->etaMax() && eta > ev->etaMin())){ @@ -76,6 +77,4 @@ double HICaloCellCorectionTool::getAvgEnergy(const int layer, const double eta){ else continue; } return 0.; - - } diff --git a/Trigger/TrigHypothesis/TrigHIHypo/src/HICaloCellCorectionTool.h b/Trigger/TrigHypothesis/TrigHIHypo/src/HICaloCellCorectionTool.h index 7fb3f1a3c7bb9c9b74f111d8d989c2704cab37c8..5f9d3523adfad727b53203a6b79d5568aa3b447f 100644 --- a/Trigger/TrigHypothesis/TrigHIHypo/src/HICaloCellCorectionTool.h +++ b/Trigger/TrigHypothesis/TrigHIHypo/src/HICaloCellCorectionTool.h @@ -11,25 +11,26 @@ #include "CaloEvent/CaloCellContainer.h" #include "xAODHIEvent/HIEventShapeContainer.h" #include "HIGlobal/IHIEventShapeFiller.h" +#include "StoreGate/ReadHandleKey.h" #include <string> //using namespace xAOD; -class HICaloCellCorectionTool : public ICaloCellMakerTool, public AthAlgTool{ +class HICaloCellCorectionTool + : public extends<AthAlgTool, ICaloCellMakerTool> +{ public: HICaloCellCorectionTool(const std::string& type, const std::string& name, const IInterface* parent); virtual ~HICaloCellCorectionTool(){}; - virtual StatusCode initialize(); - virtual StatusCode process(CaloCellContainer* cellContainer); + virtual StatusCode initialize() override; + virtual StatusCode process(CaloCellContainer* cellContainer) override; private: - std::string m_CaloCellContainerName; - std::string m_HIEventShapeContainerName; - const xAOD::HIEventShapeContainer* m_eventShape; - // ToolHandle<IHIEventShapeFiller> m_eventShapeTool; - double m_avgEnergy; - double getAvgEnergy(const int layer, const double eta); + SG::ReadHandleKey<xAOD::HIEventShapeContainer> m_eventShapeKey; + double getAvgEnergy (const xAOD::HIEventShapeContainer& eventShape, + const int layer, + const double eta) const; };