ATLAS Offline Software
Loading...
Searching...
No Matches
ActsEgammaSelectedTrackCopy Class Reference

ACTS-specific algorithm for selecting tracks to be GSF refitted. More...

#include <ActsEgammaSelectedTrackCopy.h>

Inheritance diagram for ActsEgammaSelectedTrackCopy:
Collaboration diagram for ActsEgammaSelectedTrackCopy:

Classes

struct  CaloMatch

Public Member Functions

 ActsEgammaSelectedTrackCopy (const std::string &name, ISvcLocator *pSvcLocator)
 Default constructor.
virtual ~ActsEgammaSelectedTrackCopy () override=default
virtual StatusCode initialize () override final
virtual StatusCode finalize () override final
virtual StatusCode execute (const EventContext &ctx) const override final
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
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

Static Public Attributes

static constexpr double s_calorimeterEtaCoverage = 1.5
static constexpr double s_maxExtrapolationRadius = 2250.0

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

bool matchWithExtrapolation (const EventContext &ctx, const xAOD::CaloCluster &cluster, const xAOD::TrackParticle &track, const std::shared_ptr< const Acts::Surface > &perigeeSurface) const
 Track selection method.
bool checkBroadCriteria (const xAOD::CaloCluster &cluster, const xAOD::TrackParticle &track) const
std::array< std::optional< CaloMatch >, 4 > extrapolateToCalo (const Acts::BoundTrackParameters &parameters, const xAOD::CaloCluster &cluster, const EventContext &ctx) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

PublicToolHandle< ActsTrk::ITrackingGeometryToolm_trackingGeometryTool {this, "TrackingGeometryTool", ""}
ToolHandle< ActsTrk::IExtrapolationToolm_extrapolationTool
ToolHandle< IegammaCaloClusterSelectorm_egammaCaloClusterSelector
 Tool to filter the calo clusters.
SG::ReadHandleKey< xAOD::CaloClusterContainerm_clusterContainerKey
 Names of input output collections.
SG::ReadHandleKey< xAOD::TrackParticleContainerm_trackParticleContainerKey
SG::ReadDecorHandleKey< xAOD::TrackParticleContainerm_trackParticleTimeDecorKey
SG::ReadCondHandleKey< CaloDetDescrManagerm_caloDetDescrMgrKey
SG::WriteHandleKey< ConstDataVector< xAOD::TrackParticleContainer > > m_OutputTrkPartContainerKey
Gaudi::Property< double > m_broadDeltaEta
 Broad windows.
Gaudi::Property< double > m_broadDeltaPhi
Gaudi::Property< double > m_narrowDeltaEta
 Narrow windows.
Gaudi::Property< double > m_narrowDeltaPhi
Gaudi::Property< double > m_narrowDeltaPhiBrem
Gaudi::Property< double > m_narrowRescale
Gaudi::Property< double > m_narrowRescaleBrem
std::array< Acts::GeometryIdentifier, 4 > m_barrelCaloGeoIds
Gaudi::Accumulators::Counter m_AllClusters {}
Gaudi::Accumulators::Counter m_SelectedClusters {}
Gaudi::Accumulators::Counter m_AllTracks {}
Gaudi::Accumulators::Counter m_SelectedTracks {}
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

Detailed Description

ACTS-specific algorithm for selecting tracks to be GSF refitted.

This is a variant of egammaSelectedTrackCopy with modified selection logic for ACTS track extrapolation to the calorimeter.

Definition at line 46 of file ActsEgammaSelectedTrackCopy.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

◆ ActsEgammaSelectedTrackCopy()

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

Default constructor.

Definition at line 32 of file ActsEgammaSelectedTrackCopy.cxx.

34 : AthReentrantAlgorithm(name, pSvcLocator)
35{}

◆ ~ActsEgammaSelectedTrackCopy()

virtual ActsEgammaSelectedTrackCopy::~ActsEgammaSelectedTrackCopy ( )
overridevirtualdefault

Member Function Documentation

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

◆ checkBroadCriteria()

bool ActsEgammaSelectedTrackCopy::checkBroadCriteria ( const xAOD::CaloCluster & cluster,
const xAOD::TrackParticle & track ) const
private

Definition at line 299 of file ActsEgammaSelectedTrackCopy.cxx.

