ATLAS Offline Software
Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
MuonR4::sTgcDigitizationTool Class Referencefinal

#include <sTgcDigitizationTool.h>

Inheritance diagram for MuonR4::sTgcDigitizationTool:
Collaboration diagram for MuonR4::sTgcDigitizationTool:

Classes

class  sTgcSimDigitHit
 

Public Types

using ReadoutChannelType = sTgcIdHelper::sTgcChannelTypes
 ReadoutChannelType to distinguish the available readout channels Pad - pad readout channel Strip - eta strip readout channel Wire - phi wire group readout channel. More...
 
using DigiConditions = sTgcDigitMaker::DigiConditions
 
using sTgcDigitVec = sTgcDigitMaker::sTgcDigitVec
 
using DigiCache = OutDigitCache_t< sTgcDigitCollection >
 
using sTgcSimDigitVec = std::vector< sTgcSimDigitHit >
 

Public Member Functions

StatusCode initialize () override final
 
StatusCode digitize (const EventContext &ctx, const TimedHits &hitsToDigit, xAOD::MuonSimHitContainer *sdoContainer) const override final
 Digitize the time ordered hits and write them to the digit format specific for the detector technology. More...
 
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. More...
 
StatusCode processAllSubEvents (const EventContext &ctx) override final
 alternative interface which uses the PileUpMergeSvc to obtain all the required SubEvents. More...
 
StatusCode processAllSubEvents (const EventContext &ctx) const
 Reentrant version of the digitization tool. More...
 
 PileUpToolBase (const std::string &type, const std::string &name, const IInterface *parent)
 

Protected Types

using TimedHit = TimedHitPtr< xAOD::MuonSimHit >
 
using TimedHits = std::vector< TimedHitPtr< xAOD::MuonSimHit > >
 
template<class DetType >
using OutDigitCache_t = std::vector< std::unique_ptr< DetType > >
 DigitContainers are sorted by DigitCollections which are the ensemble of all hits in a given MuonChamber. More...
 
using DeadTimeMap = std::unordered_map< Identifier, double >
 

Protected Member Functions

CLHEP::HepRandomEngine * getRandomEngine (const EventContext &ctx) const
 
xAOD::MuonSimHitaddSDO (const TimedHit &hit, xAOD::MuonSimHitContainer *sdoContainer) const
 Adds the timed simHit to the output SDO container. More...
 
const ActsGeometryContextgetGeoCtx (const EventContext &ctx) const
 Returns the reference to the ActsGeometryContext needed to fetch global positions from the Readout geometry. 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...
 

Static Protected Member Functions

static double hitTime (const TimedHit &hit)
 Returns the global time of the hit which is the sum of eventTime & individual hit time. More...
 
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. More...
 

Protected Attributes

const MuonGMR4::MuonDetectorManagerm_detMgr {nullptr}
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc
 

Private Types

using PileUpHits = PileUpMergeSvc::TimedList< xAOD::MuonSimHitContainer >::type
 
using SimHitLocalCopy = 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. More...
 

Private Member Functions

StatusCode processDigitsWithVMM (const EventContext &ctx, const DigiConditions &digiCond, sTgcSimDigitVec &digitsInChamber, const double vmmDeadTime, const bool isNeighbourOn, DigiCache &cache, xAOD::MuonSimHitContainer &outSdoContainer) const
 
sTgcSimDigitVec processDigitsWithVMM (const EventContext &ctx, const DigiConditions &digiCond, const double vmmDeadTime, sTgcSimDigitVec &unmergedDigits, const bool isNeighbourOn) const
 
uint16_t bcTagging (const double digitTime) const
 
double getChannelThreshold (const EventContext &ctx, const Identifier &channelID, const NswCalibDbThresholdData &thresholdData) const
 
StatusCode fillTimedHits (PileUpHits &&hitColl, TimedHits &timedHits) const
 Translates the PileUpHits into the timed hits format. More...
 

Private Attributes

SG::WriteHandleKey< sTgcDigitContainerm_writeKey {this, "OutputObjectName", "STGC_DIGITS"}
 
SG::ReadCondHandleKey< Muon::DigitEffiDatam_effiDataKey {this, "EffiDataKey", "sTgcDigitEff", "Efficiency constants"}
 
SG::ReadCondHandleKey< NswCalibDbThresholdDatam_condThrshldsKey {this, "CondThrshldsKey", "NswCalibDbThresholdData", "Calibration data"}
 
ToolHandle< Muon::INSWCalibSmearingToolm_smearingTool {this, "SmearingTool", "Muon::NSWCalibSmearingTool/STGCCalibSmearingTool"}
 
ToolHandle< Muon::INSWCalibToolm_calibrationTool {this, "CalibrationTool", "Muon::NSWCalibTool/STGCCalibTool"}
 
Gaudi::Property< bool > m_digitizeMuonOnly {this, "ProcessTrueMuonsOnly", true}
 
Gaudi::Property< bool > m_useTimeWindow {this, "UseTimeWindow", true}
 
Gaudi::Property< bool > m_doSmearing {this, "doSmearing", false}
 
Gaudi::Property< bool > m_doToFCorrection {this,"doToFCorrection", true}
 
Gaudi::Property< int > m_digitMode {this, "digitMode", 3}
 
Gaudi::Property< bool > m_doPadSharing {this,"padChargeSharing", false}
 
Gaudi::Property< double > m_deadtimeStrip {this,"deadtimeStrip", 250}
 
Gaudi::Property< double > m_deadtimePad {this,"deadtimePad" , 250}
 
Gaudi::Property< double > m_deadtimeWire {this,"deadtimeWire" , 250}
 
Gaudi::Property< bool > m_doNeighborOn {this,"neighborOn", true}
 
Gaudi::Property< double > m_runVoltage {this,"operatingHVinkV" , 2.8}
 
Gaudi::Property< bool > m_useCondThresholds
 
Gaudi::Property< double > m_energyDepositThreshold {this,"energyDepositThreshold",300.0*CLHEP::eV}
 
Gaudi::Property< double > m_limitElectronKineticEnergy {this,"limitElectronKineticEnergy",5.0*CLHEP::MeV}
 
Gaudi::Property< double > m_chargeThreshold {this,"chargeThreshold", 0.030}
 
const double m_timeJitterElectronicsStrip {2.f}
 
const double m_timeJitterElectronicsPad {2.f}
 
const double m_hitTimeMergeThreshold {30.f}
 
std::unique_ptr< sTgcDigitMakerm_digitizer {}
 
SG::ReadHandleKey< xAOD::MuonSimHitContainerm_simHitKey {this, "SimHitKey", ""}
 
SG::ReadHandleKey< ActsGeometryContextm_geoCtxKey
 
ServiceHandle< PileUpMergeSvcm_mergeSvc {this, "PileUpMergeSvc", "PileUpMergeSvc", ""}
 
Gaudi::Property< std::string > m_streamName {this, "StreamName", ""}
 
ServiceHandle< IAthRNGSvcm_rndmSvc {this, "RndmSvc", "AthRNGSvc", ""}
 
