ATLAS Offline Software
TruthHitSummaryAlg.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 
4  ** @brief This alg receives the container of truth muons and decorates them
5  * with hit counts and coincidences in different positions of the detector,
6  * as well as hits'ID classified by chamber technology.
7 */
8 
9 #ifndef MUONTRUTHALGS_TruthHitSummaryAlg_H
10 #define MUONTRUTHALGS_TruthHitSummaryAlg_H
11 
12 
13 
20 
22 
24 
25 #include <map>
26 
27 namespace Muon {
28 
30  public:
31 
32  // Constructor with parameters:
33  using AthReentrantAlgorithm::AthReentrantAlgorithm;
34 
35  // Basic algorithm methods:
36  virtual StatusCode initialize() override;
37  virtual StatusCode execute(const EventContext& ctx) const override;
38 
43  using ChamberIdMap = std::map<Muon::MuonStationIndex::ChIndex, std::vector<Identifier>>;
44 
45  private:
52  using WriteDecor_uint8_t = std::unique_ptr<SG::WriteDecorHandle<xAOD::TruthParticleContainer, uint8_t>>;
53  using llvec = std::vector<unsigned long long>;
54  using WriteDecor_llvec = std::unique_ptr<SG::WriteDecorHandle<xAOD::TruthParticleContainer, llvec>>;
55  friend struct summaryDecors;
56  struct summaryDecors{
57 
59  const EventContext& ctx) :
61  m_ctx{ctx} {}
62 
64  const EventContext& m_ctx;
65 
85 
92 
93  };
94 
117  StatusCode addHitCounts(const EventContext& ctx,
118  const xAOD::TruthParticle& truthParticle,
119  ChamberIdMap& ids,
120  summaryDecors& myDecors) const;
121 
128  StatusCode addHitIDVectors(const xAOD::TruthParticle& truthParticle,
129  const ChamberIdMap& ids,
130  summaryDecors& myDecors) const;
131 
133  SG::ReadHandleKey<xAOD::TruthParticleContainer> m_muonTruth{this, "muonTruth", "MuonTruthParticles"};
134 
140  this, "PRD_TruthMaps", {"CSC_TruthMap", "RPC_TruthMap", "TGC_TruthMap", "MDT_TruthMap"}, "remove NSW by default for now, can always be changed in the configuration"};
141 
152  WriteDecorKey_t m_nprecLayersKey{this, "nprecLayersKey", m_muonTruth, "nprecLayers", ""};
153  WriteDecorKey_t m_nphiLayersKey{this, "nphiLayersKey", m_muonTruth, "nphiLayers", ""};
154  WriteDecorKey_t m_ntrigEtaLayersKey{this, "ntrigEtaLayersKey", m_muonTruth, "ntrigEtaLayers", ""};
155  WriteDecorKey_t m_innerSmallHitsKey{this, "innerSmallHitsKey", m_muonTruth, "innerSmallHits", ""};
156  WriteDecorKey_t m_innerLargeHitsKey{this, "innerLargeHitsKey", m_muonTruth, "innerLargeHits", ""};
157  WriteDecorKey_t m_middleSmallHitsKey{this, "middleSmallHitsKey", m_muonTruth, "middleSmallHits", ""};
158  WriteDecorKey_t m_middleLargeHitsKey{this, "middleLargeHitsKey", m_muonTruth, "middleLargeHits", ""};
159  WriteDecorKey_t m_outerSmallHitsKey{this, "outerSmallHitsKey", m_muonTruth, "outerSmallHits", ""};
160  WriteDecorKey_t m_outerLargeHitsKey{this, "outerLargeHitsKey", m_muonTruth, "outerLargeHits", ""};
161  WriteDecorKey_t m_extendedSmallHitsKey{this, "extendedSmallHitsKey", m_muonTruth, "extendedSmallHits", ""};
162  WriteDecorKey_t m_extendedLargeHitsKey{this, "extendedLargeHitsKey", m_muonTruth, "extendedLargeHits", ""};
163  WriteDecorKey_t m_phiLayer1HitsKey{this, "phiLayer1HitsKey", m_muonTruth, "phiLayer1Hits", ""};
164  WriteDecorKey_t m_phiLayer2HitsKey{this, "phiLayer2HitsKey", m_muonTruth, "phiLayer2Hits", ""};
165  WriteDecorKey_t m_phiLayer3HitsKey{this, "phiLayer3HitsKey", m_muonTruth, "phiLayer3Hits", ""};
166  WriteDecorKey_t m_phiLayer4HitsKey{this, "phiLayer4HitsKey", m_muonTruth, "phiLayer4Hits", ""};
167  WriteDecorKey_t m_etaLayer1HitsKey{this, "etaLayer1HitsKey", m_muonTruth, "etaLayer1Hits", ""};
168  WriteDecorKey_t m_etaLayer2HitsKey{this, "etaLayer2HitsKey", m_muonTruth, "etaLayer2Hits", ""};
169  WriteDecorKey_t m_etaLayer3HitsKey{this, "etaLayer3HitsKey", m_muonTruth, "etaLayer3Hits", ""};
170  WriteDecorKey_t m_etaLayer4HitsKey{this, "etaLayer4HitsKey", m_muonTruth, "etaLayer4Hits", ""};
171 
172  WriteDecorKey_t m_truthMdtHitsKey{this, "truthMdtHitsKey", m_muonTruth, "truthMdtHits", ""};
173  WriteDecorKey_t m_truthTgcHitsKey{this, "truthTgcHitsKey", m_muonTruth, "truthTgcHits", ""};
174  WriteDecorKey_t m_truthRpcHitsKey{this, "truthRpcHitsKey", m_muonTruth, "truthRpcHits", ""};
175  WriteDecorKey_t m_truthCscHitsKey{this, "truthCscHitskey", m_muonTruth, "truthCscHits", ""};
176  WriteDecorKey_t m_truthStgcHitsKey{this, "truthStgcHitsKey", m_muonTruth, "truthStgcHits", ""};
177  WriteDecorKey_t m_truthMMHitsKey{this, "truthMMHitsKey", m_muonTruth, "truthMMHits", ""};
178 
180  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
181 
182  };
183 
184 } // namespace Muon
185 
186 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
Muon::TruthHitSummaryAlg::ChamberIdMap
std::map< Muon::MuonStationIndex::ChIndex, std::vector< Identifier > > ChamberIdMap
This map contains all the hits corresponding to truth muons classified by chamber layer that recorded...
Definition: TruthHitSummaryAlg.h:43
Muon::TruthHitSummaryAlg::m_etaLayer3HitsKey
WriteDecorKey_t m_etaLayer3HitsKey
Definition: TruthHitSummaryAlg.h:169
SG::WriteDecorHandleKey< xAOD::TruthParticleContainer >
Muon::TruthHitSummaryAlg::summaryDecors::truthRpcHitsDecor
WriteDecor_llvec truthRpcHitsDecor
Definition: TruthHitSummaryAlg.h:88
Muon::TruthHitSummaryAlg::summaryDecors::extendedLargeHitsDecor
WriteDecor_uint8_t extendedLargeHitsDecor
Definition: TruthHitSummaryAlg.h:76
Muon::TruthHitSummaryAlg::summaryDecors::innerSmallHitsDecor
WriteDecor_uint8_t innerSmallHitsDecor
Definition: TruthHitSummaryAlg.h:69
Muon::TruthHitSummaryAlg
Definition: TruthHitSummaryAlg.h:29
Muon::TruthHitSummaryAlg::m_truthMdtHitsKey
WriteDecorKey_t m_truthMdtHitsKey
Definition: TruthHitSummaryAlg.h:172
Muon::TruthHitSummaryAlg::m_phiLayer2HitsKey
WriteDecorKey_t m_phiLayer2HitsKey
Definition: TruthHitSummaryAlg.h:164
Muon::TruthHitSummaryAlg::summaryDecors::middleLargeHitsDecor
WriteDecor_uint8_t middleLargeHitsDecor
Definition: TruthHitSummaryAlg.h:72
Muon::TruthHitSummaryAlg::summaryDecors::etaLayer4HitsDecor
WriteDecor_uint8_t etaLayer4HitsDecor
Definition: TruthHitSummaryAlg.h:84
Muon::TruthHitSummaryAlg::addHitIDVectors
StatusCode addHitIDVectors(const xAOD::TruthParticle &truthParticle, const ChamberIdMap &ids, summaryDecors &myDecors) const
This function collapses the information given by the ChamberIdMap, which contains all hits from a tru...
Definition: TruthHitSummaryAlg.cxx:284
TruthParticleContainer.h
Muon::TruthHitSummaryAlg::summaryDecors::extendedSmallHitsDecor
WriteDecor_uint8_t extendedSmallHitsDecor
Definition: TruthHitSummaryAlg.h:75
Muon::TruthHitSummaryAlg::m_outerLargeHitsKey
WriteDecorKey_t m_outerLargeHitsKey
Definition: TruthHitSummaryAlg.h:160
SG::HandleKeyArray
Definition: StoreGate/StoreGate/HandleKeyArray.h:38
Muon::TruthHitSummaryAlg::summaryDecors::etaLayer1HitsDecor
WriteDecor_uint8_t etaLayer1HitsDecor
Definition: TruthHitSummaryAlg.h:81
Muon::TruthHitSummaryAlg::m_etaLayer1HitsKey
WriteDecorKey_t m_etaLayer1HitsKey
Definition: TruthHitSummaryAlg.h:167
Muon::TruthHitSummaryAlg::m_truthCscHitsKey
WriteDecorKey_t m_truthCscHitsKey
Definition: TruthHitSummaryAlg.h:175
SG::ReadHandleKey< xAOD::TruthParticleContainer >
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
Muon::TruthHitSummaryAlg::summaryDecors::phiLayer4HitsDecor
WriteDecor_uint8_t phiLayer4HitsDecor
Definition: TruthHitSummaryAlg.h:80
Muon::TruthHitSummaryAlg::llvec
std::vector< unsigned long long > llvec
Definition: TruthHitSummaryAlg.h:53
Muon::TruthHitSummaryAlg::m_extendedSmallHitsKey
WriteDecorKey_t m_extendedSmallHitsKey
Definition: TruthHitSummaryAlg.h:161
Muon::TruthHitSummaryAlg::summaryDecors::nprecLayersDecor
WriteDecor_uint8_t nprecLayersDecor
Definition: TruthHitSummaryAlg.h:66
Muon::TruthHitSummaryAlg::summaryDecors::truthTgcHitsDecor
WriteDecor_llvec truthTgcHitsDecor
Definition: TruthHitSummaryAlg.h:87
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
Muon::TruthHitSummaryAlg::summaryDecors::etaLayer3HitsDecor
WriteDecor_uint8_t etaLayer3HitsDecor
Definition: TruthHitSummaryAlg.h:83
Muon::TruthHitSummaryAlg::summaryDecors::phiLayer1HitsDecor
WriteDecor_uint8_t phiLayer1HitsDecor
Definition: TruthHitSummaryAlg.h:77
Muon::TruthHitSummaryAlg::m_ntrigEtaLayersKey
WriteDecorKey_t m_ntrigEtaLayersKey
Definition: TruthHitSummaryAlg.h:154
DecorUtils.h
Muon::TruthHitSummaryAlg::m_truthMMHitsKey
WriteDecorKey_t m_truthMMHitsKey
Definition: TruthHitSummaryAlg.h:177
WriteDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Muon::TruthHitSummaryAlg::m_nprecLayersKey
WriteDecorKey_t m_nprecLayersKey
Definition: TruthHitSummaryAlg.h:152
Muon::TruthHitSummaryAlg::m_extendedLargeHitsKey
WriteDecorKey_t m_extendedLargeHitsKey
Definition: TruthHitSummaryAlg.h:162
Muon::TruthHitSummaryAlg::summaryDecors::truthMMHitsDecor
WriteDecor_llvec truthMMHitsDecor
Definition: TruthHitSummaryAlg.h:91
Muon::TruthHitSummaryAlg::summaryDecors::phiLayer3HitsDecor
WriteDecor_uint8_t phiLayer3HitsDecor
Definition: TruthHitSummaryAlg.h:79
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Muon::TruthHitSummaryAlg::summaryDecors::ntrigEtaLayersDecor
WriteDecor_uint8_t ntrigEtaLayersDecor
Definition: TruthHitSummaryAlg.h:68
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
Muon::TruthHitSummaryAlg::m_phiLayer3HitsKey
WriteDecorKey_t m_phiLayer3HitsKey
Definition: TruthHitSummaryAlg.h:165
Muon::TruthHitSummaryAlg::m_truthStgcHitsKey
WriteDecorKey_t m_truthStgcHitsKey
Definition: TruthHitSummaryAlg.h:176
WriteDecorHandle.h
Handle class for adding a decoration to an object.
Muon::TruthHitSummaryAlg::m_etaLayer4HitsKey
WriteDecorKey_t m_etaLayer4HitsKey
Definition: TruthHitSummaryAlg.h:170
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Muon::TruthHitSummaryAlg::m_middleLargeHitsKey
WriteDecorKey_t m_middleLargeHitsKey
Definition: TruthHitSummaryAlg.h:158
Muon::TruthHitSummaryAlg::m_innerLargeHitsKey
WriteDecorKey_t m_innerLargeHitsKey
Definition: TruthHitSummaryAlg.h:156
Muon::TruthHitSummaryAlg::WriteDecor_uint8_t
std::unique_ptr< SG::WriteDecorHandle< xAOD::TruthParticleContainer, uint8_t > > WriteDecor_uint8_t
Struct object encapsulating all write-decorators.
Definition: TruthHitSummaryAlg.h:52
Muon::TruthHitSummaryAlg::summaryDecors::truthMdtHitsDecor
WriteDecor_llvec truthMdtHitsDecor
Definition: TruthHitSummaryAlg.h:86
Muon::TruthHitSummaryAlg::addHitCounts
StatusCode addHitCounts(const EventContext &ctx, const xAOD::TruthParticle &truthParticle, ChamberIdMap &ids, summaryDecors &myDecors) const
This is the actual function that decorates truth muons with hit counts.
Definition: TruthHitSummaryAlg.cxx:66
Muon::TruthHitSummaryAlg::summaryDecors::innerLargeHitsDecor
WriteDecor_uint8_t innerLargeHitsDecor
Definition: TruthHitSummaryAlg.h:70
AthReentrantAlgorithm.h
Muon::TruthHitSummaryAlg::summaryDecors::outerLargeHitsDecor
WriteDecor_uint8_t outerLargeHitsDecor
Definition: TruthHitSummaryAlg.h:74
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
Muon::TruthHitSummaryAlg::summaryDecors::summaryDecors
summaryDecors(const TruthHitSummaryAlg *parent, const EventContext &ctx)
Definition: TruthHitSummaryAlg.h:58
Muon::TruthHitSummaryAlg::m_outerSmallHitsKey
WriteDecorKey_t m_outerSmallHitsKey
Definition: TruthHitSummaryAlg.h:159
Muon::TruthHitSummaryAlg::summaryDecors::etaLayer2HitsDecor
WriteDecor_uint8_t etaLayer2HitsDecor
Definition: TruthHitSummaryAlg.h:82
Muon::TruthHitSummaryAlg::WriteDecor_llvec
std::unique_ptr< SG::WriteDecorHandle< xAOD::TruthParticleContainer, llvec > > WriteDecor_llvec
Definition: TruthHitSummaryAlg.h:54
Muon::TruthHitSummaryAlg::m_truthTgcHitsKey
WriteDecorKey_t m_truthTgcHitsKey
Definition: TruthHitSummaryAlg.h:173
Muon::TruthHitSummaryAlg::m_phiLayer4HitsKey
WriteDecorKey_t m_phiLayer4HitsKey
Definition: TruthHitSummaryAlg.h:166
Muon::TruthHitSummaryAlg::m_muonTruth
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_muonTruth
Key of the container of truth muons.
Definition: TruthHitSummaryAlg.h:133
Muon::TruthHitSummaryAlg::m_truthRpcHitsKey
WriteDecorKey_t m_truthRpcHitsKey
Definition: TruthHitSummaryAlg.h:174
Muon::TruthHitSummaryAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Handle for muonIdHelper service.
Definition: TruthHitSummaryAlg.h:180
Muon::TruthHitSummaryAlg::summaryDecors::m_parent
const TruthHitSummaryAlg * m_parent
Definition: TruthHitSummaryAlg.h:63
Muon::TruthHitSummaryAlg::summaryDecors::phiLayer2HitsDecor
WriteDecor_uint8_t phiLayer2HitsDecor
Definition: TruthHitSummaryAlg.h:78
Muon::TruthHitSummaryAlg::m_middleSmallHitsKey
WriteDecorKey_t m_middleSmallHitsKey
Definition: TruthHitSummaryAlg.h:157
PRD_MultiTruthCollection.h
Muon::TruthHitSummaryAlg::m_nphiLayersKey
WriteDecorKey_t m_nphiLayersKey
Definition: TruthHitSummaryAlg.h:153
Muon::TruthHitSummaryAlg::m_phiLayer1HitsKey
WriteDecorKey_t m_phiLayer1HitsKey
Definition: TruthHitSummaryAlg.h:163
Muon::TruthHitSummaryAlg::m_innerSmallHitsKey
WriteDecorKey_t m_innerSmallHitsKey
Definition: TruthHitSummaryAlg.h:155
Muon::TruthHitSummaryAlg::summaryDecors::outerSmallHitsDecor
WriteDecor_uint8_t outerSmallHitsDecor
Definition: TruthHitSummaryAlg.h:73
Muon::TruthHitSummaryAlg::m_PRD_TruthNames
SG::ReadHandleKeyArray< PRD_MultiTruthCollection > m_PRD_TruthNames
Keys for the containers of truth hits, grouped by detector technology.
Definition: TruthHitSummaryAlg.h:139
Muon::TruthHitSummaryAlg::summaryDecors::m_ctx
const EventContext & m_ctx
Definition: TruthHitSummaryAlg.h:64
Muon::TruthHitSummaryAlg::m_etaLayer2HitsKey
WriteDecorKey_t m_etaLayer2HitsKey
Definition: TruthHitSummaryAlg.h:168
Muon::TruthHitSummaryAlg::summaryDecors
friend struct summaryDecors
Definition: TruthHitSummaryAlg.h:55
Muon::TruthHitSummaryAlg::summaryDecors
Definition: TruthHitSummaryAlg.h:56
Muon::TruthHitSummaryAlg::summaryDecors::middleSmallHitsDecor
WriteDecor_uint8_t middleSmallHitsDecor
Definition: TruthHitSummaryAlg.h:71
Muon::TruthHitSummaryAlg::summaryDecors::truthStgcHitsDecor
WriteDecor_llvec truthStgcHitsDecor
Definition: TruthHitSummaryAlg.h:90
Muon::TruthHitSummaryAlg::summaryDecors::truthCscHitsDecor
WriteDecor_llvec truthCscHitsDecor
Definition: TruthHitSummaryAlg.h:89
IMuonIdHelperSvc.h
Muon::TruthHitSummaryAlg::summaryDecors::nphiLayersDecor
WriteDecor_uint8_t nphiLayersDecor
Definition: TruthHitSummaryAlg.h:67
Muon::TruthHitSummaryAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: TruthHitSummaryAlg.cxx:50
ServiceHandle< Muon::IMuonIdHelperSvc >
Muon::TruthHitSummaryAlg::initialize
virtual StatusCode initialize() override
Definition: TruthHitSummaryAlg.cxx:15