301{
302 const Trk::Perigee& perigee = track.perigeeParameters();
303
304 // Get Perigee Parameters.
305 const double trkPhi = perigee.parameters()[Trk::phi];
306 const double z_perigee = perigee.position().z();
307 const Amg::Vector3D PerigeeXYZPosition(perigee.position().x(),
308 perigee.position().y(),
309 z_perigee);
310
311 // Get Cluster parameters.
312 const double clusterEta = xAOD::EgammaHelpers::isFCAL(&cluster) ? cluster.eta() : cluster.etaBE(2);
313 const bool isEndCap = !xAOD::EgammaHelpers::isBarrel(&cluster);
314
315 // Use perigee.eta() only if sufficient hits in the Si.
316 const double Et = cluster.e() / std::cosh(perigee.eta());
317
318 ATH_MSG_VERBOSE("clusterEta: " << clusterEta);
319 ATH_MSG_VERBOSE("perigee.eta(): " << perigee.eta());
320 ATH_MSG_VERBOSE("Et: " << Et);
321 ATH_MSG_VERBOSE("isEndCap: " << std::boolalpha << isEndCap);
322
323 // Calculate the eta/phi of the cluster as would be seen from the perigee
324 // position of the Track.
325 const Amg::Vector3D globalClusterPosWrtPerigee = CandidateMatchHelpers::approxXYZwrtPoint(
326 cluster, perigee.position(), isEndCap);
327
328 // Calculate the possible rotation of the track.
329 // Once assuming the cluster Et being the better estimate (e.g big brem).
330 const double phiRotRescaled = CandidateMatchHelpers::PhiROT(
331 Et, perigee.eta(), track.charge(), perigee.position().perp(), isEndCap);
332
333 // And also assuming the track Pt being correct.
334 const double phiRotTrack = CandidateMatchHelpers::PhiROT(
335 track.pt(), perigee.eta(), track.charge(), perigee.position().perp(), isEndCap);
336
337 const double clusterPhiCorrected = globalClusterPosWrtPerigee.phi();
338
339 // DeltaPhi between the track and the cluster.
340 const double deltaPhiStd = P4Helpers::deltaPhi(clusterPhiCorrected, trkPhi);
341 const bool failPhiStd = std::abs(deltaPhiStd) > m_broadDeltaPhi;
342
343 // DeltaPhi between the track and the cluster accounting for rotation assuming
344 // cluster Et is a better estimator.
345 const double trkPhiRescaled = P4Helpers::deltaPhi(trkPhi, phiRotRescaled);
346 const double deltaPhiRescaled = P4Helpers::deltaPhi(clusterPhiCorrected, trkPhiRescaled);
347 const bool failPhiRescalded = std::abs(deltaPhiRescaled) > m_broadDeltaPhi;
348
349 // DeltaPhi between the track and the cluster accounting for rotation.
350 const double trkPhiCorrTrack = P4Helpers::deltaPhi(trkPhi, phiRotTrack);
351 const double deltaPhiTrack = P4Helpers::deltaPhi(clusterPhiCorrected, trkPhiCorrTrack);
352 const bool failPhiTrack = std::abs(deltaPhiTrack) > m_broadDeltaPhi;
353
354 // Broad phi check.
355 if (failPhiRescalded && failPhiTrack && failPhiStd) {
357 "FAILS broad window phi match (track phi, phirotCluster , phiRotTrack , " <<
358 "cluster phi corrected, cluster phi): ( " <<
359 trkPhi << ", " <<
360 phiRotRescaled << ", " <<
361 phiRotTrack << ", " <<
362 clusterPhiCorrected << ", " <<
363 cluster.phi() << ")"
364 );
365 return false;
366 }
367
368 // Broad eta check.
369 const double clusterEtaCorrected = globalClusterPosWrtPerigee.eta();
370 const bool failEta = std::abs(cluster.eta() - perigee.eta()) > m_broadDeltaEta;
371 const bool failEtaCorrected = std::abs(globalClusterPosWrtPerigee.eta() - perigee.eta()) > m_broadDeltaEta;
372
373 if (failEta && failEtaCorrected) {
375 "FAILS broad window eta match (track eta, cluster eta, cluster eta corrected): ( " <<
376 perigee.eta() << ", " <<
377 cluster.eta() << ", " <<
378 clusterEtaCorrected << " )"
379 );
380 return false;
381 }
382
383 return true;
384}
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
Gaudi::Property< double > m_broadDeltaPhi
Gaudi::Property< double > m_broadDeltaEta
Broad windows.
double eta() const
Access method for pseudorapidity - from momentum.
const Amg::Vector3D & position() const
Access method for the position.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
Eigen::Matrix< double, 3, 1 > Vector3D
double PhiROT(const double pt, const double eta, const int charge, const double r_start, const bool isEndCap)
Function to calculate the approximate rotation in phi/bending of a track until it reaches the calo.
Amg::Vector3D approxXYZwrtPoint(const xAOD::CaloCluster &cluster, const Amg::Vector3D &point, const bool isEndCap)
Function to get the (x,y,z) of the cluster wrt to a point (x0,y0,z0).
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition P4Helpers.h:34
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ phi
Definition ParamDefs.h:75
@ deltaPhiRescaled
difference between the cluster phi (sampling 2) and the phi of the track extrapolated from the perige...
bool isBarrel(const xAOD::Egamma *eg)
return true if the cluster is in the barrel
bool isFCAL(const xAOD::CaloCluster *cluster)
return true if the cluster (or the majority of its energy) is in the FCAL0

