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

bool m_doRefit
 
bool m_doExtension
 Do final careful refit of tracks. More...
 
bool m_rejectShortExten
 Find the TRT extension of the Si track segment. More...
 
bool m_doStat
 use extension only if better than original track More...
 
bool m_saveTRT
 Statistics of final tracks. More...
 
int m_MaxSegNum
 Output stand-alone TRT segments. More...
 
unsigned int m_minTRTonSegment
 Maximum number of segments to be handled. More...
 
unsigned int m_minTRTonly
 Minimum number of TRT hits on segment. More...
 
ToolHandle< ITRT_SeededTrackFinderm_trackmaker
 Minimum number of TRT hits on TRT only. More...
 
ToolHandle< Trk::ITrackFitterm_fitterTool
 Track maker tool. More...
 
ToolHandle< ITRT_TrackExtensionToolm_trtExtension
 Refitting tool. More...
 
SG::ReadHandleKey< Trk::SegmentCollectionm_SegmentsKey
 
SG::WriteHandleKey< TrackCollectionm_outTracksKey
 TRT segments to use. More...
 
SG::ReadHandleKey< Trk::PRDtoTrackMapm_prdToTrackMap
 
ToolHandle< Trk::IExtendedTrackSummaryToolm_trackSummaryTool
 
ToolHandle< Trk::IExtrapolatorm_extrapolator
 the extrapoator More...
 
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey
 
bool m_SiExtensionCuts
 enable cuts after Si segment finding More...
 
double m_minPt
 minimal Pt cut More...
 
double m_maxEta
 maximal Eta cut More...
 
double m_maxRPhiImp
 maximal RPhi impact parameter cut More...
 
double m_maxZImp
 maximal z impact parameter cut More...
 
bool m_caloSeededRoI
 
SG::ReadHandleKey< ROIPhiRZContainerm_caloClusterROIKey
 
ToolHandle< IRegSelToolm_regionSelector
 
float m_deltaEta
 delta Eta used for RoI creation More...
 
float m_deltaPhi
 delta Phi used for RoI creation More...
 
float m_deltaZ
 delta Z used for RoI creation More...
 
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  m_trackmaker("InDet::TRT_SeededTrackFinderTool"),
42  m_fitterTool("Trk::GlobalChi2Fitter/InDetTrackFitter"),
43  m_SegmentsKey("TRTSegments"),
44  m_outTracksKey("TRTSeededTracks")
45 {
46  m_doRefit = false ; //Do a final careful refit of tracks
47  m_doExtension = false ; //Find the track TRT extension
48  m_rejectShortExten = false ;
49  m_doStat = false ; //Statistics of final tracks
50  m_saveTRT = true ; //Save stand-alone TRT segments
51  m_MaxSegNum = 5000 ;
52 
53  declareProperty("TrackTool" ,m_trackmaker ); //Back tracking tool
54  declareProperty("RefitterTool" ,m_fitterTool ); //Track refit tool
55  declareProperty("InputSegmentsLocation" ,m_SegmentsKey ); //Input track collection
56  declareProperty("OutputTracksLocation" ,m_outTracksKey ); //Output track collection
57  declareProperty("FinalRefit" ,m_doRefit ); //Do a final careful refit of tracks
58  declareProperty("TrtExtension" ,m_doExtension ); //Find the TRT extension of the track
59  declareProperty("RejectShortExtension" ,m_rejectShortExten ); //Reject short extensions
60  declareProperty("FinalStatistics" ,m_doStat ); //Statistics of final tracks
61  declareProperty("OutputSegments" ,m_saveTRT ); //Save stand-alone TRT segments
62  declareProperty("MaxNumberSegments" ,m_MaxSegNum ); //Maximum Number of segments to be handled
63  declareProperty("MinTRTonSegment" ,m_minTRTonSegment = 10); //Minimum Number of Hits on segment
64  declareProperty("MinTRTonly" ,m_minTRTonly = 15); //Minimum Number of Hits on TRT only
65  // --- selection cuts after SI extension
66  declareProperty("SiExtensionCuts", m_SiExtensionCuts = false);
67  declareProperty("minPt" ,m_minPt = 500. );
68  declareProperty("maxEta" ,m_maxEta = 2.7 );
69  declareProperty("maxRPhiImp" ,m_maxRPhiImp = 10. );
70  declareProperty("maxZImp" ,m_maxZImp = 250. );
71  declareProperty("Extrapolator" ,m_extrapolator );
72  declareProperty("CaloSeededRoI" ,m_caloSeededRoI=false );
73  declareProperty("dEtaCaloRoI" ,m_deltaEta=0.1 );
74  declareProperty("dPhiCaloRoI" ,m_deltaPhi=0.25 );
75  declareProperty("dZCaloRoI" ,m_deltaZ=300 );
76 }

