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

#include <SimpleTRT_SeededSpacePointFinder_ATL.h>

Inheritance diagram for InDet::SimpleTRT_SeededSpacePointFinder_ATL:
Collaboration diagram for InDet::SimpleTRT_SeededSpacePointFinder_ATL:

Public Types

typedef std::list< std::pair< int, int > > modulLookupTable
 

Public Member Functions

 SimpleTRT_SeededSpacePointFinder_ATL (const std::string &, const std::string &, const IInterface *)
 
virtual ~SimpleTRT_SeededSpacePointFinder_ATL ()
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventDatanewEvent () const override
 obsolete, do not do anything. More...
 
virtual std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventDatanewRegion (const std::vector< IdentifierHash > &, const std::vector< IdentifierHash > &) const override
 
const SiSpacePointsSeednext (InDet::ITRT_SeededSpacePointFinder::IEventData &event_data) const override
 
std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > find2Sp (const EventContext &ctx, const Trk::TrackParameters &, InDet::ITRT_SeededSpacePointFinder::IEventData &event_data) const override
 main method, calls the private methods and returns a pointer to the list of SpacePointpairs. More...
 
MsgStream & dump (MsgStream &out) const override
 
std::ostream & dump (std::ostream &out) const override
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void getSpacePointsInROI (const EventContext &ctx, std::set< IdentifierHash > &setOfSCT_Hashes, int modulTRT, std::multimap< int, const Trk::SpacePoint * > &relevantSpacePoints) const
 retrieves SP Collections of modules in the ROI and sorts them by SCT layer More...
 
void getHashesInROI (const Trk::TrackParameters &directionTRT, std::set< IdentifierHash > &setOfSCT_Hashes) const
 obtains the hashes of modules in the ROI More...
 
void combineSpacePoints (const std::multimap< int, const Trk::SpacePoint * > &relevantSpacePoints, const Trk::TrackParameters &directionTRT, int modulTRT, std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > &listOfSpacePointPairsBuffer) const
 builds pairs of SP according to the kook-up table More...
 
bool pairIsOk (const Trk::SpacePoint *sp1, const Trk::SpacePoint *sp2, const Trk::TrackParameters &directionTRT) const
 applies rough cuts on the quality of a SP pair More...
 
void setupLookUpTable ()
 the name says it More...
 
void printLookupTable () const
 
int TRT_Module (const Trk::TrackParameters &directionTRT) const
 returns the number of the TRT wheel or barrel where the TP belongs to More...
 
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...
 

Static Private Member Functions

static void getSearchRange (double &deltaPhi, double &deltaEta)
 List with SP pairs as seed for the Si part of the back-track. More...
 

Private Attributes

bool m_useROI
 Controls, if SP have to be checked with the AssociationTool of the forward tracking and to avoid double use of measurements. More...
 
int m_maxHoles
 controls how many not considered SCT layers are allowed between two SP in order to form a seed pair More...
 
double m_perigeeCut
 rough cuts on the quality of the suggested SP pair More...
 
double m_directionPhiCut
 
SG::ReadHandleKey< SpacePointContainerm_spacepointsSCTname {this,"SpacePointsSCTName","SCT_SpacePoints","RHK to retrieve SCT SpacePointContainer"}
 
SG::ReadHandleKey< SpacePointOverlapCollectionm_spacepointsOverlapname {this,"SpacePointsSCTName","OverlapSpacePoints","RHK to retrieve OverlapCollection"}
 
SG::ReadHandleKey< Trk::PRDtoTrackMapm_prdToTrackMap {this,"PRDtoTrackMap",""}
 
modulLookupTable m_modulLookupTable [2 *SIMPLE_TRT_INDEX_OFFSET+1]
 Lookup table that contains the SCT Layers to be considered to provide SP for the pairing in dependence on the TRT part the track parameter is on. More...
 
std::set< int > m_modulLookupTableIndex [2 *SIMPLE_TRT_INDEX_OFFSET+1]
 
ToolHandle< IRegSelToolm_pRegionSelector { this, "RegSelTool_SCT", "RegSelTool/RegSelTool_SCT" }
 Region Selector. More...
 
const SCT_IDm_sctId
 ID SCT helper. More...
 
const TRT_IDm_trtId
 ID TRT helper. 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

Definition at line 38 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

Member Typedef Documentation

◆ modulLookupTable

typedef std::list<std::pair< int,int > > InDet::SimpleTRT_SeededSpacePointFinder_ATL::modulLookupTable

Definition at line 47 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ SimpleTRT_SeededSpacePointFinder_ATL()

InDet::SimpleTRT_SeededSpacePointFinder_ATL::SimpleTRT_SeededSpacePointFinder_ATL ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 31 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

33  : AthAlgTool(t,n,p),
34  m_useROI(true),
35  m_maxHoles(1),
36  m_perigeeCut(200),
37  m_directionPhiCut(0.05),
38  m_sctId(nullptr),
39  m_trtId(nullptr)
40 {
41 
42  declareInterface<ITRT_SeededSpacePointFinder>(this);
43 
44  declareProperty("RestrictROI" ,m_useROI );
45  declareProperty("MaxHoles" ,m_maxHoles );
46  declareProperty("PerigeeCut" ,m_perigeeCut );
47  declareProperty("DirectionPhiCut" ,m_directionPhiCut );
48 
49 }

◆ ~SimpleTRT_SeededSpacePointFinder_ATL()

InDet::SimpleTRT_SeededSpacePointFinder_ATL::~SimpleTRT_SeededSpacePointFinder_ATL ( )
virtualdefault

Member Function Documentation

◆ combineSpacePoints()

void InDet::SimpleTRT_SeededSpacePointFinder_ATL::combineSpacePoints ( const std::multimap< int, const Trk::SpacePoint * > &  relevantSpacePoints,
const Trk::TrackParameters directionTRT,
int  modulTRT,
std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > &  listOfSpacePointPairsBuffer 
) const
private

builds pairs of SP according to the kook-up table

This method combines SpacePoints contained in the first argument to pairs which are then stored in the internal list of SpacePoint pairs.