◆ 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 ActsEgammaSelectedTrackCopy::execute ( const EventContext & ctx) const
finaloverridevirtual

Definition at line 104 of file ActsEgammaSelectedTrackCopy.cxx.

105{
106 SG::ReadHandle<xAOD::CaloClusterContainer> clusterTES = SG::makeHandle(m_clusterContainerKey, ctx);
107 ATH_CHECK(clusterTES.isValid());
108 m_AllClusters += clusterTES->size();
109
110 SG::ReadHandle<xAOD::TrackParticleContainer> trackTES = SG::makeHandle(m_trackParticleContainerKey, ctx);
111 ATH_CHECK(trackTES.isValid());
112 m_AllTracks += trackTES->size();
113
114 // Here it just needs to be a view copy , i.e the collection of selected
115 // trackParticles we create does not really own its elements.
116 using output_collection_t = ConstDataVector<xAOD::TrackParticleContainer>;
117 SG::WriteHandle< output_collection_t > outputTrkPartContainer = SG::makeHandle(m_OutputTrkPartContainerKey, ctx);
118 ATH_CHECK( outputTrkPartContainer.record( std::make_unique<output_collection_t>(SG::VIEW_ELEMENTS) ) );
119 output_collection_t *viewCopy = outputTrkPartContainer.ptr();
120
121 SG::ReadCondHandle<CaloDetDescrManager> caloDetDescrMgrHandle = SG::makeHandle(m_caloDetDescrMgrKey, ctx);
122 ATH_CHECK(caloDetDescrMgrHandle.isValid());
123
124 const CaloDetDescrManager* calodetdescrmgr = caloDetDescrMgrHandle.cptr();
125
126 // Perigee surface at the origin. TODO: use beamspot conditions data.
127 auto perigeeSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(Acts::Vector3::Zero());
128
129 // Check which clusters to seed on.
130 std::vector<const xAOD::CaloCluster*> passingClusters;
131 passingClusters.reserve(clusterTES->size());
132 for (const xAOD::CaloCluster* cluster : *clusterTES) {
133 if (m_egammaCaloClusterSelector->passSelection(cluster, *calodetdescrmgr)) {
134 passingClusters.push_back(cluster);
135 }
136 }
137
138 if( passingClusters.empty() ) {
139 ATH_MSG_DEBUG("No cluster left after selection");
140 return StatusCode::SUCCESS;
141 }
142
143 m_SelectedClusters += passingClusters.size();
144
145 for (const xAOD::TrackParticle* track : *trackTES) {
146 // For now only barrel
147 if( std::abs(track->eta()) > s_calorimeterEtaCoverage ) {
148 ATH_MSG_DEBUG("Track eta " << track->eta() << " outside coverage " <<
149 "|" << s_calorimeterEtaCoverage << "|");
150 continue;
151 }
152
153
154 for (const xAOD::CaloCluster* cluster : passingClusters) {
155 // First we will see if it fails the quick match.
156 // Then if it passed it will get 2 chances to be selected.
157 // One if it matches from last measurement.
158 // The second if it matched from Perigee rescales.
159 if( !checkBroadCriteria(*cluster, *track) ) {
160 ATH_MSG_DEBUG("Track fails broad criteria");
161 continue;
162 }
163
164 if (matchWithExtrapolation(ctx, *cluster, *track, perigeeSurface)) {
165 viewCopy->push_back(track);
166 break;
167 }
168 }
169 }
170
171 m_SelectedTracks += viewCopy->size();
172
173 return StatusCode::SUCCESS;
174}
#define ATH_CHECK
Evaluate an expression and check for errors.
Gaudi::Accumulators::Counter m_AllClusters
bool checkBroadCriteria(const xAOD::CaloCluster &cluster, const xAOD::TrackParticle &track) const
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
static constexpr double s_calorimeterEtaCoverage
bool matchWithExtrapolation(const EventContext &ctx, const xAOD::CaloCluster &cluster, const xAOD::TrackParticle &track, const std::shared_ptr< const Acts::Surface > &perigeeSurface) const
Track selection method.
Gaudi::Accumulators::Counter m_SelectedClusters
SG::WriteHandleKey< ConstDataVector< xAOD::TrackParticleContainer > > m_OutputTrkPartContainerKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clusterContainerKey
Names of input output collections.
Gaudi::Accumulators::Counter m_SelectedTracks
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloDetDescrMgrKey
Gaudi::Accumulators::Counter m_AllTracks
ToolHandle< IegammaCaloClusterSelector > m_egammaCaloClusterSelector
Tool to filter the calo clusters.
const_pointer_type cptr()
virtual bool isValid() override final
Can the handle be successfully dereferenced?
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
pointer_type ptr()
Dereference the pointer.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TrackParticle_v1 TrackParticle
Reference the current persistent version:

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

