ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::SiSPGNNTrackMaker Class Reference

InDet::SiSPGNNTrackMaker is an algorithm that uses the GNN-based track finding tool to reconstruct tracks and the use track fitter to obtain track parameters. More...

#include <SiSPGNNTrackMaker.h>

Inheritance diagram for InDet::SiSPGNNTrackMaker:
Collaboration diagram for InDet::SiSPGNNTrackMaker:

Public Member Functions

 SiSPGNNTrackMaker (const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) const override
virtual bool isClonable () const override
 Make this algorithm clonable.
MsgStream & dump (MsgStream &out) const
std::ostream & dump (std::ostream &out) const
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

MsgStream & dumptools (MsgStream &out) const
MsgStream & dumpevent (MsgStream &out) const
int passEtaDepCuts (const Trk::Track &track) const
std::tuple< bool, int, std::unique_ptr< Trk::Track > > doFitAndCut (const EventContext &ctx, std::vector< const Trk::SpacePoint * > &spacePoints, std::vector< const Trk::PrepRawData * > &clusters, int &trackCounter) const
 Fits a track and applies quality cuts to determine if it should be kept.
bool prefitCheck (unsigned int nPix, unsigned int nStrip, unsigned int nClusters, unsigned int nSpacePoints) const
std::unique_ptr< Trk::TrackfitTrack (const EventContext &ctx, std::vector< const Trk::PrepRawData * > clusters, const Trk::TrackParameters &initial_params, int trackCounter) const
std::vector< const Trk::SpacePoint * > getSpacePoints (const std::vector< uint32_t > &trackIndices, const std::vector< const Trk::SpacePoint * > &allSpacePoints) const
std::vector< const Trk::PrepRawData * > spacePointsToClusters (const std::vector< const Trk::SpacePoint * > &spacePoints) const
std::vector< const Trk::PrepRawData * > getClusters (const std::vector< std::vector< uint32_t > > &clusterTracks, const std::vector< const Trk::PrepRawData * > &allClusters, int trackNumber) const
std::vector< const Trk::SpacePoint * > getSpacePointsInEvent (const EventContext &ctx, int eventNumber) const
std::vector< const Trk::SpacePoint * > getSpacePointsInEvent (const EventContext &ctx, const SG::ReadHandleKey< SpacePointContainer > &containerKey) const
std::vector< const Trk::SpacePoint * > getSpacePointsInEvent (const EventContext &ctx, const SG::ReadHandleKey< SpacePointOverlapCollection > &containerKey) const
std::vector< const Trk::PrepRawData * > getClustersInEvent (const EventContext &ctx, int eventNumber) const
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Protected Attributes

SG::ReadHandleKey< SpacePointContainerm_SpacePointsPixelKey
SG::ReadHandleKey< SpacePointContainerm_SpacePointsSCTKey
SG::ReadHandleKey< SpacePointOverlapCollectionm_SpacePointsOverlapKey {this, "SpacePointsOverlapName", "ITkOverlapSpacePoints"}
SG::ReadHandleKey< InDet::PixelClusterContainer > m_ClusterPixelKey
SG::ReadHandleKey< InDet::SCT_ClusterContainer > m_ClusterStripKey
SG::WriteHandleKey< TrackCollectionm_outputTracksKey
ToolHandle< IGNNTrackFinderm_gnnTrackFinder
 GNN-based track finding tool that produces track candidates.
ToolHandle< ISeedFitterm_seedFitter
ToolHandle< Trk::ITrackFitterm_trackFitter
 Track Fitter.
ToolHandle< Trk::IExtendedTrackSummaryToolm_trackSummaryTool
ToolHandle< IGNNTrackReaderToolm_gnnTrackReader
BooleanProperty m_areInputClusters
BooleanProperty m_doRecoTrackCuts
ServiceHandle< IInDetEtaDependentCutsSvcm_etaDependentCutsSvc
UnsignedIntegerProperty m_minClusters {this, "minClusters", 6, "Min number clusters"}
UnsignedIntegerProperty m_minPixelClusters {this, "minPixelClusters", 1, "min pixel clusters"}
UnsignedIntegerProperty m_minStripClusters {this, "minStripClusters", 0, "Minimum number of strip clusters"}
DoubleProperty m_pTmin {this, "pTmin", 400., "min pT"}
DoubleProperty m_etamax {this, "etamax", 4., "max reco eta"}
BooleanProperty m_doRecoverFailedFits

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

InDet::SiSPGNNTrackMaker is an algorithm that uses the GNN-based track finding tool to reconstruct tracks and the use track fitter to obtain track parameters.

It turns a collection of Trk::Tracks.

Author
xiang.nosp@m.yang.nosp@m..ju@c.nosp@m.ern..nosp@m.ch

Definition at line 43 of file SiSPGNNTrackMaker.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ SiSPGNNTrackMaker()

InDet::SiSPGNNTrackMaker::SiSPGNNTrackMaker ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 13 of file SiSPGNNTrackMaker.cxx.

15 : AthReentrantAlgorithm(name, pSvcLocator)
16{
17
18}

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ doFitAndCut()

std::tuple< bool, int, std::unique_ptr< Trk::Track > > InDet::SiSPGNNTrackMaker::doFitAndCut ( const EventContext & ctx,
std::vector< const Trk::SpacePoint * > & spacePoints,
std::vector< const Trk::PrepRawData * > & clusters,
int & trackCounter ) const
protected

