ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
TRTTrackHoleSearchTool Class Reference

#include <TRTTrackHoleSearchTool.h>

Inheritance diagram for TRTTrackHoleSearchTool:
Collaboration diagram for TRTTrackHoleSearchTool:

Public Member Functions

 TRTTrackHoleSearchTool (const std::string &type, const std::string &name, const IInterface *parent)
 
StatusCode initialize ()
 
StatusCode finalize ()
 
void countHoles (const Trk::Track &track, std::vector< int > &information, const Trk::ParticleHypothesis partHyp=Trk::pion) const
 Input : track, partHyp Output: Changes in information This method fills the fields relevant to the hole counts in the vector information. More...
 
const Trk::TrackStatesgetHolesOnTrack (const Trk::Track &track, const Trk::ParticleHypothesis partHyp=Trk::pion) const
 Input : track, parthyp Return: A DataVector containing pointers to TrackStateOnSurfaces which each represent an identified hole on the track. More...
 
const Trk::TrackgetTrackWithHoles (const Trk::Track &track, const Trk::ParticleHypothesis partHyp=Trk::pion) const
 Input : track, parthyp Return: A pointer to a new Trk::Track which containes the information of the input track plus the tsos of the identified holes The parthyp argument is relevant for the extrapolation steps in the hole search. More...
 
const Trk::TrackgetTrackWithHolesAndOutliers (const Trk::Track &track, const Trk::ParticleHypothesis partHyp=Trk::pion) const
 Input : track, parthyp Return: A pointer to a new Trk::Track which containes the information of the input track plus the tsos of the identified holes or outliers The parthyp argument is relevant for the extrapolation steps in the hole search. 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
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

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

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

int extrapolateBetweenHits (const Trk::TrackParameters *start_parameters, const Trk::Surface &end_surf, Trk::TrackStates *holes, const Trk::ParticleHypothesis partHyp=Trk::pion) const
 
void dump_bad_straw_log () const
 
Trk::TrackStates::const_iterator find_first_trt_hit (const Trk::TrackStates &track_states) const
 
Trk::TrackStates::const_iterator find_last_hit_before_trt (const Trk::TrackStates &track_states) const
 
const Trk::TrackaddHolesToTrack (const Trk::Track &track, const Trk::TrackStates *holes) 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

ToolHandle< Trk::IExtrapolatorm_extrapolator
 
ServiceHandle< IInDetConditionsSvcm_conditions_svc
 
bool m_use_conditions_svc
 
float m_outer_radius
 
float m_max_z
 
int m_max_trailing_holes
 
bool m_begin_at_first_trt_hit
 
bool m_end_at_last_trt_hit
 
bool m_bcheck
 
bool m_do_dump_bad_straw_log
 
float m_locR_cut
 
float m_locR_sigma_cut
 
float m_locZ_cut
 
std::atomic_bool m_has_been_called
 
const TRT_IDm_TRT_ID
 
Trk::CylinderSurfacem_trt_outer_surf
 
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 35 of file TRTTrackHoleSearchTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TRTTrackHoleSearchTool()

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

Definition at line 39 of file TRTTrackHoleSearchTool.cxx.

41  m_extrapolator("Trk::Extrapolator"),
42  m_conditions_svc("TRT_ConditionsSummarySvc", name),
43  m_has_been_called(false),
44  m_TRT_ID(nullptr),
45  m_trt_outer_surf(nullptr)
46 {
47  declareInterface<ITrackHoleSearchTool>(this);
48 
49  declareProperty("extrapolator", m_extrapolator );
50  declareProperty("conditions_svc", m_conditions_svc);
51  declareProperty("use_conditions_svc", m_use_conditions_svc = true);
52  declareProperty("outer_radius", m_outer_radius = 1075.0*CLHEP::mm ); // barrel 1075.0, EC 1010.0
53  declareProperty("max_z", m_max_z = 2715.0*CLHEP::mm ); // barrel 715.0, EC 2715.0
54  declareProperty("max_trailing_holes", m_max_trailing_holes = 1 ); // only used if not end_at_last_trt_hit
55  declareProperty("begin_at_first_trt_hit", m_begin_at_first_trt_hit = false ); // if not, extrapolate from last Si hit
56  declareProperty("end_at_last_trt_hit", m_end_at_last_trt_hit = false ); // if not, continue hole search to the edge of the TRT
57  declareProperty("bcheck", m_bcheck = false );
58  declareProperty("do_dump_bad_straw_log", m_do_dump_bad_straw_log = false );
59  declareProperty("locR_cut", m_locR_cut = -1.0 ); // 1.4*CLHEP::mm // negative means no cut
60  declareProperty("locR_sigma_cut", m_locR_sigma_cut = -1.0 );
61  declareProperty("locZ_cut", m_locZ_cut = 5.0*CLHEP::mm ); // 5.0*CLHEP::mm );
62 }

