ATLAS Offline Software
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...
 
 DeclareInterfaceID (ITrackHoleSearchTool, 1, 0)
 
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

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 {this, "extrapolator", "Trk::Extrapolator"}
 
ServiceHandle< IInDetConditionsSvcm_conditions_svc {this, "conditions_svc", "TRT_ConditionsSummarySvc"}
 
BooleanProperty m_use_conditions_svc {this, "use_conditions_svc", true}
 
FloatProperty m_outer_radius {this, "outer_radius", 1075.0*CLHEP::mm}
 
FloatProperty m_max_z {this, "max_z", 2715.0*CLHEP::mm}
 
IntegerProperty m_max_trailing_holes {this, "max_trailing_holes", 1}
 
BooleanProperty m_begin_at_first_trt_hit {this, "begin_at_first_trt_hit", false}
 
BooleanProperty m_end_at_last_trt_hit {this, "end_at_last_trt_hit", false}
 
BooleanProperty m_bcheck {this, "bcheck", false}
 
BooleanProperty m_do_dump_bad_straw_log {this, "do_dump_bad_straw_log", false}
 
FloatProperty m_locR_cut {this, "locR_cut", -1.}
 
FloatProperty m_locR_sigma_cut {this, "locR_sigma_cut", -1.}
 
FloatProperty m_locZ_cut {this, "locZ_cut", 5.0*CLHEP::mm}
 
std::atomic_bool m_has_been_called {false}
 
const TRT_IDm_TRT_ID {nullptr}
 
Trk::CylinderSurfacem_trt_outer_surf {nullptr}
 
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 37 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 {
42  declareInterface<ITrackHoleSearchTool>(this);
43 }

Member Function Documentation

◆ addHolesToTrack()

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

Definition at line 422 of file TRTTrackHoleSearchTool.cxx.

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

◆ 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 76 of file TRTTrackHoleSearchTool.cxx.

78  {
79  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::countHoles" );
80  const Trk::TrackStates* holes = getHolesOnTrack(track, partHyp);
81  if (holes) {
82  information[Trk::numberOfTRTHoles] = holes->size();
83  delete holes;
84  } else {
85  information[Trk::numberOfTRTHoles] = -1;
86  }
87 }

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

◆ DeclareInterfaceID()

Trk::ITrackHoleSearchTool::DeclareInterfaceID ( ITrackHoleSearchTool  ,
,
 
)
inherited

◆ 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 354 of file TRTTrackHoleSearchTool.cxx.

354  {
355  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::dump_bad_straw_log" );
356  std::ofstream out("TRT_ConditionsSummarySvc_bad_straws.log");
357  out << "# id barrel_ec phi_module layer_or_wheel straw_layer straw" << std::endl;
358  for(std::vector<Identifier>::const_iterator it = m_TRT_ID->straw_layer_begin(); it != m_TRT_ID->straw_layer_end(); ++it) {
359  for(int i=0; i<= m_TRT_ID->straw_max(*it); ++i) {
360  Identifier id = m_TRT_ID->straw_id(*it, i);
361  if(!m_conditions_svc->isGood(id)) {
362  out << id.getString()
363  << std::setw(3) << m_TRT_ID->barrel_ec(id)
364  << std::setw(4) << m_TRT_ID->phi_module(id)
365  << std::setw(4) << m_TRT_ID->layer_or_wheel(id)
366  << std::setw(4) << m_TRT_ID->straw_layer(id)
367  << std::setw(4) << m_TRT_ID->straw(id)
368  << std::endl;
369  }
370  }
371  }
372  out.close();
373 }

◆ 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 226 of file TRTTrackHoleSearchTool.cxx.

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

◆ finalize()

StatusCode TRTTrackHoleSearchTool::finalize ( )

Definition at line 68 of file TRTTrackHoleSearchTool.cxx.

68  {
69  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::finalize()" );
70  delete m_trt_outer_surf;
71  return StatusCode::SUCCESS;
72 }

◆ find_first_trt_hit()

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

Definition at line 378 of file TRTTrackHoleSearchTool.cxx.

378  {
379  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::find_first_trt_hit" );
380  // finds the first TRT hit or returns end
381  Trk::TrackStates::const_iterator track_state = track_states.begin();
382  for(; track_state != track_states.end(); ++track_state) {
383  // skip track states that are not measurements
384  if(!(*track_state)->type(Trk::TrackStateOnSurface::Measurement)) {
385  ATH_MSG_VERBOSE( " TrackStateOnSurface is not of type Trk::TrackStateOnSurface::Measurement." );
386  continue;
387  }
388  if( dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>( (*track_state)->measurementOnTrack() ) ) {
389  ATH_MSG_DEBUG(" Found first TRT hit.");
390  break;
391  }
392  }
393  return track_state;
394 }

