ATLAS Offline Software
Loading...
Searching...
No Matches
IParticleCaloExtensionTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4
72
73#ifndef ITRKTRACKPARTICLECALOEXTENSIONTOOL_H
74#define ITRKTRACKPARTICLECALOEXTENSIONTOOL_H
75
76#include "GaudiKernel/EventContext.h"
77#include "GaudiKernel/IAlgTool.h"
80#include "xAODBase/IParticle.h"
84#include <memory>
85#include <unordered_map>
86#include <vector>
87
89namespace Trk {
90static const InterfaceID
91 IID_IParticleCaloExtensionTool("Trk::IParticleCaloExtensionTool", 1, 0);
92
94class IParticleCaloExtensionTool : virtual public IAlgTool
95{
96public:
97 typedef std::unordered_map<size_t, std::unique_ptr<Trk::CaloExtension>> Cache;
98
107 virtual std::unique_ptr<Trk::CaloExtension> caloExtension(
108 const EventContext& ctx,
109 const xAOD::IParticle& particle) const = 0;
110
130 const EventContext& ctx,
131 const xAOD::IParticle& particle,
132 Cache& cache) const = 0;
133
147 const xAOD::IParticle& particle,
148 const CaloExtensionCollection& cache) const = 0;
149
166 virtual StatusCode caloExtensionCollection(
167 const EventContext& ctx,
168 const xAOD::IParticleContainer& particles,
169 const std::vector<bool>& mask,
170 CaloExtensionCollection& caloextensions) const = 0;
171
181 virtual std::unique_ptr<Trk::CaloExtension> caloExtension(
182 const EventContext& ctx,
183 const TrackParameters& startPars,
184 PropDirection propDir,
186
194 virtual std::vector<std::unique_ptr<Trk::Surface>> caloSurfacesFromLayers(
195 const std::vector<CaloSampling::CaloSample>& clusterLayers,
196 double eta,
197 const CaloDetDescrManager& caloDD) const = 0;
198
213 virtual std::vector<std::pair<CaloSampling::CaloSample,
214 std::unique_ptr<const Trk::TrackParameters>>>
216 const EventContext& ctx,
217 const TrackParameters& startPars,
218 const std::vector<CaloSampling::CaloSample>& clusterLayers,
219 const std::vector<std::unique_ptr<Trk::Surface>>& caloSurfaces,
221
231
232 virtual std::vector<std::pair<CaloSampling::CaloSample,
233 std::unique_ptr<const Trk::TrackParameters>>>
235 const EventContext& ctx,
236 const TrackParameters& startPars,
237 const std::vector<CaloSampling::CaloSample>& clusterLayers,
238 double eta,
239 const CaloDetDescrManager& caloDD,
241
242 static const InterfaceID& interfaceID();
243};
244
245inline const InterfaceID&
250
251} // end of namespace
252
253#endif
Scalar eta() const
pseudorapidity method
DataVector< Trk::CaloExtension > CaloExtensionCollection
This class provides the client interface for accessing the detector description information common to...
Tracking class to hold the extrapolation through calorimeter Layers Both the caloEntryLayerIntersecti...
Interface for extending Particles with calo intersections.
virtual std::unique_ptr< Trk::CaloExtension > caloExtension(const EventContext &ctx, const xAOD::IParticle &particle) const =0
Method returning the calo layers crossed by the IParticle track or the IParticle itself if it is neut...
virtual std::vector< std::pair< CaloSampling::CaloSample, std::unique_ptr< const Trk::TrackParameters > > > layersCaloExtension(const EventContext &ctx, const TrackParameters &startPars, const std::vector< CaloSampling::CaloSample > &clusterLayers, double eta, const CaloDetDescrManager &caloDD, ParticleHypothesis particleType=Trk::nonInteracting) const =0
Method returning a vector of the Track Parameters at layers/samplings.
virtual std::unique_ptr< Trk::CaloExtension > caloExtension(const EventContext &ctx, const TrackParameters &startPars, PropDirection propDir, ParticleHypothesis particleType) const =0
Method returning a unique_ptr to the caloExtension given the relevant starting point parameters ,...
virtual std::vector< std::pair< CaloSampling::CaloSample, std::unique_ptr< const Trk::TrackParameters > > > surfaceCaloExtension(const EventContext &ctx, const TrackParameters &startPars, const std::vector< CaloSampling::CaloSample > &clusterLayers, const std::vector< std::unique_ptr< Trk::Surface > > &caloSurfaces, ParticleHypothesis particleType) const =0
Method returning a vector of the Track Parameters at layers/samplings.
virtual const Trk::CaloExtension * caloExtension(const EventContext &ctx, const xAOD::IParticle &particle, Cache &cache) const =0
Method to return the calo layers crossed (CaloExtension) by the IParticle track or the IParticle itse...
virtual std::vector< std::unique_ptr< Trk::Surface > > caloSurfacesFromLayers(const std::vector< CaloSampling::CaloSample > &clusterLayers, double eta, const CaloDetDescrManager &caloDD) const =0
Method returning a vector of calo surfaces give calo layers/samplings.
std::unordered_map< size_t, std::unique_ptr< Trk::CaloExtension > > Cache
virtual StatusCode caloExtensionCollection(const EventContext &ctx, const xAOD::IParticleContainer &particles, const std::vector< bool > &mask, CaloExtensionCollection &caloextensions) const =0
Method that can be used by algorithms that : A.
virtual const Trk::CaloExtension * caloExtension(const xAOD::IParticle &particle, const CaloExtensionCollection &cache) const =0
Method to return the calo layers crossed (CaloExtension) by the IParticle track or the IParticle itse...
static const InterfaceID & interfaceID()
Class providing the definition of the 4-vector interface.
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
static const InterfaceID IID_IParticleCaloExtensionTool("Trk::IParticleCaloExtensionTool", 1, 0)
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
ParametersBase< TrackParametersDim, Charged > TrackParameters
const IIntersectionCache * cache() const
Retrieve the associated cache block, if it exists.
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.