ATLAS Offline Software
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ActsTrk::GaussianSumFitterTool Class Reference

#include <GaussianSumFitterTool.h>

Inheritance diagram for ActsTrk::GaussianSumFitterTool:
Collaboration diagram for ActsTrk::GaussianSumFitterTool:

Public Member Functions

 GaussianSumFitterTool (const std::string &, const std::string &, const IInterface *)
 
virtual ~GaussianSumFitterTool ()=default
 
virtual StatusCode initialize () override
 
virtual std::unique_ptr< Trk::Trackfit (const EventContext &ctx, const Trk::Track &, const Trk::RunOutlierRemoval runOutlier=false, const Trk::ParticleHypothesis matEffects=Trk::nonInteracting) const override
 refit a track More...
 
virtual std::unique_ptr< Trk::Trackfit (const EventContext &ctx, const Trk::PrepRawDataSet &, const Trk::TrackParameters &, const Trk::RunOutlierRemoval runOutlier=false, const Trk::ParticleHypothesis matEffects=Trk::nonInteracting) const override
 fit a set of PrepRawData objects More...
 
virtual std::unique_ptr< Trk::Trackfit (const EventContext &ctx, const Trk::MeasurementSet &, const Trk::TrackParameters &, const Trk::RunOutlierRemoval runOutlier=false, const Trk::ParticleHypothesis matEffects=Trk::nonInteracting) const override
 fit a set of MeasurementBase objects More...
 
virtual std::unique_ptr< Trk::Trackfit (const EventContext &ctx, const Trk::Track &, const Trk::PrepRawDataSet &, const Trk::RunOutlierRemoval runOutlier=false, const Trk::ParticleHypothesis matEffects=Trk::nonInteracting) const override
 extend a track fit including a new set of PrepRawData objects More...
 
virtual std::unique_ptr< Trk::Trackfit (const EventContext &ctx, const Trk::Track &, const Trk::MeasurementSet &, const Trk::RunOutlierRemoval runOutlier=false, const Trk::ParticleHypothesis matEffects=Trk::nonInteracting) const override
 extend a track fit including a new set of MeasurementBase objects More...
 
virtual std::unique_ptr< Trk::Trackfit (const EventContext &ctx, const Trk::Track &intrk1, const Trk::Track &intrk2, const Trk::RunOutlierRemoval runOutlier=false, const Trk::ParticleHypothesis matEffects=Trk::nonInteracting) const override
 combined track fit More...
 

Private Types

using Fitter = Acts::GaussianSumFitter< Acts::Propagator< Acts::MultiEigenStepperLoop<>, Acts::Navigator >, Acts::AtlasBetheHeitlerApprox< 6, 5 >, ActsTrk::MutableTrackStateBackend >
 Type erased track fitter function. More...
 
using DirectFitter = Acts::GaussianSumFitter< Acts::Propagator< Acts::MultiEigenStepperLoop<>, Acts::DirectNavigator >, Acts::AtlasBetheHeitlerApprox< 6, 5 >, ActsTrk::MutableTrackStateBackend >
 

Private Member Functions

Acts::GsfOptions< ActsTrk::MutableTrackStateBackendprepareOptions (const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const Acts::PerigeeSurface &surface) const
 
std::unique_ptr< Trk::TrackperformFit (const EventContext &ctx, const Acts::GeometryContext &tgContext, const Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > &gsfOptions, const std::vector< Acts::SourceLink > &trackSourceLinks, const Acts::BoundTrackParameters &initialParams) const
 
std::unique_ptr< Trk::TrackperformDirectFit (const EventContext &ctx, const Acts::GeometryContext &tgContext, const Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > &gsfOptions, const std::vector< Acts::SourceLink > &trackSourceLinks, const Acts::BoundTrackParameters &initialParams, const std::vector< const Acts::Surface * > &surfaces) const
 
std::unique_ptr< Trk::TrackmakeTrack (const EventContext &ctx, const Acts::GeometryContext &tgContext, ActsTrk::MutableTrackContainer &tracks, Acts::Result< typename ActsTrk::MutableTrackContainer::TrackProxy, std::error_code > &fitResult) const
 
const Acts::GsfExtensions< ActsTrk::MutableTrackStateBackend > & getExtensions () const
 
const Acts::Logger & logger () const
 Private access to the logger. More...
 

Private Attributes

ToolHandle< IActsExtrapolationToolm_extrapolationTool {this, "ExtrapolationTool", ""}
 
ToolHandle< IActsTrackingGeometryToolm_trackingGeometryTool {this, "TrackingGeometryTool", ""}
 
ToolHandle< ActsTrk::IActsToTrkConverterToolm_ATLASConverterTool {this, "ATLASConverterTool", ""}
 
ToolHandle< Trk::IExtendedTrackSummaryToolm_trkSummaryTool {this, "SummaryTool", "", "ToolHandle for track summary tool"}
 
ToolHandle< Trk::IBoundaryCheckToolm_boundaryCheckTool
 
Gaudi::Property< double > m_option_outlierChi2Cut
 
Gaudi::Property< int > m_option_maxPropagationStep
 
Gaudi::Property< int > m_maxComponents
 
Gaudi::Property< bool > m_useDirectNavigation
 
Gaudi::Property< bool > m_refitOnly
 
Gaudi::Property< double > m_weightCutOff
 
Gaudi::Property< std::string > m_option_componentMergeMethod
 
Acts::ComponentMergeMethod m_componentMergeMethod
 
std::unique_ptr< ActsTrk::detail::TrkMeasurementCalibratorm_calibrator {nullptr}
 
std::unique_ptr< Fitterm_fitter {nullptr}
 
std::unique_ptr< DirectFitterm_directFitter {nullptr}
 
ATLASSourceLinkSurfaceAccessor m_surfaceAccessor {}
 
Acts::GsfExtensions< ActsTrk::MutableTrackStateBackendm_gsfExtensions
 
ActsTrk::detail::FitterHelperFunctions::ATLASOutlierFinder m_outlierFinder {0}
 
std::unique_ptr< const Acts::Logger > m_logger {nullptr}
 logging instance More...
 

Detailed Description

Definition at line 44 of file GaussianSumFitterTool.h.

Member Typedef Documentation

◆ DirectFitter

