ATLAS Offline Software
Classes | Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
PESA::T2BSTrackFilterTool Class Reference

#include <T2BSTrackFilterTool.h>

Inheritance diagram for PESA::T2BSTrackFilterTool:
Collaboration diagram for PESA::T2BSTrackFilterTool:

Classes

struct  TrackData
 Class which holds track parameters. More...
 
struct  TrackStatAccumulator
 

Public Types

enum  TrackRejectReason {
  fail_PT = 0, fail_SiHits = 1, fail_PIXHits = 2, fail_SCTHits = 3,
  fail_TRTHits = 4, fail_NDF = 5, fail_D0 = 6, fail_Z0 = 7,
  fail_D0err = 8, fail_Z0err = 9, fail_Eta = 10, fail_MinQual = 11,
  fail_MaxQual = 12, fail_Chi2Prob = 13, fail_D0Chi2 = 14, numRejectReasons
}
 
using TrackVector = std::vector< const Trk::Track * >
 
using TrackRejectReasonSet = std::bitset< numRejectReasons >
 

Public Member Functions

 T2BSTrackFilterTool (const std::string &type, const std::string &name, const IInterface *parent)
 
 ~T2BSTrackFilterTool ()=default
 
StatusCode initialize () final
 
TrackVector filter (const TrackCollection &tracks) const
 Select tracks that can be used for further processing. More...
 
bool updateBS (const TrackVector &tracks, unsigned lbn, unsigned bcid, std::vector< TrackData > *bsTracks=nullptr) const
 Update beam spot estimate with new tracks. More...
 
TrackVector filterBS (const TrackVector &tracks) const
 Select tracks based on their distance to estimated beamspot. More...
 
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 sysInitialize () override
 Perform system initialization for an algorithm. 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

using AccumKey = unsigned
 
using AccumMap = std::map< AccumKey, TrackStatAccumulator >
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void monitor_tracks (std::string const &prefix, std::string const &suffix, std::vector< T2Track > const &tracks) const
 
TrackRejectReasonSet isGoodTrack (const T2Track &track) const
 
bool bootstrapFromSeeds (std::vector< TrackData > *bsTracks=nullptr) const
 
double trackChi2 (TrackData const &seed, AmgVector(4) const &solution) const
 Calculate track chi2 w.r.t. More...
 
void dumpTrackParams (Trk::Perigee const *trackPars, double chi2, std::string const &message) const
 
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

double m_minTrackPt
 
double m_maxTrackEta
 
double m_maxTrackZ0
 
double m_maxTrackD0
 
double m_maxTrackZ0err
 
double m_maxTrackD0err
 
double m_minTrackNDF
 
double m_minTrackQual
 
double m_maxTrackQual
 
double m_minTrackChi2Prob
 
int m_minSiHits
 
int m_minPIXHits
 
int m_minSCTHits
 
int m_minTRTHits
 
unsigned m_goalSeedTracks
 
double m_chi2cutoff
 
double m_beamSizeLS
 
int m_lbnInterval
 
std::mutex m_mutex
 
std::vector< TrackData > m_bsSeeds ATLAS_THREAD_SAFE
 
AccumMap m_accumulators ATLAS_THREAD_SAFE
 
ToolHandle< GenericMonitoringToolm_monTool {this,"MonTool","","Monitoring tool"}
 
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

Definition at line 30 of file T2BSTrackFilterTool.h.

Member Typedef Documentation

◆ AccumKey

using PESA::T2BSTrackFilterTool::AccumKey = unsigned
private

Definition at line 191 of file T2BSTrackFilterTool.h.

◆ AccumMap

Definition at line 192 of file T2BSTrackFilterTool.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

◆ TrackRejectReasonSet

Definition at line 79 of file T2BSTrackFilterTool.h.

◆ TrackVector

Definition at line 33 of file T2BSTrackFilterTool.h.

Member Enumeration Documentation

◆ TrackRejectReason

Enumerator
fail_PT 
fail_SiHits 
fail_PIXHits 
fail_SCTHits 
fail_TRTHits 
fail_NDF 
fail_D0 
fail_Z0 
fail_D0err 
fail_Z0err 
fail_Eta 
fail_MinQual 
fail_MaxQual 
fail_Chi2Prob 
fail_D0Chi2 
numRejectReasons 

Definition at line 60 of file T2BSTrackFilterTool.h.

60  {
61  fail_PT = 0,
62  fail_SiHits = 1,
63  fail_PIXHits = 2,
64  fail_SCTHits = 3,
65  fail_TRTHits = 4,
66  fail_NDF = 5,
67  fail_D0 = 6,
68  fail_Z0 = 7,
69  fail_D0err = 8,
70  fail_Z0err = 9,
71  fail_Eta = 10,
72  fail_MinQual = 11,
73  fail_MaxQual = 12,
74  fail_Chi2Prob = 13,
75  fail_D0Chi2 = 14,
76  //
78  };