◆ extrapolateToCalo()

std::array< std::optional< ActsEgammaSelectedTrackCopy::CaloMatch >, 4 > ActsEgammaSelectedTrackCopy::extrapolateToCalo ( const Acts::BoundTrackParameters & parameters,
const xAOD::CaloCluster & cluster,
const EventContext & ctx ) const
private

Definition at line 386 of file ActsEgammaSelectedTrackCopy.cxx.

389{
390 auto res = m_extrapolationTool.get()->propagationSteps(ctx, parameters);
391 if( !res.ok() ) {
392 ATH_MSG_DEBUG("Error during extrapolation: " << res.error().message());
393 return {};
394 }
395
396 const auto &[steps, _] = res.value();
397
398 std::array<std::optional<CaloMatch>, 4> matches{};
399 for(const auto &step : steps) {
400 if( step.surface == nullptr || step.surface->geometryId().sensitive() == 0 ) {
401 continue;
402 }
403 const auto &p = step.position;
404 if ( std::hypot(p.x(), p.y()) > s_maxExtrapolationRadius ) {
405 ATH_MSG_DEBUG("Extrapolated beyond calo radius, stopping.");
406 break;
407 }
408
409 ATH_MSG_VERBOSE("Extrapolated step at pos [r,z]: " << std::hypot(p.x(), p.y())
410 << ", " << p.z() << " - : " << step.geoID);
411
412 auto found = std::ranges::find_if(m_barrelCaloGeoIds, [&](const Acts::GeometryIdentifier &id){
413 return id.volume() == step.geoID.volume();
414 });
415
416 if( found == m_barrelCaloGeoIds.end() ) {
417 ATH_MSG_VERBOSE("Step not in barrel calo layers");
418 continue;
419 }
420 int layerIdx = std::distance(m_barrelCaloGeoIds.begin(), found);
421 assert(layerIdx >= 0 && layerIdx < 4);
422
423 if( matches.at(layerIdx).has_value() ) {
424 ATH_MSG_VERBOSE("Step in calo layer already visited");
425 continue;
426 }
427
428 auto eta = Acts::VectorHelpers::eta(p);
429 auto phi = Acts::VectorHelpers::phi(p);
430
431 double deltaEta = eta - cluster.etaBE(layerIdx);
432 double deltaPhi = P4Helpers::deltaPhi(phi, cluster.phiBE(layerIdx));
433
434 ATH_MSG_DEBUG("Step at pos [r,z]: " << std::hypot(p.x(), p.y()) <<
435 ", layerIdx: " << layerIdx <<
436 ", " << p.z() << " - : " << step.geoID <<
437 ", dEta: " << deltaEta << ", dPhi: " << deltaPhi);
438
439 matches.at(layerIdx) = CaloMatch{
440 layerIdx,
441 eta,
442 phi,
443 deltaEta,
445 };
446 }
447
448 return matches;
449}
Scalar eta() const
pseudorapidity method
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
Scalar phi() const
phi method
std::pair< std::vector< unsigned int >, bool > res
ToolHandle< ActsTrk::IExtrapolationTool > m_extrapolationTool
static constexpr double s_maxExtrapolationRadius
std::array< Acts::GeometryIdentifier, 4 > m_barrelCaloGeoIds
float phiBE(const unsigned layer) const
Get the phi in one layer of the EM Calo.
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
Definition P4Helpers.h:66

◆ 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 ActsEgammaSelectedTrackCopy::finalize ( )
finaloverridevirtual

Definition at line 91 of file ActsEgammaSelectedTrackCopy.cxx.

92{
93 ATH_MSG_INFO("===> ACTS egamma Selected Tracks Statistics ======");
94 ATH_MSG_INFO("--- All Central Clusters: " << m_AllClusters);
95 ATH_MSG_INFO("--- Selected Central Clusters: " << m_SelectedClusters);
96 ATH_MSG_INFO("--- All Tracks: " << m_AllTracks);
97 ATH_MSG_INFO("--- Selected Central Tracks: " << m_SelectedTracks);
98 ATH_MSG_INFO("<=================================================");
99
100 return StatusCode::SUCCESS;
101}
#define ATH_MSG_INFO(x)

