|  | ATLAS Offline Software
    | 
 
 
 
#include <RpcFastDigiTool.h>
|  | 
| bool | digitizeHit (const TimedHit &simHit, const bool measuresPhi, const Muon::DigitEffiData *effiMap, RpcDigitCollection &outContainer, CLHEP::HepRandomEngine *rndEngine, DeadTimeMap &deadTimes) const | 
|  | Digitize the sim hit as Rpc strip 1D hit.  More... 
 | 
|  | 
| bool | digitizeHitBI (const TimedHit &simHit, const Muon::DigitEffiData *effiMap, RpcDigitCollection &outContainer, CLHEP::HepRandomEngine *rndEngine, DeadTimeMap &deadTimes) const | 
|  | Digitize the sim hit as Rpc strip 2D hit.  More... 
 | 
|  | 
| StatusCode | fillTimedHits (PileUpHits &&hitColl, TimedHits &timedHits) const | 
|  | Translates the PileUpHits into the timed hits format.  More... 
 | 
|  | 
|  | 
| static double | timeOverThreshold (CLHEP::HepRandomEngine *rndmEngine) | 
|  | Roll the time over threshold for each signal digit.  More... 
 | 
|  | 
|  | 
| int | m_stIdxBIL {-1} | 
|  | 
| int | m_stIdxBIS {-1} | 
|  | 
| SG::WriteHandleKey< RpcDigitContainer > | m_writeKey {this, "OutputObjectName", "RPC_DIGITS"} | 
|  | 
| SG::ReadCondHandleKey< Muon::DigitEffiData > | m_effiDataKey | 
|  | 
| std::array< std::atomic< unsigned >, 2 > m_allHits | ATLAS_THREAD_SAFE {} | 
|  | 
| std::array< std::atomic< unsigned >, 2 > m_acceptedHits | ATLAS_THREAD_SAFE {} | 
|  | 
| Gaudi::Property< double > | m_propagationVelocity | 
|  | 
| Gaudi::Property< double > | m_stripTimeResolution | 
|  | 
| Gaudi::Property< double > | m_deadTime {this, "deadTime", 100.*Gaudi::Units::nanosecond} | 
|  | 
| Gaudi::Property< bool > | m_digitizeMuonOnly | 
|  | 
| 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 {} | 
|  | 
Definition at line 16 of file RpcFastDigiTool.h.
 
◆ DeadTimeMap
◆ DigiCache
◆ EdgeSide
◆ 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()
  
  |  | finaloverrideprotectedvirtual | 
 
Digitize the time ordered hits and write them to the digit format specific for the detector technology. 
A new MuonSimHitContainer pointer is parsed to also create the MuonSDO. If a new SDO should be added to the container plese use the addSDO() method as defined below. 
 
