ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::CaloExtensionAlg Class Reference

The CaloExtensionAlg takes the ID / ITk tracks from their track state of their last measurement and propagates them to the exit portal of the calorimeter tracking volume. More...

#include <CaloExtensionAlg.h>

Inheritance diagram for ActsTrk::CaloExtensionAlg:

Public Member Functions

virtual StatusCode initialize () 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 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
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
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

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

using ClusterVec_t = std::vector<const xAOD::CaloCluster*>
 Use an Acts::Grid to segment the cluster in eta / phi space to reduce the matching combinatorics between tracks and clusters First define some abrivations to compactify the syntax --> Abrivation of the CaloClusters per grid cell.
using EtaAxis_t
 Along eta define an equidistance binning without any overflow bin.
using PhiAxis_t
 Along phi define an equidistance binning but with a circular wrapping connection between the two edge bins.
using SortedCluster_t = Acts::Grid<ClusterVec_t, EtaAxis_t, PhiAxis_t>
 Define the segmen cluster grid made out of calo cluster containers segmented in eta & phi.
using CurvedStepper_t = Acts::EigenStepper<Acts::EigenStepperDefaultExtension>
 Setup an own instance of the Acts Prpoagator to schedule the BoundTrackParameter recording & to define a more prope abort condition.
using CurvedPropagator_t = Acts::Propagator<CurvedStepper_t, Acts::Navigator>
using CaloSample = xAOD::CaloCluster::CaloSample
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

SortedCluster_t selectAndSort (const xAOD::CaloClusterContainer &clusters, const CaloDetDescrManager *detMgr) const
 Selects the calo clusters for the matching to the ID tracks based on the eta range and on a minimum threshold on the energy.
std::unique_ptr< CaloExtensionpropagateToCaloExit (const EventContext &ctx, const xAOD::TrackParticle *track) const
 Propagates the Track from the last track measurement to the calorimeter exit and records all surface crossings between as Acts::BoundTrackParameters.
void matchClusters (const Acts::GeometryContext &tgContext, std::span< const xAOD::CaloCluster *const > clusterContainer, CaloExtension &caloExtension) const
 Match the selected calorimeter clusters to the calo extension.
bool checkBroadCriteria (const Acts::GeometryContext &tgContext, const xAOD::CaloCluster &cluster, const Acts::BoundTrackParameters &lastTrkPars) const
 Checks whether the track @ its last measurement state is roughly compatible with the calorimeter cluster.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

std::unique_ptr< CurvedPropagator_tm_propagator {}
 The instance of the propagator.
ToolHandle< InDet::IInDetTrackSelectionToolm_trackSelector {this, "TrackSelectionTool" , ""}
 Track quality selection tool (optional).
ToolHandle< IegammaCaloClusterSelectorm_clusterSelector
 Tool to filter the calo clusters.
