Barebone implementation of the I/O infrastructure for all MuonDigitizationTools.
More...
#include <MuonDigitizationTool.h>
|
| StatusCode | initialize () override |
| StatusCode | processBunchXing (int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents) override final |
| StatusCode | mergeEvent (const EventContext &ctx) override final |
| 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.
|
| StatusCode | processAllSubEvents (const EventContext &ctx) override final |
| | alternative interface which uses the PileUpMergeSvc to obtain all the required SubEvents.
|
| StatusCode | processAllSubEvents (const EventContext &ctx) const |
| | Reentrant version of the digitization tool.
|
| | PileUpToolBase (const std::string &type, const std::string &name, const IInterface *parent) |
|
| static double | hitTime (const TimedHit &hit) |
| | Returns the global time of the hit which is the sum of eventTime & individual hit time.
|
| 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.
|
|
| SG::ReadHandleKey< xAOD::MuonSimHitContainer > | m_simHitKey {this, "SimHitKey", ""} |
| SG::ReadHandleKey< ActsTrk::GeometryContext > | m_geoCtxKey |
| ServiceHandle< PileUpMergeSvc > | m_mergeSvc {this, "PileUpMergeSvc", "PileUpMergeSvc", ""} |
| Gaudi::Property< std::string > | m_streamName {this, "StreamName", ""} |
| ServiceHandle< IAthRNGSvc > | m_rndmSvc {this, "RndmSvc", "AthRNGSvc", ""} |
| SG::WriteHandleKey< xAOD::MuonSimHitContainer > | m_sdoKey {this, "OutputSDOName", ""} |
| Gaudi::Property< bool > | m_onlyUseContainerName |
| Gaudi::Property< bool > | m_includePileUpTruth {this, "IncludePileUpTruth", true, "Include pile-up truth info"} |
| std::string | m_inputObjectName {""} |
| TimedHits | m_timedHits {} |
| std::vector< SimHitLocalCopy > | m_simHits {} |
Barebone implementation of the I/O infrastructure for all MuonDigitizationTools.
Definition at line 30 of file MuonDigitizationTool.h.
◆ DeadTimeMap
◆ OutDigitCache_t
DigitContainers are sorted by DigitCollections which are the ensemble of all hits in a given MuonChamber.
To fill the final DigitContainer thread-safely, the DigitCollections shall be cached pre cached in a OutDigitCache_t vector which is later moved to the final DigitContainer
Definition at line 80 of file MuonDigitizationTool.h.
◆ PileUpHits
◆ SimHitLocalCopy
Initial value: std::pair<std::unique_ptr<xAOD::MuonSimHitContainer>,
std::unique_ptr<xAOD::MuonSimHitAuxContainer>>
Create a local copy of the sim hits to ensure overlayed hits across the events remain valid.
Definition at line 143 of file MuonDigitizationTool.h.
◆ TimedHit
◆ TimedHits
◆ addSDO()
Adds the timed simHit to the output SDO container.
The hit may be rejected if it's originating from pile-up and the pile-up truth skimming strategy is applied
Definition at line 142 of file MuonDigitizationTool.cxx.
143 {
144 if(!sdoContainer) {
146 return nullptr;
147 }
150 return nullptr;
151 }
155 (*sdoHit) = (*hit);
156 static const SG::Accessor<float> acc_eventTime{"MuSim_evtTime"};
157 static const SG::Accessor<unsigned short> acc_eventID{"MuSim_evtID"};
158 static const SG::Accessor<unsigned short> acc_puType{"MuSim_puType"};
159 acc_eventTime(*sdoHit) = hit.eventTime();
160 acc_eventID(*sdoHit) = hit.eventId();
161 acc_puType(*sdoHit) = hit.pileupType();
162 return sdoHit;
163 }
#define ATH_MSG_VERBOSE(x)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
MuonSimHit_v1 MuonSimHit
Defined the version of the MuonSimHit.
◆ digitize()
◆ fetchCollection()
template<class DigitColl>
| DigitColl * MuonR4::MuonDigitizationTool::fetchCollection |
( |
const Identifier & | hitId, |
|
|
OutDigitCache_t< DigitColl > & | digitCache ) const |
|
protected |
Helper function that provides fetches the proper DigitCollection from the DigitCache for a given hit identifier If the Collection is fetched for the first time, it's inserted into the cache first.
◆ fillTimedHits()
| StatusCode MuonR4::MuonDigitizationTool::fillTimedHits |
( |
PileUpHits && | hitColl, |
|
|
TimedHits & | timedHits ) const |
|
private |
Translates the PileUpHits into the timed hits format.
Definition at line 44 of file MuonDigitizationTool.cxx.
44 {
45 for (const auto& [timeIndex, simHitColl] : hitColl) {
46 timedHits.reserve(timedHits.capacity() + simHitColl->size());
48 timedHits.emplace_back(timeIndex.time(), timeIndex.index(), simHit, timeIndex.type());
49 }
50 }
53 if (a->identify() != b->identify()){
54 return a->identify() < b->identify();
55 }
56 if (
a.eventId() !=
b.eventId()) {
57 return a.eventId() < b.eventId();
58 }
59 return a.eventTime() <
b.eventTime();
60 });
61 return StatusCode::SUCCESS;
62 }
void stable_sort(DataModel_detail::iterator< DVL > beg, DataModel_detail::iterator< DVL > end)
Specialization of stable_sort for DataVector/List.
◆ filterPassed()
| virtual bool PileUpToolBase::filterPassed |
( |
| ) |
const |
|
inlineoverridevirtualinherited |
◆ getGeoCtx()
Returns the reference to the ActsTrk::GeometryContext needed to fetch global positions from the Readout geometry.
Definition at line 135 of file MuonDigitizationTool.cxx.
135 {
136 const ActsTrk::GeometryContext* gctx{};
139 }
140 return *gctx;
141 }
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
#define THROW_EXCEPTION(MESSAGE)
◆ getRandomEngine()
| CLHEP::HepRandomEngine * MuonR4::MuonDigitizationTool::getRandomEngine |
( |
const EventContext & | ctx | ) |
const |
|
protected |
Definition at line 129 of file MuonDigitizationTool.cxx.
129 {
132 rngWrapper->
setSeed(rngName, ctx);
134 }
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
◆ hitTime()
| double MuonR4::MuonDigitizationTool::hitTime |
( |
const TimedHit & | hit | ) |
|
|
staticprotected |
Returns the global time of the hit which is the sum of eventTime & individual hit time.
Definition at line 63 of file MuonDigitizationTool.cxx.
63 {
64 return hit.eventTime() + hit->globalTime();
65 }
◆ initialize()
| StatusCode MuonR4::MuonDigitizationTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ mergeEvent()
| StatusCode MuonR4::MuonDigitizationTool::mergeEvent |
( |
const EventContext & | ctx | ) |
|
|
finaloverride |
Definition at line 92 of file MuonDigitizationTool.cxx.
92 {
94
95 SG::WriteHandle<xAOD::MuonSimHitContainer> sdoContainer{};
97 sdoContainer = SG::WriteHandle<xAOD::MuonSimHitContainer>{
m_sdoKey, ctx};
98 ATH_CHECK(sdoContainer.
record(std::make_unique<xAOD::MuonSimHitContainer>(),
99 std::make_unique<xAOD::MuonSimHitAuxContainer>()));
100 }
104 return StatusCode::SUCCESS;
105 }
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
pointer_type ptr()
Dereference the pointer.
◆ passDeadTime()
| bool MuonR4::MuonDigitizationTool::passDeadTime |
( |
const Identifier & | channelId, |
|
|
const double | hitTime, |
|
|
const double | deadTimeWindow, |
|
|
DeadTimeMap & | deadTimeMap ) |
|
staticprotected |
Returns whether the new digit is within the dead time window.
channelId: Identifier of the fired channel
hitTime: Current hit time
deadTimeWindow: Dead time to pass before the next hit may be accepted
deadTimeMap: Map storing the last hit times from each Identifier
Channel not seen before
Update dead time map & accept hit
Definition at line 164 of file MuonDigitizationTool.cxx.
167 {
168 auto insertItr = deadTimeMap.insert(std::make_pair(channelId,
hitTime));
170 if (insertItr.second) {
171 return true;
172 }
173 if (
hitTime - insertItr.first->second < deadTimeWindow) {
174 return false;
175 }
177 insertItr.first->second =
hitTime;
178 return true;
179 }
◆ PileUpToolBase()
| PileUpToolBase::PileUpToolBase |
( |
const std::string & | type, |
|
|
const std::string & | name, |
|
|
const IInterface * | parent ) |
◆ prepareEvent()
| StatusCode MuonR4::MuonDigitizationTool::prepareEvent |
( |
const EventContext & | ctx, |
|
|
const unsigned int | nInputEvents ) |
|
finaloverride |
When being run from PileUpToolsAlgs, this method is called at the start of the subevts loop.
Not able to access SubEvents
Definition at line 35 of file MuonDigitizationTool.cxx.
36 {
37
38 ATH_MSG_DEBUG(
"prepareEvent() called for " << nInputEvents <<
" input events");
41 return StatusCode::SUCCESS;
42 }
◆ processAllSubEvents() [1/2]
| StatusCode MuonR4::MuonDigitizationTool::processAllSubEvents |
( |
const EventContext & | ctx | ) |
const |
Reentrant version of the digitization tool.
In case of single hits container just load the collection using read handles
Definition at line 71 of file MuonDigitizationTool.cxx.
71 {
78 hitCollList.emplace_back(PileUpTimeEventIndex(0), hitCollection);
79 } else {
81 }
83 SG::WriteHandle<xAOD::MuonSimHitContainer> sdoContainer{};
85 sdoContainer = SG::WriteHandle<xAOD::MuonSimHitContainer>{
m_sdoKey, ctx};
86 ATH_CHECK(sdoContainer.
record(std::make_unique<xAOD::MuonSimHitContainer>(),
87 std::make_unique<xAOD::MuonSimHitAuxContainer>()));
88 }
90 return StatusCode::SUCCESS;
91 }
MuonSimHitContainer_v1 MuonSimHitContainer
Define the version of the pixel cluster container.
◆ processAllSubEvents() [2/2]
| StatusCode MuonR4::MuonDigitizationTool::processAllSubEvents |
( |
const EventContext & | ctx | ) |
|
|
finaloverridevirtual |
alternative interface which uses the PileUpMergeSvc to obtain all the required SubEvents.
Reimplemented from PileUpToolBase.
Definition at line 66 of file MuonDigitizationTool.cxx.
66 {
67 const MuonDigitizationTool* digiTool = this;
68 return digiTool->processAllSubEvents(ctx);
69 }
◆ processBunchXing()
Reimplemented from PileUpToolBase.
Definition at line 108 of file MuonDigitizationTool.cxx.
110 {
115 for (auto& [hitPtr, hitContainer] : hitList) {
116 auto copyContainer = std::make_unique<xAOD::MuonSimHitContainer>();
117 auto copyAuxContainer = std::make_unique<xAOD::MuonSimHitAuxContainer>();
118 copyContainer->setStore(copyAuxContainer.get());
120 (*copyContainer->push_back(std::make_unique<xAOD::MuonSimHit>())) = (*copyMe);
121 }
122 hitListPermanent.emplace_back(hitPtr, copyContainer.get());
123 m_simHits.emplace_back(std::move(copyContainer), std::move(copyAuxContainer));
124 }
126 return StatusCode::SUCCESS;
127 }
◆ resetFilter()
| virtual void PileUpToolBase::resetFilter |
( |
| ) |
|
|
inlineoverridevirtualinherited |
◆ toProcess()
| virtual bool PileUpToolBase::toProcess |
( |
int | bunchXing | ) |
const |
|
inlineoverridevirtualinherited |
◆ writeDigitContainer()
template<class DigitCont, class DigitColl>
| StatusCode MuonR4::MuonDigitizationTool::writeDigitContainer |
( |
const EventContext & | ctx, |
|
|
const SG::WriteHandleKey< DigitCont > & | key, |
|
|
OutDigitCache_t< DigitColl > && | digitCache, |
|
|
unsigned int | hashMax ) const |
|
protected |
Helper function to move the collected digits into the final DigitContainer.
The function needs the maximal size of the container in advance which is provided by calling the module_hash_max() function of the corresponding MuonIdHelper.
◆ m_detMgr
◆ m_filterPassed
| bool PileUpToolBase::m_filterPassed {true} |
|
protectedinherited |
◆ m_firstXing
| Gaudi::Property<int> PileUpToolBase::m_firstXing |
|
protectedinherited |
Initial value:{this, "FirstXing", -999,
"First bunch-crossing in which det is live"}
Definition at line 54 of file PileUpToolBase.h.
54 {this, "FirstXing", -999,
55 "First bunch-crossing in which det is live"};
◆ m_geoCtxKey
Initial value:{this, "AlignmentKey", "ActsAlignment",
"Geometry context"}
Definition at line 123 of file MuonDigitizationTool.h.
123 {this, "AlignmentKey", "ActsAlignment",
124 "Geometry context"};
◆ m_idHelperSvc
Initial value:{this, "MuonIdHelperSvc",
"Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
Definition at line 113 of file MuonDigitizationTool.h.
113 {this, "MuonIdHelperSvc",
114 "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
◆ m_includePileUpTruth
| Gaudi::Property<bool> MuonR4::MuonDigitizationTool::m_includePileUpTruth {this, "IncludePileUpTruth", true, "Include pile-up truth info"} |
|
private |
◆ m_inputObjectName
| std::string MuonR4::MuonDigitizationTool::m_inputObjectName {""} |
|
private |
◆ m_lastXing
| Gaudi::Property<int> PileUpToolBase::m_lastXing |
|
protectedinherited |
Initial value:{this, "LastXing", 999,
"Last bunch-crossing in which det is live"}
Definition at line 56 of file PileUpToolBase.h.
56 {this, "LastXing", 999,
57 "Last bunch-crossing in which det is live"};
◆ m_mergeSvc
◆ m_onlyUseContainerName
| Gaudi::Property<bool> MuonR4::MuonDigitizationTool::m_onlyUseContainerName |
|
private |
Initial value:{this, "OnlyUseContainerName", false,
"Don't use the ReadHandleKey directly. Just extract the container name from it."}
Definition at line 134 of file MuonDigitizationTool.h.
134 {this, "OnlyUseContainerName", false,
135 "Don't use the ReadHandleKey directly. Just extract the container name from it."};
◆ m_rndmSvc
◆ m_sdoKey
◆ m_simHitKey
◆ m_simHits
◆ m_streamName
| Gaudi::Property<std::string> MuonR4::MuonDigitizationTool::m_streamName {this, "StreamName", ""} |
|
private |
◆ m_timedHits
| TimedHits MuonR4::MuonDigitizationTool::m_timedHits {} |
|
private |
◆ m_vetoPileUpTruthLinks
| Gaudi::Property<int> PileUpToolBase::m_vetoPileUpTruthLinks |
|
protectedinherited |
Initial value:{this, "VetoPileUpTruthLinks", true,
"Ignore links to suppressed pile-up truth"}
Definition at line 58 of file PileUpToolBase.h.
58 {this, "VetoPileUpTruthLinks", true,
59 "Ignore links to suppressed pile-up truth"};
The documentation for this class was generated from the following files: