ATLAS Offline Software
DenseEnvironmentsAmbiguityProcessorTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef DenseEnvironmentsAmbiguityProcessorTool_H
6 #define DenseEnvironmentsAmbiguityProcessorTool_H
7 
13 
16 
17 //need to include the following, since its a typedef and can't be forward declared.
19 #include "TrkTrack/TrackSeedMap.h"
21 //
22 #include "AmbiCounter.h"
23 //
24 #include <map>
25 #include <vector>
26 
27 
28 
29 
30 namespace Trk {
31  class ITruthToTrack;
32  //
34  public:
35  // default methods
36  DenseEnvironmentsAmbiguityProcessorTool(const std::string&,const std::string&,const IInterface*);
38  virtual StatusCode initialize() override;
39  virtual StatusCode finalize () override;
40  void dumpStat(MsgStream &out) const;
41 
42 
49  virtual const TrackCollection* process(const TracksScores *trackScoreTrackMap) const override;
50 
51  virtual const TrackCollection* process(const TrackCollection*,Trk::PRDtoTrackMap *) const override {return nullptr;};
52 
54  virtual void statistics() override;
55 
56  private:
57  void solveTracks(const TracksScores& trackScoreTrackMap,
58  Trk::PRDtoTrackMap &prd_to_track_map,
59  TrackCollection &finalTracks,
60  std::vector<std::unique_ptr<const Trk::Track> >& trackDustbin,
61  Counter &stat) const;
62 
63 
65  virtual Track*
66  refitPrds( const Track* track, Trk::PRDtoTrackMap &prd_to_track_map,
67  Counter &stat) const override final;
68 
69  virtual std::unique_ptr<Trk::Track>
70  doBremRefit(const Trk::Track & track) const override final;
71 
72 
73  std::unique_ptr<Trk::Track>
74  fit(const std::vector<const Trk::PrepRawData*> &raw,
75  const TrackParameters &param, bool flag, Trk::ParticleHypothesis hypo) const;
76 
77  std::unique_ptr<Trk::Track>
78  fit(const std::vector<const Trk::MeasurementBase*> &measurements,
79  const TrackParameters &param, bool flag, Trk::ParticleHypothesis hypo) const;
80 
81  std::unique_ptr<Trk::Track>
82  fit(const Track &track, bool flag, Trk::ParticleHypothesis hypo) const override final;
83  bool
84  checkTrack(const Trk::Track *) const;
85 
88  ToolHandleArray<ITrackFitter> m_fitterTool;
89 
90  ToolHandle<Trk::IPRDtoTrackMapTool> m_assoTool
91  {this, "AssociationTool", "InDet::InDetPRDtoTrackMapToolGangedPixels" };
92 
95  {this,"AssociationMapName",""};
96 
99  ToolHandle<IAmbiTrackSelectionTool> m_selectionTool
100  {this, "SelectionTool", "InDet::InDetDenseEnvAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool"};
101 
103  PublicToolHandle<Trk::ITrkObserverTool> m_observerToolWriter{this, "ObserverToolWriter", "", "track observer writer within ambiguity solver"};
104 
109  BooleanProperty m_keepHolesFromBeforeFit{this,"KeepHolesFromBeforeRefit",false,"Restore hole information from input tracks after refit"};
110  };
111 
112  inline std::unique_ptr<Trk::Track>
113  DenseEnvironmentsAmbiguityProcessorTool::fit(const std::vector<const Trk::PrepRawData*> &raw,
114  const TrackParameters &param, bool flag,
115  Trk::ParticleHypothesis hypo) const {
116  std::unique_ptr<Trk::Track> newTrack;
117  for ( const ToolHandle<ITrackFitter> &thisFitter : m_fitterTool) {
118  newTrack=(thisFitter->fit(Gaudi::Hive::currentContext(),raw, param, flag,hypo));
120  return newTrack;
121  }
122  ATH_MSG_WARNING( "The track fitter, " << thisFitter->name() << ", produced a track with an invalid covariance matrix." );
123  }
124  ATH_MSG_WARNING( "None of the " << m_fitterTool.size() << " track fitter(s) produced a track with a valid covariance matrix." );
125  if (m_rejectInvalidTracks) {
126  newTrack.reset(nullptr);
127  }
128  return newTrack;
129  }
130 
131  inline std::unique_ptr<Trk::Track>
132  DenseEnvironmentsAmbiguityProcessorTool::fit(const std::vector<const Trk::MeasurementBase*> &measurements,
133  const TrackParameters &param,
134  bool flag,
135  Trk::ParticleHypothesis hypo) const{
136  std::unique_ptr<Trk::Track> newTrack;
137  for ( const ToolHandle<ITrackFitter> &thisFitter : m_fitterTool) {
138  newTrack=thisFitter->fit(Gaudi::Hive::currentContext(),measurements, param, flag, hypo);
140  return newTrack;
141  }
142  ATH_MSG_WARNING( "The track fitter, " << thisFitter->name() << ", produced a track with an invalid covariance matrix." );
143  }
144  ATH_MSG_WARNING( "None of the " << m_fitterTool.size() << " track fitter(s) produced a track with a valid covariance matrix." );
145  if (m_rejectInvalidTracks) {
146  newTrack.reset(nullptr);
147  }
148  return newTrack;
149  }
150 
151  inline std::unique_ptr<Trk::Track>
153  std::unique_ptr<Trk::Track> newTrack;
154  for ( const ToolHandle<ITrackFitter> &thisFitter : m_fitterTool) { //note: there is only ever one fitter anyway
155  newTrack=(thisFitter->fit(Gaudi::Hive::currentContext(),track,flag, hypo));
157  return newTrack;
158  }
159  ATH_MSG_WARNING( "The track fitter, " << thisFitter->name() << ", produced a track with an invalid covariance matrix." );
160  //TODO: potential memory leakage
161  }
162  ATH_MSG_WARNING( "None of the " << m_fitterTool.size() << " track fitter(s) produced a track with a valid covariance matrix." );
163  if (m_rejectInvalidTracks) {
164  newTrack.reset(nullptr);
165  }
166  return newTrack;
167  }
168 
169 } //end ns
170 
171 
172 #endif // TrackAmbiguityProcessorTool_H
173 
ITrkObserverTool.h
PRDtoTrackMap.h
Trk::DenseEnvironmentsAmbiguityProcessorTool::DenseEnvironmentsAmbiguityProcessorTool
DenseEnvironmentsAmbiguityProcessorTool(const std::string &, const std::string &, const IInterface *)
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:41
Trk::AmbiguityProcessorBase::Counter
AmbiCounter< CounterIndex > Counter
Definition: AmbiguityProcessorBase.h:58
TrackParameters.h
Trk::DenseEnvironmentsAmbiguityProcessorTool::finalize
virtual StatusCode finalize() override
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:109
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
AmbiCounter.h
Trk::PRDtoTrackMap
Definition: PRDtoTrackMap.h:17
AmbiguityProcessorBase.h
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
Trk::DenseEnvironmentsAmbiguityProcessorTool::m_selectionTool
ToolHandle< IAmbiTrackSelectionTool > m_selectionTool
selection tool - here the decision which hits remain on a track and which are removed are made
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:100
Trk::DenseEnvironmentsAmbiguityProcessorTool::checkTrack
bool checkTrack(const Trk::Track *) const
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:18
Trk::DenseEnvironmentsAmbiguityProcessorTool::dumpStat
void dumpStat(MsgStream &out) const
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:326
Trk::DenseEnvironmentsAmbiguityProcessorTool::solveTracks
void solveTracks(const TracksScores &trackScoreTrackMap, Trk::PRDtoTrackMap &prd_to_track_map, TrackCollection &finalTracks, std::vector< std::unique_ptr< const Trk::Track > > &trackDustbin, Counter &stat) const
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:184
Trk::DenseEnvironmentsAmbiguityProcessorTool::process
virtual const TrackCollection * process(const TrackCollection *, Trk::PRDtoTrackMap *) const override
(in concrete object) Returns a processed TrackCollection from the passed 'tracks'
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:51
SG::ReadHandleKey< Trk::PRDtoTrackMap >
Trk::DenseEnvironmentsAmbiguityProcessorTool::m_rejectInvalidTracks
bool m_rejectInvalidTracks
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:105
Trk::DenseEnvironmentsAmbiguityProcessorTool::refitPrds
virtual Track * refitPrds(const Track *track, Trk::PRDtoTrackMap &prd_to_track_map, Counter &stat) const override final
refit PRDs
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:279
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::AmbiguityProcessorBase
Definition: AmbiguityProcessorBase.h:36
PixelGangedClusterAmbiguities.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
master.flag
bool flag
Definition: master.py:29
TrackCollection.h
TrackSeedMap.h
Trk::DenseEnvironmentsAmbiguityProcessorTool::doBremRefit
virtual std::unique_ptr< Trk::Track > doBremRefit(const Trk::Track &track) const override final
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:388
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::DenseEnvironmentsAmbiguityProcessorTool::m_observerToolWriter
PublicToolHandle< Trk::ITrkObserverTool > m_observerToolWriter
Observer tool This tool is used to observe the tracks and their 'score'.
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:103
Trk::DenseEnvironmentsAmbiguityProcessorTool::process
virtual const TrackCollection * process(const TracksScores *trackScoreTrackMap) const override
Returns a processed TrackCollection from the passed 'tracks'.
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:129
DataVector< Trk::Track >
beamspotman.stat
stat
Definition: beamspotman.py:266
Trk::DenseEnvironmentsAmbiguityProcessorTool::m_keepHolesFromBeforeFit
BooleanProperty m_keepHolesFromBeforeFit
If enabled, this flag will make the tool restore the hole information from the input track after a re...
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:109
Trk::DenseEnvironmentsAmbiguityProcessorTool::fit
std::unique_ptr< Trk::Track > fit(const std::vector< const Trk::PrepRawData * > &raw, const TrackParameters &param, bool flag, Trk::ParticleHypothesis hypo) const
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:113
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::DenseEnvironmentsAmbiguityProcessorTool::statistics
virtual void statistics() override
statistics output to be called by algorithm during finalize.
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:114
IPRDtoTrackMapTool.h
Trk::DenseEnvironmentsAmbiguityProcessorTool::~DenseEnvironmentsAmbiguityProcessorTool
virtual ~DenseEnvironmentsAmbiguityProcessorTool()
Trk::TracksScores
std::vector< std::pair< const Track *, float > > TracksScores
Definition: ITrackAmbiguityProcessorTool.h:18
Trk::DenseEnvironmentsAmbiguityProcessorTool::initialize
virtual StatusCode initialize() override
Definition: DenseEnvironmentsAmbiguityProcessorTool.cxx:68
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::DenseEnvironmentsAmbiguityProcessorTool::m_fitterTool
ToolHandleArray< ITrackFitter > m_fitterTool
refitting tool - used to refit tracks once shared hits are removed.
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:88
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
IAmbiTrackSelectionTool.h
Trk::DenseEnvironmentsAmbiguityProcessorTool
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:33
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
ITrackFitter.h
Trk::DenseEnvironmentsAmbiguityProcessorTool::m_assoTool
ToolHandle< Trk::IPRDtoTrackMapTool > m_assoTool
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:91
Trk::DenseEnvironmentsAmbiguityProcessorTool::m_assoMapName
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_assoMapName
key for the PRDtoTrackMap to filled by the ambiguity score processor.
Definition: DenseEnvironmentsAmbiguityProcessorTool.h:95