◆ 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 399 of file TRTTrackHoleSearchTool.cxx.

399  {
400  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::find_last_hit_before_trt" );
401  // start at first TRT hit
402  Trk::TrackStates::const_iterator track_state = find_first_trt_hit(track_states);
403  // if there is no room to step backwards in the hits, return end
404  if(track_states.size() < 2 || track_state == track_states.begin()) {
405  return track_states.end();
406  }
407  --track_state; // step back and look for last measurement before the TRT hit
408  for(; track_state != track_states.begin(); --track_state) {
409  if((*track_state)->type(Trk::TrackStateOnSurface::Measurement)) {
410  break;
411  }
412  }
413  // if the loop ended without finding a measurement, return end
414  if(!(*track_state)->type(Trk::TrackStateOnSurface::Measurement)) {
415  return track_states.end();
416  }
417  return track_state;
418 }

◆ 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 91 of file TRTTrackHoleSearchTool.cxx.

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

◆ 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 204 of file TRTTrackHoleSearchTool.cxx.

205  {
206  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::getTrackWithHoles" );
207  const Trk::TrackStates* holes = getHolesOnTrack(track, partHyp);
208  const Trk::Track* new_track = addHolesToTrack(track, holes);
209  delete holes;
210  return new_track;
211 }

◆ 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 215 of file TRTTrackHoleSearchTool.cxx.

216  {
217  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::getTrackWithHolesAndOutliers" );
218  return getTrackWithHoles(track, partHyp);
219 }

◆ initialize()

StatusCode TRTTrackHoleSearchTool::initialize ( )

Definition at line 47 of file TRTTrackHoleSearchTool.cxx.