ServiceHandle< ActsTrk::ITrackingGeometrySvcm_trackingGeometrySvc {this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"}
 Tracking geometry service.
ActsTrk::ContextUtility m_ctxProvider {this}
 Context provider for geometry, magnetic field and calibration contexts.
ToolHandle< IExtrapolationToolm_extrapolationTool {this, "ExtrapolationTool", ""}
 Acts extrapolation tool to record the surface intersections.
SG::ReadHandleKey< xAOD::CaloClusterContainerm_clusterContainerKey {this, "ClusterContainerName", "CaloCalTopoClusters"}
 The input calorimeter cluster collection.
SG::ReadHandleKey< xAOD::TrackParticleContainerm_trackParticleContainerKey
 The input track particle collection.
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_extensionDecorKey
 Decorate the link to the associated CaloExtension directly onto the ID / ITk track.
SG::ReadCondHandleKey< CaloDetDescrManagerm_caloDetDescrMgrKey {this, "CaloDetDescrManager", "CaloDetDescrManager"}
 Calo description manager.
SG::WriteHandleKey< CaloExtensionContainerm_caloExtensionKey {this, "CaloExtensionName", "CaloExtension"}
Gaudi::Property< float > m_trackPt {this, "minPt", 2.5*Gaudi::Units::GeV}
 The minimum momentum cut applied on the ID tracks to be considered.
Gaudi::Property< float > m_broadDeltaEta {this, "broadDeltaEta", 0.2, "Value of broad cut for delta eta" }
 Broad windowsto initially match the calo cluster with the track exit parameters.
Gaudi::Property< float > m_broadDeltaPhi {this, "broadDeltaPhi", 0.3, "Value of broad cut for delta phi" }
Gaudi::Property< float > m_minClustEt {this, "minClusterEt", 10.*Gaudi::Units::MeV}
 Minimum requirement on the cluster's transversal energy in order to be considered.
Gaudi::Property< float > m_maxClustEta {this, "maxClustEta", 10.}
 Maximum cut on the cluster's eta in order to be considered.
Gaudi::Property< float > m_narrowDeltaEta {this, "narrowDeltaEta", 0.05}
 Narrow windows.
Gaudi::Property< float > m_narrowDeltaPhi {this, "narrowDeltaPhi", 0.05}
std::unordered_map< Acts::GeometryIdentifier, CaloSamplem_geoLayerIds {}
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

The CaloExtensionAlg takes the ID / ITk tracks from their track state of their last measurement and propagates them to the exit portal of the calorimeter tracking volume.

Surface crossing along the track are recorded as Acts::BoundTrackParameters and then stored in the CaloExtension object which is written to StoreGate but also decorated to the TrackParticle via an ElementLink.

CaloClusters are then sorted into an eta/phi grid to speed-up the matching with the ITk tracks. Coarsely matched clusters are then matched to particular track parameters that have been recorded before.

Definition at line 46 of file CaloExtensionAlg.h.

Member Typedef Documentation

◆ CaloSample

◆ ClusterVec_t

Use an Acts::Grid to segment the cluster in eta / phi space to reduce the matching combinatorics between tracks and clusters First define some abrivations to compactify the syntax --> Abrivation of the CaloClusters per grid cell.

Definition at line 57 of file CaloExtensionAlg.h.

◆ CurvedPropagator_t

using ActsTrk::CaloExtensionAlg::CurvedPropagator_t = Acts::Propagator<CurvedStepper_t, Acts::Navigator>
private

Definition at line 112 of file CaloExtensionAlg.h.

◆ CurvedStepper_t

using ActsTrk::CaloExtensionAlg::CurvedStepper_t = Acts::EigenStepper<Acts::EigenStepperDefaultExtension>
private

Setup an own instance of the Acts Prpoagator to schedule the BoundTrackParameter recording & to define a more prope abort condition.

Definition at line 111 of file CaloExtensionAlg.h.

◆ EtaAxis_t

Initial value:
Acts::Axis<Acts::AxisType::Equidistant,
Acts::AxisBoundaryType::Bound>

Along eta define an equidistance binning without any overflow bin.

Definition at line 59 of file CaloExtensionAlg.h.

◆ PhiAxis_t

Initial value:
Acts::Axis<Acts::AxisType::Equidistant,
Acts::AxisBoundaryType::Closed>

Along phi define an equidistance binning but with a circular wrapping connection between the two edge bins.

Definition at line 63 of file CaloExtensionAlg.h.

◆ SortedCluster_t

Define the segmen cluster grid made out of calo cluster containers segmented in eta & phi.

Definition at line 67 of file CaloExtensionAlg.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Function Documentation

◆ checkBroadCriteria()

bool ActsTrk::CaloExtensionAlg::checkBroadCriteria ( const Acts::GeometryContext & tgContext,
const xAOD::CaloCluster & cluster,
const Acts::BoundTrackParameters & lastTrkPars ) const
private

Checks whether the track @ its last measurement state is roughly compatible with the calorimeter cluster.

Parameters
tgContextThe geometry context to align the bound track parameters
clusterCalorimeter cluster to consider
lastTrkParsThe last track parameters of the ID track

Broad eta check

Definition at line 230 of file CaloExtensionAlg.cxx.

232 {
233 using namespace CandidateMatchHelpers;
234 // Get Cluster parameters.
235 const double etaClust = clusterEta(cluster);
236 const bool isEndCap = !xAOD::EgammaHelpers::isBarrel(&cluster);
237
238 const Amg::Vector3D globTrkPos = lastTrkPars.position(tgContext);
239 const double trkEta = Acts::VectorHelpers::eta(lastTrkPars);
240 // Calculate the eta/phi of the cluster as would be seen from the perigee
241 // position of the Track.
242 const Amg::Vector3D globalClusterPosWrtPerigee = approxXYZwrtPoint(cluster, globTrkPos, isEndCap);
243
244 auto passDeltaPhi = [&]() -> bool {
245 using namespace P4Helpers;
246 const double clusterPhi = globalClusterPosWrtPerigee.phi();
247 const double trkPhi = lastTrkPars.phi();
248 if (std::abs(deltaPhi(trkPhi, clusterPhi)) < m_broadDeltaPhi) {
249 return true;
250 }
251 // Calculate the possible rotation of the track.
252 // Once assuming the cluster Et being the better estimate (e.g big brem).
253 const double phiRotRescaled = PhiROT(cluster.et(), trkEta,
254 lastTrkPars.charge(),
255 globTrkPos.perp(), isEndCap);
256
257 // DeltaPhi between the track and the cluster accounting for rotation assuming
258 if (std::abs(deltaPhi(clusterPhi, deltaPhi(trkPhi, phiRotRescaled))) < m_broadDeltaPhi) {
259 return true;
260 }
261 // And also assuming the track Pt being correct.
262 const double phiRotTrack = PhiROT(lastTrkPars.transverseMomentum(), trkEta,
263 lastTrkPars.charge(), globTrkPos.perp(), isEndCap);
264
265
266 // DeltaPhi between the track and the cluster accounting for rotation.
267 if (std::abs(deltaPhi(clusterPhi, deltaPhi(trkPhi, phiRotTrack))) < m_broadDeltaPhi) {
268 return true;
269 }
270 ATH_MSG_VERBOSE(__func__<<"() "<<__LINE__<<" - broad dPhi matching fails with track phi: "<<
271 trkPhi<<", phiRotCluster: "<<phiRotRescaled<<", phiRotTrack: "<<phiRotTrack<<", "
272 "cluster phi: "<<cluster.phi()<<", phi corrected: "<<clusterPhi);
273 return false;
274 };
275
276 if (!passDeltaPhi()) {
277 return false;
278 }
280 if (std::abs(etaClust - trkEta) < m_broadDeltaEta ||
281 std::abs(globalClusterPosWrtPerigee.eta() - trkEta) < m_broadDeltaEta) {
282 return true;
283 }
284 ATH_MSG_VERBOSE(__func__<<"() "<<__LINE__<<" broad dEta matching fails with track eta: "
285 <<trkEta<<", cluster eta: "<<etaClust<<", corrected eta: "<<globalClusterPosWrtPerigee.eta());
286 return false;
287 }
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
#define ATH_MSG_VERBOSE(x)
Gaudi::Property< float > m_broadDeltaPhi
Gaudi::Property< float > m_broadDeltaEta
Broad windowsto initially match the calo cluster with the track exit parameters.
virtual double phi() const
The azimuthal angle ( ) of the particle.
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).
bool isBarrel(const xAOD::Egamma *eg)
return true if the cluster is in the barrel

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

