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

#include <TRT_SeededTrackFinder.h>

Inheritance diagram for InDet::TRT_SeededTrackFinder:
Collaboration diagram for InDet::TRT_SeededTrackFinder:

Classes

struct  Stat_t
 Global Counters for final algorithm statistics. More...
 

Public Member Functions

 TRT_SeededTrackFinder (const std::string &name, ISvcLocator *pSvcLocator)
 Standard Algorithm methods
More...
 
virtual ~TRT_SeededTrackFinder ()
 
StatusCode initialize () override
 
StatusCode execute (const EventContext &ctx) const override
 
StatusCode finalize () override
 
MsgStream & dump (MsgStream &out) const
 Print internal tool parameters and status
More...
 
std::ostream & dump (std::ostream &out) const
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

Trk::TrackmergeSegments (const Trk::Track &, const Trk::TrackSegment &) const
 Protected methods
More...
 
Trk::TrackmergeExtension (const Trk::Track &, std::vector< const Trk::MeasurementBase * > &) const
 Merge a TRT track extension and a Si track component into one global ID track. More...
 
Trk::TracksegToTrack (const EventContext &, const Trk::TrackSegment &) const
 Transform a TRT track segment into a track
More...
 
void Analyze (TrackCollection *) const
 Do some statistics analysis at the end of each event. More...
 
MsgStream & dumptools (MsgStream &out) const
 
MsgStream & dumpevent (MsgStream &out, const InDet::TRT_SeededTrackFinder::Stat_t &stat) const
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Protected Attributes

BooleanProperty m_doRefit {this, "FinalRefit", false, "Do a final careful refit of tracks"}
 
BooleanProperty m_doExtension {this, "TrtExtension", false, "Find the TRT extension of the track"}
 
BooleanProperty m_rejectShortExten {this, "RejectShortExtension", false, "Reject short extensions"}
 
BooleanProperty m_doStat {this, "FinalStatistics", false, "Statistics of final tracks"}
 
BooleanProperty m_saveTRT {this, "OutputSegments", true, "Save stand-alone TRT segments"}
 
IntegerProperty m_MaxSegNum
 
UnsignedIntegerProperty m_minTRTonSegment {this, "MinTRTonSegment", 10, "Minimum Number of TRT Hits on segment"}
 
UnsignedIntegerProperty m_minTRTonly {this, "MinTRTonly", 15, "Minimum number of TRT hits on TRT only"}
 
ToolHandle< ITRT_SeededTrackFinderm_trackmaker
 
ToolHandle< Trk::ITrackFitterm_fitterTool
 
ToolHandle< ITRT_TrackExtensionToolm_trtExtension
 
SG::ReadHandleKey< Trk::SegmentCollectionm_SegmentsKey {this, "InputSegmentsLocation", "TRTSegments", "TRT segments to use"}
 
SG::WriteHandleKey< TrackCollectionm_outTracksKey
 
SG::ReadHandleKey< Trk::PRDtoTrackMapm_prdToTrackMap {this, "PRDtoTrackMap", "" }
 
ToolHandle< Trk::IExtendedTrackSummaryToolm_trackSummaryTool {this, "TrackSummaryTool", "InDetTrackSummaryToolNoHoleSearch"}
 
ToolHandle< Trk::IExtrapolatorm_extrapolator {this, "Extrapolator", ""}
 
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"}
 
BooleanProperty m_SiExtensionCuts {this, "SiExtensionCuts", false, "enable cuts after Si segment finding"}
 
DoubleProperty m_minPt {this, "minPt", 500., "minimal Pt cut"}
 
DoubleProperty m_maxEta {this, "maxEta", 2.7, "maximal Eta cut"}
 
DoubleProperty m_maxRPhiImp {this, "maxRPhiImp", 10., "maximal RPhi impact parameter cut"}
 
DoubleProperty m_maxZImp {this, "maxZImp", 250., "maximal z impact parameter cut"}
 
BooleanProperty m_caloSeededRoI {this, "CaloSeededRoI", false}
 
SG::ReadHandleKey< ROIPhiRZContainerm_caloClusterROIKey
 
ToolHandle< IRegSelToolm_regionSelector
 
FloatProperty m_deltaEta {this, "dEtaCaloRoI", 0.1, "delta Eta used for RoI creation"}
 
FloatProperty m_deltaPhi {this, "dPhiCaloRoI", 0.25, "delta Phi used for RoI creation"}
 
FloatProperty m_deltaZ {this, "dZCaloRoI", 300., "delta Z used for RoI creation"}
 
std::mutex m_statMutex ATLAS_THREAD_SAFE
 
Stat_t m_totalStat ATLAS_THREAD_SAFE
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

InDet::TRT_SeededTrackFinde is an algorithm which produces tracks moving outside-in in the Inner Detector.

Definition at line 54 of file TRT_SeededTrackFinder.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TRT_SeededTrackFinder()

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

Standard Algorithm methods

Definition at line 38 of file TRT_SeededTrackFinder.cxx.

40  : AthReentrantAlgorithm(name, pSvcLocator)
41 { }

◆ ~TRT_SeededTrackFinder()

virtual InDet::TRT_SeededTrackFinder::~TRT_SeededTrackFinder ( )
inlinevirtual

Definition at line 67 of file TRT_SeededTrackFinder.h.

67 {}

Member Function Documentation

◆ Analyze()

void InDet::TRT_SeededTrackFinder::Analyze ( TrackCollection ) const
protected

Do some statistics analysis at the end of each event.

Loop over tracks in track collection

Concentrate on the Si component of the track

Definition at line 668 of file TRT_SeededTrackFinder.cxx.

668  {
669  if(msgLvl(MSG::DEBUG)) {
670  ATH_MSG_DEBUG( "Analyzing tracks..." );
671  ATH_MSG_DEBUG( "Number of back tracks " << (tC->size()) );
672  int nsct1{}, nsct2{}, nsct3{}, nsct4{}; //SCT layer counters
673  int nsctTot1{}, nsctTot2{}, nsctTot3{}, nsctTot4{}; //SCT layer counters
674  int npix1{}, npix2{}, npix3{}; //Pixel layer counters
675  int npixTot1{}, npixTot2{}, npixTot3{}; //Pixel layer counters
677  TrackCollection::const_iterator r = tC->begin();
679  for (; r != re ; ++r){
680  nsct1=nsct2=nsct3=nsct4=0; npix1=npix2=npix3=0;
681  const Trk::TrackStates* newtsos = (*r)->trackStateOnSurfaces();
682  if(!newtsos) continue;
683  Trk::TrackStates::const_iterator itp, itpe=newtsos->end();
684  for(itp=newtsos->begin(); itp!=itpe; ++itp){
686  const InDet::SiClusterOnTrack* clus = dynamic_cast<const InDet::SiClusterOnTrack*>((*itp)->measurementOnTrack());
687  if(clus && ((*itp)->type(Trk::TrackStateOnSurface::Measurement))){ //Count the number of hits used in the track
688  double rc = clus->globalPosition().perp();
689  if((40.<=rc)&&(rc<80.)){npix1++;} //1st pixel layer
690  if((80.<=rc)&&(rc<100.)){npix2++;} //2nd pixel layer
691  if((100.<=rc)&&(rc<150.)){npix3++;} //3rd pixel layer
692  if((280.<=rc)&&(rc<340.)){nsct1++;} //1st SCT layer
693  if((340.<=rc)&&(rc<390.)){nsct2++;} //2nd SCT layer
694  if((390.<=rc)&&(rc<460.)){nsct3++;} //3rd SCT layer
695  if((460.<=rc)&&(rc<550.)){nsct4++;} //4th SCT layer
696  }
697  }
698  nsctTot1+=nsct1; nsctTot2+=nsct2; nsctTot3+=nsct3; nsctTot4+=nsct4;
699  npixTot1+=npix1; npixTot2+=npix2; npixTot3+=npix3;
700  }
701  ATH_MSG_DEBUG("Total hits on 1st SCT: "<<nsctTot1<<" 2nd SCT: "<<nsctTot2<<" 3rd SCT: "<<nsctTot3<<" 4th SCT: "<<nsctTot4);
702  ATH_MSG_DEBUG("Total hits on 1st Pixel: "<<npixTot1<<" 2nd Pixel: "<<npixTot2<<" 3rd Pixel: "<<npixTot3);
703  }
704 }

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ dump() [1/2]

