ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_TrackSegmentsMaker_ATLxk.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// Header file for class TRT_TrackSegmentsMaker_ATLxk
8// (c) ATLAS Detector software
10// Class for track candidates generation using InDet::TRT_DriftCircles
11// for standard Atlas geometry
13// Version 1.0 11/10/2005 I.Gavrilenko
15
16#ifndef TRT_TrackSegmentsMaker_ATLxk_H
17#define TRT_TrackSegmentsMaker_ATLxk_H
18
19#include <list>
20#include <map>
21
22#include "GaudiKernel/ServiceHandle.h"
23#include "GaudiKernel/ToolHandle.h"
35
37
38class MsgStream;
39
40namespace InDet{
41
43
45 virtual public ITRT_TrackSegmentsMaker, public AthAlgTool
46 {
48 // Public methods:
50
51 public:
52
54 // Standard tool methods
56
58 (const std::string&,const std::string&,const IInterface*);
60 virtual StatusCode initialize() override;
61 virtual StatusCode finalize () override;
62
64 // Methods to initialize tool for new event or region
66
67 virtual std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData> newEvent (const EventContext& ctx) const override;
68 virtual std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData> newRegion(const EventContext& ctx, const std::vector<IdentifierHash>&) const override;
69 void endEvent(InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override;
70
72 // Methods of seeds production without vertex constraint
74
75 virtual void find(const EventContext &ctx,
78
80 // Iterator through seeds pseudo collection produced accordingly
81 // methods find
83
84 virtual Trk::TrackSegment* next(InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override;
85
87 // Print internal tool parameters and status
89
90 virtual MsgStream& dump (MsgStream & out) const override;
91 virtual std::ostream& dump (std::ostream& out) const override;
92
93 protected:
94
95 class EventData;
96 class EventData : public Trk::EventDataBase<EventData,InDet::ITRT_TrackSegmentsMaker::IEventData>
97 {
99 public:
100 EventData(const TRT_DriftCircleContainer *trtcontainer, unsigned int cirsize) : m_trtcontainer(trtcontainer) {
101 m_segiterator = m_segments.begin();
103 m_circles = new TRT_DriftCircleLinkN_xk[cirsize];
104 }
105
106 ~EventData() { delete [] m_circles; }
107 EventData (const EventData&) = delete;
108 EventData& operator= (const EventData&) = delete;
109
110 protected:
111 const InDet::TRT_DriftCircleContainer *m_trtcontainer = nullptr;
112 std::unique_ptr<InDet::ITRT_TrackExtensionTool::IEventData> m_extEventData;
113 int m_clusters = 0 ;
114 int m_nlocal = 0 ;
115 int m_nsegments = 0 ;
116
117 std::multimap<unsigned int,unsigned int> m_bincluster ;
118 std::multimap<unsigned int,unsigned int> m_sizebin ;
119
120 std::list<Trk::TrackSegment*> m_segments ;
121 std::list<Trk::TrackSegment*>::iterator m_segiterator;
122
123 std::multimap<unsigned int,unsigned int>::reverse_iterator m_sizebin_iterator;
124
125 union {unsigned char H[227500*4]; unsigned int H4[227500];} m_U;
126
127 std::multimap<const InDet::TRT_DriftCircle*,Trk::TrackSegment*> m_clusterSegment;
128 std::multimap<int ,Trk::TrackSegment*> m_qualitySegment;
129
131
132 };
133
135 // Protected data and methods
137
138 StringProperty m_fieldmode{this, "MagneticFieldMode", "MapSolenoid",
139 "Mode of magnetic field"};
140 ToolHandle<ITRT_TrackExtensionTool> m_extensionTool
141 {this, "TrackExtensionTool", "InDet::TRT_TrackExtensionTool_xk"} ; // TRT track extension tool
142
143 Trk::MagneticFieldProperties m_fieldprop ; // Magnetic field properties
144 const TRT_ID * m_trtid{} ;
145 SG::ReadHandleKey<InDet::TRT_DriftCircleContainer> m_trtname{this,"TRT_ClustersContainer","TRT_DriftCircles","RHK to retrieve TRT_DriftCircles"}; // TRTs container ; // Name TRT container
146 SG::ReadCondHandleKey<InDet::TRT_TrackSegmentsToolCondData_xk> m_condDataKey{this, "CondDataKey","TRT_TrackSegmentsToolCondData_xk", "Key of TRT_TrackSegmentsToolCondData"};
149
150 BooleanProperty m_removeNoise{this, "RemoveNoiseDriftCircles", true};
151 IntegerProperty m_clustersCut{this, "MinNumberDriftCircles", 10};
152 FloatProperty m_pTmin{this, "pTmin", 500.};
153 FloatProperty m_sharedfrac{this, "sharedFrac", 0.3};
154 IntegerProperty m_nPhi{this, "NumberAzimuthalChannel", 500,
155 "number azimuthal channel"};
156 IntegerProperty m_nMom{this, "NumberMomentumChannel", 70,
157 "number momentum channel"};
158
160 int m_Ts{} ;
161 int m_Ns128{} ;
162 float m_Psi{} ;
163 float m_Psi128{} ;
164 float m_A{} ;
165 float m_Ai{} ;
166 int m_histsize{} ; // histogram size
167
168
170 // Protected methods
172
173 inline
176 if (not condDataHandle.isValid()) {
177 ATH_MSG_FATAL("Failed to get " << m_condDataKey.key());
178 }
179 return *condDataHandle;
180 }
181
182 void magneticFieldInit();
184 void fillHistogramm (float,int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const;
185 void analyseHistogramm(unsigned char&,unsigned int&,float,int,TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const;
186 unsigned int localMaximum(unsigned int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const;
187
188 void findLocaly(const EventContext &ctx,
189 unsigned int,
190 const Trk::PRDtoTrackMap *prd_to_track_map,
193
195
196 MsgStream& dumpConditions(MsgStream & out) const;
197 static MsgStream& dumpEvent (MsgStream & out,InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) ;
198 };
199
200} // end of name space
201
202#endif // TRT_TrackSegmentsMaker_ATLxk_H
203
#define ATH_MSG_FATAL(x)
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:
std::unique_ptr< InDet::ITRT_TrackExtensionTool::IEventData > m_extEventData
std::list< Trk::TrackSegment * >::iterator m_segiterator
EventData(const TRT_DriftCircleContainer *trtcontainer, unsigned int cirsize)
std::multimap< unsigned int, unsigned int > m_bincluster
std::multimap< unsigned int, unsigned int > m_sizebin
const InDet::TRT_DriftCircleContainer * m_trtcontainer
std::multimap< int,Trk::TrackSegment * > m_qualitySegment
std::multimap< const InDet::TRT_DriftCircle *, Trk::TrackSegment * > m_clusterSegment
union InDet::TRT_TrackSegmentsMaker_ATLxk::EventData::@317121305332267356337266061057375304276022267376 m_U
std::multimap< unsignedint, unsignedint >::reverse_iterator m_sizebin_iterator
EventData & operator=(const EventData &)=delete
MsgStream & dumpConditions(MsgStream &out) const
void findLocaly(const EventContext &ctx, unsigned int, const Trk::PRDtoTrackMap *prd_to_track_map, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const
const TRT_TrackSegmentsToolCondData_xk * getConditionsData() const
void eraseHistogramm(TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
ToolHandle< ITRT_TrackExtensionTool > m_extensionTool
SG::ReadCondHandleKey< InDet::TRT_TrackSegmentsToolCondData_xk > m_condDataKey
SG::ReadHandleKey< InDet::TRT_DriftCircleContainer > m_trtname
void fillHistogramm(float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
virtual Trk::TrackSegment * next(InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override
void analyseHistogramm(unsigned char &, unsigned int &, float, int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
virtual std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventData > newRegion(const EventContext &ctx, const std::vector< IdentifierHash > &) const override
unsigned int localMaximum(unsigned int, TRT_TrackSegmentsMaker_ATLxk::EventData &event_data) const
static MsgStream & dumpEvent(MsgStream &out, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data)
TRT_TrackSegmentsMaker_ATLxk(const std::string &, const std::string &, const IInterface *)
virtual std::unique_ptr< InDet::ITRT_TrackSegmentsMaker::IEventData > newEvent(const EventContext &ctx) const override
void endEvent(InDet::ITRT_TrackSegmentsMaker::IEventData &event_data) const override
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
static void segmentsPreparation(TRT_TrackSegmentsMaker_ATLxk::EventData &event_data)
virtual void find(const EventContext &ctx, InDet::ITRT_TrackSegmentsMaker::IEventData &event_data, InDet::TRT_DetElementLink_xk::TRT_DetElemUsedMap &used) const override
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,...
holding In fact this class is here in order to allow STL container for all features This class is sho...
Primary Vertex Finder.
-event-from-file