SG::WriteHandleKey< xAOD::MuonSimHitContainerm_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< SimHitLocalCopym_simHits {}
 

structors and AlgTool implementation

virtual StatusCode processAllSubEvents (const EventContext &ctx)=0
 dummy implementation to allow compilation while all Digitization packages are migrated to use this new interface. More...
 
virtual bool toProcess (int bunchXing) const override
 the method this base class helps implementing More...
 
virtual bool filterPassed () const override
 dummy implementation of passing filter More...
 
virtual void resetFilter () override
 dummy implementation of filter reset More...
 
Gaudi::Property< int > m_firstXing
 
Gaudi::Property< int > m_lastXing
 
Gaudi::Property< int > m_vetoPileUpTruthLinks
 
bool m_filterPassed {true}
 

Detailed Description

Definition at line 28 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h.

Member Typedef Documentation

◆ DeadTimeMap

using MuonR4::MuonDigitizationTool::DeadTimeMap = std::unordered_map<Identifier, double>
protectedinherited

Definition at line 100 of file MuonDigitizationTool.h.

◆ DigiCache

◆ DigiConditions

◆ OutDigitCache_t

template<class DetType >
using MuonR4::MuonDigitizationTool::OutDigitCache_t = std::vector<std::unique_ptr<DetType> >
protectedinherited

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

Definition at line 116 of file MuonDigitizationTool.h.

◆ ReadoutChannelType

ReadoutChannelType to distinguish the available readout channels Pad - pad readout channel Strip - eta strip readout channel Wire - phi wire group readout channel.

Definition at line 39 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h.

◆ SimHitLocalCopy

using MuonR4::MuonDigitizationTool::SimHitLocalCopy = std::pair<std::unique_ptr<xAOD::MuonSimHitContainer>, std::unique_ptr<xAOD::MuonSimHitAuxContainer> >
privateinherited

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.

◆ sTgcDigitVec

◆ sTgcSimDigitVec

◆ TimedHit

Definition at line 57 of file MuonDigitizationTool.h.

◆ TimedHits

using MuonR4::MuonDigitizationTool::TimedHits = std::vector<TimedHitPtr<xAOD::MuonSimHit> >
protectedinherited

Definition at line 58 of file MuonDigitizationTool.h.

Member Function Documentation

◆ addSDO()

xAOD::MuonSimHit * MuonR4::MuonDigitizationTool::addSDO ( const TimedHit hit,
xAOD::MuonSimHitContainer sdoContainer 
) const
protectedinherited

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) {
145  ATH_MSG_VERBOSE("No SDO container setup of writing");
146  return nullptr;
147  }
148  if (!m_includePileUpTruth && HepMC::ignoreTruthLink(hit->genParticleLink(), m_vetoPileUpTruthLinks)) {
149  ATH_MSG_VERBOSE("Hit "<<m_idHelperSvc->toString(hit->identify())<<" is a pile-up truth link");
150  return nullptr;
151  }
152  ATH_MSG_VERBOSE(m_idHelperSvc->toString(hit->identify())<<", pdgID: "<<hit->pdgId()<< " genParticleLink :"<<hit->genParticleLink());
153  ATH_MSG_VERBOSE("Genparticle: "<<hit->genParticleLink());
154  xAOD::MuonSimHit* sdoHit = sdoContainer->push_back(std::make_unique<xAOD::MuonSimHit>());
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  }

◆ bcTagging()

uint16_t sTgcDigitizationTool::bcTagging ( const double  digitTime) const
private

Definition at line 47 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx.

47  {
48  uint16_t bctag = 0;
49  int bunchInteger = (digitTime > 0) ? static_cast<int>(std::abs(digitTime / 25.0))
50  : static_cast<int>(std::abs(digitTime / 25.0)) + 1;
51  bctag = (bctag | bunchInteger);
52  if (digitTime < 0) bctag = ~bctag;
53  return bctag;
54  }

◆ digitize()

StatusCode sTgcDigitizationTool::digitize ( const EventContext &  ctx,
const TimedHits hitsToDigit,
xAOD::MuonSimHitContainer sdoContainer 
) const
finaloverridevirtual

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.

Storing hit position and direction in local frame

apply the smearing tool to decide if the hit has to be digitized or not based on layer efficiency

Digits are sorted by

Implements MuonR4::MuonDigitizationTool.

Definition at line 72 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx.