Constructor & Destructor Documentation

◆ T2BSTrackFilterTool()

PESA::T2BSTrackFilterTool::T2BSTrackFilterTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

◆ ~T2BSTrackFilterTool()

PESA::T2BSTrackFilterTool::~T2BSTrackFilterTool ( )
default

Member Function Documentation

◆ bootstrapFromSeeds()

bool T2BSTrackFilterTool::bootstrapFromSeeds ( std::vector< TrackData > *  bsTracks = nullptr) const
private

Definition at line 408 of file T2BSTrackFilterTool.cxx.

409 {
410  // needs a number of seeds
411  if (m_bsSeeds.size() < m_goalSeedTracks) return false;
412 
413  // do all seed track first without filtering
414  TrackStatAccumulator acc0;
415  for (auto const& seed: m_bsSeeds) {
416  acc0.update(seed, m_beamSizeLS);
417  }
418  auto solution = acc0.solution();
419  ATH_MSG_DEBUG("Unfiltered solution=" << solution[0] << ", " << solution[1]
420  << ", " << solution[2] << ", " << solution[3]);
421  ATH_MSG_DEBUG("m_trk_count=" << acc0.trk_count);
422 
423  // few iterations of the same fit removing outliers
424  const int Niter = 2;
425  for (int c = 0; c < Niter; ++ c) {
426  TrackStatAccumulator acc;
427 
428  for (auto const& seed: m_bsSeeds) {
429  double chi2 = trackChi2(seed, solution);
430  if (chi2 < m_chi2cutoff) {
431  acc.update(seed, m_beamSizeLS);
432  }
433  }
434  solution = acc.solution();
435  ATH_MSG_DEBUG("Filtered solution [iter " << c << "]=" << solution[0] << ", " << solution[1]
436  << ", " << solution[2] << ", " << solution[3]);
437  ATH_MSG_DEBUG("m_trk_count=" << acc.trk_count);
438  }
439 
440  // final pass
441  m_accumulators.clear(); // they should be clear already, just in case
442  if (bsTracks != nullptr) {
443  // we expects more than half tracks to pass
444  bsTracks->reserve(m_bsSeeds.size());
445  }
446  std::vector<unsigned> trackRejectReasonsCounts(numRejectReasons);
447  for (auto const& seed: m_bsSeeds) {
448  double chi2 = trackChi2(seed, solution);
449  ATH_MSG_DEBUG("chi2=" << chi2);
450  if (chi2 < m_chi2cutoff) {
451  if (m_accumulators.count(seed.lbn) == 0) {
452  ATH_MSG_DEBUG("Adding accumulator for LB=" << seed.lbn);
453  }
454  m_accumulators[seed.lbn].update(seed, m_beamSizeLS);
455  if (bsTracks != nullptr) {
456  bsTracks->push_back(seed);
457  }
458  } else {
459  ++trackRejectReasonsCounts[fail_D0Chi2];
460  }
461  }
462 
463  TrackStatAccumulator acc;
464  for (auto&& pair: m_accumulators) {
465  acc.update(pair.second);
466  }
467  solution = acc.solution();
468  ATH_MSG_DEBUG("Final filtered solution=" << solution[0] << ", " << solution[1]
469  << ", " << solution[2] << ", " << solution[3]);
470  ATH_MSG_DEBUG("m_trk_count=" << acc.trk_count);
471 
472  // monitoring
473  auto rejectReason = Monitored::Collection("TrackRejectReason", trackRejectReasonsCounts);
474 
475  //Monitor counters per track collection and time to select tracks
477 
478  return true;
479 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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; }

◆ dumpTrackParams()

void T2BSTrackFilterTool::dumpTrackParams ( Trk::Perigee const trackPars,
double  chi2,
std::string const message 
) const
private

Definition at line 493 of file T2BSTrackFilterTool.cxx.