Member Function Documentation

◆ addHolesToTrack()

const Trk::Track * TRTTrackHoleSearchTool::addHolesToTrack ( const Trk::Track track,
const Trk::TrackStates holes 
) const
private

Definition at line 440 of file TRTTrackHoleSearchTool.cxx.

443 {
444  ATH_MSG_DEBUG("TRTTrackHoleSearchTool::addHolesToTrack");
445  /*
446  This method was basically coppied from here:
447  http://alxr.usatlas.bnl.gov/lxr-stb4/source/atlas/InnerDetector/InDetRecTools/InDetTrackHoleSearch/src/InDetTrackHoleSearchTool.cxx#931
448  */
449 
450  // get states from track
451  auto tsos = std::make_unique<Trk::TrackStates>();
452  for (const auto *it : *track.trackStateOnSurfaces()) {
453  // veto old holes
454  if (!it->type(Trk::TrackStateOnSurface::Hole)) {
455  tsos->push_back(new Trk::TrackStateOnSurface(*it));
456  }
457  }
458 
459  // if we have no holes on the old track and no holes found by search, then we
460  // just copy the track
461  if (track.trackStateOnSurfaces()->size() == tsos->size() && holes->empty()) {
462  // create copy of track
463  const Trk::Track* new_track = new Trk::Track(
464  track.info(),
465  std::move(tsos),
466  track.fitQuality() ? track.fitQuality()->uniqueClone() : nullptr);
467  return new_track;
468  }
469 
470  // add new holes
471  tsos->insert(tsos->end(), holes->begin(), holes->end());
472 
473  // sort
474  const Trk::TrackParameters* perigee = track.perigeeParameters();
475  if (!perigee)
476  perigee = (*(track.trackStateOnSurfaces()->begin()))->trackParameters();
477 
478  if (perigee) {
480 
481  if (fabs(perigee->parameters()[Trk::qOverP]) > 0.002) {
482  /* invest n*(logN)**2 sorting time for lowPt, coping with a possibly
483  not 100% transitive comparison functor. */
484  if (msgLvl(MSG::DEBUG)) {
485  msg() << "sorting vector with stable_sort" << endmsg;
486  }
487  std::stable_sort(tsos->begin(), tsos->end(), CompFunc);
488  } else {
489  tsos->sort(CompFunc); // respects DV object ownership
490  }
491  }
492 
493  // create copy of track
494  const Trk::Track* new_track =
495  new Trk::Track(track.info(),
496  std::move(tsos),
497  track.fitQuality() ? track.fitQuality()->uniqueClone() : nullptr);
498 
499  return new_track;
500 }

◆ countHoles()

void TRTTrackHoleSearchTool::countHoles ( const Trk::Track track,
std::vector< int > &  information,
const Trk::ParticleHypothesis  partHyp = Trk::pion 
) const
virtual

Input : track, partHyp Output: Changes in information This method fills the fields relevant to the hole counts in the vector information.

These fields should be initialised to 0. The relevant indices are specified by the enumeration in Tracking/TrkEvent/TrkTrackSummary. If problems occur, the information counters are reset to -1 flagging them as not set. The parthyp argument is relevant for the extrapolation steps in the hole search.

Implements Trk::ITrackHoleSearchTool.

Definition at line 95 of file TRTTrackHoleSearchTool.cxx.

97  {
98  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::countHoles" );
99  const Trk::TrackStates* holes = getHolesOnTrack(track, partHyp);
100  if (holes) {
101  information[Trk::numberOfTRTHoles] = holes->size();
102  delete holes;
103  } else {
104  information[Trk::numberOfTRTHoles] = -1;
105  }
106 }

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

◆ dump_bad_straw_log()

void TRTTrackHoleSearchTool::dump_bad_straw_log ( ) const
private

Definition at line 372 of file TRTTrackHoleSearchTool.cxx.