MsgStream& InDet::TRT_SeededTrackFinder::dump ( MsgStream &  out) const

Print internal tool parameters and status

◆ dump() [2/2]

std::ostream& InDet::TRT_SeededTrackFinder::dump ( std::ostream &  out) const

◆ dumpevent()

MsgStream & InDet::TRT_SeededTrackFinder::dumpevent ( MsgStream &  out,
const InDet::TRT_SeededTrackFinder::Stat_t stat 
) const
protected

Definition at line 461 of file TRT_SeededTrackFinder.cxx.

462 {
463  out<<"|-------------------------------------------------------------------"<<std::endl;
464  out<<"| Investigated :"<<std::endl
465  <<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtSeg] <<" TRT Segments on input"<<std::endl
466  <<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtFailSel] <<" TRT Segments fail selection on input"<<std::endl
467  <<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNTrtSegGood] <<" TRT Segments after selection"<<std::endl;
468  if (stat.m_counter[Stat_t::kNTrtLimit]>0) {
469  out<<"|-------------------------------------------------------------------"<<std::endl;
470  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtLimit] <<" TRT segments lost because of processing limit"<<std::endl;
471  }
472  out<<"|-------------------------------------------------------------------"<<std::endl;
473  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtNoSiExt] <<" TRT segments without Si extension"<<std::endl;
474  if (m_SiExtensionCuts) {
475  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNExtCut] <<" number of Si extension failing cuts"<<std::endl;
476  }
477  if (stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]>0) {
478  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt] <<" number ot TRT only tracks created"<<std::endl;
479  }
480  if (m_doExtension) {
481  out<<"|-------------------------------------------------------------------"<<std::endl;
482  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNTrtExtCalls]<<" number of times TRT extension is called"<<std::endl
483  <<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtExt] <<" number of good TRT extension"<<std::endl;
484  if (m_rejectShortExten) {
485  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNTrtExtBad]<<" number of bad TRT extension"<<std::endl;
486  }
487  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNTrtExtFail]<<" number of failed TRT extension and fallback"<<std::endl;
488  }
489  out<<"|-------------------------------------------------------------------"<<std::endl;
490  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNBckTrkSi] <<" TRT+Si tracks created of output"<<std::endl;
491  if (stat.m_counter[Stat_t::kNBckTrkSi] != stat.m_counter[Stat_t::kNBckTrk]) {
492  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNBckTrk] <<" total number of tracks on output"<<std::endl;
493  }
494  out<<"|-------------------------------------------------------------------";
495  return out;
496 }

◆ dumptools()

MsgStream & InDet::TRT_SeededTrackFinder::dumptools ( MsgStream &  out) const
protected

Definition at line 430 of file TRT_SeededTrackFinder.cxx.

431 {
432  int n = 65-m_trackmaker.type().size();
433  std::string s1; for(int i=0; i<n; ++i) s1.append(" "); s1.append("|");
434  n = 65-m_fitterTool.type().size();
435  std::string s2; for(int i=0; i<n; ++i) s2.append(" "); s2.append("|");
436  n = 65-m_trtExtension.type().size();
437  std::string s3; for(int i=0; i<n; ++i) s3.append(" "); s3.append("|");
438  n = 65-m_SegmentsKey.key().size();
439  std::string s4; for(int i=0; i<n; ++i) s4.append(" "); s4.append("|");
440  n = 65-m_outTracksKey.key().size();
441  std::string s5; for(int i=0; i<n; ++i) s5.append(" "); s5.append("|");
442 
443  out<<"|----------------------------------------------------------------------"
444  <<"-------------------|"
445  <<std::endl;
446  out<<"| Tool for TRT seeded track finding | "<<m_trackmaker.type() <<s1<<std::endl;
447  out<<"| Tool for final track refitting | "<<m_fitterTool.type() <<s2<<std::endl;
448  out<<"| Tool for TRT trac extension | "<<m_trtExtension.type() <<s3<<std::endl;
449  out<<"| Location of input tracks | "<<m_SegmentsKey.key() <<s4<<std::endl;
450  out<<"| Location of output tracks | "<<m_outTracksKey.key() <<s5<<std::endl;
451  out<<"|----------------------------------------------------------------------"
452  <<"-------------------|"
453  <<std::endl;
454  return out;
455 }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode InDet::TRT_SeededTrackFinder::execute ( const EventContext &  ctx) const
override

Transform the original TRT segment into a track

Definition at line 118 of file TRT_SeededTrackFinder.cxx.