493  {
494  auto&& par = trackPars->parameters();
495  auto&& cov = trackPars->covariance();
496  if (cov != nullptr) {
497  double d0_err = Amg::error(*cov, Trk::d0);
498  double phi0_err = Amg::error(*cov, Trk::phi0);
499  double z0_err = Amg::error(*cov, Trk::z0);
500  double r_est = std::abs((*cov)(Trk::d0, Trk::phi0) / (*cov)(Trk::phi0, Trk::phi0));
501  double psi_err = (*cov)(Trk::d0, Trk::d0) / (r_est*r_est) - (*cov)(Trk::phi0, Trk::phi0);
502  if (psi_err > 0) {
503  psi_err = std::sqrt(psi_err);
504  } else {
505  psi_err = -std::sqrt(-psi_err);
506  }
507  ATH_MSG_DEBUG(message << ':'
508  << std::setprecision(15)
509  << " z0: " << par[Trk::z0]
510  << " d0: " << par[Trk::d0]
511  << " phi0: " << par[Trk::phi0]
512  << " d0_err: " << d0_err
513  << " phi0_err: " << phi0_err
514  << " d0_phi0_cov: " << (*cov)(Trk::d0, Trk::phi0)
515  << " r_est: " << r_est
516  << " psi_err: " << psi_err
517  << " z0_err: " << z0_err
518  << " chi2: " << chi2
519  << std::setprecision(6));
520  }
521 }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ filter()

std::vector< const Trk::Track * > T2BSTrackFilterTool::filter ( const TrackCollection tracks) const

Select tracks that can be used for further processing.

This method only looks at parameters of individual tracks and does not check track distance to an estimated beam spot.

Definition at line 159 of file T2BSTrackFilterTool.cxx.

160 {
161  ATH_MSG_DEBUG( "Selecting tracks for the beamSpot algorithm" );
162 
163  //Monitoring counters and timers
164  auto timerTrackSelection = Monitored::Timer("TIME_TrackFilter");
165  auto nTracksInput = Monitored::Scalar<unsigned>("TracksInput", 0);
166  auto nTracksFilter = Monitored::Scalar<unsigned>("TracksFilter", 0);
167  std::vector<unsigned> trackRejectReasonsCounts(numRejectReasons);
168 
169  //T2Track with easily accesable parameters
170  std::vector<T2Track> myTracks;
171  myTracks.reserve(tracks.size());
172  std::vector<const Trk::Track*> selectedTracks;
173  selectedTracks.reserve(tracks.size());
174 
175  // Loop over all tracks in the given track collections
176  for (auto trackIter = tracks.begin(); trackIter != tracks.end(); ++trackIter) {
177 
178  const Trk::Track& track = **trackIter;
179 
180  //Counter for all input tracks
181  nTracksInput++;
182 
183  const T2Track myTrack(track);
184  // Check for passed track
185  TrackRejectReasonSet const rejectSet = isGoodTrack(myTrack);
186  if (rejectSet.none()) {
187  // Add this track to the set used to find a vertex
188  selectedTracks.push_back(*trackIter);
189 
190  //Stored only for monitoring
191  myTracks.push_back(myTrack);
192 
193  //Counter for selected tracks
194  nTracksFilter++;
195 
196  } else {
197  for (unsigned bit = 0; bit < numRejectReasons; ++ bit) {
198  if (rejectSet.test(bit)) {
199  ++trackRejectReasonsCounts[bit];
200  }
201  }
202  }
203 
205  "Track " << (rejectSet.none() ? "passed" : "failed") << " selection:" <<
206  " mask: " << rejectReasonsToString(rejectSet) <<
207  " d0: " << myTrack.D0() <<
208  " z0: " << myTrack.Z0() <<
209  " phi0: " << myTrack.Phi() <<
210  " eta: " << myTrack.Eta() <<
211  " pT: " << myTrack.Pt()*GeV <<
212  " Z0err: " << myTrack.Z0err() <<
213  " D0err: " << myTrack.D0err() <<
214  " Qual: " << myTrack.Qual() <<
215  " Chi2Prob: " << myTrack.Chi2Prob() <<
216  " NpixSPs: " << myTrack.PIXHits() <<
217  " NsctSPs: " << myTrack.SCTHits() <<
218  " NstrawHits: " << myTrack.TRTHits());
219  } //end for loop over tracks in a collection
220 
221  //How many tracks per collection
222  ATH_MSG_DEBUG("Total Tracks: " << nTracksInput << " selectedTracks: " << nTracksFilter);
223 
224  //Monitor all passed tracks variables/parameters
225  monitor_tracks("Track", "Filter", myTracks);
226 
227  auto rejectReason = Monitored::Collection("TrackRejectReason", trackRejectReasonsCounts);
228 
229  //Monitor counters per track collection and time to select tracks
230  auto mon = Monitored::Group(m_monTool, nTracksInput, nTracksFilter,
231  timerTrackSelection, rejectReason);
232 
233  return selectedTracks;
234 }

◆ filterBS()

std::vector< const Trk::Track * > T2BSTrackFilterTool::filterBS ( const TrackVector tracks) const

Select tracks based on their distance to estimated beamspot.

This method should only be called when updateBS() returns true.

Definition at line 310 of file T2BSTrackFilterTool.cxx.