using ActsTrk::GaussianSumFitterTool::DirectFitter = Acts::GaussianSumFitter< Acts::Propagator<Acts::MultiEigenStepperLoop<>, Acts::DirectNavigator>, Acts::AtlasBetheHeitlerApprox<6, 5>, ActsTrk::MutableTrackStateBackend >
private

Definition at line 176 of file GaussianSumFitterTool.h.

◆ Fitter

using ActsTrk::GaussianSumFitterTool::Fitter = Acts::GaussianSumFitter< Acts::Propagator<Acts::MultiEigenStepperLoop<>, Acts::Navigator>, Acts::AtlasBetheHeitlerApprox<6, 5>, ActsTrk::MutableTrackStateBackend >
private

Type erased track fitter function.

Definition at line 169 of file GaussianSumFitterTool.h.

Constructor & Destructor Documentation

◆ GaussianSumFitterTool()

ActsTrk::GaussianSumFitterTool::GaussianSumFitterTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 47 of file GaussianSumFitterTool.cxx.

49  :
50  base_class(t,n,p)
51 {}

◆ ~GaussianSumFitterTool()

virtual ActsTrk::GaussianSumFitterTool::~GaussianSumFitterTool ( )
virtualdefault

Member Function Documentation

◆ fit() [1/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::fit ( const EventContext &  ctx,
const Trk::MeasurementSet inputMeasSet,
const Trk::TrackParameters estimatedStartParameters,
const Trk::RunOutlierRemoval  runOutlier = false,
const Trk::ParticleHypothesis  matEffects = Trk::nonInteracting 
) const
overridevirtual

fit a set of MeasurementBase objects

Definition at line 178 of file GaussianSumFitterTool.cxx.

183 {
184  std::unique_ptr<Trk::Track> track = nullptr;
185  // protection against not having measurements on the input track
186  if (inputMeasSet.size() < 2) {
187  ATH_MSG_DEBUG("called to refit empty measurement set or a measurement set with too little information, reject fit");
188  return nullptr;
189  }
190 
191  // Construct a perigee surface as the target surface
192  std::shared_ptr<Acts::PerigeeSurface> pSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(
193  Acts::Vector3{0., 0., 0.});
194 
195  Acts::GeometryContext tgContext = m_trackingGeometryTool->getGeometryContext(ctx).context();
196  Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(ctx);
197  // CalibrationContext converter not implemented yet.
198  Acts::CalibrationContext calContext{};
199 
200  // Set the GaussianSumFitter options
201  Acts::GsfOptions<ActsTrk::MutableTrackStateBackend>
202  gsfOptions = prepareOptions(tgContext,
203  mfContext,
204  calContext,
205  *pSurface);
206 
207  // Set abortOnError to false, else the refitting crashes if no forward propagation is done. Here, we just skip the event and continue.
208  gsfOptions.abortOnError = false;
209 
210  std::vector< Acts::SourceLink > trackSourceLinks;
211  trackSourceLinks.reserve(inputMeasSet.size());
212 
213  for (auto* measSet : inputMeasSet) {
214  trackSourceLinks.push_back(m_ATLASConverterTool->trkMeasurementToSourceLink(tgContext, *measSet));
215  }
216 
217  const auto& initialParams = m_ATLASConverterTool->trkTrackParametersToActsParameters(estimatedStartParameters, tgContext);
218 
220 
221  std::vector<const Acts::Surface*> surfaces;
222  surfaces.reserve(inputMeasSet.size());
223  for (auto* measSet : inputMeasSet) {
224  const auto& slink = m_ATLASConverterTool->trkMeasurementToSourceLink(tgContext, *measSet);
225  const auto& sl = slink.get<ATLASSourceLink>();
226  const auto& trkSrf = sl->associatedSurface();
227  const auto& actsSrf = m_ATLASConverterTool->trkSurfaceToActsSurface(trkSrf);
228  surfaces.push_back(&actsSrf);
229  }
230 
231  return performDirectFit(ctx,
232  tgContext,
233  gsfOptions,
234  trackSourceLinks,
235  initialParams,
236  surfaces);
237  }else{
238  return performFit(ctx,
239  tgContext,
240  gsfOptions,
241  trackSourceLinks,
242  initialParams);
243  }
244 }

