ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_SeededTrackFinder_ATL.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5/**********************************************************************************
6 Header file for class TRT_SeededTrackFinder_ATL
7 (c) ATLAS Detector software
8 Class for Trk::Track production in SCT and Pixels
9 Version 1.0: 04/12/2006
10 Authors : Thomas Koffas
11 email : Thomas.Koffas@cern.ch
12**********************************************************************************/
13
14#ifndef TRT_SeededTrackFinder_ATL_H
15#define TRT_SeededTrackFinder_ATL_H
16
18
19//Tool Handler
20//
21#include "GaudiKernel/ToolHandle.h"
22#include "GaudiKernel/IInterface.h"
23#include "GaudiKernel/ServiceHandle.h"
24
25//Tool Interface
26//
30
31//Magnetic field
32//
34
35// MagField cache
38
39//Si Tools
40//
43
44//Combinatorial Track Finder Tool
45//
47
48//Tool for getting the SiDetElements from geometry
50
51//Updator tool
53
54//Propagator tool
56
57//ReadHandle key
58//
60
61#include <list>
62#include <vector>
63#include <map>
64#include <iosfwd>
65
66class MsgStream;
67class TRT_ID ;
68
69namespace InDet{
72
80
82
83 public:
84
86
88
89 TRT_SeededTrackFinder_ATL(const std::string&,const std::string&,const IInterface*);
91 virtual StatusCode initialize() override;
92 virtual StatusCode finalize () override;
93
95
97
99 virtual std::list<Trk::Track*>
100 getTrack (const EventContext& ctx, InDet::ITRT_SeededTrackFinder::IEventData &event_data,
101 const Trk::TrackSegment&) const override;
103 virtual std::unique_ptr<InDet::ITRT_SeededTrackFinder::IEventData>
104 newEvent(const EventContext& ctx, SiCombinatorialTrackFinderData_xk& combinatorialData) const override;
106 virtual std::unique_ptr<InDet::ITRT_SeededTrackFinder::IEventData>
107 newRegion(const EventContext& ctx, SiCombinatorialTrackFinderData_xk& combinatorialData,
108 const std::vector<IdentifierHash>&,const std::vector<IdentifierHash>&) const override;
110 virtual void
111 endEvent(InDet::ITRT_SeededTrackFinder::IEventData &event_data) const override;
112
114
116
117 MsgStream& dump(MsgStream& out) const override;
118 std::ostream& dump(std::ostream& out) const override;
119
120 protected:
121
122 class EventData;
123 class EventData : public Trk::EventDataBase<EventData,InDet::ITRT_SeededTrackFinder::IEventData> {
124 public:
133
135 std::multimap<const Trk::PrepRawData*,const Trk::Track*> &clusterTrack() { return m_clusterTrack; }
138 std::vector<double>& caloF() { return m_caloF; }
139 std::vector<double>& caloE() { return m_caloE; }
140 const std::vector<double>& caloF() const { return m_caloF; }
141 const std::vector<double>& caloE() const { return m_caloE; }
143 const InDet::SiNoise_bt& noise() const { return m_noise; }
145 protected:
147 std::unique_ptr<InDet::ITRT_SeededSpacePointFinder::IEventData> m_spacePointFinderEventData;
148 std::multimap<const Trk::PrepRawData*,const Trk::Track*> m_clusterTrack ;
150 std::vector<double> m_caloF ;
151 std::vector<double> m_caloE ;
152
156 };
157
159
161
162 StringProperty m_fieldmode{this, "MagneticFieldMode", "MapSolenoid",
163 "Magnetic field mode"};
164
166
168
169 ToolHandle<InDet::ISiDetElementsRoadMaker> m_roadmaker
170 {this, "RoadTool", "InDet::SiDetElementsRoadMaker_xk"};
171 ToolHandle<InDet::ITRT_SeededSpacePointFinder> m_seedmaker
172 {this, "SeedTool", ""};
173 ToolHandle<Trk::IPropagator> m_proptool
174 {this, "PropagatorTool", "Trk::RungeKuttaPropagator/InDetPropagator"};
175 ToolHandle<Trk::IUpdator> m_updatorTool
176 {this, "UpdatorTool", "Trk::KalmanUpdator_xk/InDetPatternUpdator"};
177 ToolHandle<InDet::ISiCombinatorialTrackFinder> m_tracksfinder
178 {this, "CombinatorialTrackFinder", "InDet::SiCombinatorialTrackFinder_xk"};
179
181 "fieldCondObj", "Name of the Magnetic Field conditions object key"};
182
184 const TRT_ID* m_trtId = nullptr;
185
187 DoubleProperty m_xi2max{this, "Xi2max", 15., "max Xi2 for updators"};
188 DoubleProperty m_xi2maxNoAdd{this, "Xi2maxNoAdd", 50.,
189 "max Xi2 for outliers"};
190 DoubleProperty m_xi2maxlink{this, "Xi2maxlink", 100.,
191 "max Xi2 for clusters"};
192 DoubleProperty m_pTmin{this, "pTmin", 500., "min pT"};
193 IntegerProperty m_nholesmax{this, "nHolesMax", 1, "Max number holes"};
194 IntegerProperty m_dholesmax{this, "nHolesGapMax", 1,
195 "Max gap between holes"};
196 IntegerProperty m_nclusmin{this, "nClustersMin", 4, "Min number clusters"};
197 IntegerProperty m_nwclusmin{this, "nWClustersMin", 4,
198 "Min number weighted clusters"};
199 BooleanProperty m_bremCorrect{this, "BremCorrection", false,
200 "Optional Brem correction"};
201 BooleanProperty m_propR{this, "ConsistentSeeds", false,
202 "Check seed-TRT segment consistency at large eta"};
203 BooleanProperty m_useassoTool{this, "UseAssociationTool", false,
204 "Use prd-track association tool"};
206 DoubleArrayProperty m_errorScale
207 {this, "ErrorScaling", {1., 1., 1., 1., 1.},
208 "Optional error scaling of track parameters"};
209 DoubleProperty m_outlierCut{this, "OutlierCut", 25.,
210 "Outlier chi2 cut when propagating through the seed"};
211 BooleanProperty m_searchInCaloROI{this, "SearchInCaloROI", false,
212 "Outlier chi2 cut when propagating through the seed"};
214
215
217
219
221 void magneticFieldInit();
222
224 std::unique_ptr<const Trk::TrackParameters>
226 const Trk::TrackParameters&, bool&,
228
230 std::list<Trk::Track*>
231 findTrack(const EventContext& ctx, MagField::AtlasFieldCache& fieldCache,
233 const Trk::TrackParameters&,const Trk::TrackSegment&) const;
234
236 std::unique_ptr<const Trk::TrackParameters>
237 addNoise(const SiNoise_bt &,const Trk::TrackParameters&,int) const;
238
239
241 bool
242 checkSeed(std::vector<const Trk::SpacePoint*>&,const Trk::TrackSegment&,
243 const Trk::TrackParameters&) const;
244
246 static std::unique_ptr<const Trk::TrackParameters>
248
250 void
252
254 static void
256
258 static bool
259 newClusters(const std::vector<const Trk::SpacePoint*>&,
261
263 static bool
264 newSeed(const std::vector<const Trk::SpacePoint*>&,
266
268 static bool
270
272 std::list<Trk::Track*>
273 cleanTrack(std::list<Trk::Track*>) const;
274
277 DoubleProperty m_phiWidth{this, "phiWidth", 0.3};
278
279 MsgStream& dumpconditions(MsgStream& out) const;
280
281 };
282
283} // end of namespace
284
285#endif // TRT_SeededTrackFinder_ATL
Property holding a SG store/key/clid from which a ReadHandle is made.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Base class for detector elements road builder in Pixels and SCT.
InDet::SiCombinatorialTrackFinderData_xk holds event dependent data used by SiCombinatorialTrackFinde...
InDet::SiDetElementRoadMakerData_xk holds event dependent data used by SiDetElementRoadMaker_xk.
void setCaloClusterROIEM(const ROIPhiRZContainer &rois)
InDet::SiNoise_bt m_noise
Needed for adding material related noise.
InDet::SiDetElementRoadMakerData_xk m_roadMakerData
const std::vector< double > & caloE() const
virtual InDet::SiCombinatorialTrackFinderData_xk & combinatorialData() override
const ROIPhiRZContainer * m_caloClusterROIEM
Multimap of tracks and associated PRDs.
const std::vector< double > & caloF() const
EventData(SiCombinatorialTrackFinderData_xk &combinatorialData, std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventData > &&spacePointFinderEventData)
InDet::SiDetElementRoadMakerData_xk & roadMakerData()
std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventData > m_spacePointFinderEventData
InDet::ITRT_SeededSpacePointFinder::IEventData & spacePointFinderEventData()
std::multimap< const Trk::PrepRawData *, const Trk::Track * > m_clusterTrack
SiCombinatorialTrackFinderData_xk * m_combinatorialData
virtual const InDet::SiCombinatorialTrackFinderData_xk & combinatorialData() const override
std::multimap< const Trk::PrepRawData *, const Trk::Track * > & clusterTrack()
ToolHandle< InDet::ITRT_SeededSpacePointFinder > m_seedmaker
MsgStream & dumpconditions(MsgStream &out) const
ToolHandle< Trk::IUpdator > m_updatorTool
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
bool checkSeed(std::vector< const Trk::SpacePoint * > &, const Trk::TrackSegment &, const Trk::TrackParameters &) const
Check consistency of seed and TRT track segment.
std::unique_ptr< const Trk::TrackParameters > addNoise(const SiNoise_bt &, const Trk::TrackParameters &, int) const
Add material effects.
static void clusterTrackMap(Trk::Track *, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Map PRDs-tracks.
virtual StatusCode initialize() override
std::list< Trk::Track * > findTrack(const EventContext &ctx, MagField::AtlasFieldCache &fieldCache, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data, const Trk::TrackParameters &, const Trk::TrackSegment &) const
Find the corresponding list of Si tracks.
ToolHandle< Trk::IPropagator > m_proptool
virtual std::unique_ptr< InDet::ITRT_SeededTrackFinder::IEventData > newRegion(const EventContext &ctx, SiCombinatorialTrackFinderData_xk &combinatorialData, const std::vector< IdentifierHash > &, const std::vector< IdentifierHash > &) const override
New region intialization.
bool isCaloCompatible(const Trk::TrackParameters &, const InDet::TRT_SeededTrackFinder_ATL::EventData &event_data) const
Only propagate to the Si if the TRT segment is compatible with a calo measurement.
ToolHandle< InDet::ISiDetElementsRoadMaker > m_roadmaker
Magnetic field properties.
virtual std::list< Trk::Track * > getTrack(const EventContext &ctx, InDet::ITRT_SeededTrackFinder::IEventData &event_data, const Trk::TrackSegment &) const override
Main methods for local track finding.
virtual std::unique_ptr< InDet::ITRT_SeededTrackFinder::IEventData > newEvent(const EventContext &ctx, SiCombinatorialTrackFinderData_xk &combinatorialData) const override
New event initialization.
ToolHandle< InDet::ISiCombinatorialTrackFinder > m_tracksfinder
SG::ReadHandleKey< ROIPhiRZContainer > m_caloClusterROIKey
static bool newClusters(const std::vector< const Trk::SpacePoint * > &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Seed used by another track?
TRT_SeededTrackFinder_ATL(const std::string &, const std::string &, const IInterface *)
Standard tool methods.
static std::unique_ptr< const Trk::TrackParameters > modifyTrackParameters(const Trk::TrackParameters &, int)
Modify track parameters if brem correction.
void setTrackQualityCuts()
Set the track quality cuts for combinatorial track finding.
Trk::MagneticFieldProperties m_fieldprop
static bool newSeed(const std::vector< const Trk::SpacePoint * > &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Seed SPs used by other high quality tracks?
DoubleProperty m_xi2max
Track quality cuts to be passed to the combinatorial track finder.
StringProperty m_fieldmode
Protected Data.
virtual void endEvent(InDet::ITRT_SeededTrackFinder::IEventData &event_data) const override
End of event tasks.
static bool isNewTrack(Trk::Track *, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Clean-up duplicate tracks.
std::unique_ptr< const Trk::TrackParameters > getTP(MagField::AtlasFieldCache &fieldCache, const Trk::SpacePoint *, const Trk::TrackParameters &, bool &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data) const
Update track parameters through space point propagation.
std::list< Trk::Track * > cleanTrack(std::list< Trk::Track * >) const
Eliminate spurious Pixel clusters in track.
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
container for phi sorted ROIs defined by phi, r and z.
Property holding a SG store/key/clid from which a ReadHandle is made.
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:82
Base for a helper class to pass mutable storage to tools.
magnetic field properties to steer the behavior of the extrapolation
Class for a generic track segment that holdes polymorphic Trk::MeasurementBase objects,...
Primary Vertex Finder.
ParametersBase< TrackParametersDim, Charged > TrackParameters
-event-from-file
STL namespace.