118  {
119  //Counters. See the include file for definitions
120  Stat_t ev_stat;
121  // counter
122  int nTrtSegCur = 0;
124  if(!segments.isValid()){
125  ATH_MSG_FATAL ("No segment with name " << segments.name() << " found in StoreGate!");
126  return StatusCode::FAILURE;
127  } else {
128  ATH_MSG_DEBUG ("Found segments collection " << segments.name() << " in StoreGate!");
129  }
130  // number of segments + statistics
131  ev_stat.m_counter[Stat_t::kNTrtSeg] = int(segments->size());
132  ATH_MSG_DEBUG ("TRT track container size " << ev_stat.m_counter[Stat_t::kNTrtSeg]);
133  if(ev_stat.m_counter[Stat_t::kNTrtSeg]>m_MaxSegNum) {
134  ATH_MSG_DEBUG ("TRT track container size huge; will process event partially if number of max segments reached !!!");
135  }
136  // Event dependent data of SiCombinatorialTrackFinder_xk
138  std::unique_ptr<InDet::ITRT_SeededTrackFinder::IEventData> event_data_p;
139  if(m_caloSeededRoI ) {
141  std::unique_ptr<RoiDescriptor> roiComp = std::make_unique<RoiDescriptor>(true);
142  if (calo_rois.isValid()) {
143  RoiDescriptor * roi =nullptr;
145  double beamZ = beamSpotHandle->beamVtx().position().z();
146  roiComp->clear();
147  roiComp->setComposite();
148  for (const ROIPhiRZ &the_roi : *calo_rois) {
149  double eta = the_roi.eta();
150  double phi = the_roi.phi();
151  double roiPhiMin = phi -m_deltaPhi;
152  double roiPhiMax = phi +m_deltaPhi;
153  double roiEtaMin = eta -m_deltaEta;
154  double roiEtaMax = eta +m_deltaEta;
155  double roiZMin = beamZ -m_deltaZ;
156  double roiZMax = beamZ +m_deltaZ;
157  roi = new RoiDescriptor( eta, roiEtaMin, roiEtaMax,phi, roiPhiMin ,roiPhiMax, beamZ, roiZMin,roiZMax);
158  roiComp->push_back(roi);
159  }
160 
161  }
162  std::vector<IdentifierHash> listOfSCTIds;
163  std::vector<IdentifierHash> listOfPixIds;
164 
165  m_regionSelector->lookup(ctx)->HashIDList( *roiComp, listOfSCTIds );
166 
167  event_data_p = m_trackmaker->newRegion(ctx, combinatorialData, listOfPixIds, listOfSCTIds);
168  } else {
169  event_data_p = m_trackmaker->newEvent(ctx, combinatorialData);
170  }
171 
172  std::unique_ptr<InDet::ITRT_TrackExtensionTool::IEventData> ext_event_data_p( m_trtExtension->newEvent(ctx) );
173  std::unique_ptr<TrackCollection> outTracks = std::make_unique<TrackCollection>();
174  std::vector<Trk::Track*> tempTracks; //Temporary track collection
175  tempTracks.reserve(128);
176  // loop over event
177  ATH_MSG_DEBUG ("Begin looping over all TRT segments in the event");
178  Trk::SegmentCollection::const_iterator iseg = segments->begin();
179  Trk::SegmentCollection::const_iterator isegEnd = segments->end();
181  for(; iseg != isegEnd; ++ iseg) {
182  // Get the track segment
183  const Trk::TrackSegment *trackTRT = dynamic_cast<const Trk::TrackSegment*>(*iseg);
184  if(!trackTRT){
185  ATH_MSG_ERROR ("No pointer to segment !");
186  continue;
187  } else {
188  // the segment finder is applying a TRT(eta) cut and a pt preselection, so we don't do that here
189  //Ask for at least 10 TRT hits in order to process
190  if(trackTRT->numberOfMeasurementBases() < m_minTRTonSegment) {
191  ATH_MSG_DEBUG ("TRT segment fails nTRT hit cut, reject.");
192  // statistics
193  ev_stat.m_counter[Stat_t::kNTrtFailSel]++;
194  } else {
195  // do we continue to process ?
196  nTrtSegCur++;
197  if(nTrtSegCur>=m_MaxSegNum) {
198  ATH_MSG_DEBUG ("====> Reached maximal number of segments in event, stop !!!");
199  // statistics
200  ev_stat.m_counter[Stat_t::kNTrtLimit]++;
201  break;
202  }
203  // Get the number of the TRT track segment ROTs
204  ATH_MSG_DEBUG ("=> New segment to process, number Of TRT ROTs : " << (trackTRT->numberOfMeasurementBases()));
205  // statistics
206  ev_stat.m_counter[Stat_t::Stat_t::kNTrtSegGood]++;
207  // ok, call track maker and get list of possible track candidates
208  std::list<Trk::Track*> trackSi = m_trackmaker->getTrack(ctx, *event_data_p, *trackTRT); //Get the possible Si extensions
209  if (trackSi.empty()) {
210  ATH_MSG_DEBUG ("No Si track candidates associated to the TRT track ");
211  // statistics
212  ev_stat.m_counter[Stat_t::kNTrtNoSiExt]++;
213  // obsolete backup of TRT only
214  if(m_saveTRT && trackTRT->numberOfMeasurementBases() > m_minTRTonly){
216  Trk::Track* trtSeg = nullptr;trtSeg = segToTrack(ctx, *trackTRT);
217  if(!trtSeg) {
218  ATH_MSG_DEBUG ("Failed to make a track out of the TRT segment!");
219  continue;
220  }
221  // statistics
222  ev_stat.m_counter[Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]++;
223  // add track to output list
224  outTracks->push_back(trtSeg);
225  }
226  continue;
227  } else {
228  // Found useful extensions
229  ATH_MSG_DEBUG ("Found " << (trackSi.size()) << " Si tracks associated to the TRT track ");
230  // Merge the resolved Si extensions with the original TRT track segment
231  std::list<Trk::Track*>::const_iterator itt = trackSi.begin();
232  std::list<Trk::Track*>::const_iterator ittEnd = trackSi.end();
233  for (; itt != ittEnd ; ++itt){
234  tempTracks.push_back(*itt);
235  // get list of TSOS
236  const Trk::TrackStates* temptsos = (*itt)->trackStateOnSurfaces();
237  if (!temptsos) {
238  ATH_MSG_DEBUG ("Silicon extension empty ???");
239  continue;
240  }
241  // Add the track to the list of tracks in the event
242  ATH_MSG_DEBUG ("Silicon extension found has length of : " << temptsos->size());
243  // do we do a preselection ?
244  if (m_SiExtensionCuts) {
245  // get parameters without errors
246  auto input = (*itt)->trackParameters()->front()->uniqueClone();
247  // cuts on parameters
248  if (std::abs(input->pT()) < m_minPt) {
249  ATH_MSG_DEBUG ("Track pt < "<<m_minPt<<", reject it");
250  // statistics
251  ev_stat.m_counter[Stat_t::kNExtCut]++;
252  continue;
253  }
254  if (std::abs(input->eta()) > m_maxEta) {
255  ATH_MSG_DEBUG ("Track eta > "<<m_maxEta<<", reject it");
256  // statistics
257  ev_stat.m_counter[Stat_t::kNExtCut]++;
258  continue;
259  }
260  // --- beam spot position
261  Amg::Vector3D beamSpotPosition(0,0,0);
262  if (m_SiExtensionCuts){
264  beamSpotPosition = beamSpotHandle->beamVtx().position();
265  }
266  // --- create surface
267  Trk::PerigeeSurface perigeeSurface(beamSpotPosition);
268 
269  // uses perigee on track or extrapolates, no material in any case, we cut on impacts
270  std::unique_ptr<const Trk::TrackParameters> parm =
271  m_extrapolator->extrapolateDirectly(
272  ctx, *input, perigeeSurface);
273  std::unique_ptr<const Trk::Perigee> extrapolatedPerigee = nullptr;
274  if (parm && parm->associatedSurface().type() == Trk::SurfaceType::Perigee) {
275  extrapolatedPerigee.reset(static_cast<const Trk::Perigee*>(parm.release()));
276  }
277  if (!extrapolatedPerigee) {
278  ATH_MSG_WARNING("Extrapolation of perigee failed, this should never happen" );
279  // statistics
280  ev_stat.m_counter[Stat_t::kNExtCut]++;
281  continue;
282  }
283 
284  ATH_MSG_VERBOSE ("extrapolated perigee: "<<*extrapolatedPerigee);
285  if (std::abs(extrapolatedPerigee->parameters()[Trk::d0]) > m_maxRPhiImp) {
286  ATH_MSG_DEBUG ("Track Rphi impact > "<<m_maxRPhiImp<<", reject it");
287  // statistics
288  ev_stat.m_counter[Stat_t::kNExtCut]++;
289  continue;
290  }
291  if (std::abs(extrapolatedPerigee->parameters()[Trk::z0]) > m_maxZImp) {
292  ATH_MSG_DEBUG ("Track Z impact > "<<m_maxZImp<<", reject it");
293  // statistics
294  ev_stat.m_counter[Stat_t::kNExtCut]++;
295  continue;
296  }
297  }
298 
299  // do re run a Track extension into TRT ?
300  Trk::Track* globalTrackNew = nullptr;
301  // do we have 4 and extension is enabled ?
302  if(int(temptsos->size())>=4 && m_doExtension){
303  // Add the track to the list of tracks in the event
304  ATH_MSG_DEBUG ("Try to improve TRT calling extension tool.");
305  // statistics
306  ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtCalls]++;
307  // call extension tool
308  std::vector<const Trk::MeasurementBase*>& tn =
309  m_trtExtension->extendTrack(ctx, *(*itt), *ext_event_data_p, map);
310  if (tn.empty()) {
311  // Fallback if extension failed
312  ATH_MSG_DEBUG ("No new segment found, use input segment as fallback.");
313  // statistics
314  ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtFail]++;
315  // merge Si with input track segments
316  globalTrackNew = mergeSegments(**itt,*trackTRT);
317  } else if (!m_rejectShortExten ||
318  tn.size() >= trackTRT->numberOfMeasurementBases()) {
319  // Use the extension to instead of the segment
320  ATH_MSG_DEBUG ("Successful extension, number of TRT hits : " << tn.size() << " was : " << (trackTRT->numberOfMeasurementBases()));
321  // merge the extension with the Si track
322  globalTrackNew = mergeExtension(**itt,tn);
323  // Add the track to the list of tracks in the event
324  ATH_MSG_DEBUG ("Merged extension with Si segment");
325  // statistics
326  ev_stat.m_counter[Stat_t::kNTrtExt]++;
327  // clean up
328  std::vector<const Trk::MeasurementBase*>::const_iterator iv, ive=tn.end();
329  for(iv=tn.begin(); iv!=ive; ++iv) delete (*iv);
330  } else {
331  // Extension is shorter, let's fall back onto the original
332  ATH_MSG_DEBUG ("Extension too short, number of TRT hits : " << tn.size() << " was : " << (trackTRT->numberOfMeasurementBases()) << ". Use Segement !");
333  // merge segments
334  globalTrackNew = mergeSegments(**itt,*trackTRT);
335  // Add the track to the list of tracks in the event
336  ATH_MSG_DEBUG ("Merged TRT segment with Si segment");
337  // statistics
338  ev_stat.m_counter[Stat_t::Stat_t::kNTrtExtBad]++;
339  // clean up
340  std::vector<const Trk::MeasurementBase*>::const_iterator iv, ive=tn.end();
341  for(iv=tn.begin(); iv!=ive; ++iv) delete (*iv);
342  }
343  } else {
344  // no extension tool, jsut add the two
345  ATH_MSG_DEBUG ("Do not try to extend Si track, merging it with input TRT.");
346  // merge segments
347  globalTrackNew = mergeSegments(**itt,*trackTRT);
348  }
349  // do we have an track candidate ?
350  if(!globalTrackNew){
351  ATH_MSG_DEBUG ("Failed to merge TRT+Si track segment !");
352  if(m_saveTRT && trackTRT->numberOfMeasurementBases() > m_minTRTonly) {
353  Trk::Track* trtSeg = nullptr;trtSeg = segToTrack(ctx, *trackTRT);
354  if(!trtSeg){
355  ATH_MSG_DEBUG ("Failed to make a track out of the TRT segment!");
356  continue;
357  }
358  ATH_MSG_DEBUG ("Add TRT only to output list");
359  // statistis
360  ev_stat.m_counter[Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]++;
361  // add it to output list
362  if (m_trackSummaryTool.isEnabled()) {
363  m_trackSummaryTool->computeAndReplaceTrackSummary(*trtSeg,
364  false /* DO NOT suppress hole search*/);
365  }
366  outTracks->push_back(trtSeg);
367  }
368  } else {
369  ATH_MSG_DEBUG ("Save merged TRT+Si track segment!");
370  // statistics
371  ev_stat.m_counter[Stat_t::kNBckTrk]++; ev_stat.m_counter[Stat_t::Stat_t::kNBckTrkSi]++;
372  // add it to output list
373  if (m_trackSummaryTool.isEnabled()) {
374  m_trackSummaryTool->computeAndReplaceTrackSummary(*globalTrackNew,
375  false /* DO NOT suppress hole search*/);
376  }
377  outTracks->push_back(globalTrackNew);
378  }
379  }
380  }
381  }
382  }
383  }
384  // further debugging of results
385  if(m_doStat){
386  Analyze(outTracks.get());
387  }
388  if (SG::WriteHandle<TrackCollection>(m_outTracksKey,ctx).record(std::move(outTracks)).isFailure()){
389  ATH_MSG_ERROR("Failed to record " << m_outTracksKey.key());
390  return StatusCode::FAILURE;
391  }
392  // Update the total counters
393  {
394  std::lock_guard<std::mutex> lock(m_statMutex);
395  m_totalStat += ev_stat;
396  }
397 
398  for (auto *p : tempTracks){
399  delete p;
400  }
401  m_trackmaker->endEvent(*event_data_p);
402 
403  //Print common event information
404  if(msgLvl(MSG::DEBUG)){
405  dumpevent(msg(MSG::DEBUG), ev_stat);
406  }
407 
408  return StatusCode::SUCCESS;
409 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 79 of file AthReentrantAlgorithm.cxx.

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

◆ filterPassed()

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

Definition at line 135 of file AthReentrantAlgorithm.h.

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

◆ finalize()

StatusCode InDet::TRT_SeededTrackFinder::finalize ( )
override

Definition at line 415 of file TRT_SeededTrackFinder.cxx.

416 {
417  if(msgLvl(MSG::INFO)){
418  msg(MSG::INFO) << "\n";
419  dumpevent(msg(MSG::INFO), m_totalStat);
420  msg(MSG::INFO) << endmsg;
421  }
422  return StatusCode::SUCCESS;
423 }

◆ initialize()

StatusCode InDet::TRT_SeededTrackFinder::initialize ( )
override

TRT segments to use

Definition at line 47 of file TRT_SeededTrackFinder.cxx.

48 {
49 
50  //Get the TRT seeded track maker tool
51  //
52  ATH_CHECK(m_trackmaker.retrieve());
53 
54  //Get the refitting tool
55  //
56  ATH_CHECK( m_fitterTool.retrieve( DisableTool{ !m_doRefit } ));
57  ATH_CHECK( m_extrapolator.retrieve( DisableTool{ !m_SiExtensionCuts } ));
59 
60  // optional PRD to track association map
62 
63  ATH_CHECK( m_trackSummaryTool.retrieve( DisableTool{ m_trackSummaryTool.name().empty() } ) );
64 
65  // Get tool for track extension to TRT
66  //
67  ATH_CHECK( m_trtExtension.retrieve( DisableTool{ !m_doExtension} ));
68 
69 
70  ATH_CHECK( m_SegmentsKey.initialize()) ;
71  ATH_CHECK( m_outTracksKey.initialize());
72 
74 
75  if(m_caloSeededRoI){
76  ATH_CHECK( m_regionSelector.retrieve());
77  } else {
78  m_regionSelector.disable();
79  }
80 
81  // Get output print level
82  //
83  if(msgLvl(MSG::DEBUG)) {
85  }
86  //Global counters. See the include file for definitions
87  m_totalStat = Stat_t();
88  return StatusCode::SUCCESS;
89 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ mergeExtension()

Trk::Track * InDet::TRT_SeededTrackFinder::mergeExtension ( const Trk::Track tT,
std::vector< const Trk::MeasurementBase * > &  tS 
) const
protected

Merge a TRT track extension and a Si track component into one global ID track.

Construct the new track

Definition at line 619 of file TRT_SeededTrackFinder.cxx.

620  {
621  // TSOS from the track
622  const Trk::TrackStates* stsos = tT.trackStateOnSurfaces();
623  // fitQuality from track
624  auto fq = tT.fitQuality()->uniqueClone();
625  // output datavector of TSOS
626  auto ntsos = std::make_unique<Trk::TrackStates>();
627  // copy track Si states into track
629  for (p_stsos = stsos->begin(); p_stsos != stsos->end(); ++p_stsos) {
630  ntsos->push_back((*p_stsos)->clone());
631  }
632  // loop over TRT track extension
633  for (auto & it : tS) {
634  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
635  typePattern.set(Trk::TrackStateOnSurface::Measurement);
636  const Trk::TrackStateOnSurface* seg_tsos = new Trk::TrackStateOnSurface(it->uniqueClone(), nullptr, nullptr, typePattern);
637  ntsos->push_back(seg_tsos);
638  }
641  info.setPatternRecognitionInfo(Trk::TrackInfo::TRTSeededTrackFinder);
642  std::unique_ptr<Trk::Track> newTrack( std::make_unique<Trk::Track>(info, std::move(ntsos), std::move(fq)) );
643  //Careful refitting at the end
644  if (m_doRefit) {
645  newTrack = (m_fitterTool->fit(Gaudi::Hive::currentContext(),*newTrack, false, Trk::pion) ) ;
646  if (!newTrack) {
647  ATH_MSG_DEBUG ("Refit of TRT+Si track segment failed!");
648  return nullptr;
649  }
650  //Protect for tracks that have no really defined locz and theta parameters
651  const Trk::Perigee* perTrack=newTrack->perigeeParameters();
652  if (perTrack) {
653  const AmgSymMatrix(5)* CM = perTrack->covariance();
654  if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
655  return nullptr;
656  }
657  }
658  }
659 
660  return newTrack.release();
661 }