◆ initialize()

StatusCode ActsEgammaSelectedTrackCopy::initialize ( )
finaloverridevirtual

Definition at line 38 of file ActsEgammaSelectedTrackCopy.cxx.

39{
41 ATH_CHECK(m_clusterContainerKey.initialize());
44 ATH_CHECK(m_caloDetDescrMgrKey.initialize());
45 ATH_CHECK(m_extrapolationTool->initialize());
47
48 // Here we extract the geometry identifiers of the 4 calo volumes in the ACTS geometry
49 // It seems more robust to do the matching with the volume name, since the geometry ID
50 // can change if details of the geometry change.
51 const static std::map<std::string, std::size_t> volIndex = {
52 {"PreSamplerB_Layer", 0},
53 {"EMB1_Layer", 1},
54 {"EMB2_Layer", 2},
55 {"EMB3_Layer", 3}
56 };
57
58 // Debug info in case volume matching fails
59 std::vector<std::string> unmatchedVolumes;
60
61 m_trackingGeometryTool->trackingGeometry()->visitVolumes([&](const Acts::TrackingVolume *vol) {
62 auto name = vol->volumeName();
63 if( volIndex.contains(name) ) {
64 ATH_MSG_DEBUG(vol->volumeName() << " - " << vol->geometryId() << " - surfaces: " << vol->surfaces().size());
65 m_barrelCaloGeoIds.at(volIndex.at(name)) = vol->geometryId();
66 } else {
67 unmatchedVolumes.push_back(name);
68 }
69 });
70
71 // Check that all geoIds were found
72 for(const auto &[geoId, layerInfo] : Acts::zip(m_barrelCaloGeoIds, volIndex)) {
73 if( geoId == Acts::GeometryIdentifier{} ) {
74 ATH_MSG_ERROR("Could not find geometry ID for barrel calo layer '" << layerInfo.first << "'");
75
76 ATH_MSG_ERROR("List of unmatched volumes:");
77 std::stringstream ss;
78 for( const auto &name : unmatchedVolumes ) {
79 ss << name << ", ";
80 }
81 ATH_MSG_ERROR(ss.str());
82
83 return StatusCode::FAILURE;
84 }
85 }
86
87 return StatusCode::SUCCESS;
88}
#define ATH_MSG_ERROR(x)
static Double_t ss
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool

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

◆ matchWithExtrapolation()

bool ActsEgammaSelectedTrackCopy::matchWithExtrapolation ( const EventContext & ctx,
const xAOD::CaloCluster & cluster,
const xAOD::TrackParticle & track,
const std::shared_ptr< const Acts::Surface > & perigeeSurface ) const
private

Track selection method.

Definition at line 177 of file ActsEgammaSelectedTrackCopy.cxx.