◆ ~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 701 of file TRT_SeededTrackFinder.cxx.

701  {
702  if(msgLvl(MSG::DEBUG)) {
703  ATH_MSG_DEBUG( "Analyzing tracks..." );
704  ATH_MSG_DEBUG( "Number of back tracks " << (tC->size()) );
705  int nsct1{}, nsct2{}, nsct3{}, nsct4{}; //SCT layer counters
706  int nsctTot1{}, nsctTot2{}, nsctTot3{}, nsctTot4{}; //SCT layer counters
707  int npix1{}, npix2{}, npix3{}; //Pixel layer counters
708  int npixTot1{}, npixTot2{}, npixTot3{}; //Pixel layer counters
710  TrackCollection::const_iterator r = tC->begin();
712  for (; r != re ; ++r){
713  nsct1=nsct2=nsct3=nsct4=0; npix1=npix2=npix3=0;
714  const Trk::TrackStates* newtsos = (*r)->trackStateOnSurfaces();
715  if(!newtsos) continue;
716  Trk::TrackStates::const_iterator itp, itpe=newtsos->end();
717  for(itp=newtsos->begin(); itp!=itpe; ++itp){
719  const InDet::SiClusterOnTrack* clus = dynamic_cast<const InDet::SiClusterOnTrack*>((*itp)->measurementOnTrack());
720  if(clus && ((*itp)->type(Trk::TrackStateOnSurface::Measurement))){ //Count the number of hits used in the track
721  double rc = clus->globalPosition().perp();
722  if((40.<=rc)&&(rc<80.)){npix1++;} //1st pixel layer
723  if((80.<=rc)&&(rc<100.)){npix2++;} //2nd pixel layer
724  if((100.<=rc)&&(rc<150.)){npix3++;} //3rd pixel layer
725  if((280.<=rc)&&(rc<340.)){nsct1++;} //1st SCT layer
726  if((340.<=rc)&&(rc<390.)){nsct2++;} //2nd SCT layer
727  if((390.<=rc)&&(rc<460.)){nsct3++;} //3rd SCT layer
728  if((460.<=rc)&&(rc<550.)){nsct4++;} //4th SCT layer
729  }
730  }
731  nsctTot1+=nsct1; nsctTot2+=nsct2; nsctTot3+=nsct3; nsctTot4+=nsct4;
732  npixTot1+=npix1; npixTot2+=npix2; npixTot3+=npix3;
733  }
734  ATH_MSG_DEBUG("Total hits on 1st SCT: "<<nsctTot1<<" 2nd SCT: "<<nsctTot2<<" 3rd SCT: "<<nsctTot3<<" 4th SCT: "<<nsctTot4);
735  ATH_MSG_DEBUG("Total hits on 1st Pixel: "<<npixTot1<<" 2nd Pixel: "<<npixTot2<<" 3rd Pixel: "<<npixTot3);
736  }
737 }

◆ 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 494 of file TRT_SeededTrackFinder.cxx.

