|  | ATLAS Offline Software
    | 
 
 
 
#include <sTgcFastDigiTool.h>
|  | 
| bool | digitizeStrip (const EventContext &ctx, const TimedHit &timedHit, const NswErrorCalibData *errorCalibDB, const Muon::DigitEffiData *effiData, CLHEP::HepRandomEngine *rndEngine, sTgcDigitCollection &outCollection) const | 
|  | 
| bool | digitizeWire (const EventContext &ctx, const TimedHit &timedHit, const Muon::DigitEffiData *effiData, CLHEP::HepRandomEngine *rndEngine, sTgcDigitCollection &outCollection) const | 
|  | 
| bool | digitizePad (const EventContext &ctx, const TimedHit &timedHit, const Muon::DigitEffiData *effiData, CLHEP::HepRandomEngine *rndEngine, sTgcDigitCollection &outCollection) const | 
|  | 
| int | associateBCIdTag (const EventContext &ctx, const TimedHit &timedHit) const | 
|  | : Associates the global bcIdTag to the digit  More... 
 | 
|  | 
| StatusCode | fillTimedHits (PileUpHits &&hitColl, TimedHits &timedHits) const | 
|  | Translates the PileUpHits into the timed hits format.  More... 
 | 
|  | 
|  | 
| SG::WriteHandleKey< sTgcDigitContainer > | m_writeKey {this, "OutputObjectName", "sTGC_DIGITS"} | 
|  | 
| SG::ReadCondHandleKey< Muon::DigitEffiData > | m_effiDataKey | 
|  | 
| SG::ReadCondHandleKey< NswErrorCalibData > | m_uncertCalibKey | 
|  | 
| std::array< std::atomic< unsigned >, 3 > m_allHits | ATLAS_THREAD_SAFE {} | 
|  | 
| std::array< std::atomic< unsigned >, 3 > m_acceptedHits | ATLAS_THREAD_SAFE {} | 
|  | 
| Gaudi::Property< bool > | m_digitizeStrip {this, "doStrips", true, "Digitize strip hits"} | 
|  | 
| Gaudi::Property< bool > | m_digitizeWire {this, "doWires", true, "Digitize wire hits"} | 
|  | 
| Gaudi::Property< bool > | m_digitizePads {this, "doPads", false, "Digitize pad hits"} | 
|  | 
| Gaudi::Property< double > | m_deadTime {this, "deadTime", 300. * Gaudi::Units::ns} | 
|  | 
| Gaudi::Property< bool > | m_digitizeMuonOnly | 
|  | 
| Gaudi::Property< double > | m_energyDepositThreshold {this,"energyDepositThreshold",300.0*CLHEP::eV} | 
|  | 
| Gaudi::Property< double > | m_limitElectronKineticEnergy {this,"limitElectronKineticEnergy",5.0*CLHEP::MeV} | 
|  | 
| 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 14 of file sTgcFastDigiTool.h.
 
◆ DeadTimeMap
◆ DigiCache
◆ 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
◆ sTgcFastDigiTool()
      
        
          | MuonR4::sTgcFastDigiTool::sTgcFastDigiTool | ( | const std::string & | type, | 
        
          |  |  | const std::string & | name, | 
        
          |  |  | const IInterface * | pIID | 
        
          |  | ) |  |  | 
      
 
 
◆ addSDO()
Adds the timed simHit to the output SDO container. 
The hit may be rejected if it's originating from pile-up and the pile-up truth skimming strategy is applied 
Definition at line 142 of file MuonDigitizationTool.cxx.
  159         acc_eventTime(*sdoHit) = hit.eventTime();
 
  160         acc_eventID(*sdoHit) = hit.eventId();
 
  161         acc_puType(*sdoHit) = hit.pileupType();
 
 
 
 
◆ associateBCIdTag()
  
  | 
        
          | int MuonR4::sTgcFastDigiTool::associateBCIdTag | ( | const EventContext & | ctx, |  
          |  |  | const TimedHit & | timedHit |  
          |  | ) |  | const |  | private | 
 
: Associates the global bcIdTag to the digit 
- Parameters
- 
  
    | ctx | EventContext |  | timedHit | Hit to calculate the time from |  
 