181{
182 using namespace Acts::UnitLiterals;
183
184 ATH_MSG_VERBOSE("Extrapolating track to calo cluster at position: "
185 << cluster.eta() << ", " << cluster.phi());
186
187 // Extrapolate from last measurement to the four EM layers.
188 unsigned int lastMeasIdx = 0;
189 if (!track.indexOfParameterAtPosition(lastMeasIdx, xAOD::LastMeasurement)) {
190 ATH_MSG_WARNING("TrackParticle has no last measurement parameters");
191 return false;
192 }
193
194 Acts::Vector3 lastPos{track.parameterX(lastMeasIdx),
195 track.parameterY(lastMeasIdx),
196 track.parameterZ(lastMeasIdx)};
197 Acts::Vector3 lastMom{track.parameterPX(lastMeasIdx),
198 track.parameterPY(lastMeasIdx),
199 track.parameterPZ(lastMeasIdx)};
200 lastMom *= Acts::UnitConstants::MeV;
201
202 ATH_MSG_DEBUG("Last measurement global position: " << lastPos.transpose());
203
204 Acts::BoundVector lastBoundParams = Acts::BoundVector::Zero();
205 lastBoundParams[Acts::eBoundPhi] = Acts::VectorHelpers::phi(lastMom);
206 lastBoundParams[Acts::eBoundTheta] = Acts::VectorHelpers::theta(lastMom);
207 lastBoundParams[Acts::eBoundQOverP] = track.charge() / lastMom.norm();
208
209 std::shared_ptr<const Acts::Surface> lastSurface =
210 Acts::CurvilinearSurface(lastPos, lastMom.normalized()).planeSurface()->getSharedPtr();
211 Acts::BoundTrackParameters boundPars{
212 lastSurface,
213 lastBoundParams,
214 std::nullopt,
215 Acts::ParticleHypothesis::electron()
216 };
217
218 // First try the EMB2, if this does not match, print a message and try any other calo layer
219 auto extractCaloMatch = [&](const auto &caloMatches) {
220 if( caloMatches.at(2).has_value() ) {
221 return caloMatches.at(2);;
222 }
223 ATH_MSG_DEBUG("No calo match at EM2, trying any other layer");
224 for( const auto &matchOpt : caloMatches ) {
225 if( matchOpt.has_value() ) {
226 ATH_MSG_DEBUG("Using calo match at layer " << matchOpt->layer);
227 return matchOpt;
228 }
229 }
230 return std::optional<CaloMatch>{};
231 };
232
233 auto caloMatches = extrapolateToCalo(boundPars, cluster, ctx);
234 auto caloMatch = extractCaloMatch(caloMatches);
235 if( !caloMatch.has_value() ) {
236 ATH_MSG_DEBUG("Could not extrapolate to calo from last measurement");
237 return false;
238 }
239
240 // Get the calo match at EM2.
241 ATH_MSG_DEBUG("Calo match from last measurement at " << caloMatch->layer
242 << ", dEta: " << caloMatch->deltaEta
243 << ", dPhi: " << caloMatch->deltaPhi);
244
245 // First check if delta eta is OK, fail if not (rescaling should not affect eta).
246 if (std::abs(caloMatch->deltaEta) > m_narrowDeltaEta) {
247 ATH_MSG_DEBUG("Fails narrow window eta match, deta=" << caloMatch->deltaEta);
248 return false;
249 }
250
251 // Selection in narrow phi window from last measurement.
252 if ( caloMatch->deltaPhi >= -m_narrowDeltaPhiBrem &&
253 caloMatch->deltaPhi <= m_narrowDeltaPhi ) {
254 ATH_MSG_DEBUG("Match from Last measurement is successful, deta=" << caloMatch->deltaEta
255 << " , dphi=" << caloMatch->deltaPhi);
256 return true;
257 }
258
259 // Now try the rescale from perigee
260 Acts::BoundVector paramsAtPerigee = Acts::BoundVector::Zero();
261 paramsAtPerigee[Acts::eBoundLoc0] = track.d0();
262 paramsAtPerigee[Acts::eBoundLoc1] = track.z0();
263 paramsAtPerigee[Acts::eBoundPhi] = track.phi0();
264 paramsAtPerigee[Acts::eBoundTheta] = track.theta();
265 paramsAtPerigee[Acts::eBoundQOverP] = track.charge() / (cluster.e() * Acts::UnitConstants::MeV);
266
267 Acts::BoundTrackParameters rescaledParsPerigee{
268 perigeeSurface,
269 paramsAtPerigee,
270 std::nullopt,
271 Acts::ParticleHypothesis::electron()
272 };
273
274 const auto caloMatchesRescaled = extrapolateToCalo(rescaledParsPerigee, cluster, ctx);
275 auto caloMatchRescaled = extractCaloMatch(caloMatchesRescaled);
276
277 if( !caloMatchRescaled.has_value() ) {
278 ATH_MSG_DEBUG("Could not extrapolate to calo from rescaled perigee");
279 return false;
280 }
281
282 // Get the calo match at EM2.
283 ATH_MSG_DEBUG("Calo match from perigee rescaled at " << caloMatchRescaled->layer
284 << ", dEta: " << caloMatchRescaled->deltaEta
285 << ", dPhi: " << caloMatchRescaled->deltaPhi);
286
287 // Selection in narrow phi window
288 if ( caloMatchRescaled->deltaPhi >= -m_narrowRescaleBrem &&
289 caloMatchRescaled->deltaPhi <= m_narrowRescale ) {
290 ATH_MSG_DEBUG("Match from Perigee Rescaled is successful, dphi=" << caloMatchRescaled->deltaPhi);
291 return true;
292 }
293
294 ATH_MSG_DEBUG("Match not successful");
295 return false;
296}
#define ATH_MSG_WARNING(x)
Gaudi::Property< double > m_narrowDeltaEta
Narrow windows.
Gaudi::Property< double > m_narrowDeltaPhi
Gaudi::Property< double > m_narrowDeltaPhiBrem
Gaudi::Property< double > m_narrowRescale
std::array< std::optional< CaloMatch >, 4 > extrapolateToCalo(const Acts::BoundTrackParameters &parameters, const xAOD::CaloCluster &cluster, const EventContext &ctx) const
Gaudi::Property< double > m_narrowRescaleBrem
@ LastMeasurement
Parameter defined at the position of the last measurement.

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

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

Gaudi::Accumulators::Counter ActsEgammaSelectedTrackCopy::m_AllClusters {}
mutableprivate

