ATLAS Offline Software
Loading...
Searching...
No Matches
CaloCalibClusterTruthMapMakerAlgorithm.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
24
25StatusCode CaloCalibClusterTruthMapMakerAlgorithm::execute(const EventContext& ctx) const{
26
28 ATH_CHECK(mapIdentifierToCalibHitsWriteHandle.record(std::make_unique<std::map<Identifier,std::vector<const CaloCalibrationHit*> > >()));
29 fillIdentifierToCaloHitMap(*mapIdentifierToCalibHitsWriteHandle, ctx);
30
31 return StatusCode::SUCCESS;
32}
33
34
35StatusCode CaloCalibClusterTruthMapMakerAlgorithm::finalize(){return StatusCode::SUCCESS;}
36
37void CaloCalibClusterTruthMapMakerAlgorithm::fillIdentifierToCaloHitMap(std::map<Identifier,std::vector<const CaloCalibrationHit*> >& identifierToCaloHitMap, const EventContext& ctx) const{
38
39 //get calibration hit containers and add them to a vector
40
41 std::vector<SG::ReadHandle<CaloCalibrationHitContainer> > calibrationHitReadHandles;
42
43 {
45 if (!tileActiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileActiveCaloCalibrationHitReadHandle.key());
46 else calibrationHitReadHandles.push_back(std::move(tileActiveCaloCalibrationHitReadHandle));
47 }
48
49 {
51 if (!tileInactiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileInactiveCaloCalibrationHitReadHandle.key());
52 else calibrationHitReadHandles.push_back(std::move(tileInactiveCaloCalibrationHitReadHandle));
53 }
54
55 {
57 if (!tileDMCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileDMCaloCalibrationHitReadHandle.key());
58
59 else calibrationHitReadHandles.push_back(std::move(tileDMCaloCalibrationHitReadHandle));
60 }
61
62 {
64 if (!lArActiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArActiveCaloCalibrationHitReadHandle.key());
65 else calibrationHitReadHandles.push_back(std::move(lArActiveCaloCalibrationHitReadHandle));
66 }
67
68 {
70 if (!lArInactiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArInactiveCaloCalibrationHitReadHandle.key());
71 else calibrationHitReadHandles.push_back(std::move(lArInactiveCaloCalibrationHitReadHandle));
72 }
73
74 {
76 if (!lArDMCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArDMCaloCalibrationHitReadHandle.key());
77 else calibrationHitReadHandles.push_back(std::move(lArDMCaloCalibrationHitReadHandle));
78 }
79
80 for (auto& thisCalibrationHitReadHandle : calibrationHitReadHandles){
81 for (const auto *thisCalibrationHit : *thisCalibrationHitReadHandle){
82
83 if (!thisCalibrationHit) {
84 ATH_MSG_WARNING("Got invalid pointer to CaloCalibrationHit in container with key :" << thisCalibrationHitReadHandle.key());
85 continue;
86 }
87
88 //fill the map
89 Identifier thisIdentifier = thisCalibrationHit->cellID();
90 //count returns 1 if the key exists, otherwise it returns 0
91 int count = identifierToCaloHitMap.count(thisIdentifier);
92 if (0 == count) identifierToCaloHitMap[thisIdentifier] = std::vector<const CaloCalibrationHit*>{thisCalibrationHit};
93 else identifierToCaloHitMap[thisIdentifier].push_back(thisCalibrationHit);
94
95 }//loop on calibration hits in a container
96 }//loop over calibration hit containers
97
98}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
virtual StatusCode execute(const EventContext &ctx) const override
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileDMCaloCalibrationHitReadHandleKey
ReadHandleKey for Dead Material Tile Calibration Hits.
SG::WriteHandleKey< std::map< Identifier, std::vector< const CaloCalibrationHit * > > > m_mapIdentifierToCalibHitsWriteHandleKey
WriteHandleKey for the map between Identifiers and sets of calibration hits.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArDMCaloCalibrationHitReadHandleKey
ReadHandleKey for Dead Material LAr Calibration Hits.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileInactiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Inactive Tile Calibration Hits.
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticleReadHandleKey
ReadHandle for the TruthParticles.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileActiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Active Tile Calibration Hits.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArInactiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Inactive LAr Calibration Hits.
void fillIdentifierToCaloHitMap(std::map< Identifier, std::vector< const CaloCalibrationHit * > > &identifierToCaloHitMap, const EventContext &ctx) const
This fills a map between calorimeter cell identifiers and calibration hits for a fast lookup.
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArActiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Active LAr Calibration Hits.
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.
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:146