Retrieve the input

Prepare the clusters to match

Loop over the track particles

Definition at line 149 of file CaloExtensionAlg.cxx.

149 {
150
151 const xAOD::TrackParticleContainer* idTracks{nullptr};
152 const xAOD::CaloClusterContainer* caloClusters{nullptr};
153 const CaloDetDescrManager* detMgr{nullptr};
156 ATH_CHECK(SG::get(caloClusters, m_clusterContainerKey, ctx));
158
159 const Acts::GeometryContext tgContext = m_ctxProvider.getGeometryContext(ctx);
161 const SortedCluster_t coneClusters = selectAndSort(*caloClusters, detMgr);
162
163 SG::WriteHandle writeHandle{m_caloExtensionKey, ctx};
164 ATH_CHECK(writeHandle.record(std::make_unique<CaloExtensionContainer>()));
165
167 SG::WriteDecorHandle<xAOD::TrackParticleContainer, Link_t> decorHandle{m_extensionDecorKey, ctx};
168
170 for (const xAOD::TrackParticle* track : *idTracks) {
171 Link_t& extensionLink = decorHandle(*track);
172 if (track->pt() < m_trackPt ||
173 (m_trackSelector.isEnabled() && !m_trackSelector->accept(*track))){
174 continue;
175 }
176 auto extension = propagateToCaloExit(ctx, track);
177 if (!extension) {
178 continue;
179 }
180 // Loop over the neighbour bins corresponding to the track eta, phi
181 // and match the clusters in that bin to the track
182 for (const auto binIdx : coneClusters.neighborHoodIndices(
183 coneClusters.localBinsFromPosition(pack(track->eta(), track->phi())))){
184 ATH_MSG_VERBOSE(__func__<<"() "<<__LINE__<<"() - Try to match "<<coneClusters.at(binIdx).size()<<
185 " clusters from bin "<<binIdx<<". Central bin "
186 <<coneClusters.globalBinFromPosition(pack(track->eta(), track->phi())));
187 matchClusters(tgContext, coneClusters.at(binIdx), *extension);
188 }
189
190 extensionLink = Link_t{writeHandle.cptr(), writeHandle->size()};
191 writeHandle->push_back(std::move(extension));
192 }
193
194 return StatusCode::SUCCESS;
195 }
#define ATH_CHECK
Evaluate an expression and check for errors.
ElementLink< xAOD::TruthParticleContainer > Link_t
ToolHandle< InDet::IInDetTrackSelectionTool > m_trackSelector
Track quality selection tool (optional).
std::unique_ptr< CaloExtension > propagateToCaloExit(const EventContext &ctx, const xAOD::TrackParticle *track) const
Propagates the Track from the last track measurement to the calorimeter exit and records all surface ...
Acts::Grid< ClusterVec_t, EtaAxis_t, PhiAxis_t > SortedCluster_t
Define the segmen cluster grid made out of calo cluster containers segmented in eta & phi.
SortedCluster_t selectAndSort(const xAOD::CaloClusterContainer &clusters, const CaloDetDescrManager *detMgr) const
Selects the calo clusters for the matching to the ID tracks based on the eta range and on a minimum t...
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_extensionDecorKey
Decorate the link to the associated CaloExtension directly onto the ID / ITk track.
Gaudi::Property< float > m_trackPt
The minimum momentum cut applied on the ID tracks to be considered.
SG::WriteHandleKey< CaloExtensionContainer > m_caloExtensionKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clusterContainerKey
The input calorimeter cluster collection.
ActsTrk::ContextUtility m_ctxProvider
Context provider for geometry, magnetic field and calibration contexts.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
The input track particle collection.
void matchClusters(const Acts::GeometryContext &tgContext, std::span< const xAOD::CaloCluster *const > clusterContainer, CaloExtension &caloExtension) const
Match the selected calorimeter clusters to the calo extension.
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloDetDescrMgrKey
Calo description manager.
const_pointer_type cptr() const
Dereference the pointer.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.