Only SpacePoints which are on two different SCT layers or wheels specified as pair in the look-up table are combined. The pairing is only accepted, if if satisfies quality cuts specified in the method pairIsOk.

The second argument specifies the TRT track parameter which is used for quality cuts on the SpacePoint pairs. The third argument specifies the part of the TRT the track parameter comes from. This number is used to inquire the relevant pairings of SCT layers from the look-up table.

Definition at line 430 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

433 {
446  if ( modulNumber+SIMPLE_TRT_INDEX_OFFSET < 29 && -1 < modulNumber+SIMPLE_TRT_INDEX_OFFSET)
447  {
448  modulLookupTable::const_iterator itTable = m_modulLookupTable[modulNumber+SIMPLE_TRT_INDEX_OFFSET].begin();
449  modulLookupTable::const_iterator endTable = m_modulLookupTable[modulNumber+SIMPLE_TRT_INDEX_OFFSET].end();
450  for ( ; itTable != endTable ; ++itTable)
451  {
452  msg(MSG::VERBOSE) << " Combining Space Poinst from modules " << itTable->first << " and " << itTable->second << endmsg;
453  // SPs from SCT layer 1
454  std::pair< std::multimap<int,const Trk::SpacePoint*>::const_iterator,
455  std::multimap<int,const Trk::SpacePoint*>::const_iterator >
456  range1 = relevantSpacePoints.equal_range(itTable->first);
457  // if (range1.second != relevantSpacePoints.end() ) ++(range1.second); // transforming the 2nd pointer to an end of range
458 
459  //SPs from SCT layer 2
460  std::pair< std::multimap<int,const Trk::SpacePoint*>::const_iterator,
461  std::multimap<int,const Trk::SpacePoint*>::const_iterator >
462  range2 = relevantSpacePoints.equal_range(itTable->second);
463  // if (range2.second != relevantSpacePoints.end() ) ++(range2.second); // transforming the 2nd pointer to an end of range
464 
465  // add the SP pairs
466  for ( std::multimap<int,const Trk::SpacePoint*>::const_iterator it1 = range1.first;
467  it1 != range1.second ; ++it1 )
468  for ( std::multimap<int,const Trk::SpacePoint*>::const_iterator it2 = range2.first;
469  it2 != range2.second ; ++it2 )
470  if ( pairIsOk(it1->second,it2->second,directionTRT) )
471  listOfSpacePointPairsBuffer.emplace_back(it2->second,it1->second);
472 
473  }
474  }
475  else
476  msg(MSG::WARNING) << "TRT module not in look-up table --> no SP pairs formed" << endmsg;
477 
478 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ dump() [1/2]

MsgStream & InDet::SimpleTRT_SeededSpacePointFinder_ATL::dump ( MsgStream &  out) const
overridevirtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 771 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

772 {
773  out << "to be implemented soon..." << std::endl;
774 
775  return out;
776 }

◆ dump() [2/2]

std::ostream & InDet::SimpleTRT_SeededSpacePointFinder_ATL::dump ( std::ostream &  out) const
overridevirtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 779 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

780 {
781  out << "to be implemented soon..." << std::endl;
782  return out;
783 }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

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

Add StoreName to extra input/output deps as needed.

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

◆ finalize()

StatusCode InDet::SimpleTRT_SeededSpacePointFinder_ATL::finalize ( )
overridevirtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 104 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

105 {
107  return sc;
108 }

◆ find2Sp()

std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > InDet::SimpleTRT_SeededSpacePointFinder_ATL::find2Sp ( const EventContext &  ctx,
const Trk::TrackParameters directionTRT,
InDet::ITRT_SeededSpacePointFinder::IEventData event_data 
) const
overridevirtual

main method, calls the private methods and returns a pointer to the list of SpacePointpairs.

The list itself is a private member of this class

The main method. This method is called from outside to form pairs of SCT SpacePoints which could seed Si tracks linked to the TRT TrackParameter given as input. iModus is a dummy variable to satisfy the interface.

This method calls several private methods to perform specific tasks. These are:

getHashesInROI : If the restriction of the Region Of Intereset is used, this method returns a set of IdHashes of SCT modules within the ROI

getSpacePointsInROI : This Method retrieves the SpacePointCollections from StoreGate and fills a map with the SpacePoints. The map key is a number which identifies the layer or disc the SpacePoint is on.

combineSpacePoints : The retrieved and sorted SpacePoints are combined to pairs. Pairs are built only of SpacePoints which are on the layer or disc pairs specified in the internal look-up table.

The method returns a pointer to an internal list of SpacePoint pairs, the list may very well be empty nevertheless.

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 122 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

125 {
146  msg(MSG::VERBOSE) << "Enter getListOfSpacePointPairs, TrackParameter given is: " << endmsg;
147  msg(MSG::VERBOSE) << directionTRT << endmsg;
148 
149  // clear output buffer
150 
151  std::list<std::pair<const Trk::SpacePoint*, const Trk::SpacePoint*> > listOfSpacePointPairsBuffer;
152 
153  // IdHash in ROI
154  std::set<IdentifierHash> setOfSCT_Hashes;
155 
156  if (m_useROI)
157  {
158  // fill IdHashes in ROI
159  getHashesInROI(directionTRT,setOfSCT_Hashes);
160  msg(MSG::VERBOSE) << "Retrieved " << setOfSCT_Hashes.size() << " potentially interesting detector elements." << endmsg;
161  }
162 
163  if ( !m_useROI || !setOfSCT_Hashes.empty())
164  {
165  // map of < SCT layer number, SP* >
166  std::multimap<int,const Trk::SpacePoint*> relevantSpacePoints;
167 
168  // fill the map of relevant SP as defined by hashes from ROI
169  int modulTRT = TRT_Module(directionTRT);
170  getSpacePointsInROI(ctx, setOfSCT_Hashes, modulTRT, relevantSpacePoints);
171 
172  msg(MSG::VERBOSE) << "Retrieved " << relevantSpacePoints.size() << " potentially interesting SpacePoints" << endmsg;
173 
174  // build pairs of the relevant SP according to the look-up table
175  combineSpacePoints(relevantSpacePoints, directionTRT, modulTRT, listOfSpacePointPairsBuffer);
176 
177  /* output for debug purposes, deactivated now. Once development is finished, it will be removed.
178  */
179  Amg::Vector3D r0 = directionTRT.position();
180  const Amg::Vector3D& v0(directionTRT.momentum());
181  msg(MSG::VERBOSE) << "------------------------------------------------------------------------------------------" << endmsg;
182  msg(MSG::VERBOSE) << "Final SpacePoint pairs: " << listOfSpacePointPairsBuffer.size() << endmsg;
183  msg(MSG::VERBOSE) << " Position of initial vector: ( " << r0.x() << ", " << r0.y() << ", "<< r0.z() << " ) " << endmsg;
184  msg(MSG::VERBOSE) << " Direction of initial vector: ( " << v0.unit().x() << ", " << v0.unit().y() << ", "<< v0.unit().z() << " ) , phi = "
185  << v0.phi() << " theta = " << v0.theta() << " eta = "<< v0.eta() << endmsg;
186  msg(MSG::VERBOSE) << "------------------------------------------------------------------------------------------" << endmsg;
187  msg(MSG::VERBOSE) << " Direction of space Point vectors: "<< endmsg;
188  msg(MSG::VERBOSE) << ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " << endmsg;
189  for (auto & it : listOfSpacePointPairsBuffer)
190  {
191  Amg::Vector3D s1 = it.first->globalPosition();
192  Amg::Vector3D s2 = it.second->globalPosition();
193  Amg::Vector3D s1s2 = s2-s1; // vector from s1 to s2
194  msg(MSG::VERBOSE) << " Positions: ( " << s1.x() << " , "<< s1.y() << " , "<< s1.z() << " ) " << endmsg;
195  msg(MSG::VERBOSE) << " ( " << s2.x() << " , "<< s2.y() << " , "<< s2.z() << " ) " << endmsg;
196  msg(MSG::VERBOSE) << " direction: ( "
197  << s1s2.unit().x() << ", " << s1s2.unit().y() << ", " << s1s2.unit().z() <<" ) , phi = "
198  << s1s2.phi() << " theta = " << s1s2.theta() << " eta = "<< s1s2.eta() << endmsg;
199  msg(MSG::VERBOSE) << ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " << endmsg;
200  }
201  msg(MSG::VERBOSE) << "------------------------------------------------------------------------------------------" << endmsg;
202  }
203 
204  return listOfSpacePointPairsBuffer;
205 }

◆ getHashesInROI()

void InDet::SimpleTRT_SeededSpacePointFinder_ATL::getHashesInROI ( const Trk::TrackParameters directionTRT,
std::set< IdentifierHash > &  setOfSCT_Hashes 
) const
private

obtains the hashes of modules in the ROI

This Method finds the IdHashes of SCT modules inside a Region Of Interest around the TRT track parameter. First the allowed tolerance in phi and eta is inquired, then a vector with the relevant hashes is retrieved from the RegionSelectorService. In order to be able to search conveniently for hashes later on, they are then copied into a STL set, which is then returned via call by reference.

Definition at line 209 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

210 {
217  //double eta = directionTRT.eta();
218  //double phi = directionTRT.position().phi();
219  double phi = directionTRT.parameters()[Trk::phi];
220  double eta = directionTRT.position().eta();
221  double deltaPhi = 0.;
222  double deltaEta = 0.;
223 
224  // define tolerance for ROI
225  //getSearchRange(directionTRT, deltaPhi, deltaEta);
227 
228  // retrieve SCT hashes in Region of interest
229  std::vector<IdentifierHash> listOfSCT_Hashes;
230 
233 
234  m_pRegionSelector->HashIDList( roi, listOfSCT_Hashes );
235 
236  // copy Hashes into Set to be able to search them
237  for (auto listOfSCT_Hashe : listOfSCT_Hashes)
238  setOfSCT_Hashes.insert(listOfSCT_Hashe);
239 }

◆ getSearchRange()

void InDet::SimpleTRT_SeededSpacePointFinder_ATL::getSearchRange ( double &  deltaPhi,
double &  deltaEta 
)
staticprivate

List with SP pairs as seed for the Si part of the back-track.

It is cleared and filled in every call of find2Sp, the pointer to it is returned. determines the width of the considered ROI around the TP. deltaPhi and deltaEta are return values

This method defines the tolerance for the ROI around the TRT track parameter. At the moment it is set constant, but it should be considered to define it in dependence on the track parameter. In order to suppress warnings for unused variables, the method signature including the track parameter as an argument is replaced for the time being by a signature without the track parameter.

Definition at line 416 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

417 {
423  // first guess: the ROI tolerance is constant
424  deltaPhi = 0.05;
425  deltaEta = .2;
426 }

◆ getSpacePointsInROI()

void InDet::SimpleTRT_SeededSpacePointFinder_ATL::getSpacePointsInROI ( const EventContext &  ctx,
std::set< IdentifierHash > &  setOfSCT_Hashes,
int  modulTRT,
std::multimap< int, const Trk::SpacePoint * > &  relevantSpacePoints 
) const
private

retrieves SP Collections of modules in the ROI and sorts them by SCT layer

This method retrieves the SpacePoints in a given region of interest. The region of interest is defined by the hashes in the first argument of the method.

The second argument specifies the part of the TRT in which the TRT track parameter is situated. This number is used to inquire the index of the look-up table, which layers of the SCT are relevant for the pair building process. Only SpacePointCollections from relevant layers or discs are looped over in order to save time.

If the restriction of the ROI is used, it is inquired for every SpacePointCollection, if the corresponding SCT module is listed in the set of IdHashes which defines the ROI. In this case, only Collections which satisfy this are looped over.

Relevant SpacePoints are then stored in a map. Key of the map is a number which identifies the SCT layer the SpacePoints are on.

In a last step, the SpacePointOverlapCollection is retrieved and looped over. SpacePoints in the ROI (if use is specified) are added to the list of SpacePoints

If the AssociationTool is used, only SpacePoints are stored, which do not contain a PRD that is not yet registered in the AssociationTool, i.e. which is not already used by the inside-out tracking.

Definition at line 243 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

247 {
265  const std::set<IdentifierHash>::const_iterator endSCT_Hashes = setOfSCT_Hashes.end();
266 
267  SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
268  const Trk::PRDtoTrackMap *prd_to_track_map_cptr = nullptr;
269  if (!m_prdToTrackMap.key().empty()) {
271  if (!prd_to_track_map.isValid()) {
272  ATH_MSG_ERROR("Failed to read PRD to track association map: " << m_prdToTrackMap.key());
273  }
274  prd_to_track_map_cptr = prd_to_track_map.cptr();
275  }
276 
277  // retrieve SP Container
279  if(spacepointsSCT.isValid())
280  {
281  // loop over SP collections in SP container
282  SpacePointContainer::const_iterator itCont = spacepointsSCT->begin();
283  SpacePointContainer::const_iterator endCont = spacepointsSCT->end ();
284  for(; itCont != endCont; ++itCont)
285  {
286  bool acceptCollection = true;
287 
288  if (m_useROI)
289  {
290  // Check if IdHash of the Collection is in the list of ROI hashes
291  IdentifierHash idHash = (*itCont)->identifyHash();
292  acceptCollection = ( idHash.is_valid() && setOfSCT_Hashes.find( idHash ) != endSCT_Hashes );
293  }
294 
295  int SCT_LayerNumber = -99;
296  if (acceptCollection)
297  {
298  // check if the module is on a relevant layer
299  Identifier id = (*itCont)->identify();
300  int detRegionIndex = m_sctId->barrel_ec(id) ;
301  if ( detRegionIndex == -2 || detRegionIndex == 0 || detRegionIndex == 2 )
302  {
303  // conversion factors for layer numbering
304  int detLayerOffset = 1;
305  int detLayerSign = 1;
306  if (detRegionIndex == 0) detLayerOffset = 10;
307  if (detRegionIndex == -2) detLayerSign = -1;
308 
309  // retrieve layer number from IdHelper
310  int detLayerIndex = m_sctId->layer_disk(id);
311  SCT_LayerNumber = detLayerSign*(detLayerIndex+detLayerOffset);
312  }
313  else
314  {
315  msg(MSG::VERBOSE) << "detRegionIndex " << detRegionIndex << " recieved. " << endmsg;
316  acceptCollection = false;
317  }
318  }
319 
320  if (acceptCollection)
321  {
322  if (modulTRT > -14 && modulTRT < 15 )
323  {
324  std::set<int>::const_iterator pos = m_modulLookupTableIndex[modulTRT+SIMPLE_TRT_INDEX_OFFSET].find(SCT_LayerNumber);
325  if ( pos == m_modulLookupTableIndex[modulTRT+SIMPLE_TRT_INDEX_OFFSET].end() ) acceptCollection = false;
326  }
327  else
328  {
329  msg(MSG::WARNING) << "Received TRTmodul number " << modulTRT << endmsg;
330  acceptCollection = false;
331  }
332  }
333 
334  if (acceptCollection)
335  {
336  // Loop over SP Collection and add SP if they are not yet used (or if this does not matter).
337  SpacePointCollection::const_iterator itColl = (*itCont)->begin();
338  SpacePointCollection::const_iterator endColl = (*itCont)->end ();
339  for(; itColl != endColl; ++itColl)
340  if ( !prd_to_track_map_cptr
341  || !( prd_to_track_map_cptr->isUsed(*((*itColl)->clusterList().first))
342  || prd_to_track_map_cptr->isUsed(*((*itColl)->clusterList().second)) ) )
343  {
344  relevantSpacePoints.insert(std::make_pair( SCT_LayerNumber ,*itColl));
345  msg(MSG::VERBOSE) << "Added SpacePoint for layer " << SCT_LayerNumber << " at ( "
346  << (*itColl)->globalPosition().x() << " , "
347  << (*itColl)->globalPosition().y() << " , "
348  << (*itColl)->globalPosition().z() << " ) " << endmsg;
349  }
350  }
351  }
352  }
353 
354  // retrieve the overlap collection
356  if(spacepointsOverlap.isValid())
357  {
358 
359  // Loop over Overlap SP
360  SpacePointOverlapCollection::const_iterator itColl = spacepointsOverlap->begin();
361  SpacePointOverlapCollection::const_iterator endColl = spacepointsOverlap->end ();
362  for (; itColl != endColl; ++itColl)
363  {
364  // check if SP is in ROI
365  std::pair<IdentifierHash, IdentifierHash> idHashPair = (*itColl)->elementIdList();
366  if ( !m_useROI
367  || (idHashPair.first.is_valid() && setOfSCT_Hashes.find( idHashPair.first ) != endSCT_Hashes)
368  || (idHashPair.second.is_valid() && setOfSCT_Hashes.find( idHashPair.second ) != endSCT_Hashes) )
369  {
370 
371  // find out if one of the Clusters has already been used, if relevant
372  if(prd_to_track_map_cptr)
373  {
374  bool u1=false;
375  bool u2=false;
376  const Trk::PrepRawData* p1=(*itColl)->clusterList().first;
377  u1=prd_to_track_map->isUsed(*p1);
378  const Trk::PrepRawData* p2=(*itColl)->clusterList().second;
379  u2=prd_to_track_map->isUsed(*p2);
380  if(u1 || u2) continue;
381  }
382 
383  // retrieve identifier and fill SP in SP buffer.
384  Identifier id = (*itColl)->associatedSurface().associatedDetectorElementIdentifier();
385  if ( id.is_valid() )
386  {
387  int detRegionIndex = m_sctId->barrel_ec(id) ;
388  if ( detRegionIndex == -2 || detRegionIndex == 0 || detRegionIndex == 2 )
389  {
390  int detLayerOffset = 1;
391  int detLayerSign = 1;
392  if (detRegionIndex == 0) detLayerOffset = 10;
393  if (detRegionIndex == -2) detLayerSign = -1;
394  int detLayerIndex = m_sctId->layer_disk(id);
395 
396  relevantSpacePoints.insert(std::make_pair(detLayerSign*(detLayerIndex+detLayerOffset),*itColl));
397  msg(MSG::VERBOSE) << "Added OverlapSpacePoint for layer " << detLayerSign*(detLayerIndex+detLayerOffset) << " at ( "
398  << (*itColl)->globalPosition().x() << " , "
399  << (*itColl)->globalPosition().y() << " , "
400  << (*itColl)->globalPosition().z() << " ) " << endmsg;
401  }
402  else
403  msg(MSG::VERBOSE) << "detRegionIndex " << detRegionIndex << " recieved. " << endmsg;
404  }
405  else
406  msg(MSG::DEBUG) << "Invalid Id from OverlapCollection recieved. " << endmsg;
407  }
408  }
409  }
410 }

◆ initialize()

StatusCode InDet::SimpleTRT_SeededSpacePointFinder_ATL::initialize ( )
overridevirtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 62 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

63 {
64 
65  // msg().setLevel(outputLevel());
66 
67  // PRD-to-track association (optional)
69 
70  // get region selector
71  StatusCode sc = m_pRegionSelector.retrieve();
72  if( sc.isFailure() )
73  {
74  msg(MSG::FATAL) << "Failed to retrieve RegionSelector Service";
75  return sc;
76  }
77 
78  sc = detStore()->retrieve(m_sctId, "SCT_ID");
79  if (sc.isFailure())
80  {
81  msg(MSG::ERROR) << "Could not get SCT_ID helper !" << endmsg;
82  return StatusCode::FAILURE;
83  }
84 
85  sc = detStore()->retrieve(m_trtId, "TRT_ID");
86  if (sc.isFailure())
87  {
88  msg(MSG::ERROR) << "Could not get TRT_ID helper !" << endmsg;
89  return StatusCode::FAILURE;
90  }
91 
93 
96 
97  return sc;
98 }

◆ inputHandles()

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

Return this algorithm's input handles.

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

◆ interfaceID()

const InterfaceID & InDet::ITRT_SeededSpacePointFinder::interfaceID ( )
inlinestaticinherited

Definition at line 108 of file ITRT_SeededSpacePointFinder.h.

109  {
110  return IID_ITRT_SeededSpacePointFinder;
111  }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ newEvent()

std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventData > InDet::SimpleTRT_SeededSpacePointFinder_ATL::newEvent ( ) const
inlineoverridevirtual

obsolete, do not do anything.

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 178 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

178  {
179  return std::unique_ptr<InDet::ITRT_SeededSpacePointFinder::IEventData>();
180  }

◆ newRegion()

std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventData > InDet::SimpleTRT_SeededSpacePointFinder_ATL::newRegion ( const std::vector< IdentifierHash > &  ,
const std::vector< IdentifierHash > &   
) const
overridevirtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 115 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

117 {
118  return {};
119 }

◆ next()

const SiSpacePointsSeed * InDet::SimpleTRT_SeededSpacePointFinder_ATL::next ( InDet::ITRT_SeededSpacePointFinder::IEventData event_data) const
inlineoverridevirtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 172 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

173  {
174  return nullptr;
175  }

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ pairIsOk()

bool InDet::SimpleTRT_SeededSpacePointFinder_ATL::pairIsOk ( const Trk::SpacePoint sp1,
const Trk::SpacePoint sp2,
const Trk::TrackParameters directionTRT 
) const
private

applies rough cuts on the quality of a SP pair

This method applies quality cuts on a given pairing of SpacePoints. The quality cuts at the moment are:

  • the closest approach of the line connecting the two SpacePoints to the beam axis in (x,y) has to be smaller than a given limit.
  • the direction in phi of the line connecting the two SpacePoints must not deviate from the phi direction of the TRT track parameter by more than a given tolerance.

If the cuts are satisfied, true is returned, false otherwise.

Definition at line 481 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

482 {
494  //Amg::Vector3D r0 = directionTRT.position();
495  const Amg::Vector3D& v0(directionTRT.momentum());
496  Amg::Vector3D s1s2 = s2-s1; // vector from s1 to s2
497 
498  msg(MSG::VERBOSE) << "Checking Space Point Pair at ( "<< s1.x() << ", " << s1.y() << ", " << s1.z()
499  << " ) and ( "<< s2.x() << ", " << s2.y() << ", " << s2.z() << " )" << endmsg;
500 
501  // Cut on closest approach to z-axis
502  double t = ( s1.x()-s2.x() )*( s1.x()-s2.x() ) + ( s1.y()-s2.y() )*( s1.y()-s2.y() ) ;
503  if (t)
504  {
505  t = ( s1.x()*(s2.x()-s1.x()) + s1.y()*(s2.y()-s1.y()) ) / t;
506  Amg::Vector3D perigee = s1 + t*(s1-s2);
507  msg(MSG::VERBOSE) << " closest approach to beam-pipe at ( "<< perigee.x() << ", " << perigee.y() << ", " << perigee.z() << " ) transversal: " << perigee.perp()<<endmsg;
508  if (perigee.perp() > m_perigeeCut ) return false;
509  }
510  msg(MSG::VERBOSE) << " Passed cut on r-phi impact parameter" <<endmsg;
511 
512 
513  // Cut on angle between s1-s2 and parameter direction
514  double diffPhi= std::abs(s1s2.phi()-v0.phi());
515 
516  if (diffPhi > CLHEP::pi ) diffPhi = 2.*CLHEP::pi - diffPhi;
517  if (diffPhi > CLHEP::pi/2. ) diffPhi = CLHEP::pi - diffPhi;
518  msg(MSG::VERBOSE) << "Phi directions differ by "<< diffPhi << endmsg;
519  if ( diffPhi > m_directionPhiCut ) return false;
520 
521  msg(MSG::VERBOSE) << " Passed cut on direction phi deviation" <<endmsg;
522 
523  return true;
524 }

◆ printLookupTable()

void InDet::SimpleTRT_SeededSpacePointFinder_ATL::printLookupTable ( ) const
private

This method provides a printout of the look-up table for debugging purposes. It is called in the setup.

Definition at line 788 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

789 {
793  msg(MSG::VERBOSE) << "=====================================================================================================================" << endmsg;
794  msg(MSG::VERBOSE) << " Module Lookup table: " << endmsg;
795  msg(MSG::VERBOSE) << "---------------------------------------------------------------------------------------------------------------------" << endmsg;
796  for (int i = -14; i<15 ; ++i)
797  {
798  msg(MSG::VERBOSE) << "Module "<< i << " : " << endmsg;
799  std::list<std::pair<int,int> >::const_iterator itList = m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].begin();
800  std::list<std::pair<int,int> >::const_iterator endList = m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].end();
801  for ( ; itList != endList ; ++itList )
802  msg(MSG::VERBOSE) << " (" << itList->first << ", " << itList->second << ") " ;
803  msg(MSG::VERBOSE) << " " << endmsg;
804  std::set<int>::const_iterator itIndex = m_modulLookupTableIndex[i+SIMPLE_TRT_INDEX_OFFSET].begin();
805  std::set<int>::const_iterator endIndex = m_modulLookupTableIndex[i+SIMPLE_TRT_INDEX_OFFSET].end();
806  msg(MSG::VERBOSE) << "Needs Layers: { " ;
807  for ( ; itIndex != endIndex ; ++ itIndex )
808  msg(MSG::VERBOSE) << *itIndex << ", " ;
809  msg(MSG::VERBOSE) << " } " << endmsg;
810  msg(MSG::VERBOSE) << "...................................................................................................................." << endmsg;
811 
812  }
813  msg(MSG::VERBOSE) << "=====================================================================================================================" << endmsg;
814 
815 }

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setupLookUpTable()

