Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
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. It turns a collection of Trk::Tracks. 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. More...
 
MsgStream & dump (MsgStream &out) const
 
std::ostream & dump (std::ostream &out) const
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
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. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) 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. More...
 
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 More...
 
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. More...
 

Protected Attributes

SG::ReadHandleKey< SpacePointContainerm_SpacePointsPixelKey
 
SG::ReadHandleKey< SpacePointContainerm_SpacePointsSCTKey
 
SG::ReadHandleKey< SpacePointOverlapCollectionm_SpacePointsOverlapKey {this, "SpacePointsOverlapName", "ITkOverlapSpacePoints"}
 
SG::ReadHandleKey< InDet::PixelClusterContainerm_ClusterPixelKey
 
SG::ReadHandleKey< InDet::SCT_ClusterContainerm_ClusterStripKey
 
SG::WriteHandleKey< TrackCollectionm_outputTracksKey
 
ToolHandle< IGNNTrackFinderm_gnnTrackFinder
 GNN-based track finding tool that produces track candidates. More...
 
ToolHandle< ISeedFitterm_seedFitter
 
ToolHandle< Trk::ITrackFitterm_trackFitter
 Track Fitter. More...
 
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 > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
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
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.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64 {
65  return 0;
66 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ 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.

95 { return m_detStore; }

◆ 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  }

◆ 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 }

◆ 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() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

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

Definition at line 84 of file SiSPGNNTrackMaker.cxx.

85 {
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()) {
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 }

◆ 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
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  }
96  return BaseAlg::extraOutputDeps();
97 }

◆ 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  }

◆ 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 
541  Trk::ParticleHypothesis matEffects = Trk::pion;
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  }

◆ 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) {
305  ctx);
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 }

◆ 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 }

◆ 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 }

◆ 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);
229  spacePoints.push_back(sp);
230  npixsp++;
231  }
233  spacePoints.push_back(sp);
234  nstrip++;
235  }
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 }

◆ initialize()

StatusCode InDet::SiSPGNNTrackMaker::initialize ( )
overridevirtual

Definition at line 20 of file SiSPGNNTrackMaker.cxx.

21 {
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  }
47  if (m_areInputClusters) {
48  ATH_MSG_INFO("Use input clusters");
49  }
50  // retrieve eta dependent cut svc
51  ATH_CHECK(m_etaDependentCutsSvc.retrieve());
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 
61  if (m_doRecoTrackCuts) {
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;
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 }

◆ 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() [1/2]

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

Make this algorithm clonable.

Definition at line 50 of file SiSPGNNTrackMaker.h.

50 { return true; };

◆ isClonable() [2/2]

bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::isClonable
overridevirtualinherited

Specify if the algorithm is clonable.

Reentrant algorithms are clonable.

Definition at line 68 of file AthCommonReentrantAlgorithm.cxx.

52 {
53  // Reentrant algorithms are clonable.
54  return true;
55 }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ 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 }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

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

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100  {
101  execState( ctx ).setFilterPassed( state );
102  }

◆ 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 InputMakerBase, and HypoBase.

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()) {
123  sc = StatusCode::FAILURE;
124  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125  << " with CondSvc");
126  }
127  }
128  }
129  return sc;
130 }

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
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.

◆ m_ClusterPixelKey

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

Definition at line 68 of file SiSPGNNTrackMaker.h.

◆ 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.

◆ 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.

◆ 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.

◆ m_etaDependentCutsSvc

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

Definition at line 111 of file SiSPGNNTrackMaker.h.

◆ m_etamax

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

Definition at line 118 of file SiSPGNNTrackMaker.h.

◆ 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.

◆ 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.

◆ m_minClusters

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

Definition at line 114 of file SiSPGNNTrackMaker.h.

◆ m_minPixelClusters

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

Definition at line 115 of file SiSPGNNTrackMaker.h.

◆ m_minStripClusters

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

Definition at line 116 of file SiSPGNNTrackMaker.h.

◆ m_outputTracksKey

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

Definition at line 74 of file SiSPGNNTrackMaker.h.

◆ m_pTmin

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

Definition at line 117 of file SiSPGNNTrackMaker.h.

◆ 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.

◆ m_SpacePointsOverlapKey

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

Definition at line 66 of file SiSPGNNTrackMaker.h.

◆ 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.

◆ m_SpacePointsSCTKey

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

Definition at line 64 of file SiSPGNNTrackMaker.h.

◆ 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.

◆ m_trackSummaryTool

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

Definition at line 95 of file SiSPGNNTrackMaker.h.