372  {
373  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::dump_bad_straw_log" );
374  std::ofstream out("TRT_ConditionsSummarySvc_bad_straws.log");
375  out << "# id barrel_ec phi_module layer_or_wheel straw_layer straw" << std::endl;
376  for(std::vector<Identifier>::const_iterator it = m_TRT_ID->straw_layer_begin(); it != m_TRT_ID->straw_layer_end(); ++it) {
377  for(int i=0; i<= m_TRT_ID->straw_max(*it); ++i) {
378  Identifier id = m_TRT_ID->straw_id(*it, i);
379  if(!m_conditions_svc->isGood(id)) {
380  out << id.getString()
381  << std::setw(3) << m_TRT_ID->barrel_ec(id)
382  << std::setw(4) << m_TRT_ID->phi_module(id)
383  << std::setw(4) << m_TRT_ID->layer_or_wheel(id)
384  << std::setw(4) << m_TRT_ID->straw_layer(id)
385  << std::setw(4) << m_TRT_ID->straw(id)
386  << std::endl;
387  }
388  }
389  }
390  out.close();
391 }

◆ 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

◆ extrapolateBetweenHits()

int TRTTrackHoleSearchTool::extrapolateBetweenHits ( const Trk::TrackParameters start_parameters,
const Trk::Surface end_surf,
Trk::TrackStates holes,
const Trk::ParticleHypothesis  partHyp = Trk::pion 
) const
private

Definition at line 245 of file TRTTrackHoleSearchTool.cxx.

248  {
249  int hole_count = 0;
250  // initialize previous id
251  const Trk::Surface& start_surf = start_parameters->associatedSurface();
252 
253  Identifier previous_id = start_surf.associatedDetectorElementIdentifier();
254 
255  // get end id
256  const Identifier end_id = end_surf.associatedDetectorElementIdentifier();
257 
258  // look for holes
259  std::vector<std::unique_ptr<Trk::TrackParameters> > steps =
260  m_extrapolator->extrapolateStepwise(Gaudi::Hive::currentContext(),
261  *start_parameters,
262  end_surf,
263  Trk::alongMomentum, m_bcheck, partHyp);
264 
265  if(steps.empty()) {
266  ATH_MSG_DEBUG("extrapolateBetweenHits: extrapolateStepwise returned null");
267  } else {
268  // loop over parameters from extrapolation
269  // note: the last element in the vector is always the track parameters at the destination surface
270  for(std::vector<std::unique_ptr<Trk::TrackParameters> >::const_iterator step = steps.begin(); step != steps.end()-1; ++step) {
271  // check for surface
272  const Trk::Surface& surf = (*step)->associatedSurface();
273 
274  // get id
276 
277  // check that the surface is a TRT straw
278  if(!m_TRT_ID->is_trt(id)) {
279  ATH_MSG_DEBUG("extrapolateBetweenHits: surf is not a TRT straw. Skipping.");
280  continue;
281  }
282 
283  // check that we are not still on the previous id
284  if(id == previous_id) {
285  ATH_MSG_DEBUG("extrapolateBetweenHits: id == previous_id");
286  continue;
287  }
288 
289  // check that we haven't hit the destination surface
290  if(id == end_id) {
291  ATH_MSG_DEBUG("extrapolateBetweenHits: id == end_id");
292  continue;
293  }
294 
295  // ignore id 0xffffffff from m_trt_outer_surf
296  if(id == 0xffffffff) {
297  ATH_MSG_DEBUG("extrapolateBetweenHits: id == 0xffffffff. Skipping.");
298  continue;
299  }
300 
301  // don't count bad straws as holes
302  if( (m_use_conditions_svc)&&(!m_conditions_svc->isGood(id)) ) {
303  ATH_MSG_DEBUG("extrapolateBetweenHits: ConditionsSvc says this straw is bad. Skipping.");
304  continue;
305  }
306 
307  // check fiducial |locR| by sigma
308  const float locR = (*step)->parameters()[Trk::locR];
309  if(m_locR_sigma_cut > 0.0) {
310  //const Trk::MeasuredTrackParameters* meas = dynamic_cast< const Trk::MeasuredTrackParameters* >(*step);
311  //if(meas)
312  //{
313 
314  const AmgSymMatrix(5)* merr = (*step)->covariance();
315 
316  if(merr){
317  //const float locR_error = (*merr)(Trk::locR,Trk::locR);
318 
319  const float locR_error = Amg::error(*merr,Trk::locR);
320 
321  // hole must be within the straw by some tolerance
322  if( (2.0*CLHEP::mm - fabs(locR))/locR_error < m_locR_sigma_cut ) {
323  continue;
324  }
325  } else {
326  ATH_MSG_WARNING("extrapolateBetweenHits: Track parameters failed to dynamic_cast< const Trk::MeasuredTrackParameters* >.");
327  continue;
328  }
329  }
330  // check fiducial |locR| by value
331  if(m_locR_cut > 0.0) {
332  if( fabs(locR) > m_locR_cut )
333  continue;
334  }
335  // check fiducial |locZ| by value
336  if(m_locZ_cut > 0.0) {
337  const float locZ = (*step)->parameters()[Trk::locZ];
338  const Trk::CylinderBounds* cylb = dynamic_cast<const Trk::CylinderBounds *>(&surf.bounds());
339  if(cylb) {
340  const float halfz=cylb->halflengthZ();
341  if( fabs(locZ) > halfz - m_locZ_cut ) continue;
342  } else {
343  ATH_MSG_WARNING("extrapolateBetweenHits: Surface failed to dynamic_cast to Trk::CylinderBounds. Skipping.");
344  continue;
345  }
346  }
347 
348  // if we've gotten here, it is a legitimate hole
349  ATH_MSG_DEBUG(" HOLE Found! Identifier = " << id.getString() << " indicates:\n"
350  << " is_pixel = " << m_TRT_ID->is_pixel(id) << "\n"
351  << " is_sct = " << m_TRT_ID->is_sct(id) << "\n"
352  << " is_trt = " << m_TRT_ID->is_trt(id) << "\n"
353  << " barrel_ec = " << m_TRT_ID->barrel_ec(id) << "\n"
354  << " phi_module = " << m_TRT_ID->phi_module(id) << "\n"
355  << " layer_or_wheel = " << m_TRT_ID->layer_or_wheel(id) << "\n"
356  << " straw_layer = " << m_TRT_ID->straw_layer(id) << "\n"
357  << " straw = " << m_TRT_ID->straw(id) << "\n"
358  << " rho = " << (*step)->position().perp() );
359 
360  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
361  typePattern.set(Trk::TrackStateOnSurface::Hole);
362  holes->push_back( new Trk::TrackStateOnSurface(nullptr, (*step)->uniqueClone(), nullptr, typePattern) );
363  hole_count++;
364  previous_id = id;
365  } // end loop over parameters from extrapolation
366  }
367  return hole_count;
368 }