◆ 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 & AthCommonAlgorithm< 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 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

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

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ initialize()

StatusCode ActsTrk::CaloExtensionAlg::initialize ( )
finaloverridevirtual

Definition at line 49 of file CaloExtensionAlg.cxx.

49 {
50 ATH_CHECK(m_clusterSelector.retrieve(EnableTool{!m_clusterSelector.empty()}));
51 ATH_CHECK(m_trackSelector.retrieve(EnableTool{!m_trackSelector.empty()}));
54
55 ATH_CHECK(m_clusterContainerKey.initialize());
57 ATH_CHECK(m_ctxProvider.initialize());
58 ATH_CHECK(m_extensionDecorKey.initialize());
59 ATH_CHECK(m_caloDetDescrMgrKey.initialize(m_clusterSelector.isEnabled()));
60 ATH_CHECK(m_caloExtensionKey.initialize());
61
62 // Here we extract the geometry identifiers of the 4 calo volumes in the ACTS geometry
63 // It seems more robust to do the matching with the volume name, since the geometry ID
64 // can change if details of the geometry change.
65 std::vector<std::pair<std::string, CaloSample>> volIndexNames{};
66 for (std::size_t id = 0 ; id < Acts::toUnderlying(CaloSample::Unknown); ++id){
67 const auto smpId = static_cast<CaloSample>(id);
68 volIndexNames.emplace_back(std::make_pair(CaloSampling::getSamplingName(smpId), smpId));
69 ATH_MSG_DEBUG(__func__<<"() "<<__LINE__<<" - "<<volIndexNames.back().first<<" -> "
70 <<volIndexNames.back().second);
71 }
73 const Acts::TrackingVolume* caloExit = m_trackingGeometrySvc->getEnvelope(SystemEnvelope::CaloExit);
74
75 caloExit->visitVolumes([&](const Acts::TrackingVolume *vol) {
76 ATH_MSG_DEBUG(__func__<<"() "<<__LINE__<<" - Check volume: "<<vol->volumeName()<<".");
77 auto smpItr = std::ranges::find_if(volIndexNames, [&](const auto& sampleID) {
78 return vol->volumeName().starts_with(sampleID.first);
79 });
80 if (smpItr != volIndexNames.end()) {
81 m_geoLayerIds[vol->geometryId()] = smpItr->second;
82 ATH_MSG_DEBUG(__func__<<"() "<<__LINE__<<" - Assign geometryID "<<vol->geometryId()
83 <<"volume: "<<vol->volumeName()<<", to "<<smpItr->second<<".");
84 }
85 });
86
87
88 return StatusCode::SUCCESS;
89 }
#define ATH_MSG_DEBUG(x)
ToolHandle< IegammaCaloClusterSelector > m_clusterSelector
Tool to filter the calo clusters.
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc
Tracking geometry service.
std::unordered_map< Acts::GeometryIdentifier, CaloSample > m_geoLayerIds
xAOD::CaloCluster::CaloSample CaloSample
ToolHandle< IExtrapolationTool > m_extrapolationTool
Acts extrapolation tool to record the surface intersections.
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.

