ATLAS Offline Software
MdtCalibrationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MDTCALIBSVC_MDTCALIBRATIONTOOL_H
6 #define MDTCALIBSVC_MDTCALIBRATIONTOOL_H
7 
8 
10 
12 
17 #include "GaudiKernel/SystemOfUnits.h"
18 #include "GaudiKernel/PhysicalConstants.h"
19 class MdtCalibHit;
20 class MdtCalibToolInput;
21 
22 namespace MuonCalib {
23  class MdtRtRelation;
24 }
25 
35 class MdtCalibrationTool : public extends<AthAlgTool, IMdtCalibrationTool> {
36 public:
37 
38 
42 
43 
45  using base_class::base_class;
47  virtual ~MdtCalibrationTool() = default;
48 
50  virtual StatusCode initialize() override final;
51 
79  virtual MdtCalibOutput calibrate(const EventContext& ctx,
80  const MdtCalibInput& hit,
81  bool resolFromRtrack=false) const override final;
82 
85  virtual MdtCalibTwinOutput calibrateTwinTubes(const EventContext& ctx,
86  MdtCalibInput&& hit,
87  MdtCalibInput&& twinHit) const override final;
88 
89  virtual double getResolutionFromRt(const EventContext& ctx,
91  const double time) const override final;
92 
93  virtual ToolSettings getSettings() const override final;
94 
95  virtual const MuonCalib::MdtFullCalibData*
96  getCalibConstants(const EventContext& ctx,
98 private:
100  const MuonCalib::MdtRtRelation& rtRelation) const;
101 
102  Gaudi::Property<int> m_windowSetting{this, "TimeWindowSetting", timeWindowMode::Default};
103  Gaudi::Property<double> m_timeWindowLowerBound{this, "TimeWindowLowerBound", 0.};
104  Gaudi::Property<double> m_timeWindowUpperBound{this, "TimeWindowUpperBound", 0.};
105  Gaudi::Property<bool> m_doTof{this, "DoTofCorrection", true};
106  Gaudi::Property<bool> m_doProp{this, "DoPropagationCorrection", true};
107  Gaudi::Property<bool> m_doTemp{this, "DoTemperatureCorrection", false};
108  Gaudi::Property<bool> m_doField{this,"DoMagneticFieldCorrection", false};
109  Gaudi::Property<bool> m_doSlew{this, "DoSlewingCorrection", false};
110  Gaudi::Property<bool> m_doBkg{this, "DoBackgroundCorrection", false};
111  Gaudi::Property<bool> m_doPropUncert{this, "DoPropagationTimeUncert", false};
112  /* T0 Shift tool -- Per-tube offsets of t0 value */
113  ToolHandle<MuonCalib::IShiftMapTools> m_t0ShiftTool{this, "T0ShiftTool", ""};
114  /* TMax Shift tool -- Per-tube offsets of Tmax */
115  ToolHandle<MuonCalib::IShiftMapTools> m_tMaxShiftTool{this, "TShiftMaxTool", ""};
116 
117  // tools should only be retrieved if they are used
118  Gaudi::Property<bool> m_doT0Shift{this, "DoT0Shift", false};
119  Gaudi::Property<bool> m_doTMaxShift{this, "DoTMaxShift", false};
120 
121  Gaudi::Property<double> m_unphysicalHitRadiusLowerBound{this, "LowerBoundHitRadius" , 0.};
122  Gaudi::Property<double> m_resTwin{this, "ResolutionTwinTube" , 1.05, "Twin tube resolution"};
123 
124 
126  "Conditions object containing the calibrations"};
127 
128  // Read handle for conditions object to get the field cache
129  // If one wants to avoid that adding of this read handle here, then client tools/algs calling driftRadiusFromTime
130  // must implement this to get the AtlasFieldCache which can then be passed through the call to driftRadiusFromTime
131  // Note: a readhandle must be in a tool or an alg, and so it cannot be in the class Imp.)
132  SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj",
133  "Name of the Magnetic Field conditions object key"};
134  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
135 
136 };
137 
138 #endif
MdtCalibrationTool::calibrate
virtual MdtCalibOutput calibrate(const EventContext &ctx, const MdtCalibInput &hit, bool resolFromRtrack=false) const override final
Convert the raw MDT time (+charge) into a drift radius + error.
Definition: MdtCalibrationTool.cxx:102
GeoModel::TransientConstSharedPtr< MdtCorFuncSet >
MdtCalibInput
Definition: MdtCalibInput.h:34
IShiftMapTools.h
AtlasFieldCacheCondObj.h
MuonCalib::MdtFullCalibData::CorrectionPtr
GeoModel::TransientConstSharedPtr< MdtCorFuncSet > CorrectionPtr
Definition: MdtFullCalibData.h:16
MdtCalibDataContainer.h
IMdtCalibrationTool.h
MdtCalibrationTool::m_doTof
Gaudi::Property< bool > m_doTof
Definition: MdtCalibrationTool.h:105
Muon::MdtDriftCircleStatus
MdtDriftCircleStatus
Enum to represent the 'status' of Mdt measurements e.g.
Definition: MdtDriftCircleStatus.h:25
MdtCalibrationTool::m_doBkg
Gaudi::Property< bool > m_doBkg
Definition: MdtCalibrationTool.h:110
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
MdtCalibrationTool::m_tMaxShiftTool
ToolHandle< MuonCalib::IShiftMapTools > m_tMaxShiftTool
Definition: MdtCalibrationTool.h:115
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
MdtCalibrationTool::calibrateTwinTubes
virtual MdtCalibTwinOutput calibrateTwinTubes(const EventContext &ctx, MdtCalibInput &&hit, MdtCalibInput &&twinHit) const override final
Convert the raw MDT times of two twin hits into a Twin position (coordinate along tube) It returns wh...
Definition: MdtCalibrationTool.cxx:301
Property
Support class for PropertyMgr.
Definition: Property.h:23
MdtCalibrationTool::m_timeWindowUpperBound
Gaudi::Property< double > m_timeWindowUpperBound
Definition: MdtCalibrationTool.h:104
MdtCalibrationTool::getResolutionFromRt
virtual double getResolutionFromRt(const EventContext &ctx, const Identifier &module, const double time) const override final
Definition: MdtCalibrationTool.cxx:389
MdtCalibrationTool::getSettings
virtual ToolSettings getSettings() const override final
Definition: MdtCalibrationTool.cxx:31
MdtCalibrationTool
Definition: MdtCalibrationTool.h:35
python.PyAthena.module
module
Definition: PyAthena.py:131
MdtCalibrationTool::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: MdtCalibrationTool.h:132
MdtCalibrationTool::initialize
virtual StatusCode initialize() override final
initialization
Definition: MdtCalibrationTool.cxx:43
MdtCalibrationTool::m_calibDbKey
SG::ReadCondHandleKey< MuonCalib::MdtCalibDataContainer > m_calibDbKey
Definition: MdtCalibrationTool.h:125
TRT::Hit::driftTime
@ driftTime
Definition: HitInfo.h:43
MdtCalibrationTool::m_unphysicalHitRadiusLowerBound
Gaudi::Property< double > m_unphysicalHitRadiusLowerBound
Definition: MdtCalibrationTool.h:121
MdtCalibrationTool::m_doTemp
Gaudi::Property< bool > m_doTemp
Definition: MdtCalibrationTool.h:107
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MdtCalibrationTool::m_doPropUncert
Gaudi::Property< bool > m_doPropUncert
Definition: MdtCalibrationTool.h:111
AthAlgTool.h
MdtCalibrationTool::m_doField
Gaudi::Property< bool > m_doField
Definition: MdtCalibrationTool.h:108
MdtCalibrationTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MdtCalibrationTool.h:134
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition: CscCalcPed.cxx:22
MdtCalibHit
Definition: MdtCalibHit.h:50
MdtCalibOutput
Definition: MdtCalibOutput.h:10
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:121
MdtCalibrationTool::m_doT0Shift
Gaudi::Property< bool > m_doT0Shift
Definition: MdtCalibrationTool.h:118
columnar::final
CM final
Definition: ColumnAccessor.h:106
MdtCalibrationTool::m_doSlew
Gaudi::Property< bool > m_doSlew
Definition: MdtCalibrationTool.h:109
MdtCalibrationTool::m_t0ShiftTool
ToolHandle< MuonCalib::IShiftMapTools > m_t0ShiftTool
Definition: MdtCalibrationTool.h:113
MdtCalibrationTool::~MdtCalibrationTool
virtual ~MdtCalibrationTool()=default
destructor
MdtCalibrationTool::m_windowSetting
Gaudi::Property< int > m_windowSetting
Definition: MdtCalibrationTool.h:102
SG::ReadCondHandleKey< MuonCalib::MdtCalibDataContainer >
MdtCalibTwinOutput
Definition: MdtCalibTwinOutput.h:11
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
MuonCalib::MdtFullCalibData::TubeContainerPtr
GeoModel::TransientConstSharedPtr< MdtTubeCalibContainer > TubeContainerPtr
Definition: MdtFullCalibData.h:18
MdtCalibrationTool::m_timeWindowLowerBound
Gaudi::Property< double > m_timeWindowLowerBound
Definition: MdtCalibrationTool.h:103
MuonCalib::MdtFullCalibData::RtRelationPtr
GeoModel::TransientConstSharedPtr< MdtRtRelation > RtRelationPtr
Definition: MdtFullCalibData.h:17
MdtCalibrationTool::m_doTMaxShift
Gaudi::Property< bool > m_doTMaxShift
Definition: MdtCalibrationTool.h:119
Gaudi
=============================================================================
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:273
private
#define private
Definition: xAODTruthCnvAlg.h:20
MdtCalibrationTool::m_doProp
Gaudi::Property< bool > m_doProp
Definition: MdtCalibrationTool.h:106
MdtCalibrationTool::driftTimeStatus
Muon::MdtDriftCircleStatus driftTimeStatus(double driftTime, const MuonCalib::MdtRtRelation &rtRelation) const
Definition: MdtCalibrationTool.cxx:369
ToolSettings
MdtCalibrationTool::ToolSettings ToolSettings
Definition: MdtCalibrationTool.cxx:28
MdtCalibrationTool::getCalibConstants
virtual const MuonCalib::MdtFullCalibData * getCalibConstants(const EventContext &ctx, const Identifier &channelId) const override final
Definition: MdtCalibrationTool.cxx:94
IMuonIdHelperSvc.h
MdtCalibrationTool::m_resTwin
Gaudi::Property< double > m_resTwin
Definition: MdtCalibrationTool.h:122
ServiceHandle< Muon::IMuonIdHelperSvc >
Identifier
Definition: IdentifierFieldParser.cxx:14