ATLAS Offline Software
Loading...
Searching...
No Matches
CaloTowerBuilderTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef CALOREC_CALOTOWERBUILDERTOOL_H
6#define CALOREC_CALOTOWERBUILDERTOOL_H
16
18
21
22
23
24#include <string>
25#include <vector>
26
27class CaloTower;
28class CaloTowerStore;
30class StoreGateSvc;
31class MsgStream;
32
34{
35public:
38
40 CaloTowerBuilderTool(const std::string& name, const std::string& type,
41 const IInterface* parent);
43
44
60 virtual StatusCode execute(const EventContext& ctx,
61 CaloTowerContainer* theContainer,
62 const CaloCellContainer* theCell=0,
63 const CaloTowerSeg::SubSeg* subseg = 0) const override;
64
65
74 virtual StatusCode execute (const EventContext& ctx,
75 CaloTowerContainer* theContainer) override;
76
77
78 virtual void setCalos(const EventContext& ctx,
79 const std::vector<CaloCell_ID::SUBCALO>& v);
80
81 virtual StatusCode initializeTool() override;
82
83
84protected:
89 virtual std::vector<CaloCell_ID::SUBCALO> parseCalos
90 (const std::vector<std::string>& includedCalos) const;
91
92 void runTimeInit(const EventContext& ctx) const;
93
94private:
95
97 // Properties //
99
100 std::vector<std::string> m_includedCalos;
101
103 // Store and Services //
105
106 std::vector<CaloCell_ID::SUBCALO> m_caloIndices;
107
109 // Specific Initialization //
111
113 mutable std::once_flag m_onceFlag;
114
115 virtual StatusCode checkSetup(MsgStream& log);
116 static void addTower (const CaloTowerStore::tower_iterator tower_it,
117 const ElementLink<CaloCellContainer>& cellsEL,
118 CaloTower* tower) ;
119 void iterateFull (CaloTowerContainer* towers,
120 const ElementLink<CaloCellContainer>& cellsEL) const;
121 void iterateSubSeg (CaloTowerContainer* towers,
122 const ElementLink<CaloCellContainer>& cellsEL,
123 const CaloTowerSeg::SubSeg* subseg) const;
124
125
129 StatusCode rebuildLookup(const EventContext& ctx);
130
131};
132#endif
Container class for CaloCell.
CaloTowerBuilderToolBase(const std::string &name, const std::string &type, const IInterface *parent)
AlgTool constructor.
CaloTowerBuilderTool & operator=(const CaloTowerBuilderTool &)=delete
virtual void setCalos(const EventContext &ctx, const std::vector< CaloCell_ID::SUBCALO > &v)
virtual StatusCode checkSetup(MsgStream &log)
void runTimeInit(const EventContext &ctx) const
virtual StatusCode execute(const EventContext &ctx, CaloTowerContainer *theContainer, const CaloCellContainer *theCell=0, const CaloTowerSeg::SubSeg *subseg=0) const override
Run tower building and add results to the tower container.
void iterateFull(CaloTowerContainer *towers, const ElementLink< CaloCellContainer > &cellsEL) const
std::vector< std::string > m_includedCalos
std::vector< CaloCell_ID::SUBCALO > m_caloIndices
static void addTower(const CaloTowerStore::tower_iterator tower_it, const ElementLink< CaloCellContainer > &cellsEL, CaloTower *tower)
virtual ~CaloTowerBuilderTool()
CaloTowerBuilderTool(const CaloTowerBuilderTool &)=delete
void iterateSubSeg(CaloTowerContainer *towers, const ElementLink< CaloCellContainer > &cellsEL, const CaloTowerSeg::SubSeg *subseg) const
virtual StatusCode initializeTool() override
StatusCode rebuildLookup(const EventContext &ctx)
Rebuild the cell lookup table.
virtual std::vector< CaloCell_ID::SUBCALO > parseCalos(const std::vector< std::string > &includedCalos) const
Convert calorimeter strings to enums.
Storable container class for CaloTower.
A rectangular window within the segmentation.
Data class for calorimeter cell towers.
The Athena Transient Store API.