495 {
496  out<<"|-------------------------------------------------------------------"<<std::endl;
497  out<<"| Investigated :"<<std::endl
498  <<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtSeg] <<" TRT Segments on input"<<std::endl
499  <<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtFailSel] <<" TRT Segments fail selection on input"<<std::endl
500  <<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNTrtSegGood] <<" TRT Segments after selection"<<std::endl;
501  if (stat.m_counter[Stat_t::kNTrtLimit]>0) {
502  out<<"|-------------------------------------------------------------------"<<std::endl;
503  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtLimit] <<" TRT segments lost because of processing limit"<<std::endl;
504  }
505  out<<"|-------------------------------------------------------------------"<<std::endl;
506  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtNoSiExt] <<" TRT segments without Si extension"<<std::endl;
507  if (m_SiExtensionCuts) {
508  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNExtCut] <<" number of Si extension failing cuts"<<std::endl;
509  }
510  if (stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt]>0) {
511  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNBckTrkTrt] <<" number ot TRT only tracks created"<<std::endl;
512  }
513  if (m_doExtension) {
514  out<<"|-------------------------------------------------------------------"<<std::endl;
515  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNTrtExtCalls]<<" number of times TRT extension is called"<<std::endl
516  <<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNTrtExt] <<" number of good TRT extension"<<std::endl;
517  if (m_rejectShortExten) {
518  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNTrtExtBad]<<" number of bad TRT extension"<<std::endl;
519  }
520  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNTrtExtFail]<<" number of failed TRT extension and fallback"<<std::endl;
521  }
522  out<<"|-------------------------------------------------------------------"<<std::endl;
523  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::Stat_t::kNBckTrkSi] <<" TRT+Si tracks created of output"<<std::endl;
524  if (stat.m_counter[Stat_t::kNBckTrkSi] != stat.m_counter[Stat_t::kNBckTrk]) {
525  out<<"| "<<std::setw(7)<<stat.m_counter[Stat_t::kNBckTrk] <<" total number of tracks on output"<<std::endl;
526  }
527  out<<"|-------------------------------------------------------------------";
528  return out;
529 }

◆ dumptools()

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

Definition at line 463 of file TRT_SeededTrackFinder.cxx.

464 {
465  int n = 65-m_trackmaker.type().size();
466  std::string s1; for(int i=0; i<n; ++i) s1.append(" "); s1.append("|");
467  n = 65-m_fitterTool.type().size();
468  std::string s2; for(int i=0; i<n; ++i) s2.append(" "); s2.append("|");
469  n = 65-m_trtExtension.type().size();
470  std::string s3; for(int i=0; i<n; ++i) s3.append(" "); s3.append("|");
471  n = 65-m_SegmentsKey.key().size();
472  std::string s4; for(int i=0; i<n; ++i) s4.append(" "); s4.append("|");
473  n = 65-m_outTracksKey.key().size();
474  std::string s5; for(int i=0; i<n; ++i) s5.append(" "); s5.append("|");
475 
476  out<<"|----------------------------------------------------------------------"
477  <<"-------------------|"
478  <<std::endl;
479  out<<"| Tool for TRT seeded track finding | "<<m_trackmaker.type() <<s1<<std::endl;
480  out<<"| Tool for final track refitting | "<<m_fitterTool.type() <<s2<<std::endl;
481  out<<"| Tool for TRT trac extension | "<<m_trtExtension.type() <<s3<<std::endl;
482  out<<"| Location of input tracks | "<<m_SegmentsKey.key() <<s4<<std::endl;
483  out<<"| Location of output tracks | "<<m_outTracksKey.key() <<s5<<std::endl;
484  out<<"|----------------------------------------------------------------------"
485  <<"-------------------|"
486  <<std::endl;
487  return out;
488 }

◆ 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 153 of file TRT_SeededTrackFinder.cxx.

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

◆ 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 448 of file TRT_SeededTrackFinder.cxx.

449 {
450  if(msgLvl(MSG::INFO)){
451  msg(MSG::INFO) << "\n";
452  dumpevent(msg(MSG::INFO), m_totalStat);
453  msg(MSG::INFO) << endmsg;
454  }
455  return StatusCode::SUCCESS;
456 }

◆ initialize()

StatusCode InDet::TRT_SeededTrackFinder::initialize ( )
override

TRT segments to use

Definition at line 82 of file TRT_SeededTrackFinder.cxx.