74  {
75  const sTgcIdHelper& idHelper{m_idHelperSvc->stgcIdHelper()};
76  CLHEP::HepRandomEngine* rndEngine = getRandomEngine(ctx);
77  const ActsGeometryContext &gctx{getGeoCtx(ctx)};
78 
79  const Muon::DigitEffiData* efficiencyMap{nullptr};
80  ATH_CHECK(SG::get(efficiencyMap, m_effiDataKey, ctx));
81  const NswCalibDbThresholdData* thresholdData{nullptr};
82  ATH_CHECK(SG::get(thresholdData, m_condThrshldsKey, ctx));
83 
84  DigiConditions digiCond{m_detMgr, efficiencyMap, thresholdData, rndEngine};
85  DigiCache digitCache{};
86 
87  double earliestEventTime = std::numeric_limits<double>::max();
88  xAOD::ChamberViewer viewer{hitsToDigit, m_idHelperSvc.get()};
89  const double angular_tolerance = 1e-3; // ~0.057 degrees
90 
91  do {
92  if (viewer.size() == 0) {
93  ATH_MSG_VERBOSE("No hits to digitize — skipping sTGC digitization.");
94  continue;
95  }
96  std::array<sTgcSimDigitVec , 3> simDigitsByChType{};
97  for (const TimedHit& hit : viewer) {
98 
99  if (m_digitizeMuonOnly && !MC::isMuon(hit)) {
100  ATH_MSG_VERBOSE("Hit is not from a muon - skipping ");
101  continue;
102  }
103  ATH_MSG_VERBOSE("Hit Particle ID : " << hit->pdgId() );
104  double eventTime = hit.eventTime();
105  earliestEventTime = std::min(earliestEventTime, eventTime);
106  if (hit->energyDeposit() < m_energyDepositThreshold){
107  ATH_MSG_VERBOSE("Hit with Energy Deposit of " << hit->energyDeposit()
108  << " less than " << m_energyDepositThreshold << ". Skip this hit." );
109  continue;
110  }
111 
113  const Amg::Vector3D locHitPos = xAOD::toEigen(hit->localPosition());
114  const Amg::Vector3D locHitDir = xAOD::toEigen(hit->localDirection());
115 
116  const double hitKineticEnergy = hit->kineticEnergy();
117  if (hitKineticEnergy < m_limitElectronKineticEnergy && MC::isElectron(hit)) {
118  ATH_MSG_DEBUG("Skip electron hit with kinetic energy " << hitKineticEnergy
119  << ", which is less than the lower limit of " << m_limitElectronKineticEnergy);
120  continue;
121  }
122 
123  // No support for particles with direction perpendicular to the beam line, since such particles
124  // can deposit energy on a lot of strips and pads of the gas gap.
125  const double theta = std::acos(locHitDir.z()); // polar angle from Z axis
126  const double ninetyDegrees = std::numbers::pi / 2;
127  // Reject hits that are too close to 90 degrees (i.e., perpendicular to Z)
128  if (std::abs(theta - ninetyDegrees) < angular_tolerance) {
129  ATH_MSG_VERBOSE("Skipping hit nearly perpendicular to Z-axis (angle: " << theta << ")");
130  continue;
131  }
132  if (std::abs(locHitDir.z()) < 0.00001) {
133  ATH_MSG_VERBOSE("Skipping hit nearly perpendicular to Z-axis.");
134  continue;
135  }
136  if(eventTime != 0){
137  ATH_MSG_DEBUG("Updated hit global time to include off set of " << eventTime << " ns from OOT bunch.");
138  }
139  else {
140  ATH_MSG_DEBUG("This hit came from the in time bunch.");
141  }
142 
143  const Identifier hitId = hit->identify();
146  if (m_doSmearing) {
147  bool acceptHit = true;
148  ATH_CHECK(m_smearingTool->isAccepted(hitId, acceptHit, rndEngine));
149  if ( !acceptHit ) {
150  ATH_MSG_DEBUG("Dropping the hit - smearing tool");
151  continue;
152  }
153  }
154  const MuonGMR4::sTgcReadoutElement* readoutElement = m_detMgr->getsTgcReadoutElement(hitId);
155  const Amg::Vector3D globalHitPos = readoutElement->localToGlobalTrans(gctx, hitId) * locHitPos;
156  double globalHitTime = hit->globalTime() + eventTime;
157  double tofCorrection = globalHitPos.mag() / CLHEP::c_light;
158  double bunchTime = globalHitTime - tofCorrection;
159 
160  const HepMcParticleLink particleLink = hit->genParticleLink();
161  // Print some information about the sTGC hit
162  ATH_MSG_VERBOSE("hitID " << m_idHelperSvc->toString(hitId) << " Hit bunch time " << bunchTime << " tof/G4 hit time " << globalHitTime
163  << " globalHitPosition " << Amg::toString(globalHitPos) << " hit: r " << globalHitPos.perp() << " z " << globalHitPos.z()
164  << " mclink " << particleLink << "Kinetic energy " << hitKineticEnergy);
165  ATH_MSG_VERBOSE("Total hits passed to digitize: " << hitsToDigit.size());
166  sTgcDigitVec digitizedHits = m_digitizer->executeDigi(digiCond, hit);
167  if(digitizedHits.empty()) {
168  continue;
169  }
170  ATH_MSG_VERBOSE("Hit produced " << digitizedHits.size() << " digits." );
171 
172  for (std::unique_ptr<sTgcDigit>& digit : digitizedHits) {
173  /*
174  NOTE:
175  -----
176  Since not every hit might end up resulting in a
177  digit, this construction might take place after the hit loop
178  in a loop of its own!
179  */
180  // make new sTgcDigit
181  const Identifier digitId = digit->identify();
182  double digitTime = digit->time();
183  int digitChType = idHelper.channelType(digitId);
184 
185  if(digitChType == ReadoutChannelType::Strip) {
186  digitTime += CLHEP::RandGaussZiggurat::shoot(rndEngine, 0, m_timeJitterElectronicsStrip);
187  }
188  else {
189  digitTime += CLHEP::RandGaussZiggurat::shoot(rndEngine, 0, m_timeJitterElectronicsPad);
190  }
191 
192  uint16_t digitBCTag = bcTagging(digitTime + bunchTime);
193  digitTime += m_doToFCorrection ? bunchTime : globalHitTime;
194 
195  double digitCharge = digit->charge();
196  // Create a new digit with updated time and BCTag
197  int eventId = hit.eventId();
198  bool isDead{false}, isPileup{eventId != 0};
199  ATH_MSG_VERBOSE("Hit is from the main signal subevent if eventId is zero, eventId = "
200  << eventId << " newDigit time: " << digitTime);
201  auto newDigitPtr = std::make_unique<sTgcDigit>(digitId, digitBCTag, digitTime, digitCharge, isDead, isPileup);
202  if (digitChType == ReadoutChannelType::Strip) {
203  ATH_MSG_VERBOSE("Finalizing Digit "<<m_idHelperSvc->toString(digitId)
204  <<" BC tag = " << newDigitPtr->bcTag()
205  <<" digitTime = " << newDigitPtr->time()
206  <<" charge = " << newDigitPtr->charge());
207  }
208  simDigitsByChType[digitChType].emplace_back(std::move(hit), std::move(newDigitPtr));
209  }
210  }
211  if (!simDigitsByChType[ReadoutChannelType::Strip].empty()) {
212  ATH_CHECK(processDigitsWithVMM(ctx, digiCond, simDigitsByChType[ReadoutChannelType::Strip], m_deadtimeStrip, m_doNeighborOn, digitCache, *sdoContainer));
213  }
214  if (!simDigitsByChType[ReadoutChannelType::Pad].empty()) {
215  ATH_CHECK(processDigitsWithVMM(ctx, digiCond, simDigitsByChType[ReadoutChannelType::Pad], m_deadtimePad, false, digitCache, *sdoContainer));
216  }
217  if (!simDigitsByChType[ReadoutChannelType::Wire].empty()) {
218  ATH_CHECK(processDigitsWithVMM(ctx, digiCond, simDigitsByChType[ReadoutChannelType::Wire], m_deadtimeWire, false, digitCache, *sdoContainer));
219  }
220  } while (viewer.next());
222  ATH_CHECK(writeDigitContainer(ctx, m_writeKey, std::move(digitCache), idHelper.module_hash_max()));
223 
224  return StatusCode::SUCCESS;
225  }

◆ fetchCollection()

template<class DigitColl >
DigitColl* MuonR4::MuonDigitizationTool::fetchCollection ( const Identifier hitId,
OutDigitCache_t< DigitColl > &  digitCache 
) const
protectedinherited

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.