void InDet::SimpleTRT_SeededSpacePointFinder_ATL::setupLookUpTable ( )
private

the name says it

This method sets up the look-up table. This table is an array of lists of integer pairs. The index of the array corresponds to a number which identifies the part of the TRT the TRT track parameter comes from, the two integer numbers in the pairs identify the SCT layers or wheels from which SpacePoints have to be paired if the TRT track parameter comes from the corresponding TRT part.

The numbering scheme for the TRT detectors: 0 -> barrel straws 1 - 14 -> forward wheels, counted from inside out -1 - -14 -> backward wheels, -1 the innermost

The numbering scheme for the SCT detector (first number ATLAS, second number within this Tool):

        ____backw_________________________     __barrel__    ________forw_____________

Index = 8 7 6 5 4 3 2 1 0 3 (13) 0 1 2 3 4 5 6 7 8 -9 -8 -7 -6 -5 -4 -3 -2 -1 2 (12) 1 2 3 4 5 6 7 8 9 1 (11) 0 (10)

The numbering scheme used here deviates from the numbering used in the ATLAS Detector description for two reasons:

  • In order to be fast, the identification has to be done by one id number only. ATLAS id is based on two information: the barrel-endcap flag and the modul number. As the modul numbers alone are ambiguous (forward, backward, barrel may feature the same module numbers), an unambiguous id number is derived from both informations.

