ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
InDet::InDetExtensionProcessor Class Reference

Algorithm to process a TrackExtensionMap, refit the extended tracks and decide if the old track is to be replaced by the extended one. More...

#include <InDetExtensionProcessor.h>

Inheritance diagram for InDet::InDetExtensionProcessor:
Collaboration diagram for InDet::InDetExtensionProcessor:

Public Member Functions

 InDetExtensionProcessor (const std::string &name, ISvcLocator *pSvcLocator)
 Default Algorithm constructor with parameters. More...
 
virtual StatusCode initialize ()
 
virtual StatusCode execute (const EventContext &ctx) const
 
virtual StatusCode finalize ()
 
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

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

Private Types

enum  StatIndex {
  iAll, iBarrel, iTransi, iEndcap,
  Nregions
}
 internal monitoring: categories for counting different types of extension results More...
 
enum  StatTrkType {
  nInput, nRecognised, nExtended, nRejected,
  nFailed, nRecoveryBremFits, nBremFits, nFits,
  nNotExtended, nLowScoreBremFits, nExtendedBrem, nTypes
}
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

MsgStream & dumpStat (MsgStream &out) const
 
TrackCollectioncreateExtendedTracks (const EventContext &ctx, const TrackCollection *tracks_in, const TrackExtensionMap *track_extension_map) const
 process events More...
 
Trk::TracktrackPlusExtension (const EventContext &ctx, const Trk::Track *, const std::vector< const Trk::MeasurementBase * > &) const
 internal structuring: creates new track with original one plus extension as outliers More...
 
void incrementRegionCounter (std::array< std::atomic< int >, 4 > &, const Trk::Track *, bool=true) const
 monitoring and validation: does success/failure counting for each detector region More...
 
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

SG::ReadHandleKey< TrackCollectionm_trackName
 Name of input Trackcollection. More...
 
bool m_cosmics
 whether we are running cosmics More...
 
SG::ReadHandleKey< TrackExtensionMapm_extensionMapName
 Name of input extension map. More...
 
SG::WriteHandleKey< TrackCollectionm_newTrackName
 Name of output Trackcollection. More...
 
ToolHandle< Trk::ITrackFitterm_trackFitter
 track fitter tool handle More...
 
ToolHandle< Trk::IExtendedTrackSummaryToolm_trackSummaryTool
 
ToolHandle< Trk::ITrackScoringToolm_scoringTool
 track scorer tool handle More...
 
Trk::RunOutlierRemoval m_runOutlier
 whether to run outlier logics More...
 
bool m_keepFailedExtensionOnTrack
 switch whether to append a rejected extension as outlier trajectory More...
 
bool m_refitPrds
 fitter steering: whether to do the fit with re-calibrated clusters (true) or not More...
 
int m_matEffects
 type of material interaction in extrapolation More...
 
bool m_suppressHoleSearch
 no hole search ? More...
 
bool m_tryBremFit
 brem recovery mode ? More...
 
bool m_caloSeededBrem
 run in Calo seeded mode More...
 
float m_pTminBrem
 min pt for a brem fit More...
 
Trk::ParticleHypothesis m_particleHypothesis
 nomen est omen More...
 
std::array< std::array< std::atomic< int >, Nregions >, nTypes > m_counters ATLAS_THREAD_SAFE
 
std::atomic< int > m_Nevents ATLAS_THREAD_SAFE
 
std::vector< float > m_etabounds
 eta intervals for internal monitoring More...
 
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

Algorithm to process a TrackExtensionMap, refit the extended tracks and decide if the old track is to be replaced by the extended one.

Author
Marku.nosp@m.s.El.nosp@m.sing@.nosp@m.cern.nosp@m..ch

Definition at line 37 of file InDetExtensionProcessor.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ StatIndex

internal monitoring: categories for counting different types of extension results

Enumerator
iAll 
iBarrel 
iTransi 
iEndcap 
Nregions 

Definition at line 90 of file InDetExtensionProcessor.h.

90  {
92  };

◆ StatTrkType

Enumerator
nInput 
nRecognised 
nExtended 
nRejected 
nFailed 
nRecoveryBremFits 
nBremFits 
nFits 
nNotExtended 
nLowScoreBremFits 
nExtendedBrem 
nTypes 

Definition at line 94 of file InDetExtensionProcessor.h.

Constructor & Destructor Documentation

◆ InDetExtensionProcessor()

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

Default Algorithm constructor with parameters.

Definition at line 38 of file InDetExtensionProcessor.cxx.

38  :
39  AthReentrantAlgorithm(name, pSvcLocator),
40  m_trackName("Tracks"),
41  m_cosmics(false),
42  m_extensionMapName("TrackExtensionMap"),
43  m_newTrackName("ExtendedTrack"),
44  m_trackFitter("Trk::KalmanFitter/InDetTrackFitter"),
45  m_scoringTool("Trk::TrackScoringTool"),
46  m_runOutlier(true),
48  m_refitPrds(true),
49  m_matEffects(3),
50  m_suppressHoleSearch(false),
52  m_counters{},
53  m_Nevents(0),
54  m_etabounds{0.8, 1.6, 2.10} {
55  // Get parameter values from jobOptions file
56  declareProperty("TrackName", m_trackName, "Name of the input Trackcollection");
57  declareProperty("Cosmics", m_cosmics, "switch whether we are running on cosmics");
58  declareProperty("ExtensionMap", m_extensionMapName, "Name of the input extension map");
59  declareProperty("NewTrackName", m_newTrackName, "Name of the output Trackcollection");
60  declareProperty("TrackFitter", m_trackFitter, "Toolhandle for the track fitter");
61  declareProperty("ScoringTool", m_scoringTool, "Toolhandle for the track scorer");
62  declareProperty("runOutlier", m_runOutlier, "switch whether to run outlier logics or not");
63  declareProperty("keepFailedExtension", m_keepFailedExtensionOnTrack,
64  "switch whether to keep failed extension as outlier hits on the new track");
65  declareProperty("RefitPrds", m_refitPrds, "switch whether to do the fit with re-calibrated clusters (true) or not");
66  declareProperty("matEffects", m_matEffects, "particle hypothesis to assume for material effects in track fit");
67  declareProperty("suppressHoleSearch", m_suppressHoleSearch, "suppressing hole search for comparison");
68  declareProperty("tryBremFit", m_tryBremFit = false, "brem recover mode");
69  declareProperty("caloSeededBrem", m_caloSeededBrem = false, "calo seeded brem recovery");
70  declareProperty("pTminBrem", m_pTminBrem = 1000., "min pT for trying a brem recovery");
71  declareProperty("etaBounds", m_etabounds, "eta intervals for internal monitoring"); //note: only three values!
72 }