Definition at line 185 of file ActsEgammaSelectedTrackCopy.h.

185{};

◆ m_AllTracks

Gaudi::Accumulators::Counter ActsEgammaSelectedTrackCopy::m_AllTracks {}
mutableprivate

Definition at line 187 of file ActsEgammaSelectedTrackCopy.h.

187{};

◆ m_barrelCaloGeoIds

std::array<Acts::GeometryIdentifier, 4> ActsEgammaSelectedTrackCopy::m_barrelCaloGeoIds
private

Definition at line 183 of file ActsEgammaSelectedTrackCopy.h.

◆ m_broadDeltaEta

Gaudi::Property<double> ActsEgammaSelectedTrackCopy::m_broadDeltaEta
private
Initial value:
{
this,
"broadDeltaEta",
0.2,
"Value of broad cut for delta eta"
}

Broad windows.

Definition at line 133 of file ActsEgammaSelectedTrackCopy.h.

133 {
134 this,
135 "broadDeltaEta",
136 0.2,
137 "Value of broad cut for delta eta"
138 };

◆ m_broadDeltaPhi

Gaudi::Property<double> ActsEgammaSelectedTrackCopy::m_broadDeltaPhi
private
Initial value:
{
this,
"broadDeltaPhi",
0.3,
"Value of broad cut for delta phi"
}

Definition at line 140 of file ActsEgammaSelectedTrackCopy.h.

140 {
141 this,
142 "broadDeltaPhi",
143 0.3,
144 "Value of broad cut for delta phi"
145 };

◆ m_caloDetDescrMgrKey

SG::ReadCondHandleKey<CaloDetDescrManager> ActsEgammaSelectedTrackCopy::m_caloDetDescrMgrKey
private
Initial value:
{
this,
"CaloDetDescrManager",
"CaloDetDescrManager",
"SG Key for CaloDetDescrManager in the Condition Store"
}

Definition at line 118 of file ActsEgammaSelectedTrackCopy.h.

118 {
119 this,
120 "CaloDetDescrManager",
121 "CaloDetDescrManager",
122 "SG Key for CaloDetDescrManager in the Condition Store"
123 };

◆ m_clusterContainerKey

SG::ReadHandleKey<xAOD::CaloClusterContainer> ActsEgammaSelectedTrackCopy::m_clusterContainerKey
private
Initial value:
{
this,
"ClusterContainerName",
"egammaTopoCluster",
"Input calo cluster for seeding"
}

Names of input output collections.

Definition at line 98 of file ActsEgammaSelectedTrackCopy.h.

98 {
99 this,
100 "ClusterContainerName",
101 "egammaTopoCluster",
102 "Input calo cluster for seeding"
103 };

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

ToolHandle<IegammaCaloClusterSelector> ActsEgammaSelectedTrackCopy::m_egammaCaloClusterSelector
private
Initial value:
{
this,
"egammaCaloClusterSelector",
"egammaCaloClusterSelector",
"Tool that makes the cluster selection"
}

Tool to filter the calo clusters.

Definition at line 90 of file ActsEgammaSelectedTrackCopy.h.

90 {
91 this,
92 "egammaCaloClusterSelector",
93 "egammaCaloClusterSelector",
94 "Tool that makes the cluster selection"
95 };

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

ToolHandle<ActsTrk::IExtrapolationTool> ActsEgammaSelectedTrackCopy::m_extrapolationTool
private
Initial value:
{
this,
"ExtrapolationTool",
"ExtrapolationTool",
"Tool to run propagation in an ACTS trackign geometry"
}

Definition at line 82 of file ActsEgammaSelectedTrackCopy.h.

82 {
83 this,
84 "ExtrapolationTool",
85 "ExtrapolationTool",
86 "Tool to run propagation in an ACTS trackign geometry"
87 };

◆ m_narrowDeltaEta

Gaudi::Property<double> ActsEgammaSelectedTrackCopy::m_narrowDeltaEta
private
Initial value:
{
this,
"narrowDeltaEta",
0.05,
"Value of narrow cut for delta eta"
}

Narrow windows.

Definition at line 148 of file ActsEgammaSelectedTrackCopy.h.

148 {
149 this,
150 "narrowDeltaEta",
151 0.05,
152 "Value of narrow cut for delta eta"
153 };

◆ m_narrowDeltaPhi

Gaudi::Property<double> ActsEgammaSelectedTrackCopy::m_narrowDeltaPhi
private
Initial value:
{
this,
"narrowDeltaPhi",
0.05,
"Value of narrow cut for delta phi"
}

Definition at line 155 of file ActsEgammaSelectedTrackCopy.h.