◆ mergeSegments()

Trk::Track * InDet::TRT_SeededTrackFinder::mergeSegments ( const Trk::Track tT,
const Trk::TrackSegment tS 
) const
protected

Protected methods

Merge a TRT track segment and a Si track component into one global ID track

Construct the new track

Definition at line 503 of file TRT_SeededTrackFinder.cxx.

503  {
504  // TSOS from the track
505  const Trk::TrackStates* stsos = tT.trackStateOnSurfaces();
506  // fitQuality from track
507  auto fq = tT.fitQuality()->uniqueClone();
508  // output datavector of TSOS
509  auto ntsos = std::make_unique<Trk::TrackStates>();
510  int siHits = 0;
511  // copy track Si states into track
513  for (p_stsos=stsos->begin(); p_stsos != stsos->end(); ++p_stsos) {
514  ntsos->push_back( (*p_stsos)->clone() );
515  if ((*p_stsos)->type(Trk::TrackStateOnSurface::Measurement)) siHits++;
516  }
517  // loop over segment
518  for (int it = 0; it < int(tS.numberOfMeasurementBases()); it++) {
519  //test if it is a pseudo measurement
520  if ( dynamic_cast<const Trk::PseudoMeasurementOnTrack*>(tS.measurement(it)) ) {
521  if (siHits < 4) {
522  ATH_MSG_DEBUG ("Too few Si hits.Will keep pseudomeasurement...");
523  const Trk::TrackStateOnSurface* seg_tsos = new Trk::TrackStateOnSurface(tS.measurement(it)->uniqueClone(), nullptr);
524  ntsos->push_back(seg_tsos);
525  }
526  } else {
527  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
528  typePattern.set(Trk::TrackStateOnSurface::Measurement);
529  const Trk::TrackStateOnSurface* seg_tsos = new Trk::TrackStateOnSurface(tS.measurement(it)->uniqueClone(), nullptr, nullptr, typePattern);
530  ntsos->push_back(seg_tsos);
531  }
532  }
533 
536  info.setPatternRecognitionInfo(Trk::TrackInfo::TRTSeededTrackFinder);
537  std::unique_ptr<Trk::Track> newTrack(std::make_unique<Trk::Track>(info, std::move(ntsos), std::move(fq)));
538 
539  //Careful refitting at the end
540  if (m_doRefit) {
541  newTrack=m_fitterTool->fit(Gaudi::Hive::currentContext(),*newTrack, false, Trk::pion);
542  if (!newTrack) {
543  ATH_MSG_DEBUG ("Refit of TRT+Si track segment failed!");
544  return nullptr;
545  }
546  const Trk::Perigee* perTrack=newTrack->perigeeParameters();
547  if (perTrack) {
548  const AmgSymMatrix(5)* CM = perTrack->covariance();
549  if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
550  return nullptr;
551  }
552  }
553  }
554  return newTrack.release();
555 }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ segToTrack()

Trk::Track * InDet::TRT_SeededTrackFinder::segToTrack ( const EventContext &  ctx,
const Trk::TrackSegment tS 
) const
protected

Transform a TRT track segment into a track

Definition at line 561 of file TRT_SeededTrackFinder.cxx.