83 {
84 
85  //Get the TRT seeded track maker tool
86  //
87  ATH_CHECK(m_trackmaker.retrieve());
88 
89  //Get the refitting tool
90  //
91  ATH_CHECK( m_fitterTool.retrieve( DisableTool{ !m_doRefit } ));
92  ATH_CHECK( m_extrapolator.retrieve( DisableTool{ !m_SiExtensionCuts } ));
94 
95  // optional PRD to track association map
97 
98  ATH_CHECK( m_trackSummaryTool.retrieve( DisableTool{ m_trackSummaryTool.name().empty() } ) );
99 
100  // Get tool for track extension to TRT
101  //
102  ATH_CHECK( m_trtExtension.retrieve( DisableTool{ !m_doExtension} ));
103 
104 
105  ATH_CHECK( m_SegmentsKey.initialize()) ;
106  ATH_CHECK( m_outTracksKey.initialize());
107 
109 
110  if(m_caloSeededRoI){
111  ATH_CHECK( m_regionSelector.retrieve());
112  } else {
113  m_regionSelector.disable();
114  }
115 
116  // Get output print level
117  //
118  if(msgLvl(MSG::DEBUG)) {
120  }
121  //Global counters. See the include file for definitions
122  m_totalStat = Stat_t();
123  return StatusCode::SUCCESS;
124 }

◆ 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 652 of file TRT_SeededTrackFinder.cxx.

653  {
654  // TSOS from the track
655  const Trk::TrackStates* stsos = tT.trackStateOnSurfaces();
656  // fitQuality from track
657  auto fq = tT.fitQuality()->uniqueClone();
658  // output datavector of TSOS
659  auto ntsos = std::make_unique<Trk::TrackStates>();
660  // copy track Si states into track
662  for (p_stsos = stsos->begin(); p_stsos != stsos->end(); ++p_stsos) {
663  ntsos->push_back((*p_stsos)->clone());
664  }
665  // loop over TRT track extension
666  for (auto & it : tS) {
667  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
668  typePattern.set(Trk::TrackStateOnSurface::Measurement);
669  const Trk::TrackStateOnSurface* seg_tsos = new Trk::TrackStateOnSurface(it->uniqueClone(), nullptr, nullptr, typePattern);
670  ntsos->push_back(seg_tsos);
671  }
674  info.setPatternRecognitionInfo(Trk::TrackInfo::TRTSeededTrackFinder);
675  std::unique_ptr<Trk::Track> newTrack( std::make_unique<Trk::Track>(info, std::move(ntsos), std::move(fq)) );
676  //Careful refitting at the end
677  if (m_doRefit) {
678  newTrack = (m_fitterTool->fit(Gaudi::Hive::currentContext(),*newTrack, false, Trk::pion) ) ;
679  if (!newTrack) {
680  ATH_MSG_DEBUG ("Refit of TRT+Si track segment failed!");
681  return nullptr;
682  }
683  //Protect for tracks that have no really defined locz and theta parameters
684  const Trk::Perigee* perTrack=newTrack->perigeeParameters();
685  if (perTrack) {
686  const AmgSymMatrix(5)* CM = perTrack->covariance();
687  if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
688  return nullptr;
689  }
690  }
691  }
692 
693  return newTrack.release();
694 }

◆ 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 536 of file TRT_SeededTrackFinder.cxx.

536  {
537  // TSOS from the track
538  const Trk::TrackStates* stsos = tT.trackStateOnSurfaces();
539  // fitQuality from track
540  auto fq = tT.fitQuality()->uniqueClone();
541  // output datavector of TSOS
542  auto ntsos = std::make_unique<Trk::TrackStates>();
543  int siHits = 0;
544  // copy track Si states into track
546  for (p_stsos=stsos->begin(); p_stsos != stsos->end(); ++p_stsos) {
547  ntsos->push_back( (*p_stsos)->clone() );
548  if ((*p_stsos)->type(Trk::TrackStateOnSurface::Measurement)) siHits++;
549  }
550  // loop over segment
551  for (int it = 0; it < int(tS.numberOfMeasurementBases()); it++) {
552  //test if it is a pseudo measurement
553  if ( dynamic_cast<const Trk::PseudoMeasurementOnTrack*>(tS.measurement(it)) ) {
554  if (siHits < 4) {
555  ATH_MSG_DEBUG ("Too few Si hits.Will keep pseudomeasurement...");
556  const Trk::TrackStateOnSurface* seg_tsos = new Trk::TrackStateOnSurface(tS.measurement(it)->uniqueClone(), nullptr);
557  ntsos->push_back(seg_tsos);
558  }
559  } else {
560  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
561  typePattern.set(Trk::TrackStateOnSurface::Measurement);
562  const Trk::TrackStateOnSurface* seg_tsos = new Trk::TrackStateOnSurface(tS.measurement(it)->uniqueClone(), nullptr, nullptr, typePattern);
563  ntsos->push_back(seg_tsos);
564  }
565  }
566 
569  info.setPatternRecognitionInfo(Trk::TrackInfo::TRTSeededTrackFinder);
570  std::unique_ptr<Trk::Track> newTrack(std::make_unique<Trk::Track>(info, std::move(ntsos), std::move(fq)));
571 
572  //Careful refitting at the end
573  if (m_doRefit) {
574  newTrack=m_fitterTool->fit(Gaudi::Hive::currentContext(),*newTrack, false, Trk::pion);
575  if (!newTrack) {
576  ATH_MSG_DEBUG ("Refit of TRT+Si track segment failed!");
577  return nullptr;
578  }
579  const Trk::Perigee* perTrack=newTrack->perigeeParameters();
580  if (perTrack) {
581  const AmgSymMatrix(5)* CM = perTrack->covariance();
582  if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
583  return nullptr;
584  }
585  }
586  }
587  return newTrack.release();
588 }

