ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::SiTrackerSpacePointFinder Class Reference

This version of PointFinder uses SiCluster to find space points in the pixel and SCT detectors. More...

#include <SiTrackerSpacePointFinder.h>

Inheritance diagram for InDet::SiTrackerSpacePointFinder:

Classes

struct  SPFCache
 This is a temporary object to aid reentrant coding. More...

Public Member Functions

virtual bool isReEntrant () const override
 Avoid scheduling algorithm multiple times.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
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.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
AthCondAlgorithm methods
 SiTrackerSpacePointFinder (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~SiTrackerSpacePointFinder ()=default
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) const override
virtual StatusCode finalize () override
virtual bool isClonable () const override
 Make this algorithm clonable.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>
Disallow constructor without parameters, copy constructor, assignment operator
 SiTrackerSpacePointFinder ()=delete
 SiTrackerSpacePointFinder (const SiTrackerSpacePointFinder &)=delete
SiTrackerSpacePointFinderoperator= (const SiTrackerSpacePointFinder &)=delete
Main SCT space point methods
void addSCT_SpacePoints (const SCT_ClusterCollection *next, const SiElementPropertiesTable *properties, const InDetDD::SiDetectorElementCollection *elements, SpacePointCollection *spacepointCollection, SpacePointOverlapCollection *spacepointOverlapCollection, SPFCache &, DataPool< SCT_SpacePoint > *dataItemsSCT) const

Private Attributes

DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared
Input data using SG::ReadHandleKey
SG::ReadHandleKey< SCT_ClusterContainer > m_Sct_clcontainerKey {this, "SCT_ClustersName", "SCT_Clusters", "SCT clContainer"}
SG::ReadHandleKey< PixelClusterContainer > m_Pixel_clcontainerKey {this, "PixelsClustersName", "PixelClusters", "Pixel clContainer"}
Input condition data using SG::ReadCondHandleKey
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
 For beam spot.
SG::ReadCondHandleKey< InDet::SiElementPropertiesTablem_SCTPropertiesKey {this, "SCTPropertiesKey", "SCT_ElementPropertiesTable", "Key of input SiElementPropertiesTable for SCT"}
 To get SCT neighbours.
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
 For SCT alignment.
Output data using SG::WriteHandleKey
SG::WriteHandleKey< SpacePointContainerm_SpacePointContainer_SCTKey {this, "SpacePointsSCTName", "SCT_SpacePoints", "SpacePoint SCT container"}
SG::WriteHandleKey< SpacePointContainerm_SpacePointContainerPixelKey {this, "SpacePointsPixelName", "PixelSpacePoints", "SpacePoint Pixel container"}
SG::WriteHandleKey< SpacePointOverlapCollectionm_spacepointoverlapCollectionKey {this, "SpacePointsOverlapName", "OverlapSpacePoints", "Space Point Overlap collection"}
Caches for HLT using SG::UpdateHandleKey
SG::UpdateHandleKey< SpacePointCachem_SpacePointCache_SCTKey {this, "SpacePointCacheSCT", ""}
SG::UpdateHandleKey< SpacePointCachem_SpacePointCache_PixKey {this, "SpacePointCachePix", ""}
ToolHandle
ToolHandle< SiSpacePointMakerToolm_SiSpacePointMakerTool {this, "SiSpacePointMakerTool", "InDet::SiSpacePointMakerTool"}
ToolHandle< GenericMonitoringToolm_monTool {this, "monTool", "", "Monitoring tool"}
Id helpers
const PixelIDm_idHelperPixel {nullptr}
const SCT_IDm_idHelper {nullptr}
Configuration flags
BooleanProperty m_selectPixels {this, "ProcessPixels", true}
BooleanProperty m_selectSCTs {this, "ProcessSCTs", true}
BooleanProperty m_overlap {this, "ProcessOverlaps", true, "process overlaps of SCT wafers"}
BooleanProperty m_allClusters {this, "AllClusters", false, "process all clusters without limits"}
bool m_cachemode {false}
 used for online MT counters
BooleanProperty m_useDataPoolWithCache {this, "useDataPoolWithCache", false, "use DataPool With Cache"}
BooleanProperty m_useSCTLayerDep_OverlapCuts {this,"useSCTLayerDep_OverlapCuts", true}
BooleanProperty m_doEndcapEtaOverlapSP {this,"doEndcapEtaOverlapSP", false}
Cut parameters

The following are ranges within which clusters must lie to make a spacepoint.

Opposite and eta neighbours clusters must lie within range of each other. Phi clusters must lie in region of each wafer separately.

FloatProperty m_overlapLimitOpposite {this, "OverlapLimitOpposite", 2.8, "overlap limit for opposite-neighbour"}
FloatProperty m_overlapLimitPhi {this, "OverlapLimitPhi", 5.64, "overlap limit for phi-neighbours"}
FloatProperty m_overlapLimitEtaMin {this, "OverlapLimitEtaMin", 1.68, "low overlap limit for eta-neighbours"}
FloatProperty m_overlapLimitEtaMax {this, "OverlapLimitEtaMax", 3.0, "high overlap limit for eta-neighbours"}
Beam spot override
BooleanProperty m_overrideBS {this, "OverrideBeamSpot", false}
FloatProperty m_xVertex {this, "VertexX", 0.}
FloatProperty m_yVertex {this, "VertexY", 0.}
FloatProperty m_zVertex {this, "VertexZ", 0.}
Counters

Use mutable to be updated in const methods.

AthCondAlgorithm is const during event processing. Use std::atomic to be multi-thread safe.

std::atomic< int > m_numberOfEvents {0}
std::atomic< int > m_numberOfPixel {0}
std::atomic< int > m_numberOfSCT {0}
std::atomic< int > m_sctCacheHits {0}
std::atomic< int > m_pixCacheHits {0}
std::atomic< int > m_nspacePoints {0}
std::atomic< int > m_nspacePointsOverlap {0}

