5#ifndef MUON_MDTDRIFTCIRCLEONTRACKCREATOR_H
6#define MUON_MDTDRIFTCIRCLEONTRACKCREATOR_H
13#include "GaudiKernel/PhysicalConstants.h"
24class MdtCalibToolInput;
95 virtual StatusCode
initialize() override final;
112 const double t0Shift = 0.,
114 const double beta = 1,
115 const double tTrack = 1)
const override final;
139 const Trk::TrackParameters* pars =
nullptr,
187 const double tShift)
const;
226 Gaudi::Property<bool>
m_doMdt{
this,
"doMDT",
true};
234 "Tolerance used for the Surface::globalToLocal"};
242 "Default error strategy to be used in calculating errors"};
261 Gaudi::Property<bool>
m_t0Refit{
this,
"T0RefitError",
false};
267 Gaudi::Property<bool>
m_isMC{
this,
"IsMC",
false};
273 "Use error strategy for MC"};
275 "This tool is too complicated to rely on defaults. Will fail if not configured."};
Interface for tools calibrating MdtPrepData, turning them into Muon::MdtDriftCircleOnTrack object.
MdtDriftCircleOnTrack * MdtRotPtr
virtual MdtRotPtr createRIO_OnTrack(const MdtPrepData &prd, const Amg::Vector3D &globalPos, const Amg::Vector3D *gdir=nullptr, const double t0Shift=0., const MuonDriftCircleErrorStrategy *strategy=nullptr, const double beta=1, const double tTrack=1) const override final
Calibrate a MdtPrepData object.
virtual MdtRotPtr updateError(const MdtDriftCircleOnTrack &DCT, const Trk::TrackParameters *pars=nullptr, const MuonDriftCircleErrorStrategy *strategy=nullptr) const override
Update error of a ROT without changing the drift radius.
Gaudi::Property< bool > m_doFixedError
Use parameterised errors.
virtual ~MdtDriftCircleOnTrackCreator()=default
Gaudi::Property< bool > m_scaleMdtCov
Fixed error (not tube radius)
virtual const MuonDriftCircleErrorStrategy & errorStrategy() const override
Returns the default error strategy object.
Gaudi::Property< bool > m_t0Refit
Use error strategy for segments by default.
virtual void updateSign(MdtDriftCircleOnTrack &rot, const Trk::DriftCircleSide si) const override final
Update of the sign of the drift radius.
MdtDriftCircleOnTrackCreator(const std::string &, const std::string &, const IInterface *)
MuonDriftCircleErrorStrategy m_errorStrategy
< Error strategy for created ROTs
virtual StatusCode initialize() override final
CalibrationOutput getLocalMeasurement(const EventContext &ctx, const MdtPrepData &DC, const MdtCalibInput &calibInput, const MuonDriftCircleErrorStrategy &strategy) const
preform the mdt calibration
double mooreErrorStrategyMC(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Gaudi::Property< double > m_fixedError
< Error used when m_doFixed error =true or m_scaleErrorManually = true
double getTriggerTime() const
currently returns 0.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
static double parametrisedSigma(double r)
Gaudi::Property< bool > m_applyToF
toggle between loose errors (initial before alignment) and tight after alignment
Gaudi::Property< std::string > m_defaultStrategy
if set to true, the ROT creator create 'tube' hits with a local position of 0 and an error of tube ra...
virtual Trk::RIO_OnTrack * correct(const Trk::PrepRawData &prd, const Trk::TrackParameters &tp, const EventContext &) const override
Base class method for correct.
Gaudi::Property< bool > m_doIndividualChamberReweights
toggle between MC and data alignment errors (to be removed in rel.
Gaudi::Property< bool > m_looseErrors
double mooreErrorStrategyLoose(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
double muonErrorStrategy(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Gaudi::Property< bool > m_doSegments
Deweight individual chambers.
double mooreErrorStrategy(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
static constexpr double s_inverseSpeedOfLight
Gaudi::Property< bool > m_errorAtPredictedPosition
Add a term to the error to account for very poorly aligned stations.
Gaudi::Property< int > m_timeCorrectionType
ToolHandle< IMdtCalibrationTool > m_mdtCalibrationTool
@ ATLTIME
normal time of flight corrections assuming IP + light speed to be used for simulated data and collisi...
@ NO_CORRECTIONS
special case for cosmics taken with scintilator trigger which is read out so the offset with respect ...
@ COSMICS_TRIGGERTIME
case for normal cosmic data with rpc trigger or simulation including TOF.
Gaudi::Property< bool > m_createTubeHits
Scale ROTs depending on local alignment (i.e.
Gaudi::Property< double > m_globalToLocalTolerance
Gaudi::Property< bool > m_wasConfigured
double mooreErrorStrategyTight(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Gaudi::Property< bool > m_stationError
Add a special error to account for the T0 refit.
double timeOfFlight(const Amg::Vector3D &pos, const double beta, const double tTrack, const double tShift) const
Gaudi::Property< bool > m_useErrorParametrisation
Use the predicted track position to correct the Error.
Gaudi::Property< bool > m_doMdt
Process MDT ROTs.
Gaudi::Property< bool > m_isMC
toggle whether the time of flight is included in the t0 shifts
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
Class to represent measurements from the Monitored Drift Tubes.
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
std::bitset< 23 > MuonDriftCircleErrorStrategyInput
Ensure that the ATLAS eigen extensions are properly loaded.
struct to hold output of calibration
CalibrationOutput(Trk::LocalParameters lp, Amg::MatrixX le, double t, bool ok)
Trk::LocalParameters locPars