◆ 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 594 of file TRT_SeededTrackFinder.cxx.

594  {
595  ATH_MSG_DEBUG ("Transforming the TRT segment into a track...");
596 
597  //Get the track segment information and build the initial track parameters
598  const Trk::StraightLineSurface* surf = dynamic_cast<const Trk::StraightLineSurface*>(&(tS.associatedSurface()));
599  if (!surf) {
600  throw std::logic_error("Unhandled surface.");
601  }
602  const AmgVector(5)& p = tS.localParameters();
603  AmgSymMatrix(5) ep = AmgSymMatrix(5)(tS.localCovariance());
604  auto ntsos = std::make_unique<Trk::TrackStates>();
605  std::unique_ptr<Trk::TrackParameters> segPar =
606  surf->createUniqueParameters<5, Trk::Charged>(
607  p(0), p(1), p(2), p(3), p(4), std::move(ep));
608  if (segPar) {
609  ATH_MSG_DEBUG( "Initial TRT Segment Parameters for refitting " << (*segPar) );
610  } else {
611  ATH_MSG_DEBUG( "Could not get initial TRT segment parameters! " );
612  return nullptr;
613  }
614  for (int it = 0; it < int(tS.numberOfMeasurementBases()); it++) {
615  // on first measurement add parameters
616  const Trk::TrackStateOnSurface* seg_tsos = nullptr;
617  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
618  typePattern.set(Trk::TrackStateOnSurface::Measurement);
619  if (it == 0){
620  seg_tsos = new Trk::TrackStateOnSurface(tS.measurement(it)->uniqueClone(), std::move(segPar), nullptr, typePattern);
621  } else {
622  seg_tsos = new Trk::TrackStateOnSurface(tS.measurement(it)->uniqueClone(), nullptr, nullptr, typePattern);
623  }
624  ntsos->push_back(seg_tsos);
625  }
627  info.setPatternRecognitionInfo(Trk::TrackInfo::TRTSeededTrackFinder);
628  std::unique_ptr<Trk::Track> newTrack = std::make_unique<Trk::Track>(info, std::move(ntsos), nullptr);
629  // Careful refitting of the TRT stand alone track
630  if (m_doRefit) {
631  newTrack = m_fitterTool->fit(ctx,*newTrack, false, Trk::pion);
632  if (!newTrack) {
633  ATH_MSG_DEBUG ("Refit of TRT track segment failed!");
634  return nullptr;
635  }
636  //Protect for tracks that have no really defined locz and theta parameters
637  const Trk::Perigee* perTrack=newTrack->perigeeParameters();
638  if (perTrack) {
639  const AmgSymMatrix(5)* CM = perTrack->covariance();
640  if (!CM || std::sqrt((*CM)(1,1)) == 0. || std::sqrt((*CM)(3,3)) == 0.) {
641  return nullptr;
642  }
643  }
644  }
645  return newTrack.release();
646 }

◆ 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 180 of file TRT_SeededTrackFinder.h.

◆ ATLAS_THREAD_SAFE [2/2]