Detailed Description

This version of PointFinder uses SiCluster to find space points in the pixel and SCT detectors.

The algorithm retrieves all clusters from StoreGate using SG::ReadHandle(Key) and uses the begin-end iterators to iterate over the clusters. It then has to see whether the next cluster is a pixel or SCT cluster. Pixel space points are obtained directly from the clusters. To make SCT space points we also need the IdentifiableContainer for the SCT clusters, since we need random access to find overlapping detectors on the stereo layer. Space points are made by combining clusters from pairs of overlapping detectors. The user can choose just to process the phi wafer and its opposite on the stereo layer, or also to consider overlaps with the four nearest neighbours of the opposite wafer.
The space points are wrtten to Storegate as SpacePointContainer for Pixels and non-overlapping SCT space points and as SpacePointOverlapCollection for the overlapping ones.

Job Options: Process pixels: default true Process SCTs: default true Process overlaps: default true SCT IdentifiableContainer name: default "SCT_Clusters" SCT SpacePointSet name: default "SCT_SpacePoints"

Fatal Errors: neither pixels nor SCTs selected SCTs selected and no name for SCT Identifiable Collection No name for SpacePointSet Failure to retrieve event StoreGate failure.

Possible errors for which processing continues: No clusters found for event Implementation of SCT_Neighbours is SiElementPropertiesTable, is prepared by SiElementPropertiesTableCondAlg and is stored in StoreGate using SG::WriteCondHandle(Key).

Definition at line 83 of file SiTrackerSpacePointFinder.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

◆ SiTrackerSpacePointFinder() [1/3]

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

Definition at line 37 of file SiTrackerSpacePointFinder.cxx.

39 : AthCondAlgorithm(name, pSvcLocator)
40{ }

◆ ~SiTrackerSpacePointFinder()

virtual InDet::SiTrackerSpacePointFinder::~SiTrackerSpacePointFinder ( )
virtualdefault

◆ SiTrackerSpacePointFinder() [2/3]

InDet::SiTrackerSpacePointFinder::SiTrackerSpacePointFinder ( )
privatedelete

◆ SiTrackerSpacePointFinder() [3/3]

InDet::SiTrackerSpacePointFinder::SiTrackerSpacePointFinder ( const SiTrackerSpacePointFinder & )
privatedelete

Member Function Documentation

◆ addSCT_SpacePoints()

void InDet::SiTrackerSpacePointFinder::addSCT_SpacePoints ( const SCT_ClusterCollection * next,
const SiElementPropertiesTable * properties,
const InDetDD::SiDetectorElementCollection * elements,
SpacePointCollection * spacepointCollection,
SpacePointOverlapCollection * spacepointOverlapCollection,
SPFCache & r_cache,
DataPool< SCT_SpacePoint > * dataItemsSCT ) const
private

Definition at line 378 of file SiTrackerSpacePointFinder.cxx.