◆ finalize()

StatusCode TRTTrackHoleSearchTool::finalize ( )

Definition at line 87 of file TRTTrackHoleSearchTool.cxx.

87  {
88  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::finalize()" );
89  delete m_trt_outer_surf;
90  return StatusCode::SUCCESS;
91 }

◆ find_first_trt_hit()

Trk::TrackStates::const_iterator TRTTrackHoleSearchTool::find_first_trt_hit ( const Trk::TrackStates track_states) const
private

Definition at line 396 of file TRTTrackHoleSearchTool.cxx.

396  {
397  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::find_first_trt_hit" );
398  // finds the first TRT hit or returns end
399  Trk::TrackStates::const_iterator track_state = track_states.begin();
400  for(; track_state != track_states.end(); ++track_state) {
401  // skip track states that are not measurements
402  if(!(*track_state)->type(Trk::TrackStateOnSurface::Measurement)) {
403  ATH_MSG_VERBOSE( " TrackStateOnSurface is not of type Trk::TrackStateOnSurface::Measurement." );
404  continue;
405  }
406  if( dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>( (*track_state)->measurementOnTrack() ) ) {
407  ATH_MSG_DEBUG(" Found first TRT hit.");
408  break;
409  }
410  }
411  return track_state;
412 }

◆ find_last_hit_before_trt()

Trk::TrackStates::const_iterator TRTTrackHoleSearchTool::find_last_hit_before_trt ( const Trk::TrackStates track_states) const
private

Definition at line 417 of file TRTTrackHoleSearchTool.cxx.

417  {
418  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::find_last_hit_before_trt" );
419  // start at first TRT hit
420  Trk::TrackStates::const_iterator track_state = find_first_trt_hit(track_states);
421  // if there is no room to step backwards in the hits, return end
422  if(track_states.size() < 2 || track_state == track_states.begin()) {
423  return track_states.end();
424  }
425  --track_state; // step back and look for last measurement before the TRT hit
426  for(; track_state != track_states.begin(); --track_state) {
427  if((*track_state)->type(Trk::TrackStateOnSurface::Measurement)) {
428  break;
429  }
430  }
431  // if the loop ended without finding a measurement, return end
432  if(!(*track_state)->type(Trk::TrackStateOnSurface::Measurement)) {
433  return track_states.end();
434  }
435  return track_state;
436 }

◆ getHolesOnTrack()

const Trk::TrackStates * TRTTrackHoleSearchTool::getHolesOnTrack ( const Trk::Track track,
const Trk::ParticleHypothesis  partHyp = Trk::pion 
) const
virtual

Input : track, parthyp Return: A DataVector containing pointers to TrackStateOnSurfaces which each represent an identified hole on the track.