Fits a track and applies quality cuts to determine if it should be kept.

Parameters
ctxEvent context for conditions access
clustersVector of cluster measurements used to fit the track
initial_paramsInitial track parameters from seed finding
trackCounterIndex/ID of the track candidate being processed
Returns
std::tuple<bool, int, std::unique_ptr<Trk::Track>>
  • bool: Whether the fit was successful
  • int: Error/status code (0 for success, >0 for specific failure modes)
  • Track: The fitted track (nullptr if fit fails or track rejected)

This function performs the following steps:

  1. Fits the track using the provided clusters and initial parameters
  2. Checks basic kinematic cuts (pT, eta)
  3. Computes track summary (hits, holes)
  4. Applies eta-dependent quality cuts if configured

Error codes:

  • 0: Success, track passes all cuts
  • 1: Failed minimum silicon hits requirement
  • 2: Failed minimum pixel hits requirement
  • 3: Failed minimum pT requirement
  • 4: Failed maximum z0 requirement
  • 5: Failed maximum d0 requirement
  • 6: Failed maximum holes requirement
  • 999: Track fit failed
Note
The track fitting is performed using the configured track fitter tool
Quality cuts are configurable via job options

Definition at line 466 of file SiSPGNNTrackMaker.cxx.

472 {
473 // get cluster list
474 int nPIX(0), nStrip(0);
475
476 for (const Trk::PrepRawData* cl : clusters) {
477 if (cl->type(Trk::PrepRawDataType::PixelCluster)) nPIX++;
479 }
480
481 ATH_MSG_DEBUG("Track " << trackCounter << " has " << spacePoints.size()
482 << " space points, " << clusters.size()
483 << " clusters, " << nPIX << " pixel clusters, "
484 << nStrip << " strip clusters");
485
486 // check hit counts
487 if (not prefitCheck(nPIX, nStrip, clusters.size(), spacePoints.size())) {
488 ATH_MSG_DEBUG("Track " << trackCounter << " does not pass prefit cuts, skipping");
489 return std::make_tuple(false, 999, nullptr);
490 }
491
492 // conformal mapping for track parameters
493 auto trkParameters = m_seedFitter->fit(spacePoints);
494 if (trkParameters == nullptr) {
495 ATH_MSG_DEBUG("Conformal mapping failed");
496 return std::make_tuple(false, 999, nullptr);
497 }
498
499 std::unique_ptr<Trk::Track> track = fitTrack(ctx, clusters, *trkParameters, trackCounter);
500
501 if (track == nullptr || track->perigeeParameters() == nullptr) {
502 ATH_MSG_DEBUG("Track " << trackCounter
503 << " fails the chi2 fit, skipping");
504 return std::make_tuple(false, 999, nullptr);
505 }
506
507 // compute pT and skip if pT too low
508 if (track->perigeeParameters()->pT() < m_pTmin) {
509 ATH_MSG_DEBUG("Track " << trackCounter
510 << "with pt = " << track->perigeeParameters()->pT()
511 << " has pT too low, skipping track!");
512 return std::make_tuple(false, 999, nullptr);
513 }
514
515 // get rid of tracks with eta too large
516 if (std::abs(track->perigeeParameters()->eta()) > m_etamax) {
517 ATH_MSG_DEBUG("Track " << trackCounter << "with eta = "
518 << std::abs(track->perigeeParameters()->eta())
519 << " has eta too high, skipping track!");
520 return std::make_tuple(false, 999, nullptr);
521 }
522
523 // if track fit succeeds, eta and pT within range, compute track summary. This is quite expensive.
524 m_trackSummaryTool->computeAndReplaceTrackSummary(
525 *track, false /* DO NOT suppress hole search*/);
526
527 int passTrackCut = (m_doRecoTrackCuts) ? passEtaDepCuts(*track) : -1;
528
529 return std::make_tuple(true, passTrackCut, std::move(track));
530
531 }
#define ATH_MSG_DEBUG(x)
ToolHandle< ISeedFitter > m_seedFitter
std::unique_ptr< Trk::Track > fitTrack(const EventContext &ctx, std::vector< const Trk::PrepRawData * > clusters, const Trk::TrackParameters &initial_params, int trackCounter) const
BooleanProperty m_doRecoTrackCuts
int passEtaDepCuts(const Trk::Track &track) const
bool prefitCheck(unsigned int nPix, unsigned int nStrip, unsigned int nClusters, unsigned int nSpacePoints) const
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
@ nStrip
Get number of strips.
Definition TauDefs.h:204

◆ dump() [1/2]

MsgStream & InDet::SiSPGNNTrackMaker::dump ( MsgStream & out) const

Definition at line 621 of file SiSPGNNTrackMaker.cxx.

622{
623 out<<std::endl;
624 if(msgLvl(MSG::DEBUG)) return dumpevent(out);
625 else return dumptools(out);
626}
bool msgLvl(const MSG::Level lvl) const
MsgStream & dumpevent(MsgStream &out) const
MsgStream & dumptools(MsgStream &out) const

◆ dump() [2/2]

std::ostream & InDet::SiSPGNNTrackMaker::dump ( std::ostream & out) const

Definition at line 651 of file SiSPGNNTrackMaker.cxx.

652{
653 return out;
654}

◆ dumpevent()

MsgStream & InDet::SiSPGNNTrackMaker::dumpevent ( MsgStream & out) const
protected

Definition at line 646 of file SiSPGNNTrackMaker.cxx.