385{
386 // For each trigger element, first evaluate and collect the quantities you need to build the space points.
387 // The detector element array has capacity 6:
388 // [0] is the trigger element
389 // [1] is the opposite element
390 // [2]-[3] are the elements tested for eta overlaps
391 // [4]-[5] are the elements tested for phi overlaps
392 // For each element you save the corresponding cluster collections and the
393 // space point compatibility range as described below.
394 //
395 // For the opposite element and the ones tested for eta overlaps, you have to check
396 // if clusters are compatible with the local position of the trigger cluster
397 // requiring that the distance between the two clusters in phi is withing a specified range.
398 // - For the clusters on the opposite element: [-m_overlapLimitOpposite, m_overlapLimitOpposite]
399 //
400 // - For the eta overlapping clusters : you use m_overlapLimitEtaMin and m_overlapLimitEtaMax
401 // in different combination depending if you are checking a stereo module or not
402 //
403 // For each element, the extremes of these ranges are saved in the overlapExtents array
404 // which is later on used in SiSpacePointMakerTool::fillSCT_SpacePointCollection
405 // - overlapExtents[0], overlapExtents[1] are filled for the opposite element
406 // - overlapExtents[2], overlapExtents[3], overlapExtents[4], overlapExtents[5] are filled for the eta overlapping elements
407 //
408 // For the elements tested for phi overlaps, you have to check
409 // if clusters are compatible with the local position of the trigger cluster.
410 // This needs that the trigger cluster is at the edge of the trigger module:
411 // e.g. -hwidth < locX_trigger < -hwidth+m_overlapLimitPhi (or hwidth-m_overlapLimitPhi < locX_trigger < hwidth)
412 // and that the other cluster is on the compatible edge of its module:
413 // e.g. hwidth-m_overlapLimitPhi < locX_other < hwidth (or -hwidth < locX_other < -hwidth+m_overlapLimitPhi)
414 //
415 // For each element, the extremes of these ranges are saved in the overlapExtents array
416 // which is later on used in SiSpacePointMakerTool::fillSCT_SpacePointCollection
417 // - overlapExtents[6], overlapExtents[7], overlapExtents[10], overlapExtents[11]
418 // overlapExtents[8], overlapExtents[9], overlapExtents[12], overlapExtents[13] are filled for the phi overlapping elements
419
421
422 std::array<const SCT_ClusterCollection*, nNeighbours> neighbourClusters{};
423 std::array<const InDetDD::SiDetectorElement*, nNeighbours> neighbourElements{};
424 std::array<double, 14> overlapExtents{};
425
426 // Get the detector element (and its Identifier) correspoding to the cluster collection
427 IdentifierHash triggerIdHash(sctClusters->identifyHash());
428 const InDetDD::SiDetectorElement *triggerElement = elements->getDetectorElement(triggerIdHash);
429 Identifier thisID = triggerElement->identify();
430
431 // Retrieve the neighbours of the detector element
432 const std::vector<IdentifierHash>* others(properties->neighbours(triggerIdHash));
433 if (others==nullptr || others->empty() ) return;
434
435 // Save the current detector element and clusters
436 neighbourElements[0] = triggerElement;
437 neighbourClusters[0] = sctClusters;
438 int n = 0 ;
439
440 // Default case: you test the opposite element and the overlapping in phi (total 3 elements)
441 int Nmax = 4 ;
442
443 // In the barrel, test the eta overlaps as well (total 5 elements)
444 // or also in the endcaps if we specifically request it
445 if (m_idHelper->is_barrel(thisID) || m_doEndcapEtaOverlapSP) Nmax = 6;
446
447 // You can remove all the overlaps if requrested. Here you test only the opposite element
448 if(!m_overlap) Nmax = 2;
449
450 float hwidth(properties->halfWidth(triggerIdHash));
451
452 // This flag is use to trigger if the search should be performed.
453 // In case there are no other detector elements and/or cluster collection
454 // this flag stays false.
455 bool search = false;
456
457 // The order of the elements in others is such that you first get the opposite element,
458 // the overlapping in phi and then the overlapping in eta
459 // For this reason you need to re-order the indices, since the SiSpacePointMakerTool will process
460 // first the eta overlaps and then the phi ones
461 const std::array<size_t, nNeighbours> neigbourIndices{ThisOne, Opposite, EtaMinus, EtaPlus, PhiMinus, PhiPlus};
462
463 for (const auto& otherHash : *others) {
464
465 if(++n==Nmax) break;
466 const SCT_ClusterCollection* otherClusters = r_cache.SCTCContainer->indexFindPtr (otherHash);
467 const InDetDD::SiDetectorElement* otherElement = elements ->getDetectorElement(otherHash);
468
469 if(!otherElement || !otherClusters) continue;
470
471 neighbourElements[neigbourIndices[n]] = otherElement;
472 neighbourClusters[neigbourIndices[n]] = otherClusters;
473 search = true ;
474
475 switch (n) {
476 case Opposite: {
477 overlapExtents[ 0] = -m_overlapLimitOpposite;
478 overlapExtents[ 1] = m_overlapLimitOpposite;
479 break;
480 }
481 case PhiMinus: {
482 overlapExtents[ 6] =-hwidth;
483 overlapExtents[ 7] =-hwidth+m_overlapLimitPhi;
484 overlapExtents[ 8] = hwidth-m_overlapLimitPhi;
485 overlapExtents[ 9] = hwidth;
486 break;
487 }
488 case PhiPlus: {
489 overlapExtents[10] = hwidth-m_overlapLimitPhi;
490 overlapExtents[11] = hwidth;
491 overlapExtents[12] =-hwidth;
492 overlapExtents[13] =-hwidth+m_overlapLimitPhi;
493 break;
494 }
495 case EtaMinus: {
496 overlapExtents[ 2] = m_overlapLimitEtaMin;
497 overlapExtents[ 3] = m_overlapLimitEtaMax;
498 if (m_useSCTLayerDep_OverlapCuts && (m_idHelper->layer_disk(thisID) & 1) != 0) {
499 overlapExtents[ 2] =-m_overlapLimitEtaMax;
500 overlapExtents[ 3] =-m_overlapLimitEtaMin;
501 }
502 break;
503 }
504 default: {
505 overlapExtents[ 4] = m_overlapLimitEtaMin;
506 overlapExtents[ 5] = m_overlapLimitEtaMax;
507 if (m_useSCTLayerDep_OverlapCuts && (m_idHelper->layer_disk(thisID) & 1) == 0) {
508 overlapExtents[ 4] = -m_overlapLimitEtaMax;
509 overlapExtents[ 5] = -m_overlapLimitEtaMin;
510 }
511 break;
512 }
513 }
514 }
515
516 if (search) {
517 m_SiSpacePointMakerTool->fillSCT_SpacePointCollection(
518 neighbourElements, neighbourClusters, overlapExtents, m_allClusters,
519 r_cache.vertex, spacepointCollection, spacepointOverlapCollection,
520 dataItemsSCT);
521 }
522}
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const
virtual Identifier identify() const override final
identifier of this detector element (inline)
ToolHandle< SiSpacePointMakerTool > m_SiSpacePointMakerTool
void search(TDirectory *td, const std::string &s, std::string cwd, node *n)
recursive directory search for TH1 and TH2 and TProfiles
Definition hcg.cxx:739
NeighbourIndices
Total number of neightbours and indices.

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::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.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

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

◆ evtStore()

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.

◆ execute()

StatusCode InDet::SiTrackerSpacePointFinder::execute ( const EventContext & ctx) const
overridevirtual

Definition at line 109 of file SiTrackerSpacePointFinder.cxx.

