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

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

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

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

◆ dumptools()

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

Definition at line 428 of file TRT_SeededTrackFinder.cxx.

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

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

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

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

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

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

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

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

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

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

◆ 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:618
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:27
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:666
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:501
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:221
InDet::TRT_SeededTrackFinder::dumpevent
MsgStream & dumpevent(MsgStream &out, const InDet::TRT_SeededTrackFinder::Stat_t &stat) const
Definition: TRT_SeededTrackFinder.cxx:459
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:559
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:428
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:349
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 >