ATLAS Offline Software
Loading...
Searching...
No Matches
CaloCalibClusterTruthMapMakerTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7
9 const std::string& type,
10 const std::string& name,
11 const IInterface* parent)
12 : AthAlgTool(type, name, parent)
13{}
14
33
34StatusCode CaloCalibClusterTruthMapMakerTool::execute(const EventContext& ctx, [[maybe_unused]]xAOD::CaloClusterContainer* theClusColl) const{
35
37 ATH_CHECK(mapIdentifierToCalibHitsWriteHandle.record(std::make_unique<std::map<Identifier,std::vector<const CaloCalibrationHit*> > >()));
38 fillIdentifierToCaloHitMap(*mapIdentifierToCalibHitsWriteHandle, ctx);
39
40 return StatusCode::SUCCESS;
41}
42
43
44StatusCode CaloCalibClusterTruthMapMakerTool::finalize(){return StatusCode::SUCCESS;}
45
46void CaloCalibClusterTruthMapMakerTool::fillIdentifierToCaloHitMap(std::map<Identifier,std::vector<const CaloCalibrationHit*> >& identifierToCaloHitMap, const EventContext& ctx) const{
47
48 //get calibration hit containers and add them to a vector
49
50 std::vector<SG::ReadHandle<CaloCalibrationHitContainer> > calibrationHitReadHandles;
51
52 {
54 if (!tileActiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileActiveCaloCalibrationHitReadHandle.key());
55 else calibrationHitReadHandles.push_back(std::move(tileActiveCaloCalibrationHitReadHandle));
56 }
57
58 {
60 if (!tileInactiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileInactiveCaloCalibrationHitReadHandle.key());
61 else calibrationHitReadHandles.push_back(std::move(tileInactiveCaloCalibrationHitReadHandle));
62 }
63
64 {
66 if (!tileDMCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileDMCaloCalibrationHitReadHandle.key());
67
68 else calibrationHitReadHandles.push_back(std::move(tileDMCaloCalibrationHitReadHandle));
69 }
70
71 {
73 if (!lArActiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArActiveCaloCalibrationHitReadHandle.key());
74 else calibrationHitReadHandles.push_back(std::move(lArActiveCaloCalibrationHitReadHandle));
75 }
76
77 {
79 if (!lArInactiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArInactiveCaloCalibrationHitReadHandle.key());
80 else calibrationHitReadHandles.push_back(std::move(lArInactiveCaloCalibrationHitReadHandle));
81 }
82
83 {
85 if (!lArDMCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArDMCaloCalibrationHitReadHandle.key());
86 else calibrationHitReadHandles.push_back(std::move(lArDMCaloCalibrationHitReadHandle));
87 }
88
89 for (auto& thisCalibrationHitReadHandle : calibrationHitReadHandles){
90 for (const auto *thisCalibrationHit : *thisCalibrationHitReadHandle){
91
92 if (!thisCalibrationHit) {
93 ATH_MSG_WARNING("Got invalid pointer to CaloCalibrationHit in container with key :" << thisCalibrationHitReadHandle.key());
94 continue;
95 }
96
97 //fill the map
98 Identifier thisIdentifier = thisCalibrationHit->cellID();
99
100 auto [it, inserted] =
101 identifierToCaloHitMap.try_emplace(thisIdentifier);
102
103 it->second.push_back(thisCalibrationHit);
104
105 }//loop on calibration hits in a container
106 }//loop over calibration hit containers
107
108}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
CaloCalibClusterTruthMapMakerTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
virtual StatusCode execute(const EventContext &ctx, xAOD::CaloClusterContainer *theClusColl) const override final
Execute on an entire collection of clusters.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileInactiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Inactive Tile calibration hits.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileDMCaloCalibrationHitReadHandleKey
ReadHandleKey for Tile dead material calibration hits.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArInactiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Inactive LAr calibration hits.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArDMCaloCalibrationHitReadHandleKey
ReadHandleKey for LAr dead material calibration hits.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileActiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Active Tile calibration hits.
void fillIdentifierToCaloHitMap(std::map< Identifier, std::vector< const CaloCalibrationHit * > > &identifierToCaloHitMap, const EventContext &ctx) const
builds a lookup table from cellID to calibration hits
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticleReadHandleKey
ReadHandleKey for the truth particle container.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArActiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Active LAr calibration hits.
SG::WriteHandleKey< std::map< Identifier, std::vector< const CaloCalibrationHit * > > > m_mapIdentifierToCalibHitsWriteHandleKey
WriteHandleKey for the Identifier to calibration hits map.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.