110{
112 const InDetDD::SiDetectorElementCollection* elements = nullptr;
113 const SiElementPropertiesTable* properties = nullptr;
114
115 auto nReceivedSPsSCT = Monitored::Scalar<int>( "numSctSpacePoints" , 0 );
116 auto nReceivedSPsPIX = Monitored::Scalar<int>( "numPixSpacePoints" , 0 );
117
118 auto mon = Monitored::Group( m_monTool, nReceivedSPsPIX,nReceivedSPsSCT );
119
120 if (m_selectSCTs) {
121 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> sctDetEle(m_SCTDetEleCollKey, ctx);
122 elements = sctDetEle.retrieve();
123 if (elements==nullptr) {
124 ATH_MSG_FATAL("Pointer of SiDetectorElementCollection (" << m_SCTDetEleCollKey.fullKey() << ") could not be retrieved");
125 return StatusCode::SUCCESS;
126 }
127 SG::ReadCondHandle<SiElementPropertiesTable> sctProperties(m_SCTPropertiesKey, ctx);
128 properties = sctProperties.retrieve();
129 if (properties==nullptr) {
130 ATH_MSG_FATAL("Pointer of SiElementPropertiesTable (" << m_SCTPropertiesKey.fullKey() << ") could not be retrieved");
131 return StatusCode::SUCCESS;
132 }
133 }
134 SPFCache r_cache(ctx);
135 if (! m_overrideBS){
136 SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx };
137 const InDet::BeamSpotData* beamSpot = *beamSpotHandle;
138 r_cache.vertex = beamSpot->beamVtx().position();
139 } else {
140 r_cache.vertex = Amg::Vector3D(m_xVertex,m_yVertex,m_zVertex);
141 }
142
143 // register the IdentifiableContainer into StoreGate
144 SG::WriteHandle<SpacePointContainer> spacePointContainerPixel;
145 std::unique_ptr<DataPool<PixelSpacePoint>> dataItemsPixel = nullptr;
146 if (m_selectPixels){
147 spacePointContainerPixel = SG::WriteHandle<SpacePointContainer>( m_SpacePointContainerPixelKey, ctx );
148 if(m_SpacePointCache_PixKey.key().empty()){
149 ATH_CHECK( spacePointContainerPixel.record( std::make_unique<SpacePointContainer>(m_idHelperPixel->wafer_hash_max()) ) );
150 ATH_MSG_DEBUG("Created SpacePointContainer " << m_SpacePointContainerPixelKey.key() << " N= " << m_idHelperPixel->wafer_hash_max());
151 }else{
152 SG::UpdateHandle<SpacePointCache> updateH( m_SpacePointCache_PixKey, ctx );
153 ATH_CHECK(updateH.isValid());
154 ATH_CHECK( spacePointContainerPixel.record( std::make_unique<SpacePointContainer>(updateH.ptr()) ) );
155 ATH_MSG_DEBUG("Created SpacePointContainer " << m_SpacePointContainerPixelKey.key() << " from cache " << m_SpacePointCache_PixKey.key());
156 }
157 const bool hasExternalCache = spacePointContainerPixel->hasExternalCache();
158 if (!hasExternalCache) {
159 dataItemsPixel = std::make_unique<DataPool<PixelSpacePoint>>(ctx);
160 dataItemsPixel->reserve(5000); // Some large default size
161 } else if (m_useDataPoolWithCache) {
162 dataItemsPixel = std::make_unique<DataPool<PixelSpacePoint>>(ctx);
163 // Default size for now 1024 let it expand on its own
164 }
165 }
166
167 SG::WriteHandle<SpacePointContainer> spacePointContainer_SCT;
168 std::unique_ptr<DataPool<SCT_SpacePoint>> dataItemsSCT = nullptr;
169 if (m_selectSCTs){
170 spacePointContainer_SCT = SG::WriteHandle<SpacePointContainer>( m_SpacePointContainer_SCTKey, ctx );
171 if(m_SpacePointCache_SCTKey.key().empty()){
172 ATH_CHECK( spacePointContainer_SCT.record( std::make_unique<SpacePointContainer>(m_idHelper->wafer_hash_max()) ) );
173 ATH_MSG_DEBUG("Created SpacePointContainer " << m_SpacePointContainer_SCTKey.key() << " N= " << m_idHelper->wafer_hash_max());
174 }else{
175 SG::UpdateHandle<SpacePointCache> updateH( m_SpacePointCache_SCTKey, ctx );
176 ATH_CHECK(updateH.isValid());
177 ATH_CHECK( spacePointContainer_SCT.record( std::make_unique<SpacePointContainer>(updateH.ptr()) ) );
178 ATH_MSG_DEBUG("Created SpacePointContainer " << m_SpacePointContainer_SCTKey.key() << " from cache " << m_SpacePointCache_SCTKey.key());
179 }
180 const bool hasExternalCache = spacePointContainer_SCT->hasExternalCache();
181 if (!hasExternalCache) {
182 dataItemsSCT = std::make_unique<DataPool<SCT_SpacePoint>>(ctx);
183 dataItemsSCT->reserve(10000); // Some large default size
184 } else if (m_useDataPoolWithCache) {
185 dataItemsSCT = std::make_unique<DataPool<SCT_SpacePoint>>(ctx);
186 // Default size for now 1024 let it expand on its own
187 }
188 }
189
190 SG::WriteHandle<SpacePointOverlapCollection> spacepointoverlapCollection;
191 if(m_overlap){
192 spacepointoverlapCollection = SG::WriteHandle<SpacePointOverlapCollection>( m_spacepointoverlapCollectionKey, ctx );
193 ATH_CHECK( spacepointoverlapCollection.record( std::make_unique<SpacePointOverlapCollection>() ) );
194 if (dataItemsSCT) {
195 // if we have a DataPool it will own the elements
196 spacepointoverlapCollection.ptr()->clear(SG::VIEW_ELEMENTS);
197 }
198 ATH_MSG_DEBUG( "Container '" << spacepointoverlapCollection.name() << "' initialised" );
199 }
200
201 int sctCacheCount = 0;
202 int pixCacheCount = 0;
203
204 if (m_selectSCTs){
205 // retrieve SCT cluster container
206 SG::ReadHandle<SCT_ClusterContainer> sct_clcontainer( m_Sct_clcontainerKey, ctx );
207 if (!sct_clcontainer.isValid()){
208 msg(MSG:: FATAL) << "Could not find the data object "<< sct_clcontainer.name() << " !" << endmsg;
209 return StatusCode::RECOVERABLE;
210 }
211
212 r_cache.SCTCContainer = sct_clcontainer.cptr();
213
214 ATH_MSG_DEBUG( "SCT Cluster container found: " << sct_clcontainer->size() << " collections" );
215 // Get hold of all clusters and iterate through them.
216 // Pixel clusters will be converted immediately to pixel space points.
217 // For SCT clusters, posssible pairs will be found and space points computed.
218 // It is possible, though unlikely, that there are no clusters for the
219 // event. Therefore we do not terminate the job if we don't find any.
220 SCT_ClusterContainer::const_iterator it = sct_clcontainer->begin();
221 SCT_ClusterContainer::const_iterator itend = sct_clcontainer->end();
222
223 for (; it != itend; ++it){
224 const SCT_ClusterCollection *colNext=&(**it);
225
226 // Create SpacePointCollection
227 IdentifierHash idHash = colNext->identifyHash();
228 SpacePointContainer::IDC_WriteHandle lock = spacePointContainer_SCT->getWriteHandle(idHash);
230 ATH_MSG_DEBUG("SCT Hash " << idHash << " is already in cache");
231 ++sctCacheCount;
232 continue; //Skip if already present in cache
233 }
234
235 Identifier elementID = colNext->identify();
236 auto spacepointCollection = std::make_unique<SpacePointCollection>(idHash);
237 spacepointCollection->setIdentifier(elementID);
238 if(dataItemsSCT){
239 //if we have a DataPool it will own the elements
240 spacepointCollection->clear(SG::VIEW_ELEMENTS);
241 }
242
243 if(!colNext->empty() && !elements->getDetectorElement(colNext->identifyHash())->isStereo()) {
245 colNext, properties, elements, spacepointCollection.get(),
246 spacepointoverlapCollection.ptr(), r_cache, dataItemsSCT.get());
247 } else {
248 ATH_MSG_DEBUG( "Empty SCT cluster collection" );
249 }
250
251 size_t size = spacepointCollection->size();
252 if (size == 0){
253 ATH_MSG_VERBOSE( "SiTrackerSpacePointFinder algorithm found no space points" );
254 } else {
255 //In a MT environment the cache maybe filled by another thread in which case this will delete the duplicate
256 StatusCode sc= lock.addOrDelete( std::move(spacepointCollection) );
257 if (sc.isFailure()){
258 ATH_MSG_ERROR( "Failed to add SpacePoints to container" );
259 return StatusCode::RECOVERABLE;
260 }
261 ATH_MSG_VERBOSE( size << " SpacePoints successfully added to Container !" );
262 nReceivedSPsSCT += size;
264 }
265 }
266 m_numberOfSCT+= sct_clcontainer->size();
267 }
268
269 if (m_selectPixels)
270 {
271
272 SG::ReadHandle<PixelClusterContainer> pixel_clcontainer( m_Pixel_clcontainerKey, ctx );
273 if (!pixel_clcontainer.isValid()){
274 msg(MSG:: FATAL) << "Could not find the data object "<< pixel_clcontainer.name() << " !" << endmsg;
275 return StatusCode::RECOVERABLE;
276 }
277
278 ATH_MSG_DEBUG( "Data object " << pixel_clcontainer.name() << " found" );
279
280 // loop over Pixel clusterCollections
281 PixelClusterContainer::const_iterator colNext = pixel_clcontainer->begin();
282 PixelClusterContainer::const_iterator lastCol = pixel_clcontainer->end();
283
284
285 int numColl=0;
286 for (; colNext != lastCol; ++colNext)
287 {
288 ATH_MSG_VERBOSE( "Collection num " << numColl++ );
289 IdentifierHash idHash = (*colNext)->identifyHash();
290 SpacePointContainer::IDC_WriteHandle lock = spacePointContainerPixel->getWriteHandle(idHash);
292 ATH_MSG_DEBUG("pixel Hash " << idHash << " is already in cache");
293 ++pixCacheCount;
294 continue;
295 }
296 // Create SpacePointCollection
297 Identifier elementID = (*colNext)->identify();
298 auto spacepointCollection = std::make_unique< SpacePointCollection >(idHash);
299 spacepointCollection->setIdentifier(elementID);
300 if(dataItemsPixel){
301 //if we have a DataPool it will own the elements
302 spacepointCollection->clear(SG::VIEW_ELEMENTS);
303 }
304
305 if (!(*colNext)->empty())
306 {
307 m_SiSpacePointMakerTool->fillPixelSpacePointCollection(
308 *colNext, spacepointCollection.get(), dataItemsPixel.get());
309 } else {
310 ATH_MSG_DEBUG( "Empty pixel cluster collection" );
311 }
312 size_t size = spacepointCollection->size();
313 if (size == 0)
314 {
315 ATH_MSG_DEBUG( "SiTrackerSpacePointFinder algorithm found no space points" );
316 }
317 else
318 {
319 StatusCode sc = lock.addOrDelete( std::move(spacepointCollection) );
320 if (sc.isFailure())
321 {
322 ATH_MSG_ERROR( "Failed to add SpacePoints to container" );
323 return StatusCode::RECOVERABLE;
324 }
325 ATH_MSG_VERBOSE( size
326 << " SpacePoints successfully added to Container !" );
327 nReceivedSPsPIX += size;
329 }
330 }
331 m_numberOfPixel+= pixel_clcontainer->size();
332 }
333
334 // store the overlap space points.
335 // check that the set isn't empty.
336 if(m_overlap){
337 if (spacepointoverlapCollection->empty())
338 {
339 ATH_MSG_DEBUG( "No overlap space points found" );
340 }
341 else
342 {
343 ATH_MSG_DEBUG( spacepointoverlapCollection->size() <<" overlap space points registered." );
344 m_nspacePointsOverlap += spacepointoverlapCollection->size();
345 }
346 }
347
348 if(m_cachemode)//Prevent unnecessary atomic counting
349 {
350 m_sctCacheHits += sctCacheCount;
351 m_pixCacheHits += pixCacheCount;
352 }
353
354 return StatusCode::SUCCESS;
355
356}
#define endmsg
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
static Double_t sc
bool OnlineAndPresentInAnotherView()
This method is to avoid calling an expensive operation in the offline case.
StatusCode addOrDelete(std::unique_ptr< T > ptr)
bool isStereo() const
Check if it is the stereo side (useful for SCT)
SG::WriteHandleKey< SpacePointContainer > m_SpacePointContainer_SCTKey
SG::UpdateHandleKey< SpacePointCache > m_SpacePointCache_PixKey
SG::ReadHandleKey< PixelClusterContainer > m_Pixel_clcontainerKey
SG::WriteHandleKey< SpacePointOverlapCollection > m_spacepointoverlapCollectionKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
For SCT alignment.
bool m_cachemode
used for online MT counters
ToolHandle< GenericMonitoringTool > m_monTool
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
For beam spot.
SG::WriteHandleKey< SpacePointContainer > m_SpacePointContainerPixelKey
SG::ReadCondHandleKey< InDet::SiElementPropertiesTable > m_SCTPropertiesKey
To get SCT neighbours.
SG::ReadHandleKey< SCT_ClusterContainer > m_Sct_clcontainerKey
void addSCT_SpacePoints(const SCT_ClusterCollection *next, const SiElementPropertiesTable *properties, const InDetDD::SiDetectorElementCollection *elements, SpacePointCollection *spacepointCollection, SpacePointOverlapCollection *spacepointOverlapCollection, SPFCache &, DataPool< SCT_SpacePoint > *dataItemsSCT) const
SG::UpdateHandleKey< SpacePointCache > m_SpacePointCache_SCTKey
const std::string & name() const
Return the StoreGate ID for the referenced object.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
pointer_type ptr()
Dereference the pointer.
Eigen::Matrix< double, 3, 1 > Vector3D
::StatusCode StatusCode
StatusCode definition for legacy code.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
AthConfigFlags beamSpot(AthConfigFlags flags, str instanceName, str recoMode)
This is a temporary object to aid reentrant coding.