◆ 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 AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ matchClusters()

void ActsTrk::CaloExtensionAlg::matchClusters ( const Acts::GeometryContext & tgContext,
std::span< const xAOD::CaloCluster *const > clusterContainer,
CaloExtension & caloExtension ) const
private

Match the selected calorimeter clusters to the calo extension.

Parameters
tgContextThe geometry context to align the bound track parameters
clusterContainerList of pre-selected clusters
caloExtensionMutable reference to the calo extension where the calorimeter clusters are appended if they satisfiy the dR distance criteria

Definition at line 196 of file CaloExtensionAlg.cxx.

198 {
199
200 const auto exitPars = caloExtension.lastTrackParameters();
201
202 for (const xAOD::CaloCluster* matchMe : clusterContainer) {
203 if (!checkBroadCriteria(tgContext, *matchMe, *exitPars)) {
204 continue;
205 }
206 for (const Acts::BoundTrackParameters& recordedPars: caloExtension.parameters()) {
207 const Acts::Surface& surf = recordedPars.referenceSurface();
208
209 ATH_MSG_VERBOSE(__func__<<"() "<<__LINE__<<" - Try to match "<<recordedPars
210 <<",\nsurface:"<<surf.geometryId()<<", bounds: "<<surf.bounds());
211 const Acts::GeometryIdentifier volId = surf.geometryId().withSensitive(0).withBoundary(0);
212
213 auto layerItr = m_geoLayerIds.find(volId);
214 if (layerItr == m_geoLayerIds.end()){
215 continue;
216 }
217 const float dEta = clusterEta(*matchMe) - Acts::VectorHelpers::eta(recordedPars);
218 const float dPhi = P4Helpers::deltaPhi(matchMe->phi(), recordedPars.phi());
219 ATH_MSG_VERBOSE(__func__<<"() "<<__LINE__<<" - dEta: "<<dEta<<", dPhi: "<<dPhi<<".");
220 if (std::abs(dEta) < m_narrowDeltaEta &&
221 std::abs(dPhi) < m_narrowDeltaPhi) {
222 caloExtension.associateCluster(matchMe);
223 break;
224 }
225 }
226 }
227 ATH_MSG_DEBUG(__func__<<"() "<<__LINE__<<" - Associated: "<<caloExtension.associatedClusters().size()
228 <<" clusters: "<<clusterContainer.size()<<".");
229 }
Gaudi::Property< float > m_narrowDeltaPhi
bool checkBroadCriteria(const Acts::GeometryContext &tgContext, const xAOD::CaloCluster &cluster, const Acts::BoundTrackParameters &lastTrkPars) const
Checks whether the track @ its last measurement state is roughly compatible with the calorimeter clus...
Gaudi::Property< float > m_narrowDeltaEta
Narrow windows.
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition P4Helpers.h:34
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
bool dEta(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.

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

◆ propagateToCaloExit()

std::unique_ptr< CaloExtension > ActsTrk::CaloExtensionAlg::propagateToCaloExit ( const EventContext & ctx,
const xAOD::TrackParticle * track ) const
private

Propagates the Track from the last track measurement to the calorimeter exit and records all surface crossings between as Acts::BoundTrackParameters.

If one record happened, the result is packed into a CaloExtension object and returned. A nullptr is given back otherwise.

Parameters
ctxThe ATLAS event context to access geometry & magnetic field
trackThe ID track particle to be propagated to the exit

Retrieve the last track parameters with a measurement state

Loop over the recorded bound track parameters to append them onto the surface

Definition at line 116 of file CaloExtensionAlg.cxx.

117 {
118
119 const Acts::TrackingVolume* caloExit = m_trackingGeometrySvc->getEnvelope(SystemEnvelope::CaloExit);
120
121 auto extension = std::make_unique<CaloExtension>(track);
123 auto lastTrackPars = extension->lastParameters();
124 using SurfaceRecordOptions = IExtrapolationTool::SurfaceRecordOptions;
125 SurfaceRecordOptions propOpts{caloExit, IExtrapolationTool::VolumeAbort::atExit};
126 propOpts.recordMaterial = true;
127 propOpts.recordPassive = true;
128 propOpts.recordSensitive = true;
129
130 auto surfaceRecord = m_extrapolationTool->propagateAndRecord(ctx, *lastTrackPars, propOpts);
131 if (!surfaceRecord.ok()) {
132 ATH_MSG_WARNING(__func__<<"() "<<__LINE__<<" - Propagation through calorimeter did not succeed");
133 return nullptr;
134 }
136 for (Acts::BoundTrackParameters& record : *surfaceRecord) {
137 if (&record.referenceSurface() == &(lastTrackPars->referenceSurface())) {
138 continue;
139 }
140 ATH_MSG_VERBOSE(__func__<<"() "<<__LINE__<<" - Append calorimeter parameters: "
141 <<record<<",\n surface: "<<record.referenceSurface().bounds()<<".");
142 extension->appendParameters(std::move(record));
143 }
144 if (extension->empty()){
145 extension.reset();
146 }
147 return extension;
148 }
#define ATH_MSG_WARNING(x)

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

◆ selectAndSort()

CaloExtensionAlg::SortedCluster_t ActsTrk::CaloExtensionAlg::selectAndSort ( const xAOD::CaloClusterContainer & clusters,
const CaloDetDescrManager * detMgr ) const
private

Selects the calo clusters for the matching to the ID tracks based on the eta range and on a minimum threshold on the energy.

Optionally, the selection tool can be used which requires the use of the CaloDetDescrManager. The Clusters are sorted into a grid which dimension in eta is defined by m_maxClustEta. The number of bins in the two dimensions are determined by the m_broadDeltaEta and m_broadDeltaPhi windows, respectively.

Parameters
clustersThe calorimeter cluster vector to sort into the grid
detMgrCalo description manager needed if the calo selection tool is used.

Definition at line 91 of file CaloExtensionAlg.cxx.

92 {
93 const std::size_t nEtaBins = std::ceil((2. * m_maxClustEta) / m_broadDeltaEta);
94 const std::size_t nPhiBins = std::ceil((2.*std::numbers::pi) / m_broadDeltaPhi);
95 ATH_MSG_DEBUG(__func__<<"() "<<__LINE__<<" - Create grid to sort the clusters with "<<nEtaBins
96 <<" bins in eta and "<<nPhiBins<<" bins in phi.");
98 PhiAxis_t{-std::numbers::pi, std::numbers::pi, nPhiBins}};
99
100 std::size_t selected{0ul};
101 for (const xAOD::CaloCluster* cluster : clusters) {
102 if(cluster->et() < m_minClustEt ||
103 std::abs(clusterEta(*cluster)) > m_maxClustEta ||
104 (m_clusterSelector.isEnabled() && !m_clusterSelector->passSelection(cluster, *detMgr))) {
105 continue;
106 }
107 ClusterVec_t& bin = grid.atPosition(pack(clusterEta(*cluster), cluster->phi()));
108 bin.push_back(cluster);
109 ++selected;
110 }
111 ATH_MSG_DEBUG(__func__<<"() "<<__LINE__<<" - Selected "<<selected
112 <<" out of "<<clusters.size()<<" calo clusters.");
113 return grid;
114 }
Gaudi::Property< float > m_minClustEt
Minimum requirement on the cluster's transversal energy in order to be considered.
std::vector< const xAOD::CaloCluster * > ClusterVec_t
Use an Acts::Grid to segment the cluster in eta / phi space to reduce the matching combinatorics betw...
Gaudi::Property< float > m_maxClustEta
Maximum cut on the cluster's eta in order to be considered.
Acts::Axis< Acts::AxisType::Equidistant, Acts::AxisBoundaryType::Bound > EtaAxis_t
Along eta define an equidistance binning without any overflow bin.
Acts::Axis< Acts::AxisType::Equidistant, Acts::AxisBoundaryType::Closed > PhiAxis_t
Along phi define an equidistance binning but with a circular wrapping connection between the two edge...
constexpr std::size_t nPhiBins
constexpr unsigned nEtaBins
unsigned long ul