Stat_t m_totalStat InDet::TRT_SeededTrackFinder::ATLAS_THREAD_SAFE
mutableprotected

Definition at line 181 of file TRT_SeededTrackFinder.h.

◆ m_beamSpotKey

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

Definition at line 116 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 129 of file TRT_SeededTrackFinder.h.

◆ m_caloSeededRoI

bool InDet::TRT_SeededTrackFinder::m_caloSeededRoI
protected

Definition at line 128 of file TRT_SeededTrackFinder.h.

◆ m_deltaEta

float InDet::TRT_SeededTrackFinder::m_deltaEta
protected

delta Eta used for RoI creation

Definition at line 143 of file TRT_SeededTrackFinder.h.

◆ m_deltaPhi

float InDet::TRT_SeededTrackFinder::m_deltaPhi
protected

delta Phi used for RoI creation

Definition at line 144 of file TRT_SeededTrackFinder.h.

◆ m_deltaZ

float InDet::TRT_SeededTrackFinder::m_deltaZ
protected

delta Z used for RoI creation

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

bool InDet::TRT_SeededTrackFinder::m_doExtension
protected

Do final careful refit of tracks.

Definition at line 85 of file TRT_SeededTrackFinder.h.

◆ m_doRefit

bool InDet::TRT_SeededTrackFinder::m_doRefit
protected

Definition at line 84 of file TRT_SeededTrackFinder.h.

◆ m_doStat

bool InDet::TRT_SeededTrackFinder::m_doStat
protected

use extension only if better than original track

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

the extrapoator

Definition at line 115 of file TRT_SeededTrackFinder.h.

◆ m_fitterTool

ToolHandle<Trk::ITrackFitter> InDet::TRT_SeededTrackFinder::m_fitterTool
protected

Track maker tool.

Definition at line 94 of file TRT_SeededTrackFinder.h.

◆ m_maxEta

double InDet::TRT_SeededTrackFinder::m_maxEta
protected

maximal Eta cut

Definition at line 124 of file TRT_SeededTrackFinder.h.

◆ m_maxRPhiImp

double InDet::TRT_SeededTrackFinder::m_maxRPhiImp
protected

maximal RPhi impact parameter cut

Definition at line 125 of file TRT_SeededTrackFinder.h.

◆ m_MaxSegNum

int InDet::TRT_SeededTrackFinder::m_MaxSegNum
protected

Output stand-alone TRT segments.

Definition at line 89 of file TRT_SeededTrackFinder.h.

◆ m_maxZImp

double InDet::TRT_SeededTrackFinder::m_maxZImp
protected

maximal z impact parameter cut

Definition at line 126 of file TRT_SeededTrackFinder.h.

◆ m_minPt

double InDet::TRT_SeededTrackFinder::m_minPt
protected

minimal Pt cut

Definition at line 123 of file TRT_SeededTrackFinder.h.

◆ m_minTRTonly

unsigned int InDet::TRT_SeededTrackFinder::m_minTRTonly
protected

Minimum number of TRT hits on segment.

Definition at line 91 of file TRT_SeededTrackFinder.h.

◆ m_minTRTonSegment

unsigned int InDet::TRT_SeededTrackFinder::m_minTRTonSegment
protected

Maximum number of segments to be handled.

Definition at line 90 of file TRT_SeededTrackFinder.h.

◆ m_outTracksKey

SG::WriteHandleKey<TrackCollection> InDet::TRT_SeededTrackFinder::m_outTracksKey
protected

TRT segments to use.

Definition at line 104 of file TRT_SeededTrackFinder.h.

◆ m_prdToTrackMap

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

Definition at line 106 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 136 of file TRT_SeededTrackFinder.h.

◆ m_rejectShortExten

bool InDet::TRT_SeededTrackFinder::m_rejectShortExten
protected

Find the TRT extension of the Si track segment.

Definition at line 86 of file TRT_SeededTrackFinder.h.

◆ m_saveTRT

bool InDet::TRT_SeededTrackFinder::m_saveTRT
protected

Statistics of final tracks.

Definition at line 88 of file TRT_SeededTrackFinder.h.

◆ m_SegmentsKey