44  {
45  for (const auto& [timeIndex, simHitColl] : hitColl) {
46  timedHits.reserve(timedHits.capacity() + simHitColl->size());
47  for (const xAOD::MuonSimHit* simHit : *simHitColl) {
48  timedHits.emplace_back(timeIndex.time(), timeIndex.index(), simHit, timeIndex.type());
49  }
50  }
51  std::stable_sort(timedHits.begin(), timedHits.end(),
52  [](const TimedHit& a, const TimedHit& b){
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  }

◆ filterPassed()

virtual bool PileUpToolBase::filterPassed ( ) const
inlineoverridevirtualinherited

dummy implementation of passing filter

Definition at line 49 of file PileUpToolBase.h.

49 { return m_filterPassed; }

◆ getChannelThreshold()

double sTgcDigitizationTool::getChannelThreshold ( const EventContext &  ctx,
const Identifier channelID,
const NswCalibDbThresholdData thresholdData 
) const
private

Definition at line 56 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx.

58  {
60  float elecThreshold = 0.0;
61  if (!thresholdData.getThreshold(channelID, elecThreshold)) {
62  THROW_EXCEPTION("Cannot retrieve VMM threshold from conditions database!");
63  }
64 
65  if (!m_calibrationTool->pdoToCharge(ctx, true, elecThreshold, channelID, threshold)) {
66  THROW_EXCEPTION("Cannot convert VMM charge threshold via conditions data!");
67  }
68 
69  return threshold;
70  }

◆ getGeoCtx()

const ActsGeometryContext & MuonR4::MuonDigitizationTool::getGeoCtx ( const EventContext &  ctx) const
protectedinherited

Returns the reference to the ActsGeometryContext needed to fetch global positions from the Readout geometry.

Definition at line 135 of file MuonDigitizationTool.cxx.

135  {
136  const ActsGeometryContext* gctx{};
137  if (!SG::get(gctx, m_geoCtxKey, ctx).isSuccess()) {
138  THROW_EXCEPTION("Failed to retrieve the geometry context "<<m_geoCtxKey.fullKey());
139  }
140  return *gctx;
141  }

◆ getRandomEngine()

CLHEP::HepRandomEngine * MuonR4::MuonDigitizationTool::getRandomEngine ( const EventContext &  ctx) const
protectedinherited

Definition at line 129 of file MuonDigitizationTool.cxx.

129  {
130  ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, m_streamName);
131  std::string rngName = m_streamName;
132  rngWrapper->setSeed(rngName, ctx);
133  return rngWrapper->getEngine(ctx);
134  }

◆ 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.

63  {
64  return hit.eventTime() + hit->globalTime();
65  }

◆ initialize()

StatusCode sTgcDigitizationTool::initialize ( )
finaloverridevirtual

meanGasGain is the mean value of the polya gas gain function describing the avalanche of electrons caused by the electric field Parameterization is obtained from ATL-MUON-PUB-2014-001 and the corrected fit to data to parameterize gain vs HV in kV

Reimplemented from MuonR4::MuonDigitizationTool.

Definition at line 11 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx.

11  {
12  ATH_MSG_DEBUG("sTgcDigitizationTool::initialize()");
13  ATH_MSG_DEBUG ( "Configuration sTgcDigitizationTool" );
14  ATH_MSG_DEBUG ( "doSmearing "<< m_doSmearing);
15  ATH_MSG_DEBUG("OutputObjectName " << m_writeKey.key());
16  ATH_MSG_DEBUG ( "HV " << m_runVoltage);
17  ATH_MSG_DEBUG ( "threshold " << m_chargeThreshold);
18  ATH_MSG_DEBUG ( "useCondThresholds " << m_useCondThresholds);
19 
24  ATH_CHECK(m_smearingTool.retrieve());
25  ATH_CHECK(m_calibrationTool.retrieve());
26 
27  if (m_doSmearing) {
28  ATH_MSG_INFO("Running in smeared mode!");
29  }
30 
35  if (m_runVoltage < 2.3 || m_runVoltage > 3.2){
36  ATH_MSG_WARNING("STGC run voltage must be within fit domain of 2.3 kV to 3.2 kV");
37  return StatusCode::FAILURE;
38  }
39  double meanGasGain = 2.15 * 1E-4 * std::exp(6.88*m_runVoltage);
41  m_digitizer = std::make_unique<sTgcDigitMaker>(m_idHelperSvc.get(), mode, meanGasGain, m_doPadSharing);
42  ATH_CHECK(m_digitizer->initialize());
43 
44  return StatusCode::SUCCESS;
45  }

◆ mergeEvent()

StatusCode MuonR4::MuonDigitizationTool::mergeEvent ( const EventContext &  ctx)
finaloverrideinherited

Definition at line 92 of file MuonDigitizationTool.cxx.

92  {
93  ATH_MSG_DEBUG("mergeEvent()");
94 
96  if (!m_sdoKey.empty()) {
98  ATH_CHECK(sdoContainer.record(std::make_unique<xAOD::MuonSimHitContainer>(),
99  std::make_unique<xAOD::MuonSimHitAuxContainer>()));
100  }
101  ATH_CHECK(digitize(ctx, m_timedHits, !m_sdoKey.empty() ? sdoContainer.ptr() : nullptr));
102  m_timedHits.clear();
103  m_simHits.clear();
104  return StatusCode::SUCCESS;
105  }

◆ passDeadTime()

bool MuonR4::MuonDigitizationTool::passDeadTime ( const Identifier channelId,
const double  hitTime,
const double  deadTimeWindow,
DeadTimeMap deadTimeMap 
)
staticprotectedinherited

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
inherited

Definition at line 22 of file PileUpToolBase.cxx.

10  : base_class(type, name, parent)
11 {
12 }

◆ 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.

36  {
37 
38  ATH_MSG_DEBUG("prepareEvent() called for " << nInputEvents << " input events");
39  m_timedHits.clear();
40  m_simHits.clear();
41  return StatusCode::SUCCESS;
42  }

◆ 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.

71  {
72  PileUpHits hitCollList{};
73  TimedHits timedHits{};
75  if (!m_onlyUseContainerName) {
76  const xAOD::MuonSimHitContainer* hitCollection{nullptr};
77  ATH_CHECK(SG::get(hitCollection, m_simHitKey, ctx));
78  hitCollList.emplace_back(PileUpTimeEventIndex(0), hitCollection);
79  } else {
80  ATH_CHECK(m_mergeSvc->retrieveSubEvtsData(m_inputObjectName, hitCollList));
81  }
82  ATH_CHECK(fillTimedHits(std::move(hitCollList), timedHits));
84  if (!m_sdoKey.empty()) {
86  ATH_CHECK(sdoContainer.record(std::make_unique<xAOD::MuonSimHitContainer>(),
87  std::make_unique<xAOD::MuonSimHitAuxContainer>()));
88  }
89  ATH_CHECK(digitize(ctx, timedHits, !m_sdoKey.empty() ? sdoContainer.ptr() : nullptr));
90  return StatusCode::SUCCESS;
91  }

◆ 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.

66  {
67  const MuonDigitizationTool* digiTool = this;
68  return digiTool->processAllSubEvents(ctx);
69  }

◆ 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()

StatusCode MuonR4::MuonDigitizationTool::processBunchXing ( int  bunchXing,
SubEventIterator  bSubEvents,
SubEventIterator  eSubEvents 
)
finaloverridevirtualinherited

Reimplemented from PileUpToolBase.

Definition at line 108 of file MuonDigitizationTool.cxx.

110  {
111  ATH_MSG_DEBUG("processBunchXing()" << bunchXing);
112  PileUpHits hitList{}, hitListPermanent{};
113  ATH_CHECK(m_mergeSvc->retrieveSubSetEvtData(m_inputObjectName, hitList, bunchXing, bSubEvents, eSubEvents));
114  ATH_MSG_VERBOSE(hitList.size() << " hits in xAODMuonSimHitContainer " << m_inputObjectName << " found");
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());
119  for (const xAOD::MuonSimHit* copyMe : *hitContainer) {
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  }
125  ATH_CHECK(fillTimedHits(std::move(hitListPermanent), m_timedHits));
126  return StatusCode::SUCCESS;
127  }