◆ setFilterPassed()

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

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< 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.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< 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 AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
#define ATH_MSG_ERROR(x)
virtual StatusCode sysInitialize() override
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_broadDeltaEta

Gaudi::Property<float> ActsTrk::CaloExtensionAlg::m_broadDeltaEta {this, "broadDeltaEta", 0.2, "Value of broad cut for delta eta" }
private

Broad windowsto initially match the calo cluster with the track exit parameters.

Definition at line 145 of file CaloExtensionAlg.h.

145{this, "broadDeltaEta", 0.2, "Value of broad cut for delta eta" };

◆ m_broadDeltaPhi

Gaudi::Property<float> ActsTrk::CaloExtensionAlg::m_broadDeltaPhi {this, "broadDeltaPhi", 0.3, "Value of broad cut for delta phi" }
private

Definition at line 147 of file CaloExtensionAlg.h.

147{this, "broadDeltaPhi", 0.3, "Value of broad cut for delta phi" };

◆ m_caloDetDescrMgrKey

SG::ReadCondHandleKey<CaloDetDescrManager> ActsTrk::CaloExtensionAlg::m_caloDetDescrMgrKey {this, "CaloDetDescrManager", "CaloDetDescrManager"}
private

Calo description manager.

Definition at line 137 of file CaloExtensionAlg.h.