561  {
562  ATH_MSG_DEBUG ("Transforming the TRT segment into a track...");
563 
564  //Get the track segment information and build the initial track parameters
565  const Trk::StraightLineSurface* surf = dynamic_cast<const Trk::StraightLineSurface*>(&(tS.associatedSurface()));
566  if (!surf) {
567  throw std::logic_error("Unhandled surface.");
568  }
569  const AmgVector(5)& p = tS.localParameters();
570  AmgSymMatrix(5) ep = AmgSymMatrix(5)(tS.localCovariance());
571  auto ntsos = std::make_unique<Trk::TrackStates>();
572  std::unique_ptr<Trk::TrackParameters> segPar =
573  surf->createUniqueParameters<5, Trk::Charged>(
574  p(0), p(1), p(2), p(3), p(4), std::move(ep));
575  if (segPar) {
576  ATH_MSG_DEBUG( "Initial TRT Segment Parameters for refitting " << (*segPar) );
577  } else {
578  ATH_MSG_DEBUG( "Could not get initial TRT segment parameters! " );
579  return nullptr;
580  }
581  for (int it = 0; it < int(tS.numberOfMeasurementBases()); it++) {
582  // on first measurement add parameters
583  const Trk::TrackStateOnSurface* seg_tsos = nullptr;
584  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
585  typePattern.set(Trk::TrackStateOnSurface::Measurement);
586  if (it == 0){
587  seg_tsos = new Trk::TrackStateOnSurface(tS.measurement(it)->uniqueClone(), std::move(segPar), nullptr, typePattern);
588  } else {
589  seg_tsos = new Trk::TrackStateOnSurface(tS.measurement(it)->uniqueClone(), nullptr, nullptr, typePattern);
590  }
591  ntsos->push_back(seg_tsos);
592  }
594  info.setPatternRecognitionInfo(Trk::TrackInfo::TRTSeededTrackFinder);
595  std::unique_ptr<Trk::Track> newTrack = std::make_unique<Trk::Track>(info, std::move(ntsos), nullptr);
596  // Careful refitting of the TRT stand alone track
597  if (m_doRefit) {
598  newTrack = m_fitterTool->fit(ctx,*newTrack, false, Trk::pion);
599  if (!newTrack) {
600  ATH_MSG_DEBUG ("Refit of TRT track segment failed!");
601  return nullptr;
602  }
603  //Protect for tracks that have no really defined locz and theta parameters
604  const Trk::Perigee* perTrack=newTrack->perigeeParameters();
605  if (perTrack) {
606  const AmgSymMatrix(5)* CM = perTrack->covariance();
607  if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
608  return nullptr;
609  }
610  }
611  }
612  return newTrack.release();
613 }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

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

◆ sysExecute()

StatusCode AthReentrantAlgorithm::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 67 of file AthReentrantAlgorithm.cxx.

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

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

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

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/2]

std::mutex m_statMutex InDet::TRT_SeededTrackFinder::ATLAS_THREAD_SAFE
mutableprotected

Definition at line 186 of file TRT_SeededTrackFinder.h.

◆ ATLAS_THREAD_SAFE [2/2]

Stat_t m_totalStat InDet::TRT_SeededTrackFinder::ATLAS_THREAD_SAFE
mutableprotected

Definition at line 187 of file TRT_SeededTrackFinder.h.

◆ m_beamSpotKey

SG::ReadCondHandleKey<InDet::BeamSpotData> InDet::TRT_SeededTrackFinder::m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"}
protected

Definition at line 124 of file TRT_SeededTrackFinder.h.

◆ m_caloClusterROIKey

SG::ReadHandleKey<ROIPhiRZContainer> InDet::TRT_SeededTrackFinder::m_caloClusterROIKey
protected
Initial value:
{this, "EMROIPhiRZContainer", "",
"Name of the calo cluster ROIs in Phi,R,Z parameterization"}

Definition at line 137 of file TRT_SeededTrackFinder.h.

◆ m_caloSeededRoI

BooleanProperty InDet::TRT_SeededTrackFinder::m_caloSeededRoI {this, "CaloSeededRoI", false}
protected

Definition at line 136 of file TRT_SeededTrackFinder.h.

◆ m_deltaEta

FloatProperty InDet::TRT_SeededTrackFinder::m_deltaEta {this, "dEtaCaloRoI", 0.1, "delta Eta used for RoI creation"}
protected

Definition at line 145 of file TRT_SeededTrackFinder.h.

◆ m_deltaPhi

FloatProperty InDet::TRT_SeededTrackFinder::m_deltaPhi {this, "dPhiCaloRoI", 0.25, "delta Phi used for RoI creation"}
protected

Definition at line 147 of file TRT_SeededTrackFinder.h.

◆ m_deltaZ

FloatProperty InDet::TRT_SeededTrackFinder::m_deltaZ {this, "dZCaloRoI", 300., "delta Z used for RoI creation"}
protected

Definition at line 149 of file TRT_SeededTrackFinder.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doExtension

BooleanProperty InDet::TRT_SeededTrackFinder::m_doExtension {this, "TrtExtension", false, "Find the TRT extension of the track"}
protected

Definition at line 86 of file TRT_SeededTrackFinder.h.

◆ m_doRefit

BooleanProperty InDet::TRT_SeededTrackFinder::m_doRefit {this, "FinalRefit", false, "Do a final careful refit of tracks"}
protected

Definition at line 84 of file TRT_SeededTrackFinder.h.

◆ m_doStat

BooleanProperty InDet::TRT_SeededTrackFinder::m_doStat {this, "FinalStatistics", false, "Statistics of final tracks"}
protected

Definition at line 90 of file TRT_SeededTrackFinder.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_extrapolator

ToolHandle<Trk::IExtrapolator> InDet::TRT_SeededTrackFinder::m_extrapolator {this, "Extrapolator", ""}
protected

Definition at line 123 of file TRT_SeededTrackFinder.h.

◆ m_fitterTool

ToolHandle<Trk::ITrackFitter> InDet::TRT_SeededTrackFinder::m_fitterTool
protected
Initial value:
{this, "RefitterTool", "Trk::GlobalChi2Fitter/InDetTrackFitter",
"Track refit tool"}

Definition at line 105 of file TRT_SeededTrackFinder.h.

◆ m_maxEta

DoubleProperty InDet::TRT_SeededTrackFinder::m_maxEta {this, "maxEta", 2.7, "maximal Eta cut"}
protected

Definition at line 130 of file TRT_SeededTrackFinder.h.

◆ m_maxRPhiImp

DoubleProperty InDet::TRT_SeededTrackFinder::m_maxRPhiImp {this, "maxRPhiImp", 10., "maximal RPhi impact parameter cut"}
protected

Definition at line 131 of file TRT_SeededTrackFinder.h.

◆ m_MaxSegNum

IntegerProperty InDet::TRT_SeededTrackFinder::m_MaxSegNum
protected
Initial value:
{this, "MaxNumberSegments", 5000,
"Maximum number of segments to be handled"}

Definition at line 94 of file TRT_SeededTrackFinder.h.

◆ m_maxZImp

DoubleProperty InDet::TRT_SeededTrackFinder::m_maxZImp {this, "maxZImp", 250., "maximal z impact parameter cut"}
protected

Definition at line 133 of file TRT_SeededTrackFinder.h.

◆ m_minPt

DoubleProperty InDet::TRT_SeededTrackFinder::m_minPt {this, "minPt", 500., "minimal Pt cut"}
protected

Definition at line 129 of file TRT_SeededTrackFinder.h.

◆ m_minTRTonly

UnsignedIntegerProperty InDet::TRT_SeededTrackFinder::m_minTRTonly {this, "MinTRTonly", 15, "Minimum number of TRT hits on TRT only"}
protected

Definition at line 99 of file TRT_SeededTrackFinder.h.

◆ m_minTRTonSegment

UnsignedIntegerProperty InDet::TRT_SeededTrackFinder::m_minTRTonSegment {this, "MinTRTonSegment", 10, "Minimum Number of TRT Hits on segment"}
protected

Definition at line 97 of file TRT_SeededTrackFinder.h.

◆ m_outTracksKey

SG::WriteHandleKey<TrackCollection> InDet::TRT_SeededTrackFinder::m_outTracksKey
protected
Initial value:
{this, "OutputTracksLocation", "TRTSeededTracks",
"Output track collection"}

