|
ATLAS Offline Software
|
Barebone implementation of the I/O infrastructure for all MuonDigitizationTools.
More...
#include <MuonDigitizationTool.h>
|
CLHEP::HepRandomEngine * | getRandomEngine (const EventContext &ctx) const |
|
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 technology. More...
|
|
xAOD::MuonSimHit * | addSDO (const TimedHit &hit, xAOD::MuonSimHitContainer *sdoContainer) const |
| Adds the timed simHit to the output SDO container. More...
|
|
const ActsGeometryContext & | getGeoCtx (const EventContext &ctx) const |
| Returns the reference to the ActsGeometryContext needed to fetch global positions from the Readout geometry. More...
|
|
template<class Container > |
StatusCode | retrieveContainer (const EventContext &ctx, const SG::ReadHandleKey< Container > &key, const Container *&contPtr) const |
| Helper function to retrieve a container from StoreGate. More...
|
|
template<class Container > |
StatusCode | retrieveConditions (const EventContext &ctx, const SG::ReadCondHandleKey< Container > &key, const Container *&contPtr) const |
| Helper function to access the conditions data. More...
|
|
template<class DigitColl > |
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 identifier If the Collection is fetched for the first time, it's inserted into the cache first. More...
|
|
template<class DigitCont , class DigitColl > |
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. More...
|
|
|
SG::ReadHandleKey< xAOD::MuonSimHitContainer > | m_simHitKey {this, "SimHitKey", ""} |
|
SG::ReadHandleKey< ActsGeometryContext > | 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 41 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 109 of file MuonDigitizationTool.h.
◆ PileUpHits
◆ SimHitLocalCopy
Create a local copy of the sim hits to ensure overlayed hits across the events remain valid.
Definition at line 172 of file MuonDigitizationTool.h.
◆ TimedHit
◆ TimedHits
◆ MuonDigitizationTool()
MuonR4::MuonDigitizationTool::MuonDigitizationTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
pIID |
|
) |
| |
◆ 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 148 of file MuonDigitizationTool.cxx.
164 acc_eventTime(*sdoHit) = hit.eventTime();
165 acc_eventID(*sdoHit) = hit.eventId();
166 acc_puType(*sdoHit) = hit.pileupType();
◆ digitize()
◆ fetchCollection()
template<class DigitColl >
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 50 of file MuonDigitizationTool.cxx.
51 for (
const auto& [timeIndex, simHitColl] : hitColl) {
52 timedHits.reserve(timedHits.capacity() + simHitColl->size());
54 timedHits.emplace_back(timeIndex.time(), timeIndex.index(), simHit, timeIndex.type());
57 std::sort(timedHits.begin(), timedHits.end(),
59 if (a->identify() != b->identify()){
60 return a->identify() < b->identify();
62 if (
a.eventId() !=
b.eventId()) {
63 return a.eventId() < b.eventId();
65 return a.eventTime() <
b.eventTime();
67 return StatusCode::SUCCESS;
◆ filterPassed()
virtual bool PileUpToolBase::filterPassed |
( |
| ) |
const |
|
inlineoverridevirtualinherited |
◆ getGeoCtx()
◆ getRandomEngine()
CLHEP::HepRandomEngine * MuonR4::MuonDigitizationTool::getRandomEngine |
( |
const EventContext & |
ctx | ) |
const |
|
protected |
◆ 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 69 of file MuonDigitizationTool.cxx.
70 return hit.eventTime() + hit->globalTime();
◆ initialize()
StatusCode MuonR4::MuonDigitizationTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ mergeEvent()
StatusCode MuonR4::MuonDigitizationTool::mergeEvent |
( |
const EventContext & |
ctx | ) |
|
|
finaloverride |
Definition at line 98 of file MuonDigitizationTool.cxx.
104 ATH_CHECK(sdoContainer.record(std::make_unique<xAOD::MuonSimHitContainer>(),
105 std::make_unique<xAOD::MuonSimHitAuxContainer>()));
110 return StatusCode::SUCCESS;
◆ passDeadTime()
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 169 of file MuonDigitizationTool.cxx.
175 if (insertItr.second) {
178 if (
hitTime - insertItr.first->second < deadTimeWindow) {
182 insertItr.first->second =
hitTime;
◆ 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 41 of file MuonDigitizationTool.cxx.
44 ATH_MSG_DEBUG(
"prepareEvent() called for " << nInputEvents <<
" input events");
47 return StatusCode::SUCCESS;
◆ processAllSubEvents() [1/3]
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 77 of file MuonDigitizationTool.cxx.
92 ATH_CHECK(sdoContainer.record(std::make_unique<xAOD::MuonSimHitContainer>(),
93 std::make_unique<xAOD::MuonSimHitAuxContainer>()));
96 return StatusCode::SUCCESS;
◆ processAllSubEvents() [2/3]
StatusCode MuonR4::MuonDigitizationTool::processAllSubEvents |
( |
const EventContext & |
ctx | ) |
|
|
finaloverridevirtual |
◆ processAllSubEvents() [3/3]
virtual StatusCode IPileUpTool::processAllSubEvents |
|
inherited |
dummy implementation to allow compilation while all Digitization packages are migrated to use this new interface.
◆ processBunchXing()
Reimplemented from PileUpToolBase.
Definition at line 114 of file MuonDigitizationTool.cxx.
121 for (
auto& [hitPtr, hitContainer] : hitList) {
122 auto copyContainer = std::make_unique<xAOD::MuonSimHitContainer>();
123 auto copyAuxContainer = std::make_unique<xAOD::MuonSimHitAuxContainer>();
124 copyContainer->setStore(copyAuxContainer.get());
126 (*copyContainer->push_back(std::make_unique<xAOD::MuonSimHit>())) = (*copyMe);
128 hitListPermanent.emplace_back(hitPtr, copyContainer.get());
129 m_simHits.emplace_back(std::move(copyContainer), std::move(copyAuxContainer));
132 return StatusCode::SUCCESS;
◆ resetFilter()
virtual void PileUpToolBase::resetFilter |
( |
| ) |
|
|
inlineoverridevirtualinherited |
◆ retrieveConditions()
template<class Container >
Helper function to access the conditions data.
If the key is empty, the conditions object is assigned to be a nullptr Otherwise, a failure is returned if the Conditions data are not available in the event.
◆ retrieveContainer()
template<class Container >
Helper function to retrieve a container from StoreGate.
If the readHandleKey is empty, the container is assigned to be a nullptr and the operation is marked as success. Otherwise, a failure is returned if the Container cannot be fetched from StoreGate
◆ toProcess()
virtual bool PileUpToolBase::toProcess |
( |
int |
bunchXing | ) |
const |
|
inlineoverridevirtualinherited |
◆ writeDigitContainer()
template<class DigitCont , class DigitColl >
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.
◆ m_geoCtxKey
Initial value:{this, "AlignmentKey", "ActsAlignment",
"Geometry context"}
Definition at line 152 of file MuonDigitizationTool.h.
◆ m_idHelperSvc
Initial value:{this, "MuonIdHelperSvc",
"Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
Definition at line 142 of file MuonDigitizationTool.h.
◆ 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.
◆ 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 163 of file MuonDigitizationTool.h.
◆ 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.
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
#define ATH_MSG_VERBOSE(x)
#define THROW_EXCEPTION(MSG)
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Include the GeoPrimitives which need to be put first.
A wrapper class for event-slot-local random engines.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
a struct encapsulating the identifier of a pile-up event