ATLAS Offline Software
Loading...
Searching...
No Matches
InDetExtensionProcessor.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 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
29namespace InDet {
36
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 this, "TrackName", "Tracks", "Name of the input Trackcollection"};
64 this, "ExtensionMap", "TrackExtensionMap", "Name of the input extension map"};
66 this, "NewTrackName", "ExtendedTrack", "Name of the output Trackcollection"};
67
68 PublicToolHandle<Trk::ITrackFitter> m_trackFitter{
69 this, "TrackFitter", "Trk::KalmanFitter/InDetTrackFitter",
70 "Toolhandle for the track fitter"};
71
72 ToolHandle<Trk::IExtendedTrackSummaryTool> m_trackSummaryTool{
73 this, "TrackSummaryTool", ""};
74
75 PublicToolHandle<Trk::ITrackScoringTool> m_scoringTool{
76 this, "ScoringTool", "Trk::TrackScoringTool",
77 "Toolhandle for the track scorer"};
78
79 BooleanProperty m_cosmics{
80 this, "Cosmics", false, "switch whether we are running on cosmics"};
81 Gaudi::Property<Trk::RunOutlierRemoval> m_runOutlier{
82 this, "runOutlier", true, "switch whether to run outlier logics or not"};
84 this, "keepFailedExtension", true,
85 "switch whether to keep failed extension as outlier hits on the new track"};
86 BooleanProperty m_refitPrds{
87 this, "RefitPrds", true,
88 "switch whether to do the fit with re-calibrated clusters (true) or not"};
89 IntegerProperty m_matEffects{
90 this, "matEffects", 3,
91 "particle hypothesis to assume for material effects in track fit"};
92 BooleanProperty m_suppressHoleSearch{
93 this, "suppressHoleSearch", false, "suppressing hole search for comparison"};
94 BooleanProperty m_tryBremFit{
95 this, "tryBremFit", false, "brem recovery mode"};
96 BooleanProperty m_caloSeededBrem{
97 this, "caloSeededBrem", false, "calo seeded brem recovery"};
98 FloatProperty m_pTminBrem{
99 this, "pTminBrem", 1000., "min pT for trying a brem recovery"};
100 Gaudi::Property<std::vector<float>> m_etabounds{
101 this, "etaBounds", {0.8, 1.6, 2.10}, "eta intervals for internal monitoring"};
102 //note: only three values!
103
104 // -- algorithm members
106
111
116
117 // -- Using atomics to be multi-thread safe
118 mutable std::array< std::array<std::atomic<int>, Nregions>, nTypes > m_counters ATLAS_THREAD_SAFE;
119 mutable std::atomic<int> m_Nevents ATLAS_THREAD_SAFE;
120
122 void incrementRegionCounter(std::array<std::atomic<int>, 4>&, const Trk::Track*, bool = true) const;
123 };
124}
125
126#endif //INDETEXTENSIONPROCESSOR_H
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
Define macros for attributes used to control the static checker.
An algorithm that can be simultaneously executed in multiple threads.
SG::WriteHandleKey< TrackCollection > m_newTrackName
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
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
StatIndex
internal monitoring: categories for counting different types of extension results
SG::ReadHandleKey< TrackCollection > m_trackName
Trk::ParticleHypothesis m_particleHypothesis
nomen est omen
SG::ReadHandleKey< TrackExtensionMap > m_extensionMapName
PublicToolHandle< Trk::ITrackFitter > m_trackFitter
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
std::array< std::array< std::atomic< int >, Nregions >, nTypes > m_counters ATLAS_THREAD_SAFE
PublicToolHandle< Trk::ITrackScoringTool > m_scoringTool
Gaudi::Property< std::vector< float > > m_etabounds
MsgStream & dumpStat(MsgStream &out) const
TrackCollection * createExtendedTracks(const EventContext &ctx, const TrackCollection *tracks_in, const TrackExtensionMap *track_extension_map) const
process events
Gaudi::Property< Trk::RunOutlierRemoval > m_runOutlier
virtual StatusCode execute(const EventContext &ctx) const
InDetExtensionProcessor(const std::string &name, ISvcLocator *pSvcLocator)
Default Algorithm constructor with parameters.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
AUTO - An Undocumented Tracking Object.
Primary Vertex Finder.
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.