ATLAS Offline Software
MdtCalibrationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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  MdtCalibrationTool(const std::string& type, const std::string &name, const IInterface* parent);
46 
48  virtual ~MdtCalibrationTool() = default;
49 
51  virtual StatusCode initialize() override final;
52 
80  virtual MdtCalibOutput calibrate(const EventContext& ctx,
81  const MdtCalibInput& hit,
82  bool resolFromRtrack=false) const override final;
83 
86  virtual MdtCalibTwinOutput calibrateTwinTubes(const EventContext& ctx,
87  const MdtCalibInput& hit,
88  const MdtCalibInput& twinHit) const override final;
89 
90  virtual double getResolutionFromRt(const EventContext& ctx,
92  const double time) const override final;
93  virtual ToolSettings getSettings() const override final;
94 private:
96  const MuonCalib::MdtRtRelation& rtRelation) const;
97 
98  Gaudi::Property<int> m_windowSetting{this, "TimeWindowSetting", timeWindowMode::Default};
99  Gaudi::Property<double> m_timeWindowLowerBound{this, "TimeWindowLowerBound", 0.};
100  Gaudi::Property<double> m_timeWindowUpperBound{this, "TimeWindowUpperBound", 0.};
101  Gaudi::Property<bool> m_doTof{this, "DoTofCorrection", true};
102  Gaudi::Property<bool> m_doProp{this, "DoPropagationCorrection", true};
103  Gaudi::Property<bool> m_doTemp{this, "DoTemperatureCorrection", false};
104  Gaudi::Property<bool> m_doField{this,"DoMagneticFieldCorrection", false};
105  Gaudi::Property<bool> m_doWireSag{this, "DoWireSagCorrection", false};
106  Gaudi::Property<bool> m_doSlew{this, "DoSlewingCorrection", false};
107  Gaudi::Property<bool> m_doBkg{this, "DoBackgroundCorrection", false};
108 
109  /* T0 Shift tool -- Per-tube offsets of t0 value */
110  ToolHandle<MuonCalib::IShiftMapTools> m_t0ShiftTool{this, "T0ShiftTool", ""};
111  /* TMax Shift tool -- Per-tube offsets of Tmax */
112  ToolHandle<MuonCalib::IShiftMapTools> m_tMaxShiftTool{this, "TShiftMaxTool", ""};
113 
114  // tools should only be retrieved if they are used
115  Gaudi::Property<bool> m_doT0Shift{this, "DoT0Shift", false};
116  Gaudi::Property<bool> m_doTMaxShift{this, "DoTMaxShift", false};
117 
118  Gaudi::Property<double> m_unphysicalHitRadiusUpperBound{this, "UpperBoundHitRadius", 20.};
119  Gaudi::Property<double> m_unphysicalHitRadiusLowerBound{this, "LowerBoundHitRadius" , 0.};
120  Gaudi::Property<double> m_resTwin{this, "ResolutionTwinTube" , 1.05, "Twin tube resolution"};
121 
122 
124  "Conditions object containing the calibrations"};
125 
126  // Read handle for conditions object to get the field cache
127  // If one wants to avoid that adding of this read handle here, then client tools/algs calling driftRadiusFromTime
128  // must implement this to get the AtlasFieldCache which can then be passed through the call to driftRadiusFromTime
129  // Note: a readhandle must be in a tool or an alg, and so it cannot be in the class Imp.)
130  SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj",
131  "Name of the Magnetic Field conditions object key"};
132  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
133 
134 };
135 
136 #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 >
MCP::SystVariation::Default
@ Default
Definition: EnumDef.h:72
MdtCalibrationTool::m_doWireSag
Gaudi::Property< bool > m_doWireSag
Definition: MdtCalibrationTool.h:105
MdtCalibInput
Definition: MdtCalibInput.h:27
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:101
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:107
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
MdtCalibrationTool::m_tMaxShiftTool
ToolHandle< MuonCalib::IShiftMapTools > m_tMaxShiftTool
Definition: MdtCalibrationTool.h:112
MdtCalibrationTool::m_unphysicalHitRadiusUpperBound
Gaudi::Property< double > m_unphysicalHitRadiusUpperBound
Definition: MdtCalibrationTool.h:118
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Property
Support class for PropertyMgr.
Definition: Property.h:23
MdtCalibrationTool::m_timeWindowUpperBound
Gaudi::Property< double > m_timeWindowUpperBound
Definition: MdtCalibrationTool.h:100
MdtCalibrationTool::getResolutionFromRt
virtual double getResolutionFromRt(const EventContext &ctx, const Identifier &module, const double time) const override final
Definition: MdtCalibrationTool.cxx:443
MdtCalibrationTool::getSettings
virtual ToolSettings getSettings() const override final
Definition: MdtCalibrationTool.cxx:36
MdtCalibrationTool
Definition: MdtCalibrationTool.h:35
python.PyAthena.module
module
Definition: PyAthena.py:134
MdtCalibrationTool::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: MdtCalibrationTool.h:130
MdtCalibrationTool::calibrateTwinTubes
virtual MdtCalibTwinOutput calibrateTwinTubes(const EventContext &ctx, const MdtCalibInput &hit, const 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:297
MdtCalibrationTool::initialize
virtual StatusCode initialize() override final
initialization
Definition: MdtCalibrationTool.cxx:49
MdtCalibrationTool::m_calibDbKey
SG::ReadCondHandleKey< MuonCalib::MdtCalibDataContainer > m_calibDbKey
Definition: MdtCalibrationTool.h:123
TRT::Hit::driftTime
@ driftTime
Definition: HitInfo.h:43
MdtCalibrationTool::m_unphysicalHitRadiusLowerBound
Gaudi::Property< double > m_unphysicalHitRadiusLowerBound
Definition: MdtCalibrationTool.h:119
MdtCalibrationTool::m_doTemp
Gaudi::Property< bool > m_doTemp
Definition: MdtCalibrationTool.h:103
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
MdtCalibrationTool::m_doField
Gaudi::Property< bool > m_doField
Definition: MdtCalibrationTool.h:104
MdtCalibrationTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MdtCalibrationTool.h:132
test_pyathena.parent
parent
Definition: test_pyathena.py:15
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
MdtCalibrationTool::m_doT0Shift
Gaudi::Property< bool > m_doT0Shift
Definition: MdtCalibrationTool.h:115
MdtCalibrationTool::m_doSlew
Gaudi::Property< bool > m_doSlew
Definition: MdtCalibrationTool.h:106
MdtCalibrationTool::m_t0ShiftTool
ToolHandle< MuonCalib::IShiftMapTools > m_t0ShiftTool
Definition: MdtCalibrationTool.h:110
MdtCalibrationTool::MdtCalibrationTool
MdtCalibrationTool(const std::string &type, const std::string &name, const IInterface *parent)
constructor
Definition: MdtCalibrationTool.cxx:33
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
MdtCalibrationTool::~MdtCalibrationTool
virtual ~MdtCalibrationTool()=default
destructor
MdtCalibrationTool::m_windowSetting
Gaudi::Property< int > m_windowSetting
Definition: MdtCalibrationTool.h:98
SG::ReadCondHandleKey< MuonCalib::MdtCalibDataContainer >
MdtCalibTwinOutput
Definition: MdtCalibTwinOutput.h:11
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
MuonCalib::MdtFullCalibData::TubeContainerPtr
GeoModel::TransientConstSharedPtr< MdtTubeCalibContainer > TubeContainerPtr
Definition: MdtFullCalibData.h:18
MdtCalibrationTool::m_timeWindowLowerBound
Gaudi::Property< double > m_timeWindowLowerBound
Definition: MdtCalibrationTool.h:99
MuonCalib::MdtFullCalibData::RtRelationPtr
GeoModel::TransientConstSharedPtr< MdtRtRelation > RtRelationPtr
Definition: MdtFullCalibData.h:17
MdtCalibrationTool::m_doTMaxShift
Gaudi::Property< bool > m_doTMaxShift
Definition: MdtCalibrationTool.h:116
Gaudi
=============================================================================
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:273
MdtCalibrationTool::m_doProp
Gaudi::Property< bool > m_doProp
Definition: MdtCalibrationTool.h:102
MdtCalibrationTool::driftTimeStatus
Muon::MdtDriftCircleStatus driftTimeStatus(double driftTime, const MuonCalib::MdtRtRelation &rtRelation) const
Definition: MdtCalibrationTool.cxx:423
ToolSettings
MdtCalibrationTool::ToolSettings ToolSettings
Definition: MdtCalibrationTool.cxx:32
IMuonIdHelperSvc.h
MdtCalibrationTool::m_resTwin
Gaudi::Property< double > m_resTwin
Definition: MdtCalibrationTool.h:120
ServiceHandle< Muon::IMuonIdHelperSvc >