647{
648 return out;
649}

◆ dumptools()

MsgStream & InDet::SiSPGNNTrackMaker::dumptools ( MsgStream & out) const
protected

Definition at line 632 of file SiSPGNNTrackMaker.cxx.

633{
634 out<<"| Location of output tracks | "
635 <<std::endl;
636 out<<"|----------------------------------------------------------------"
637 <<"----------------------------------------------------|"
638 <<std::endl;
639 return out;
640}

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode InDet::SiSPGNNTrackMaker::execute ( const EventContext & ctx) const
overridevirtual

Definition at line 84 of file SiSPGNNTrackMaker.cxx.

85{
86 SG::WriteHandle<TrackCollection> outputTracks{m_outputTracksKey, ctx};
87 ATH_CHECK(outputTracks.record(std::make_unique<TrackCollection>()));
88
89 // get event info
90 uint32_t runNumber = ctx.eventID().run_number();
91 uint32_t eventNumber = ctx.eventID().event_number();
92
93 // get all space points from event
94 std::vector<const Trk::SpacePoint*> spacePoints = getSpacePointsInEvent(ctx, eventNumber);
95
96 // get all clusters from event
97 std::vector<const Trk::PrepRawData*> allClusters = getClustersInEvent(ctx, eventNumber);
98
99 // get tracks from GNN chain
100 std::vector<std::vector<uint32_t> > TT;
101 std::vector<std::vector<uint32_t> > clusterTracks;
102 if (m_gnnTrackFinder.isSet()) {
103 ATH_CHECK(m_gnnTrackFinder->getTracks(spacePoints, TT));
104 } else if (m_gnnTrackReader.isSet()) {
105 // if track candidates are built from cluster, get both clusters and SPs
107 m_gnnTrackReader->getTracks(runNumber, eventNumber, clusterTracks, TT) :
108 m_gnnTrackReader->getTracks(runNumber, eventNumber, TT);
109 } else {
110 ATH_MSG_ERROR("Both GNNTrackFinder and GNNTrackReader are not set");
111 return StatusCode::FAILURE;
112 }
113
114 ATH_MSG_DEBUG("Event " << eventNumber << " obtained " << TT.size() << " Tracks");
115
116 // loop over all track candidates
117 // and perform track fitting for each.
118 int trackCounter = -1;
119 std::vector<int> status_codes;
120 // track processing loop
121 for (auto& trackIndices : TT) {
122 // For each track candidate:
123 trackCounter++;
124
125 // 1. Sort space points by distance from origin
126 std::vector<const Trk::SpacePoint*> trackCandidate = getSpacePoints(trackIndices, spacePoints);
127
128 // 2. Get associated clusters
129 // if track candidates are built from cluster, get both clusters and SPs
130 std::vector<const Trk::PrepRawData*> clusters = m_areInputClusters ?
131 getClusters (clusterTracks, allClusters, trackCounter)
132 : spacePointsToClusters(trackCandidate) ;
133
134 // 3. Perform track fitting:
135 // - Initial conformal mapping
136 // - First chi2 fit without outlier removal
137 // - Second chi2 fit with improved initial estimate of track parameters and with outlier removal
138 // 4. Apply quality cuts (pT, eta)
139 // 5. Compute track summary
140 // 6. Store track if it passes all criteria
141 auto [fitSuccess, passTrackCut, track] = doFitAndCut(ctx, trackCandidate, clusters, trackCounter);
142
143 if (not fitSuccess) {
144 continue;
145 }
146
147 if (passTrackCut <= 0) {
148 outputTracks->push_back(track.release());
149 }
150
151 status_codes.push_back(passTrackCut);
152
153 }
154
155 if (m_doRecoTrackCuts) {
156 ATH_MSG_INFO("Event " << eventNumber << " has " << status_codes.size() << " tracks found, "
157 << std::count(status_codes.begin(), status_codes.end(), 0)
158 << " tracks remains after applying track cuts");
159 } else {
160 ATH_MSG_INFO("Event " << eventNumber << " has " << status_codes.size() << " tracks found, all tracks are kept");
161 }
162
163 return StatusCode::SUCCESS;
164}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
ToolHandle< IGNNTrackReaderTool > m_gnnTrackReader
std::vector< const Trk::SpacePoint * > getSpacePoints(const std::vector< uint32_t > &trackIndices, const std::vector< const Trk::SpacePoint * > &allSpacePoints) const
BooleanProperty m_areInputClusters
std::vector< const Trk::PrepRawData * > getClustersInEvent(const EventContext &ctx, int eventNumber) const
SG::WriteHandleKey< TrackCollection > m_outputTracksKey
std::vector< const Trk::PrepRawData * > spacePointsToClusters(const std::vector< const Trk::SpacePoint * > &spacePoints) const
ToolHandle< IGNNTrackFinder > m_gnnTrackFinder
GNN-based track finding tool that produces track candidates.
std::vector< const Trk::SpacePoint * > getSpacePointsInEvent(const EventContext &ctx, int eventNumber) const
std::vector< const Trk::PrepRawData * > getClusters(const std::vector< std::vector< uint32_t > > &clusterTracks, const std::vector< const Trk::PrepRawData * > &allClusters, int trackNumber) const
std::tuple< bool, int, std::unique_ptr< Trk::Track > > doFitAndCut(const EventContext &ctx, std::vector< const Trk::SpacePoint * > &spacePoints, std::vector< const Trk::PrepRawData * > &clusters, int &trackCounter) const
Fits a track and applies quality cuts to determine if it should be kept.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
setEventNumber uint32_t

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ fitTrack()