As anyway a specific numbering scheme has to be employed here, it is designed to be anti-symmetric with respect to forward and backward direction. This allows a convenient automatic set-up of the backward part of the look-up table, once the forward part is defined and thus reduces the likelihood of mistakes. In order to compensate for negative module numbers, an offset is added when they are used as index to the look-up table, because C++ does not allow negative indices (as FORTRAN would do ... :-) )

Depending on the number of allowed holes, i.e. basically the number of SCT layers or wheels omitted between the SpacePoints of a pair, additional pairings of SCT layers are added to the look-up table.

Definition at line 526 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

527 {
563  m_modulLookupTable[0+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,13);
564  if (m_maxHoles > 0 )
565  {
566  m_modulLookupTable[0+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,12);
567  m_modulLookupTable[0+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,13);
568  m_modulLookupTable[0+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,12);
569  }
570  if (m_maxHoles > 1 )
571  {
572  m_modulLookupTable[0+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,13);
573  m_modulLookupTable[0+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,11);
574  }
575 
576  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,13);
577  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,12);
578  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,11);
579  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,1);
580  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,1);
581  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,1);
582  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,1);
583  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,2);
584  if (m_maxHoles > 0 )
585  {
586  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,13);
587  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,12);
588  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,2);
589  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,2);
590  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,2);
591  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,2);
592  }
593  if (m_maxHoles > 1 )
594  {
595  m_modulLookupTable[1+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,13);
596  }
597 
598  // TRT wheels 2 and 3
599  for (int i = 2; i<4 ; ++ i)
600  {
601  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,13);
602  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,1);
603  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,1);
604  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,1);
605  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,1);
606  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,2);
607  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,3);
608  if (m_maxHoles > 0 )
609  {
610  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,12);
611  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,2);
612  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,2);
613  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,2);
614  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,2);
615  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,3);
616  }
617  if (m_maxHoles > 1 )
618  {
619  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,11);
620  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,12);
621  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,3);
622  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,3);
623  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,3);
624  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,3);
625  }
626  }
627 
628  // TRT wheels 4 - 6
629  for (int i = 4 ; i < 7 ; ++i )
630  {
631  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,13);
632  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,1);
633  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,1);
634  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,1);
635  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,1);
636  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,2);
637  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,3);
638  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,4);
639  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,5);
640  if (m_maxHoles > 0 )
641  {
642  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,13);
643  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,12);
644  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,2);
645  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,2);
646  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,2);
647  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,2);
648  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,3);
649  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,4);
650  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,5);
651  }
652  if (m_maxHoles > 1 )
653  {
654  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,3);
655  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,3);
656  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(11,3);
657  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(10,3);
658  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,4);
659  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,5);
660  }
661  }
662 
663 
664  // TRT wheels 7 - 9
665  for ( int i = 7 ; i < 10 ; ++i)
666  {
667  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,3);
668  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,4);
669  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,5);
670  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(5,6);
671  if (m_maxHoles > 0 )
672  {
673  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,2);
674  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,3);
675  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,4);
676  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,5);
677  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,6);
678  }
679  if (m_maxHoles > 1 )
680  {
681  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(13,3);
682  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(12,3);
683  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(1,4);
684  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,5);
685  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,6);
686  }
687  }
688 
689 
690  // TRT wheels 10 - 12
691  for (int i = 10 ; i < 13 ; ++i )
692  {
693  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,5);
694  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(5,6);
695  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(6,7);
696  if (m_maxHoles > 0 )
697  {
698  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,4);
699  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,5);
700  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,6);
701  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(5,7);
702  }
703  if (m_maxHoles > 1 )
704  {
705  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,3);
706  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,4);
707  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(2,5);
708  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,6);
709  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,7);
710  }
711  }
712 
713 
714  // TRT - wheels 13 and 14
715  for (int i = 13 ; i < 15 ; ++i )
716  {
717  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(5,6);
718  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(6,7);
719  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(7,8);
720  if (m_maxHoles > 0 )
721  {
722  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,5);
723  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,6);
724  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(5,7);
725  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(6,8);
726  }
727  if (m_maxHoles > 0 )
728  {
729  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,4);
730  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,5);
731  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(3,6);
732  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(4,7);
733  m_modulLookupTable[i+SIMPLE_TRT_INDEX_OFFSET].emplace_back(5,8);
734  }
735  }
736 
737 
738  // mirror the endcap information
739  for ( int iTable = 1 ; iTable < 15 ; ++iTable )
740  {
741  std::list<std::pair<int,int> >::const_iterator itList = m_modulLookupTable[iTable+SIMPLE_TRT_INDEX_OFFSET].begin();
742  std::list<std::pair<int,int> >::const_iterator endList = m_modulLookupTable[iTable+SIMPLE_TRT_INDEX_OFFSET].end();
743  for ( ; itList != endList ; ++itList )
744  {
745  int i = itList->first;
746  int j = itList->second;
747  if (i<10) i*=-1; // don't change the sign of the barrel modules...
748  if (j<10) j*=-1;
750  }
751  }
752 
753  // fill the short index for the lookup table
754  for ( int iTable = -14 ; iTable < 15 ; ++iTable )
755  {
756  std::list<std::pair<int,int> >::const_iterator itList = m_modulLookupTable[iTable+SIMPLE_TRT_INDEX_OFFSET].begin();
757  std::list<std::pair<int,int> >::const_iterator endList = m_modulLookupTable[iTable+SIMPLE_TRT_INDEX_OFFSET].end();
758  for ( ; itList != endList ; ++itList )
759  {
762  }
763  }
764 
766 
767 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

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