◆ processDigitsWithVMM() [1/2]

sTgcDigitizationTool::sTgcSimDigitVec sTgcDigitizationTool::processDigitsWithVMM ( const EventContext &  ctx,
const DigiConditions digiCond,
const double  vmmDeadTime,
sTgcSimDigitVec unmergedDigits,
const bool  isNeighbourOn 
) const
private

Sort Digits in the unmergedDigits vector by gasgap -> channelType -> time

Catch the cases where the channel is 1 or maxChannel

merge digits in time. Do weighted average to find time of digits originally below threshold. Follows what we expect from real VMM.

We reached another digit. No need to merge

Definition at line 289 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx.

293  {
294 
295  const MuonGMR4::MuonDetectorManager* detMgr{digiCond.detMgr};
296  const sTgcIdHelper& idHelper{m_idHelperSvc->stgcIdHelper()};
298  std::stable_sort(unmergedDigits.begin(), unmergedDigits.end(),
299  [&idHelper](const sTgcSimDigitHit& a, const sTgcSimDigitHit& b) {
300  const int layA = idHelper.gasGap(a.identify());
301  const int layB = idHelper.gasGap(b.identify());
302  if (layA != layB) return layA < layB;
303  const int chA = idHelper.channel(a.identify());
304  const int chB = idHelper.channel(b.identify());
305  if (chA != chB) return chA < chB;
306  return a.time() < b.time();
307  }
308  );
309  sTgcSimDigitVec savedDigits{}, premerged{};
310 
311  premerged.reserve(unmergedDigits.size());
312  savedDigits.reserve(premerged.capacity());
313 
314  auto passNeigbourLogic = [&](const sTgcSimDigitHit& candidate) {
315  if (!isNeighbourOn || savedDigits.empty()) return false;
316  if (savedDigits.back().identify() == candidate.identify() &&
317  std::abs(savedDigits.back().time() - candidate.time()) < vmmDeadTime) {
318  ATH_MSG_VERBOSE("Digits are too close in time ");
319  return false;
320  }
321  const Identifier digitId = candidate.identify();
322  const int channel = idHelper.channel(digitId);
323  const int maxChannel = detMgr->getsTgcReadoutElement(digitId)->numChannels(digitId);
324  for (int neighbour : {std::max(1, channel -1), std::min(maxChannel, channel+1)}) {
326  if (neighbour == channel) continue;
327  const Identifier neighbourId = idHelper.channelID(digitId,
328  idHelper.multilayer(digitId),
329  idHelper.gasGap(digitId),
330  idHelper.channelType(digitId), neighbour);
331  const double threshold = m_useCondThresholds ? getChannelThreshold(ctx, neighbourId, *digiCond.thresholdData)
333  if (std::find_if(savedDigits.begin(), savedDigits.end(), [&](const sTgcSimDigitHit& known){
334  return known.identify() == neighbourId &&
335  known.getDigit().charge() > threshold &&
336  std::abs(known.time() - candidate.time()) < m_hitTimeMergeThreshold;
337  }) != savedDigits.end()) return true;
338 
339  }
340  return false;
341  };
342  // Sort digits on every channel by earliest to latest time
343  // Also do hit merging to help with neighborOn logic
344  double threshold = m_chargeThreshold;
345  for (sTgcSimDigitVec::iterator merge_me = unmergedDigits.begin(); merge_me!= unmergedDigits.end(); ++merge_me) {
346  if(m_useCondThresholds) {
347  threshold = getChannelThreshold(ctx, (*merge_me).identify(), *digiCond.thresholdData);
348  }
351  sTgcDigit& digit1{(*merge_me).getDigit()};
352  double totalCharge = digit1.charge();
353  double weightedTime = digit1.time();
354 
355  sTgcSimDigitVec::iterator merge_with = merge_me + 1;
356  for ( ; merge_with!= unmergedDigits.end(); ++merge_with) {
358  if ((*merge_with).identify() != (*merge_me).identify()) {
359  break;
360  }
361  const sTgcDigit& mergeDigit{(*merge_with).getDigit()};
362  // If future digits are within window, digit1 absorbs its charge
363  if (mergeDigit.time() - digit1.time() > m_hitTimeMergeThreshold) break;
364  // If digit1 is not above threshold prior to merging, the new time is
365  // a weighted average. Do it for every merging pair.
366  if (totalCharge < threshold) {
367  weightedTime = (weightedTime * totalCharge + mergeDigit.time() * mergeDigit.charge())
368  / (totalCharge + mergeDigit.charge());
369  }
370  totalCharge += mergeDigit.charge();
371  }
372  digit1.set_charge(totalCharge);
373  digit1.set_time(weightedTime);
374  sTgcSimDigitHit& mergedHit{*merge_me};
375  if (!savedDigits.empty() &&
376  savedDigits.back().identify() == digit1.identify() &&
377  std::abs(savedDigits.back().time() - digit1.time()) <= vmmDeadTime) continue;
378  if (digit1.charge() > threshold || passNeigbourLogic(mergedHit)){
379  savedDigits.emplace_back(std::move(mergedHit));
380  } else if (isNeighbourOn) {
381  premerged.emplace_back(std::move(mergedHit));
382  }
383  } // end of time-ordering and hit merging loop
384  std::copy_if(std::make_move_iterator(premerged.begin()),
385  std::make_move_iterator(premerged.end()),
386  std::back_inserter(savedDigits), passNeigbourLogic);
387  if(savedDigits.empty() && !unmergedDigits.empty()) {
388  }
389  return savedDigits;
390  }

◆ processDigitsWithVMM() [2/2]

StatusCode sTgcDigitizationTool::processDigitsWithVMM ( const EventContext &  ctx,
const DigiConditions digiCond,
sTgcSimDigitVec digitsInChamber,
const double  vmmDeadTime,
const bool  isNeighbourOn,
DigiCache cache,
xAOD::MuonSimHitContainer outSdoContainer 
) const
private

Sort all digits from the same chamber according to layer->channelType->time

Update the container iterator to go to the next chamber

apply the smearing before adding the digit

Select strips with charge > 0.001 pC to avoid having zero ADC count when converting charge [pC] to PDO [ADC count]

Add the only the hits and digits that pass VMM simulation to sdo container

Change the sdo hit time to include the pileup eventTime

Add the VMM processed digit to cache

Definition at line 227 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx.