155 {
156 this,
157 "narrowDeltaPhi",
158 0.05,
159 "Value of narrow cut for delta phi"
160 };

◆ m_narrowDeltaPhiBrem

Gaudi::Property<double> ActsEgammaSelectedTrackCopy::m_narrowDeltaPhiBrem
private
Initial value:
{
this,
"narrowDeltaPhiBrem",
0.2,
"Value of the narrow cut for delta phi in the brem direction"
}

Definition at line 162 of file ActsEgammaSelectedTrackCopy.h.

162 {
163 this,
164 "narrowDeltaPhiBrem",
165 0.2,
166 "Value of the narrow cut for delta phi in the brem direction"
167 };

◆ m_narrowRescale

Gaudi::Property<double> ActsEgammaSelectedTrackCopy::m_narrowRescale
private
Initial value:
{
this,
"narrowDeltaPhiRescale",
0.05,
"Value of the narrow cut for delta phi Rescale"
}

Definition at line 169 of file ActsEgammaSelectedTrackCopy.h.

169 {
170 this,
171 "narrowDeltaPhiRescale",
172 0.05,
173 "Value of the narrow cut for delta phi Rescale"
174 };

◆ m_narrowRescaleBrem

Gaudi::Property<double> ActsEgammaSelectedTrackCopy::m_narrowRescaleBrem
private
Initial value:
{
this,
"narrowDeltaPhiRescaleBrem",
0.1,
"Value of the narrow cut for delta phi Rescale Brem"
}

Definition at line 176 of file ActsEgammaSelectedTrackCopy.h.

176 {
177 this,
178 "narrowDeltaPhiRescaleBrem",
179 0.1,
180 "Value of the narrow cut for delta phi Rescale Brem"
181 };

◆ m_OutputTrkPartContainerKey

SG::WriteHandleKey<ConstDataVector<xAOD::TrackParticleContainer> > ActsEgammaSelectedTrackCopy::m_OutputTrkPartContainerKey
private
Initial value:
{
this,
"OutputTrkPartContainerName",
"ActsEgammaSelectedTrackParticles",
"Output selected TrackParticles"
}

Definition at line 125 of file ActsEgammaSelectedTrackCopy.h.

125 {
126 this,
127 "OutputTrkPartContainerName",
128 "ActsEgammaSelectedTrackParticles",
129 "Output selected TrackParticles"
130 };

◆ m_SelectedClusters

Gaudi::Accumulators::Counter ActsEgammaSelectedTrackCopy::m_SelectedClusters {}
mutableprivate

Definition at line 186 of file ActsEgammaSelectedTrackCopy.h.

186{};

◆ m_SelectedTracks

Gaudi::Accumulators::Counter ActsEgammaSelectedTrackCopy::m_SelectedTracks {}
mutableprivate

Definition at line 188 of file ActsEgammaSelectedTrackCopy.h.

188{};

◆ m_trackingGeometryTool

PublicToolHandle<ActsTrk::ITrackingGeometryTool> ActsEgammaSelectedTrackCopy::m_trackingGeometryTool {this, "TrackingGeometryTool", ""}
private

Definition at line 80 of file ActsEgammaSelectedTrackCopy.h.

80{this, "TrackingGeometryTool", ""};

◆ m_trackParticleContainerKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> ActsEgammaSelectedTrackCopy::m_trackParticleContainerKey
private
Initial value:
{
this,
"TrackParticleContainerName",
"InDetTrackParticles",
"Input TrackParticles to select from"
}

Definition at line 105 of file ActsEgammaSelectedTrackCopy.h.

105 {
106 this,
107 "TrackParticleContainerName",
108 "InDetTrackParticles",
109 "Input TrackParticles to select from"
110 };

◆ m_trackParticleTimeDecorKey

SG::ReadDecorHandleKey<xAOD::TrackParticleContainer> ActsEgammaSelectedTrackCopy::m_trackParticleTimeDecorKey
private
Initial value:
{
this,
"TrackParticleTimeDecoration",
"",
"Time assigned to this track"}

Definition at line 112 of file ActsEgammaSelectedTrackCopy.h.

112 {
113 this,
114 "TrackParticleTimeDecoration",
115 "",
116 "Time assigned to this track"};

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

◆ s_calorimeterEtaCoverage

double ActsEgammaSelectedTrackCopy::s_calorimeterEtaCoverage = 1.5
staticconstexpr

Definition at line 57 of file ActsEgammaSelectedTrackCopy.h.

◆ s_maxExtrapolationRadius

double ActsEgammaSelectedTrackCopy::s_maxExtrapolationRadius = 2250.0
staticconstexpr

Definition at line 58 of file ActsEgammaSelectedTrackCopy.h.


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