To be implemented
Definition at line 299 of file sTgcFastDigiTool.cxx.
 
 
◆ 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
ignore radiation for now
Write everything at the end into the final digit container
Implements MuonR4::MuonDigitizationTool.
Definition at line 37 of file sTgcFastDigiTool.cxx.
   52             for (
const TimedHit& simHit : viewer) {
 
   59                 ATH_MSG_VERBOSE(
"Hit with Energy Deposit of " << simHit->energyDeposit()
 
   64                 const double hitKineticEnergy = simHit->kineticEnergy();
 
   66                   ATH_MSG_DEBUG(
"Skip electron hit with kinetic energy " << hitKineticEnergy
 
   71                 const bool digitizedStrip = 
digitizeStrip(ctx, simHit, nswUncertDB, efficiencyMap, rndEngine, *digiColl);
 
   72                 const bool digitizedWire = 
digitizeWire(ctx, simHit, efficiencyMap, rndEngine, *digiColl);
 
   73                 const bool digitizedPad = 
digitizePad(ctx, simHit, efficiencyMap, rndEngine, *digiColl);
 
   77                     size_t stripIdx = digiColl->
size() - 1 - digitizedWire - digitizedPad;
 
   79                 } 
else if (digitizedWire || digitizedPad) {
 
   85                                                     re->localToGlobalTrans(
getGeoCtx(ctx), 
re->layerHash(simHit->identify()))};
 
   91         } 
while (viewer.next());
 
   94                                       idHelper.module_hash_max()));
 
   95         return StatusCode::SUCCESS;
 
 
 
 