311 {
312  auto timerTrackFilterBS = Monitored::Timer("TIME_TrackFilterBS");
313  auto nTracksFilterBS = Monitored::Scalar<unsigned>("TracksFilterBS", 0);
314 
315  std::lock_guard<std::mutex> lock(m_mutex);
316 
317  std::vector<const Trk::Track*> selected;
318  if (m_accumulators.empty()) {
319  // no beamspot yet
320  return selected;
321  }
322 
323  // current local solution for beam position
324  TrackStatAccumulator acc;
325  for (auto&& pair: m_accumulators) {
326  acc.update(pair.second);
327  }
328  auto solution = acc.solution();
329 
330  // update already collected statistics, filtering some contributions
331  std::vector<unsigned> trackRejectReasonsCounts(numRejectReasons);
332  std::vector<T2Track> t2Tracks;
333  t2Tracks.reserve(tracks.size());
334  for (auto& track: tracks) {
335  auto trackPars = track->perigeeParameters();
336  if (trackPars != nullptr) {
337  TrackData seed(*trackPars, 0, 0);
338  double chi2 = trackChi2(seed, solution);
339  if (chi2 < m_chi2cutoff) {
340  if (msgLvl(MSG::DEBUG)) {
341  dumpTrackParams(trackPars, chi2, "filterBS: track passed chi2 selection");
342  }
343  selected.push_back(track);
344  t2Tracks.emplace_back(*track);
345  ++ nTracksFilterBS;
346  } else {
347  if (msgLvl(MSG::DEBUG)) {
348  dumpTrackParams(trackPars, chi2, "filterBS: track failed chi2_d0 restriction");
349  }
350  ++trackRejectReasonsCounts[fail_D0Chi2];
351  }
352  }
353  }
354 
355  // monitoring
356  auto rejectReason = Monitored::Collection("TrackRejectReason", trackRejectReasonsCounts);
357 
358  //Monitor counters per track collection and time to select tracks
359  auto mon = Monitored::Group(m_monTool, rejectReason, nTracksFilterBS, timerTrackFilterBS);
360 
361  monitor_tracks("Track", "FilterBS", t2Tracks);
362 
363  return selected;
364 }

◆ initialize()

StatusCode T2BSTrackFilterTool::initialize ( )
final

Definition at line 146 of file T2BSTrackFilterTool.cxx.

