5#ifndef ACTSTRACKRECONSTRUCTION_TRACKPARAMSESTIMATIONTOOL_H
6#define ACTSTRACKRECONSTRUCTION_TRACKPARAMSESTIMATIONTOOL_H
18#include "Acts/Propagator/Propagator.hpp"
19#include "Acts/Propagator/SympyStepper.hpp"
30 public extends<AthAlgTool, ActsTrk::ITrackParamsEstimationTool> {
34 const IInterface* parent);
40 std::pair<std::optional<Acts::BoundTrackParameters>, EstimationStatus>
44 const Acts::GeometryContext& geoContext,
45 const Acts::MagneticFieldContext& magFieldContext,
46 const Acts::CalibrationContext& calContext,
47 std::function<
const Acts::Surface&(
const ActsTrk::Seed& seed,
bool useTopSp)> retrieveSurface)
const override;
50 std::pair<std::optional<Acts::BoundTrackParameters>, EstimationStatus>
54 const Acts::GeometryContext& geoContext,
55 const Acts::MagneticFieldContext& magFieldContext,
56 const Acts::CalibrationContext& calContext,
57 const Acts::Surface& surface,
58 const Acts::Vector3& bField)
const override;
67 ToolHandle<ActsTrk::IFitterTool>
m_fitterTool{
this,
"FitterTool",
"",
"Fitter Tool for Seeds"};
71 Gaudi::Property< double >
m_sigmaLoc0 {
this,
"sigmaLoc0", 1 * Acts::UnitConstants::mm,
72 "Constant term of the loc0 resolution"};
73 Gaudi::Property< double >
m_sigmaLoc1 {
this,
"sigmaLoc1", 1 * Acts::UnitConstants::mm,
74 "Constant term of the loc1 resolution"};
75 Gaudi::Property< double >
m_sigmaPhi {
this,
"sigmaPhi", 0.1 * Acts::UnitConstants::degree,
76 "Phi angular resolution"};
77 Gaudi::Property< double >
m_sigmaTheta {
this,
"sigmaTheta", 0.1 * Acts::UnitConstants::degree,
78 "Theta angular resolution"};
79 Gaudi::Property< double >
m_sigmaQOverP {
this,
"sigmaQOverP", 0.1 * Acts::UnitConstants::e / Acts::UnitConstants::GeV,
81 Gaudi::Property< double >
m_sigmaT0 {
this,
"sigmaT0", 1 * Acts::UnitConstants::ns,
84 "Initial relative pT resolution"};
85 Gaudi::Property< std::vector<double> >
m_initialVarInflation {
this,
"initialVarInflation", {1., 1., 1., 1., 1., 1.},
86 "Inflate track variances"};
88 "0=use 1st 3 SPs, 1=use first,middle,last SPs to improve pT measurement, 2=use for all parameters, "
89 "3=use 1st 3 SPs separated by more than minDeltaR, starting from the innermost SP, "
92 "B-field mode: 0=B-field at first SP in search order; 1=z-component of B-field; 2=B-field at innermost SP, regardless of search direction"};
93 Gaudi::Property<std::size_t>
m_firstSp{
this,
"firstSp", 0ul,
94 "Index of first SP to use"};
95 Gaudi::Property<double>
m_minDeltaR{
this,
"minDeltaR", 15 * Acts::UnitConstants::mm,
96 "Minimum difference in distance from the origin between the SPs used for the estimate (parameterEstimationMode=3)"};
98 "Use curvilinear parameters when propagation fails instead of returning null"};
100 "Number of strip calibration iterations"};
102 "Number of geometric refinement iterations of the circle fit (parameterEstimationMode=4)"};
104 "Weight each SP in the fit by 1/r^exponent, where 0 gives uniform weights (parameterEstimationMode=4)"};
105 Gaudi::Property<bool>
m_refitSeeds{
this,
"refitSeeds",
false,
"Run KalmanFitter on seeds"};
107 std::optional<Acts::BoundTrackParameters>
doRefit(
109 const Acts::BoundTrackParameters &initialParameters,
110 const Acts::GeometryContext& geometry,
111 const Acts::MagneticFieldContext& magField,
112 const Acts::CalibrationContext& calib,
113 const bool paramsAtOutermostSurface)
const;
Helper class to access the Acts::surface associated with an Uncalibrated xAOD measurement.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...