◆ fit() [2/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::fit ( const EventContext &  ctx,
const Trk::PrepRawDataSet ,
const Trk::TrackParameters ,
const Trk::RunOutlierRemoval  runOutlier = false,
const Trk::ParticleHypothesis  matEffects = Trk::nonInteracting 
) const
overridevirtual

fit a set of PrepRawData objects

Definition at line 249 of file GaussianSumFitterTool.cxx.

254 {
255  ATH_MSG_DEBUG("Fit of PrepRawDataSet not yet implemented");
256  return nullptr;
257 }

◆ fit() [3/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::fit ( const EventContext &  ctx,
const Trk::Track inputTrack,
const Trk::MeasurementSet addMeasColl,
const Trk::RunOutlierRemoval  runOutlier = false,
const Trk::ParticleHypothesis  matEffects = Trk::nonInteracting 
) const
overridevirtual

extend a track fit including a new set of MeasurementBase objects

Definition at line 264 of file GaussianSumFitterTool.cxx.

269 {
270  ATH_MSG_VERBOSE ("--> enter GaussianSumFitter::fit(Track,Meas'BaseSet,,)");
271  ATH_MSG_VERBOSE (" with Track from author = " << inputTrack.info().dumpInfo());
272 
273  // protection, if empty MeasurementSet
274  if (addMeasColl.empty()) {
275  ATH_MSG_DEBUG( "client tries to add an empty MeasurementSet to the track fit." );
276  return fit(ctx,inputTrack);
277  }
278 
279  // protection against not having measurements on the input track
280  if (!inputTrack.measurementsOnTrack() || (inputTrack.measurementsOnTrack()->size() < 2 && addMeasColl.empty())) {
281  ATH_MSG_DEBUG("called to refit empty track or track with too little information, reject fit");
282  return nullptr;
283  }
284 
285  // protection against not having track parameters on the input track
286  if (!inputTrack.trackParameters() || inputTrack.trackParameters()->empty()) {
287  ATH_MSG_DEBUG("input fails to provide track parameters for seeding the GSF, reject fit");
288  return nullptr;
289  }
290 
291  std::unique_ptr<Trk::Track> track = nullptr;
292 
293  // Construct a perigee surface as the target surface
294  std::shared_ptr<Acts::PerigeeSurface> pSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(Acts::Vector3{0., 0., 0.});
295 
296  Acts::GeometryContext tgContext = m_trackingGeometryTool->getGeometryContext(ctx).context();
297  Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(ctx);
298  // CalibrationContext converter not implemented yet.
299  Acts::CalibrationContext calContext{};
300 
301  // Set the GaussianSumFitter options
302  Acts::GsfOptions<ActsTrk::MutableTrackStateBackend>
303  gsfOptions = prepareOptions(tgContext,
304  mfContext,
305  calContext,
306  *pSurface);
307 
308  std::vector<Acts::SourceLink> trackSourceLinks = m_ATLASConverterTool->trkTrackToSourceLinks(tgContext, inputTrack);
309  const auto& initialParams = m_ATLASConverterTool->trkTrackParametersToActsParameters(*(inputTrack.perigeeParameters()), tgContext);
310 
311  for (auto* meas : addMeasColl) {
312  trackSourceLinks.push_back(m_ATLASConverterTool->trkMeasurementToSourceLink(tgContext, *meas));
313  }
314 
315  return performFit(ctx,
316  tgContext,
317  gsfOptions,
318  trackSourceLinks,
319  initialParams);
320 }

◆ fit() [4/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::fit ( const EventContext &  ctx,
const Trk::Track ,
const Trk::PrepRawDataSet ,
const Trk::RunOutlierRemoval  runOutlier = false,
const Trk::ParticleHypothesis  matEffects = Trk::nonInteracting 
) const
overridevirtual

extend a track fit including a new set of PrepRawData objects

Definition at line 325 of file GaussianSumFitterTool.cxx.

330 {
331 
332  ATH_MSG_DEBUG("Fit of Track with additional PrepRawDataSet not yet implemented");
333  return nullptr;
334 }

◆ fit() [5/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::fit ( const EventContext &  ctx,
const Trk::Track inputTrack,
const Trk::RunOutlierRemoval  runOutlier = false,
const Trk::ParticleHypothesis  matEffects = Trk::nonInteracting 
) const
overridevirtual

refit a track

Definition at line 122 of file GaussianSumFitterTool.cxx.

126 {
127 
128 
129  std::unique_ptr<Trk::Track> track = nullptr;
130  ATH_MSG_VERBOSE ("--> enter GaussianSumFitter::fit(Track,,) with Track from author = "
131  << inputTrack.info().dumpInfo());
132 
133  // protection against not having measurements on the input track
134  if (!inputTrack.measurementsOnTrack() || inputTrack.measurementsOnTrack()->size() < 2) {
135  ATH_MSG_DEBUG("called to refit empty track or track with too little information, reject fit");
136  return nullptr;
137  }
138 
139  // protection against not having track parameters on the input track
140  if (!inputTrack.trackParameters() || inputTrack.trackParameters()->empty()) {
141  ATH_MSG_DEBUG("input fails to provide track parameters for seeding the GSF, reject fit");
142  return nullptr;
143  }
144 
145  // Construct a perigee surface as the target surface
146  std::shared_ptr<Acts::PerigeeSurface> pSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(
147  Acts::Vector3{0., 0., 0.});
148 
149  Acts::GeometryContext tgContext = m_trackingGeometryTool->getGeometryContext(ctx).context();
150  Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(ctx);
151  // CalibrationContext converter not implemented yet.
152  Acts::CalibrationContext calContext{};
153 
154  // Set the GaussianSumFitter options
155  Acts::GsfOptions<ActsTrk::MutableTrackStateBackend>
156  gsfOptions = prepareOptions(tgContext,
157  mfContext,
158  calContext,
159  *pSurface);
160  gsfOptions.maxComponents = m_maxComponents;
161  gsfOptions.weightCutoff = m_weightCutOff;
162  gsfOptions.componentMergeMethod = m_componentMergeMethod;
163 
164 
165  std::vector<Acts::SourceLink> trackSourceLinks = m_ATLASConverterTool->trkTrackToSourceLinks(tgContext,inputTrack);
166  const auto& initialParams = m_ATLASConverterTool->trkTrackParametersToActsParameters((*inputTrack.perigeeParameters()), tgContext);
167 
168  return performFit(ctx,
169  tgContext,
170  gsfOptions,
171  trackSourceLinks,
172  initialParams);
173 }

◆ fit() [6/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::fit ( const EventContext &  ctx,
const Trk::Track intrk1,
const Trk::Track intrk2,
const Trk::RunOutlierRemoval  runOutlier = false,
const Trk::ParticleHypothesis  matEffects = Trk::nonInteracting 
) const
overridevirtual

combined track fit

Definition at line 339 of file GaussianSumFitterTool.cxx.

344 {
345  ATH_MSG_VERBOSE ("--> enter GaussianSumFitter::fit(Track,Track,)");
346  ATH_MSG_VERBOSE (" with Tracks from #1 = " << intrk1.info().dumpInfo()
347  << " and #2 = " << intrk2.info().dumpInfo());
348 
349  // protection, if empty track2
350  if (!intrk2.measurementsOnTrack()) {
351  ATH_MSG_DEBUG( "input #2 is empty try to fit track 1 alone" );
352  return fit(ctx,intrk1);
353  }
354 
355  // protection, if empty track1
356  if (!intrk1.measurementsOnTrack()) {
357  ATH_MSG_DEBUG( "input #1 is empty try to fit track 2 alone" );
358  return fit(ctx,intrk2);
359  }
360 
361  // protection against not having track parameters on the input track
362  if (!intrk1.trackParameters() || intrk1.trackParameters()->empty()) {
363  ATH_MSG_DEBUG("input #1 fails to provide track parameters for seeding the GSF, reject fit");
364  return nullptr;
365  }
366 
367  std::unique_ptr<Trk::Track> track = nullptr;
368 
369  // Construct a perigee surface as the target surface
370  std::shared_ptr<Acts::PerigeeSurface> pSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(
371  Acts::Vector3{0., 0., 0.});
372 
373  Acts::GeometryContext tgContext = m_trackingGeometryTool->getGeometryContext(ctx).context();
374  Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(ctx);
375  // CalibrationContext converter not implemented yet.
376  Acts::CalibrationContext calContext{};
377 
378  // Set the GaussianSumFitter options
379  Acts::GsfOptions<ActsTrk::MutableTrackStateBackend>
380  gsfOptions = prepareOptions(tgContext,
381  mfContext,
382  calContext,
383  *pSurface);
384 
385  std::vector<Acts::SourceLink> trackSourceLinks = m_ATLASConverterTool->trkTrackToSourceLinks(tgContext, intrk1);
386  std::vector<Acts::SourceLink> trackSourceLinks2 = m_ATLASConverterTool->trkTrackToSourceLinks(tgContext, intrk2);
387  trackSourceLinks.insert(trackSourceLinks.end(), trackSourceLinks2.begin(), trackSourceLinks2.end());
388  const auto &initialParams = m_ATLASConverterTool->trkTrackParametersToActsParameters(*(intrk1.perigeeParameters()), tgContext);
389 
390  return performFit(ctx,
391  tgContext,
392  gsfOptions,
393  trackSourceLinks,
394  initialParams);
395 }

◆ getExtensions()

const Acts::GsfExtensions< typename ActsTrk::MutableTrackStateBackend > & ActsTrk::GaussianSumFitterTool::getExtensions ( ) const
private

Definition at line 551 of file GaussianSumFitterTool.cxx.

552 {
553  return m_gsfExtensions;
554 }

◆ initialize()

StatusCode ActsTrk::GaussianSumFitterTool::initialize ( )
overridevirtual

Definition at line 53 of file GaussianSumFitterTool.cxx.

53  {
54  ATH_MSG_DEBUG(name() << "::" << __FUNCTION__);
55 
57  ATH_CHECK(m_extrapolationTool.retrieve());
58  ATH_CHECK(m_ATLASConverterTool.retrieve());
59  if (!m_refitOnly) {
60  ATH_CHECK(m_trkSummaryTool.retrieve());
61  }else{
62  ATH_MSG_INFO("Running GSF without track summary");
63  }
64 
65  m_logger = makeActsAthenaLogger(this, "Acts Gaussian Sum Refit");
66 
67  auto field = std::make_shared<ATLASMagneticFieldWrapper>();
68  Acts::MultiEigenStepperLoop<> stepper(field);
69  Acts::Navigator navigator( Acts::Navigator::Config{ m_trackingGeometryTool->trackingGeometry() },
70  logger().cloneWithSuffix("Navigator") );
71  Acts::Propagator<Acts::MultiEigenStepperLoop<>, Acts::Navigator> propagator(std::move(stepper),
72  std::move(navigator),
73  logger().cloneWithSuffix("Prop"));
74 
75  Acts::AtlasBetheHeitlerApprox<6, 5> bha = Acts::makeDefaultBetheHeitlerApprox();
76  m_fitter = std::make_unique<Fitter>(std::move(propagator), std::move(bha),
77  logger().cloneWithSuffix("GaussianSumFitter"));
78 
79  // Direct Fitter
81  Acts::DirectNavigator directNavigator( logger().cloneWithSuffix("DirectNavigator") );
82  Acts::MultiEigenStepperLoop<> stepperDirect(field);
83  Acts::Propagator<Acts::MultiEigenStepperLoop<>, Acts::DirectNavigator> directPropagator(std::move(stepperDirect),
84  std::move(directNavigator),
85  logger().cloneWithSuffix("DirectPropagator"));
86  Acts::AtlasBetheHeitlerApprox<6, 5> bhaDirect = Acts::makeDefaultBetheHeitlerApprox();
87  m_directFitter = std::make_unique<DirectFitter>(std::move(directPropagator),std::move(bhaDirect),
88  logger().cloneWithSuffix("DirectGaussianSumFitter"));
89 
90  }
91 
92  m_gsfExtensions.updater.connect<&ActsTrk::detail::FitterHelperFunctions::gainMatrixUpdate<ActsTrk::MutableTrackStateBackend>>();
93  m_calibrator = std::make_unique<ActsTrk::detail::TrkMeasurementCalibrator>(*m_ATLASConverterTool);
94  m_gsfExtensions.calibrator.connect<&ActsTrk::detail::TrkMeasurementCalibrator::calibrate<ActsTrk::MutableTrackStateBackend>>(m_calibrator.get());
95 
96  m_surfaceAccessor.m_converterTool = &(*m_ATLASConverterTool);
97  m_gsfExtensions.surfaceAccessor.connect<&ATLASSourceLinkSurfaceAccessor::operator()>(&m_surfaceAccessor);
98  m_gsfExtensions.mixtureReducer.connect<&Acts::reduceMixtureWithKLDistance>();
99 
101  m_gsfExtensions.outlierFinder.connect<&ActsTrk::detail::FitterHelperFunctions::ATLASOutlierFinder::operator()<ActsTrk::MutableTrackStateBackend>>(&m_outlierFinder);
103  m_componentMergeMethod = Acts::ComponentMergeMethod::eMean;
104  else if(m_option_componentMergeMethod == "eMaxWeight" || m_option_componentMergeMethod == "maxWeight"){
105  m_componentMergeMethod = Acts::ComponentMergeMethod::eMaxWeight;
106  }else{
107  throw std::runtime_error("Unknown option for ComponentMergeMethod: " + m_option_componentMergeMethod.value());
108  }
109 
110  ATH_MSG_INFO("ACTS GSF direct nav " << m_useDirectNavigation.value());
111  ATH_MSG_INFO("ACTS GSF max cmps " << m_maxComponents.value());
112  ATH_MSG_INFO("ACTS GSF merge meth " << m_option_componentMergeMethod.value());
113  ATH_MSG_INFO("ACTS GSF weight ctf " << m_weightCutOff.value());
114  ATH_MSG_INFO("ACTS GSF outlier chi2 " << m_option_outlierChi2Cut.value());
115 
116  return StatusCode::SUCCESS;
117 }

◆ logger()

const Acts::Logger & ActsTrk::GaussianSumFitterTool::logger ( ) const
private

Private access to the logger.

Definition at line 558 of file GaussianSumFitterTool.cxx.

559 {
560  return *m_logger;
561 }

◆ makeTrack()

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::makeTrack ( const EventContext &  ctx,
const Acts::GeometryContext &  tgContext,
ActsTrk::MutableTrackContainer tracks,
Acts::Result< typename ActsTrk::MutableTrackContainer::TrackProxy, std::error_code > &  fitResult 
) const
private

Definition at line 398 of file GaussianSumFitterTool.cxx.

402 {
403  if (not fitResult.ok())
404  return nullptr;
405 
406  std::unique_ptr<Trk::Track> newtrack = nullptr;
407  // Get the fit output object
408  const auto& acts_track = fitResult.value();
409  auto finalTrajectory = std::make_unique<Trk::TrackStates>();
410  // initialise the number of dead Pixel and Acts strip
411  int numberOfDeadPixel = 0;
412  int numberOfDeadSCT = 0;
413 
414  std::vector<std::unique_ptr<const Acts::BoundTrackParameters>> actsSmoothedParam;
415  // Loop over all the output state to create track state
416  tracks.trackStateContainer().visitBackwards(acts_track.tipIndex(),
417  [&] (const auto &state) -> void
418  {
419  // First only concider state with an associated detector element not in the TRT
420  auto flag = state.typeFlags();
421  const auto* associatedDetEl = state.referenceSurface().associatedDetectorElement();
422  if (not associatedDetEl)
423  return;
424 
425  const auto* actsElement = dynamic_cast<const ActsDetectorElement*>(associatedDetEl);
426  if (not actsElement)
427  return;
428 
429  const auto* upstreamDetEl = actsElement->upstreamDetectorElement();
430  if (not upstreamDetEl)
431  return;
432 
433  ATH_MSG_VERBOSE("Try casting to TRT for if");
434  if (dynamic_cast<const InDetDD::TRT_BaseElement*>(upstreamDetEl))
435  return;
436 
437  const auto* trkDetElem = dynamic_cast<const Trk::TrkDetElementBase*>(upstreamDetEl);
438  if (not trkDetElem)
439  return;
440 
441  ATH_MSG_VERBOSE("trkDetElem type: " << static_cast<std::underlying_type_t<Trk::DetectorElemType>>(trkDetElem->detectorType()));
442 
443  ATH_MSG_VERBOSE("Try casting to SiDetectorElement");
444  const auto* detElem = dynamic_cast<const InDetDD::SiDetectorElement*>(upstreamDetEl);
445  if (not detElem)
446  return;
447  ATH_MSG_VERBOSE("detElem = " << detElem);
448 
449  // We need to determine the type of state
450  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
451  std::unique_ptr<Trk::TrackParameters> parm;
452 
453  // State is a hole (no associated measurement), use predicted parameters
454  if (flag.test(Acts::TrackStateFlag::HoleFlag)){
455  ATH_MSG_VERBOSE("State is a hole (no associated measurement), use predicted parameters");
456  const Acts::BoundTrackParameters actsParam(state.referenceSurface().getSharedPtr(),
457  state.predicted(),
458  state.predictedCovariance(),
459  acts_track.particleHypothesis());
460  parm = m_ATLASConverterTool->actsTrackParametersToTrkParameters(actsParam, tgContext);
461  auto boundaryCheck = m_boundaryCheckTool->boundaryCheck(*parm);
462  // Check if this is a hole, a dead sensors or a state outside the sensor boundary
463  ATH_MSG_VERBOSE("Check if this is a hole, a dead sensors or a state outside the sensor boundary");
464  if(boundaryCheck == Trk::BoundaryCheckResult::DeadElement){
465  if (detElem->isPixel()) {
466  ++numberOfDeadPixel;
467  }
468  else if (detElem->isSCT()) {
469  ++numberOfDeadSCT;
470  }
471  // Dead sensors states are not stored
472  return;
473  } else if (boundaryCheck != Trk::BoundaryCheckResult::Candidate){
474  // States outside the sensor boundary are ignored
475  return;
476  }
477  typePattern.set(Trk::TrackStateOnSurface::Hole);
478  }
479  // The state was tagged as an outlier or was missed in the reverse filtering, use filtered parameters
480  else if (flag.test(Acts::TrackStateFlag::OutlierFlag) or not state.hasSmoothed()) {
481  ATH_MSG_VERBOSE("The state was tagged as an outlier or was missed in the reverse filtering, use filtered parameters");
482  const Acts::BoundTrackParameters actsParam(state.referenceSurface().getSharedPtr(),
483  state.filtered(),
484  state.filteredCovariance(),
485  acts_track.particleHypothesis());
486  parm = m_ATLASConverterTool->actsTrackParametersToTrkParameters(actsParam, tgContext);
487  typePattern.set(Trk::TrackStateOnSurface::Outlier);
488  }
489  // The state is a measurement state, use smoothed parameters
490  else{
491  ATH_MSG_VERBOSE("The state is a measurement state, use smoothed parameters");
492 
493  const Acts::BoundTrackParameters actsParam(state.referenceSurface().getSharedPtr(),
494  state.smoothed(),
495  state.smoothedCovariance(),
496  acts_track.particleHypothesis());
497 
498  actsSmoothedParam.push_back(std::make_unique<const Acts::BoundTrackParameters>(Acts::BoundTrackParameters(actsParam)));
499  parm = m_ATLASConverterTool->actsTrackParametersToTrkParameters(actsParam, tgContext);
500  typePattern.set(Trk::TrackStateOnSurface::Measurement);
501  }
502 
503  std::unique_ptr<Trk::MeasurementBase> measState;
504  if (state.hasUncalibratedSourceLink()){
505  auto sl = state.getUncalibratedSourceLink().template get<ATLASSourceLink>();
506  assert(sl);
507  measState = sl->uniqueClone();
508  }
509  double nDoF = state.calibratedSize();
510  auto quality =Trk::FitQualityOnSurface(state.chi2(), nDoF);
511  const Trk::TrackStateOnSurface *perState = new Trk::TrackStateOnSurface(quality, std::move(measState), std::move(parm), nullptr, typePattern);
512  // If a state was succesfully created add it to the trajectory
513  if (perState) {
514  ATH_MSG_VERBOSE("State succesfully creates, adding it to the trajectory");
515  finalTrajectory->insert(finalTrajectory->begin(), perState);
516  }
517  });
518 
519  // Convert the perigee state and add it to the trajectory
520  const Acts::BoundTrackParameters actsPer(acts_track.referenceSurface().getSharedPtr(),
521  acts_track.parameters(),
522  acts_track.covariance(),
523  acts_track.particleHypothesis());
524  std::unique_ptr<Trk::TrackParameters> per = m_ATLASConverterTool->actsTrackParametersToTrkParameters(actsPer, tgContext);
525  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
526  typePattern.set(Trk::TrackStateOnSurface::Perigee);
527  const Trk::TrackStateOnSurface *perState = new Trk::TrackStateOnSurface(nullptr, std::move(per), nullptr, typePattern);
528  if (perState) finalTrajectory->insert(finalTrajectory->begin(), perState);
529 
530  // Create the track using the states
532  newInfo.setTrackFitter(Trk::TrackInfo::TrackFitter::GaussianSumFilter); //Mark the fitter as GaussianSumFilter
533  newtrack = std::make_unique<Trk::Track>(newInfo, std::move(finalTrajectory), nullptr);
534  if (newtrack && !m_refitOnly) {
535  // Create the track summary and update the holes information
536  if (!newtrack->trackSummary()) {
537  newtrack->setTrackSummary(std::make_unique<Trk::TrackSummary>());
539  newtrack->trackSummary()->update(Trk::numberOfSCTHoles, 0);
540  newtrack->trackSummary()->update(Trk::numberOfTRTHoles, 0);
541  newtrack->trackSummary()->update(Trk::numberOfPixelDeadSensors, numberOfDeadPixel);
542  newtrack->trackSummary()->update(Trk::numberOfSCTDeadSensors, numberOfDeadSCT);
543  }
544  m_trkSummaryTool->updateTrackSummary(ctx, *newtrack, true);
545  }
546 
547  return newtrack;
548 }

◆ performDirectFit()

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::performDirectFit ( const EventContext &  ctx,
const Acts::GeometryContext &  tgContext,
const Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > &  gsfOptions,
const std::vector< Acts::SourceLink > &  trackSourceLinks,
const Acts::BoundTrackParameters &  initialParams,
const std::vector< const Acts::Surface * > &  surfaces 
) const
private

Definition at line 23 of file GaussianSumFitterToolDirectFit.cxx.

29 {
30  if (!m_useDirectNavigation) {
31  ATH_MSG_ERROR("ACTS GSF UseDirectNavigation is false, but direct navigation is used");
32  return nullptr;
33  }
34  if (trackSourceLinks.empty()) {
35  ATH_MSG_DEBUG("input contain measurement but no source link created, probable issue with the converter, reject fit ");
36  return nullptr;
37  }
38 
40  auto result = m_directFitter->fit(trackSourceLinks.begin(),
41  trackSourceLinks.end(),
42  initialParams,
43  gsfOptions,
44  surfaces,
45  tracks);
46 
47  // Convert
48  if (not result.ok()) return nullptr;
49  return makeTrack(ctx, tgContext, tracks, result);
50 }

◆ performFit()

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitterTool::performFit ( const EventContext &  ctx,
const Acts::GeometryContext &  tgContext,
const Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > &  gsfOptions,
const std::vector< Acts::SourceLink > &  trackSourceLinks,
const Acts::BoundTrackParameters &  initialParams 
) const
private

Definition at line 20 of file GaussianSumFitterToolFullFit.cxx.

25 {
27  ATH_MSG_ERROR("ACTS GSF UseDirectNavigation is true, but standard navigation is used");
28  return nullptr;
29  }
30  if (trackSourceLinks.empty()) {
31  ATH_MSG_DEBUG("input contain measurement but no source link created, probable issue with the converter, reject fit ");
32  return nullptr;
33  }
34 
36  // Perform the fit
37  auto result = m_fitter->fit(trackSourceLinks.begin(), trackSourceLinks.end(),
38  initialParams, gsfOptions, tracks);
39 
40  // Convert
41  if (not result.ok()) return nullptr;
42  return makeTrack(ctx, tgContext, tracks, result);
43 }

◆ prepareOptions()

Acts::GsfOptions< typename ActsTrk::MutableTrackStateBackend > ActsTrk::GaussianSumFitterTool::prepareOptions ( const Acts::GeometryContext &  tgContext,
const Acts::MagneticFieldContext &  mfContext,
const Acts::CalibrationContext &  calContext,
const Acts::PerigeeSurface &  surface 
) const
private

Definition at line 564 of file GaussianSumFitterTool.cxx.

568 {
569  Acts::PropagatorPlainOptions propagationOption(tgContext, mfContext);
570  propagationOption.maxSteps = m_option_maxPropagationStep;
571 
572  Acts::GsfOptions<typename ActsTrk::MutableTrackStateBackend> gsfOptions(tgContext, mfContext, calContext);
573  gsfOptions.extensions=m_gsfExtensions;
574  gsfOptions.propagatorPlainOptions=propagationOption;
575  gsfOptions.referenceSurface = &surface;
576 
577  // Set abortOnError to false, else the refitting crashes if no forward propagation is done. Here, we just skip the event and continue.
578  gsfOptions.abortOnError = false;
579  gsfOptions.maxComponents = m_maxComponents;
580  gsfOptions.weightCutoff = m_weightCutOff;
581  gsfOptions.componentMergeMethod = m_componentMergeMethod;
582 
583  return gsfOptions;
584 }

Member Data Documentation

◆ m_ATLASConverterTool

ToolHandle<ActsTrk::IActsToTrkConverterTool> ActsTrk::GaussianSumFitterTool::m_ATLASConverterTool {this, "ATLASConverterTool", ""}
private

Definition at line 138 of file GaussianSumFitterTool.h.

◆ m_boundaryCheckTool

ToolHandle<Trk::IBoundaryCheckTool> ActsTrk::GaussianSumFitterTool::m_boundaryCheckTool
private
Initial value:
{this,
"BoundaryCheckTool",
"",
"Boundary checking tool for detector sensitivities"}

Definition at line 140 of file GaussianSumFitterTool.h.

◆ m_calibrator

std::unique_ptr<ActsTrk::detail::TrkMeasurementCalibrator> ActsTrk::GaussianSumFitterTool::m_calibrator {nullptr}
private

Definition at line 173 of file GaussianSumFitterTool.h.

◆ m_componentMergeMethod

Acts::ComponentMergeMethod ActsTrk::GaussianSumFitterTool::m_componentMergeMethod
private

Definition at line 166 of file GaussianSumFitterTool.h.

◆ m_directFitter

std::unique_ptr<DirectFitter> ActsTrk::GaussianSumFitterTool::m_directFitter {nullptr}
private

Definition at line 179 of file GaussianSumFitterTool.h.

◆ m_extrapolationTool

ToolHandle<IActsExtrapolationTool> ActsTrk::GaussianSumFitterTool::m_extrapolationTool {this, "ExtrapolationTool", ""}
private

Definition at line 136 of file GaussianSumFitterTool.h.

◆ m_fitter

std::unique_ptr<Fitter> ActsTrk::GaussianSumFitterTool::m_fitter {nullptr}
private

Definition at line 174 of file GaussianSumFitterTool.h.

◆ m_gsfExtensions

Acts::GsfExtensions<ActsTrk::MutableTrackStateBackend> ActsTrk::GaussianSumFitterTool::m_gsfExtensions
private

Definition at line 183 of file GaussianSumFitterTool.h.

◆ m_logger

std::unique_ptr<const Acts::Logger> ActsTrk::GaussianSumFitterTool::m_logger {nullptr}
private

logging instance

Definition at line 188 of file GaussianSumFitterTool.h.

◆ m_maxComponents

Gaudi::Property< int > ActsTrk::GaussianSumFitterTool::m_maxComponents
private
Initial value:
{this, "MaxComponents", 12,
"Maximum number of components in GSF"}

Definition at line 151 of file GaussianSumFitterTool.h.

◆ m_option_componentMergeMethod

Gaudi::Property<std::string> ActsTrk::GaussianSumFitterTool::m_option_componentMergeMethod
private
Initial value:
{this, "ComponentMergeMethod", "eMaxWeight"
, "method to merge components {eMean, eMaxWeight}"}

Definition at line 163 of file GaussianSumFitterTool.h.

◆ m_option_maxPropagationStep

Gaudi::Property< int > ActsTrk::GaussianSumFitterTool::m_option_maxPropagationStep
private
Initial value:
{this, "MaxPropagationStep", 5000,
"Maximum number of steps for one propagate call"}

Definition at line 148 of file GaussianSumFitterTool.h.

◆ m_option_outlierChi2Cut

Gaudi::Property< double > ActsTrk::GaussianSumFitterTool::m_option_outlierChi2Cut
private
Initial value:
{this, "OutlierChi2Cut", 12.5,
"Chi2 cut used by the outlier finder" }

Definition at line 146 of file GaussianSumFitterTool.h.

◆ m_outlierFinder

ActsTrk::detail::FitterHelperFunctions::ATLASOutlierFinder ActsTrk::GaussianSumFitterTool::m_outlierFinder {0}
private

Definition at line 185 of file GaussianSumFitterTool.h.

◆ m_refitOnly

Gaudi::Property<bool> ActsTrk::GaussianSumFitterTool::m_refitOnly
private
Initial value:
{this, "RefitOnly", false,
"Do refit only. Track summary will not be added"}

Definition at line 157 of file GaussianSumFitterTool.h.

◆ m_surfaceAccessor

ATLASSourceLinkSurfaceAccessor ActsTrk::GaussianSumFitterTool::m_surfaceAccessor {}
private

Definition at line 182 of file GaussianSumFitterTool.h.

◆ m_trackingGeometryTool

ToolHandle<IActsTrackingGeometryTool> ActsTrk::GaussianSumFitterTool::m_trackingGeometryTool {this, "TrackingGeometryTool", ""}
private

Definition at line 137 of file GaussianSumFitterTool.h.

◆ m_trkSummaryTool

ToolHandle<Trk::IExtendedTrackSummaryTool> ActsTrk::GaussianSumFitterTool::m_trkSummaryTool {this, "SummaryTool", "", "ToolHandle for track summary tool"}
private

Definition at line 139 of file GaussianSumFitterTool.h.

◆ m_useDirectNavigation

Gaudi::Property<bool> ActsTrk::GaussianSumFitterTool::m_useDirectNavigation
private
Initial value:
{this, "UseDirectNavigation", false,
"GSF with direct navigation when refitting measurements"}

Definition at line 154 of file GaussianSumFitterTool.h.

◆ m_weightCutOff

Gaudi::Property< double > ActsTrk::GaussianSumFitterTool::m_weightCutOff
private
Initial value:
{this, "WeightCutOff", 1.e-4,
"component weight cut off"}

Definition at line 160 of file GaussianSumFitterTool.h.


The documentation for this class was generated from the following files:
Trk::noHypothesis
@ noHypothesis
Definition: ParticleHypothesis.h:37
Trk::TrackInfo
Contains information about the 'fitter' of this track.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:32
Trk::TrackStateOnSurface::Perigee
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
Definition: TrackStateOnSurface.h:117
get_generator_info.result
result
Definition: get_generator_info.py:21
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ActsTrk::GaussianSumFitterTool::prepareOptions
Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > prepareOptions(const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const Acts::PerigeeSurface &surface) const
Definition: GaussianSumFitterTool.cxx:564
ActsTrk::GaussianSumFitterTool::m_trkSummaryTool
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trkSummaryTool
Definition: GaussianSumFitterTool.h:139
ActsTrk::detail::Navigator
Acts::Navigator Navigator
Definition: Tracking/Acts/ActsTrackReconstruction/src/detail/Definitions.h:31
Trk::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of TRT hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:76
Trk::Track::info
const TrackInfo & info() const
Returns a const ref to info of a const tracks.
ActsTrk::GaussianSumFitterTool::m_trackingGeometryTool
ToolHandle< IActsTrackingGeometryTool > m_trackingGeometryTool
Definition: GaussianSumFitterTool.h:137
ActsTrk::GaussianSumFitterTool::m_componentMergeMethod
Acts::ComponentMergeMethod m_componentMergeMethod
Definition: GaussianSumFitterTool.h:166
ActsTrk::GaussianSumFitterTool::performFit
std::unique_ptr< Trk::Track > performFit(const EventContext &ctx, const Acts::GeometryContext &tgContext, const Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > &gsfOptions, const std::vector< Acts::SourceLink > &trackSourceLinks, const Acts::BoundTrackParameters &initialParams) const
Definition: GaussianSumFitterToolFullFit.cxx:20
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::numberOfSCTHoles
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:73
Trk::numberOfTRTHoles
@ numberOfTRTHoles
number of TRT hits which pass the high threshold (only xenon counted) total number of TRT hits which ...
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:83
Trk::TrackSummary::update
bool update(Trk::SummaryType type, int new_value)
Update unset summary information.
ActsTrk::GaussianSumFitterTool::m_logger
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Definition: GaussianSumFitterTool.h:188
makeActsAthenaLogger
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
Definition: Tracking/Acts/ActsInterop/src/Logger.cxx:64
Trk::FitQualityOnSurface
Definition: FitQualityOnSurface.h:19
ActsTrk::GaussianSumFitterTool::m_maxComponents
Gaudi::Property< int > m_maxComponents
Definition: GaussianSumFitterTool.h:151
ActsTrk::MutableMultiTrajectory
Athena implementation of ACTS::MultiTrajectory (ReadWrite version) The data is stored in 4 external b...
Definition: MultiTrajectory.h:81
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ActsTrk::GaussianSumFitterTool::performDirectFit
std::unique_ptr< Trk::Track > performDirectFit(const EventContext &ctx, const Acts::GeometryContext &tgContext, const Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > &gsfOptions, const std::vector< Acts::SourceLink > &trackSourceLinks, const Acts::BoundTrackParameters &initialParams, const std::vector< const Acts::Surface * > &surfaces) const
Definition: GaussianSumFitterToolDirectFit.cxx:23
ActsTrk::GaussianSumFitterTool::m_option_componentMergeMethod
Gaudi::Property< std::string > m_option_componentMergeMethod
Definition: GaussianSumFitterTool.h:163
ActsTrk::GaussianSumFitterTool::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: GaussianSumFitterTool.cxx:558
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ActsTrk::ATLASSourceLinkSurfaceAccessor::m_converterTool
const ActsTrk::IActsToTrkConverterTool * m_converterTool
Definition: ATLASSourceLinkSurfaceAccessor.h:21
xAOD::GaussianSumFilter
@ GaussianSumFilter
Tracks from Gaussian Sum Filter.
Definition: TrackingPrimitives.h:49
Trk::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of pixel hits with broad errors (width/sqrt(12))
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:65
master.flag
bool flag
Definition: master.py:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ActsTrk::GaussianSumFitterTool::m_option_maxPropagationStep
Gaudi::Property< int > m_option_maxPropagationStep
Definition: GaussianSumFitterTool.h:148
ActsTrk::GaussianSumFitterTool::m_outlierFinder
ActsTrk::detail::FitterHelperFunctions::ATLASOutlierFinder m_outlierFinder
Definition: GaussianSumFitterTool.h:185
ActsTrk::GaussianSumFitterTool::m_surfaceAccessor
ATLASSourceLinkSurfaceAccessor m_surfaceAccessor
Definition: GaussianSumFitterTool.h:182
ActsTrk::GaussianSumFitterTool::m_gsfExtensions
Acts::GsfExtensions< ActsTrk::MutableTrackStateBackend > m_gsfExtensions
Definition: GaussianSumFitterTool.h:183
ActsTrk::GaussianSumFitterTool::m_useDirectNavigation
Gaudi::Property< bool > m_useDirectNavigation
Definition: GaussianSumFitterTool.h:154
ActsTrk::GaussianSumFitterTool::m_refitOnly
Gaudi::Property< bool > m_refitOnly
Definition: GaussianSumFitterTool.h:157
ActsTrk::ATLASSourceLink
const Trk::MeasurementBase * ATLASSourceLink
Definition: ATLASSourceLink.h:23
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
Trk::Track::trackParameters
const DataVector< const TrackParameters > * trackParameters() const
Return a pointer to a vector of TrackParameters.
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:97
ActsTrk::GaussianSumFitterTool::m_calibrator
std::unique_ptr< ActsTrk::detail::TrkMeasurementCalibrator > m_calibrator
Definition: GaussianSumFitterTool.h:173
Trk::Track::perigeeParameters
const Perigee * perigeeParameters() const
return Perigee.
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:163
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
Trk::MeasurementBase::associatedSurface
virtual const Surface & associatedSurface() const =0
Interface method to get the associated Surface.
Trk::TrackInfo::dumpInfo
std::string dumpInfo() const
Returns a string with the name of the fitter of this track (i.e.
Definition: Tracking/TrkEvent/TrkTrack/src/TrackInfo.cxx:45
ActsTrk::GaussianSumFitterTool::fit
virtual std::unique_ptr< Trk::Track > fit(const EventContext &ctx, const Trk::Track &, const Trk::RunOutlierRemoval runOutlier=false, const Trk::ParticleHypothesis matEffects=Trk::nonInteracting) const override
refit a track
Definition: GaussianSumFitterTool.cxx:122
ActsTrk::GaussianSumFitterTool::m_weightCutOff
Gaudi::Property< double > m_weightCutOff
Definition: GaussianSumFitterTool.h:160
ActsTrk::GaussianSumFitterTool::m_directFitter
std::unique_ptr< DirectFitter > m_directFitter
Definition: GaussianSumFitterTool.h:179
Trk::Track::measurementsOnTrack
const DataVector< const MeasurementBase > * measurementsOnTrack() const
return a pointer to a vector of MeasurementBase (NOT including any that come from outliers).
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:178
Trk::Track::trackSummary
const Trk::TrackSummary * trackSummary() const
Returns a pointer to the const Trk::TrackSummary owned by this const track (could be nullptr)
ActsTrk::detail::FitterHelperFunctions::ATLASOutlierFinder::StateChiSquaredPerNumberDoFCut
double StateChiSquaredPerNumberDoFCut
Definition: FitterHelperFunctions.h:50
ActsTrk::GaussianSumFitterTool::m_ATLASConverterTool
ToolHandle< ActsTrk::IActsToTrkConverterTool > m_ATLASConverterTool
Definition: GaussianSumFitterTool.h:138
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
Trk::Track::setTrackSummary
void setTrackSummary(std::unique_ptr< Trk::TrackSummary > input)
Set the track summary.
ActsTrk::GaussianSumFitterTool::m_fitter
std::unique_ptr< Fitter > m_fitter
Definition: GaussianSumFitterTool.h:174
ActsTrk::GaussianSumFitterTool::m_extrapolationTool
ToolHandle< IActsExtrapolationTool > m_extrapolationTool
Definition: GaussianSumFitterTool.h:136
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
ActsTrk::GaussianSumFitterTool::m_option_outlierChi2Cut
Gaudi::Property< double > m_option_outlierChi2Cut
Definition: GaussianSumFitterTool.h:146
ActsTrk::GaussianSumFitterTool::makeTrack
std::unique_ptr< Trk::Track > makeTrack(const EventContext &ctx, const Acts::GeometryContext &tgContext, ActsTrk::MutableTrackContainer &tracks, Acts::Result< typename ActsTrk::MutableTrackContainer::TrackProxy, std::error_code > &fitResult) const
Definition: GaussianSumFitterTool.cxx:398
ActsTrk::MutableTrackContainer
Definition: TrackContainer.h:122