std::unique_ptr< Trk::Track > InDet::SiSPGNNTrackMaker::fitTrack ( const EventContext & ctx,
std::vector< const Trk::PrepRawData * > clusters,
const Trk::TrackParameters & initial_params,
int trackCounter ) const
protected

Definition at line 533 of file SiSPGNNTrackMaker.cxx.

539 {
540
542 // first fit the track with local parameters and without outlier removal.
543 bool keepOnTrying = true;
544 std::unique_ptr<Trk::Track> track;
545 while (keepOnTrying) {
546 track = m_trackFitter->fit(ctx, clusters, initial_params, false, matEffects);
547 // any need to recover a failed fit ?
548 if (track == nullptr || track->perigeeParameters() == nullptr) {
549 clusters.pop_back();
551 keepOnTrying = false;
552 }
553 } else {
554 keepOnTrying = false;
555 }
556 }
557
558 if (track == nullptr || track->perigeeParameters() == nullptr) {
559 ATH_MSG_DEBUG("Track " << trackCounter
560 << " fails the first chi2 fit, skipping");
561 return track;
562 }
563
564 // reject track with pT too low, default 400 MeV
565 if (track->perigeeParameters()->pT() < m_pTmin) {
566 ATH_MSG_DEBUG("Track " << trackCounter
567 << " fails the first chi2 fit, skipping");
568 return nullptr;
569 }
570
571 // finally fit with outlier removal
572 Trk::Perigee origPerigee = *track->perigeeParameters();
573 keepOnTrying = true;
574 while (keepOnTrying) {
575 track = m_trackFitter->fit(ctx, clusters, origPerigee, true, matEffects);
576 // any need to recover a failed or bad fit ?
577 bool doRefit=false;
578 if (track == nullptr || track->trackSummary() == nullptr || track->outliersOnTrack()->size()>=3) {
579 doRefit=true;
580 }
581 if (doRefit && m_doRecoverFailedFits) {
582 clusters.pop_back();
583 if (clusters.size()<m_minClusters) {
584 keepOnTrying=false;
585 }
586 } else {
587 keepOnTrying=false;
588 }
589 }
590
591 if (!track) ATH_MSG_DEBUG("Track " << trackCounter
592 << " fails the second chi2 fit, skipping");
593
594 return track;
595
596 }
BooleanProperty m_doRecoverFailedFits
ToolHandle< Trk::ITrackFitter > m_trackFitter
Track Fitter.
UnsignedIntegerProperty m_minClusters
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.

◆ getClusters()

std::vector< const Trk::PrepRawData * > InDet::SiSPGNNTrackMaker::getClusters ( const std::vector< std::vector< uint32_t > > & clusterTracks,
const std::vector< const Trk::PrepRawData * > & allClusters,
int trackNumber ) const
protected

Definition at line 415 of file SiSPGNNTrackMaker.cxx.

419 {
420 std::vector<uint32_t> clusterIndices = clusterTracks[trackNumber];
421 std::vector<const Trk::PrepRawData*> clusters;
422 clusters.reserve(clusterIndices.size());
423 for (uint32_t id : clusterIndices) {
424 if (id > allClusters.size()) {
425 ATH_MSG_ERROR("Cluster index out of range");
426 continue;
427 }
428 clusters.push_back(allClusters[id]);
429 }
430 return clusters;
431}

◆ getClustersInEvent()

std::vector< const Trk::PrepRawData * > InDet::SiSPGNNTrackMaker::getClustersInEvent ( const EventContext & ctx,
int eventNumber ) const
protected

Definition at line 298 of file SiSPGNNTrackMaker.cxx.

301 {
302 std::vector<const Trk::PrepRawData*> allClusters;
303 if (m_areInputClusters) {
304 SG::ReadHandle<InDet::PixelClusterContainer> pixcontainer(m_ClusterPixelKey,
305 ctx);
306 SG::ReadHandle<InDet::SCT_ClusterContainer> strip_container(m_ClusterStripKey,
307 ctx);
308
309 if (!pixcontainer.isValid()) {
310 ATH_MSG_ERROR("Pixel container invalid, returning");
311 return allClusters;
312 }
313
314 if (!strip_container.isValid()) {
315 ATH_MSG_ERROR("Strip container invalid, returning");
316 return allClusters;
317 }
318
319 auto pixcollection = pixcontainer->begin();
320 auto pixcollectionEnd = pixcontainer->end();
321 for (; pixcollection != pixcollectionEnd; ++pixcollection) {
322 if ((*pixcollection)->empty()) {
323 ATH_MSG_WARNING("Empty pixel cluster collection encountered");
324 continue;
325 }
326 auto const* clusterCollection = (*pixcollection);
327 auto thisCluster = clusterCollection->begin();
328 auto clusterEnd = clusterCollection->end();
329 for (; thisCluster != clusterEnd; ++thisCluster) {
330 const PixelCluster* cl = (*thisCluster);
331 allClusters.push_back(cl);
332 }
333 }
334
335 auto strip_collection = strip_container->begin();
336 auto strip_collectionEnd = strip_container->end();
337 for (; strip_collection != strip_collectionEnd; ++strip_collection) {
338 if ((*strip_collection)->empty()) {
339 ATH_MSG_WARNING("Empty strip cluster collection encountered");
340 continue;
341 }
342 auto const* clusterCollection = (*strip_collection);
343 auto thisCluster = clusterCollection->begin();
344 auto clusterEnd = clusterCollection->end();
345 for (; thisCluster != clusterEnd; ++thisCluster) {
346 const SCT_Cluster* cl = (*thisCluster);
347 allClusters.push_back(cl);
348 }
349 }
350
351 ATH_MSG_DEBUG("Event " << eventNumber << " has " << allClusters.size()
352 << " clusters");
353 }
354 return allClusters;
355}
#define ATH_MSG_WARNING(x)
SG::ReadHandleKey< InDet::PixelClusterContainer > m_ClusterPixelKey
SG::ReadHandleKey< InDet::SCT_ClusterContainer > m_ClusterStripKey
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.