◆ TRT_Module()

int InDet::SimpleTRT_SeededSpacePointFinder_ATL::TRT_Module ( const Trk::TrackParameters directionTRT) const
private

returns the number of the TRT wheel or barrel where the TP belongs to

This method returns the id number of the TRT part, the given trackparameter comes from following the numbering scheme applied in this Tool (see documentation to setupLookupTable).

Definition at line 819 of file SimpleTRT_SeededSpacePointFinder_ATL.cxx.

820 {
825  // find out from which SCT part the segment is built
826  Identifier id ;
827 
829 
830  if (!id.is_valid())
831  {
832  msg(MSG::WARNING) << " Id not valid "<<endmsg;
833  return -999;
834  }
835  int modulNumber;
836  int detRegionIndex = m_trtId->barrel_ec(id) ;
837  if ( detRegionIndex == -1 || detRegionIndex == 1 )
838  modulNumber = 0; // central TRT
839  else if ( detRegionIndex == -2 || detRegionIndex == 2 )
840  {
841  modulNumber = m_trtId->layer_or_wheel(id) + 1 ; // forward/bachward wheels
842  modulNumber *= (detRegionIndex/2) ; // add sign to distinguish forward and backward
843  }
844  else
845  {
846  msg(MSG::WARNING) << "TRT barrel-endcap id not in {-2;-1;1;2}" << endmsg;
847  return -999;
848  }
849 
850  return modulNumber;
851 
852 }

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_directionPhiCut

double InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_directionPhiCut
private

Definition at line 101 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_maxHoles

int InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_maxHoles
private

controls how many not considered SCT layers are allowed between two SP in order to form a seed pair

Definition at line 97 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_modulLookupTable

modulLookupTable InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_modulLookupTable[2 *SIMPLE_TRT_INDEX_OFFSET+1]
private

Lookup table that contains the SCT Layers to be considered to provide SP for the pairing in dependence on the TRT part the track parameter is on.

Definition at line 116 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_modulLookupTableIndex

std::set<int> InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_modulLookupTableIndex[2 *SIMPLE_TRT_INDEX_OFFSET+1]
private

Definition at line 117 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_perigeeCut

double InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_perigeeCut
private

rough cuts on the quality of the suggested SP pair

Definition at line 100 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_prdToTrackMap

SG::ReadHandleKey<Trk::PRDtoTrackMap> InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_prdToTrackMap {this,"PRDtoTrackMap",""}
private

Definition at line 111 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_pRegionSelector

ToolHandle<IRegSelTool> InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_pRegionSelector { this, "RegSelTool_SCT", "RegSelTool/RegSelTool_SCT" }
private

Region Selector.

Definition at line 121 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_sctId

const SCT_ID* InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_sctId
private

ID SCT helper.

Definition at line 124 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_spacepointsOverlapname