◆ 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 & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ finalize()

StatusCode InDet::SiTrackerSpacePointFinder::finalize ( )
overridevirtual

Definition at line 359 of file SiTrackerSpacePointFinder.cxx.

360{
361 ATH_MSG_DEBUG( m_numberOfEvents << " events processed" );
362 ATH_MSG_DEBUG( m_numberOfPixel << " pixel collections processed" );
363 ATH_MSG_DEBUG( m_numberOfSCT << " sct collections processed" );
364 ATH_MSG_DEBUG( m_nspacePoints+m_nspacePointsOverlap << " space points made, including "<<
365 m_nspacePointsOverlap << " overlap space points" );
366
367 if(m_cachemode){
368 //These are debug messages because they can be indeterminate in an MT environment and it could
369 //lead to confusing log comparisons.
370 ATH_MSG_DEBUG( m_sctCacheHits << " sct cache hits" );
371 ATH_MSG_DEBUG( m_pixCacheHits << " pix cache hits" );
372 }
373 return StatusCode::SUCCESS;
374}

◆ initialize()

StatusCode InDet::SiTrackerSpacePointFinder::initialize ( )
overridevirtual

Definition at line 43 of file SiTrackerSpacePointFinder.cxx.

44{
45 // Check that clusters, space points and ids have names
46 if (m_selectSCTs && m_Sct_clcontainerKey.key().empty()){
47 ATH_MSG_FATAL( "SCTs selected and no name set for SCT clusters");
48 return StatusCode::FAILURE;
49 }
51
52 if (m_selectPixels && m_Pixel_clcontainerKey.key().empty()){
53 ATH_MSG_FATAL( "Pixels selected and no name set for Pixel clusters");
54 return StatusCode::FAILURE;
55 }
57
58 if (m_selectSCTs && m_SpacePointContainer_SCTKey.key().empty()){
59 ATH_MSG_FATAL( "No name set for SCT space points");
60 return StatusCode::FAILURE;
61 }
63
65 ATH_MSG_FATAL( "No name set for Pixels space points");
66 return StatusCode::FAILURE;
67 }
69
70 if (m_overlap && m_spacepointoverlapCollectionKey.key().empty()){
71 ATH_MSG_FATAL( "No name set for overlap space points");
72 return StatusCode::FAILURE;
73 }
75
76 // create containers (requires the Identifier Helpers)
77 if (m_selectPixels){
79 }
80
81 if (m_selectSCTs) {
83 }
84
85 // Initialize the key of input SiElementPropertiesTable and SiDetectorElementCollection for SCT
88
91
94 m_cachemode = !m_SpacePointCache_SCTKey.key().empty() || !m_SpacePointCache_PixKey.key().empty();
95
96 if (!m_monTool.empty()) CHECK(m_monTool.retrieve());
97
99 ATH_MSG_INFO("Use SCT SP overlap cuts based on layer number parity");
100
102 ATH_MSG_INFO("Doing eta overlap space points in strips endcap");
103
104 return StatusCode::SUCCESS;
105}
#define ATH_MSG_INFO(x)
#define CHECK(...)
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ 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()

