|  | ATLAS Offline Software
    | 
 
 
 
Barebone implementation of the I/O infrastructure for all MuonDigitizationTools.  
 More...
#include <MuonDigitizationTool.h>
|  | 
| 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
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.
  159         acc_eventTime(*sdoHit) = hit.eventTime();
 
  160         acc_eventID(*sdoHit) = hit.eventId();
 
  161         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 44 of file MuonDigitizationTool.cxx.
   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());
 
   53                     if (a->identify() != b->identify()){
 
   54                         return a->identify() < b->identify();
 
   56                     if (
a.eventId() != 
b.eventId()) {
 
   57                        return a.eventId() < b.eventId();
 
   59                     return a.eventTime() < 
b.eventTime(); 
 
   61         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 63 of file MuonDigitizationTool.cxx.
   64         return hit.eventTime() + hit->globalTime();
 
 
 
 
◆ initialize()
  
  | 
        
          | StatusCode MuonR4::MuonDigitizationTool::initialize | ( |  | ) |  |  | overridevirtual | 
 
 
◆ mergeEvent()
  
  | 
        
          | StatusCode MuonR4::MuonDigitizationTool::mergeEvent | ( | const EventContext & | ctx | ) |  |  | finaloverride | 
 
Definition at line 92 of file MuonDigitizationTool.cxx.
   98              ATH_CHECK(sdoContainer.record(std::make_unique<xAOD::MuonSimHitContainer>(),
 
   99                                            std::make_unique<xAOD::MuonSimHitAuxContainer>()));
 
  104         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 164 of file MuonDigitizationTool.cxx.
  170         if (insertItr.second) {
 
  173         if (
hitTime - insertItr.first->second < deadTimeWindow) {
 
  177         insertItr.first->second = 
hitTime;
 
 
 
 
◆ PileUpToolBase()
      
        
          | PileUpToolBase::PileUpToolBase | 
      
 
 
◆ 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.
   38         ATH_MSG_DEBUG(
"prepareEvent() called for " << nInputEvents << 
" input events");
 
   41         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 71 of file MuonDigitizationTool.cxx.
   86              ATH_CHECK(sdoContainer.record(std::make_unique<xAOD::MuonSimHitContainer>(),
 
   87                                            std::make_unique<xAOD::MuonSimHitAuxContainer>()));
 
   90         return StatusCode::SUCCESS;
 
 
 
 
◆ processAllSubEvents() [2/3]
  
  | 
        
          | 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.
   67         const MuonDigitizationTool* digiTool = 
this;
 
   68         return digiTool->processAllSubEvents(ctx);
 
 
 
 
◆ 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 108 of file MuonDigitizationTool.cxx.
  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);
 
  122             hitListPermanent.emplace_back(hitPtr, copyContainer.get());
 
  123             m_simHits.emplace_back(std::move(copyContainer), std::move(copyAuxContainer));
 
  126         return StatusCode::SUCCESS;
 
 
 
 
◆ resetFilter()
  
  | 
        
          | virtual void PileUpToolBase::resetFilter | ( |  | ) |  |  | inlineoverridevirtualinherited | 
 
 
◆ 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 123 of file MuonDigitizationTool.h.
 
 
◆ m_idHelperSvc
Initial value:{this, "MuonIdHelperSvc", 
                                                                "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
Definition at line 113 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 134 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)
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
void stable_sort(std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, std::reverse_iterator< DataModel_detail::iterator< DVL > > end, Compare comp)
Specialization of stable_sort for DataVector/List.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
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.
#define THROW_EXCEPTION(MESSAGE)
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
a struct encapsulating the identifier of a pile-up event