◆ 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:
Trk::numberOfPixelHits
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:57
Trk::SpacePoint
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:35
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
test_pyathena.eta
eta
Definition: test_pyathena.py:10
InDet::SiSPGNNTrackMaker::getClustersInEvent
std::vector< const Trk::PrepRawData * > getClustersInEvent(const EventContext &ctx, int eventNumber) const
Definition: SiSPGNNTrackMaker.cxx:298
PixelCluster
Definition: Trigger/TrigAccel/TrigCudaFitter/src/PixelCluster.h:8
InDet::SiSPGNNTrackMaker::m_doRecoTrackCuts
BooleanProperty m_doRecoTrackCuts
Definition: SiSPGNNTrackMaker.h:108
InDet::SiSPGNNTrackMaker::m_gnnTrackFinder
ToolHandle< IGNNTrackFinder > m_gnnTrackFinder
GNN-based track finding tool that produces track candidates.
Definition: SiSPGNNTrackMaker.h:82
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
InDet::SiSPGNNTrackMaker::m_SpacePointsPixelKey
SG::ReadHandleKey< SpacePointContainer > m_SpacePointsPixelKey
Definition: SiSPGNNTrackMaker.h:62
Trk::SpacePoint::globalPosition
virtual const Amg::Vector3D & globalPosition() const override final
Interface method to get the global Position.
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:146
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
InDet::SiSPGNNTrackMaker::m_minPixelClusters
UnsignedIntegerProperty m_minPixelClusters
Definition: SiSPGNNTrackMaker.h:115
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
ConvertOldUJHistosToNewHistos.etaBins
list etaBins
Definition: ConvertOldUJHistosToNewHistos.py:145
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
test_pyathena.pt
pt
Definition: test_pyathena.py:11
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
InDet::SiSPGNNTrackMaker::getClusters
std::vector< const Trk::PrepRawData * > getClusters(const std::vector< std::vector< uint32_t >> &clusterTracks, const std::vector< const Trk::PrepRawData * > &allClusters, int trackNumber) const
Definition: SiSPGNNTrackMaker.cxx:415
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::z0
@ z0
Definition: ParamDefs.h:64
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDet::SiSPGNNTrackMaker::m_etaDependentCutsSvc
ServiceHandle< IInDetEtaDependentCutsSvc > m_etaDependentCutsSvc
Definition: SiSPGNNTrackMaker.h:111
InDet::SiSPGNNTrackMaker::m_SpacePointsOverlapKey
SG::ReadHandleKey< SpacePointOverlapCollection > m_SpacePointsOverlapKey
Definition: SiSPGNNTrackMaker.h:66
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDet::SiSPGNNTrackMaker::passEtaDepCuts
int passEtaDepCuts(const Trk::Track &track) const
Definition: SiSPGNNTrackMaker.cxx:172
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
Trk::numberOfSCTHoles
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:73
InDet::SiSPGNNTrackMaker::m_pTmin
DoubleProperty m_pTmin
Definition: SiSPGNNTrackMaker.h:117
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
InDet::SiSPGNNTrackMaker::m_outputTracksKey
SG::WriteHandleKey< TrackCollection > m_outputTracksKey
Definition: SiSPGNNTrackMaker.h:74
SCT_Cluster
Definition: Trigger/TrigAccel/TrigCudaFitter/src/SCT_Cluster.h:8
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
InDet::SiSPGNNTrackMaker::prefitCheck
bool prefitCheck(unsigned int nPix, unsigned int nStrip, unsigned int nClusters, unsigned int nSpacePoints) const
Definition: SiSPGNNTrackMaker.cxx:167
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
AthCommonReentrantAlgorithm::extraOutputDeps
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
Definition: AthCommonReentrantAlgorithm.cxx:89
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
InDet::etaBins
@ etaBins
Definition: IInDetEtaDependentCutsSvc.h:13
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
InDet::SiSPGNNTrackMaker::m_ClusterStripKey
SG::ReadHandleKey< InDet::SCT_ClusterContainer > m_ClusterStripKey
Definition: SiSPGNNTrackMaker.h:70
lumiFormat.i
int i
Definition: lumiFormat.py:85
InDet::SiSPGNNTrackMaker::dumpevent
MsgStream & dumpevent(MsgStream &out) const
Definition: SiSPGNNTrackMaker.cxx:646
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonReentrantAlgorithm::sysExecute
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
Definition: AthCommonReentrantAlgorithm.cxx:76
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
InDet::SiSPGNNTrackMaker::m_trackFitter
ToolHandle< Trk::ITrackFitter > m_trackFitter
Track Fitter.
Definition: SiSPGNNTrackMaker.h:91
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::eventNumber
eventNumber
Definition: EventInfo_v1.cxx:124
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
F600IntegrationConfig.spacePoints
spacePoints
Definition: F600IntegrationConfig.py:65
InDet::maxHoles
@ maxHoles
Definition: IInDetEtaDependentCutsSvc.h:14
InDet::SiSPGNNTrackMaker::m_areInputClusters
BooleanProperty m_areInputClusters
Definition: SiSPGNNTrackMaker.h:105
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::PrepRawData
Definition: PrepRawData.h:62
MuonGM::nStrips
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelTgcTest.cxx:46
InDet::SiSPGNNTrackMaker::fitTrack
std::unique_ptr< Trk::Track > fitTrack(const EventContext &ctx, std::vector< const Trk::PrepRawData * > clusters, const Trk::TrackParameters &initial_params, int trackCounter) const
Definition: SiSPGNNTrackMaker.cxx:533
InDet::minClusters
@ minClusters
Definition: IInDetEtaDependentCutsSvc.h:15
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
InDet::SiSPGNNTrackMaker::m_seedFitter
ToolHandle< ISeedFitter > m_seedFitter
Definition: SiSPGNNTrackMaker.h:86
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Trk::d0
@ d0
Definition: ParamDefs.h:63
Trk::PrepRawDataType::PixelCluster
@ PixelCluster
InDet::minPT
@ minPT
Definition: IInDetEtaDependentCutsSvc.h:15
xAOD::TauJetParameters::nStrip
@ nStrip
Get number of strips.
Definition: TauDefs.h:204
InDet::SiSPGNNTrackMaker::m_trackSummaryTool
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
Definition: SiSPGNNTrackMaker.h:95
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
InDet::SiSPGNNTrackMaker::m_doRecoverFailedFits
BooleanProperty m_doRecoverFailedFits
Definition: SiSPGNNTrackMaker.h:122
a
TList * a
Definition: liststreamerinfos.cxx:10
h
Trk::PrepRawDataType::SCT_Cluster
@ SCT_Cluster
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TRT::Track::trackNumber
@ trackNumber
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:75
InDet::SiSPGNNTrackMaker::m_minClusters
UnsignedIntegerProperty m_minClusters
Definition: SiSPGNNTrackMaker.h:114
SpacePointCollection
Definition: SpacePointCollection.h:40
DEBUG
#define DEBUG
Definition: page_access.h:11
InDet::SiSPGNNTrackMaker::m_etamax
DoubleProperty m_etamax
Definition: SiSPGNNTrackMaker.h:118
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
InDet::SiSPGNNTrackMaker::dumptools
MsgStream & dumptools(MsgStream &out) const
Definition: SiSPGNNTrackMaker.cxx:632
AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthCommonReentrantAlgorithm.cxx:107
InDet::minPixelHits
@ minPixelHits
Definition: IInDetEtaDependentCutsSvc.h:15
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
InDet::SiSPGNNTrackMaker::doFitAndCut
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.
Definition: SiSPGNNTrackMaker.cxx:466
InDet::SiSPGNNTrackMaker::m_minStripClusters
UnsignedIntegerProperty m_minStripClusters
Definition: SiSPGNNTrackMaker.h:116
InDet::SiSPGNNTrackMaker::m_ClusterPixelKey
SG::ReadHandleKey< InDet::PixelClusterContainer > m_ClusterPixelKey
Definition: SiSPGNNTrackMaker.h:68
InDet::SiSPGNNTrackMaker::getSpacePointsInEvent
std::vector< const Trk::SpacePoint * > getSpacePointsInEvent(const EventContext &ctx, int eventNumber) const
Definition: SiSPGNNTrackMaker.cxx:221
Analysis::TT
@ TT
Definition: JpsiFinder.h:36
AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthCommonReentrantAlgorithm.h:114
InDet::SiSPGNNTrackMaker::getSpacePoints
std::vector< const Trk::SpacePoint * > getSpacePoints(const std::vector< uint32_t > &trackIndices, const std::vector< const Trk::SpacePoint * > &allSpacePoints) const
Definition: SiSPGNNTrackMaker.cxx:358
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
InDet::SiSPGNNTrackMaker::m_SpacePointsSCTKey
SG::ReadHandleKey< SpacePointContainer > m_SpacePointsSCTKey
Definition: SiSPGNNTrackMaker.h:64
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
InDet::SiSPGNNTrackMaker::spacePointsToClusters
std::vector< const Trk::PrepRawData * > spacePointsToClusters(const std::vector< const Trk::SpacePoint * > &spacePoints) const
Definition: SiSPGNNTrackMaker.cxx:402
InDet::SiSPGNNTrackMaker::m_gnnTrackReader
ToolHandle< IGNNTrackReaderTool > m_gnnTrackReader
Definition: SiSPGNNTrackMaker.h:97
ServiceHandle< ICondSvc >