diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/ForwardGsfFitter.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/ForwardGsfFitter.h deleted file mode 100644 index 22fb3e8505161c56bea1c1837d7b6adab1383af2..0000000000000000000000000000000000000000 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/ForwardGsfFitter.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -/** - * @file ForwardGsfFitter.h - * @date Wednesday 9th March 2005 - * @author Tom Athkinson, Anthony Morley, Christos Anastopoulos - * @brief Class definition for the forward GSF fitter - */ - -#ifndef TrkForwardGsfFitter_H -#define TrkForwardGsfFitter_H -#include "TrkEventPrimitives/ParticleHypothesis.h" -#include "TrkFitterUtils/FitterTypes.h" -#include "TrkGaussianSumFilter/GsfMeasurementUpdator.h" -#include "TrkGaussianSumFilter/IForwardGsfFitter.h" -#include "TrkGaussianSumFilter/IMultiStateExtrapolator.h" -#include "TrkMultiComponentStateOnSurface/MultiComponentState.h" -#include "TrkParameters/TrackParameters.h" - -#include "AthenaBaseComps/AthAlgTool.h" -#include "GaudiKernel/ToolHandle.h" - -namespace Trk { - -class IMultiStateMeasurementUpdator; -class IRIO_OnTrackCreator; -class Surface; - -class ForwardGsfFitter - : public AthAlgTool - , virtual public IForwardGsfFitter -{ - -public: - /** Constructor with AlgTool parameters */ - ForwardGsfFitter(const std::string&, const std::string&, const IInterface*); - - /** Virtual destructor */ - virtual ~ForwardGsfFitter() = default; - - /** AlgTool initialise method */ - virtual StatusCode initialize() override final; - - /** AlgTool finalise method */ - virtual StatusCode finalize() override final; - - /** Configure the forward GSF fitter - - Configure the extrapolator - - Configure the measurement updator - - Configure the RIO_OnTrack creator */ - virtual StatusCode configureTools( - const ToolHandle<Trk::IMultiStateExtrapolator>& extrapolator, - const ToolHandle<Trk::IRIO_OnTrackCreator>& rioOnTrackCreator) - override final; - - /** Forward GSF fit using PrepRawData */ - virtual std::unique_ptr<ForwardTrajectory> fitPRD( - const EventContext& ctx, - IMultiStateExtrapolator::Cache&, - const PrepRawDataSet&, - const TrackParameters&, - const ParticleHypothesis particleHypothesis = - nonInteracting) const override final; - - /** Forward GSF fit using MeasurementSet */ - virtual std::unique_ptr<ForwardTrajectory> fitMeasurements( - const EventContext& ctx, - IMultiStateExtrapolator::Cache&, - const MeasurementSet&, - const TrackParameters&, - const ParticleHypothesis particleHypothesis = - nonInteracting) const override final; - - /** The interface will later be extended so that the initial - * state can be additionally a MultiComponentState object! */ - -private: - /** Progress one step along the fit */ - bool stepForwardFit( - const EventContext& ctx, - IMultiStateExtrapolator::Cache&, - ForwardTrajectory*, - const PrepRawData*, - const MeasurementBase*, - const Surface&, - MultiComponentState&, - const ParticleHypothesis particleHypothesis = nonInteracting) const; - -private: - /**These are passed via the configure tools so not retrieved from this tool*/ - ToolHandle<IMultiStateExtrapolator> m_extrapolator; - ToolHandle<IRIO_OnTrackCreator> m_rioOnTrackCreator; - GsfMeasurementUpdator m_updator; - double m_cutChiSquaredPerNumberDOF; - int m_overideMaterialEffects; - ParticleHypothesis m_overideParticleHypothesis; - bool m_overideMaterialEffectsSwitch; -}; - -} // end Trk namespace - -#endif diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h index 5eaaa6eaa60d5c38084783c5f44ab82caeea4300..5977c8d574e475bd9fdccc07349134ae86dbde72 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h @@ -12,8 +12,10 @@ #include "TrkEventPrimitives/PropDirection.h" #include "TrkEventUtils/TrkParametersComparisonFunction.h" #include "TrkFitterInterfaces/ITrackFitter.h" +#include "TrkGaussianSumFilter/IGsfSmoother.h" #include "TrkFitterUtils/FitterTypes.h" #include "TrkFitterUtils/TrackFitInputPreparator.h" +#include "TrkGaussianSumFilter/GsfMeasurementUpdator.h" #include "TrkGaussianSumFilter/IMultiStateExtrapolator.h" #include "TrkParameters/TrackParameters.h" #include "TrkToolInterfaces/IRIO_OnTrackCreator.h" @@ -26,8 +28,6 @@ namespace Trk { class IMultiStateMeasurementUpdator; class MultiComponentStateOnSurface; -class IForwardGsfFitter; -class IGsfSmoother; class FitQuality; class Track; @@ -118,6 +118,33 @@ private: //* Calculate the fit quality */ const Trk::FitQuality* buildFitQuality(const Trk::SmoothedTrajectory&) const; + /** Forward GSF fit using PrepRawData */ + std::unique_ptr<ForwardTrajectory> fitPRD( + const EventContext& ctx, + IMultiStateExtrapolator::Cache&, + const PrepRawDataSet&, + const TrackParameters&, + const ParticleHypothesis particleHypothesis = nonInteracting) const; + + /** Forward GSF fit using MeasurementSet */ + std::unique_ptr<ForwardTrajectory> fitMeasurements( + const EventContext& ctx, + IMultiStateExtrapolator::Cache&, + const MeasurementSet&, + const TrackParameters&, + const ParticleHypothesis particleHypothesis = nonInteracting) const; + + /** Progress one step along the fit */ + bool stepForwardFit( + const EventContext& ctx, + IMultiStateExtrapolator::Cache&, + ForwardTrajectory*, + const PrepRawData*, + const MeasurementBase*, + const Surface&, + MultiComponentState&, + const ParticleHypothesis particleHypothesis = nonInteracting) const; + private: ToolHandle<IMultiStateExtrapolator> m_extrapolator{ this, @@ -131,12 +158,7 @@ private: "Trk::RioOnTrackCreator/RIO_OnTrackCreator", "" }; - ToolHandle<IForwardGsfFitter> m_forwardGsfFitter{ - this, - "ForwardGsfFitter", - "Trk::ForwardGsfFitter/ForwardGsfFitter", - "" - }; + ToolHandle<IGsfSmoother> m_gsfSmoother{ this, "GsfSmoother", "Trk::GsfSmoother/GsfSmoother", @@ -173,9 +195,19 @@ private: PropDirection m_directionToPerigee; std::unique_ptr<TrkParametersComparisonFunction> m_trkParametersComparisonFunction; + std::unique_ptr<TrackFitInputPreparator> m_inputPreparator; std::vector<double> m_sortingReferencePoint; + // Measurement updator + GsfMeasurementUpdator m_updator; + + // For the forward fit part + double m_cutChiSquaredPerNumberDOF; + int m_overideMaterialEffects; + ParticleHypothesis m_overideParticleHypothesis; + bool m_overideMaterialEffectsSwitch; + // Number of Fit PrepRawData Calls mutable std::atomic<int> m_FitPRD; // Number of Fit MeasurementBase Calls diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/IForwardGsfFitter.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/IForwardGsfFitter.h deleted file mode 100644 index 7d149e85b3e99c13ef72548aa88963623a630ac6..0000000000000000000000000000000000000000 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/IForwardGsfFitter.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - - -/** - * @file IForwardGsfFitter.h - * @date Thursday 8th January 2009 - * @author Anthony Morley, Christos Anastopoulos - * @brief Abstract interface for the forward GSF fitter - */ - -#ifndef TrkIForwardGsfFitter_H -#define TrkIForwardGsfFitter_H - -#include "GaudiKernel/IAlgTool.h" -#include "GaudiKernel/ToolHandle.h" -#include "TrkEventPrimitives/ParticleHypothesis.h" -#include "TrkFitterUtils/FitterTypes.h" -#include "TrkMultiComponentStateOnSurface/MultiComponentState.h" -#include "TrkGaussianSumFilter/IMultiStateExtrapolator.h" -#include "TrkParameters/TrackParameters.h" -#include "GaudiKernel/EventContext.h" - -#include <memory> -namespace Trk { - -class IMultiStateMeasurementUpdator; -class IRIO_OnTrackCreator; -class Surface; - -static const InterfaceID InterfaceID_ForwardGsfFitter("ForwardGsfFitter", 1, 0); - -class IForwardGsfFitter : virtual public IAlgTool -{ - -public: - /** AlgTool interface method */ - static const InterfaceID& interfaceID() - { - return InterfaceID_ForwardGsfFitter; - }; - - /** Virtual destructor */ - virtual ~IForwardGsfFitter() = default; - - /** Configure the forward GSF fitter - - Configure the extrapolator - - Configure the measurement updator - - Configure the RIO_OnTrack creator */ - virtual StatusCode configureTools( - const ToolHandle<Trk::IMultiStateExtrapolator>&, - const ToolHandle<Trk::IRIO_OnTrackCreator>&) = 0; - - /** Forward GSF fit using PrepRawData */ - virtual std::unique_ptr<ForwardTrajectory> fitPRD( - const EventContext& ctx, - Trk::IMultiStateExtrapolator::Cache&, - const PrepRawDataSet&, - const TrackParameters&, - const ParticleHypothesis particleHypothesis = nonInteracting) const = 0; - - /** Forward GSF fit using MeasurementSet */ - virtual std::unique_ptr<ForwardTrajectory> fitMeasurements( - const EventContext& ctx, - Trk::IMultiStateExtrapolator::Cache&, - const MeasurementSet&, - const TrackParameters&, - const ParticleHypothesis particleHypothesis = nonInteracting) const = 0; - - /** The interface will later be extended so that the initial state can be - * additionally a MultiComponentState object! - */ -}; - -} // end Trk namespace - -#endif diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/ForwardGsfFitter.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/ForwardGsfFitter.cxx index dcb47757ab3e85309bd33654018cc3d7247f70f0..2bacabf144e753ffa886227f29884155bffb432b 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/ForwardGsfFitter.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/ForwardGsfFitter.cxx @@ -6,15 +6,13 @@ * @file ForwardGsfFitter.cxx * @date Wednesday 9th March 2005 * @author Tom Athkinson, Anthony Morley, Christos Anastopoulos - * @brief Implementation code for ForwardGsfFitter class + * @brief Implementation code for the Forward GsfFitter part */ -#include "TrkGaussianSumFilter/ForwardGsfFitter.h" +#include "TrkGaussianSumFilter/GaussianSumFitter.h" #include "TrkMultiComponentStateOnSurface/MultiComponentStateOnSurface.h" - #include "TrkGaussianSumFilter/IMultiStateExtrapolator.h" #include "TrkGaussianSumFilter/MultiComponentStateCombiner.h" - #include "TrkDetElementBase/TrkDetElementBase.h" #include "TrkEventPrimitives/FitQuality.h" #include "TrkMeasurementBase/MeasurementBase.h" @@ -23,70 +21,11 @@ #include "TrkSurfaces/Surface.h" #include "TrkToolInterfaces/IRIO_OnTrackCreator.h" -Trk::ForwardGsfFitter::ForwardGsfFitter(const std::string& type, - const std::string& name, - const IInterface* parent) - : AthAlgTool(type, name, parent) - , m_updator{} - , m_cutChiSquaredPerNumberDOF(50.) - , m_overideMaterialEffects(4) - , m_overideParticleHypothesis(nonInteracting) - , m_overideMaterialEffectsSwitch(false) -{ - - declareInterface<IForwardGsfFitter>(this); - declareProperty("StateChi2PerNDOFCut", m_cutChiSquaredPerNumberDOF); - declareProperty("OverideForwardsMaterialEffects", - m_overideMaterialEffectsSwitch); - declareProperty("MaterialEffectsInForwardFitter", m_overideMaterialEffects); -} - -StatusCode -Trk::ForwardGsfFitter::initialize() -{ - - ATH_MSG_DEBUG("A cut on Chi2 / NDOF: " << m_cutChiSquaredPerNumberDOF - << " will be applied"); - Trk::ParticleSwitcher particleSwitcher; - m_overideParticleHypothesis = - particleSwitcher.particle[m_overideMaterialEffects]; - if (m_overideMaterialEffectsSwitch) { - ATH_MSG_INFO("Material effects in forwards fitter have been overiden by " - "jobOptions... New " - "Trk::ParticleHypothesis: " - << m_overideMaterialEffects); - } - - ATH_MSG_INFO("Initialisation of " << name() << " was successful"); - - return StatusCode::SUCCESS; -} - -StatusCode -Trk::ForwardGsfFitter::finalize() -{ - ATH_MSG_INFO("Finalisation of " << name() << " was successful"); - return StatusCode::SUCCESS; -} - -StatusCode -Trk::ForwardGsfFitter::configureTools( - const ToolHandle<IMultiStateExtrapolator>& extrapolator, - const ToolHandle<IRIO_OnTrackCreator>& rioOnTrackCreator) -{ - m_extrapolator = extrapolator; - m_rioOnTrackCreator = rioOnTrackCreator; - ATH_MSG_INFO("Configuration of " << name() << " was successful"); - - return StatusCode::SUCCESS; -} - /* * Forwards fit on a set of PrepRawData */ - std::unique_ptr<Trk::ForwardTrajectory> -Trk::ForwardGsfFitter::fitPRD( +Trk::GaussianSumFitter::fitPRD( const EventContext& ctx, Trk::IMultiStateExtrapolator::Cache& extrapolatorCache, const Trk::PrepRawDataSet& inputPrepRawDataSet, @@ -167,7 +106,7 @@ Trk::ForwardGsfFitter::fitPRD( * Forwards fit on a set of Measurements */ std::unique_ptr<Trk::ForwardTrajectory> -Trk::ForwardGsfFitter::fitMeasurements( +Trk::GaussianSumFitter::fitMeasurements( const EventContext& ctx, Trk::IMultiStateExtrapolator::Cache& extrapolatorCache, const Trk::MeasurementSet& inputMeasurementSet, @@ -242,7 +181,7 @@ Trk::ForwardGsfFitter::fitMeasurements( * StepForwardFit() private method */ bool -Trk::ForwardGsfFitter::stepForwardFit( +Trk::GaussianSumFitter::stepForwardFit( const EventContext& ctx, Trk::IMultiStateExtrapolator::Cache& extrapolatorCache, ForwardTrajectory* forwardTrajectory, diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx index 3a8d3e982c2deaa87acfef457a2494a7568301f0..af90bcceed3a9a11ed8fc012cb64657c148e50da 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx @@ -10,8 +10,6 @@ */ #include "TrkGaussianSumFilter/GaussianSumFitter.h" -#include "TrkGaussianSumFilter/IForwardGsfFitter.h" -#include "TrkGaussianSumFilter/IGsfSmoother.h" #include "TrkGaussianSumFilter/IMultiStateExtrapolator.h" #include "TrkGaussianSumFilter/MultiComponentStateCombiner.h" @@ -43,6 +41,11 @@ Trk::GaussianSumFitter::GaussianSumFitter(const std::string& type, , m_directionToPerigee(Trk::oppositeMomentum) , m_trkParametersComparisonFunction(nullptr) , m_inputPreparator(nullptr) + , m_updator{} + , m_cutChiSquaredPerNumberDOF(50.) + , m_overideMaterialEffects(4) + , m_overideParticleHypothesis(nonInteracting) + , m_overideMaterialEffectsSwitch(false) , m_FitPRD{ 0 } , m_FitMeasurementBase{ 0 } , m_ForwardFailure{ 0 } @@ -53,6 +56,11 @@ Trk::GaussianSumFitter::GaussianSumFitter(const std::string& type, { declareInterface<ITrackFitter>(this); declareProperty("SortingReferencePoint", m_sortingReferencePoint); + declareProperty("StateChi2PerNDOFCut", m_cutChiSquaredPerNumberDOF); + declareProperty("OverideForwardsMaterialEffects", + m_overideMaterialEffectsSwitch); + declareProperty("MaterialEffectsInForwardFitter", m_overideMaterialEffects); + // Estrablish reference point as origin m_sortingReferencePoint.push_back(0.); m_sortingReferencePoint.push_back(0.); @@ -64,14 +72,8 @@ Trk::GaussianSumFitter::initialize() { StatusCode sc; - - // Request the GSF forward fitter - hardwired type and instanace name for the - // GSF - ATH_CHECK(m_forwardGsfFitter.retrieve()); - // Request the GSF smoother - hardwired type and instance name for the GSF ATH_CHECK(m_gsfSmoother.retrieve()); - // Request the GSF extrapolator ATH_CHECK(m_extrapolator.retrieve()); @@ -98,11 +100,14 @@ Trk::GaussianSumFitter::initialize() m_trkParametersComparisonFunction = std::make_unique<Trk::TrkParametersComparisonFunction>(referencePosition); - // Configure forward fitter - sc = m_forwardGsfFitter->configureTools(m_extrapolator, m_rioOnTrackCreator); - if (sc.isFailure()) { - ATH_MSG_FATAL("Could not configure the forwards GSF fitter... Exiting!"); - return StatusCode::FAILURE; + Trk::ParticleSwitcher particleSwitcher; + m_overideParticleHypothesis = + particleSwitcher.particle[m_overideMaterialEffects]; + if (m_overideMaterialEffectsSwitch) { + ATH_MSG_INFO("Material effects in forwards fitter have been overiden by " + "jobOptions... New " + "Trk::ParticleHypothesis: " + << m_overideMaterialEffects); } // Configure smoother @@ -112,18 +117,8 @@ Trk::GaussianSumFitter::initialize() return StatusCode::FAILURE; } - // GSF Statistics Setup; - m_FitPRD = 0; // Number of Fit PrepRawData Calls - m_FitMeasurementBase = 0; // Number of Fit MeasurementBase Calls - m_ForwardFailure = 0; // Number of Foward Fit Failures: - m_SmootherFailure = 0; // Number of Smoother Failures: - m_PerigeeFailure = 0; // Number of MakePerigee Failures: - m_fitQualityFailure = 0; - m_inputPreparator = std::make_unique<TrackFitInputPreparator>(); - ATH_MSG_INFO("Initialisation of " << name() << " was successful"); - return StatusCode::SUCCESS; } @@ -306,14 +301,12 @@ Trk::GaussianSumFitter::fit( Trk::IMultiStateExtrapolator::Cache extrapolatorCache; // Perform GSF forwards fit - ForwardTrajectory* forwardTrajectory = - m_forwardGsfFitter - ->fitPRD(ctx, - extrapolatorCache, - sortedPrepRawDataSet, - estimatedParametersNearOrigin, - particleHypothesis) - .release(); + ForwardTrajectory* forwardTrajectory = fitPRD(ctx, + extrapolatorCache, + sortedPrepRawDataSet, + estimatedParametersNearOrigin, + particleHypothesis) + .release(); if (!forwardTrajectory) { ATH_MSG_DEBUG("Forward GSF fit failed... Exiting!"); @@ -467,12 +460,11 @@ Trk::GaussianSumFitter::fit( // Perform GSF forwards fit - new memory allocated in forwards fitter ForwardTrajectory* forwardTrajectory = - m_forwardGsfFitter - ->fitMeasurements(ctx, - extrapolatorCache, - sortedMeasurementSet, - estimatedParametersNearOrigin, - particleHypothesis) + fitMeasurements(ctx, + extrapolatorCache, + sortedMeasurementSet, + estimatedParametersNearOrigin, + particleHypothesis) .release(); if (!forwardTrajectory) { diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/components/TrkGaussianSumFilter_entries.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/components/TrkGaussianSumFilter_entries.cxx index ce335d74f2fea158dd3dc65b0ddb102228a28901..8c2bcfbaffb153a634b585bfd5d2ffe1470036b7 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/components/TrkGaussianSumFilter_entries.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/components/TrkGaussianSumFilter_entries.cxx @@ -3,7 +3,6 @@ #include "TrkGaussianSumFilter/GsfMaterialEffectsUpdator.h" #include "TrkGaussianSumFilter/GsfBetheHeitlerEffects.h" #include "TrkGaussianSumFilter/GaussianSumFitter.h" -#include "TrkGaussianSumFilter/ForwardGsfFitter.h" #include "TrkGaussianSumFilter/GsfExtrapolator.h" #include "TrkGaussianSumFilter/GsfSmoother.h" @@ -12,6 +11,5 @@ DECLARE_COMPONENT( Trk::GsfCombinedMaterialEffects ) DECLARE_COMPONENT( Trk::GsfMaterialEffectsUpdator ) DECLARE_COMPONENT( Trk::GsfBetheHeitlerEffects ) DECLARE_COMPONENT( Trk::GaussianSumFitter ) -DECLARE_COMPONENT( Trk::ForwardGsfFitter ) DECLARE_COMPONENT( Trk::GsfExtrapolator ) DECLARE_COMPONENT( Trk::GsfSmoother )