137{this, "CaloDetDescrManager", "CaloDetDescrManager"};

◆ m_caloExtensionKey

SG::WriteHandleKey<CaloExtensionContainer> ActsTrk::CaloExtensionAlg::m_caloExtensionKey {this, "CaloExtensionName", "CaloExtension"}
private

Definition at line 139 of file CaloExtensionAlg.h.

139{this, "CaloExtensionName", "CaloExtension"};

◆ m_clusterContainerKey

SG::ReadHandleKey<xAOD::CaloClusterContainer> ActsTrk::CaloExtensionAlg::m_clusterContainerKey {this, "ClusterContainerName", "CaloCalTopoClusters"}
private

The input calorimeter cluster collection.

Definition at line 129 of file CaloExtensionAlg.h.

129{this, "ClusterContainerName", "CaloCalTopoClusters"};

◆ m_clusterSelector

ToolHandle<IegammaCaloClusterSelector> ActsTrk::CaloExtensionAlg::m_clusterSelector
private
Initial value:
{this, "ClusterSelector", "egammaCaloClusterSelector",
"Tool that makes the cluster selection"}

Tool to filter the calo clusters.

Definition at line 118 of file CaloExtensionAlg.h.

118 {this, "ClusterSelector", "egammaCaloClusterSelector",
119 "Tool that makes the cluster selection"};

◆ m_ctxProvider

ActsTrk::ContextUtility ActsTrk::CaloExtensionAlg::m_ctxProvider {this}
private