Member Function Documentation

◆ cardinality()

unsigned int AthReentrantAlgorithm::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.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ createExtendedTracks()

TrackCollection * InDet::InDetExtensionProcessor::createExtendedTracks ( const EventContext &  ctx,
const TrackCollection tracks_in,
const TrackExtensionMap track_extension_map 
) const
private

process events

Definition at line 123 of file InDetExtensionProcessor.cxx.

125  {
126  std::unique_ptr<TrackCollection> newTracks(std::make_unique<TrackCollection>());
127  std::array< std::array<std::atomic<int>, Nregions>, nTypes> counters{};
128  // loop over tracks
129  for (const Trk::Track* thisTrack : *pTracks) {
130  // statistics
131  incrementRegionCounter(counters[nInput], thisTrack, false);
132  ATH_MSG_DEBUG("evaluate input track : " << thisTrack);
133  // try to find this track in extension map
134  TrackExtensionMap::const_iterator pThisExtensionPair = trackExtensionMap->find(thisTrack);
135  // copy input track if this track is not found in list
136  if (pThisExtensionPair == trackExtensionMap->end()) {
137  ATH_MSG_DEBUG("track not in extension map, copy original track to output");
138  // copy track, set pattern info
139  std::unique_ptr<Trk::Track> ntrk(std::make_unique<Trk::Track>(*thisTrack));
140  ntrk->info().setPatternRecognitionInfo(Trk::TrackInfo::InDetExtensionProcessor);
141  newTracks->push_back(std::move(ntrk));
142  // statistics
144  } else {
145  ATH_MSG_DEBUG("track found in extension map, processing...");
146  // statistics
148  // setup new track
149  std::unique_ptr<Trk::Track> newtrack;
150  // keep old track info
151  const Trk::TrackInfo oldTrackInfo = thisTrack->info();
152  // keep list of PRDs, initially assumed to be same size as pThisExtensionPair->second
153  const auto nRIO_OnTrack {pThisExtensionPair->second.size()};
154  std::vector<const Trk::PrepRawData*> vecPrd;
155  vecPrd.reserve(nRIO_OnTrack);
156  // --- refit PRD ?
157  if (m_refitPrds) {
158  auto getPrepRawDataPtr = [](const Trk::MeasurementBase* m) {
159  const auto& pRot = dynamic_cast <const Trk::RIO_OnTrack*>(m);
160  return pRot ? pRot->prepRawData() : nullptr;
161  };
162  const auto& theRIOs_OnTrack {pThisExtensionPair->second};
163  //NOTE: Assumes success; I don't remove any nullptrs which result! (could use copy_if)
164  std::transform(theRIOs_OnTrack.begin(), theRIOs_OnTrack.end(), std::back_inserter(vecPrd), getPrepRawDataPtr);
165  // we have the PRD Vector, we need to refit the track and see if it is better
166  ATH_MSG_DEBUG("fit track " << thisTrack << " with PRDs, number : " << vecPrd.size());
167  if (!m_cosmics) {
168  // normal event processing
169  if (m_tryBremFit && thisTrack->info().trackProperties(Trk::TrackInfo::BremFit)) {
170  ATH_MSG_DEBUG("brem fit of electron like track");
171  //statistics
173  // try brem fit of combined track
174  newtrack = m_trackFitter->fit(
175  ctx, *thisTrack, vecPrd, m_runOutlier, Trk::electron);
176  } else {
177  ATH_MSG_DEBUG("normal fit track");
178  //statistics
180  // normal fit of combined track
181  newtrack = m_trackFitter->fit(ctx,
182  *thisTrack, vecPrd, m_runOutlier, m_particleHypothesis);
183  if (!newtrack && m_tryBremFit &&
184  thisTrack->trackParameters()->front()->pT() > m_pTminBrem &&
185  (!m_caloSeededBrem || thisTrack->info().patternRecoInfo(
187  ATH_MSG_DEBUG("normal fit track failed, try to recover with brem fit");
188  // statistics
190  // try brem fit of combined track
191  newtrack=m_trackFitter->fit(ctx,*thisTrack, vecPrd, m_runOutlier, Trk::electron);
192  }
193  }
194  } else {
195  // ===> special case for cosmics
196  std::vector<const Trk::PrepRawData*> vecPrdComb;
197  // get track parameters
198  const Trk::Perigee* siPerigee = thisTrack->perigeeParameters();
199  if (!siPerigee) {
200  ATH_MSG_DEBUG("no perigee found on track, copy input");
201  // statistics
203  // copy track, set pattern info
204  std::unique_ptr<Trk::Track> ntrk(std::make_unique< Trk::Track>(*thisTrack));
205  ntrk->info().setPatternRecognitionInfo(Trk::TrackInfo::InDetExtensionProcessor);
206  newTracks->push_back(std::move(ntrk));
207  } else {
208  // loop over extension RIO-on-tracks and add PRD it into vecPrdComb
210  pThisExtensionPair->first->measurementsOnTrack()->begin();
211  for (; RIOit != pThisExtensionPair->first->measurementsOnTrack()->end(); ++RIOit) {
212  const Trk::RIO_OnTrack* rot = dynamic_cast <const Trk::RIO_OnTrack*> (*RIOit);
213  if (!rot) ATH_MSG_ERROR("cast to ROT failed, should not happen here !");
214  else vecPrdComb.push_back(rot->prepRawData());
215  }
216  // merge lists
217  for (auto & i : vecPrd) {
218  double inprod =
219  (i->detectorElement()->surface(i->identify()).center() - siPerigee->position()).dot(
220  siPerigee->momentum());
221  if (inprod < 0) {
222  vecPrdComb.insert(vecPrdComb.begin(), i);
223  } else {
224  vecPrdComb.push_back(i);
225  }
226  }
227  //statistics
229  // normal fit of combined track
230  newtrack = m_trackFitter->fit(
231  ctx, vecPrdComb, *siPerigee, m_runOutlier, m_particleHypothesis);
232  }
233  }
234  } else {
235  const auto& RIOs_OnTrack {pThisExtensionPair->second};
236  // we have an extension map with RIO-on-tracks, we need to refit the track and see if it is better
237  ATH_MSG_DEBUG("fit track " << thisTrack << " with ROTs, number : " << RIOs_OnTrack.size());
238  if (!m_cosmics) {
239  if (m_tryBremFit && thisTrack->info().trackProperties(Trk::TrackInfo::BremFit)) {
240  ATH_MSG_DEBUG("brem fit of electron like track");
241  //statistics
243  // try brem fit of combined track
244  newtrack=m_trackFitter->fit(ctx,*thisTrack, RIOs_OnTrack, m_runOutlier, Trk::electron);
245  } else {
246  ATH_MSG_DEBUG("normal fit track");
247  //statistics
249  // fit combined track
250  newtrack=m_trackFitter->fit(ctx,*thisTrack, RIOs_OnTrack, m_runOutlier, m_particleHypothesis);
251  if (!newtrack && m_tryBremFit &&
252  thisTrack->trackParameters()->front()->pT() > m_pTminBrem &&
253  (!m_caloSeededBrem || thisTrack->info().patternRecoInfo(Trk::TrackInfo::TrackInCaloROI))) {
254  ATH_MSG_DEBUG("normal fit track failed, try to recover with brem fit");
255  // statistics
257  // try to recover with brem fit
258  newtrack=m_trackFitter->fit(ctx,*thisTrack, RIOs_OnTrack, m_runOutlier, Trk::electron);
259  }
260  }//end-if of normal track fit
261  } else {
262  // special case for cosmics
263  Trk::MeasurementSet rotSet;
264  // get track parameters
265  const Trk::Perigee* siPerigee = thisTrack->perigeeParameters();
266  if (!siPerigee) {
267  ATH_MSG_DEBUG("no perigee found on track, copy input");
268  // statistics
270  // copy track, set pattern info
271  std::unique_ptr<Trk::Track> ntrk(std::make_unique< Trk::Track>(*thisTrack));
272  ntrk->info().setPatternRecognitionInfo(Trk::TrackInfo::InDetExtensionProcessor);
273  newTracks->push_back(std::move(ntrk));
274  } else {
275  // extract RIO-on-tracks from extension
277  pThisExtensionPair->first->measurementsOnTrack()->begin();
278  for (; RIOit != pThisExtensionPair->first->measurementsOnTrack()->end(); ++RIOit) {
279  rotSet.push_back(*RIOit);
280  }
281  // merge RIO-on-track lists
282  for (const auto *i : pThisExtensionPair->second) {
283  double inprod = (i->associatedSurface().center() - siPerigee->position()).dot(
284  siPerigee->momentum());
285  if (inprod < 0) {
286  rotSet.insert(rotSet.begin(), i);
287  } else {
288  rotSet.push_back(i);
289  }
290  }
291  ATH_MSG_DEBUG("normal fit track");
292  //statistics
294  // fit combined track
295  newtrack=m_trackFitter->fit(ctx,rotSet, *siPerigee, m_runOutlier, m_particleHypothesis);
296  }
297  }
298  }
299  if (!newtrack) {
300  ATH_MSG_DEBUG("refit of extended track failed, copy original track to output");
301  // statistics
303  // push track into output, does copy, needs fixing
305  newTracks->push_back(trackPlusExtension(ctx,thisTrack, pThisExtensionPair->second));
306  } else {
307  // copy track, set pattern info
308  std::unique_ptr<Trk::Track> ntrk(std::make_unique<Trk::Track>(*thisTrack));
309  ntrk->info().setPatternRecognitionInfo(Trk::TrackInfo::InDetExtensionProcessor);
310  newTracks->push_back(std::move(ntrk));
311  }
312  } else {
313  if (m_trackSummaryTool.isEnabled()) {
314  m_trackSummaryTool->computeAndReplaceTrackSummary(ctx, *newtrack, m_suppressHoleSearch);
315  }
316  // score old and new tool and decide which one to push back
317  Trk::TrackScore oldScore = m_scoringTool->score(*thisTrack);
318  ATH_MSG_DEBUG("original track has score : " << oldScore);
319  Trk::TrackScore newScore = m_scoringTool->score(*newtrack);
320  ATH_MSG_DEBUG("new track has score : " << newScore);
321  // do we need to recover with a brem fit
322  if (newScore < oldScore && m_tryBremFit &&
324  thisTrack->trackParameters()->front()->pT() > m_pTminBrem &&
325  (!m_caloSeededBrem || thisTrack->info().patternRecoInfo(Trk::TrackInfo::TrackInCaloROI))) {
326  ATH_MSG_DEBUG("new track has low score, try to recover track using brem fit");
327  // statistics
329  std::unique_ptr<Trk::Track> newBremTrack;
330  // try to recover with brem fit
331  if (m_refitPrds) {
332  newBremTrack=m_trackFitter->fit(ctx,*thisTrack, vecPrd, m_runOutlier, Trk::electron);
333  } else {
334  newBremTrack=m_trackFitter->fit(ctx,*thisTrack, pThisExtensionPair->second, m_runOutlier, Trk::electron);
335  }
336  if (newBremTrack) {
337  // score again
338  // @TODO should score newBremTrack
339  if (m_trackSummaryTool.isEnabled()) {
340  m_trackSummaryTool->computeAndReplaceTrackSummary(ctx, *newBremTrack, m_suppressHoleSearch);
341  }
342  newScore = m_scoringTool->score(*newtrack);
343  ATH_MSG_DEBUG("recovered new track has score : " << newScore);
344  // copy pointer
345  newtrack = std::move(newBremTrack);
346  }
347  }
348  if (newScore >= oldScore) {
349  ATH_MSG_DEBUG("take extended track, it's better !");
350  // statistics
354  }
355  //storing the precedent info
356  newtrack->info().addPatternReco(oldTrackInfo);
357  // push track into output
359  newTracks->push_back(std::move(newtrack));
360  } else {
361  ATH_MSG_DEBUG("take original track, new one is worse !");
362  // statistics
364  // push track into output, does copy
365  std::unique_ptr<Trk::Track> ntrk;
367  ntrk.reset(trackPlusExtension(ctx,thisTrack, pThisExtensionPair->second));
368  } else {
369  ntrk = std::make_unique<Trk::Track>(*thisTrack);
370  }
372  newTracks->push_back(std::move(ntrk));
373  }
374  }
375  }
376  }
377 
378  {
379 
380  for (unsigned int itype = 0; itype < InDet::InDetExtensionProcessor::nTypes; itype++) m_counters[itype] += counters[itype];
381  }
382  return newTracks.release();
383 }

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