The parthyp argument is relevant for the extrapolation steps in the hole search. Attention: This is a factory, ownership of the return vector is passed to the calling method.

Implements Trk::ITrackHoleSearchTool.

Definition at line 110 of file TRTTrackHoleSearchTool.cxx.

112  {
113  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::getHolesOnTrack" );
114 
115  // write out list of bad straws for debugging purposes.
116  // only dump log on first call of this function.
119  }
120  m_has_been_called = true;
121 
122  if (track.perigeeParameters()) {
123  ATH_MSG_VERBOSE( " This track has perigee: \n"
124  << " pT = " << track.perigeeParameters()->pT()/CLHEP::GeV << " CLHEP::GeV\n"
125  << " eta = " << track.perigeeParameters()->eta() << "\n"
126  << " phi = " << track.perigeeParameters()->parameters()[Trk::phi0] << "\n"
127  << " d0 = " << track.perigeeParameters()->parameters()[Trk::d0] << "\n"
128  << " z0 = " << track.perigeeParameters()->parameters()[Trk::z0] );
129  }
130 
131  // get TrackStateOnSurfaces
132  const Trk::TrackStates* track_states = track.trackStateOnSurfaces();
133  if (track_states) {
134  ATH_MSG_DEBUG( " This track has " << track_states->size() << " track states on surface." );
135  } else {
136  ATH_MSG_WARNING( " This track has null track states on surface. Returning 0." );
137  return nullptr;
138  }
139 
140  if (track_states->size() < 2) {
141  ATH_MSG_WARNING( " Fewer than 2 TrackStatesOnSurface. Returning 0." );
142  return nullptr;
143  }
144 
145  // set beginning point of extrapolation
146  Trk::TrackStates::const_iterator beginning_track_state;
148  // begin at first TRT hit
149  beginning_track_state = find_first_trt_hit(*track_states);
150  } else {
151  // begin at last Si hit
152  beginning_track_state = find_last_hit_before_trt(*track_states);
153  if (beginning_track_state == track_states->end()) {
154  ATH_MSG_WARNING( " beginning_track_state == track_states->end(). There must be no Si hits.\n"
155  << " Will try to begin at the first TRT hit." );
156  beginning_track_state = find_first_trt_hit(*track_states);
157  }
158  }
159 
160  if (beginning_track_state == track_states->end()) {
161  ATH_MSG_WARNING( " beginning_track_state == track_states->end(). No where to extrapolate to. Returning 0." );
162  return nullptr;
163  }
164 
165  // to be returned:
167 
168  Trk::TrackStates::const_iterator track_state = beginning_track_state;
169  const Trk::TrackParameters* start_parameters = (*track_state)->trackParameters();
170  ++track_state;
171  // loop over TrackStateOnSurfaces (destination surfaces for extrapolation)
172  for (; track_state != track_states->end(); ++track_state) {
173  // skip track states that are not measurements
174  if (!(*track_state)->type(Trk::TrackStateOnSurface::Measurement)) {
175  ATH_MSG_VERBOSE( " TrackStateOnSurface is not of type Trk::TrackStateOnSurface::Measurement." );
176  continue;
177  }
178 
179  const Trk::TrackParameters* end_parameters = (*track_state)->trackParameters();
180  if(end_parameters) {
181  ATH_MSG_VERBOSE( " TrackStateOnSurface: (x, y, z) = ("
182  << end_parameters->position().x() << ", "
183  << end_parameters->position().y() << ", "
184  << end_parameters->position().z() << "); (rho, eta, phi) = ("
185  << end_parameters->position().perp() << ", "
186  << end_parameters->position().eta() << ", "
187  << end_parameters->position().phi() << ")");
188  } else {
189  ATH_MSG_WARNING( " TrackStateOnSurface has no TrackParameters." );
190  continue;
191  }
192 
193  const Trk::Surface& end_surf = end_parameters->associatedSurface();
194  if (!start_parameters) {
195  start_parameters = end_parameters;
196  } else {
197  extrapolateBetweenHits(start_parameters, end_surf, holes, partHyp);
198  start_parameters = end_parameters;
199  }
200  } // end loop over TrackStateOnSurfaces
201 
202  if( !m_end_at_last_trt_hit ) {
203  // final extrapolation to the edge of TRT to check for holes in outermost straws
204  int trailing_hole_count = extrapolateBetweenHits(start_parameters, *m_trt_outer_surf, holes, partHyp);
205 
206  // remove trailing holes
207  if(trailing_hole_count > m_max_trailing_holes) {
208  ATH_MSG_DEBUG("There are " << trailing_hole_count << " trailing holes removed.");
209  for(int i=0; i < trailing_hole_count; i++) {
210  holes->pop_back();
211  /*
212  Note: DataVector::pop_back() deletes pointers if it owns them.
213  */
214  }
215  }
216  }
217 
218  return holes;
219 }

