ATLAS Offline Software
MuonDigitizationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef MUONDIGITIZATIONR4_MUONDIGITIZATIONTOOL_H
5 #define MUONDIGITIZATIONR4_MUONDIGITIZATIONTOOL_H
6 
9 
10 
11 #include "CLHEP/Random/RandomEngine.h"
13 
14 
17 
21 
22 #include "Acts/Utilities/PointerTraits.hpp"
24 
25 
26 
27 namespace MuonR4 {
29  static_assert(Acts::PointerConcept<TimedHitPtr<xAOD::MuonSimHit>>);
31  public:
33 
34  StatusCode initialize() override;
35 
36 
37  StatusCode processBunchXing(int bunchXing,
38  SubEventIterator bSubEvents,
39  SubEventIterator eSubEvents) override final;
40 
41  StatusCode mergeEvent(const EventContext& ctx) override final;
42 
44  StatusCode prepareEvent(const EventContext& ctx,
45  const unsigned int /*nInputEvents*/) override final;
46 
47 
50  StatusCode processAllSubEvents(const EventContext& ctx) override final;
52  StatusCode processAllSubEvents(const EventContext& ctx) const;
53 
54  protected:
55  CLHEP::HepRandomEngine* getRandomEngine(const EventContext&ctx) const;
56 
58  using TimedHits = std::vector<TimedHitPtr<xAOD::MuonSimHit>>;
59 
64  virtual StatusCode digitize(const EventContext& ctx,
65  const TimedHits& hitsToDigit,
66  xAOD::MuonSimHitContainer* sdoContainer) const = 0;
67 
71  xAOD::MuonSimHit* addSDO(const TimedHit& hit, xAOD::MuonSimHitContainer* sdoContainer) const;
72 
74  const ActsGeometryContext& getGeoCtx(const EventContext& ctx) const;
75 
80  template <class DetType> using OutDigitCache_t = std::vector<std::unique_ptr<DetType>>;
81 
85  template <class DigitColl>
86  DigitColl* fetchCollection(const Identifier& hitId,
87  OutDigitCache_t<DigitColl>& digitCache) const;
92  template <class DigitCont, class DigitColl>
93  StatusCode writeDigitContainer(const EventContext& ctx,
95  OutDigitCache_t<DigitColl>&& digitCache,
96  unsigned int hashMax) const;
97 
99  static double hitTime(const TimedHit& hit);
100  using DeadTimeMap = std::unordered_map<Identifier, double>;
106  static bool passDeadTime(const Identifier& channelId,
107  const double hitTime,
108  const double deadTimeWindow,
109  DeadTimeMap& deadTimeMap);
110 
112 
114  "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
115  private:
117 
119  StatusCode fillTimedHits(PileUpHits&& hitColl, TimedHits& timedHits) const;
120 
122 
123  SG::ReadHandleKey<ActsGeometryContext> m_geoCtxKey{this, "AlignmentKey", "ActsAlignment",
124  "Geometry context"};
125 
126  ServiceHandle<PileUpMergeSvc> m_mergeSvc{this, "PileUpMergeSvc", "PileUpMergeSvc", ""};
127 
128  Gaudi::Property<std::string> m_streamName{this, "StreamName", ""};
129 
130  ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc", ""}; // Random number service
131 
133 
134  Gaudi::Property<bool> m_onlyUseContainerName{this, "OnlyUseContainerName", false,
135  "Don't use the ReadHandleKey directly. Just extract the container name from it."};
136 
137  Gaudi::Property<bool> m_includePileUpTruth{this, "IncludePileUpTruth", true, "Include pile-up truth info"};
138 
139  std::string m_inputObjectName{""};
140 
143  using SimHitLocalCopy = std::pair<std::unique_ptr<xAOD::MuonSimHitContainer>,
144  std::unique_ptr<xAOD::MuonSimHitAuxContainer>>;
145  std::vector<SimHitLocalCopy> m_simHits{};
146 
147 
148 };
149 
150 }
152 #endif
153 
MuonR4::MuonDigitizationTool::m_inputObjectName
std::string m_inputObjectName
Definition: MuonDigitizationTool.h:139
MuonR4::MuonDigitizationTool::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: MuonDigitizationTool.h:123
MuonR4::MuonDigitizationTool::passDeadTime
static bool passDeadTime(const Identifier &channelId, const double hitTime, const double deadTimeWindow, DeadTimeMap &deadTimeMap)
Returns whether the new digit is within the dead time window.
Definition: MuonDigitizationTool.cxx:164
xAOD::MuonSimHit_v1
Definition: MuonSimHit_v1.h:18
MuonR4::MuonDigitizationTool::processBunchXing
StatusCode processBunchXing(int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents) override final
Definition: MuonDigitizationTool.cxx:108
MuonR4::MuonDigitizationTool::m_simHitKey
SG::ReadHandleKey< xAOD::MuonSimHitContainer > m_simHitKey
Definition: MuonDigitizationTool.h:121
MuonR4::MuonDigitizationTool::fillTimedHits
StatusCode fillTimedHits(PileUpHits &&hitColl, TimedHits &timedHits) const
Translates the PileUpHits into the timed hits format.
Definition: MuonDigitizationTool.cxx:44
MuonR4::MuonDigitizationTool::m_streamName
Gaudi::Property< std::string > m_streamName
Definition: MuonDigitizationTool.h:128
MuonR4::MuonDigitizationTool::PileUpHits
PileUpMergeSvc::TimedList< xAOD::MuonSimHitContainer >::type PileUpHits
Definition: MuonDigitizationTool.h:116
MuonGMR4::MuonDetectorManager
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonDetectorManager.h:62
ActsGeometryContext.h
MuonR4::MuonDigitizationTool::m_onlyUseContainerName
Gaudi::Property< bool > m_onlyUseContainerName
Definition: MuonDigitizationTool.h:134
MuonR4::MuonDigitizationTool::m_mergeSvc
ServiceHandle< PileUpMergeSvc > m_mergeSvc
Definition: MuonDigitizationTool.h:126
MuonR4::MuonDigitizationTool::SimHitLocalCopy
std::pair< std::unique_ptr< xAOD::MuonSimHitContainer >, std::unique_ptr< xAOD::MuonSimHitAuxContainer > > SimHitLocalCopy
Create a local copy of the sim hits to ensure overlayed hits across the events remain valid.
Definition: MuonDigitizationTool.h:144
MuonR4::MuonDigitizationTool::m_sdoKey
SG::WriteHandleKey< xAOD::MuonSimHitContainer > m_sdoKey
Definition: MuonDigitizationTool.h:132
MuonR4::MuonDigitizationTool::OutDigitCache_t
std::vector< std::unique_ptr< DetType > > OutDigitCache_t
DigitContainers are sorted by DigitCollections which are the ensemble of all hits in a given MuonCham...
Definition: MuonDigitizationTool.h:80
MuonSimHitAuxContainer.h
TimedHitPtr< xAOD::MuonSimHit >
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
PileUpMergeSvc::TimedList::type
std::list< value_t > type
type of the collection of timed data object
Definition: PileUpMergeSvc.h:73
MuonR4::MuonDigitizationTool::mergeEvent
StatusCode mergeEvent(const EventContext &ctx) override final
Definition: MuonDigitizationTool.cxx:92
TimedHitPtr.h
MuonR4::MuonDigitizationTool::m_timedHits
TimedHits m_timedHits
Definition: MuonDigitizationTool.h:141
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
MuonR4::MuonDigitizationTool::digitize
virtual StatusCode digitize(const EventContext &ctx, const TimedHits &hitsToDigit, xAOD::MuonSimHitContainer *sdoContainer) const =0
Digitize the time ordered hits and write them to the digit format specific for the detector technolog...
MuonR4::MuonDigitizationTool::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const EventContext &ctx) const
Definition: MuonDigitizationTool.cxx:129
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonDetectorManager.h
MuonR4::MuonDigitizationTool::prepareEvent
StatusCode prepareEvent(const EventContext &ctx, const unsigned int) override final
When being run from PileUpToolsAlgs, this method is called at the start of the subevts loop.
Definition: MuonDigitizationTool.cxx:35
MuonSimHitContainer.h
PileUpToolBase::PileUpToolBase
PileUpToolBase(const std::string &type, const std::string &name, const IInterface *parent)
Definition: PileUpToolBase.cxx:7
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:121
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
PileUpToolBase
Definition: PileUpToolBase.h:18
MuonR4::MuonDigitizationTool::getGeoCtx
const ActsGeometryContext & getGeoCtx(const EventContext &ctx) const
Returns the reference to the ActsGeometryContext needed to fetch global positions from the Readout ge...
Definition: MuonDigitizationTool.cxx:135
MuonR4::MuonDigitizationTool::addSDO
xAOD::MuonSimHit * addSDO(const TimedHit &hit, xAOD::MuonSimHitContainer *sdoContainer) const
Adds the timed simHit to the output SDO container.
Definition: MuonDigitizationTool.cxx:142
MuonR4::MuonDigitizationTool::writeDigitContainer
StatusCode writeDigitContainer(const EventContext &ctx, const SG::WriteHandleKey< DigitCont > &key, OutDigitCache_t< DigitColl > &&digitCache, unsigned int hashMax) const
Helper function to move the collected digits into the final DigitContainer.
MuonR4::MuonDigitizationTool::hitTime
static double hitTime(const TimedHit &hit)
Returns the global time of the hit which is the sum of eventTime & individual hit time.
Definition: MuonDigitizationTool.cxx:63
MuonR4::MuonDigitizationTool::processAllSubEvents
StatusCode processAllSubEvents(const EventContext &ctx) override final
alternative interface which uses the PileUpMergeSvc to obtain all the required SubEvents.
Definition: MuonDigitizationTool.cxx:66
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
MuonR4::MuonDigitizationTool::initialize
StatusCode initialize() override
Definition: MuonDigitizationTool.cxx:11
MuonR4::MuonDigitizationTool::m_includePileUpTruth
Gaudi::Property< bool > m_includePileUpTruth
Definition: MuonDigitizationTool.h:137
MuonR4::MuonDigitizationTool::m_simHits
std::vector< SimHitLocalCopy > m_simHits
Definition: MuonDigitizationTool.h:145
MuonDigitizationTool.icc
MuonR4::MuonDigitizationTool
Barebone implementation of the I/O infrastructure for all MuonDigitizationTools.
Definition: MuonDigitizationTool.h:30
MuonR4::MuonDigitizationTool::TimedHits
std::vector< TimedHitPtr< xAOD::MuonSimHit > > TimedHits
Definition: MuonDigitizationTool.h:58
PileUpMergeSvc.h
the preferred mechanism to access information from the different event stores in a pileup job.
MuonR4::MuonDigitizationTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDigitizationTool.h:113
MuonR4::MuonDigitizationTool::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: MuonDigitizationTool.h:130
MuonR4::MuonDigitizationTool::m_detMgr
const MuonGMR4::MuonDetectorManager * m_detMgr
Definition: MuonDigitizationTool.h:111
SubEventIterator
std::vector< xAOD::EventInfo::SubEvent >::const_iterator SubEventIterator
Definition: IPileUpTool.h:22
MuonR4::MuonDigitizationTool::DeadTimeMap
std::unordered_map< Identifier, double > DeadTimeMap
Definition: MuonDigitizationTool.h:100
PileUpToolBase.h
helper base class IPileUpTool::toProcess().
MuonR4::MuonDigitizationTool::fetchCollection
DigitColl * fetchCollection(const Identifier &hitId, OutDigitCache_t< DigitColl > &digitCache) const
Helper function that provides fetches the proper DigitCollection from the DigitCache for a given hit ...
IMuonIdHelperSvc.h
IAthRNGSvc.h
ServiceHandle< Muon::IMuonIdHelperSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14