◆ dumpStat()

MsgStream & InDet::InDetExtensionProcessor::dumpStat ( MsgStream &  out) const
private

Definition at line 481 of file InDetExtensionProcessor.cxx.

482 {
483  int iw = 9;
484  out.width(9);
485  out << "-------------------------------------------------------------------------------" << std::endl;
486  out << " Number of events processed : " << m_Nevents << std::endl;
487  out << " statistics by eta range ------All---Barrel---Trans.-- Endcap-- " << std::endl;
488  out << "-------------------------------------------------------------------------------" << std::endl;
489  out << " Number of tracks at input :" << std::setiosflags(std::ios::dec) << std::setw(iw)
490  << m_counters[InDet::InDetExtensionProcessor::nInput][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
491  << m_counters[InDet::InDetExtensionProcessor::nInput][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
492  << m_counters[InDet::InDetExtensionProcessor::nInput][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
494  out << " Number of not extended tracks :" << std::setiosflags(std::ios::dec) << std::setw(iw)
495  << m_counters[InDet::InDetExtensionProcessor::nNotExtended][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) <<
496  std::setw(iw)
497  << m_counters[InDet::InDetExtensionProcessor::nNotExtended][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
498  std::setw(iw)
499  << m_counters[InDet::InDetExtensionProcessor::nNotExtended][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
500  std::setw(iw)
502  out << " Number of proposed ext. roads :" << std::setiosflags(std::ios::dec) << std::setw(iw)
503  << m_counters[InDet::InDetExtensionProcessor::nRecognised][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
504  << m_counters[InDet::InDetExtensionProcessor::nRecognised][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(
505  iw)
506  << m_counters[InDet::InDetExtensionProcessor::nRecognised][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(
507  iw)
509  out << "-------------------------------------------------------------------------------" << std::endl;
510  out << " Number of track fits :" << std::setiosflags(std::ios::dec) << std::setw(iw)
511  << m_counters[InDet::InDetExtensionProcessor::nFits][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
512  << m_counters[InDet::InDetExtensionProcessor::nFits][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
513  << m_counters[InDet::InDetExtensionProcessor::nFits][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
515  if (m_tryBremFit) {
516  out << " + brem fits for electron tracks :" << std::setiosflags(std::ios::dec) << std::setw(iw)
517  << m_counters[InDet::InDetExtensionProcessor::nBremFits][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
518  << m_counters[InDet::InDetExtensionProcessor::nBremFits][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(
519  iw)
520  << m_counters[InDet::InDetExtensionProcessor::nBremFits][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(
521  iw)
523  out << " + brem fit to recover failed fit:" << std::setiosflags(std::ios::dec) << std::setw(iw)
524  << m_counters[InDet::InDetExtensionProcessor::nRecoveryBremFits][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) <<
525  std::setw(iw)
526  << m_counters[InDet::InDetExtensionProcessor::nRecoveryBremFits][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
527  std::setw(iw)
528  << m_counters[InDet::InDetExtensionProcessor::nRecoveryBremFits][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
529  std::setw(iw)
531  out << " + brem fit to recover low score :" << std::setiosflags(std::ios::dec) << std::setw(iw)
532  << m_counters[InDet::InDetExtensionProcessor::nLowScoreBremFits][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) <<
533  std::setw(iw)
534  << m_counters[InDet::InDetExtensionProcessor::nLowScoreBremFits][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
535  std::setw(iw)
536  << m_counters[InDet::InDetExtensionProcessor::nLowScoreBremFits][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
537  std::setw(iw)
539  }
540  out << "-------------------------------------------------------------------------------" << std::endl;
541  out << " Number of track fit failing :" << std::setiosflags(std::ios::dec) << std::setw(iw)
542  << m_counters[InDet::InDetExtensionProcessor::nFailed][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
543  << m_counters[InDet::InDetExtensionProcessor::nFailed][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
544  << m_counters[InDet::InDetExtensionProcessor::nFailed][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
546  out << " Number of rejected extensions :" << std::setiosflags(std::ios::dec) << std::setw(iw)
547  << m_counters[InDet::InDetExtensionProcessor::nRejected][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
548  << m_counters[InDet::InDetExtensionProcessor::nRejected][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
549  std::setw(iw)
550  << m_counters[InDet::InDetExtensionProcessor::nRejected][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
551  std::setw(iw)
553  out << " Number of successful extensions :" << std::setiosflags(std::ios::dec) << std::setw(iw)
554  << m_counters[InDet::InDetExtensionProcessor::nExtended][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
555  << m_counters[InDet::InDetExtensionProcessor::nExtended][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
556  std::setw(iw)
557  << m_counters[InDet::InDetExtensionProcessor::nExtended][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
558  std::setw(iw)
560  if (m_tryBremFit) {
561  out << " including brem fitted tracks :" << std::setiosflags(std::ios::dec) << std::setw(iw)
562  << m_counters[InDet::InDetExtensionProcessor::nExtendedBrem][InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) <<
563  std::setw(iw)
564  << m_counters[InDet::InDetExtensionProcessor::nExtendedBrem][InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
565  std::setw(iw)
566  << m_counters[InDet::InDetExtensionProcessor::nExtendedBrem][InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
567  std::setw(iw)
569  }
570  out << "-------------------------------------------------------------------------------" << std::endl;
571  out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setprecision(2)
572  << " definition: ( 0.0 < Barrel < " << m_etabounds[0] << " < Transition < " << m_etabounds[1]
573  << " < Endcap < " << m_etabounds[2] << " )" << std::setprecision(-1) << std::endl;
574  out << "-------------------------------------------------------------------------------" << std::endl;
575  return out;
576 }

◆ 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::InDetExtensionProcessor::execute ( const EventContext &  ctx) const
virtual

Definition at line 101 of file InDetExtensionProcessor.cxx.

101  {
102  // process the extensions
105  SG::WriteHandle<TrackCollection> extendedTracksResult(m_newTrackName, ctx);
106  const auto nTracks {tracks->size()};
107  ATH_MSG_DEBUG("Number of Tracks found : " << nTracks);
108  // input statistics
109  {
110  ++m_Nevents;
112  }
113  ATH_CHECK(extendedTracksResult.record(std::unique_ptr<TrackCollection>(
114  createExtendedTracks(ctx, tracks.cptr(), trackExtensionMap.cptr()))));
115  ATH_MSG_DEBUG("Container '" << m_newTrackName.key()
116  << "' recorded in StoreGate, size : "
117  << extendedTracksResult->size());
118  if (extendedTracksResult->size() != nTracks) ATH_MSG_WARNING("Lost tracks after extension ??? This is a bug !");
119  return StatusCode::SUCCESS;
120 }

◆ 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 & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ finalize()

StatusCode InDet::InDetExtensionProcessor::finalize ( )
virtual

Definition at line 471 of file InDetExtensionProcessor.cxx.

471  {
472  if (msgLvl(MSG::INFO)) {
473  MsgStream &out = msg(MSG::INFO);
474  out << "::finalize() -- statistics:" << std::endl;
475  dumpStat(out);
476  out << endmsg;
477  }
478  return StatusCode::SUCCESS;
479 }

◆ incrementRegionCounter()

void InDet::InDetExtensionProcessor::incrementRegionCounter ( std::array< std::atomic< int >, 4 > &  Ntracks,
const Trk::Track track,
bool  updateAll = true 
) const
private

monitoring and validation: does success/failure counting for each detector region

Definition at line 387 of file InDetExtensionProcessor.cxx.

388  {
389  if (updateAll) Ntracks[InDet::InDetExtensionProcessor::iAll] += 1;
390  // test
391  if (!track) {
392  ATH_MSG_ERROR("track pointer zero, should not happen!");
393  return;
394  }
395  const auto *const pTrackParameters {track->trackParameters()};
396  // use first parameter
397  if (not pTrackParameters) {
398  ATH_MSG_WARNING("No track parameters, needed for statistics code in Trk::SimpleAmbiguityProcessorTool!");
399  } else {
400  const double absEta = std::abs(pTrackParameters->front()->eta());
401  if (absEta < m_etabounds[0]) ++Ntracks[InDet::InDetExtensionProcessor::iBarrel];
402  else if (absEta < m_etabounds[1]) ++Ntracks[InDet::InDetExtensionProcessor::iTransi];
403  else if (absEta < m_etabounds[2]) ++Ntracks[InDet::InDetExtensionProcessor::iEndcap];
404  }
405 }

◆ initialize()

StatusCode InDet::InDetExtensionProcessor::initialize ( )
virtual

Definition at line 78 of file InDetExtensionProcessor.cxx.

78  {
79  ATH_MSG_DEBUG("InDetExtensionProcessor::initialize()");
80  ATH_CHECK(m_trackFitter.retrieve());
81  ATH_MSG_DEBUG("Retrieved tool " << m_trackFitter);
82  // Configuration of the material effects
84  //
85  ATH_CHECK(m_trackSummaryTool.retrieve(DisableTool {m_trackSummaryTool.name().empty()}));
86  ATH_CHECK(m_scoringTool.retrieve());
87  ATH_MSG_DEBUG("Retrieved tool " << m_scoringTool);
88  // brem fitting enabled ?
89  if (m_tryBremFit) ATH_MSG_DEBUG("Try brem fit and recovery for electron like tracks.");
90  //
91  ATH_CHECK(m_trackName.initialize());
93  ATH_CHECK(m_newTrackName.initialize());
94  return StatusCode::SUCCESS;
95 }

◆ 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()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

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

◆ 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 AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::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 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::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 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

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

◆ trackPlusExtension()

Trk::Track * InDet::InDetExtensionProcessor::trackPlusExtension ( const EventContext &  ctx,
const Trk::Track siTrack,
const std::vector< const Trk::MeasurementBase * > &  extension 
) const
private

internal structuring: creates new track with original one plus extension as outliers

Definition at line 410 of file InDetExtensionProcessor.cxx.

414 {
415  const auto& trackStatesOnSurfaces{ *(siTrack->trackStateOnSurfaces()) };
416  auto pExtendedTrajectory = std::make_unique<Trk::TrackStates>();
417 
418  pExtendedTrajectory->reserve(trackStatesOnSurfaces.size() + extension.size());
419  int nSiStates = 0, nExtStates = 0;
420  // copy existing si track as first part to new track - including all track pars since fit does not change
421  auto cloneTSOS = [](const Trk::TrackStateOnSurface* pTSOS) {
422  return new Trk::TrackStateOnSurface(*pTSOS);
423  };
424  std::transform(trackStatesOnSurfaces.begin(), trackStatesOnSurfaces.end(), std::back_inserter(
425  *pExtendedTrajectory), cloneTSOS);
426  nSiStates += trackStatesOnSurfaces.size();
427  // copy proposed (but failed) extension as second part onto new track - all hits flagged as outliers.
428  constexpr auto outlierDigit {1 << Trk::TrackStateOnSurface::Outlier};
429  constexpr std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> outlierPattern(outlierDigit);
430  //create new track state on surface
431  auto createNewTSOS = [outlierPattern](const Trk::MeasurementBase* pm) -> const Trk::TrackStateOnSurface*{
432  return new Trk::TrackStateOnSurface(pm->uniqueClone(), nullptr, nullptr, outlierPattern);
433  };
434  //Adding to cosmic tracks beginning or end depending on the direction of track
435  auto addNewTSOS_ForCosmics = [&pExtendedTrajectory, siTrack, createNewTSOS](const Trk::MeasurementBase* pm) {
436  const auto& perigee {siTrack->perigeeParameters()};
437  //the sign of this gives the direction
438  const double inprod = (pm->associatedSurface().center() - perigee->position()).dot(
439  perigee->momentum());
440  if (inprod < 0) {
441  pExtendedTrajectory->insert(pExtendedTrajectory->begin(), createNewTSOS(pm));
442  } else {
443  pExtendedTrajectory->push_back(createNewTSOS(pm));
444  }
445  };
446  //actual copying done here, using preceding lambda functions
447  if (not m_cosmics) {
448  std::transform(extension.begin(), extension.end(), std::back_inserter(*pExtendedTrajectory), createNewTSOS);
449  } else {
450  //difficult to use std::transform here, since don't know whether back or front are added to
451  for (const auto *const pMeasurementBase: extension) {
452  addNewTSOS_ForCosmics(pMeasurementBase);
453  }
454  }
455  nExtStates += pExtendedTrajectory->size();
456  const auto& pFitQuality {siTrack->fitQuality()};
457  Trk::Track* extTrack =
458  new Trk::Track(siTrack->info(), std::move(pExtendedTrajectory), (pFitQuality ? pFitQuality->uniqueClone() : nullptr));
459  if (m_trackSummaryTool.isEnabled()) {
460  m_trackSummaryTool->computeAndReplaceTrackSummary(ctx, *extTrack, m_suppressHoleSearch);
461  }
462  Trk::TrackScore extScore = m_scoringTool->score(*extTrack);
463  ATH_MSG_DEBUG("rejected extension saved as Trk::Track with " << nSiStates <<
464  " fitted hits and " << nExtStates << " additional Outliers, score :" << extScore);
465  return extTrack;
466 }

◆ 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

◆ ATLAS_THREAD_SAFE [1/2]

std::array< std::array<std::atomic<int>, Nregions>, nTypes > m_counters InDet::InDetExtensionProcessor::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 100 of file InDetExtensionProcessor.h.

◆ ATLAS_THREAD_SAFE [2/2]

std::atomic<int> m_Nevents InDet::InDetExtensionProcessor::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 101 of file InDetExtensionProcessor.h.

◆ m_caloSeededBrem

bool InDet::InDetExtensionProcessor::m_caloSeededBrem
private

run in Calo seeded mode

Definition at line 83 of file InDetExtensionProcessor.h.

◆ m_cosmics

bool InDet::InDetExtensionProcessor::m_cosmics
private

whether we are running cosmics

Definition at line 62 of file InDetExtensionProcessor.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_etabounds

std::vector<float> InDet::InDetExtensionProcessor::m_etabounds
private

eta intervals for internal monitoring

Definition at line 103 of file InDetExtensionProcessor.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 AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_extensionMapName

SG::ReadHandleKey<TrackExtensionMap> InDet::InDetExtensionProcessor::m_extensionMapName
private

Name of input extension map.

Definition at line 63 of file InDetExtensionProcessor.h.

◆ m_keepFailedExtensionOnTrack

bool InDet::InDetExtensionProcessor::m_keepFailedExtensionOnTrack
private

switch whether to append a rejected extension as outlier trajectory

Definition at line 76 of file InDetExtensionProcessor.h.

◆ m_matEffects

int InDet::InDetExtensionProcessor::m_matEffects
private

type of material interaction in extrapolation

Definition at line 80 of file InDetExtensionProcessor.h.

◆ m_newTrackName

SG::WriteHandleKey<TrackCollection> InDet::InDetExtensionProcessor::m_newTrackName
private

Name of output Trackcollection.

Definition at line 64 of file InDetExtensionProcessor.h.

◆ m_particleHypothesis

Trk::ParticleHypothesis InDet::InDetExtensionProcessor::m_particleHypothesis
private

nomen est omen

Definition at line 87 of file InDetExtensionProcessor.h.

◆ m_pTminBrem

float InDet::InDetExtensionProcessor::m_pTminBrem
private

min pt for a brem fit

Definition at line 84 of file InDetExtensionProcessor.h.

◆ m_refitPrds

bool InDet::InDetExtensionProcessor::m_refitPrds
private

fitter steering: whether to do the fit with re-calibrated clusters (true) or not

Definition at line 78 of file InDetExtensionProcessor.h.

◆ m_runOutlier

Trk::RunOutlierRemoval InDet::InDetExtensionProcessor::m_runOutlier
private

whether to run outlier logics

Definition at line 74 of file InDetExtensionProcessor.h.

◆ m_scoringTool

ToolHandle<Trk::ITrackScoringTool> InDet::InDetExtensionProcessor::m_scoringTool
private

track scorer tool handle

Definition at line 73 of file InDetExtensionProcessor.h.

◆ m_suppressHoleSearch

bool InDet::InDetExtensionProcessor::m_suppressHoleSearch
private

no hole search ?

Definition at line 81 of file InDetExtensionProcessor.h.

◆ m_trackFitter

ToolHandle<Trk::ITrackFitter> InDet::InDetExtensionProcessor::m_trackFitter
private

track fitter tool handle

Definition at line 65 of file InDetExtensionProcessor.h.

◆ m_trackName

SG::ReadHandleKey<TrackCollection> InDet::InDetExtensionProcessor::m_trackName
private

Name of input Trackcollection.

Definition at line 61 of file InDetExtensionProcessor.h.

◆ m_trackSummaryTool

ToolHandle<Trk::IExtendedTrackSummaryTool> InDet::InDetExtensionProcessor::m_trackSummaryTool
private
Initial value:
{
this, "TrackSummaryTool", ""
}

Definition at line 67 of file InDetExtensionProcessor.h.

◆ m_tryBremFit

bool InDet::InDetExtensionProcessor::m_tryBremFit
private

brem recovery mode ?

Definition at line 82 of file InDetExtensionProcessor.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::TrackInfo
Contains information about the 'fitter' of this track.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:32
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
beamspotPlotBcids.k
k
Definition: beamspotPlotBcids.py:524
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
InDet::InDetExtensionProcessor::m_trackSummaryTool
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
Definition: InDetExtensionProcessor.h:69
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
beamspotVtxAnalysis.cs
list cs
Definition: beamspotVtxAnalysis.py:391
InDet::InDetExtensionProcessor::nInput
@ nInput
Definition: InDetExtensionProcessor.h:95
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::Track::trackStateOnSurfaces
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
Trk::Track::info
const TrackInfo & info() const
Returns a const ref to info of a const tracks.
InDet::InDetExtensionProcessor::m_keepFailedExtensionOnTrack
bool m_keepFailedExtensionOnTrack
switch whether to append a rejected extension as outlier trajectory
Definition: InDetExtensionProcessor.h:76
xAOD::JetInput::Track
@ Track
Definition: JetContainerInfo.h:61
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
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
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDet::InDetExtensionProcessor::m_suppressHoleSearch
bool m_suppressHoleSearch
no hole search ?
Definition: InDetExtensionProcessor.h:81
InDet::InDetExtensionProcessor::m_tryBremFit
bool m_tryBremFit
brem recovery mode ?
Definition: InDetExtensionProcessor.h:82
InDet::InDetExtensionProcessor::nRejected
@ nRejected
Definition: InDetExtensionProcessor.h:95
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
InDet::InDetExtensionProcessor::trackPlusExtension
Trk::Track * trackPlusExtension(const EventContext &ctx, const Trk::Track *, const std::vector< const Trk::MeasurementBase * > &) const
internal structuring: creates new track with original one plus extension as outliers
Definition: InDetExtensionProcessor.cxx:410
atn_test_sgProducerConsumerDataPool_jobOptions.end
end
Definition: atn_test_sgProducerConsumerDataPool_jobOptions.py:25
Trk::undefined
@ undefined
Definition: ParticleHypothesis.h:38
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDet::InDetExtensionProcessor::m_runOutlier
Trk::RunOutlierRemoval m_runOutlier
whether to run outlier logics
Definition: InDetExtensionProcessor.h:74
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
InDet::InDetExtensionProcessor::nRecognised
@ nRecognised
Definition: InDetExtensionProcessor.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
InDet::InDetExtensionProcessor::m_refitPrds
bool m_refitPrds
fitter steering: whether to do the fit with re-calibrated clusters (true) or not
Definition: InDetExtensionProcessor.h:78
Trk::TrackStateOnSurface::Outlier
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
Definition: TrackStateOnSurface.h:122
InDet::InDetExtensionProcessor::nExtended
@ nExtended
Definition: InDetExtensionProcessor.h:95
Trk::TrackInfo::addPatternReco
void addPatternReco(const TrackInfo &)
A method adding just pattern recognition info without adding the actual properties.
InDet::InDetExtensionProcessor::m_trackFitter
ToolHandle< Trk::ITrackFitter > m_trackFitter
track fitter tool handle
Definition: InDetExtensionProcessor.h:65
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
InDet::InDetExtensionProcessor::m_cosmics
bool m_cosmics
whether we are running cosmics
Definition: InDetExtensionProcessor.h:62
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
InDet::InDetExtensionProcessor::m_scoringTool
ToolHandle< Trk::ITrackScoringTool > m_scoringTool
track scorer tool handle
Definition: InDetExtensionProcessor.h:73
lumiFormat.i
int i
Definition: lumiFormat.py:92
InDet::InDetExtensionProcessor::iTransi
@ iTransi
Definition: InDetExtensionProcessor.h:91
InDet::InDetExtensionProcessor::Nregions
@ Nregions
Definition: InDetExtensionProcessor.h:91
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::electron
@ electron
Definition: ParticleHypothesis.h:27
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
InDet::InDetExtensionProcessor::nLowScoreBremFits
@ nLowScoreBremFits
Definition: InDetExtensionProcessor.h:96
InDet::InDetExtensionProcessor::createExtendedTracks
TrackCollection * createExtendedTracks(const EventContext &ctx, const TrackCollection *tracks_in, const TrackExtensionMap *track_extension_map) const
process events
Definition: InDetExtensionProcessor.cxx:123
InDet::InDetExtensionProcessor::nTypes
@ nTypes
Definition: InDetExtensionProcessor.h:96
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
Trk::TrackInfo::InDetExtensionProcessor
@ InDetExtensionProcessor
Tracks with InDetExtensionProcessor used.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:111
Trk::TrackScore
float TrackScore
Definition: TrackScore.h:10
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
Trk::TrackInfo::BremFit
@ BremFit
A brem fit was performed on this track.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:78
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
InDet::InDetExtensionProcessor::iAll
@ iAll
Definition: InDetExtensionProcessor.h:91
Trk::TrackInfo::TrackInCaloROI
@ TrackInCaloROI
A track in a CaloROI.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:236
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
InDet::InDetExtensionProcessor::nNotExtended
@ nNotExtended
Definition: InDetExtensionProcessor.h:96
InDet::InDetExtensionProcessor::m_pTminBrem
float m_pTminBrem
min pt for a brem fit
Definition: InDetExtensionProcessor.h:84
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
InDet::InDetExtensionProcessor::iBarrel
@ iBarrel
Definition: InDetExtensionProcessor.h:91
InDet::InDetExtensionProcessor::incrementRegionCounter
void incrementRegionCounter(std::array< std::atomic< int >, 4 > &, const Trk::Track *, bool=true) const
monitoring and validation: does success/failure counting for each detector region
Definition: InDetExtensionProcessor.cxx:387
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
Trk::MeasurementSet
std::vector< const MeasurementBase * > MeasurementSet
vector of fittable measurements
Definition: FitterTypes.h:30
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::MeasurementBase
Definition: MeasurementBase.h:58
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
InDet::InDetExtensionProcessor::nRecoveryBremFits
@ nRecoveryBremFits
Definition: InDetExtensionProcessor.h:95
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
InDet::InDetExtensionProcessor::m_caloSeededBrem
bool m_caloSeededBrem
run in Calo seeded mode
Definition: InDetExtensionProcessor.h:83
InDet::InDetExtensionProcessor::m_trackName
SG::ReadHandleKey< TrackCollection > m_trackName
Name of input Trackcollection.
Definition: InDetExtensionProcessor.h:61
InDet::InDetExtensionProcessor::nExtendedBrem
@ nExtendedBrem
Definition: InDetExtensionProcessor.h:96
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
test_pythinning.out
out
Definition: test_pythinning.py:94
InDet::InDetExtensionProcessor::dumpStat
MsgStream & dumpStat(MsgStream &out) const
Definition: InDetExtensionProcessor.cxx:481
InDet::InDetExtensionProcessor::nFits
@ nFits
Definition: InDetExtensionProcessor.h:96
Trk::RIO_OnTrack::prepRawData
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
InDet::InDetExtensionProcessor::m_etabounds
std::vector< float > m_etabounds
eta intervals for internal monitoring
Definition: InDetExtensionProcessor.h:103
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
a
TList * a
Definition: liststreamerinfos.cxx:10
InDet::InDetExtensionProcessor::m_matEffects
int m_matEffects
type of material interaction in extrapolation
Definition: InDetExtensionProcessor.h:80
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Trk::TrackInfo::setPatternRecognitionInfo
void setPatternRecognitionInfo(const TrackPatternRecoInfo &patternReco)
Method setting the pattern recognition algorithm.
InDet::InDetExtensionProcessor::m_extensionMapName
SG::ReadHandleKey< TrackExtensionMap > m_extensionMapName
Name of input extension map.
Definition: InDetExtensionProcessor.h:63
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Trk::TrackInfo::trackProperties
bool trackProperties(const TrackProperties &property) const
Access methods for track properties.
InDet::InDetExtensionProcessor::nBremFits
@ nBremFits
Definition: InDetExtensionProcessor.h:96
InDet::InDetExtensionProcessor::m_particleHypothesis
Trk::ParticleHypothesis m_particleHypothesis
nomen est omen
Definition: InDetExtensionProcessor.h:87
InDet::InDetExtensionProcessor::m_newTrackName
SG::WriteHandleKey< TrackCollection > m_newTrackName
Name of output Trackcollection.
Definition: InDetExtensionProcessor.h:64
GlobalSim::dot
void dot(const Digraph &G, const std::string &fn)
Definition: dot.cxx:10
InDet::InDetExtensionProcessor::nFailed
@ nFailed
Definition: InDetExtensionProcessor.h:95
InDet::InDetExtensionProcessor::iEndcap
@ iEndcap
Definition: InDetExtensionProcessor.h:91
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
ServiceHandle< ICondSvc >