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

#include <GaussianSumFitter.h>

Inheritance diagram for ActsTrk::GaussianSumFitter:
Collaboration diagram for ActsTrk::GaussianSumFitter:

Public Member Functions

 GaussianSumFitter (const std::string &, const std::string &, const IInterface *)
 
virtual ~GaussianSumFitter ()=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< TrkMeasurementCalibratorm_calibrator
 
std::unique_ptr< Fitterm_fitter
 
std::unique_ptr< DirectFitterm_directFitter
 
ATLASSourceLinkSurfaceAccessor m_surfaceAccessor {}
 
Acts::GsfExtensions< ActsTrk::MutableTrackStateBackendm_gsfExtensions
 
ActsTrk::FitterHelperFunctions::ATLASOutlierFinder m_outlierFinder {0}
 
std::unique_ptr< const Acts::Logger > m_logger
 logging instance More...
 

Detailed Description

Definition at line 44 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

Member Typedef Documentation

◆ DirectFitter

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

◆ Fitter

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

Type erased track fitter function.

Definition at line 168 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

Constructor & Destructor Documentation

◆ GaussianSumFitter()

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

Definition at line 47 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

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

◆ ~GaussianSumFitter()

virtual ActsTrk::GaussianSumFitter::~GaussianSumFitter ( )
virtualdefault

Member Function Documentation