◆ getTrackWithHoles()

const Trk::Track * TRTTrackHoleSearchTool::getTrackWithHoles ( const Trk::Track track,
const Trk::ParticleHypothesis  partHyp = Trk::pion 
) const
virtual

Input : track, parthyp Return: A pointer to a new Trk::Track which containes the information of the input track plus the tsos of the identified holes The parthyp argument is relevant for the extrapolation steps in the hole search.

Attention: This is a factory, ownership of the return track is passed to the calling method.

Implements Trk::ITrackHoleSearchTool.

Definition at line 223 of file TRTTrackHoleSearchTool.cxx.

224  {
225  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::getTrackWithHoles" );
226  const Trk::TrackStates* holes = getHolesOnTrack(track, partHyp);
227  const Trk::Track* new_track = addHolesToTrack(track, holes);
228  delete holes;
229  return new_track;
230 }

◆ getTrackWithHolesAndOutliers()

const Trk::Track * TRTTrackHoleSearchTool::getTrackWithHolesAndOutliers ( const Trk::Track track,
const Trk::ParticleHypothesis  partHyp = Trk::pion 
) const
virtual

Input : track, parthyp Return: A pointer to a new Trk::Track which containes the information of the input track plus the tsos of the identified holes or outliers The parthyp argument is relevant for the extrapolation steps in the hole search.

Attention: This is a factory, ownership of the return track is passed to the calling method.

Implements Trk::ITrackHoleSearchTool.

Definition at line 234 of file TRTTrackHoleSearchTool.cxx.

235  {
236  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::getTrackWithHolesAndOutliers" );
237  return getTrackWithHoles(track, partHyp);
238 }

◆ initialize()

StatusCode TRTTrackHoleSearchTool::initialize ( )

Definition at line 66 of file TRTTrackHoleSearchTool.cxx.