47  {
48  ATH_MSG_DEBUG( "TRTTrackHoleSearchTool::initialize()" );
49 
50  // retrieve extrapolator
51  ATH_CHECK(m_extrapolator.retrieve());
52 
53  // retrieve TRT_ID
54  ATH_CHECK(detStore()->retrieve(m_TRT_ID, "TRT_ID"));
55 
56  // retrieve ConditionsSummarySvc
57  ATH_CHECK(m_conditions_svc.retrieve());
58 
59  m_trt_outer_surf = new Trk::CylinderSurface(Amg::Transform3D(Amg::Transform3D::Identity()),
61  // note: HepGeom::Translate3D is deleted by Trk::Surface destructor
62 
63  return StatusCode::SUCCESS;
64 }

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

◆ 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

BooleanProperty TRTTrackHoleSearchTool::m_bcheck {this, "bcheck", false}
private

Definition at line 97 of file TRTTrackHoleSearchTool.h.

◆ m_begin_at_first_trt_hit

BooleanProperty TRTTrackHoleSearchTool::m_begin_at_first_trt_hit {this, "begin_at_first_trt_hit", false}
private

Definition at line 95 of file TRTTrackHoleSearchTool.h.

◆ m_conditions_svc

ServiceHandle<IInDetConditionsSvc> TRTTrackHoleSearchTool::m_conditions_svc {this, "conditions_svc", "TRT_ConditionsSummarySvc"}
private

Definition at line 87 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

BooleanProperty TRTTrackHoleSearchTool::m_do_dump_bad_straw_log {this, "do_dump_bad_straw_log", false}
private

Definition at line 98 of file TRTTrackHoleSearchTool.h.

◆ m_end_at_last_trt_hit

BooleanProperty TRTTrackHoleSearchTool::m_end_at_last_trt_hit {this, "end_at_last_trt_hit", false}
private

Definition at line 96 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 {this, "extrapolator", "Trk::Extrapolator"}
private

Definition at line 85 of file TRTTrackHoleSearchTool.h.

◆ m_has_been_called

std::atomic_bool TRTTrackHoleSearchTool::m_has_been_called {false}
mutableprivate

Definition at line 105 of file TRTTrackHoleSearchTool.h.

◆ m_locR_cut

FloatProperty TRTTrackHoleSearchTool::m_locR_cut {this, "locR_cut", -1.}
private

Definition at line 99 of file TRTTrackHoleSearchTool.h.

◆ m_locR_sigma_cut

FloatProperty TRTTrackHoleSearchTool::m_locR_sigma_cut {this, "locR_sigma_cut", -1.}
private

Definition at line 100 of file TRTTrackHoleSearchTool.h.

◆ m_locZ_cut

FloatProperty TRTTrackHoleSearchTool::m_locZ_cut {this, "locZ_cut", 5.0*CLHEP::mm}
private

Definition at line 101 of file TRTTrackHoleSearchTool.h.

◆ m_max_trailing_holes

IntegerProperty TRTTrackHoleSearchTool::m_max_trailing_holes {this, "max_trailing_holes", 1}
private

Definition at line 94 of file TRTTrackHoleSearchTool.h.

◆ m_max_z

FloatProperty TRTTrackHoleSearchTool::m_max_z {this, "max_z", 2715.0*CLHEP::mm}
private

Definition at line 93 of file TRTTrackHoleSearchTool.h.

◆ m_outer_radius

FloatProperty TRTTrackHoleSearchTool::m_outer_radius {this, "outer_radius", 1075.0*CLHEP::mm}
private

Definition at line 91 of file TRTTrackHoleSearchTool.h.

◆ m_TRT_ID

const TRT_ID* TRTTrackHoleSearchTool::m_TRT_ID {nullptr}
private

Definition at line 106 of file TRTTrackHoleSearchTool.h.

◆ m_trt_outer_surf

Trk::CylinderSurface* TRTTrackHoleSearchTool::m_trt_outer_surf {nullptr}
private

Definition at line 107 of file TRTTrackHoleSearchTool.h.

◆ m_use_conditions_svc

BooleanProperty TRTTrackHoleSearchTool::m_use_conditions_svc {this, "use_conditions_svc", true}
private

Definition at line 89 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:226
TRTTrackHoleSearchTool::m_outer_radius
FloatProperty m_outer_radius
Definition: TRTTrackHoleSearchTool.h:91
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
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:91
TRT_ID::straw_max
int straw_max(const Identifier &id) const
Definition: TRT_ID.cxx:996
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::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
TRTTrackHoleSearchTool::m_locR_sigma_cut
FloatProperty m_locR_sigma_cut
Definition: TRTTrackHoleSearchTool.h:100
xAOD::JetInput::Track
@ Track
Definition: JetContainerInfo.h:61
TRTTrackHoleSearchTool::m_conditions_svc
ServiceHandle< IInDetConditionsSvc > m_conditions_svc
Definition: TRTTrackHoleSearchTool.h:88
skel.it
it
Definition: skel.GENtoEVGEN.py:396
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:64
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
TRTTrackHoleSearchTool::m_max_z
FloatProperty m_max_z
Definition: TRTTrackHoleSearchTool.h:93
TRTTrackHoleSearchTool::m_use_conditions_svc
BooleanProperty m_use_conditions_svc
Definition: TRTTrackHoleSearchTool.h:89
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::locR
@ locR
Definition: ParamDefs.h:44
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:50
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:86
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
TRTTrackHoleSearchTool::m_max_trailing_holes
IntegerProperty m_max_trailing_holes
Definition: TRTTrackHoleSearchTool.h:94
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
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
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
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
TRTTrackHoleSearchTool::m_locR_cut
FloatProperty m_locR_cut
Definition: TRTTrackHoleSearchTool.h:99
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:42
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:85
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:106
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:220
TRTTrackHoleSearchTool::m_locZ_cut
FloatProperty m_locZ_cut
Definition: TRTTrackHoleSearchTool.h:101
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
Trk::d0
@ d0
Definition: ParamDefs.h:63
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::dump_bad_straw_log
void dump_bad_straw_log() const
Definition: TRTTrackHoleSearchTool.cxx:354
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
TRTTrackHoleSearchTool::m_do_dump_bad_straw_log
BooleanProperty m_do_dump_bad_straw_log
Definition: TRTTrackHoleSearchTool.h:98
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::find_first_trt_hit
Trk::TrackStates::const_iterator find_first_trt_hit(const Trk::TrackStates &track_states) const
Definition: TRTTrackHoleSearchTool.cxx:378
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:67
TRTTrackHoleSearchTool::find_last_hit_before_trt
Trk::TrackStates::const_iterator find_last_hit_before_trt(const Trk::TrackStates &track_states) const
Definition: TRTTrackHoleSearchTool.cxx:399
TRTTrackHoleSearchTool::m_end_at_last_trt_hit
BooleanProperty m_end_at_last_trt_hit
Definition: TRTTrackHoleSearchTool.h:96
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
LArCellBinning.step
step
Definition: LArCellBinning.py:158
TRTTrackHoleSearchTool::m_has_been_called
std::atomic_bool m_has_been_called
Definition: TRTTrackHoleSearchTool.h:105
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
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
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:422
TRTTrackHoleSearchTool::m_begin_at_first_trt_hit
BooleanProperty m_begin_at_first_trt_hit
Definition: TRTTrackHoleSearchTool.h:95
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:65
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:107
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:204
Identifier
Definition: IdentifierFieldParser.cxx:14
TRTTrackHoleSearchTool::m_bcheck
BooleanProperty m_bcheck
Definition: TRTTrackHoleSearchTool.h:97