◆ fit() [1/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 173 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

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

◆ fit() [2/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 244 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

249 {
250  ATH_MSG_DEBUG("Fit of PrepRawDataSet not yet implemented");
251  return nullptr;
252 }

◆ fit() [3/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 259 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

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

◆ fit() [4/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 320 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

325 {
326 
327  ATH_MSG_DEBUG("Fit of Track with additional PrepRawDataSet not yet implemented");
328  return nullptr;
329 }

◆ fit() [5/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 117 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

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

◆ fit() [6/6]

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 334 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

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

◆ getExtensions()

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

Definition at line 545 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

546 {
547  return m_gsfExtensions;
548 }

◆ initialize()

StatusCode ActsTrk::GaussianSumFitter::initialize ( )
overridevirtual

Definition at line 53 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.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::FitterHelperFunctions::gainMatrixUpdate<ActsTrk::MutableTrackStateBackend>>();
93  m_calibrator = std::make_unique<TrkMeasurementCalibrator>(*m_ATLASConverterTool);
94  m_gsfExtensions.calibrator.connect<&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::FitterHelperFunctions::ATLASOutlierFinder::operator()<ActsTrk::MutableTrackStateBackend>>(&m_outlierFinder);
102  if(m_option_componentMergeMethod == "eMean")
103  m_componentMergeMethod = Acts::ComponentMergeMethod::eMean;
104  else if(m_option_componentMergeMethod == "eMaxWeight"){
105  m_componentMergeMethod = Acts::ComponentMergeMethod::eMaxWeight;
106  }else{
107  ATH_MSG_ERROR("Unknown option for ComponentMergeMethod: " << m_option_componentMergeMethod );
108  }
109 
111  return StatusCode::SUCCESS;
112 }

◆ logger()

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

Private access to the logger.

Definition at line 552 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

553 {
554  return *m_logger;
555 }

◆ makeTrack()

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 393 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

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

◆ performDirectFit()

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 605 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

611 {
612  if (trackSourceLinks.empty()) {
613  ATH_MSG_DEBUG("input contain measurement but no source link created, probable issue with the converter, reject fit ");
614  return nullptr;
615  }
616 
618  auto result = m_directFitter->fit(trackSourceLinks.begin(),
619  trackSourceLinks.end(),
620  initialParams,
621  gsfOptions,
622  surfaces,
623  tracks);
624 
625  // Convert
626  if (not result.ok()) return nullptr;
627  return makeTrack(ctx, tgContext, tracks, result);
628 }

◆ performFit()

std::unique_ptr< Trk::Track > ActsTrk::GaussianSumFitter::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 579 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

584 {
586  ATH_MSG_ERROR("ACTS GSF UseDirectNavigation is true, but standard navigation is used");
587  }
588  if (trackSourceLinks.empty()) {
589  ATH_MSG_DEBUG("input contain measurement but no source link created, probable issue with the converter, reject fit ");
590  return nullptr;
591  }
592 
594  // Perform the fit
595  auto result = m_fitter->fit(trackSourceLinks.begin(), trackSourceLinks.end(),
596  initialParams, gsfOptions, tracks);
597 
598  // Convert
599  if (not result.ok()) return nullptr;
600  return makeTrack(ctx, tgContext, tracks, result);
601 }

◆ prepareOptions()

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

Definition at line 558 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx.

562 {
563  Acts::PropagatorPlainOptions propagationOption;
564  propagationOption.maxSteps = m_option_maxPropagationStep;
565 
566  Acts::GsfOptions<typename ActsTrk::MutableTrackStateBackend> gsfOptions{tgContext, mfContext, calContext, m_gsfExtensions, std::move(propagationOption)};
567  gsfOptions.referenceSurface = &surface;
568 
569  // Set abortOnError to false, else the refitting crashes if no forward propagation is done. Here, we just skip the event and continue.
570  gsfOptions.abortOnError = false;
571  gsfOptions.maxComponents = m_maxComponents;
572  gsfOptions.weightCutoff = m_weightCutOff;
573  gsfOptions.componentMergeMethod = m_componentMergeMethod;
574 
575  return gsfOptions;
576 }

Member Data Documentation

◆ m_ATLASConverterTool

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

◆ m_boundaryCheckTool

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

Definition at line 139 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

◆ m_calibrator

std::unique_ptr<TrkMeasurementCalibrator> ActsTrk::GaussianSumFitter::m_calibrator
private

◆ m_componentMergeMethod

Acts::ComponentMergeMethod ActsTrk::GaussianSumFitter::m_componentMergeMethod
private

◆ m_directFitter

std::unique_ptr<DirectFitter> ActsTrk::GaussianSumFitter::m_directFitter
private

◆ m_extrapolationTool

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

◆ m_fitter

std::unique_ptr<Fitter> ActsTrk::GaussianSumFitter::m_fitter
private

◆ m_gsfExtensions

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

◆ m_logger

std::unique_ptr<const Acts::Logger> ActsTrk::GaussianSumFitter::m_logger
private

logging instance

Definition at line 187 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

◆ m_maxComponents

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

Definition at line 150 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

◆ m_option_componentMergeMethod

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

Definition at line 162 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

◆ m_option_maxPropagationStep

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

Definition at line 147 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

◆ m_option_outlierChi2Cut

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

Definition at line 145 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

◆ m_outlierFinder

ActsTrk::FitterHelperFunctions::ATLASOutlierFinder ActsTrk::GaussianSumFitter::m_outlierFinder {0}
private

◆ m_refitOnly

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

Definition at line 156 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

◆ m_surfaceAccessor

ATLASSourceLinkSurfaceAccessor ActsTrk::GaussianSumFitter::m_surfaceAccessor {}
private

◆ m_trackingGeometryTool

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

◆ m_trkSummaryTool

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

◆ m_useDirectNavigation

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

Definition at line 153 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.

◆ m_weightCutOff

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

Definition at line 159 of file Acts/ActsTrackReconstruction/src/GaussianSumFitter.h.


The documentation for this class was generated from the following files:
Trk::noHypothesis
@ noHypothesis
Definition: ParticleHypothesis.h:37
ActsTrk::GaussianSumFitter::m_calibrator
std::unique_ptr< TrkMeasurementCalibrator > m_calibrator
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:172
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
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ActsTrk::GaussianSumFitter::m_surfaceAccessor
ATLASSourceLinkSurfaceAccessor m_surfaceAccessor
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:181
ActsTrk::GaussianSumFitter::m_logger
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:187
ActsTrk::GaussianSumFitter::m_trkSummaryTool
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trkSummaryTool
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:138
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::GaussianSumFitter::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: Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx:579
ActsTrk::GaussianSumFitter::m_option_maxPropagationStep
Gaudi::Property< int > m_option_maxPropagationStep
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:147
ActsTrk::GaussianSumFitter::m_trackingGeometryTool
ToolHandle< IActsTrackingGeometryTool > m_trackingGeometryTool
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:136
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::GaussianSumFitter::prepareOptions
Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > prepareOptions(const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const Acts::PerigeeSurface &surface) const
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx:558
ActsTrk::GaussianSumFitter::m_componentMergeMethod
Acts::ComponentMergeMethod m_componentMergeMethod
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:165
ActsTrk::FitterHelperFunctions::ATLASOutlierFinder::StateChiSquaredPerNumberDoFCut
double StateChiSquaredPerNumberDoFCut
Definition: FitterHelperFunctions.h:40
Rec::nDoF
double nDoF(const Trk::Track &track)
Definition: OutwardsCombinedMuonTrackBuilder.cxx:31
ActsTrk::GaussianSumFitter::m_weightCutOff
Gaudi::Property< double > m_weightCutOff
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:159
ActsTrk::GaussianSumFitter::m_option_outlierChi2Cut
Gaudi::Property< double > m_option_outlierChi2Cut
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:145
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::MutableMultiTrajectory
Athena implementation of ACTS::MultiTrajectory (ReadWrite version) The data is stored in 4 external b...
Definition: MultiTrajectory.h:81
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ActsTrk::GaussianSumFitter::m_maxComponents
Gaudi::Property< int > m_maxComponents
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:150
ActsTrk::GaussianSumFitter::m_useDirectNavigation
Gaudi::Property< bool > m_useDirectNavigation
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:153
ActsTrk::GaussianSumFitter::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: Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx:605
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:19
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
ActsTrk::GaussianSumFitter::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: Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx:393
master.flag
bool flag
Definition: master.py:29
ActsTrk::GaussianSumFitter::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx:552
ActsTrk::GaussianSumFitter::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: Acts/ActsTrackReconstruction/src/GaussianSumFitter.cxx:117
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ActsTrk::GaussianSumFitter::m_gsfExtensions
Acts::GsfExtensions< ActsTrk::MutableTrackStateBackend > m_gsfExtensions
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:182
ActsTrk::ATLASSourceLink
const Trk::MeasurementBase * ATLASSourceLink
Definition: ATLASSourceLink.h:24
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
ActsTrk::GaussianSumFitter::m_ATLASConverterTool
ToolHandle< ActsTrk::IActsToTrkConverterTool > m_ATLASConverterTool
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:137
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
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:195
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
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
ActsTrk::GaussianSumFitter::m_fitter
std::unique_ptr< Fitter > m_fitter
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:173
ActsTrk::GaussianSumFitter::m_option_componentMergeMethod
Gaudi::Property< std::string > m_option_componentMergeMethod
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:162
Trk::Track::trackSummary
const Trk::TrackSummary * trackSummary() const
Returns a pointer to the const Trk::TrackSummary owned by this const track (could be nullptr)
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
Trk::Track::setTrackSummary
void setTrackSummary(std::unique_ptr< Trk::TrackSummary > input)
Set the track summary.
ActsTrk::GaussianSumFitter::m_extrapolationTool
ToolHandle< IActsExtrapolationTool > m_extrapolationTool
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:135
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
ActsTrk::GaussianSumFitter::m_refitOnly
Gaudi::Property< bool > m_refitOnly
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:156
ActsTrk::GaussianSumFitter::m_directFitter
std::unique_ptr< DirectFitter > m_directFitter
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:178
ActsTrk::MutableTrackContainer
Definition: TrackContainer.h:122
ActsTrk::GaussianSumFitter::m_outlierFinder
ActsTrk::FitterHelperFunctions::ATLASOutlierFinder m_outlierFinder
Definition: Acts/ActsTrackReconstruction/src/GaussianSumFitter.h:184