147 {
148  ATH_MSG_INFO("Initialising T2BSTrackFilterTool tool");
149 
150  //Retrieve monitoring tool
151  if (!m_monTool.empty()) ATH_CHECK(m_monTool.retrieve());
152 
153  m_accumulators.clear();
154 
155  return StatusCode::SUCCESS;
156 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ isGoodTrack()

T2BSTrackFilterTool::TrackRejectReasonSet T2BSTrackFilterTool::isGoodTrack ( const T2Track track) const
private

Definition at line 367 of file T2BSTrackFilterTool.cxx.

368 {
369  TrackRejectReasonSet reasons;
370  if (std::abs(track.Pt()) < m_minTrackPt) reasons.set(fail_PT);
371  if (track.SiHits() < m_minSiHits) reasons.set(fail_SiHits);
372  if (track.PIXHits() < m_minPIXHits) reasons.set(fail_PIXHits);
373  if (track.SCTHits() < m_minSCTHits) reasons.set(fail_SCTHits);
374  if (track.TRTHits() < m_minTRTHits) reasons.set(fail_TRTHits);
375  if (track.NDF() < m_minTrackNDF) reasons.set(fail_NDF);
376  if (std::abs(track.D0()) > m_maxTrackD0) reasons.set(fail_D0);
377  if (std::abs(track.Z0()) > m_maxTrackZ0) reasons.set(fail_Z0);
378  if (track.D0err() > m_maxTrackD0err) reasons.set(fail_D0err);
379  if (track.Z0err() > m_maxTrackZ0err) reasons.set(fail_Z0err);
380  if (std::abs(track.Eta()) > m_maxTrackEta) reasons.set(fail_Eta);
381  if (track.Qual() < m_minTrackQual) reasons.set(fail_MinQual);
382  if (track.Qual() > m_maxTrackQual) reasons.set(fail_MaxQual);
383  if (track.Chi2Prob() < m_minTrackChi2Prob) reasons.set(fail_Chi2Prob);
384  return reasons;
385 }

◆ monitor_tracks()

void T2BSTrackFilterTool::monitor_tracks ( std::string const prefix,
std::string const suffix,
std::vector< T2Track > const tracks 
) const
private

Definition at line 388 of file T2BSTrackFilterTool.cxx.

389 {
390  auto trackPt = Monitored::Collection( prefix + "Pt" + suffix, tracks, [](const T2Track& t){ return t.Pt() ;});
391  auto trackEta = Monitored::Collection( prefix + "Eta" + suffix, tracks, [](const T2Track& t){ return t.Eta() ;});
392  auto trackPhi = Monitored::Collection( prefix + "Phi" + suffix, tracks, [](const T2Track& t){ return t.Phi() ;});
393  auto trackZ0 = Monitored::Collection( prefix + "Z0" + suffix, tracks, [](const T2Track& t){ return t.Z0() ;});
394  auto trackD0 = Monitored::Collection( prefix + "D0" + suffix, tracks, [](const T2Track& t){ return t.D0() ;});
395  auto trackZ0err = Monitored::Collection( prefix + "Z0err" + suffix, tracks, [](const T2Track& t){ return t.Z0err() ;});
396  auto trackD0err = Monitored::Collection( prefix + "D0err" + suffix, tracks, [](const T2Track& t){ return t.D0err() ;});
397  auto trackNDF = Monitored::Collection( prefix + "NDF" + suffix, tracks, [](const T2Track& t){ return t.NDF() ;});
398  auto trackQual = Monitored::Collection( prefix + "Qual" + suffix, tracks, [](const T2Track& t){ return t.Qual() ;});
399  auto trackChi2Prob= Monitored::Collection( prefix + "Chi2Prob" + suffix, tracks, [](const T2Track& t){ return t.Chi2Prob();});
400  auto trackSiHits = Monitored::Collection( prefix + "SiHits" + suffix, tracks, [](const T2Track& t){ return t.SiHits() ;});
401  auto trackPiHits = Monitored::Collection( prefix + "PIXHits" + suffix, tracks, [](const T2Track& t){ return t.PIXHits() ;});
402  auto trackSCTHits = Monitored::Collection( prefix + "SCTHits" + suffix, tracks, [](const T2Track& t){ return t.SCTHits() ;});
403  auto trackTRTHits = Monitored::Collection( prefix + "TRTHits" + suffix, tracks, [](const T2Track& t){ return t.TRTHits() ;});
404  auto mon = Monitored::Group(m_monTool, trackPt, trackEta, trackPhi, trackZ0, trackD0, trackZ0err, trackD0err,
405  trackNDF, trackQual, trackChi2Prob, trackSiHits, trackPiHits, trackSCTHits, trackTRTHits);
406 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::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< AlgTool >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ trackChi2()

double T2BSTrackFilterTool::trackChi2 ( TrackData const seed,
AmgVector(4) const solution 
) const
private

Calculate track chi2 w.r.t.

current solution for beam spot.

Definition at line 481 of file T2BSTrackFilterTool.cxx.

481  {
482  double const sin_phi0 = std::sin(seed.phi0);
483  double const cos_phi0 = std::cos(seed.phi0);
484  double const param[] = {-sin_phi0, cos_phi0, -seed.z0*sin_phi0, seed.z0*cos_phi0};
485  double chi2 = seed.d0;
486  for (int i = 0; i < 4; ++ i) {
487  chi2 -= solution[i]*param[i];
488  }
489  chi2 = chi2*chi2 / (seed.d0_var + m_beamSizeLS*m_beamSizeLS);
490  return chi2;
491 }

◆ updateBS()

bool T2BSTrackFilterTool::updateBS ( const TrackVector tracks,
unsigned  lbn,
unsigned  bcid,
std::vector< TrackData > *  bsTracks = nullptr 
) const

Update beam spot estimate with new tracks.

Normally the tracks would be the same as returned from previous method as some filtering is needed for good estimation.

This method returns true when it has a reasonable estimate of the beamspot, if true is returned then further filtering can be done with filterBS() method. If bsTracks pointer is non-zero then the vector will be filled with tracks that were used for beam spot estimate, this only happens when new estimate is calculated. Returned track list can include tracks from multiple event in the same lumi block or even multiple lumi blocks, and it will include all tracks from a current call (after filtering).

Definition at line 236 of file T2BSTrackFilterTool.cxx.

239 {
240  std::lock_guard<std::mutex> lock(m_mutex);
241 
242  if (m_accumulators.empty()) {
243  // no beamspot yet, store track params in the seeds array
244  m_bsSeeds.reserve(m_bsSeeds.size() + tracks.size());
245  for (auto& track: tracks) {
246  m_bsSeeds.emplace_back(*track->perigeeParameters(), lbn, bcid);
247  }
248 
249  // initial calculation of the beamspot and matrix
250  bool has_bs = bootstrapFromSeeds(bsTracks);
251  if (has_bs) {
252  // can clear seeds
253  m_bsSeeds.clear();
254  }
255  return has_bs;
256  }
257 
258  // We need to cleanup accumulators for old LBs from time to time,
259  // do it when there is a LBN change.
260  if (m_accumulators.count(lbn) == 0) {
261 
262  // count number of track in all existing accumulators
263  unsigned accumTrackCount = std::accumulate(
264  m_accumulators.begin(), m_accumulators.end(), 0,
265  [](unsigned counter, auto const& pair) { return counter + pair.second.trk_count; }
266  );
267  ATH_MSG_DEBUG("Currently have " << m_accumulators.size() << " accumulators with "
268  << accumTrackCount << " tracks");
269 
270  // only need few recent accumulators to have a reasonable track count, drop
271  // some eralier accumulators, for now keep two recent LBNs
272  // TODO: need smarter way to decide what to keep
273  while (m_accumulators.size() > 2) {
274  ATH_MSG_DEBUG("Removing accumulator for LB=" << m_accumulators.begin()->first
275  << " with " << m_accumulators.begin()->second.trk_count << " tracks");
276  m_accumulators.erase(m_accumulators.begin());
277  }
278  }
279 
280  // current local solution for beam position
281  TrackStatAccumulator acc;
282  for (auto&& pair: m_accumulators) {
283  acc.update(pair.second);
284  }
285  auto solution = acc.solution();
286 
287  // update already collected statistics, filtering some contributions
288  for (auto& track: tracks) {
289  auto trackPars = track->perigeeParameters();
290  if (trackPars != nullptr) {
291  TrackData seed(*trackPars, lbn, bcid);
292  double chi2 = trackChi2(seed, solution);
293  if (chi2 < m_chi2cutoff) {
294  if (msgLvl(MSG::DEBUG)) {
295  dumpTrackParams(trackPars, chi2, "updateBS: track passed chi2 selection");
296  }
297  m_accumulators[lbn].update(seed, m_beamSizeLS);
298  } else {
299  if (msgLvl(MSG::DEBUG)) {
300  dumpTrackParams(trackPars, chi2, "updateBS: track failed chi2_d0 restriction");
301  }
302  }
303  }
304  }
305 
306  return true;
307 }

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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::vector<TrackData> m_bsSeeds PESA::T2BSTrackFilterTool::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 189 of file T2BSTrackFilterTool.h.

◆ ATLAS_THREAD_SAFE [2/2]

AccumMap m_accumulators PESA::T2BSTrackFilterTool::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 193 of file T2BSTrackFilterTool.h.

◆ m_beamSizeLS

double PESA::T2BSTrackFilterTool::m_beamSizeLS
private

Definition at line 184 of file T2BSTrackFilterTool.h.

◆ m_chi2cutoff

double PESA::T2BSTrackFilterTool::m_chi2cutoff
private

Definition at line 183 of file T2BSTrackFilterTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_goalSeedTracks

unsigned PESA::T2BSTrackFilterTool::m_goalSeedTracks
private

Definition at line 182 of file T2BSTrackFilterTool.h.

◆ m_lbnInterval

int PESA::T2BSTrackFilterTool::m_lbnInterval
private

Definition at line 185 of file T2BSTrackFilterTool.h.

◆ m_maxTrackD0

double PESA::T2BSTrackFilterTool::m_maxTrackD0
private

Definition at line 170 of file T2BSTrackFilterTool.h.

◆ m_maxTrackD0err

double PESA::T2BSTrackFilterTool::m_maxTrackD0err
private

Definition at line 172 of file T2BSTrackFilterTool.h.

◆ m_maxTrackEta

double PESA::T2BSTrackFilterTool::m_maxTrackEta
private

Definition at line 168 of file T2BSTrackFilterTool.h.

◆ m_maxTrackQual

double PESA::T2BSTrackFilterTool::m_maxTrackQual
private

Definition at line 175 of file T2BSTrackFilterTool.h.

◆ m_maxTrackZ0

double PESA::T2BSTrackFilterTool::m_maxTrackZ0
private

Definition at line 169 of file T2BSTrackFilterTool.h.

◆ m_maxTrackZ0err

double PESA::T2BSTrackFilterTool::m_maxTrackZ0err
private

Definition at line 171 of file T2BSTrackFilterTool.h.

◆ m_minPIXHits

int PESA::T2BSTrackFilterTool::m_minPIXHits
private

Definition at line 178 of file T2BSTrackFilterTool.h.

◆ m_minSCTHits

int PESA::T2BSTrackFilterTool::m_minSCTHits
private

Definition at line 179 of file T2BSTrackFilterTool.h.

◆ m_minSiHits

int PESA::T2BSTrackFilterTool::m_minSiHits
private

Definition at line 177 of file T2BSTrackFilterTool.h.

◆ m_minTrackChi2Prob

double PESA::T2BSTrackFilterTool::m_minTrackChi2Prob
private

Definition at line 176 of file T2BSTrackFilterTool.h.

◆ m_minTrackNDF

double PESA::T2BSTrackFilterTool::m_minTrackNDF
private

Definition at line 173 of file T2BSTrackFilterTool.h.

◆ m_minTrackPt

double PESA::T2BSTrackFilterTool::m_minTrackPt
private

Definition at line 167 of file T2BSTrackFilterTool.h.

◆ m_minTrackQual

double PESA::T2BSTrackFilterTool::m_minTrackQual
private

Definition at line 174 of file T2BSTrackFilterTool.h.

◆ m_minTRTHits

int PESA::T2BSTrackFilterTool::m_minTRTHits
private

Definition at line 180 of file T2BSTrackFilterTool.h.

◆ m_monTool

ToolHandle<GenericMonitoringTool> PESA::T2BSTrackFilterTool::m_monTool {this,"MonTool","","Monitoring tool"}
private

Definition at line 195 of file T2BSTrackFilterTool.h.

◆ m_mutex

std::mutex PESA::T2BSTrackFilterTool::m_mutex
mutableprivate

Definition at line 187 of file T2BSTrackFilterTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
PESA::T2BSTrackFilterTool::monitor_tracks
void monitor_tracks(std::string const &prefix, std::string const &suffix, std::vector< T2Track > const &tracks) const
Definition: T2BSTrackFilterTool.cxx:388
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
hotSpotInTAG.suffix
string suffix
Definition: hotSpotInTAG.py:186
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
PESA::T2BSTrackFilterTool::isGoodTrack
TrackRejectReasonSet isGoodTrack(const T2Track &track) const
Definition: T2BSTrackFilterTool.cxx:367
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
PESA::T2BSTrackFilterTool::m_beamSizeLS
double m_beamSizeLS
Definition: T2BSTrackFilterTool.h:184
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
PESA::T2BSTrackFilterTool::fail_Chi2Prob
@ fail_Chi2Prob
Definition: T2BSTrackFilterTool.h:74
PESA::T2BSTrackFilterTool::fail_D0
@ fail_D0
Definition: T2BSTrackFilterTool.h:67
PESA::T2BSTrackFilterTool::fail_Z0err
@ fail_Z0err
Definition: T2BSTrackFilterTool.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
accumulate
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
Definition: FPGATrackSimMatrixAccumulator.cxx:22
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
PESA::T2BSTrackFilterTool::fail_D0Chi2
@ fail_D0Chi2
Definition: T2BSTrackFilterTool.h:75
Trk::z0
@ z0
Definition: ParamDefs.h:70
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
PESA::T2BSTrackFilterTool::fail_PIXHits
@ fail_PIXHits
Definition: T2BSTrackFilterTool.h:63
PESA::T2BSTrackFilterTool::fail_NDF
@ fail_NDF
Definition: T2BSTrackFilterTool.h:66
PESA::T2BSTrackFilterTool::m_maxTrackQual
double m_maxTrackQual
Definition: T2BSTrackFilterTool.h:175
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
PESA::T2BSTrackFilterTool::m_mutex
std::mutex m_mutex
Definition: T2BSTrackFilterTool.h:187
PESA::T2BSTrackFilterTool::m_goalSeedTracks
unsigned m_goalSeedTracks
Definition: T2BSTrackFilterTool.h:182
PESA::T2BSTrackFilterTool::fail_PT
@ fail_PT
Definition: T2BSTrackFilterTool.h:61
PESA::T2BSTrackFilterTool::fail_SCTHits
@ fail_SCTHits
Definition: T2BSTrackFilterTool.h:64
ReweightUtils.message
message
Definition: ReweightUtils.py:15
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
PESA::T2BSTrackFilterTool::m_minTrackQual
double m_minTrackQual
Definition: T2BSTrackFilterTool.h:174
PESA::T2BSTrackFilterTool::m_minTrackPt
double m_minTrackPt
Definition: T2BSTrackFilterTool.h:167
AthCommonDataStore
Definition: AthCommonDataStore.h:52
Generate_dsid_ranseed.seed
seed
Definition: Generate_dsid_ranseed.py:10
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
PESA::T2BSTrackFilterTool::numRejectReasons
@ numRejectReasons
Definition: T2BSTrackFilterTool.h:77
lumiFormat.i
int i
Definition: lumiFormat.py:92
PESA::T2BSTrackFilterTool::m_maxTrackEta
double m_maxTrackEta
Definition: T2BSTrackFilterTool.h:168
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
PESA::T2BSTrackFilterTool::fail_D0err
@ fail_D0err
Definition: T2BSTrackFilterTool.h:69
PESA::T2BSTrackFilterTool::m_minTRTHits
int m_minTRTHits
Definition: T2BSTrackFilterTool.h:180
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
PESA::T2BSTrackFilterTool::dumpTrackParams
void dumpTrackParams(Trk::Perigee const *trackPars, double chi2, std::string const &message) const
Definition: T2BSTrackFilterTool.cxx:493
PESA::T2BSTrackFilterTool::fail_SiHits
@ fail_SiHits
Definition: T2BSTrackFilterTool.h:62
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
PESA::T2BSTrackFilterTool::m_minSiHits
int m_minSiHits
Definition: T2BSTrackFilterTool.h:177
PESA::T2BSTrackFilterTool::m_maxTrackD0
double m_maxTrackD0
Definition: T2BSTrackFilterTool.h:170
PESA::T2BSTrackFilterTool::TrackRejectReasonSet
std::bitset< numRejectReasons > TrackRejectReasonSet
Definition: T2BSTrackFilterTool.h:79
PESA::T2BSTrackFilterTool::m_maxTrackZ0err
double m_maxTrackZ0err
Definition: T2BSTrackFilterTool.h:171
TauGNNUtils::Variables::Track::trackPt
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:470
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::d0
@ d0
Definition: ParamDefs.h:69
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
Amg::error
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
Definition: EventPrimitivesHelpers.h:40
PESA::T2BSTrackFilterTool::fail_Eta
@ fail_Eta
Definition: T2BSTrackFilterTool.h:71
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
PESA::T2Track
Definition: T2Track.h:44
PESA::T2BSTrackFilterTool::m_minSCTHits
int m_minSCTHits
Definition: T2BSTrackFilterTool.h:179
PESA::T2BSTrackFilterTool::m_chi2cutoff
double m_chi2cutoff
Definition: T2BSTrackFilterTool.h:183
PESA::T2BSTrackFilterTool::fail_MinQual
@ fail_MinQual
Definition: T2BSTrackFilterTool.h:72
a
TList * a
Definition: liststreamerinfos.cxx:10
h
PESA::T2BSTrackFilterTool::m_maxTrackZ0
double m_maxTrackZ0
Definition: T2BSTrackFilterTool.h:169
PESA::T2BSTrackFilterTool::m_minPIXHits
int m_minPIXHits
Definition: T2BSTrackFilterTool.h:178
xAOD::rejectReason
@ rejectReason
Definition: TrackingPrimitives.h:515
DEBUG
#define DEBUG
Definition: page_access.h:11
plotBeamSpotMon.mon
mon
Definition: plotBeamSpotMon.py:67
TrackData
Definition: TrigTrackFollowing.h:125
PESA::T2BSTrackFilterTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: T2BSTrackFilterTool.h:195
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
PESA::T2BSTrackFilterTool::m_maxTrackD0err
double m_maxTrackD0err
Definition: T2BSTrackFilterTool.h:172
PESA::T2BSTrackFilterTool::fail_Z0
@ fail_Z0
Definition: T2BSTrackFilterTool.h:68
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
PESA::T2BSTrackFilterTool::fail_MaxQual
@ fail_MaxQual
Definition: T2BSTrackFilterTool.h:73
TauGNNUtils::Variables::Track::trackPhi
bool trackPhi(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:480
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
PESA::T2BSTrackFilterTool::m_minTrackChi2Prob
double m_minTrackChi2Prob
Definition: T2BSTrackFilterTool.h:176
PESA::T2BSTrackFilterTool::bootstrapFromSeeds
bool bootstrapFromSeeds(std::vector< TrackData > *bsTracks=nullptr) const
Definition: T2BSTrackFilterTool.cxx:408
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
PESA::T2BSTrackFilterTool::trackChi2
double trackChi2(TrackData const &seed, AmgVector(4) const &solution) const
Calculate track chi2 w.r.t.
Definition: T2BSTrackFilterTool.cxx:481
test_pyathena.counter
counter
Definition: test_pyathena.py:15
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
python.compressB64.c
def c
Definition: compressB64.py:93
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Monitored::Timer
A monitored timer.
Definition: MonitoredTimer.h:32
Trk::phi0
@ phi0
Definition: ParamDefs.h:71
PESA::T2BSTrackFilterTool::m_minTrackNDF
double m_minTrackNDF
Definition: T2BSTrackFilterTool.h:173
TauGNNUtils::Variables::Track::trackEta
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:475
fitman.k
k
Definition: fitman.py:528
LB_AnalMapSplitter.lbn
lbn
Definition: LB_AnalMapSplitter.py:28
PESA::T2BSTrackFilterTool::fail_TRTHits
@ fail_TRTHits
Definition: T2BSTrackFilterTool.h:65