Context provider for geometry, magnetic field and calibration contexts.

Definition at line 123 of file CaloExtensionAlg.h.

123{this};

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

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

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_extensionDecorKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::CaloExtensionAlg::m_extensionDecorKey
private
Initial value:
{this, "ExtensionDecoration", m_trackParticleContainerKey,
"caloExtensionLink"}

Decorate the link to the associated CaloExtension directly onto the ID / ITk track.

Definition at line 134 of file CaloExtensionAlg.h.

134 {this, "ExtensionDecoration", m_trackParticleContainerKey,
135 "caloExtensionLink"};

◆ m_extrapolationTool

ToolHandle<IExtrapolationTool> ActsTrk::CaloExtensionAlg::m_extrapolationTool {this, "ExtrapolationTool", ""}
private

Acts extrapolation tool to record the surface intersections.

Definition at line 126 of file CaloExtensionAlg.h.

126{this, "ExtrapolationTool", ""};

◆ m_geoLayerIds

std::unordered_map<Acts::GeometryIdentifier, CaloSample> ActsTrk::CaloExtensionAlg::m_geoLayerIds {}
private

Definition at line 160 of file CaloExtensionAlg.h.

160{};

◆ m_maxClustEta

Gaudi::Property<float> ActsTrk::CaloExtensionAlg::m_maxClustEta {this, "maxClustEta", 10.}
private

Maximum cut on the cluster's eta in order to be considered.

Definition at line 151 of file CaloExtensionAlg.h.

151{this, "maxClustEta", 10.};

◆ m_minClustEt

Gaudi::Property<float> ActsTrk::CaloExtensionAlg::m_minClustEt {this, "minClusterEt", 10.*Gaudi::Units::MeV}
private

Minimum requirement on the cluster's transversal energy in order to be considered.

Definition at line 149 of file CaloExtensionAlg.h.

149{this, "minClusterEt", 10.*Gaudi::Units::MeV};

◆ m_narrowDeltaEta

Gaudi::Property<float> ActsTrk::CaloExtensionAlg::m_narrowDeltaEta {this, "narrowDeltaEta", 0.05}
private

Narrow windows.

Definition at line 156 of file CaloExtensionAlg.h.

156{this, "narrowDeltaEta", 0.05};

◆ m_narrowDeltaPhi

Gaudi::Property<float> ActsTrk::CaloExtensionAlg::m_narrowDeltaPhi {this, "narrowDeltaPhi", 0.05}
private

Definition at line 158 of file CaloExtensionAlg.h.

158{this, "narrowDeltaPhi", 0.05};

◆ m_propagator

std::unique_ptr<CurvedPropagator_t> ActsTrk::CaloExtensionAlg::m_propagator {}
private

The instance of the propagator.

Definition at line 114 of file CaloExtensionAlg.h.

114{};

◆ m_trackingGeometrySvc

ServiceHandle<ActsTrk::ITrackingGeometrySvc> ActsTrk::CaloExtensionAlg::m_trackingGeometrySvc {this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"}
private

Tracking geometry service.

Definition at line 121 of file CaloExtensionAlg.h.

121{this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"};

◆ m_trackParticleContainerKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> ActsTrk::CaloExtensionAlg::m_trackParticleContainerKey
private
Initial value:
{this, "TrackParticleContainerName",
"InDetTrackParticles" }

The input track particle collection.

Definition at line 131 of file CaloExtensionAlg.h.

131 {this, "TrackParticleContainerName",
132 "InDetTrackParticles" };

◆ m_trackPt

Gaudi::Property<float> ActsTrk::CaloExtensionAlg::m_trackPt {this, "minPt", 2.5*Gaudi::Units::GeV}
private

The minimum momentum cut applied on the ID tracks to be considered.

Definition at line 142 of file CaloExtensionAlg.h.

142{this, "minPt", 2.5*Gaudi::Units::GeV};

◆ m_trackSelector

ToolHandle<InDet::IInDetTrackSelectionTool> ActsTrk::CaloExtensionAlg::m_trackSelector {this, "TrackSelectionTool" , ""}
private

Track quality selection tool (optional).

Definition at line 116 of file CaloExtensionAlg.h.

116{this, "TrackSelectionTool" , ""};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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