◆ getSpacePoints()

std::vector< const Trk::SpacePoint * > InDet::SiSPGNNTrackMaker::getSpacePoints ( const std::vector< uint32_t > & trackIndices,
const std::vector< const Trk::SpacePoint * > & allSpacePoints ) const
protected

Definition at line 358 of file SiSPGNNTrackMaker.cxx.

361 {
362
363 std::vector<const Trk::SpacePoint*> trackCandidate;
364 trackCandidate.reserve(trackIndices.size());
365
366 std::vector<std::pair<double, const Trk::SpacePoint*> > distanceSortedSPs;
367
368 // get track space points
369 // sort SPs in track by distance from origin
370 for (auto& id : trackIndices) {
372 if (id > allSpacePoints.size()) {
373 ATH_MSG_WARNING("SpacePoint index "
374 << id << " out of range: " << allSpacePoints.size());
375 continue;
376 }
377
378 const Trk::SpacePoint* sp = allSpacePoints[id];
379
380 // store distance - hit paire
381 if (sp != nullptr) {
382 distanceSortedSPs.push_back(
383 std::make_pair(
384 pow(sp->globalPosition().x(), 2) + pow(sp->globalPosition().y(), 2),
385 sp
386 )
387 );
388 }
389 }
390
391 // sort by distance
392 std::sort(distanceSortedSPs.begin(), distanceSortedSPs.end());
393
394 // add SP to trk candidate in the same order
395 for (size_t i = 0; i < distanceSortedSPs.size(); i++) {
396 trackCandidate.push_back(distanceSortedSPs[i].second);
397 }
398
399 return trackCandidate;
400}
static Double_t sp
constexpr int pow(int base, int exp) noexcept
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ getSpacePointsInEvent() [1/3]

std::vector< const Trk::SpacePoint * > InDet::SiSPGNNTrackMaker::getSpacePointsInEvent ( const EventContext & ctx,
const SG::ReadHandleKey< SpacePointContainer > & containerKey ) const
protected

Definition at line 249 of file SiSPGNNTrackMaker.cxx.

252 {
253 std::vector<const Trk::SpacePoint*> spacePoints;
254 if (not containerKey.empty()){
255
256 SG::ReadHandle<SpacePointContainer> container{containerKey, ctx};
257
258 if (container.isValid()){
259 // loop over spacepoint collection
260 auto spc = container->begin();
261 auto spce = container->end();
262 for(; spc != spce; ++spc){
263 const SpacePointCollection* spCollection = (*spc);
264 auto sp = spCollection->begin();
265 auto spe = spCollection->end();
266 for(; sp != spe; ++sp) {
267 const Trk::SpacePoint* spacePoint = (*sp);
268 spacePoints.push_back(spacePoint);
269 }
270 }
271 }
272 }
273
274 return spacePoints;
275}
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
bool empty() const
Test if the key is blank.

◆ getSpacePointsInEvent() [2/3]

std::vector< const Trk::SpacePoint * > InDet::SiSPGNNTrackMaker::getSpacePointsInEvent ( const EventContext & ctx,
const SG::ReadHandleKey< SpacePointOverlapCollection > & containerKey ) const
protected

Definition at line 277 of file SiSPGNNTrackMaker.cxx.

280 {
281
282 std::vector<const Trk::SpacePoint*> spacePoints;
283
284 if (not containerKey.empty()){
285
286 SG::ReadHandle<SpacePointOverlapCollection> collection{containerKey, ctx};
287
288 if (collection.isValid()){
289 for (const Trk::SpacePoint *sp : *collection) {
290 spacePoints.push_back(sp);
291 }
292 }
293 }
294
295 return spacePoints;
296}

◆ getSpacePointsInEvent() [3/3]

std::vector< const Trk::SpacePoint * > InDet::SiSPGNNTrackMaker::getSpacePointsInEvent ( const EventContext & ctx,
int eventNumber ) const
protected

Definition at line 221 of file SiSPGNNTrackMaker.cxx.

224 {
225 std::vector<const Trk::SpacePoint*> spacePoints;
226
227 int npixsp(0), nstrip(0), n_overlap(0);
228 for (const Trk::SpacePoint* sp : getSpacePointsInEvent(ctx, m_SpacePointsPixelKey)) {
229 spacePoints.push_back(sp);
230 npixsp++;
231 }
232 for (const Trk::SpacePoint* sp : getSpacePointsInEvent(ctx, m_SpacePointsSCTKey)) {
233 spacePoints.push_back(sp);
234 nstrip++;
235 }
236 for (const Trk::SpacePoint* sp : getSpacePointsInEvent(ctx, m_SpacePointsOverlapKey)) {
237 spacePoints.push_back(sp);
238 n_overlap++;
239 }
240 ATH_MSG_DEBUG("Event " << eventNumber << " has " << npixsp
241 << " pixel space points, " << nstrip
242 << " strips space points" << n_overlap
243 << " overlapping spacepoints" << spacePoints.size()
244 << " space points");
245
246 return spacePoints;
247}
SG::ReadHandleKey< SpacePointContainer > m_SpacePointsSCTKey
SG::ReadHandleKey< SpacePointOverlapCollection > m_SpacePointsOverlapKey
SG::ReadHandleKey< SpacePointContainer > m_SpacePointsPixelKey