SG::ReadHandleKey<SpacePointOverlapCollection> InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_spacepointsOverlapname {this,"SpacePointsSCTName","OverlapSpacePoints","RHK to retrieve OverlapCollection"}
private

Definition at line 110 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_spacepointsSCTname

SG::ReadHandleKey<SpacePointContainer> InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_spacepointsSCTname {this,"SpacePointsSCTName","SCT_SpacePoints","RHK to retrieve SCT SpacePointContainer"}
private

Definition at line 109 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_trtId

const TRT_ID* InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_trtId
private

ID TRT helper.

Definition at line 127 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_useROI

bool InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_useROI
private

Controls, if SP have to be checked with the AssociationTool of the forward tracking and to avoid double use of measurements.

It is set true, if an AssociationTool is specified in the setup controls if the ROI is restricted around the TRT trackparameters

Definition at line 90 of file SimpleTRT_SeededSpacePointFinder_ATL.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
InDet::SimpleTRT_SeededSpacePointFinder_ATL::setupLookUpTable
void setupLookUpTable()
the name says it
Definition: SimpleTRT_SeededSpacePointFinder_ATL.cxx:526
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
beamspotnt.iTable
int iTable
Definition: bin/beamspotnt.py:1282
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_directionPhiCut
double m_directionPhiCut
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:101
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
InDet::SimpleTRT_SeededSpacePointFinder_ATL::TRT_Module
int TRT_Module(const Trk::TrackParameters &directionTRT) const
returns the number of the TRT wheel or barrel where the TP belongs to
Definition: SimpleTRT_SeededSpacePointFinder_ATL.cxx:819
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
Trk::SpacePoint::globalPosition
virtual const Amg::Vector3D & globalPosition() const override final
Interface method to get the global Position.
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:146
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Trk::PRDtoTrackMap
Definition: PRDtoTrackMap.h:17
SG::ReadHandle< Trk::PRDtoTrackMap >
InDet::SimpleTRT_SeededSpacePointFinder_ATL::getSpacePointsInROI
void getSpacePointsInROI(const EventContext &ctx, std::set< IdentifierHash > &setOfSCT_Hashes, int modulTRT, std::multimap< int, const Trk::SpacePoint * > &relevantSpacePoints) const
retrieves SP Collections of modules in the ROI and sorts them by SCT layer
Definition: SimpleTRT_SeededSpacePointFinder_ATL.cxx:243
Trk::ParametersBase::associatedSurface
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:160
SIMPLE_TRT_INDEX_OFFSET
#define SIMPLE_TRT_INDEX_OFFSET
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:18
Trk::Surface::associatedDetectorElementIdentifier
Identifier associatedDetectorElementIdentifier() const
return Identifier of the associated Detector Element
InDet::SimpleTRT_SeededSpacePointFinder_ATL::getSearchRange
static void getSearchRange(double &deltaPhi, double &deltaEta)
List with SP pairs as seed for the Si part of the back-track.
Definition: SimpleTRT_SeededSpacePointFinder_ATL.cxx:416
skel.it
it
Definition: skel.GENtoEVGEN.py:423
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
InDet::SimpleTRT_SeededSpacePointFinder_ATL::combineSpacePoints
void combineSpacePoints(const std::multimap< int, const Trk::SpacePoint * > &relevantSpacePoints, const Trk::TrackParameters &directionTRT, int modulTRT, std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > &listOfSpacePointPairsBuffer) const
builds pairs of SP according to the kook-up table
Definition: SimpleTRT_SeededSpacePointFinder_ATL.cxx:430
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_useROI
bool m_useROI
Controls, if SP have to be checked with the AssociationTool of the forward tracking and to avoid doub...
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:90
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_spacepointsOverlapname
SG::ReadHandleKey< SpacePointOverlapCollection > m_spacepointsOverlapname
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:110
pi
#define pi
Definition: TileMuonFitter.cxx:65
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
P4Helpers::deltaEta
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
Definition: P4Helpers.h:53
parseMapping.v0
def v0
Definition: parseMapping.py:149
lumiFormat.i
int i
Definition: lumiFormat.py:92
InDet::SimpleTRT_SeededSpacePointFinder_ATL::printLookupTable
void printLookupTable() const
Definition: SimpleTRT_SeededSpacePointFinder_ATL.cxx:788
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_pRegionSelector
ToolHandle< IRegSelTool > m_pRegionSelector
Region Selector.
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:121
DetDescrDictionaryDict::it1
std::vector< HWIdentifier >::iterator it1
Definition: DetDescrDictionaryDict.h:17
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
TRT_PAI_physicsConstants::r0
const double r0
electron radius{cm}
Definition: TRT_PAI_physicsConstants.h:20
InDet::SimpleTRT_SeededSpacePointFinder_ATL::getHashesInROI
void getHashesInROI(const Trk::TrackParameters &directionTRT, std::set< IdentifierHash > &setOfSCT_Hashes) const
obtains the hashes of modules in the ROI
Definition: SimpleTRT_SeededSpacePointFinder_ATL.cxx:209
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
RoiDescriptor
Describes the Region of Ineterest geometry It has basically 9 parameters.
Definition: RoiDescriptor.h:40
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:82
AthCommonDataStore< AthCommonMsg< AlgTool > >::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
TRT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: TRT_ID.h:866
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:884
Trk::PRDtoTrackMap::isUsed
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_modulLookupTable
modulLookupTable m_modulLookupTable[2 *SIMPLE_TRT_INDEX_OFFSET+1]
Lookup table that contains the SCT Layers to be considered to provide SP for the pairing in dependenc...
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:116
IdentifierHash::is_valid
bool is_valid() const
Check if id is in a valid state.
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_perigeeCut
double m_perigeeCut
rough cuts on the quality of the suggested SP pair
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:100
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
Trk::PrepRawData
Definition: PrepRawData.h:62
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_maxHoles
int m_maxHoles
controls how many not considered SCT layers are allowed between two SP in order to form a seed pair
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:97
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
InDet::SimpleTRT_SeededSpacePointFinder_ATL::pairIsOk
bool pairIsOk(const Trk::SpacePoint *sp1, const Trk::SpacePoint *sp2, const Trk::TrackParameters &directionTRT) const
applies rough cuts on the quality of a SP pair
Definition: SimpleTRT_SeededSpacePointFinder_ATL.cxx:481
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
a
TList * a
Definition: liststreamerinfos.cxx:10
h
DEBUG
#define DEBUG
Definition: page_access.h:11
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_prdToTrackMap
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:112
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_sctId
const SCT_ID * m_sctId
ID SCT helper.
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:124
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Trk::phi
@ phi
Definition: ParamDefs.h:81
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_trtId
const TRT_ID * m_trtId
ID TRT helper.
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:127
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
IdentifierHash
Definition: IdentifierHash.h:38
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_spacepointsSCTname
SG::ReadHandleKey< SpacePointContainer > m_spacepointsSCTname
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:109
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
InDet::SimpleTRT_SeededSpacePointFinder_ATL::m_modulLookupTableIndex
std::set< int > m_modulLookupTableIndex[2 *SIMPLE_TRT_INDEX_OFFSET+1]
Definition: SimpleTRT_SeededSpacePointFinder_ATL.h:117
fitman.k
k
Definition: fitman.py:528