233  {
234 
235  const sTgcIdHelper& idHelper{m_idHelperSvc->stgcIdHelper()};
236  if (digitsInChamber.empty()) {
237  ATH_MSG_WARNING("Failed to obtain the digitized hits for VMM Simulation" );
238  return StatusCode::SUCCESS;
239  }
241  sTgcSimDigitVec mergedDigits = processDigitsWithVMM(ctx, digiCond, vmmDeadTime,
242  digitsInChamber, isNeighbourOn);
244  if (mergedDigits.empty()) {
245  return StatusCode::SUCCESS;
246  }
247 
248  for (sTgcSimDigitHit& merged : mergedDigits) {
249 
251  bool acceptDigit{true};
252  float chargeAfterSmearing = merged.getDigit().charge();
253  if (m_doSmearing) {
254  ATH_CHECK(m_smearingTool->smearCharge(merged.identify(), chargeAfterSmearing, acceptDigit,
255  digiCond.rndEngine));
256  }
257  if (!acceptDigit) {
258  continue;
259  }
262  if (idHelper.channelType(merged.identify()) == ReadoutChannelType::Strip &&
263  chargeAfterSmearing < 0.001) {
264  continue;
265  }
266  std::unique_ptr<sTgcDigit> finalDigit = std::make_unique<sTgcDigit>(std::move(merged.getDigit()));
267  if (m_doSmearing) {
268  finalDigit->set_charge(chargeAfterSmearing);
269  }
270  ATH_MSG_VERBOSE("Final Digit "<<m_idHelperSvc->toString(finalDigit->identify())<<
271  " BC tag = " << finalDigit->bcTag()<<
272  " digitTime = " << finalDigit->time() <<
273  " charge = " << finalDigit->charge());
274 
276  xAOD::MuonSimHit* sdoHit = addSDO(merged.getSimHit(), &outSdoContainer);
277  if(sdoHit) {
279  double globalHitTime = sdoHit->globalTime() + merged.getSimHit().eventTime();
280  sdoHit->setGlobalTime(globalHitTime);
281  }
283  sTgcDigitCollection* outColl = fetchCollection(finalDigit->identify(), cache);
284  outColl->push_back(std::move(finalDigit));
285  }
286  return StatusCode::SUCCESS;
287  }

◆ resetFilter()

virtual void PileUpToolBase::resetFilter ( )
inlineoverridevirtualinherited

dummy implementation of filter reset

Reimplemented in MergeTruthJetsTool.

Definition at line 51 of file PileUpToolBase.h.

51 { m_filterPassed=true; }

◆ toProcess()

virtual bool PileUpToolBase::toProcess ( int  bunchXing) const
inlineoverridevirtualinherited

the method this base class helps implementing

Reimplemented in MergeHijingParsTool, and MergeTrackRecordCollTool.

Definition at line 32 of file PileUpToolBase.h.

32  {
33  //closed interval [m_firstXing,m_lastXing]
34  return !((m_firstXing > bunchXing) || (bunchXing > m_lastXing));
35  }

◆ 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
protectedinherited

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.

Member Data Documentation

◆ m_calibrationTool

ToolHandle<Muon::INSWCalibTool> MuonR4::sTgcDigitizationTool::m_calibrationTool {this, "CalibrationTool", "Muon::NSWCalibTool/STGCCalibTool"}
private

◆ m_chargeThreshold

Gaudi::Property<double> MuonR4::sTgcDigitizationTool::m_chargeThreshold {this,"chargeThreshold", 0.030}
private

◆ m_condThrshldsKey

SG::ReadCondHandleKey<NswCalibDbThresholdData> MuonR4::sTgcDigitizationTool::m_condThrshldsKey {this, "CondThrshldsKey", "NswCalibDbThresholdData", "Calibration data"}
private

◆ m_deadtimePad

Gaudi::Property<double> MuonR4::sTgcDigitizationTool::m_deadtimePad {this,"deadtimePad" , 250}
private

◆ m_deadtimeStrip

Gaudi::Property<double> MuonR4::sTgcDigitizationTool::m_deadtimeStrip {this,"deadtimeStrip", 250}
private

◆ m_deadtimeWire

Gaudi::Property<double> MuonR4::sTgcDigitizationTool::m_deadtimeWire {this,"deadtimeWire" , 250}
private

◆ m_detMgr

const MuonGMR4::MuonDetectorManager* MuonR4::MuonDigitizationTool::m_detMgr {nullptr}
protectedinherited

Definition at line 111 of file MuonDigitizationTool.h.

◆ m_digitizeMuonOnly

Gaudi::Property<bool> MuonR4::sTgcDigitizationTool::m_digitizeMuonOnly {this, "ProcessTrueMuonsOnly", true}
private

◆ m_digitizer

std::unique_ptr<sTgcDigitMaker> MuonR4::sTgcDigitizationTool::m_digitizer {}
private

◆ m_digitMode

Gaudi::Property<int> MuonR4::sTgcDigitizationTool::m_digitMode {this, "digitMode", 3}
private

◆ m_doNeighborOn

Gaudi::Property<bool> MuonR4::sTgcDigitizationTool::m_doNeighborOn {this,"neighborOn", true}
private

◆ m_doPadSharing

Gaudi::Property<bool> MuonR4::sTgcDigitizationTool::m_doPadSharing {this,"padChargeSharing", false}
private

◆ m_doSmearing

Gaudi::Property<bool> MuonR4::sTgcDigitizationTool::m_doSmearing {this, "doSmearing", false}
private

◆ m_doToFCorrection

Gaudi::Property<bool> MuonR4::sTgcDigitizationTool::m_doToFCorrection {this,"doToFCorrection", true}
private

◆ m_effiDataKey

SG::ReadCondHandleKey<Muon::DigitEffiData> MuonR4::sTgcDigitizationTool::m_effiDataKey {this, "EffiDataKey", "sTgcDigitEff", "Efficiency constants"}
private

◆ m_energyDepositThreshold

Gaudi::Property<double> MuonR4::sTgcDigitizationTool::m_energyDepositThreshold {this,"energyDepositThreshold",300.0*CLHEP::eV}
private

◆ m_filterPassed

bool PileUpToolBase::m_filterPassed {true}
protectedinherited

Definition at line 60 of file PileUpToolBase.h.

◆ 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

SG::ReadHandleKey<ActsGeometryContext> MuonR4::MuonDigitizationTool::m_geoCtxKey
privateinherited
Initial value:
{this, "AlignmentKey", "ActsAlignment",
"Geometry context"}

Definition at line 123 of file MuonDigitizationTool.h.

◆ m_hitTimeMergeThreshold

const double MuonR4::sTgcDigitizationTool::m_hitTimeMergeThreshold {30.f}
private

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonR4::MuonDigitizationTool::m_idHelperSvc
protectedinherited
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

Definition at line 137 of file MuonDigitizationTool.h.

◆ m_inputObjectName

std::string MuonR4::MuonDigitizationTool::m_inputObjectName {""}
privateinherited

Definition at line 139 of file MuonDigitizationTool.h.

◆ 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_limitElectronKineticEnergy

Gaudi::Property<double> MuonR4::sTgcDigitizationTool::m_limitElectronKineticEnergy {this,"limitElectronKineticEnergy",5.0*CLHEP::MeV}
private

◆ m_mergeSvc

ServiceHandle<PileUpMergeSvc> MuonR4::MuonDigitizationTool::m_mergeSvc {this, "PileUpMergeSvc", "PileUpMergeSvc", ""}
privateinherited

Definition at line 126 of file MuonDigitizationTool.h.

◆ 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_rndmSvc

ServiceHandle<IAthRNGSvc> MuonR4::MuonDigitizationTool::m_rndmSvc {this, "RndmSvc", "AthRNGSvc", ""}
privateinherited

