ATLAS Offline Software
CaloCalibClusterTruthMapMakerAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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 
44  if (!tileActiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileActiveCaloCalibrationHitReadHandle.key());
45  else calibrationHitReadHandles.push_back(tileActiveCaloCalibrationHitReadHandle);
46 
48  if (!tileInactiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileInactiveCaloCalibrationHitReadHandle.key());
49  else calibrationHitReadHandles.push_back(tileInactiveCaloCalibrationHitReadHandle);
50 
52  if (!tileDMCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << tileDMCaloCalibrationHitReadHandle.key());
53  else calibrationHitReadHandles.push_back(tileDMCaloCalibrationHitReadHandle);
54 
56  if (!lArActiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArActiveCaloCalibrationHitReadHandle.key());
57  else calibrationHitReadHandles.push_back(lArActiveCaloCalibrationHitReadHandle);
58 
60  if (!lArInactiveCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArInactiveCaloCalibrationHitReadHandle.key());
61  else calibrationHitReadHandles.push_back(lArInactiveCaloCalibrationHitReadHandle);
62 
64  if (!lArDMCaloCalibrationHitReadHandle.isValid()) ATH_MSG_WARNING("Could not retrieve CaloCalibrationHitContainer with key " << lArDMCaloCalibrationHitReadHandle.key());
65  else calibrationHitReadHandles.push_back(lArDMCaloCalibrationHitReadHandle);
66 
67  for (auto& thisCalibrationHitReadHandle : calibrationHitReadHandles){
68  for (const auto *thisCalibrationHit : *thisCalibrationHitReadHandle){
69 
70  if (!thisCalibrationHit) {
71  ATH_MSG_WARNING("Got invalid pointer to CaloCalibrationHit in container with key :" << thisCalibrationHitReadHandle.key());
72  continue;
73  }
74 
75  //fill the map
76  Identifier thisIdentifier = thisCalibrationHit->cellID();
77  //count returns 1 if the key exists, otherwise it returns 0
78  int count = identifierToCaloHitMap.count(thisIdentifier);
79  if (0 == count) identifierToCaloHitMap[thisIdentifier] = std::vector<const CaloCalibrationHit*>{thisCalibrationHit};
80  else identifierToCaloHitMap[thisIdentifier].push_back(thisCalibrationHit);
81 
82  }//loop on calibration hits in a container
83  }//loop over calibration hit containers
84 
85 }
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:70
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:85
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
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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:76
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