ATLAS Offline Software
Loading...
Searching...
No Matches
CaloTowerBuilderTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 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 std::vector<CaloCell_ID::SUBCALO>& v);
79
80 virtual StatusCode initializeTool() override;
81
82
83protected:
88 virtual std::vector<CaloCell_ID::SUBCALO> parseCalos
89 (const std::vector<std::string>& includedCalos) const;
90
91 void runTimeInit(const EventContext& ctx) const;
92
93private:
94
96 // Properties //
98
99 std::vector<std::string> m_includedCalos;
100
102 // Store and Services //
104
105 std::vector<CaloCell_ID::SUBCALO> m_caloIndices;
106
108 // Specific Initialization //
110
112 mutable std::once_flag m_onceFlag;
113
114 virtual StatusCode checkSetup(MsgStream& log);
115 static void addTower (const CaloTowerStore::tower_iterator tower_it,
116 const ElementLink<CaloCellContainer>& cellsEL,
117 CaloTower* tower) ;
118 void iterateFull (CaloTowerContainer* towers,
119 const ElementLink<CaloCellContainer>& cellsEL) const;
120 void iterateSubSeg (CaloTowerContainer* towers,
121 const ElementLink<CaloCellContainer>& cellsEL,
122 const CaloTowerSeg::SubSeg* subseg) const;
123
124
128 StatusCode rebuildLookup(const EventContext& ctx);
129
130};
131#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 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.
virtual void setCalos(const std::vector< CaloCell_ID::SUBCALO > &v)
Storable container class for CaloTower.
A rectangular window within the segmentation.
Data class for calorimeter cell towers.
The Athena Transient Store API.