virtual bool InDet::SiTrackerSpacePointFinder::isClonable ( ) const
inlineoverridevirtual

Make this algorithm clonable.

Reimplemented from AthCommonReentrantAlgorithm< Gaudi::Algorithm >.

Definition at line 103 of file SiTrackerSpacePointFinder.h.

103{ return true; };

◆ isReEntrant()

virtual bool AthCondAlgorithm::isReEntrant ( ) const
inlineoverridevirtualinherited

Avoid scheduling algorithm multiple times.

With multiple concurrent events, conditions objects often expire simultaneously for all slots. To avoid that the scheduler runs the CondAlg in each slot, we declare it as "non-reentrant". This ensures that the conditions objects are only created once.

In case a particular CondAlg should behave differently, it can override this method again and return true.

See also
ATEAM-836

Definition at line 39 of file AthCondAlgorithm.h.

39{ return false; }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

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

◆ operator=()

SiTrackerSpacePointFinder & InDet::SiTrackerSpacePointFinder::operator= ( const SiTrackerSpacePointFinder & )
privatedelete

◆ 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();
384 }
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)

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

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::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 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::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 HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
#define ATH_MSG_WARNING(x)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_allClusters

BooleanProperty InDet::SiTrackerSpacePointFinder::m_allClusters {this, "AllClusters", false, "process all clusters without limits"}
private