◆ initialize()

StatusCode InDet::SiSPGNNTrackMaker::initialize ( )
overridevirtual

Definition at line 20 of file SiSPGNNTrackMaker.cxx.

21{
22 ATH_CHECK(m_SpacePointsPixelKey.initialize());
23 ATH_CHECK(m_SpacePointsSCTKey.initialize());
25 ATH_CHECK(m_ClusterPixelKey.initialize());
26 ATH_CHECK(m_ClusterStripKey.initialize());
27
28 ATH_CHECK(m_outputTracksKey.initialize());
29
30 ATH_CHECK(m_trackFitter.retrieve());
31 ATH_CHECK(m_seedFitter.retrieve());
32 ATH_CHECK(m_trackSummaryTool.retrieve());
33
34 if (!m_gnnTrackFinder.empty() && !m_gnnTrackReader.empty()) {
35 ATH_MSG_ERROR("Use either track finder or track reader, not both.");
36 return StatusCode::FAILURE;
37 }
38
39 if (!m_gnnTrackFinder.empty()) {
40 ATH_MSG_INFO("Use GNN Track Finder");
41 ATH_CHECK(m_gnnTrackFinder.retrieve());
42 }
43 if (!m_gnnTrackReader.empty()) {
44 ATH_MSG_INFO("Use GNN Track Reader");
45 ATH_CHECK(m_gnnTrackReader.retrieve());
46 }
48 ATH_MSG_INFO("Use input clusters");
49 }
50 // retrieve eta dependent cut svc
52
53 ATH_MSG_INFO("Applying the following cuts during GNN-based track reconstruction: ");
54 ATH_MSG_INFO("Min pT: " << m_pTmin);
55 ATH_MSG_INFO("Max eta: " << m_etamax);
56 ATH_MSG_INFO("Min number of clusters: " << m_minClusters);
57 ATH_MSG_INFO("Min number of pixel clusters: " << m_minPixelClusters);
58 ATH_MSG_INFO("Min number of strip clusters: " << m_minStripClusters);
59
60
62 ATH_MSG_INFO("Applying the following eta dependant track cuts after GNN-based track reconstruction: ");
63 std::vector <double> etaBins, minPT, maxz0, maxd0;
64 std::vector <int> minClusters, minPixelHits, maxHoles;
65 m_etaDependentCutsSvc->getValue(InDet::CutName::etaBins, etaBins);
66 ATH_MSG_INFO("Eta bins: " << etaBins );
67 m_etaDependentCutsSvc->getValue(InDet::CutName::minClusters, minClusters);
68 ATH_MSG_INFO("Min Si Hits: " << minClusters );
69 m_etaDependentCutsSvc->getValue(InDet::CutName::minPixelHits, minPixelHits);
70 ATH_MSG_INFO("Min pixel hits: " << minPixelHits );
71 m_etaDependentCutsSvc->getValue(InDet::CutName::maxHoles, maxHoles);
72 ATH_MSG_INFO("Max holes: " << maxHoles);
73 m_etaDependentCutsSvc->getValue(InDet::CutName::minPT, minPT);
74 ATH_MSG_INFO("Min pT: " << minPT);
75 m_etaDependentCutsSvc->getValue(InDet::CutName::maxZImpact, maxz0);
76 ATH_MSG_INFO("Max z0: " << maxz0);
77 m_etaDependentCutsSvc->getValue(InDet::CutName::maxPrimaryImpact, maxd0);
78 ATH_MSG_INFO("Max d0: " << maxd0);
79 }
80
81 return StatusCode::SUCCESS;
82}
UnsignedIntegerProperty m_minStripClusters
UnsignedIntegerProperty m_minPixelClusters
ServiceHandle< IInDetEtaDependentCutsSvc > m_etaDependentCutsSvc

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

virtual bool InDet::SiSPGNNTrackMaker::isClonable ( ) const
inlineoverridevirtual

Make this algorithm clonable.

Reimplemented from AthCommonReentrantAlgorithm< Gaudi::Algorithm >.

Definition at line 50 of file SiSPGNNTrackMaker.h.

50{ return true; };

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ passEtaDepCuts()

int InDet::SiSPGNNTrackMaker::passEtaDepCuts ( const Trk::Track & track) const
protected

Definition at line 172 of file SiSPGNNTrackMaker.cxx.