◆ digitizePad()
Sim hits are always expressed in the eta view of the gasGap...
Check efficiencies
Definition at line 305 of file sTgcFastDigiTool.cxx.
  315         ++m_allHits[channelType::Pad];
 
  320         const int gasGap = idHelper.gasGap(hitId);
 
  332         const Amg::Vector2D padPos{(toPad*xAOD::toEigen(timedHit->localPosition())).block<2,1>(0,0)};
 
  337         if (padEta < 0 || padPhi < 0) {
 
  339                         <<
" is outside of the acceptance of "<<std::endl<<design);
 
  355         if (efficiencyMap && efficiencyMap->getEfficiency(hitId, isInnerQ1) < CLHEP::RandFlat::shoot(rndEngine,0.,1.)){
 
  356             ATH_MSG_VERBOSE(
"Simulated pad hit "<<xAOD::toEigen(timedHit->localPosition())
 
  357                             << 
m_idHelperSvc->toString(hitId) <<
" is rejected because of efficency modelling");
 
  363         outCollection.
push_back(std::make_unique<sTgcDigit>(padId,
 
  365                                                             hitTime(timedHit), 666, 
false, 
false));
 
  367         ++m_acceptedHits[channelType::Pad];
 
 
 
 
◆ digitizeStrip()
Check efficiencies
We're using the NSW uncertainty DB to smear the truth-hit positions using the best known uncertainties. In the process of digit -> RDO -> PRD, the smeared hit position is gonna be lost However, recall that the simplest way to generate a sTgc prd strip prd is the clustering by means of center of gravity. On average, a muon passage makes 3-4 strips to fire. Assuming 3 strips, the smeared position can be written as 
        x = w_{1}*(c - p) + w_{2}*c + w_{3}*(c + p),
where c is the strip centre, p the pitch and w_{i} are the induced charge fractions on each strip 
      1 =  w_{1} + w_{2} + w_{3}
      x = (w_{1} + w_{2} + w_{3}) * c + (w_{3} - w_{1})*p
         --> x = c + (w_{3} - w_{1}) *p
         --> (x-c) / p = (w_{3} - w_{1})  
         --> (x-c) / p + w_{1} = w_{3}
            1 =  2 * w_{1} + w_{2} + (x-c) / p
            1 - (x-c) /p - 2*w_{1} = w_{2}
            0< w_{1} < 0.5 - (x-c) / 2p  
Definition at line 97 of file sTgcFastDigiTool.cxx.
  107         ++m_allHits[channelType::Strip];
 
  113         const int gasGap = idHelper.gasGap(hitId);
 
  116         const Amg::Vector2D stripPos{xAOD::toEigen(timedHit->localPosition()).block<2,1>(0,0)};
 
  121                           <<
" is out of range "<<std::endl<<design);
 
  127         const Identifier stripId = idHelper.channelID(hitId, readOutEle->multilayer(),
 
  132                             <<
m_idHelperSvc->toStringGasGap(hitId)<<
" strip: "<<stripNum);
 
  137         bool isInnerQ1 = readOutEle->isEtaZero(readOutEle->measurementHash(hitId), stripPos);
 
  138         if (efficiencyMap && efficiencyMap->getEfficiency(hitId, isInnerQ1) < CLHEP::RandFlat::shoot(rndEngine,0.,1.)){
 
  139             ATH_MSG_VERBOSE(
"Simulated strip hit "<<xAOD::toEigen(timedHit->localPosition())
 
  140                             << 
m_idHelperSvc->toString(hitId) <<
" is rejected because of efficency modelling");
 
  145         errorCalibInput.
stripId= stripId;
 
  146         errorCalibInput.locTheta = 
M_PI - timedHit->localDirection().theta();
 
  147         errorCalibInput.clusterAuthor = 3; 
 
  150         const double smearedX = CLHEP::RandGaussZiggurat::shoot(rndEngine, stripPos.x(), uncert);
 
  152         const Amg::Vector2D digitPos{smearedX * Amg::Vector2D::UnitX()};
 
  154         const int digitStrip = design.stripNumber(digitPos);
 
  155         if (digitStrip < 0) {
 
  157                           <<
" is out of range "<<std::endl<<design);
 
  160         const Identifier digitId = idHelper.channelID(hitId, readOutEle->multilayer(),
 
  165                             <<
m_idHelperSvc->toStringGasGap(hitId)<<
" digit: "<<digitStrip);
 
  168         constexpr 
double dummyCharge = 66666;
 
  189         const double pull = (smearedX - (*design.center(digitStrip)).
x()) / design.stripPitch();
 
  190         const double w1 = CLHEP::RandFlat::shoot(rndEngine, 0., 0.5 *(1. - 
pull)); 
 
  191         const double w2 = 1. - 
pull -2.*w1;
 
  192         const double w3 = 
pull + w1;
 
  195             const Identifier stripIdB = idHelper.channelID(hitId, readOutEle->multilayer(),
 
  196                                                        gasGap, channelType::Strip, digitStrip -1);
 
  197             outCollection.
push_back(std::make_unique<sTgcDigit>(stripIdB,
 
  199                                                                 hitTime(timedHit), dummyCharge * w1, 
false, 
false));
 
  201         outCollection.
push_back(std::make_unique<sTgcDigit>(digitId,
 
  203                                                             hitTime(timedHit), dummyCharge * w2, 
false, 
false));
 
  205         if (digitStrip + 1 <= design.numStrips()) {
 
  206             const Identifier stripIdA = idHelper.channelID(hitId, readOutEle->multilayer(),
 
  207                                                            gasGap, channelType::Strip, digitStrip + 1);
 
  209             outCollection.
push_back(std::make_unique<sTgcDigit>(stripIdA,
 
  211                                                                 hitTime(timedHit), dummyCharge * w3, 
false, 
false));
 
  213         ++m_acceptedHits[channelType::Strip];
 
 
 
 
◆ digitizeWire()
Check efficiencies
Sim hits are always expressed in the eta view of the gasGap...
Check efficiencies
Definition at line 217 of file sTgcFastDigiTool.cxx.
  227         ++m_allHits[channelType::Wire];
 
  231         if (efficiencyMap && efficiencyMap->getEfficiency(hitId) < CLHEP::RandFlat::shoot(rndEngine,0.,1.)){
 
  232             ATH_MSG_VERBOSE(
"Simulated wire hit "<<xAOD::toEigen(timedHit->localPosition())
 
  233                             << 
m_idHelperSvc->toString(hitId) <<
" is rejected because of efficency modelling");
 
  238         const int gasGap = idHelper.gasGap(hitId);
 
  250         const Amg::Vector2D wirePos{(toWire*xAOD::toEigen(timedHit->localPosition())).block<2,1>(0,0)};
 
  253         if(isInnerQ1) 
return false;
 
  256         if (efficiencyMap && efficiencyMap->getEfficiency(hitId, isInnerQ1) < CLHEP::RandFlat::shoot(rndEngine,0.,1.)){
 
  257             ATH_MSG_VERBOSE(
"Simulated wire hit "<<xAOD::toEigen(timedHit->localPosition())
 
  258                             << 
m_idHelperSvc->toString(hitId) <<
" is rejected because of efficency modelling");
 
  264         const int wireGrpNum = design.
stripNumber(wirePos);
 
  265         if (wireGrpNum < 0) {
 
  267                         <<
" is outside of the acceptance of "<<std::endl<<design);
 
  270         const double uncert = design.stripPitch() * design.numWiresInGroup(wireGrpNum);
 
  272         const double smearedX = CLHEP::RandGaussZiggurat::shoot(rndEngine, wirePos.x(), uncert);
 
  274         const Amg::Vector2D digitPos{smearedX * Amg::Vector2D::UnitX()};
 
  276         const int digitWire = design.stripNumber(digitPos);
 
  279             <<
" is out of range "<<std::endl<<design);
 
  288                             <<
m_idHelperSvc->toStringGasGap(hitId)<<
" digit: "<<digitWire);
 
  291         outCollection.
push_back(std::make_unique<sTgcDigit>(digitId,
 
  293                                                             hitTime(timedHit), 666, 
false, 
false));
 
  296         ++m_acceptedHits[channelType::Wire];
 
 
 
 
◆ 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::sTgcFastDigiTool::finalize | ( |  | ) |  |  | finaloverride | 
 
Definition at line 27 of file sTgcFastDigiTool.cxx.
   28         ATH_MSG_INFO(
"Tried to convert "<<m_allHits[channelType::Strip]<<
"/" 
   29                                         <<m_allHits[channelType::Wire]<<
"/" 
   30                                         <<m_allHits[channelType::Pad]<<
" strip/wire/pad hits. In, " 
   31                     <<percentage(m_acceptedHits[channelType::Strip], m_allHits[channelType::Strip]) <<
"/" 
   32                     <<percentage(m_acceptedHits[channelType::Wire], m_allHits[channelType::Wire])<<
"/" 
   33                     <<percentage(m_acceptedHits[channelType::Pad], m_allHits[channelType::Pad])
 
   34                     <<
"% of the cases, the conversion was successful");
 
   35         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::sTgcFastDigiTool::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 | 
 
 
◆ 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>, 3> m_allHits MuonR4::sTgcFastDigiTool::ATLAS_THREAD_SAFE {} |  | mutableprivate | 
 
 
◆ ATLAS_THREAD_SAFE [2/2]
  
  | 
        
          | std::array<std::atomic<unsigned>, 3> m_acceptedHits MuonR4::sTgcFastDigiTool::ATLAS_THREAD_SAFE {} |  | mutableprivate | 
 
 
◆ m_deadTime
  
  | 
        
          | Gaudi::Property<double> MuonR4::sTgcFastDigiTool::m_deadTime {this, "deadTime", 300. * Gaudi::Units::ns} |  | private | 
 
 
◆ m_detMgr
◆ m_digitizeMuonOnly
  
  | 
        
          | Gaudi::Property<bool> MuonR4::sTgcFastDigiTool::m_digitizeMuonOnly |  | private | 
 
Initial value:{this, "ProcessTrueMuonsOnly", false, 
                                                     "If set to true hit with pdgId != 13 are skipped"}
Definition at line 73 of file sTgcFastDigiTool.h.
 
 
◆ m_digitizePads
  
  | 
        
          | Gaudi::Property<bool> MuonR4::sTgcFastDigiTool::m_digitizePads {this, "doPads", false, "Digitize pad hits"} |  | private | 
 
 
◆ m_digitizeStrip
  
  | 
        
          | Gaudi::Property<bool> MuonR4::sTgcFastDigiTool::m_digitizeStrip {this, "doStrips", true, "Digitize strip hits"} |  | private | 
 
 
◆ m_digitizeWire
  
  | 
        
          | Gaudi::Property<bool> MuonR4::sTgcFastDigiTool::m_digitizeWire {this, "doWires", true, "Digitize wire hits"} |  | private | 
 
 
◆ m_effiDataKey
Initial value:{this, "EffiDataKey", "sTgcDigitEff",
                                                                    "Efficiency constants of the individual sTgc gasGaps"}
Definition at line 57 of file sTgcFastDigiTool.h.
 
 
◆ m_energyDepositThreshold
  
  | 
        
          | Gaudi::Property<double> MuonR4::sTgcFastDigiTool::m_energyDepositThreshold {this,"energyDepositThreshold",300.0*CLHEP::eV} |  | private | 
 
 
◆ 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_limitElectronKineticEnergy
  
  | 
        
          | Gaudi::Property<double> MuonR4::sTgcFastDigiTool::m_limitElectronKineticEnergy {this,"limitElectronKineticEnergy",5.0*CLHEP::MeV} |  | private | 
 
 
◆ 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_rndmSvc
◆ m_sdoKey
◆ m_simHitKey
◆ m_simHits
◆ m_streamName
  
  | 
        
          | Gaudi::Property<std::string> MuonR4::MuonDigitizationTool::m_streamName {this, "StreamName", ""} |  | privateinherited | 
 
 
◆ m_timedHits
  
  | 
        
          | TimedHits MuonR4::MuonDigitizationTool::m_timedHits {} |  | privateinherited | 
 
 
◆ m_uncertCalibKey
Initial value:{this, "ErrorCalibKey", "NswUncertData",
                                                                      "Key of the parametrized NSW uncertainties"}
Definition at line 61 of file sTgcFastDigiTool.h.
 
 
◆ 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.
int multilayer() const
Returns the multilayer of the sTgcReadoutElement.
virtual int stripNumber(const Amg::Vector2D &pos) const
Calculates the number of the strip whose center is closest to the given point.
void setIdentifier(const Identifier &id)
Sets the global ATLAS identifier.
Identifier identify() const
Returns the global ATLAS identifier of the SimHit.
Eigen::Matrix< double, 2, 1 > Vector2D
MeasVector< N > toStorage(const AmgVector(N)&amgVec)
Converts the double precision of the AmgVector into the floating point storage precision of the MeasV...
void setLocalPosition(MeasVector< 3 > vec)
Sets the local position of the traversing particle.
#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.
IdentifierHash measurementHash(const Identifier &measId) const override final
Constructs the identifier hash from the full measurement Identifier.
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.
std::pair< int, int > channelNumber(const Amg::Vector2D &hitPos) const
Function to retrieve the pad eta and phi given a local position coordinate.
const WireGroupDesign & wireDesign(const Identifier &measId) const
Retrieves the readoutElement Layer given the Identifier/Hash.
static IdentifierHash createHash(const unsigned int gasGap, const unsigned int channelType, const unsigned int channel, const unsigned int wireInGrp=0)
Create a measurement hash from the Identifier fields.
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.
bool isElectron(const xAOD::Egamma *eg)
is the object an electron (not Fwd)
Eigen::Affine3d Transform3D
const Amg::Transform3D & localToGlobalTrans(const ActsTrk::GeometryContext &ctx) const
Returns the local to global transformation into the ATLAS coordinate system.
ConstVectorMap< 3 > localDirection() const
Returns the local direction of the traversing particle.
double clusterUncertainty(const Input &clustInfo) const
bool isEtaZero(const IdentifierHash &measurementHash, const Amg::Vector2D &localPosition) const
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
int stripNumber(const Amg::Vector2D &pos) const override
Calculates the number of the strip whose center is closest to the given point.
A wrapper class for event-slot-local random engines.
void setLocalDirection(MeasVector< 3 > vec)
Sets the local direction of the traversing particle.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
#define THROW_EXCEPTION(MESSAGE)
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
const PadDesign & padDesign(const Identifier &measId) const
Retrieves the readoutElement Layer given the Identifier/Hash.
Identifier identify() const
#define ATH_MSG_WARNING(x)
const boost::regex re(r_e)
ConstVectorMap< 3 > localPosition() const
Returns the local postion of the traversing particle.
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
Amg::Transform3D globalToLocalTrans(const ActsTrk::GeometryContext &ctx) const
Transformations to translate between local <-> global coordinates.
size_type size() const noexcept
Returns the number of elements in the collection.