Definition at line 130 of file MuonDigitizationTool.h.

◆ m_runVoltage

Gaudi::Property<double> MuonR4::sTgcDigitizationTool::m_runVoltage {this,"operatingHVinkV" , 2.8}
private

◆ m_sdoKey

SG::WriteHandleKey<xAOD::MuonSimHitContainer> MuonR4::MuonDigitizationTool::m_sdoKey {this, "OutputSDOName", ""}
privateinherited

Definition at line 132 of file MuonDigitizationTool.h.

◆ m_simHitKey

SG::ReadHandleKey<xAOD::MuonSimHitContainer> MuonR4::MuonDigitizationTool::m_simHitKey {this, "SimHitKey", ""}
privateinherited

Definition at line 121 of file MuonDigitizationTool.h.

◆ m_simHits

std::vector<SimHitLocalCopy> MuonR4::MuonDigitizationTool::m_simHits {}
privateinherited

Definition at line 145 of file MuonDigitizationTool.h.

◆ m_smearingTool

ToolHandle<Muon::INSWCalibSmearingTool> MuonR4::sTgcDigitizationTool::m_smearingTool {this, "SmearingTool", "Muon::NSWCalibSmearingTool/STGCCalibSmearingTool"}
private

◆ m_streamName

Gaudi::Property<std::string> MuonR4::MuonDigitizationTool::m_streamName {this, "StreamName", ""}
privateinherited

Definition at line 128 of file MuonDigitizationTool.h.

◆ m_timedHits

TimedHits MuonR4::MuonDigitizationTool::m_timedHits {}
privateinherited

Definition at line 141 of file MuonDigitizationTool.h.

◆ m_timeJitterElectronicsPad

const double MuonR4::sTgcDigitizationTool::m_timeJitterElectronicsPad {2.f}
private

◆ m_timeJitterElectronicsStrip

const double MuonR4::sTgcDigitizationTool::m_timeJitterElectronicsStrip {2.f}
private

◆ m_useCondThresholds

Gaudi::Property<bool> MuonR4::sTgcDigitizationTool::m_useCondThresholds
private
Initial value:
{this, "useCondThresholds", false,
"Use conditions data to get VMM charge threshold values"}

Definition at line 91 of file MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h.

◆ m_useTimeWindow

Gaudi::Property<bool> MuonR4::sTgcDigitizationTool::m_useTimeWindow {this, "UseTimeWindow", true}
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.

◆ m_writeKey

SG::WriteHandleKey<sTgcDigitContainer> MuonR4::sTgcDigitizationTool::m_writeKey {this, "OutputObjectName", "STGC_DIGITS"}
private