Fetch the conditions for efficiency calculations
Standard digitization path
Write everything at the end into the final digit container
Implements MuonR4::MuonDigitizationTool.
Definition at line 32 of file RpcFastDigiTool.cxx.
   46             for (
const TimedHit& simHit : viewer) {
 
   57                     const bool digitizedEta = 
digitizeHit(simHit, 
false, efficiencyMap, *digiColl, rndEngine, deadTimes);
 
   59                     const bool digitizedPhi = 
digitizeHit(simHit, 
true,  efficiencyMap, *digiColl, rndEngine, deadTimes);
 
   61                     if (digitizedEta || digitizedPhi) {
 
   65                 } 
else if (
digitizeHitBI(simHit, efficiencyMap, *digiColl, rndEngine, deadTimes)) {
 
   70         } 
while (viewer.next());
 
   73         return StatusCode::SUCCESS;
 
 
 
 
◆ digitizeHit()
Digitize the sim hit as Rpc strip 1D hit. 
 
- Parameters
- 
  
    | simHit | Reference to the sim hit to digitize |  | measuresPhi | Process an eta or a phi strip |  | effiMap | Pointer to an efficiency look-up table |  | outContainer | DigitCollection to push the new digit into |  | rndEngine | Random engine used for smearing |  | deadTimes | Reference to the last digitized times in order to apply the dead time model |  
 
Final check whether the digit is actually efficient
Correct for the signal propagation time
Definition at line 75 of file RpcFastDigiTool.cxx.
   82         ++(m_allHits[measuresPhi]);
 
   90         const Identifier layerId = idHelper.channelID(gasGapId, 
 
   91                                                        idHelper.doubletZ(gasGapId), 
 
   92                                                        idHelper.doubletPhi(gasGapId), 
 
   93                                                        idHelper.gasGap(gasGapId),
 
  101         const double uncert = design.stripPitch() / std::sqrt(12.);
 
  102         Amg::Vector3D locHitPos{xAOD::toEigen(hit->localPosition())};
 
  103         locHitPos[measuresPhi] = CLHEP::RandGaussZiggurat::shoot(rndEngine, locHitPos[measuresPhi], uncert);
 
  105         const Amg::Vector2D locPos2D = layerDesign->to2D(locHitPos, measuresPhi); 
 
  106         if (!design.insideTrapezoid(locPos2D)) {
 
  108                           <<
" is outside of the trapezoid bounds for "<<
m_idHelperSvc->toString(layerId));
 
  111         const int strip = design.stripNumber(locPos2D);
 
  114                     << 
" cannot trigger any signal in a strip for " << 
m_idHelperSvc->toString(layerId) 
 
  115                     <<std::endl<<design);
 
  119         const Identifier digitId{idHelper.channelID(gasGapId, 
 
  120                                                     idHelper.doubletZ(gasGapId), 
 
  121                                                     idHelper.doubletPhi(gasGapId), 
 
  122                                                     idHelper.gasGap(gasGapId),
 
  127                             <<
",  eta strip "<<strip<<
" & hit "<<
Amg::toString(locHitPos,2 )
 
  132         if (effiMap && effiMap->
getEfficiency(digitId) < CLHEP::RandFlat::shoot(rndEngine,0.,1.)) {
 
  143         const double digitTime = CLHEP::RandGaussZiggurat::shoot(rndEngine, signalTime, 
m_stripTimeResolution);
 
  145                      <<
", recorded time: "<<digitTime);
 
  147         ++(m_acceptedHits[measuresPhi]);
 
 
 
 
◆ digitizeHitBI()
Digitize the sim hit as Rpc strip 2D hit. 
 
- Parameters
- 
  
    | simHit | Reference to the sim hit to digitize |  | effiMap | Pointer to an efficiency look-up table |  | outContainer | DigitCollection to push the new digit into |  | rndEngine | Random engine used for smearing |  | deadTimes | Reference to the last digitized times in order to apply the dead time model |  
 
Smeared x coordinate
Smear the Phi Coordinate
Smeared propagation time in nanoseconds along strip to y=-stripLength/2 (L) and y=stripLength/2 (R)
Check whether the digit is actually efficient
Definition at line 150 of file RpcFastDigiTool.cxx.
  156         ++(m_allHits[
false]);
 
  157         const Identifier gasGapId = simHit->identify();
 
  159         const Amg::Vector3D locPos = xAOD::toEigen(simHit->localPosition());
 
  165         const double uncert = design.stripPitch() / std::sqrt(12.);
 
  166         const double smearedX = CLHEP::RandGaussZiggurat::shoot(rndEngine, locPos.x(), uncert);
 
  175         const double smearedTimeL = CLHEP::RandGaussZiggurat::shoot(rndEngine, propagationTimeL, 
m_stripTimeResolution); 
 
  176         const double smearedTimeR = CLHEP::RandGaussZiggurat::shoot(rndEngine, propagationTimeR, 
m_stripTimeResolution);     
 
  178         const double smearedDeltaT = smearedTimeR - smearedTimeL;
 
  195         if (!design.insideTrapezoid(locHitPos)) {
 
  201         const int strip = design.stripNumber(locHitPos);
 
  204                             << 
m_idHelperSvc->toStringGasGap(gasGapId) <<std::endl<<design);
 
  210         const Identifier digitId{idHelper.channelID(gasGapId, 
 
  211                                                      idHelper.doubletZ(gasGapId), 
 
  212                                                      idHelper.doubletPhi(gasGapId), 
 
  213                                                      idHelper.gasGap(gasGapId),
 
  217                           <<
", strip: "<<strip);
 
  227         const bool effiSignal1 = !effiMap || effiMap->
getEfficiency(gasGapId) >= CLHEP::RandFlat::shoot(rndEngine,0., 1.);
 
  228         const bool effiSignal2 = !effiMap || effiMap->
getEfficiency(gasGapId) >= CLHEP::RandFlat::shoot(rndEngine,0., 1.);
 
  235         if (effiSignal1 || effiSignal2) {
 
  236             ++(m_acceptedHits[
false]);
 
 
 
 
◆ 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 |  | privateinherited | 
 
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 | 
 
 
◆ finalize()
  
  | 
        
          | StatusCode MuonR4::RpcFastDigiTool::finalize | ( |  | ) |  |  | finaloverride | 
 
Definition at line 26 of file RpcFastDigiTool.cxx.
   27         ATH_MSG_INFO(
"Tried to convert "<<m_allHits[0]<<
"/"<<m_allHits[1]<<
" hits. In, " 
   28                     <<percentage(m_acceptedHits[0], m_allHits[0]) <<
"/" 
   29                     <<percentage(m_acceptedHits[1], m_allHits[1]) <<
"% of the cases, the conversion was successful");
 
   30         return StatusCode::SUCCESS;
 
 
 
 
◆ getGeoCtx()
◆ getRandomEngine()
  
  | 
        
          | CLHEP::HepRandomEngine * MuonR4::MuonDigitizationTool::getRandomEngine | ( | const EventContext & | ctx | ) | const |  | protectedinherited | 
 
 
◆ hitTime()
  
  | 
        
          | double MuonR4::MuonDigitizationTool::hitTime | ( | const TimedHit & | hit | ) |  |  | staticprotectedinherited | 
 
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::RpcFastDigiTool::initialize | ( |  | ) |  |  | finaloverridevirtual | 
 
 
◆ mergeEvent()
  
  | 
        
          | StatusCode MuonR4::MuonDigitizationTool::mergeEvent | ( | const EventContext & | ctx | ) |  |  | finaloverrideinherited | 
 
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 |  | inherited | 
 
 
◆ prepareEvent()
  
  | 
        
          | StatusCode MuonR4::MuonDigitizationTool::prepareEvent | ( | const EventContext & | ctx, |  
          |  |  | const unsigned int | nInputEvents |  
          |  | ) |  |  |  | finaloverrideinherited | 
 
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 |  | inherited | 
 
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 | ) |  |  | finaloverridevirtualinherited | 
 
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()
  
  |  | finaloverridevirtualinherited | 
 
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 | 
 
 
◆ timeOverThreshold()
  
  | 
        
          | double MuonR4::RpcFastDigiTool::timeOverThreshold | ( | CLHEP::HepRandomEngine * | rndmEngine | ) |  |  | staticprivate | 
 
Roll the time over threshold for each signal digit. 
Definition at line 241 of file RpcFastDigiTool.cxx.
  244         constexpr 
double tot_mean_narrow = 16.;
 
  245         constexpr 
double tot_sigma_narrow = 2.;
 
  246         constexpr 
double tot_mean_wide = 15.;
 
  247         constexpr 
double tot_sigma_wide = 4.5;
 
  251         if (CLHEP::RandFlat::shoot(rndmEngine)<0.75) {
 
  252           thetot = CLHEP::RandGaussZiggurat::shoot(rndmEngine, tot_mean_narrow, tot_sigma_narrow);
 
  254           thetot = CLHEP::RandGaussZiggurat::shoot(rndmEngine, tot_mean_wide, tot_sigma_wide);
 
 
 
 
◆ 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. 
 
 
◆ ATLAS_THREAD_SAFE [1/2]
  
  | 
        
          | std::array<std::atomic<unsigned>, 2> m_allHits MuonR4::RpcFastDigiTool::ATLAS_THREAD_SAFE {} |  | mutableprivate | 
 
 
◆ ATLAS_THREAD_SAFE [2/2]
  
  | 
        
          | std::array<std::atomic<unsigned>, 2> m_acceptedHits MuonR4::RpcFastDigiTool::ATLAS_THREAD_SAFE {} |  | mutableprivate | 
 
 
◆ m_deadTime
  
  | 
        
          | Gaudi::Property<double> MuonR4::RpcFastDigiTool::m_deadTime {this, "deadTime", 100.*Gaudi::Units::nanosecond} |  | private | 
 
 
◆ m_detMgr
◆ m_digitizeMuonOnly
  
  | 
        
          | Gaudi::Property<bool> MuonR4::RpcFastDigiTool::m_digitizeMuonOnly |  | private | 
 
Initial value:{this, "ProcessTrueMuonsOnly", false, 
                                                     "If set to true hit with pdgId != 13 are skipped"}
Definition at line 79 of file RpcFastDigiTool.h.
 
 
◆ m_effiDataKey
Initial value:{this, "EffiDataKey", "RpcDigitEff",
                                                                    "Efficiency constants of the individual Rpc gasGaps"}
Definition at line 65 of file RpcFastDigiTool.h.
 
 
◆ 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"} |  | privateinherited | 
 
 
◆ m_inputObjectName
  
  | 
        
          | std::string MuonR4::MuonDigitizationTool::m_inputObjectName {""} |  | privateinherited | 
 
 
◆ 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 |  | privateinherited | 
 
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_propagationVelocity
  
  | 
        
          | Gaudi::Property<double> MuonR4::RpcFastDigiTool::m_propagationVelocity |  | private | 
 
Initial value:
                                                         "Propagation speed of the signal inside the strip"}
 
Definition at line 71 of file RpcFastDigiTool.h.
 
 
◆ m_rndmSvc
◆ m_sdoKey
◆ m_simHitKey
◆ m_simHits
◆ m_stIdxBIL
  
  | 
        
          | int MuonR4::RpcFastDigiTool::m_stIdxBIL {-1} |  | private | 
 
 
◆ m_stIdxBIS
  
  | 
        
          | int MuonR4::RpcFastDigiTool::m_stIdxBIS {-1} |  | private | 
 
 
◆ m_streamName
  
  | 
        
          | Gaudi::Property<std::string> MuonR4::MuonDigitizationTool::m_streamName {this, "StreamName", ""} |  | privateinherited | 
 
 
◆ m_stripTimeResolution
  
  | 
        
          | Gaudi::Property<double> MuonR4::RpcFastDigiTool::m_stripTimeResolution |  | private | 
 
Initial value:
                                                          "Estimated time resolution of the strip readout"}
 
Definition at line 74 of file RpcFastDigiTool.h.
 
 
◆ m_timedHits
  
  | 
        
          | TimedHits MuonR4::MuonDigitizationTool::m_timedHits {} |  | privateinherited | 
 
 
◆ 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.
 
 
◆ m_writeKey
The documentation for this class was generated from the following files:
 
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
void setIdentifier(const Identifier &id)
Sets the global ATLAS identifier.
Eigen::Matrix< double, 2, 1 > Vector2D
const std::string & stName(StIndex index)
convert StIndex into a string
#define ATH_MSG_VERBOSE(x)
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
bool empty() const
Test if the key is blank.
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 parameterBook & getParameters() const
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
double getEfficiency(const Identifier &channelId, bool isInnerQ1=false) const
Returns the signal generation efficiency of the sTgc channel.
IdentifierHash measurementHash(const Identifier &measId) const override final
Constructs the identifier hash from the full measurement Identifier.
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.
StatusCode initialize(bool used=true)
IdentifierHash layerHash(const Identifier &measId) const override final
Eigen::Matrix< double, 3, 1 > Vector3D
#define THROW_EXCEPTION(MESSAGE)
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Identifier identify() const
#define ATH_MSG_WARNING(x)
const StripLayerPtr & sensorLayout(const IdentifierHash &measHash) const
Access to the StripLayer associated to a given measurement Hash.
const T * at(size_type n) const
Access an element, as an rvalue.
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
a struct encapsulating the identifier of a pile-up event
double distanceToEdge(const IdentifierHash &measHash, const Amg::Vector3D &posInStripPlane, const EdgeSide side) const
Returns the disance to the readout.
size_type size() const noexcept
Returns the number of elements in the collection.