Definition at line 114 of file TRT_SeededTrackFinder.h.

◆ m_prdToTrackMap

SG::ReadHandleKey<Trk::PRDtoTrackMap> InDet::TRT_SeededTrackFinder::m_prdToTrackMap {this, "PRDtoTrackMap", "" }
protected

Definition at line 118 of file TRT_SeededTrackFinder.h.

◆ m_regionSelector

ToolHandle<IRegSelTool> InDet::TRT_SeededTrackFinder::m_regionSelector
protected
Initial value:
{this, "RegSelTool", "RegSelTool/RegSel_SCT",
"Region selector service instance"}

Definition at line 141 of file TRT_SeededTrackFinder.h.

◆ m_rejectShortExten

BooleanProperty InDet::TRT_SeededTrackFinder::m_rejectShortExten {this, "RejectShortExtension", false, "Reject short extensions"}
protected

Definition at line 88 of file TRT_SeededTrackFinder.h.

◆ m_saveTRT

BooleanProperty InDet::TRT_SeededTrackFinder::m_saveTRT {this, "OutputSegments", true, "Save stand-alone TRT segments"}
protected

Definition at line 92 of file TRT_SeededTrackFinder.h.

◆ m_SegmentsKey

SG::ReadHandleKey<Trk::SegmentCollection> InDet::TRT_SeededTrackFinder::m_SegmentsKey {this, "InputSegmentsLocation", "TRTSegments", "TRT segments to use"}
protected

Definition at line 112 of file TRT_SeededTrackFinder.h.

◆ m_SiExtensionCuts

BooleanProperty InDet::TRT_SeededTrackFinder::m_SiExtensionCuts {this, "SiExtensionCuts", false, "enable cuts after Si segment finding"}
protected

Definition at line 127 of file TRT_SeededTrackFinder.h.

◆ m_trackmaker

ToolHandle<ITRT_SeededTrackFinder> InDet::TRT_SeededTrackFinder::m_trackmaker
protected
Initial value:
{this, "TrackTool", "InDet::TRT_SeededTrackFinderTool",
"Back tracking tool"}

Definition at line 102 of file TRT_SeededTrackFinder.h.

◆ m_trackSummaryTool

ToolHandle<Trk::IExtendedTrackSummaryTool> InDet::TRT_SeededTrackFinder::m_trackSummaryTool {this, "TrackSummaryTool", "InDetTrackSummaryToolNoHoleSearch"}
protected

Definition at line 120 of file TRT_SeededTrackFinder.h.

◆ m_trtExtension

ToolHandle<ITRT_TrackExtensionTool> InDet::TRT_SeededTrackFinder::m_trtExtension
protected
Initial value:
{this, "TrackExtensionTool", "InDet::TRT_TrackExtensionTool_xk",
"TRT track extension tool "}