The documentation for this class was generated from the following files:
MuonR4::sTgcDigitizationTool::m_timeJitterElectronicsPad
const double m_timeJitterElectronicsPad
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:100
MuonR4::MuonDigitizationTool::m_inputObjectName
std::string m_inputObjectName
Definition: MuonDigitizationTool.h:139
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
ATHRNG::RNGWrapper::setSeed
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition: RNGWrapper.h:169
MuonR4::MuonDigitizationTool::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: MuonDigitizationTool.h:123
xAOD::MuonSimHit_v1
Definition: MuonSimHit_v1.h:18
MuonR4::sTgcDigitizationTool::m_runVoltage
Gaudi::Property< double > m_runVoltage
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:90
MuonR4::sTgcDigitizationTool::m_chargeThreshold
Gaudi::Property< double > m_chargeThreshold
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:97
MuonR4::MuonDigitizationTool::m_simHitKey
SG::ReadHandleKey< xAOD::MuonSimHitContainer > m_simHitKey
Definition: MuonDigitizationTool.h:121
NswCalibDbThresholdData
Definition: NswCalibDbThresholdData.h:17
MuonR4::sTgcDigitizationTool::DigiCache
OutDigitCache_t< sTgcDigitCollection > DigiCache
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:42
MuonR4::sTgcDigitizationTool::m_condThrshldsKey
SG::ReadCondHandleKey< NswCalibDbThresholdData > m_condThrshldsKey
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:74
MuonR4::MuonDigitizationTool::fillTimedHits
StatusCode fillTimedHits(PileUpHits &&hitColl, TimedHits &timedHits) const
Translates the PileUpHits into the timed hits format.
Definition: MuonDigitizationTool.cxx:44
sTgcDigit::set_charge
void set_charge(float newCharge)
Definition: sTgcDigit.cxx:71
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
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
PileUpToolBase::m_filterPassed
bool m_filterPassed
Definition: PileUpToolBase.h:60
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonGMR4::MuonDetectorManager
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonDetectorManager.h:62
SG::Accessor< float >
MuonR4::sTgcDigitizationTool::m_timeJitterElectronicsStrip
const double m_timeJitterElectronicsStrip
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:99
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
MuonR4::sTgcDigitizationTool::m_limitElectronKineticEnergy
Gaudi::Property< double > m_limitElectronKineticEnergy
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:95
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:75
MuonR4::MuonDigitizationTool::m_onlyUseContainerName
Gaudi::Property< bool > m_onlyUseContainerName
Definition: MuonDigitizationTool.h:134
MuonR4::sTgcDigitizationTool::m_deadtimePad
Gaudi::Property< double > m_deadtimePad
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:87
MuonR4::MuonDigitizationTool::m_mergeSvc
ServiceHandle< PileUpMergeSvc > m_mergeSvc
Definition: MuonDigitizationTool.h:126
xAOD::MuonSimHit_v1::globalTime
float globalTime() const
Returns the time ellapsed since the collision of the traversing particle.
MuonR4::MuonDigitizationTool::TimedHit
TimedHitPtr< xAOD::MuonSimHit > TimedHit
Definition: MuonDigitizationTool.h:57
MuonR4::sTgcDigitizationTool::m_doNeighborOn
Gaudi::Property< bool > m_doNeighborOn
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:89
sTgcDigit::bcTag
uint16_t bcTag() const
Definition: sTgcDigit.cxx:34
MuonR4::sTgcDigitizationTool::m_digitMode
Gaudi::Property< int > m_digitMode
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:84
MuonR4::MuonDigitizationTool::m_sdoKey
SG::WriteHandleKey< xAOD::MuonSimHitContainer > m_sdoKey
Definition: MuonDigitizationTool.h:132
MuonR4::sTgcDigitizationTool::DigiConditions
sTgcDigitMaker::DigiConditions DigiConditions
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:40
athena.value
value
Definition: athena.py:124
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
PileUpToolBase::m_lastXing
Gaudi::Property< int > m_lastXing
Definition: PileUpToolBase.h:56
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
HepMC::ignoreTruthLink
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
Definition: MagicNumbers.h:344
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
std::stable_sort
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.
Definition: DVL_algorithms.h:711
pi
#define pi
Definition: TileMuonFitter.cxx:65
PileUpToolBase::m_vetoPileUpTruthLinks
Gaudi::Property< int > m_vetoPileUpTruthLinks
Definition: PileUpToolBase.h:58
sTgcDigit
Definition: sTgcDigit.h:20
xAOD::ChamberViewer
Definition: ChamberViewer.h:59
MuonR4::sTgcDigitizationTool::m_energyDepositThreshold
Gaudi::Property< double > m_energyDepositThreshold
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:94
MuonR4::sTgcDigitizationTool::m_effiDataKey
SG::ReadCondHandleKey< Muon::DigitEffiData > m_effiDataKey
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:73
MuonR4::MuonDigitizationTool::m_timedHits
TimedHits m_timedHits
Definition: MuonDigitizationTool.h:141
MuonR4::sTgcDigitizationTool::m_useCondThresholds
Gaudi::Property< bool > m_useCondThresholds
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:91
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
MuonR4::sTgcDigitizationTool::sTgcDigitVec
sTgcDigitMaker::sTgcDigitVec sTgcDigitVec
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:41
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
sTgcDigit::charge
float charge() const
Definition: sTgcDigit.cxx:46
sTgcDigitCollection
Definition: sTgcDigitCollection.h:18
SG::get
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
Definition: ReadCondHandle.h:287
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
MuonR4::sTgcDigitizationTool::m_digitizer
std::unique_ptr< sTgcDigitMaker > m_digitizer
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:124
MuonR4::sTgcDigitizationTool::getChannelThreshold
double getChannelThreshold(const EventContext &ctx, const Identifier &channelID, const NswCalibDbThresholdData &thresholdData) const
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx:56
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::EgammaHelpers::isElectron
bool isElectron(const xAOD::Egamma *eg)
is the object an electron (not Fwd)
Definition: EgammaxAODHelpers.cxx:12
sTgcDigit::time
float time() const
Definition: sTgcDigit.cxx:61
MuonR4::sTgcDigitizationTool::m_digitizeMuonOnly
Gaudi::Property< bool > m_digitizeMuonOnly
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:79
MuonR4::sTgcDigitizationTool::processDigitsWithVMM
StatusCode processDigitsWithVMM(const EventContext &ctx, const DigiConditions &digiCond, sTgcSimDigitVec &digitsInChamber, const double vmmDeadTime, const bool isNeighbourOn, DigiCache &cache, xAOD::MuonSimHitContainer &outSdoContainer) const
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx:227
MuonR4::sTgcDigitizationTool::m_deadtimeStrip
Gaudi::Property< double > m_deadtimeStrip
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:86
test_pyathena.parent
parent
Definition: test_pyathena.py:15
AnalysisUtils::copy_if
Out copy_if(In first, const In &last, Out res, const Pred &p)
Definition: IFilterUtils.h:30
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Preparation.mode
mode
Definition: Preparation.py:107
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
MuonR4::sTgcDigitizationTool::m_doPadSharing
Gaudi::Property< bool > m_doPadSharing
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:85
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
MuonR4::sTgcDigitizationTool::m_writeKey
SG::WriteHandleKey< sTgcDigitContainer > m_writeKey
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:71
Muon::DigitEffiData
Definition: DigitEffiData.h:23
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
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
MuonR4::sTgcDigitizationTool::m_deadtimeWire
Gaudi::Property< double > m_deadtimeWire
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:88
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
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.
threshold
Definition: chainparser.cxx:74
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
sTgcIdHelper
Definition: sTgcIdHelper.h:55
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
python.PhysicalConstants.c_light
float c_light
Definition: PhysicalConstants.py:73
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
THROW_EXCEPTION
#define THROW_EXCEPTION(MESSAGE)
Definition: throwExcept.h:10
MuonGMR4::sTgcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:20
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
InDet::TrkOrigin::isPileup
bool isPileup(int origin)
from pileup
Definition: InDetTrackTruthOriginDefs.h:49
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::initialize
StatusCode initialize() override
Definition: MuonDigitizationTool.cxx:11
MuonR4::MuonDigitizationTool::m_includePileUpTruth
Gaudi::Property< bool > m_includePileUpTruth
Definition: MuonDigitizationTool.h:137
MuonR4::sTgcDigitizationTool::m_doSmearing
Gaudi::Property< bool > m_doSmearing
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:81
MuonR4::MuonDigitizationTool::m_simHits
std::vector< SimHitLocalCopy > m_simHits
Definition: MuonDigitizationTool.h:145
MuonDigit::identify
Identifier identify() const
Definition: MuonDigit.h:30
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
MuonR4::sTgcDigitizationTool::m_smearingTool
ToolHandle< Muon::INSWCalibSmearingTool > m_smearingTool
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:76
a
TList * a
Definition: liststreamerinfos.cxx:10
columnar::empty
bool empty() const noexcept
Definition: ObjectRange.h:163
MuonR4::sTgcDigitizationTool::m_doToFCorrection
Gaudi::Property< bool > m_doToFCorrection
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:82
MuonR4::MuonDigitizationTool::TimedHits
std::vector< TimedHitPtr< xAOD::MuonSimHit > > TimedHits
Definition: MuonDigitizationTool.h:58
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
known
Definition: TrigBStoxAODTool.cxx:107
MuonR4::MuonDigitizationTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDigitizationTool.h:113
PileUpToolBase::m_firstXing
Gaudi::Property< int > m_firstXing
Definition: PileUpToolBase.h:54
NswCalibDbThresholdData::getThreshold
bool getThreshold(const Identifier &, float &) const
Definition: NswCalibDbThresholdData.cxx:63
sTgcDigitMaker::digitMode
digitMode
Constructor initializing digitization parameters.
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitMaker.h:40
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
MuonR4::MuonDigitizationTool::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: MuonDigitizationTool.h:130
MuonR4::sTgcDigitizationTool::m_hitTimeMergeThreshold
const double m_hitTimeMergeThreshold
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:101
MuonGMR4::MuonReadoutElement::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &ctx) const
Returns the local to global transformation into the ATLAS coordinate system.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:81
MuonR4::MuonDigitizationTool::m_detMgr
const MuonGMR4::MuonDetectorManager * m_detMgr
Definition: MuonDigitizationTool.h:111
MuonR4::sTgcDigitizationTool::m_calibrationTool
ToolHandle< Muon::INSWCalibTool > m_calibrationTool
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:77
MuonR4::sTgcDigitizationTool::bcTagging
uint16_t bcTagging(const double digitTime) const
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx:47
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 ...
PileUpTimeEventIndex
a struct encapsulating the identifier of a pile-up event
Definition: PileUpTimeEventIndex.h:12
dumpTgcDigiThreshold.threshold
list threshold
Definition: dumpTgcDigiThreshold.py:34
xAOD::MuonSimHit_v1::setGlobalTime
void setGlobalTime(const float time)
Sets the time of the traversing particle.
isMuon
bool isMuon(const T &p)
Definition: AtlasPID.h:202
sTgcSimDigitVec
sTgcDigitizationTool::sTgcSimDigitVec sTgcSimDigitVec
Definition: MuonDigitization/sTGC_Digitization/src/sTgcDigitizationTool.cxx:38
Identifier
Definition: IdentifierFieldParser.cxx:14