SG::ReadHandleKey<Trk::SegmentCollection> InDet::TRT_SeededTrackFinder::m_SegmentsKey
protected

Definition at line 103 of file TRT_SeededTrackFinder.h.

◆ m_SiExtensionCuts

bool InDet::TRT_SeededTrackFinder::m_SiExtensionCuts
protected

enable cuts after Si segment finding

Definition at line 122 of file TRT_SeededTrackFinder.h.

◆ m_trackmaker

ToolHandle<ITRT_SeededTrackFinder> InDet::TRT_SeededTrackFinder::m_trackmaker
protected

Minimum number of TRT hits on TRT only.

Definition at line 93 of file TRT_SeededTrackFinder.h.

◆ m_trackSummaryTool

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

Definition at line 109 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 "
}

Refitting tool.

Definition at line 95 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::m_minTRTonly
unsigned int m_minTRTonly
Minimum number of TRT hits on segment.
Definition: TRT_SeededTrackFinder.h:91
InDet::TRT_SeededTrackFinder::Stat_t::kNTrtSeg
@ kNTrtSeg
Definition: TRT_SeededTrackFinder.h:151
InDet::TRT_SeededTrackFinder::m_maxEta
double m_maxEta
maximal Eta cut
Definition: TRT_SeededTrackFinder.h:124
InDet::TRT_SeededTrackFinder::Stat_t::kNTrtNoSiExt
@ kNTrtNoSiExt
Number of TRT segments lost in busy events.
Definition: TRT_SeededTrackFinder.h:156
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:653
InDet::TRT_SeededTrackFinder::m_SegmentsKey
SG::ReadHandleKey< Trk::SegmentCollection > m_SegmentsKey
Definition: TRT_SeededTrackFinder.h:103
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
InDet::TRT_SeededTrackFinder::m_deltaZ
float m_deltaZ
delta Z used for RoI creation
Definition: TRT_SeededTrackFinder.h:145
InDet::TRT_SeededTrackFinder::m_doStat
bool m_doStat
use extension only if better than original track
Definition: TRT_SeededTrackFinder.h:87
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
TRT segments to use.
Definition: TRT_SeededTrackFinder.h:104
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
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
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:79
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< AthCommonMsg< Gaudi::Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::Track::trackStateOnSurfaces
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
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:109
skel.it
it
Definition: skel.GENtoEVGEN.py:423
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
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:155
InDet::TRT_SeededTrackFinder::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
the extrapoator
Definition: TRT_SeededTrackFinder.h:115
Trk::z0
@ z0
Definition: ParamDefs.h:70
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDet::TRT_SeededTrackFinder::m_SiExtensionCuts
bool m_SiExtensionCuts
enable cuts after Si segment finding
Definition: TRT_SeededTrackFinder.h:122
InDet::TRT_SeededTrackFinder::Stat_t::kNExtCut
@ kNExtCut
Number of TRT segments not extended in Si.
Definition: TRT_SeededTrackFinder.h:157
ReadCellNoiseFromCoolCompare.s4
s4
Definition: ReadCellNoiseFromCoolCompare.py:381
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::TrackSegment
Definition: TrackSegment.h:56
InDet::TRT_SeededTrackFinder::m_doRefit
bool m_doRefit
Definition: TRT_SeededTrackFinder.h:84
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
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
InDet::TRT_SeededTrackFinder::m_minPt
double m_minPt
minimal Pt cut
Definition: TRT_SeededTrackFinder.h:123
PUClassification.Charged
Charged
Definition: PUClassification.py:16
InDet::TRT_SeededTrackFinder::m_MaxSegNum
int m_MaxSegNum
Output stand-alone TRT segments.
Definition: TRT_SeededTrackFinder.h:89
InDet::TRT_SeededTrackFinder::m_maxZImp
double m_maxZImp
maximal z impact parameter cut
Definition: TRT_SeededTrackFinder.h:126
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Trk::Segment::numberOfMeasurementBases
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)
Definition: 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
Trk::PseudoMeasurementOnTrack
Class to handle pseudo-measurements in fitters and on track objects.
Definition: PseudoMeasurementOnTrack.h:44
InDet::TRT_SeededTrackFinder::m_maxRPhiImp
double m_maxRPhiImp
maximal RPhi impact parameter cut
Definition: TRT_SeededTrackFinder.h:125
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:701
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:165
lumiFormat.i
int i
Definition: lumiFormat.py:92
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:536
InDet::TRT_SeededTrackFinder::m_fitterTool
ToolHandle< Trk::ITrackFitter > m_fitterTool
Track maker tool.
Definition: TRT_SeededTrackFinder.h:94
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:136
InDet::TRT_SeededTrackFinder::m_doExtension
bool m_doExtension
Do final careful refit of tracks.
Definition: TRT_SeededTrackFinder.h:85
InDet::TRT_SeededTrackFinder::m_trtExtension
ToolHandle< ITRT_TrackExtensionTool > m_trtExtension
Refitting tool.
Definition: TRT_SeededTrackFinder.h:95
Trk::Segment::measurement
const MeasurementBase * measurement(unsigned int) const
returns the Trk::MeasurementBase objects depending on the integer
Definition: 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
RoiDescriptor
Describes the Region of Ineterest geometry It has basically 9 parameters.
Definition: RoiDescriptor.h:40
InDet::TRT_SeededTrackFinder::m_deltaEta
float m_deltaEta
delta Eta used for RoI creation
Definition: TRT_SeededTrackFinder.h:143
InDet::TRT_SeededTrackFinder::Stat_t::kNTrtExt
@ kNTrtExt
Number of times the TRT extension is called.
Definition: TRT_SeededTrackFinder.h:161
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:152
DataVector< const Trk::TrackStateOnSurface >
beamspotman.stat
stat
Definition: beamspotman.py:266
InDet::TRT_SeededTrackFinder::m_minTRTonSegment
unsigned int m_minTRTonSegment
Maximum number of segments to be handled.
Definition: TRT_SeededTrackFinder.h:90
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:164
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
Trk::SurfaceType::Perigee
@ Perigee
InDet::ExtendedSiCombinatorialTrackFinderData_xk
Definition: TRT_SeededTrackFinder.cxx:135
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
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
InDet::TRT_SeededTrackFinder::dumpevent
MsgStream & dumpevent(MsgStream &out, const InDet::TRT_SeededTrackFinder::Stat_t &stat) const
Definition: TRT_SeededTrackFinder.cxx:494
Trk::d0
@ d0
Definition: ParamDefs.h:69
Trk::FitQuality::uniqueClone
std::unique_ptr< FitQuality > uniqueClone() const
NVI uniqueClone.
InDet::TRT_SeededTrackFinder::m_trackmaker
ToolHandle< ITRT_SeededTrackFinder > m_trackmaker
Minimum number of TRT hits on TRT only.
Definition: TRT_SeededTrackFinder.h:93
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
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:106
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:594
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition: MeasurementBase.h:132
InDet::TRT_SeededTrackFinder::m_caloSeededRoI
bool m_caloSeededRoI
Definition: TRT_SeededTrackFinder.h:128
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
InDet::TRT_SeededTrackFinder::m_saveTRT
bool m_saveTRT
Statistics of final tracks.
Definition: TRT_SeededTrackFinder.h:88
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
InDet::TRT_SeededTrackFinder::dumptools
MsgStream & dumptools(MsgStream &out) const
Definition: TRT_SeededTrackFinder.cxx:463
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
InDet::TRT_SeededTrackFinder::m_deltaPhi
float m_deltaPhi
delta Phi used for RoI creation
Definition: TRT_SeededTrackFinder.h:144
re
const boost::regex re(r_e)
DEBUG
#define DEBUG
Definition: page_access.h:11
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
RoiDescriptor::setComposite
void setComposite(bool b=true)
Definition: RoiDescriptor.h:138
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
InDet::TRT_SeededTrackFinder::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: TRT_SeededTrackFinder.h:116
InDet::TRT_SeededTrackFinder::m_caloClusterROIKey
SG::ReadHandleKey< ROIPhiRZContainer > m_caloClusterROIKey
Definition: TRT_SeededTrackFinder.h:129
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
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::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:357
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 >
InDet::TRT_SeededTrackFinder::m_rejectShortExten
bool m_rejectShortExten
Find the TRT extension of the Si track segment.
Definition: TRT_SeededTrackFinder.h:86