173{
174 const Trk::Perigee* origPerigee = track.perigeeParameters();
175 double pt = origPerigee->pT();
176
177 double eta = std::abs(origPerigee->eta());
178
179 double d0 = std::abs(origPerigee->parameters()[Trk::d0]);
180
181 double z0 = std::abs(origPerigee->parameters()[Trk::z0]);
182
183 int nHolesOnTrack = track.trackSummary()->get(Trk::numberOfPixelHoles) +
184 track.trackSummary()->get(Trk::numberOfSCTHoles);
185
186 int nPixels = track.trackSummary()->get(Trk::numberOfPixelHits);
187 int nStrips = track.trackSummary()->get(Trk::numberOfSCTHits);
188 int nClusters = nPixels + nStrips;
189
190 ATH_MSG_DEBUG("track params: " << pt << " " << eta << " " << d0 << " " << z0
191 << " " << nClusters << nStrips
192 << " " << nPixels);
193
194 // min Si hits
195 if (nClusters < m_etaDependentCutsSvc->getMinSiHitsAtEta(eta))
196 return 1;
197
198 // min pixel hits
199 if (nPixels < m_etaDependentCutsSvc->getMinPixelHitsAtEta(eta))
200 return 2;
201
202 // min pT, default 400
203 if (pt < m_etaDependentCutsSvc->getMinPtAtEta(eta))
204 return 3;
205
206 // max z0
207 if (z0 > m_etaDependentCutsSvc->getMaxZImpactAtEta(eta))
208 return 4;
209
210 // max d0
211 if (d0 > m_etaDependentCutsSvc->getMaxPrimaryImpactAtEta(eta))
212 return 5;
213
214 // max holes
215 if (nHolesOnTrack > m_etaDependentCutsSvc->getMaxSiHolesAtEta(eta))
216 return 6;
217
218 return 0;
219}
Scalar eta() const
pseudorapidity method
double eta() const
Access method for pseudorapidity - from momentum.
double pT() const
Access method for transverse momentum.
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64
@ numberOfPixelHits
number of pixel layers on track with absence of hits
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.

◆ prefitCheck()

bool InDet::SiSPGNNTrackMaker::prefitCheck ( unsigned int nPix,
unsigned int nStrip,
unsigned int nClusters,
unsigned int nSpacePoints ) const
protected

Definition at line 167 of file SiSPGNNTrackMaker.cxx.

167 {
168 return nPix >= m_minPixelClusters && nStrip >= m_minStripClusters && nClusters >= m_minClusters && nSpacePoints >= 3;
169}

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ spacePointsToClusters()

std::vector< const Trk::PrepRawData * > InDet::SiSPGNNTrackMaker::spacePointsToClusters ( const std::vector< const Trk::SpacePoint * > & spacePoints) const
protected

Definition at line 402 of file SiSPGNNTrackMaker.cxx.

404 {
405 std::vector<const Trk::PrepRawData*> clusters;
406 for (const Trk::SpacePoint* sp : spacePoints) {
407 clusters.push_back(sp->clusterList().first);
408 if (sp->clusterList().second != nullptr) {
409 clusters.push_back(sp->clusterList().second);
410 }
411 }
412 return clusters;
413}

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_areInputClusters

BooleanProperty InDet::SiSPGNNTrackMaker::m_areInputClusters
protected
Initial value:
{
this, "areInputClusters", false,
"Read track candidates as list of clusters"}

Definition at line 105 of file SiSPGNNTrackMaker.h.

105 {
106 this, "areInputClusters", false,
107 "Read track candidates as list of clusters"};

◆ m_ClusterPixelKey

SG::ReadHandleKey<InDet::PixelClusterContainer> InDet::SiSPGNNTrackMaker::m_ClusterPixelKey
protected
Initial value:
{
this, "PixelClusterContainer", "ITkPixelClusters"}

Definition at line 68 of file SiSPGNNTrackMaker.h.

68 {
69 this, "PixelClusterContainer", "ITkPixelClusters"};

◆ m_ClusterStripKey

SG::ReadHandleKey<InDet::SCT_ClusterContainer> InDet::SiSPGNNTrackMaker::m_ClusterStripKey
protected
Initial value:
{
this, "StripClusterContainer", "ITkStripClusters"}

Definition at line 70 of file SiSPGNNTrackMaker.h.