66  {
67  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::initialize()" );
68 
69  // retrieve extrapolator
70  ATH_CHECK(m_extrapolator.retrieve());
71 
72  // retrieve TRT_ID
73  ATH_CHECK(detStore()->retrieve(m_TRT_ID, "TRT_ID"));
74 
75  // retrieve ConditionsSummarySvc
76  ATH_CHECK(m_conditions_svc.retrieve());
77 
78  m_trt_outer_surf = new Trk::CylinderSurface(Amg::Transform3D(Amg::Transform3D::Identity()),
80  // note: HepGeom::Translate3D is deleted by Trk::Surface destructor
81 
82  return StatusCode::SUCCESS;
83 }

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

◆ interfaceID()

const InterfaceID & Trk::ITrackHoleSearchTool::interfaceID ( )
inlinestaticinherited

Definition at line 78 of file ITrackHoleSearchTool.h.

79  {
80  return IID_ITrackHoleSearchTool;
81  }

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

◆ 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

◆ m_bcheck

bool TRTTrackHoleSearchTool::m_bcheck
private

Definition at line 91 of file TRTTrackHoleSearchTool.h.

◆ m_begin_at_first_trt_hit

bool TRTTrackHoleSearchTool::m_begin_at_first_trt_hit
private

Definition at line 89 of file TRTTrackHoleSearchTool.h.

◆ m_conditions_svc

ServiceHandle<IInDetConditionsSvc> TRTTrackHoleSearchTool::m_conditions_svc
private

Definition at line 84 of file TRTTrackHoleSearchTool.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_do_dump_bad_straw_log

bool TRTTrackHoleSearchTool::m_do_dump_bad_straw_log
private

Definition at line 92 of file TRTTrackHoleSearchTool.h.

◆ m_end_at_last_trt_hit

bool TRTTrackHoleSearchTool::m_end_at_last_trt_hit
private

Definition at line 90 of file TRTTrackHoleSearchTool.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_extrapolator

ToolHandle<Trk::IExtrapolator> TRTTrackHoleSearchTool::m_extrapolator
private

Definition at line 83 of file TRTTrackHoleSearchTool.h.

◆ m_has_been_called

std::atomic_bool TRTTrackHoleSearchTool::m_has_been_called
mutableprivate

Definition at line 99 of file TRTTrackHoleSearchTool.h.

◆ m_locR_cut

float TRTTrackHoleSearchTool::m_locR_cut
private

Definition at line 93 of file TRTTrackHoleSearchTool.h.

◆ m_locR_sigma_cut

float TRTTrackHoleSearchTool::m_locR_sigma_cut
private

Definition at line 94 of file TRTTrackHoleSearchTool.h.

◆ m_locZ_cut

float TRTTrackHoleSearchTool::m_locZ_cut
private

Definition at line 95 of file TRTTrackHoleSearchTool.h.

◆ m_max_trailing_holes

int TRTTrackHoleSearchTool::m_max_trailing_holes
private

Definition at line 88 of file TRTTrackHoleSearchTool.h.

◆ m_max_z

float TRTTrackHoleSearchTool::m_max_z
private

Definition at line 87 of file TRTTrackHoleSearchTool.h.

◆ m_outer_radius

float TRTTrackHoleSearchTool::m_outer_radius
private

Definition at line 86 of file TRTTrackHoleSearchTool.h.

◆ m_TRT_ID

const TRT_ID* TRTTrackHoleSearchTool::m_TRT_ID
private

Definition at line 100 of file TRTTrackHoleSearchTool.h.

◆ m_trt_outer_surf

Trk::CylinderSurface* TRTTrackHoleSearchTool::m_trt_outer_surf
private

Definition at line 101 of file TRTTrackHoleSearchTool.h.

◆ m_use_conditions_svc

bool TRTTrackHoleSearchTool::m_use_conditions_svc
private

Definition at line 85 of file TRTTrackHoleSearchTool.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:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:760
TRTTrackHoleSearchTool::extrapolateBetweenHits
int extrapolateBetweenHits(const Trk::TrackParameters *start_parameters, const Trk::Surface &end_surf, Trk::TrackStates *holes, const Trk::ParticleHypothesis partHyp=Trk::pion) const
Definition: TRTTrackHoleSearchTool.cxx:245
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
TRTTrackHoleSearchTool::getHolesOnTrack
const Trk::TrackStates * getHolesOnTrack(const Trk::Track &track, const Trk::ParticleHypothesis partHyp=Trk::pion) const
Input : track, parthyp Return: A DataVector containing pointers to TrackStateOnSurfaces which each re...
Definition: TRTTrackHoleSearchTool.cxx:110
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TRT_ID::straw_max
int straw_max(const Identifier &id) const
Definition: TRT_ID.cxx:1001
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:770
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Trk::ParametersBase::associatedSurface
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDetDD::holes
@ holes
Definition: InDetDD_Defs.h:17
Trk::Surface::associatedDetectorElementIdentifier
Identifier associatedDetectorElementIdentifier() const
return Identifier of the associated Detector Element
xAOD::JetInput::Track
@ Track
Definition: JetContainerInfo.h:61
TRTTrackHoleSearchTool::m_conditions_svc
ServiceHandle< IInDetConditionsSvc > m_conditions_svc
Definition: TRTTrackHoleSearchTool.h:84
skel.it
it
Definition: skel.GENtoEVGEN.py:423
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
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
Trk::z0
@ z0
Definition: ParamDefs.h:70
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
TRTTrackHoleSearchTool::m_end_at_last_trt_hit
bool m_end_at_last_trt_hit
Definition: TRTTrackHoleSearchTool.h:90
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::locR
@ locR
Definition: ParamDefs.h:50
AtlasDetectorID::is_trt
bool is_trt(Identifier id) const
Definition: AtlasDetectorID.h:782
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
InDet::TRT_DriftCircleOnTrack
Definition: TRT_DriftCircleOnTrack.h:53
Trk::numberOfTRTHoles
@ numberOfTRTHoles
number of TRT hits which pass the high threshold (only xenon counted) total number of TRT hits which ...
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:83
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
TRT_ID::straw_layer_end
const_id_iterator straw_layer_end(void) const
Definition: TRT_ID.h:961
std::stable_sort
void stable_sort(std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, std::reverse_iterator< DataModel_detail::iterator< DVL > > end, Compare comp)
Specialization of stable_sort for DataVector/List.
Definition: DVL_algorithms.h:711
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TRTTrackHoleSearchTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: TRTTrackHoleSearchTool.h:83
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
TRTTrackHoleSearchTool::m_begin_at_first_trt_hit
bool m_begin_at_first_trt_hit
Definition: TRTTrackHoleSearchTool.h:89
TRTTrackHoleSearchTool::m_locZ_cut
float m_locZ_cut
Definition: TRTTrackHoleSearchTool.h:95
Trk::TrackStateOnSurfaceComparisonFunction
Class providing comparison function, or relational definition, for sorting MeasurementBase objects.
Definition: TrackStateOnSurfaceComparisonFunction.h:37
TRT_ID::straw
int straw(const Identifier &id) const
Definition: TRT_ID.h:902
TRTTrackHoleSearchTool::m_use_conditions_svc
bool m_use_conditions_svc
Definition: TRTTrackHoleSearchTool.h:85
beamspotman.steps
int steps
Definition: beamspotman.py:505
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:48
Trk::TrackStates
DataVector< const Trk::TrackStateOnSurface > TrackStates
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:30
Trk::TrackStateOnSurface::Hole
@ Hole
A hole on the track - this is defined in the following way.
Definition: TrackStateOnSurface.h:128
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::CylinderSurface
Definition: CylinderSurface.h:55
Trk::CylinderBounds
Definition: CylinderBounds.h:46
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
TRTTrackHoleSearchTool::m_TRT_ID
const TRT_ID * m_TRT_ID
Definition: TRTTrackHoleSearchTool.h:100
test_pyathena.parent
parent
Definition: test_pyathena.py:15
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
Trk::ParametersBase
Definition: ParametersBase.h:55
TRT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: TRT_ID.h:866
TRT_ID::straw_layer
int straw_layer(const Identifier &id) const
Definition: TRT_ID.h:893
DataVector< const Trk::TrackStateOnSurface >
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:884
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
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
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::d0
@ d0
Definition: ParamDefs.h:69
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
TRTTrackHoleSearchTool::m_do_dump_bad_straw_log
bool m_do_dump_bad_straw_log
Definition: TRTTrackHoleSearchTool.h:92
TRTTrackHoleSearchTool::m_max_trailing_holes
int m_max_trailing_holes
Definition: TRTTrackHoleSearchTool.h:88
TRTTrackHoleSearchTool::dump_bad_straw_log
void dump_bad_straw_log() const
Definition: TRTTrackHoleSearchTool.cxx:372
TRTTrackHoleSearchTool::m_bcheck
bool m_bcheck
Definition: TRTTrackHoleSearchTool.h:91
TRT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: TRT_ID.h:875
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TRTTrackHoleSearchTool::m_locR_cut
float m_locR_cut
Definition: TRTTrackHoleSearchTool.h:93
TRTTrackHoleSearchTool::find_first_trt_hit
Trk::TrackStates::const_iterator find_first_trt_hit(const Trk::TrackStates &track_states) const
Definition: TRTTrackHoleSearchTool.cxx:396
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DEBUG
#define DEBUG
Definition: page_access.h:11
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
TRTTrackHoleSearchTool::find_last_hit_before_trt
Trk::TrackStates::const_iterator find_last_hit_before_trt(const Trk::TrackStates &track_states) const
Definition: TRTTrackHoleSearchTool.cxx:417
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
LArCellBinning.step
step
Definition: LArCellBinning.py:158
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
TRTTrackHoleSearchTool::m_has_been_called
std::atomic_bool m_has_been_called
Definition: TRTTrackHoleSearchTool.h:99
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
TRT_ID::straw_layer_begin
const_id_iterator straw_layer_begin(void) const
Iterators over full set of straw_layer ids. Straw_layer ids are sorted.
Definition: TRT_ID.h:953
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
TRTTrackHoleSearchTool::m_max_z
float m_max_z
Definition: TRTTrackHoleSearchTool.h:87
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
TRTTrackHoleSearchTool::addHolesToTrack
const Trk::Track * addHolesToTrack(const Trk::Track &track, const Trk::TrackStates *holes) const
Definition: TRTTrackHoleSearchTool.cxx:440
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
TRTTrackHoleSearchTool::m_outer_radius
float m_outer_radius
Definition: TRTTrackHoleSearchTool.h:86
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
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::phi0
@ phi0
Definition: ParamDefs.h:71
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
TRTTrackHoleSearchTool::m_trt_outer_surf
Trk::CylinderSurface * m_trt_outer_surf
Definition: TRTTrackHoleSearchTool.h:101
fitman.k
k
Definition: fitman.py:528
Trk::CylinderBounds::halflengthZ
double halflengthZ() const
This method returns the halflengthZ.
TRT_ID::straw_id
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition: TRT_ID.h:581
TRTTrackHoleSearchTool::getTrackWithHoles
const Trk::Track * getTrackWithHoles(const Trk::Track &track, const Trk::ParticleHypothesis partHyp=Trk::pion) const
Input : track, parthyp Return: A pointer to a new Trk::Track which containes the information of the i...
Definition: TRTTrackHoleSearchTool.cxx:223
TRTTrackHoleSearchTool::m_locR_sigma_cut
float m_locR_sigma_cut
Definition: TRTTrackHoleSearchTool.h:94