ATLAS Offline Software
Loading...
Searching...
No Matches
ITkSiSpacePointsSeedMaker.h
Go to the documentation of this file.
1// -*- C++ -*-
2
3/*
4 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5*/
6
8// Header file for class ITk::SiSpacePointsSeedMaker
10// Version 1.0 3/10/2004 I.Gavrilenko
12
13#ifndef ITkSiSpacePointsSeedMaker_H
14#define ITkSiSpacePointsSeedMaker_H
15
18
25
26//for validation
27#include "GaudiKernel/ITHistSvc.h"
28#include "TFile.h"
29#include "TTree.h"
30
31
32
33
35// MagField cache
39
40#include <iosfwd>
41#include <list>
42#include <vector>
43
44class MsgStream;
45
46
47namespace ITk
48{
49
51 // Object function for ordering space point in R coordinate order
53
55
56 public:
58 return((*s1).radius() < (*s2).radius());
59 }
60 };
61
62
64
75
77 public extends<AthAlgTool, InDet::ISiSpacePointsSeedMaker>
78 {
80 // Public methods:
82
83 public:
84
88
90 (const std::string&,const std::string&,const IInterface*);
91 virtual ~SiSpacePointsSeedMaker() = default;
92 virtual StatusCode initialize() override;
93 virtual StatusCode finalize() override;
95
99
100 virtual void newEvent (const EventContext& ctx, EventData& data, int iteration) const override;
101 virtual void newRegion(const EventContext& ctx, EventData& data,
102 const std::vector<IdentifierHash>& vPixel, const std::vector<IdentifierHash>& vStrip) const override;
103 virtual void newRegion(const EventContext& ctx, EventData& data,
104 const std::vector<IdentifierHash>& vPixel, const std::vector<IdentifierHash>& vStrip,
105 const IRoiDescriptor& iRD) const override;
107
111
112
114 virtual void find2Sp(EventData& data, const std::list<Trk::Vertex>& lv) const override;
115
117 virtual void find3Sp(const EventContext& ctx, EventData& data, const std::list<Trk::Vertex>& lv) const override;
118
121 virtual void find3Sp(const EventContext& ctx, EventData& data, const std::list<Trk::Vertex>& lv, const double* zVertex) const override;
122
125 virtual void findVSp(const EventContext& ctx, EventData& data, const std::list<Trk::Vertex>& lv) const override;
127
132
133 virtual const InDet::SiSpacePointsSeed* next(const EventContext& ctx, EventData& data) const override;
135
136 virtual void writeNtuple(const InDet::SiSpacePointsSeed* seed, const Trk::Track* track, int seedType, long eventNumber) const override;
137 virtual bool getWriteNtupleBoolProperty() const override;
138
142
143 virtual MsgStream& dump(EventData& data, MsgStream& out) const override;
145
146 private:
151 enum Size {arraySizePhi=200,
159
160
162 // Private data and methods
164
166
167 SG::ReadHandleKey<SpacePointContainer> m_spacepointsStrip{this, "SpacePointsStripName", "ITkStripSpacePoints", "Strip space points container"};
168 SG::ReadHandleKey<SpacePointContainer> m_spacepointsPixel{this, "SpacePointsPixelName", "ITkPixelSpacePoints", "Pixel space points container"};
169 SG::ReadHandleKey<SpacePointOverlapCollection> m_spacepointsOverlap{this, "SpacePointsOverlapName", "OverlapSpacePoints"};
170 SG::ReadHandleKey<Trk::PRDtoTrackMap> m_prdToTrackMap{this,"PRDtoTrackMap","","option PRD-to-track association"};
171 SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey{this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"};
172 SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj",
173 "Name of the Magnetic Field conditions object key"};
174
175
177
178 BooleanProperty m_pixel{this, "usePixel", true};
179 BooleanProperty m_strip{this, "useStrip", true};
180 BooleanProperty m_useOverlap{this, "useOverlapSpCollection", true};
181 IntegerProperty m_maxsize{this, "maxSize", 10000};
182 IntegerProperty m_maxsizeSP{this, "maxSizeSP", 4096};
183 IntegerProperty m_maxOneSize{this, "maxSeedsForSpacePoint", 5};
184 FloatProperty m_etamax{this, "etaMax", 2.7};
185 FloatProperty m_r1minv{this, "minVRadius1", 0.};
186 FloatProperty m_r1maxv{this, "maxVRadius1", 60.};
187 FloatProperty m_r2minv{this, "minVRadius2", 70.};
188 FloatProperty m_r2maxv{this, "maxVRadius2", 200.};
189 FloatProperty m_drmin{this, "mindRadius", 5.};
190 FloatProperty m_drmax{this, "maxdRadius", 300.};
191 FloatProperty m_zmin{this, "minZ", -250.};
192 FloatProperty m_zmax{this , "maxZ", +250.};
193 FloatProperty m_r_rmin{this, "radMin", 0.};
194 FloatProperty m_binSizeR{this, "radStep", 2.};
195 FloatProperty m_dzver{this, "maxdZver", 5.};
196 FloatProperty m_dzdrver{this, "maxdZdRver", 0.02};
197 FloatProperty m_maxdImpact{this, "maxdImpact", 10.};
198 FloatProperty m_maxdImpactSSS{this, "maxdImpactSSS", 20.};
199 FloatProperty m_dzmaxPPP{this, "dZmaxForPPPSeeds", 600.};
200
201 FloatProperty m_maxScore{this, "maximumAcceptedSeedScore", 100.};
202 IntegerProperty m_maxOneSizeSSS{this, "maxSeedsForSpacePointStrips", 5};
203 IntegerProperty m_maxOneSizePPP{this, "maxSeedsForSpacePointPixels", 5};
204 BooleanProperty m_alwaysKeepConfirmedPixelSeeds{this, "alwaysKeepConfirmedPixelSeeds", false};
205 BooleanProperty m_alwaysKeepConfirmedStripSeeds{this, "alwaysKeepConfirmedStripSeeds", false};
206 BooleanProperty m_fastTracking{this, "useFastTracking", false};
207 FloatProperty m_seedScoreBonusPPP{this, "seedScoreBonusPPP", -200.};
208 FloatProperty m_seedScoreBonusSSS{this, "seedScoreBonusSSS", -400.};
209 BooleanProperty m_optimisePhiBinning{this, "optimisePhiBinning", true};
210 FloatProperty m_rminSSS{this, "radMinSSS", 400.};
211 FloatProperty m_rmaxSSS{this, "radMaxSSS", 1000.};
212 BooleanProperty m_isLRT{this, "isLRT", false};
213 FloatProperty m_drminPPP{this, "mindRadiusPPP", 6.};
214 FloatProperty m_drmaxPPP{this, "maxdRadiusPPP", 150.};
215 FloatProperty m_zmaxPPP{this, "maxZPPP", 2700.};
216 FloatProperty m_drminSSS{this, "mindRadiusSSS", 20.};
217 FloatProperty m_drmaxSSS{this, "maxdRadiusSSS", 300.};
218 FloatProperty m_zmaxSSS{this, "maxZSSS", 2700.};
219 FloatProperty m_dImpactCutSlopeUnconfirmedSSS{this, "dImpactCutSlopeUnconfirmedSSS", 1.0};
220 FloatProperty m_dImpactCutSlopeUnconfirmedPPP{this, "dImpactCutSlopeUnconfirmedPPP", 0.};
221 FloatProperty m_seedScoreBonusConfirmationSeed{this, "seedScoreBonusConfirmationSeed", -200.};
222 BooleanProperty m_useSeedConfirmation{this, "useSeedConfirmation", false};
224
226
227 FloatProperty m_etamin{this, "etaMin", 0.};
228 FloatProperty m_r_rmax{this, "radMax", 1100.};
229 FloatProperty m_ptmin{this, "pTmin", 500.};
230 FloatProperty m_umax{this, "minSeedsQuality", 0.};
232
234
235 BooleanProperty m_checketa{this, "checkEta", false};
237
239
241
242 float m_dzdrmin0{0.};
243 float m_dzdrmax0{0.};
244 float m_ipt{0.};
245 float m_ipt2{0.};
246 float m_COF{134 * .05f * 9};
247 float m_dzMaxFast {200.};
248 float m_R2MaxFast {2025}; // 45mm*45mm. Updated for ITK Layout 03-00-00
249 float m_rmaxPPP {140.};
250 float m_dzmaxSSS {900.};
253
255
256 Gaudi::Property<bool> m_writeNtuple {this, "WriteNtuple", false, "Flag to write Validation Ntuples"};
260 mutable std::mutex m_mutex;
261 mutable std::string m_treeName ATLAS_THREAD_SAFE;
262 mutable TString m_treeFolder ATLAS_THREAD_SAFE;
263 mutable float m_d0 ATLAS_THREAD_SAFE = 0;
264 mutable float m_z0 ATLAS_THREAD_SAFE = 0;
265 mutable float m_pt ATLAS_THREAD_SAFE = 0;
266 mutable float m_eta ATLAS_THREAD_SAFE = 0;
267 mutable double m_x1 ATLAS_THREAD_SAFE = 0;
268 mutable double m_x2 ATLAS_THREAD_SAFE = 0;
269 mutable double m_x3 ATLAS_THREAD_SAFE = 0;
270 mutable double m_y1 ATLAS_THREAD_SAFE = 0;
271 mutable double m_y2 ATLAS_THREAD_SAFE = 0;
272 mutable double m_y3 ATLAS_THREAD_SAFE = 0;
273 mutable double m_z1 ATLAS_THREAD_SAFE = 0;
274 mutable double m_z2 ATLAS_THREAD_SAFE = 0;
275 mutable double m_z3 ATLAS_THREAD_SAFE = 0;
276 mutable double m_r1 ATLAS_THREAD_SAFE = 0;
277 mutable double m_r2 ATLAS_THREAD_SAFE = 0;
278 mutable double m_r3 ATLAS_THREAD_SAFE = 0;
279 mutable float m_quality ATLAS_THREAD_SAFE = 0;
280 mutable int m_type ATLAS_THREAD_SAFE = 0;
281 mutable double m_dzdr_t ATLAS_THREAD_SAFE = 0;
282 mutable double m_dzdr_b ATLAS_THREAD_SAFE = 0;
283 mutable bool m_givesTrack ATLAS_THREAD_SAFE = 0;
284 mutable float m_trackPt ATLAS_THREAD_SAFE = 0;
285 mutable float m_trackEta ATLAS_THREAD_SAFE = 0;
286 mutable long m_eventNumber ATLAS_THREAD_SAFE = 0;
288
289
291 int m_nBinsR{0};
298
299
310
311
313 std::array<int,arraySizePhiZ> m_nNeighbourCellsBottomPPP{};
314 std::array<int,arraySizePhiZ> m_nNeighbourCellsTopPPP{};
315 std::array<std::array<int, arraySizeNeighbourBins>, arraySizePhiZ> m_neighbourCellsBottomPPP{};
316 std::array<std::array<int, arraySizeNeighbourBins>, arraySizePhiZ> m_neighbourCellsTopPPP{};
317
318 std::array<int,arraySizePhiZ> m_nNeighbourCellsBottomSSS{};
319 std::array<int,arraySizePhiZ> m_nNeighbourCellsTopSSS{};
320 std::array<std::array<int, arraySizeNeighbourBins>, arraySizePhiZ> m_neighbourCellsBottomSSS{};
321 std::array<std::array<int, arraySizeNeighbourBins>, arraySizePhiZ> m_neighbourCellsTopSSS{};
322
323 std::array<int,arraySizePhiZV> m_nNeighboursVertexPhiZ{};
324 std::array<std::array<int, arraySizeNeighbourBinsVertex>, arraySizePhiZV> m_neighboursVertexPhiZ{};
325
326
328 // Private methods
331
336
337 MsgStream& dumpConditions(EventData& data, MsgStream& out) const;
338 static MsgStream& dumpEvent(EventData& data, MsgStream& out) ;
339
340 void buildFrameWork();
341
342 static void buildConnectionMaps(std::array<int, arraySizePhiZ>& nNeighbourCellsBottom,
343 std::array<int, arraySizePhiZ>& nNeighbourCellsTop,
344 std::array<std::array<int, arraySizeNeighbourBins>, arraySizePhiZ>& neighbourCellsBottom,
345 std::array<std::array<int, arraySizeNeighbourBins>, arraySizePhiZ>& neighbourCellsTop,
346 int maxPhiBin, bool isSSS);
347 static void buildConnectionMapsVertex(std::array<int, arraySizePhiZV>& nNeighbourCells,
348 std::array<std::array<int, arraySizeNeighbourBinsVertex>, arraySizePhiZV>& neighbourCells,
349 int maxPhiBin);
350
351 void buildBeamFrameWork(EventData& data) const;
352
366 static float azimuthalStep(const float pTmin,const float maxd0,const float Rmin,const float Rmax) ;
367
368
380 SiSpacePointForSeed* newSpacePoint(EventData& data, const Trk::SpacePoint*const& sp, std::span<float, 15> r, bool usePixStripInform=false) const;
381
382 static void newSeed
383 (EventData& data,
385
386 void newOneSeed
387 (EventData& data,
389 SiSpacePointForSeed*&,float,float) const;
390
391 void newOneSeedQ
392 (EventData& data,
394 SiSpacePointForSeed*&,float,float) const;
395
397 (EventData& data,
399
400 static void fillSeeds(EventData& data) ;
401 void fillLists(EventData& data) const;
402 static void pixInform(const Trk::SpacePoint* sp, float* r) ;
403 static void stripInform(EventData& data,const Trk::SpacePoint* sp, float* r) ;
404 static void erase(EventData& data) ;
405 void production2Sp(EventData& data) const;
406 void production3Sp(EventData& data) const;
407
434 (EventData& data,
435 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & iter_bottomCands,
436 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & iter_endBottomCands,
437 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & iter_topCands,
438 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & iter_endTopCands,
439 const int numberBottomCells, const int numberTopCells, int& nseed) const;
440
442 (EventData& data,
443 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & iter_bottomCands,
444 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & iter_endBottomCands,
445 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & iter_topCands,
446 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & iter_endTopCands,
447 const int numberBottomCells, const int numberTopCells, int& nseed) const;
448
451 (EventData& /*data*/,
452 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & /*rb*/,
453 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & /*rbe*/,
454 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & /*rt*/,
455 std::array<std::vector<SiSpacePointForSeed*>::iterator, arraySizeNeighbourBins> & /*rte*/,
456 const int /*numberBottomCells*/, const int /*numberTopCells*/, int& /*nseed*/) const;
457
467 (EventData& data, SiSpacePointForSeed*& SPb, SiSpacePointForSeed*& SP0, float Zob) const;
469 (EventData& data, SiSpacePointForSeed*& SPb, SiSpacePointForSeed*& SP0, float Zob) const;
471 (EventData& data, SiSpacePointForSeed*& SPb, SiSpacePointForSeed*& SP0, float Zob) const;
472
473
486 bool isConfirmedSeed(const SiSpacePointForSeed* bottomSP, const SiSpacePointForSeed* topSP, float quality) const;
487
488
489 void sort(std::vector<InDet::FloatInt>& s, int start, int size) const;
490 bool newVertices(EventData& data, const std::list<Trk::Vertex>&) const;
491 void findNext(EventData& data) const;
492 bool isZCompatible(EventData& data, float Zv, float R, float T) const;
493 static void convertToBeamFrameWork(EventData& data, const Trk::SpacePoint*,float*) ;
494 bool isUsed(const Trk::SpacePoint*, const Trk::PRDtoTrackMap &prd_to_track_map) const;
495
496 void initializeEventData(EventData& data, const EventContext& ctx) const;
497 };
498
500 // Object-function for curvature seeds comparison
502
504 public:
505 bool operator ()
506 (const std::pair<float,SiSpacePointForSeed*>& i1,
507 const std::pair<float,SiSpacePointForSeed*>& i2)
508 {
509 return i1.first < i2.first;
510 }
511 };
512
513
515 // Test is space point used
517
518 inline
519 bool SiSpacePointsSeedMaker::isUsed(const Trk::SpacePoint* sp, const Trk::PRDtoTrackMap &prd_to_track_map) const
520 {
521 const Trk::PrepRawData* d = sp->clusterList().first;
522 if (!d || !prd_to_track_map.isUsed(*d)) return false;
523
524 d = sp->clusterList().second;
525 if (!d || prd_to_track_map.isUsed(*d)) return true;
526
527 return false;
528 }
529
531 // The procedure sorts the elements into ascending order.
533
534 inline
535 void SiSpacePointsSeedMaker::sort(std::vector<InDet::FloatInt>& s, int start, int size) const
536 {
537 //QuickSort for fast tracking currently buggy
538 //TBC if really faster than std::sort
539 //Using std::sort in all cases for now
540 std::sort(s.begin()+start,s.begin()+start+size,[](const InDet::FloatInt a, const InDet::FloatInt b)->bool {return a.Fl < b.Fl;});
541 }
542
543} // namespace ITk
544
545#endif // ITkSiSpacePointsSeedMaker_H
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
static Double_t sp
static Double_t a
Describes the API of the Region of Ineterest geometry.
bool operator()(SiSpacePointForSeed *s1, SiSpacePointForSeed *s2)
SG::ReadHandleKey< SpacePointContainer > m_spacepointsPixel
float m_seedScoreThresholdSSSConfirmationSeed
max (score is assigned negative sign) score for SSS seeds with confirmation seed requirement.
static MsgStream & dumpEvent(EventData &data, MsgStream &out)
bool isZCompatible(EventData &data, float Zv, float R, float T) const
std::array< std::array< int, arraySizeNeighbourBins >, arraySizePhiZ > m_neighbourCellsBottomSSS
void newOneSeedWithCurvaturesComparisonPPP(EventData &data, SiSpacePointForSeed *&SPb, SiSpacePointForSeed *&SP0, float Zob) const
std::array< int, arraySizePhiZ > m_nNeighbourCellsTopSSS
static void pixInform(const Trk::SpacePoint *sp, float *r)
void fillLists(EventData &data) const
ServiceHandle< ITHistSvc > m_thistSvc
Flag to write validation ntuples. Turned off by default.
virtual StatusCode finalize() override
SiSpacePointForSeed * newSpacePoint(EventData &data, const Trk::SpacePoint *const &sp) const
Create a SiSpacePointForSeed from the space point.
virtual const InDet::SiSpacePointsSeed * next(const EventContext &ctx, EventData &data) const override
void production3SpPPP(EventData &data, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &iter_bottomCands, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &iter_endBottomCands, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &iter_topCands, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &iter_endTopCands, const int numberBottomCells, const int numberTopCells, int &nseed) const
SiSpacePointsSeedMaker(const std::string &, const std::string &, const IInterface *)
SiSpacePointsSeedMaker(const SiSpacePointsSeedMaker &)=delete
bool isConfirmedSeed(const SiSpacePointForSeed *bottomSP, const SiSpacePointForSeed *topSP, float quality) const
Helper method to determine if a seed is 'confirmed' - this means that a second seed exists with compa...
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
void newOneSeed(EventData &data, SiSpacePointForSeed *&, SiSpacePointForSeed *&, SiSpacePointForSeed *&, float, float) const
static void buildConnectionMapsVertex(std::array< int, arraySizePhiZV > &nNeighbourCells, std::array< std::array< int, arraySizeNeighbourBinsVertex >, arraySizePhiZV > &neighbourCells, int maxPhiBin)
Build maps for radius-azimuthal-Z sorted collections for Z Similar logic to the above,...
static float azimuthalStep(const float pTmin, const float maxd0, const float Rmin, const float Rmax)
Determine the expected azimuthal trajectory displacement in phi in presence of the magnetic field for...
virtual StatusCode initialize() override
void newOneSeedWithCurvaturesComparison(EventData &data, SiSpacePointForSeed *&, SiSpacePointForSeed *&, float) const
virtual ~SiSpacePointsSeedMaker()=default
void production3SpTrigger(EventData &, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &, const int, const int, int &) const
as above, but for the trigger
std::array< int, arraySizePhiZ > m_nNeighbourCellsBottomSSS
void findNext(EventData &data) const
bool newVertices(EventData &data, const std::list< Trk::Vertex > &) const
Size
enum for array sizes Note that this stores the maximum capacities, the actual binnings do not always ...
@ arraySizeZ
capacity of the 1D z arrays
@ arraySizeNeighbourBins
array size to store neighbouring phi-z-regions in the seed finding
@ arraySizePhiV
array size in phi for vertexing
@ arraySizeZV
array size in z for vertexing
@ arraySizePhiZV
array size in phi-Z 2D for the vertexing
@ arraySizePhi
capacity of the 1D phi arrays
@ arraySizePhiZ
capacity for the 2D phi-z arrays
float m_inverseBinSizePhiPPP
cache the inverse bin size in phi which we use - needed to evaluate phi bin locations
virtual void writeNtuple(const InDet::SiSpacePointsSeed *seed, const Trk::Track *track, int seedType, long eventNumber) const override
void production3Sp(EventData &data) const
bool isUsed(const Trk::SpacePoint *, const Trk::PRDtoTrackMap &prd_to_track_map) const
std::array< std::array< int, arraySizeNeighbourBins >, arraySizePhiZ > m_neighbourCellsBottomPPP
mapping of neighbour cells in the 2D phi-z binning to consider for the "bottom SP" search for central...
virtual void findVSp(const EventContext &ctx, EventData &data, const std::list< Trk::Vertex > &lv) const override
with variable number space points with or without vertex constraint Variable means (2,...
static void newSeed(EventData &data, SiSpacePointForSeed *&, SiSpacePointForSeed *&, float)
void newOneSeedQ(EventData &data, SiSpacePointForSeed *&, SiSpacePointForSeed *&, SiSpacePointForSeed *&, float, float) const
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
int m_maxPhiBinPPP
number of bins in phi
void sort(std::vector< InDet::FloatInt > &s, int start, int size) const
static void fillSeeds(EventData &data)
std::array< int, arraySizePhiZ > m_nNeighbourCellsTopPPP
number of neighbouring phi-z bins to consider when looking for "top SP" candidates for each phi-z bin
void newOneSeedWithCurvaturesComparisonSSS(EventData &data, SiSpacePointForSeed *&SPb, SiSpacePointForSeed *&SP0, float Zob) const
This creates all possible seeds with the passed central and bottom SP, using all top SP candidates wh...
std::array< std::array< int, arraySizeNeighbourBinsVertex >, arraySizePhiZV > m_neighboursVertexPhiZ
MsgStream & dumpConditions(EventData &data, MsgStream &out) const
virtual void find2Sp(EventData &data, const std::list< Trk::Vertex > &lv) const override
with two space points with or without vertex constraint
float m_seedScoreThresholdPPPConfirmationSeed
Seed score thresholds defined based on the modifiers defined as configurables above.
std::array< int, arraySizePhiZ > m_nNeighbourCellsBottomPPP
arrays associating bins to each other for SP formation
std::array< std::array< int, arraySizeNeighbourBins >, arraySizePhiZ > m_neighbourCellsTopSSS
virtual bool getWriteNtupleBoolProperty() const override
std::array< int, arraySizePhiZV > m_nNeighboursVertexPhiZ
SG::ReadHandleKey< SpacePointOverlapCollection > m_spacepointsOverlap
virtual void newEvent(const EventContext &ctx, EventData &data, int iteration) const override
SG::ReadHandleKey< SpacePointContainer > m_spacepointsStrip
static void convertToBeamFrameWork(EventData &data, const Trk::SpacePoint *, float *)
void production3SpSSS(EventData &data, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &iter_bottomCands, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &iter_endBottomCands, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &iter_topCands, std::array< std::vector< SiSpacePointForSeed * >::iterator, arraySizeNeighbourBins > &iter_endTopCands, const int numberBottomCells, const int numberTopCells, int &nseed) const
: Seed production from space points.
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
static void stripInform(EventData &data, const Trk::SpacePoint *sp, float *r)
void initializeEventData(EventData &data, const EventContext &ctx) const
std::array< std::array< int, arraySizeNeighbourBins >, arraySizePhiZ > m_neighbourCellsTopPPP
mapping of neighbour cells in the 2D phi-z binning to consider for the "top SP" search for central SP...
virtual void newRegion(const EventContext &ctx, EventData &data, const std::vector< IdentifierHash > &vPixel, const std::vector< IdentifierHash > &vStrip) const override
void newOneSeedWithCurvaturesComparisonSeedConfirmation(EventData &data, SiSpacePointForSeed *&SPb, SiSpacePointForSeed *&SP0, float Zob) const
void buildBeamFrameWork(EventData &data) const
virtual void find3Sp(const EventContext &ctx, EventData &data, const std::list< Trk::Vertex > &lv) const override
with three space points with or without vertex constraint
int m_nBinsR
number of bins in the radial coordinate
static void buildConnectionMaps(std::array< int, arraySizePhiZ > &nNeighbourCellsBottom, std::array< int, arraySizePhiZ > &nNeighbourCellsTop, std::array< std::array< int, arraySizeNeighbourBins >, arraySizePhiZ > &neighbourCellsBottom, std::array< std::array< int, arraySizeNeighbourBins >, arraySizePhiZ > &neighbourCellsTop, int maxPhiBin, bool isSSS)
void production2Sp(EventData &data) const
SiSpacePointsSeedMaker & operator=(const SiSpacePointsSeedMaker &)=delete
InDet::SiSpacePointsSeedMakerEventData holds event dependent data used by ISiSpacePointsSeedMaker.
Property holding a SG store/key/clid from which a ReadHandle is made.
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?
int r
Definition globals.cxx:22
InDet::SiSpacePointsSeedMakerEventData EventData
-event-from-file
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.