70 {
71 this, "StripClusterContainer", "ITkStripClusters"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doRecoTrackCuts

BooleanProperty InDet::SiSPGNNTrackMaker::m_doRecoTrackCuts
protected
Initial value:
{this, "doRecoTrackCuts", false,
"Apply Loose track cuts"}

Definition at line 108 of file SiSPGNNTrackMaker.h.

108 {this, "doRecoTrackCuts", false,
109 "Apply Loose track cuts"};

◆ m_doRecoverFailedFits

BooleanProperty InDet::SiSPGNNTrackMaker::m_doRecoverFailedFits
protected
Initial value:
{this, "doRecoverFailedFits", true,
"Try to recover failed track fits by removing hits, at the end of the track"}

Definition at line 122 of file SiSPGNNTrackMaker.h.

122 {this, "doRecoverFailedFits", true,
123 "Try to recover failed track fits by removing hits, at the end of the track"};

◆ m_etaDependentCutsSvc

ServiceHandle<IInDetEtaDependentCutsSvc> InDet::SiSPGNNTrackMaker::m_etaDependentCutsSvc
protected
Initial value:
{
this, "InDetEtaDependentCutsSvc", "InDetEtaDependentCutsSvc"}

Definition at line 111 of file SiSPGNNTrackMaker.h.

111 {
112 this, "InDetEtaDependentCutsSvc", "InDetEtaDependentCutsSvc"};

◆ m_etamax

DoubleProperty InDet::SiSPGNNTrackMaker::m_etamax {this, "etamax", 4., "max reco eta"}
protected

Definition at line 118 of file SiSPGNNTrackMaker.h.

118{this, "etamax", 4., "max reco eta"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_gnnTrackFinder

ToolHandle<IGNNTrackFinder> InDet::SiSPGNNTrackMaker::m_gnnTrackFinder
protected
Initial value:
{
this, "GNNTrackFinderTool",
"InDet::SiGNNTrackFinderTool", "Track Finder"
}

GNN-based track finding tool that produces track candidates.


@name Tool handles

Definition at line 82 of file SiSPGNNTrackMaker.h.

82 {
83 this, "GNNTrackFinderTool",
84 "InDet::SiGNNTrackFinderTool", "Track Finder"
85 };

◆ m_gnnTrackReader

ToolHandle<IGNNTrackReaderTool> InDet::SiSPGNNTrackMaker::m_gnnTrackReader
protected
Initial value:
{
this, "GNNTrackReaderTool",
"InDet::GNNTrackReaderTool", "Track Reader"
}

Definition at line 97 of file SiSPGNNTrackMaker.h.

97 {
98 this, "GNNTrackReaderTool",
99 "InDet::GNNTrackReaderTool", "Track Reader"
100 };

◆ m_minClusters

UnsignedIntegerProperty InDet::SiSPGNNTrackMaker::m_minClusters {this, "minClusters", 6, "Min number clusters"}
protected

Definition at line 114 of file SiSPGNNTrackMaker.h.

114{this, "minClusters", 6, "Min number clusters"};

◆ m_minPixelClusters

UnsignedIntegerProperty InDet::SiSPGNNTrackMaker::m_minPixelClusters {this, "minPixelClusters", 1, "min pixel clusters"}
protected

Definition at line 115 of file SiSPGNNTrackMaker.h.

115{this, "minPixelClusters", 1, "min pixel clusters"};

◆ m_minStripClusters

UnsignedIntegerProperty InDet::SiSPGNNTrackMaker::m_minStripClusters {this, "minStripClusters", 0, "Minimum number of strip clusters"}
protected

Definition at line 116 of file SiSPGNNTrackMaker.h.

116{this, "minStripClusters", 0, "Minimum number of strip clusters"};

◆ m_outputTracksKey

SG::WriteHandleKey<TrackCollection> InDet::SiSPGNNTrackMaker::m_outputTracksKey
protected
Initial value:
{
this, "TracksLocation", "SiSPGNNTracks"}

Definition at line 74 of file SiSPGNNTrackMaker.h.

74 {
75 this, "TracksLocation", "SiSPGNNTracks"};

◆ m_pTmin

DoubleProperty InDet::SiSPGNNTrackMaker::m_pTmin {this, "pTmin", 400., "min pT"}
protected

Definition at line 117 of file SiSPGNNTrackMaker.h.

117{this, "pTmin", 400., "min pT"};

◆ m_seedFitter

ToolHandle<ISeedFitter> InDet::SiSPGNNTrackMaker::m_seedFitter
protected
Initial value:
{
this, "SeedFitterTool",
"InDet::SiSeedFitterTool", "Seed Fitter"
}

Definition at line 86 of file SiSPGNNTrackMaker.h.

86 {
87 this, "SeedFitterTool",
88 "InDet::SiSeedFitterTool", "Seed Fitter"
89 };

◆ m_SpacePointsOverlapKey

SG::ReadHandleKey<SpacePointOverlapCollection> InDet::SiSPGNNTrackMaker::m_SpacePointsOverlapKey {this, "SpacePointsOverlapName", "ITkOverlapSpacePoints"}
protected

Definition at line 66 of file SiSPGNNTrackMaker.h.

66{this, "SpacePointsOverlapName", "ITkOverlapSpacePoints"};

◆ m_SpacePointsPixelKey

SG::ReadHandleKey<SpacePointContainer> InDet::SiSPGNNTrackMaker::m_SpacePointsPixelKey
protected
Initial value:
{
this, "SpacePointsPixelName", "ITkPixelSpacePoints"}

@name Data handles

Definition at line 62 of file SiSPGNNTrackMaker.h.

62 {
63 this, "SpacePointsPixelName", "ITkPixelSpacePoints"};

◆ m_SpacePointsSCTKey

SG::ReadHandleKey<SpacePointContainer> InDet::SiSPGNNTrackMaker::m_SpacePointsSCTKey
protected
Initial value:
{
this, "SpacePointsSCTName", "ITkStripSpacePoints"}

Definition at line 64 of file SiSPGNNTrackMaker.h.

64 {
65 this, "SpacePointsSCTName", "ITkStripSpacePoints"};

◆ m_trackFitter

ToolHandle<Trk::ITrackFitter> InDet::SiSPGNNTrackMaker::m_trackFitter
protected
Initial value:
{
this, "TrackFitter",
"Trk::GlobalChi2Fitter/InDetTrackFitter", "Track Fitter"
}

Track Fitter.

Definition at line 91 of file SiSPGNNTrackMaker.h.

91 {
92 this, "TrackFitter",
93 "Trk::GlobalChi2Fitter/InDetTrackFitter", "Track Fitter"
94 };

◆ m_trackSummaryTool

ToolHandle<Trk::IExtendedTrackSummaryTool> InDet::SiSPGNNTrackMaker::m_trackSummaryTool
protected
Initial value:
{
this, "TrackSummaryTool", "InDetTrackSummaryTool"}

Definition at line 95 of file SiSPGNNTrackMaker.h.

95 {
96 this, "TrackSummaryTool", "InDetTrackSummaryTool"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: