ATLAS Offline Software
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 
8 
12 
16 
18 
20 
21  return StatusCode::SUCCESS;
22 
23 }
24 
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 
36 
37 void 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 }
CaloCalibClusterTruthMapMakerAlgorithm::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: CaloCalibClusterTruthMapMakerAlgorithm.cxx:25
CaloCalibClusterTruthMapMakerAlgorithm::m_truthParticleReadHandleKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticleReadHandleKey
ReadHandle for the TruthParticles.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.h:62
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
CaloCalibClusterTruthMapMakerAlgorithm::finalize
virtual StatusCode finalize() override
Definition: CaloCalibClusterTruthMapMakerAlgorithm.cxx:35
CaloCalibClusterTruthMapMakerAlgorithm.h
CaloCalibClusterTruthMapMakerAlgorithm::fillIdentifierToCaloHitMap
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.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.cxx:37
CaloCalibClusterTruthMapMakerAlgorithm::m_lArDMCaloCalibrationHitReadHandleKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArDMCaloCalibrationHitReadHandleKey
ReadHandleKey for Dead Material LAr Calibration Hits.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.h:59
CaloCalibClusterTruthMapMakerAlgorithm::m_lArActiveCaloCalibrationHitReadHandleKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArActiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Active LAr Calibration Hits.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.h:53
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
CaloCalibClusterTruthMapMakerAlgorithm::initialize
virtual StatusCode initialize() override
Definition: CaloCalibClusterTruthMapMakerAlgorithm.cxx:7
CaloCalibClusterTruthMapMakerAlgorithm::m_mapIdentifierToCalibHitsWriteHandleKey
SG::WriteHandleKey< std::map< Identifier, std::vector< const CaloCalibrationHit * > > > m_mapIdentifierToCalibHitsWriteHandleKey
WriteHandleKey for the map between Identifiers and sets of calibration hits.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.h:65
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::VarHandleBase::key
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:64
CaloCalibClusterTruthMapMakerAlgorithm::m_tileActiveCaloCalibrationHitReadHandleKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileActiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Active Tile Calibration Hits.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.h:44
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CaloCalibClusterTruthMapMakerAlgorithm::m_tileDMCaloCalibrationHitReadHandleKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileDMCaloCalibrationHitReadHandleKey
ReadHandleKey for Dead Material Tile Calibration Hits.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.h:50
CaloCalibClusterTruthMapMakerAlgorithm::m_lArInactiveCaloCalibrationHitReadHandleKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_lArInactiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Inactive LAr Calibration Hits.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.h:56
CaloCalibClusterTruthMapMakerAlgorithm::m_tileInactiveCaloCalibrationHitReadHandleKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_tileInactiveCaloCalibrationHitReadHandleKey
ReadHandleKey for Inactive Tile Calibration Hits.
Definition: CaloCalibClusterTruthMapMakerAlgorithm.h:47
Identifier
Definition: IdentifierFieldParser.cxx:14