Definition at line 108 of file TRT_SeededTrackFinder.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
InDet::TRT_SeededTrackFinder::Stat_t::kNTrtSeg
@ kNTrtSeg
Definition: TRT_SeededTrackFinder.h:157
InDet::TRT_SeededTrackFinder::Stat_t::kNTrtNoSiExt
@ kNTrtNoSiExt
Number of TRT segments lost in busy events.
Definition: TRT_SeededTrackFinder.h:162
beamspotman.r
def r
Definition: beamspotman.py:676
InDet::TRT_SeededTrackFinder::mergeExtension
Trk::Track * mergeExtension(const Trk::Track &, std::vector< const Trk::MeasurementBase * > &) const
Merge a TRT track extension and a Si track component into one global ID track.
Definition: TRT_SeededTrackFinder.cxx:620
InDet::TRT_SeededTrackFinder::m_SegmentsKey
SG::ReadHandleKey< Trk::SegmentCollection > m_SegmentsKey
Definition: TRT_SeededTrackFinder.h:113
TruthTest.itp
itp
Definition: TruthTest.py:46
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
Trk::TrackInfo
Contains information about the 'fitter' of this track.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:32
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Trk::Track::fitQuality
const FitQuality * fitQuality() const
return a pointer to the fit quality const-overload
InDet::TRT_SeededTrackFinder::m_outTracksKey
SG::WriteHandleKey< TrackCollection > m_outTracksKey
Definition: TRT_SeededTrackFinder.h:115
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
InDet::TRT_SeededTrackFinder::m_minPt
DoubleProperty m_minPt
Definition: TRT_SeededTrackFinder.h:129
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
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
Trk::Track::trackStateOnSurfaces
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
InDet::TRT_SeededTrackFinder::m_doRefit
BooleanProperty m_doRefit
Definition: TRT_SeededTrackFinder.h:85
AthCommonDataStore::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
InDet::TRT_SeededTrackFinder::m_trackSummaryTool
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
Definition: TRT_SeededTrackFinder.h:121
skel.it
it
Definition: skel.GENtoEVGEN.py:396
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
InDet::TRT_SeededTrackFinder::m_doExtension
BooleanProperty m_doExtension
Definition: TRT_SeededTrackFinder.h:87
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
InDet::TRT_SeededTrackFinder::Stat_t::kNTrtLimit
@ kNTrtLimit
Number of TRT segments that will be investigated per event
Definition: TRT_SeededTrackFinder.h:161
InDet::TRT_SeededTrackFinder::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: TRT_SeededTrackFinder.h:123
Trk::z0
@ z0
Definition: ParamDefs.h:64
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDet::TRT_SeededTrackFinder::Stat_t::kNExtCut
@ kNExtCut
Number of TRT segments not extended in Si.
Definition: TRT_SeededTrackFinder.h:163
ReadCellNoiseFromCoolCompare.s4
s4
Definition: ReadCellNoiseFromCoolCompare.py:381
InDet::TRT_SeededTrackFinder::m_deltaZ
FloatProperty m_deltaZ
Definition: TRT_SeededTrackFinder.h:150
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::TrackSegment
Definition: TrackSegment.h:56
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDet::TRT_SeededTrackFinder::m_caloSeededRoI
BooleanProperty m_caloSeededRoI
Definition: TRT_SeededTrackFinder.h:136
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:50
PUClassification.Charged
Charged
Definition: PUClassification.py:16
InDet::TRT_SeededTrackFinder::m_deltaPhi
FloatProperty m_deltaPhi
Definition: TRT_SeededTrackFinder.h:148
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Trk::Segment::numberOfMeasurementBases
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:193
xAOD::TrackParameters
TrackParameters_v1 TrackParameters
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParameters.h:11
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
InDet::TRT_SeededTrackFinder::m_MaxSegNum
IntegerProperty m_MaxSegNum
Definition: TRT_SeededTrackFinder.h:95
Trk::PseudoMeasurementOnTrack
Class to handle pseudo-measurements in fitters and on track objects.
Definition: PseudoMeasurementOnTrack.h:44
InDet::TRT_SeededTrackFinder::m_saveTRT
BooleanProperty m_saveTRT
Definition: TRT_SeededTrackFinder.h:93
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
InDet::TRT_SeededTrackFinder::m_maxEta
DoubleProperty m_maxEta
Definition: TRT_SeededTrackFinder.h:130
InDet::SiClusterOnTrack::globalPosition
virtual const Amg::Vector3D & globalPosition() const override
returns global position (gathered through Surface constraint)
Definition: SiClusterOnTrack.h:115
InDet::TRT_SeededTrackFinder::Analyze
void Analyze(TrackCollection *) const
Do some statistics analysis at the end of each event.
Definition: TRT_SeededTrackFinder.cxx:668
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
RoiDescriptor::push_back
void push_back(const IRoiDescriptor *roi)
add a RoiDescriptor
Definition: RoiDescriptor.h:157
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
Trk::TrackStates
DataVector< const Trk::TrackStateOnSurface > TrackStates
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:30
InDet::TRT_SeededTrackFinder::Stat_t::kNBckTrk
@ kNBckTrk
Number of back tracks found with Si extension per event.
Definition: TRT_SeededTrackFinder.h:171
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:731
Trk::MeasurementBase::uniqueClone
std::unique_ptr< MeasurementBase > uniqueClone() const
NVI Clone giving up unique pointer.
Definition: MeasurementBase.h:77
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
InDet::TRT_SeededTrackFinder::mergeSegments
Trk::Track * mergeSegments(const Trk::Track &, const Trk::TrackSegment &) const
Protected methods
Definition: TRT_SeededTrackFinder.cxx:503
InDet::TRT_SeededTrackFinder::m_fitterTool
ToolHandle< Trk::ITrackFitter > m_fitterTool
Definition: TRT_SeededTrackFinder.h:106
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
InDet::TRT_SeededTrackFinder::m_regionSelector
ToolHandle< IRegSelTool > m_regionSelector
Definition: TRT_SeededTrackFinder.h:142
InDet::TRT_SeededTrackFinder::m_trtExtension
ToolHandle< ITRT_TrackExtensionTool > m_trtExtension
Definition: TRT_SeededTrackFinder.h:109
Trk::Segment::measurement
const MeasurementBase * measurement(unsigned int) const
returns the Trk::MeasurementBase objects depending on the integer
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:184
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
RoiDescriptor::clear
void clear()
clear the vector
Definition: RoiDescriptor.h:151
InDet::TRT_SeededTrackFinder::m_deltaEta
FloatProperty m_deltaEta
Definition: TRT_SeededTrackFinder.h:146
RoiDescriptor
Describes the Region of Ineterest geometry It has basically 9 parameters.
Definition: RoiDescriptor.h:40
InDet::TRT_SeededTrackFinder::Stat_t::kNTrtExt
@ kNTrtExt
Number of times the TRT extension is called.
Definition: TRT_SeededTrackFinder.h:167
Trk::TrackSegment::associatedSurface
const Surface & associatedSurface() const override final
returns the surface for the local to global transformation
Definition: TrackSegment.h:112
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
InDet::TRT_SeededTrackFinder::Stat_t::kNTrtFailSel
@ kNTrtFailSel
Number of TRT segments to be investigated per event
Definition: TRT_SeededTrackFinder.h:158
DataVector< const Trk::TrackStateOnSurface >
beamspotman.stat
stat
Definition: beamspotman.py:266
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
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
InDet::TRT_SeededTrackFinder::Stat_t::kNBckTrkSi
@ kNBckTrkSi
Number of failed TRT extensions.
Definition: TRT_SeededTrackFinder.h:170
Trk::Track::perigeeParameters
const Perigee * perigeeParameters() const
return Perigee.
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:163
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
InDet::TRT_SeededTrackFinder::m_SiExtensionCuts
BooleanProperty m_SiExtensionCuts
Definition: TRT_SeededTrackFinder.h:128
Trk::SurfaceType::Perigee
@ Perigee
InDet::ExtendedSiCombinatorialTrackFinderData_xk
Definition: TRT_SeededTrackFinder.cxx:100
ReadCellNoiseFromCoolCompare.s3
s3
Definition: ReadCellNoiseFromCoolCompare.py:380
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
InDet::TRT_SeededTrackFinder::m_maxRPhiImp
DoubleProperty m_maxRPhiImp
Definition: TRT_SeededTrackFinder.h:132
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
InDet::TRT_SeededTrackFinder::dumpevent
MsgStream & dumpevent(MsgStream &out, const InDet::TRT_SeededTrackFinder::Stat_t &stat) const
Definition: TRT_SeededTrackFinder.cxx:461
Trk::d0
@ d0
Definition: ParamDefs.h:63
Trk::FitQuality::uniqueClone
std::unique_ptr< FitQuality > uniqueClone() const
NVI uniqueClone.
InDet::TRT_SeededTrackFinder::m_trackmaker
ToolHandle< ITRT_SeededTrackFinder > m_trackmaker
Definition: TRT_SeededTrackFinder.h:103
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
Trk::TrackInfo::TRTSeededTrackFinder
@ TRTSeededTrackFinder
Tracks from TRT Seeded Track finder.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:114
InDet::TRT_SeededTrackFinder::m_maxZImp
DoubleProperty m_maxZImp
Definition: TRT_SeededTrackFinder.h:134
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDet::TRT_SeededTrackFinder::m_prdToTrackMap
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
Definition: TRT_SeededTrackFinder.h:119
InDet::TRT_SeededTrackFinder::segToTrack
Trk::Track * segToTrack(const EventContext &, const Trk::TrackSegment &) const
Transform a TRT track segment into a track
Definition: TRT_SeededTrackFinder.cxx:561
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition: MeasurementBase.h:132
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
InDet::TRT_SeededTrackFinder::dumptools
MsgStream & dumptools(MsgStream &out) const
Definition: TRT_SeededTrackFinder.cxx:430
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
re
const boost::regex re(r_e)
DEBUG
#define DEBUG
Definition: page_access.h:11
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
InDet::TRT_SeededTrackFinder::m_minTRTonSegment
UnsignedIntegerProperty m_minTRTonSegment
Definition: TRT_SeededTrackFinder.h:98
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
InDet::TRT_SeededTrackFinder::m_rejectShortExten
BooleanProperty m_rejectShortExten
Definition: TRT_SeededTrackFinder.h:89
RoiDescriptor::setComposite
void setComposite(bool b=true)
Definition: RoiDescriptor.h:138
InDet::TRT_SeededTrackFinder::m_doStat
BooleanProperty m_doStat
Definition: TRT_SeededTrackFinder.h:91
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
InDet::TRT_SeededTrackFinder::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: TRT_SeededTrackFinder.h:125
InDet::TRT_SeededTrackFinder::m_caloClusterROIKey
SG::ReadHandleKey< ROIPhiRZContainer > m_caloClusterROIKey
Definition: TRT_SeededTrackFinder.h:138
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
InDet::TRT_SeededTrackFinder::m_minTRTonly
UnsignedIntegerProperty m_minTRTonly
Definition: TRT_SeededTrackFinder.h:100
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::Surface::type
constexpr virtual SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
python.trfValidateRootFile.rc
rc
Definition: trfValidateRootFile.py:355
ROIPhiRZ
Definition: ROIPhiRZContainer.h:19
Trk::StraightLineSurface
Definition: StraightLineSurface.h:51
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
InDet::SiClusterOnTrack
Definition: SiClusterOnTrack.h:39
ServiceHandle< ICondSvc >