ATLAS Offline Software
MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
6 #ifndef STGC_DIGITIZATIONR4_DIGITIZATIONTOOL_H
7 #define STGC_DIGITIZATIONR4_DIGITIZATIONTOOL_H
8 
9 #include <memory>
10 #include <vector>
11 #include <string>
12 
17 
22 
25 
26 namespace MuonR4 {
27 
29  public:
30  using MuonDigitizationTool::MuonDigitizationTool;
31 
32  StatusCode initialize() override final;
33 
40  using DigiConditions = sTgcDigitMaker::DigiConditions; // struct from digitmaker
41  using sTgcDigitVec = sTgcDigitMaker::sTgcDigitVec; // vector of sTgcDigit
42  using DigiCache = OutDigitCache_t<sTgcDigitCollection>; // vector of digit collection
43 
45  public:
46  sTgcSimDigitHit() = default;
47  sTgcSimDigitHit(const TimedHit& simHit, std::unique_ptr<sTgcDigit> digit):
48  m_sTGCSimHit{simHit},
49  m_sTGCDigit{std::move(digit)}{}
51  const TimedHit& getSimHit() const { return m_sTGCSimHit; }
54  const sTgcDigit& getDigit() const { return *m_sTGCDigit; }
55  sTgcDigit& getDigit() { return *m_sTGCDigit; }
56 
57  Identifier identify() const { return getDigit().identify(); }
58  double time() const {return getDigit().time(); }
59 
60  private:
62  std::unique_ptr<sTgcDigit> m_sTGCDigit;
63  };
64  using sTgcSimDigitVec = std::vector<sTgcSimDigitHit>; //vector of custom class defined above
65  StatusCode digitize(const EventContext& ctx,
66  const TimedHits& hitsToDigit,
67  xAOD::MuonSimHitContainer* sdoContainer) const override final;
68 
69  private:
70 
71  SG::WriteHandleKey<sTgcDigitContainer> m_writeKey{this, "OutputObjectName", "STGC_DIGITS"};
72 
73  SG::ReadCondHandleKey<Muon::DigitEffiData> m_effiDataKey{this, "EffiDataKey", "sTgcDigitEff", "Efficiency constants"};
74  SG::ReadCondHandleKey<NswCalibDbThresholdData> m_condThrshldsKey{this, "CondThrshldsKey", "NswCalibDbThresholdData", "Calibration data"};
75 
76  ToolHandle<Muon::INSWCalibSmearingTool> m_smearingTool{this, "SmearingTool", "Muon::NSWCalibSmearingTool/STGCCalibSmearingTool"};
77  ToolHandle<Muon::INSWCalibTool> m_calibrationTool{this, "CalibrationTool", "Muon::NSWCalibTool/STGCCalibTool"};
78 
79  Gaudi::Property<bool> m_digitizeMuonOnly{this, "ProcessTrueMuonsOnly", true};
80  Gaudi::Property<bool> m_useTimeWindow{this, "UseTimeWindow", true};
81  Gaudi::Property<bool> m_doSmearing{this, "doSmearing", false};
82  Gaudi::Property<bool> m_doToFCorrection{this,"doToFCorrection", true};
83 
84  Gaudi::Property<int> m_digitMode{this, "digitMode", 3}; //
85  Gaudi::Property<bool> m_doPadSharing{this,"padChargeSharing", false};
86  Gaudi::Property<double> m_deadtimeStrip{this,"deadtimeStrip", 250};
87  Gaudi::Property<double> m_deadtimePad{this,"deadtimePad" , 250};
88  Gaudi::Property<double> m_deadtimeWire{this,"deadtimeWire" , 250};
89  Gaudi::Property<bool> m_doNeighborOn{this,"neighborOn", true};
90  Gaudi::Property<double> m_runVoltage{this,"operatingHVinkV" , 2.8};
91  Gaudi::Property<bool> m_useCondThresholds{this, "useCondThresholds", false,
92  "Use conditions data to get VMM charge threshold values"};
93 
94  Gaudi::Property<double> m_energyDepositThreshold{this,"energyDepositThreshold",300.0*CLHEP::eV};
95  Gaudi::Property<double> m_limitElectronKineticEnergy{this,"limitElectronKineticEnergy",5.0*CLHEP::MeV};
96 
97  Gaudi::Property<double> m_chargeThreshold{this,"chargeThreshold", 0.030};
98 
99  const double m_timeJitterElectronicsStrip{2.f};
100  const double m_timeJitterElectronicsPad{2.f};
101  const double m_hitTimeMergeThreshold{30.f};
102 
103  StatusCode processDigitsWithVMM(const EventContext& ctx,
104  const DigiConditions& digiCond,
105  sTgcSimDigitVec& digitsInChamber,
106  const double vmmDeadTime,
107  const bool isNeighbourOn,
108  DigiCache& cache,
109  xAOD::MuonSimHitContainer& outSdoContainer) const;
110 
111  sTgcSimDigitVec processDigitsWithVMM(const EventContext& ctx,
112  const DigiConditions& digiCond,
113  const double vmmDeadTime,
114  sTgcSimDigitVec& unmergedDigits,
115  const bool isNeighbourOn) const;
116 
117 
118  uint16_t bcTagging(const double digitTime) const;
119 
120  double getChannelThreshold(const EventContext& ctx,
121  const Identifier& channelID,
122  const NswCalibDbThresholdData& thresholdData) const;
123 
124  std::unique_ptr<sTgcDigitMaker> m_digitizer{};
125  };
126 
127 }
128 #endif
MuonR4::sTgcDigitizationTool::m_timeJitterElectronicsPad
const double m_timeJitterElectronicsPad
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:100
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
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::sTgcDigitizationTool::m_timeJitterElectronicsStrip
const double m_timeJitterElectronicsStrip
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:99
MuonR4::sTgcDigitizationTool::m_limitElectronKineticEnergy
Gaudi::Property< double > m_limitElectronKineticEnergy
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:95
MuonR4::sTgcDigitizationTool::m_deadtimePad
Gaudi::Property< double > m_deadtimePad
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:87
INSWCalibTool.h
MuonR4::sTgcDigitizationTool::m_doNeighborOn
Gaudi::Property< bool > m_doNeighborOn
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:89
MuonR4::sTgcDigitizationTool::m_digitMode
Gaudi::Property< int > m_digitMode
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:84
MuonR4::sTgcDigitizationTool::DigiConditions
sTgcDigitMaker::DigiConditions DigiConditions
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:40
MuonR4::MuonDigitizationTool::OutDigitCache_t
std::vector< std::unique_ptr< DetType > > OutDigitCache_t
DigitContainers are sorted by DigitCollections which are the ensemble of all hits in a given MuonCham...
Definition: MuonDigitizationTool.h:80
sTgcDigitMaker::DigiConditions
Digitize a given hit, determining the time and charge spread on wires, pads and strips.
Definition: MuonDigitization/sTGC_Digitization/sTGC_Digitization/sTgcDigitMaker.h:58
TimedHitPtr< xAOD::MuonSimHit >
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::m_sTGCSimHit
TimedHit m_sTGCSimHit
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:61
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
sTgcIdHelper::sTgcChannelTypes
sTgcChannelTypes
Definition: sTgcIdHelper.h:190
MuonSimHit.h
MuonR4::sTgcDigitizationTool::sTgcSimDigitVec
std::vector< sTgcSimDigitHit > sTgcSimDigitVec
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:64
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::sTgcSimDigitHit
sTgcSimDigitHit()=default
MuonDigitizationTool.h
python.SystemOfUnits.MeV
float MeV
Definition: SystemOfUnits.py:172
sTgcDigit
Definition: sTgcDigit.h:20
sTgcReadoutElement.h
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
python.SystemOfUnits.eV
float eV
Definition: SystemOfUnits.py:173
MuonR4::sTgcDigitizationTool::m_useCondThresholds
Gaudi::Property< bool > m_useCondThresholds
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:91
SG::WriteHandleKey< sTgcDigitContainer >
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
MuonR4::sTgcDigitizationTool::m_digitizer
std::unique_ptr< sTgcDigitMaker > m_digitizer
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:124
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonR4::sTgcDigitizationTool::getChannelThreshold
double getChannelThreshold(const EventContext &ctx, const Identifier &channelID, const NswCalibDbThresholdData &thresholdData) const
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx:56
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
MuonSimHitContainer.h
MuonR4::sTgcDigitizationTool::digitize
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 technolog...
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx:72
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::time
double time() const
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:58
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::m_sTGCDigit
std::unique_ptr< sTgcDigit > m_sTGCDigit
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:62
MuonR4::sTgcDigitizationTool::m_doPadSharing
Gaudi::Property< bool > m_doPadSharing
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:85
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
columnar::final
CM final
Definition: ColumnAccessor.h:106
sTgcDigitMaker.h
MuonR4::sTgcDigitizationTool::m_writeKey
SG::WriteHandleKey< sTgcDigitContainer > m_writeKey
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:71
MuonR4::sTgcDigitizationTool
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:28
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::getSimHit
TimedHit & getSimHit()
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:52
MuonR4::sTgcDigitizationTool::m_deadtimeWire
Gaudi::Property< double > m_deadtimeWire
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:88
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::getDigit
const sTgcDigit & getDigit() const
Get the sTGC digit.
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:54
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::sTgcSimDigitHit
sTgcSimDigitHit(const TimedHit &simHit, std::unique_ptr< sTgcDigit > digit)
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:47
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
MuonR4::sTgcDigitizationTool::m_doSmearing
Gaudi::Property< bool > m_doSmearing
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:81
SG::ReadCondHandleKey< Muon::DigitEffiData >
MuonDigit::identify
Identifier identify() const
Definition: MuonDigit.h:30
MuonR4::sTgcDigitizationTool::m_smearingTool
ToolHandle< Muon::INSWCalibSmearingTool > m_smearingTool
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:76
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:44
MuonR4::sTgcDigitizationTool::m_doToFCorrection
Gaudi::Property< bool > m_doToFCorrection
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:82
MuonR4::MuonDigitizationTool
Barebone implementation of the I/O infrastructure for all MuonDigitizationTools.
Definition: MuonDigitizationTool.h:30
MuonR4::MuonDigitizationTool::TimedHits
std::vector< TimedHitPtr< xAOD::MuonSimHit > > TimedHits
Definition: MuonDigitizationTool.h:58
MuonR4::sTgcDigitizationTool::m_useTimeWindow
Gaudi::Property< bool > m_useTimeWindow
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:80
MuonR4::sTgcDigitizationTool::m_hitTimeMergeThreshold
const double m_hitTimeMergeThreshold
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:101
sTgcDigitMaker::sTgcDigitVec
std::vector< std::unique_ptr< sTgcDigit > > sTgcDigitVec
Definition: MuonDigitization/sTGC_Digitization/sTGC_Digitization/sTgcDigitMaker.h:65
MuonR4::sTgcDigitizationTool::m_calibrationTool
ToolHandle< Muon::INSWCalibTool > m_calibrationTool
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:77
sTgcDigitContainer.h
DigitEffiData.h
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::getSimHit
const TimedHit & getSimHit() const
Get the SimHit.
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:51
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::identify
Identifier identify() const
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:57
MuonR4::sTgcDigitizationTool::bcTagging
uint16_t bcTagging(const double digitTime) const
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx:47
INSWCalibSmearingTool.h
MuonR4::sTgcDigitizationTool::sTgcSimDigitHit::getDigit
sTgcDigit & getDigit()
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/sTgcDigitizationR4/sTgcDigitizationTool.h:55
MuonR4::sTgcDigitizationTool::initialize
StatusCode initialize() override final
Definition: MuonPhaseII/MuonDigitization/sTgcDigitizationR4/src/sTgcDigitizationTool.cxx:11
NswCalibDbThresholdData.h
sTgcSimDigitVec
sTgcDigitizationTool::sTgcSimDigitVec sTgcSimDigitVec
Definition: MuonDigitization/sTGC_Digitization/src/sTgcDigitizationTool.cxx:48
Identifier
Definition: IdentifierFieldParser.cxx:14