Definition at line 205 of file SiTrackerSpacePointFinder.h.

206{this, "AllClusters", false, "process all clusters without limits"};

◆ m_beamSpotKey

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

For beam spot.

Definition at line 155 of file SiTrackerSpacePointFinder.h.

155{ this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };

◆ m_cachemode

bool InDet::SiTrackerSpacePointFinder::m_cachemode {false}
private

used for online MT counters

Definition at line 207 of file SiTrackerSpacePointFinder.h.

207{false};

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

BooleanProperty InDet::SiTrackerSpacePointFinder::m_doEndcapEtaOverlapSP {this,"doEndcapEtaOverlapSP", false}
private

Definition at line 211 of file SiTrackerSpacePointFinder.h.

211{this,"doEndcapEtaOverlapSP", false};

◆ 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 AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_idHelper

const SCT_ID* InDet::SiTrackerSpacePointFinder::m_idHelper {nullptr}
private

Definition at line 194 of file SiTrackerSpacePointFinder.h.

194{nullptr};

◆ m_idHelperPixel

const PixelID* InDet::SiTrackerSpacePointFinder::m_idHelperPixel {nullptr}
private

Definition at line 193 of file SiTrackerSpacePointFinder.h.

193{nullptr};

◆ m_monTool

ToolHandle<GenericMonitoringTool> InDet::SiTrackerSpacePointFinder::m_monTool {this, "monTool", "", "Monitoring tool"}
private

Definition at line 186 of file SiTrackerSpacePointFinder.h.

186{this, "monTool", "", "Monitoring tool"};

◆ m_nspacePoints

std::atomic<int> InDet::SiTrackerSpacePointFinder::m_nspacePoints {0}
mutableprivate

Definition at line 254 of file SiTrackerSpacePointFinder.h.

254{0};

◆ m_nspacePointsOverlap

std::atomic<int> InDet::SiTrackerSpacePointFinder::m_nspacePointsOverlap {0}
mutableprivate

Definition at line 255 of file SiTrackerSpacePointFinder.h.

255{0};

◆ m_numberOfEvents

std::atomic<int> InDet::SiTrackerSpacePointFinder::m_numberOfEvents {0}
mutableprivate

Definition at line 249 of file SiTrackerSpacePointFinder.h.

249{0};

◆ m_numberOfPixel

std::atomic<int> InDet::SiTrackerSpacePointFinder::m_numberOfPixel {0}
mutableprivate

Definition at line 250 of file SiTrackerSpacePointFinder.h.

250{0};

◆ m_numberOfSCT

std::atomic<int> InDet::SiTrackerSpacePointFinder::m_numberOfSCT {0}
mutableprivate

Definition at line 251 of file SiTrackerSpacePointFinder.h.

251{0};

◆ m_overlap

BooleanProperty InDet::SiTrackerSpacePointFinder::m_overlap {this, "ProcessOverlaps", true, "process overlaps of SCT wafers"}
private

Definition at line 203 of file SiTrackerSpacePointFinder.h.

204{this, "ProcessOverlaps", true, "process overlaps of SCT wafers"};

◆ m_overlapLimitEtaMax

FloatProperty InDet::SiTrackerSpacePointFinder::m_overlapLimitEtaMax {this, "OverlapLimitEtaMax", 3.0, "high overlap limit for eta-neighbours"}
private

Definition at line 228 of file SiTrackerSpacePointFinder.h.

229{this, "OverlapLimitEtaMax", 3.0, "high overlap limit for eta-neighbours"};

◆ m_overlapLimitEtaMin

FloatProperty InDet::SiTrackerSpacePointFinder::m_overlapLimitEtaMin {this, "OverlapLimitEtaMin", 1.68, "low overlap limit for eta-neighbours"}
private

Definition at line 226 of file SiTrackerSpacePointFinder.h.

227{this, "OverlapLimitEtaMin", 1.68, "low overlap limit for eta-neighbours"};

◆ m_overlapLimitOpposite

FloatProperty InDet::SiTrackerSpacePointFinder::m_overlapLimitOpposite {this, "OverlapLimitOpposite", 2.8, "overlap limit for opposite-neighbour"}
private

Definition at line 222 of file SiTrackerSpacePointFinder.h.

223{this, "OverlapLimitOpposite", 2.8, "overlap limit for opposite-neighbour"};

◆ m_overlapLimitPhi

FloatProperty InDet::SiTrackerSpacePointFinder::m_overlapLimitPhi {this, "OverlapLimitPhi", 5.64, "overlap limit for phi-neighbours"}
private

Definition at line 224 of file SiTrackerSpacePointFinder.h.

225{this, "OverlapLimitPhi", 5.64, "overlap limit for phi-neighbours"};

◆ m_overrideBS

BooleanProperty InDet::SiTrackerSpacePointFinder::m_overrideBS {this, "OverrideBeamSpot", false}
private

Definition at line 236 of file SiTrackerSpacePointFinder.h.

236{this, "OverrideBeamSpot", false};

◆ m_pixCacheHits

std::atomic<int> InDet::SiTrackerSpacePointFinder::m_pixCacheHits {0}
mutableprivate

Definition at line 253 of file SiTrackerSpacePointFinder.h.

253{0};

◆ m_Pixel_clcontainerKey

SG::ReadHandleKey<PixelClusterContainer> InDet::SiTrackerSpacePointFinder::m_Pixel_clcontainerKey {this, "PixelsClustersName", "PixelClusters", "Pixel clContainer"}
private

Definition at line 147 of file SiTrackerSpacePointFinder.h.

147{this, "PixelsClustersName", "PixelClusters", "Pixel clContainer"};

◆ m_Sct_clcontainerKey

SG::ReadHandleKey<SCT_ClusterContainer> InDet::SiTrackerSpacePointFinder::m_Sct_clcontainerKey {this, "SCT_ClustersName", "SCT_Clusters", "SCT clContainer"}
private

