ATLAS Offline Software
InDetExtensionProcessor.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3  */
4 
6 // InDetExtensionProcessor.h, (c) ATLAS Detector Softwareop
8 
9 #ifndef INDETEXTENSIONPROCESSOR_H
10 #define INDETEXTENSIONPROCESSOR_H
11 
12 // Base class
13 
22 
23 #include "GaudiKernel/ToolHandle.h"
24 
25 #include <vector>
26 #include <array>
27 #include <mutex>
28 
29 namespace InDet {
38  public:
40  InDetExtensionProcessor(const std::string& name, ISvcLocator* pSvcLocator);
41 
42  virtual StatusCode initialize();
43  virtual StatusCode execute(const EventContext& ctx) const;
44  virtual StatusCode finalize();
45  private:
46  MsgStream &dumpStat(MsgStream &out) const;
47 
49  TrackCollection* createExtendedTracks(const EventContext& ctx,
50  const TrackCollection* tracks_in,
51  const TrackExtensionMap* track_extension_map) const;
52 
54  Trk::Track* trackPlusExtension(const EventContext& ctx,
55  const Trk::Track*,
56  const std::vector<const Trk::MeasurementBase*>&) const;
57 
58  //
59  // --- job options
60  //
62  bool m_cosmics;
65  ToolHandle<Trk::ITrackFitter> m_trackFitter;
66 
67  ToolHandle<Trk::IExtendedTrackSummaryTool> m_trackSummaryTool
68  // {this, "TrackSummaryTool", "InDetTrackSummaryTool"};
69  {
70  this, "TrackSummaryTool", ""
71  };
72 
73  ToolHandle<Trk::ITrackScoringTool> m_scoringTool;
82  bool m_tryBremFit;
84  float m_pTminBrem;
85 
86  // -- algorithm members
88 
90  enum StatIndex {
92  };
93 
94  enum StatTrkType {
97  };
98 
99  // -- Using atomics to be multi-thread safe
100  mutable std::array< std::array<std::atomic<int>, Nregions>, nTypes > m_counters ATLAS_THREAD_SAFE;
101  mutable std::atomic<int> m_Nevents ATLAS_THREAD_SAFE;
102 
103  std::vector<float> m_etabounds;
104 
106  void incrementRegionCounter(std::array<std::atomic<int>, 4>&, const Trk::Track*, bool = true) const;
107  };
108 }
109 
110 #endif //INDETEXTENSIONPROCESSOR_H
InDet::InDetExtensionProcessor::ATLAS_THREAD_SAFE
std::atomic< int > m_Nevents ATLAS_THREAD_SAFE
Definition: InDetExtensionProcessor.h:101
InDet::InDetExtensionProcessor::ATLAS_THREAD_SAFE
std::array< std::array< std::atomic< int >, Nregions >, nTypes > m_counters ATLAS_THREAD_SAFE
Definition: InDetExtensionProcessor.h:100
InDet::InDetExtensionProcessor::m_trackSummaryTool
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
Definition: InDetExtensionProcessor.h:69
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
InDet::InDetExtensionProcessor::nInput
@ nInput
Definition: InDetExtensionProcessor.h:95
InDet::InDetExtensionProcessor::InDetExtensionProcessor
InDetExtensionProcessor(const std::string &name, ISvcLocator *pSvcLocator)
Default Algorithm constructor with parameters.
Definition: InDetExtensionProcessor.cxx:38
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::InDetExtensionProcessor::m_keepFailedExtensionOnTrack
bool m_keepFailedExtensionOnTrack
switch whether to append a rejected extension as outlier trajectory
Definition: InDetExtensionProcessor.h:76
InDet::InDetExtensionProcessor::m_suppressHoleSearch
bool m_suppressHoleSearch
no hole search ?
Definition: InDetExtensionProcessor.h:81
InDet::InDetExtensionProcessor::m_tryBremFit
bool m_tryBremFit
brem recovery mode ?
Definition: InDetExtensionProcessor.h:82
InDet::InDetExtensionProcessor::nRejected
@ nRejected
Definition: InDetExtensionProcessor.h:95
InDet::InDetExtensionProcessor::trackPlusExtension
Trk::Track * trackPlusExtension(const EventContext &ctx, const Trk::Track *, const std::vector< const Trk::MeasurementBase * > &) const
internal structuring: creates new track with original one plus extension as outliers
Definition: InDetExtensionProcessor.cxx:410
ITrackScoringTool.h
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
InDet::InDetExtensionProcessor::m_runOutlier
Trk::RunOutlierRemoval m_runOutlier
whether to run outlier logics
Definition: InDetExtensionProcessor.h:74
Trk::RunOutlierRemoval
bool RunOutlierRemoval
switch to toggle quality processing after fit
Definition: FitterTypes.h:22
InDet::InDetExtensionProcessor::nRecognised
@ nRecognised
Definition: InDetExtensionProcessor.h:95
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
InDet::InDetExtensionProcessor::m_refitPrds
bool m_refitPrds
fitter steering: whether to do the fit with re-calibrated clusters (true) or not
Definition: InDetExtensionProcessor.h:78
InDet::InDetExtensionProcessor::nExtended
@ nExtended
Definition: InDetExtensionProcessor.h:95
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
InDet::InDetExtensionProcessor::m_trackFitter
ToolHandle< Trk::ITrackFitter > m_trackFitter
track fitter tool handle
Definition: InDetExtensionProcessor.h:65
InDet::InDetExtensionProcessor::m_cosmics
bool m_cosmics
whether we are running cosmics
Definition: InDetExtensionProcessor.h:62
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
InDet::InDetExtensionProcessor::m_scoringTool
ToolHandle< Trk::ITrackScoringTool > m_scoringTool
track scorer tool handle
Definition: InDetExtensionProcessor.h:73
InDet::InDetExtensionProcessor::iTransi
@ iTransi
Definition: InDetExtensionProcessor.h:91
InDet::InDetExtensionProcessor::Nregions
@ Nregions
Definition: InDetExtensionProcessor.h:91
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDet::InDetExtensionProcessor::nLowScoreBremFits
@ nLowScoreBremFits
Definition: InDetExtensionProcessor.h:96
InDet::InDetExtensionProcessor::createExtendedTracks
TrackCollection * createExtendedTracks(const EventContext &ctx, const TrackCollection *tracks_in, const TrackExtensionMap *track_extension_map) const
process events
Definition: InDetExtensionProcessor.cxx:123
InDet::InDetExtensionProcessor::StatIndex
StatIndex
internal monitoring: categories for counting different types of extension results
Definition: InDetExtensionProcessor.h:90
InDet::InDetExtensionProcessor::nTypes
@ nTypes
Definition: InDetExtensionProcessor.h:96
TrackCollection.h
InDet::InDetExtensionProcessor::iAll
@ iAll
Definition: InDetExtensionProcessor.h:91
DataVector< Trk::Track >
ParticleHypothesis.h
InDet::InDetExtensionProcessor::nNotExtended
@ nNotExtended
Definition: InDetExtensionProcessor.h:96
InDet::InDetExtensionProcessor::m_pTminBrem
float m_pTminBrem
min pt for a brem fit
Definition: InDetExtensionProcessor.h:84
InDet::InDetExtensionProcessor::iBarrel
@ iBarrel
Definition: InDetExtensionProcessor.h:91
InDet::InDetExtensionProcessor::incrementRegionCounter
void incrementRegionCounter(std::array< std::atomic< int >, 4 > &, const Trk::Track *, bool=true) const
monitoring and validation: does success/failure counting for each detector region
Definition: InDetExtensionProcessor.cxx:387
AthReentrantAlgorithm.h
lumiFormat.array
array
Definition: lumiFormat.py:98
InDet::InDetExtensionProcessor::StatTrkType
StatTrkType
Definition: InDetExtensionProcessor.h:94
InDet::InDetExtensionProcessor::execute
virtual StatusCode execute(const EventContext &ctx) const
Definition: InDetExtensionProcessor.cxx:101
TrackExtensionMap.h
InDet::InDetExtensionProcessor::nRecoveryBremFits
@ nRecoveryBremFits
Definition: InDetExtensionProcessor.h:95
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
InDet::InDetExtensionProcessor::m_caloSeededBrem
bool m_caloSeededBrem
run in Calo seeded mode
Definition: InDetExtensionProcessor.h:83
InDet::InDetExtensionProcessor::m_trackName
SG::ReadHandleKey< TrackCollection > m_trackName
Name of input Trackcollection.
Definition: InDetExtensionProcessor.h:61
InDet::InDetExtensionProcessor::nExtendedBrem
@ nExtendedBrem
Definition: InDetExtensionProcessor.h:96
test_pythinning.out
out
Definition: test_pythinning.py:94
InDet::InDetExtensionProcessor::dumpStat
MsgStream & dumpStat(MsgStream &out) const
Definition: InDetExtensionProcessor.cxx:481
InDet::InDetExtensionProcessor::nFits
@ nFits
Definition: InDetExtensionProcessor.h:96
InDet::InDetExtensionProcessor::initialize
virtual StatusCode initialize()
Definition: InDetExtensionProcessor.cxx:78
InDet::InDetExtensionProcessor::m_etabounds
std::vector< float > m_etabounds
eta intervals for internal monitoring
Definition: InDetExtensionProcessor.h:103
InDet::InDetExtensionProcessor
Algorithm to process a TrackExtensionMap, refit the extended tracks and decide if the old track is to...
Definition: InDetExtensionProcessor.h:37
InDet::InDetExtensionProcessor::m_matEffects
int m_matEffects
type of material interaction in extrapolation
Definition: InDetExtensionProcessor.h:80
IExtendedTrackSummaryTool.h
TrackExtensionMap
AUTO - An Undocumented Tracking Object.
Definition: TrackExtensionMap.h:16
InDet::InDetExtensionProcessor::finalize
virtual StatusCode finalize()
Definition: InDetExtensionProcessor.cxx:471
checker_macros.h
Define macros for attributes used to control the static checker.
InDet::InDetExtensionProcessor::m_extensionMapName
SG::ReadHandleKey< TrackExtensionMap > m_extensionMapName
Name of input extension map.
Definition: InDetExtensionProcessor.h:63
ITrackFitter.h
InDet::InDetExtensionProcessor::nBremFits
@ nBremFits
Definition: InDetExtensionProcessor.h:96
InDet::InDetExtensionProcessor::m_particleHypothesis
Trk::ParticleHypothesis m_particleHypothesis
nomen est omen
Definition: InDetExtensionProcessor.h:87
InDet::InDetExtensionProcessor::m_newTrackName
SG::WriteHandleKey< TrackCollection > m_newTrackName
Name of output Trackcollection.
Definition: InDetExtensionProcessor.h:64
InDet::InDetExtensionProcessor::nFailed
@ nFailed
Definition: InDetExtensionProcessor.h:95
InDet::InDetExtensionProcessor::iEndcap
@ iEndcap
Definition: InDetExtensionProcessor.h:91