ATLAS Offline Software
SimpleAmbiguityProcessorTool.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 SIMPLEAMBIGUITYPROCESSORTOOL_H
6 #define SIMPLEAMBIGUITYPROCESSORTOOL_H
7 
8 
12 #include "GaudiKernel/ToolHandle.h"
14 
18 
19 //need to include the following, since its a typedef and can't be forward declared.
21 #include "TrkTrack/TrackSeedMap.h"
22 
23 #include <set>
24 #include <vector>
25 #include <mutex>
26 #include <array>
27 
28 
29 
30 class AtlasDetectorID;
31 class PixelID;
32 
33 namespace Trk {
34 
35  class ITrackScoringTool;
36  class IPRD_AssociationTool;
37  class ITruthToTrack;
38 
40  public:
41  // public types
42  typedef std::multimap< TrackScore, TrackPtr > TrackScoreMap;
43  typedef std::vector<const PrepRawData*> PrdSignature;
44  typedef std::set<PrdSignature> PrdSignatureSet;
45 
46  // default methods
47  SimpleAmbiguityProcessorTool(const std::string&,const std::string&,const IInterface*);
49  virtual StatusCode initialize() override final;
50  virtual StatusCode finalize () override final;
51 
62  virtual const TrackCollection* process(const TrackCollection*, Trk::PRDtoTrackMap *prdToTrackMap) const override;
63  virtual const TrackCollection* process(const TracksScores* scoredTracks) const override;
64 
66  virtual void statistics() override;
67  private:
68 
70  processVector(const TrackCollection &tracks, Trk::PRDtoTrackMap *prdToTrackMap) const;
71 
76  void
78  TrackScoreMap& trackScoreTrackMap,
79  Trk::PRDtoTrackMap &prdToTrackMap) const;
80 
82  solveTracks(TrackScoreMap &trackScoreTrackMap,
83  Trk::PRDtoTrackMap &prdToTrackMap,
84  std::vector<std::unique_ptr<const Trk::Track> > &trackDustbin,
85  Counter &stat) const;
86 
88  void
90 
92  virtual std::unique_ptr<Trk::Track>
93  doBremRefit(const Trk::Track & track) const override final;
94 
96  Track*
97  refitPrds( const Track* track, Trk::PRDtoTrackMap &prdToTrackMap, Counter &stat) const override final;
98 
100  void
102 
104  void
105  dumpStat(MsgStream &out) const;
106 
107  std::unique_ptr<Trk::Track>
108  fit(const Track &track, bool flag, Trk::ParticleHypothesis hypo) const override final;
109 
110  // private data members
113 
116  ToolHandle<ITrackFitter> m_fitterTool{this, "Fitter", "Trk::KalmanFitter/InDetTrackFitter"};
118  ToolHandle<Trk::IPRDtoTrackMapTool> m_assoTool{this, "AssociationTool", "Trk::PRDtoTrackMapTool" };
120  ToolHandle<IAmbiTrackSelectionTool> m_selectionTool{this, "SelectionTool", "InDet::InDetAmbiTrackSelectionTool/InDetAmbiTrackSelectionTool"};
121 
122  };
123 } //end ns
124 
125 #endif // TrackAmbiguityProcessorTool_H
126 
Trk::SimpleAmbiguityProcessorTool::processVector
const TrackCollection * processVector(const TrackCollection &tracks, Trk::PRDtoTrackMap *prdToTrackMap) const
Definition: SimpleAmbiguityProcessorTool.cxx:125
Trk::SimpleAmbiguityProcessorTool::m_selectionTool
ToolHandle< IAmbiTrackSelectionTool > m_selectionTool
selection tool - here the decision which hits remain on a track and which are removed are made
Definition: SimpleAmbiguityProcessorTool.h:120
PRDtoTrackMap.h
Trk::SimpleAmbiguityProcessorTool::fit
std::unique_ptr< Trk::Track > fit(const Track &track, bool flag, Trk::ParticleHypothesis hypo) const override final
Definition: SimpleAmbiguityProcessorTool.cxx:388
Trk::SimpleAmbiguityProcessorTool::refitPrds
Track * refitPrds(const Track *track, Trk::PRDtoTrackMap &prdToTrackMap, Counter &stat) const override final
refit PRDs
Definition: SimpleAmbiguityProcessorTool.cxx:269
Trk::PRDtoTrackMap
Definition: PRDtoTrackMap.h:17
AmbiguityProcessorBase.h
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
Trk::SimpleAmbiguityProcessorTool::SimpleAmbiguityProcessorTool
SimpleAmbiguityProcessorTool(const std::string &, const std::string &, const IInterface *)
Definition: SimpleAmbiguityProcessorTool.cxx:20
Trk::SimpleAmbiguityProcessorTool
Definition: SimpleAmbiguityProcessorTool.h:39
Trk::SimpleAmbiguityProcessorTool::addNewTracks
void addNewTracks(const TrackCollection &tracks, TrackScoreMap &trackScoreTrackMap, Trk::PRDtoTrackMap &prdToTrackMap) const
Add passed TrackCollection, and Trk::PrepRawData from tracks to caches.
Definition: SimpleAmbiguityProcessorTool.cxx:153
Trk::SimpleAmbiguityProcessorTool::m_fitterTool
ToolHandle< ITrackFitter > m_fitterTool
refitting tool - used to refit tracks once shared hits are removed.
Definition: SimpleAmbiguityProcessorTool.h:116
Trk::SimpleAmbiguityProcessorTool::finalize
virtual StatusCode finalize() override final
Definition: SimpleAmbiguityProcessorTool.cxx:88
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Trk::ITrackFitter
Definition: ITrackFitter.h:42
Trk::SimpleAmbiguityProcessorTool::statistics
virtual void statistics() override
statistics output to be called by algorithm during finalize.
Definition: SimpleAmbiguityProcessorTool.cxx:92
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::SimpleAmbiguityProcessorTool::TrackScoreMap
std::multimap< TrackScore, TrackPtr > TrackScoreMap
Definition: SimpleAmbiguityProcessorTool.h:42
Trk::AmbiguityProcessorBase
Definition: AmbiguityProcessorBase.h:36
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
vector
Definition: MultiHisto.h:13
master.flag
bool flag
Definition: master.py:29
TrackCollection.h
TrackSeedMap.h
Trk::SimpleAmbiguityProcessorTool::process
virtual const TrackCollection * process(const TrackCollection *, Trk::PRDtoTrackMap *prdToTrackMap) const override
Returns a processed TrackCollection from the passed 'tracks'.
Definition: SimpleAmbiguityProcessorTool.cxx:108
Trk::SimpleAmbiguityProcessorTool::doBremRefit
virtual std::unique_ptr< Trk::Track > doBremRefit(const Trk::Track &track) const override final
do a refit assuming electron hypothesis
Definition: SimpleAmbiguityProcessorTool.cxx:383
Trk::SimpleAmbiguityProcessorTool::dumpStat
void dumpStat(MsgStream &out) const
dump the accumulated statistics
Definition: SimpleAmbiguityProcessorTool.cxx:326
DataVector< Trk::Track >
beamspotman.stat
stat
Definition: beamspotman.py:266
Trk::SimpleAmbiguityProcessorTool::PrdSignature
std::vector< const PrepRawData * > PrdSignature
Definition: SimpleAmbiguityProcessorTool.h:43
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::SimpleAmbiguityProcessorTool::m_dropDouble
bool m_dropDouble
by default drop double tracks before refit
Definition: SimpleAmbiguityProcessorTool.h:112
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
TrackScore.h
IPRDtoTrackMapTool.h
Trk::TracksScores
std::vector< std::pair< const Track *, float > > TracksScores
Definition: ITrackAmbiguityProcessorTool.h:18
Trk::SimpleAmbiguityProcessorTool::solveTracks
const TrackCollection * solveTracks(TrackScoreMap &trackScoreTrackMap, Trk::PRDtoTrackMap &prdToTrackMap, std::vector< std::unique_ptr< const Trk::Track > > &trackDustbin, Counter &stat) const
Definition: SimpleAmbiguityProcessorTool.cxx:193
IExtendedTrackSummaryTool.h
Trk::SimpleAmbiguityProcessorTool::PrdSignatureSet
std::set< PrdSignature > PrdSignatureSet
Definition: SimpleAmbiguityProcessorTool.h:44
Trk::SimpleAmbiguityProcessorTool::dumpTracks
void dumpTracks(const TrackCollection &tracks) const
print out tracks and their scores for debugging
Definition: SimpleAmbiguityProcessorTool.cxx:310
Trk::SimpleAmbiguityProcessorTool::m_assoTool
ToolHandle< Trk::IPRDtoTrackMapTool > m_assoTool
association tool
Definition: SimpleAmbiguityProcessorTool.h:118
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
IAmbiTrackSelectionTool.h
Trk::SimpleAmbiguityProcessorTool::initialize
virtual StatusCode initialize() override final
Definition: SimpleAmbiguityProcessorTool.cxx:46
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Trk::SimpleAmbiguityProcessorTool::addSubTrack
void addSubTrack(const std::vector< const TrackStateOnSurface * > &tsos) const
add subtrack to map
Trk::SimpleAmbiguityProcessorTool::~SimpleAmbiguityProcessorTool
virtual ~SimpleAmbiguityProcessorTool()
PixelID
Definition: PixelID.h:67
ITrackFitter.h
AtlasDetectorID
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Definition: AtlasDetectorID.h:57
AmbiCounter
Definition: AmbiCounter.h:16
Trk::AmbiguityProcessorBase::TrackScoreMap
std::multimap< TrackScore, TrackPtr > TrackScoreMap
Definition: AmbiguityProcessorBase.h:59