Definition at line 146 of file SiTrackerSpacePointFinder.h.

146{this, "SCT_ClustersName", "SCT_Clusters", "SCT clContainer"};

◆ m_sctCacheHits

std::atomic<int> InDet::SiTrackerSpacePointFinder::m_sctCacheHits {0}
mutableprivate

Definition at line 252 of file SiTrackerSpacePointFinder.h.

252{0};

◆ m_SCTDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> InDet::SiTrackerSpacePointFinder::m_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
private

For SCT alignment.

Definition at line 159 of file SiTrackerSpacePointFinder.h.

159{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};

◆ m_SCTPropertiesKey

SG::ReadCondHandleKey<InDet::SiElementPropertiesTable> InDet::SiTrackerSpacePointFinder::m_SCTPropertiesKey {this, "SCTPropertiesKey", "SCT_ElementPropertiesTable", "Key of input SiElementPropertiesTable for SCT"}
private

To get SCT neighbours.

Definition at line 157 of file SiTrackerSpacePointFinder.h.

157{this, "SCTPropertiesKey", "SCT_ElementPropertiesTable", "Key of input SiElementPropertiesTable for SCT"};

◆ m_selectPixels

BooleanProperty InDet::SiTrackerSpacePointFinder::m_selectPixels {this, "ProcessPixels", true}
private

Definition at line 201 of file SiTrackerSpacePointFinder.h.

201{this, "ProcessPixels", true};

◆ m_selectSCTs

BooleanProperty InDet::SiTrackerSpacePointFinder::m_selectSCTs {this, "ProcessSCTs", true}
private

Definition at line 202 of file SiTrackerSpacePointFinder.h.

202{this, "ProcessSCTs", true};

◆ m_SiSpacePointMakerTool

ToolHandle< SiSpacePointMakerTool > InDet::SiTrackerSpacePointFinder::m_SiSpacePointMakerTool {this, "SiSpacePointMakerTool", "InDet::SiSpacePointMakerTool"}
private

Definition at line 185 of file SiTrackerSpacePointFinder.h.

185{this, "SiSpacePointMakerTool", "InDet::SiSpacePointMakerTool"};

◆ m_SpacePointCache_PixKey

SG::UpdateHandleKey<SpacePointCache> InDet::SiTrackerSpacePointFinder::m_SpacePointCache_PixKey {this, "SpacePointCachePix", ""}
private

Definition at line 177 of file SiTrackerSpacePointFinder.h.

178{this, "SpacePointCachePix", ""};

◆ m_SpacePointCache_SCTKey

SG::UpdateHandleKey<SpacePointCache> InDet::SiTrackerSpacePointFinder::m_SpacePointCache_SCTKey {this, "SpacePointCacheSCT", ""}
private

Definition at line 175 of file SiTrackerSpacePointFinder.h.

176{this, "SpacePointCacheSCT", ""};

◆ m_SpacePointContainer_SCTKey

SG::WriteHandleKey<SpacePointContainer> InDet::SiTrackerSpacePointFinder::m_SpacePointContainer_SCTKey {this, "SpacePointsSCTName", "SCT_SpacePoints", "SpacePoint SCT container"}
private

Definition at line 166 of file SiTrackerSpacePointFinder.h.

166{this, "SpacePointsSCTName", "SCT_SpacePoints", "SpacePoint SCT container"};

◆ m_SpacePointContainerPixelKey

SG::WriteHandleKey<SpacePointContainer> InDet::SiTrackerSpacePointFinder::m_SpacePointContainerPixelKey {this, "SpacePointsPixelName", "PixelSpacePoints", "SpacePoint Pixel container"}
private

Definition at line 167 of file SiTrackerSpacePointFinder.h.

167{this, "SpacePointsPixelName", "PixelSpacePoints", "SpacePoint Pixel container"};

◆ m_spacepointoverlapCollectionKey

SG::WriteHandleKey<SpacePointOverlapCollection> InDet::SiTrackerSpacePointFinder::m_spacepointoverlapCollectionKey {this, "SpacePointsOverlapName", "OverlapSpacePoints", "Space Point Overlap collection"}
private

Definition at line 168 of file SiTrackerSpacePointFinder.h.

168{this, "SpacePointsOverlapName", "OverlapSpacePoints", "Space Point Overlap collection"};

◆ m_useDataPoolWithCache

BooleanProperty InDet::SiTrackerSpacePointFinder::m_useDataPoolWithCache {this, "useDataPoolWithCache", false, "use DataPool With Cache"}
private

Definition at line 208 of file SiTrackerSpacePointFinder.h.

209{this, "useDataPoolWithCache", false, "use DataPool With Cache"};

◆ m_useSCTLayerDep_OverlapCuts

BooleanProperty InDet::SiTrackerSpacePointFinder::m_useSCTLayerDep_OverlapCuts {this,"useSCTLayerDep_OverlapCuts", true}
private

Definition at line 210 of file SiTrackerSpacePointFinder.h.

210{this,"useSCTLayerDep_OverlapCuts", true};

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

◆ m_xVertex

FloatProperty InDet::SiTrackerSpacePointFinder::m_xVertex {this, "VertexX", 0.}
private

Definition at line 237 of file SiTrackerSpacePointFinder.h.

237{this, "VertexX", 0.};

◆ m_yVertex

FloatProperty InDet::SiTrackerSpacePointFinder::m_yVertex {this, "VertexY", 0.}
private

Definition at line 238 of file SiTrackerSpacePointFinder.h.

238{this, "VertexY", 0.};

◆ m_zVertex

FloatProperty InDet::SiTrackerSpacePointFinder::m_zVertex {this, "VertexZ", 0.}
private

Definition at line 239 of file SiTrackerSpacePointFinder.h.

239{this, "VertexZ", 0.};

The documentation for this class was generated from the following files: