ATLAS Offline Software
ParticleCaloExtensionTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 /*
6  * ParticleCaloExtensionTool.h - implements the IParticleCaloExtenions
7  * Interface begin : Summer 2014
8  * updated : 2018-2019 for AthenaMT
9  * authors : Niels van Eldik (CERN PH-ATC),Christos Anastopoulos
10  */
11 
12 #ifndef TRKPARTICLECREATOR_PARTICLECALOEXTENSIONTOOL_H
13 #define TRKPARTICLECREATOR_PARTICLECALOEXTENSIONTOOL_H
15 #include "GaudiKernel/ServiceHandle.h"
16 #include "GaudiKernel/ToolHandle.h"
17 
18 /*interface */
20 
21 /* interfce for the extrapolator tool*/
22 
27 /*
28  * xAOD includes
29  */
34 
35 /* monitoring */
37 
38 class AtlasDetectorID;
40 namespace Trk {
41 
42 class IExtrapolator;
43 
45  : virtual public IParticleCaloExtensionTool
46  , public AthAlgTool
47 {
48 public:
49  ParticleCaloExtensionTool(const std::string&,
50  const std::string&,
51  const IInterface*);
53 
54  virtual StatusCode initialize() override final;
55  /*
56  * Implement the IParticleCaloExtension methods
57  * see IParticleCaloExtension.h for
58  * detailed documentation of the various options
59  * and methods
60  */
61  virtual std::unique_ptr<Trk::CaloExtension> caloExtension(
62  const EventContext& ctx,
63  const xAOD::IParticle& particle) const override final;
64 
66  const EventContext& ctx,
68  IParticleCaloExtensionTool::Cache& cache) const override final;
69 
72  const CaloExtensionCollection& cache) const override final;
73 
75  const EventContext& ctx,
77  const std::vector<bool>& mask,
78  CaloExtensionCollection& caloextensions) const override final;
79 
80  virtual std::unique_ptr<Trk::CaloExtension> caloExtension(
81  const EventContext& ctx,
82  const TrackParameters& startPars,
83  PropDirection propDir,
84  ParticleHypothesis particleType) const override final;
85 
86  std::vector<std::unique_ptr<Trk::Surface>> caloSurfacesFromLayers(
87  const std::vector<CaloSampling::CaloSample>& clusterLayers,
88  double eta,
89  const CaloDetDescrManager& caloDD) const override final;
90 
91  virtual std::vector<std::pair<CaloSampling::CaloSample,
92  std::unique_ptr<const Trk::TrackParameters>>>
94  const EventContext& ctx,
95  const TrackParameters& startPars,
96  const std::vector<CaloSampling::CaloSample>& clusterLayers,
97  const std::vector<std::unique_ptr<Trk::Surface>>& caloSurfaces,
98  ParticleHypothesis particleType) const override final;
99 
100  virtual std::vector<std::pair<CaloSampling::CaloSample,
101  std::unique_ptr<const Trk::TrackParameters>>>
103  const EventContext& ctx,
104  const TrackParameters& startPars,
105  const std::vector<CaloSampling::CaloSample>& clusterLayers,
106  double eta,
107  const CaloDetDescrManager& caloDD,
108  ParticleHypothesis particleType) const override final;
109 
110 private:
111  /*
112  * Internal methods for different IParticle types
113  */
114  std::unique_ptr<Trk::CaloExtension> caloExtension(
115  const EventContext& ctx,
117  std::unique_ptr<Trk::CaloExtension> caloExtension(
118  const EventContext& ctx,
120  std::unique_ptr<Trk::CaloExtension> caloExtension(
121  const EventContext& ctx,
123 
124  ToolHandle<Trk::IExtrapolator> m_extrapolator{ this, "Extrapolator", "" };
125 
127  ToolHandle<ICaloSurfaceBuilder> m_calosurf{
128  this,
129  "CaloSurfaceBuilder",
130  "",
131  "Tool to build calorimeter layer surfaces"
132  };
133 
134  Gaudi::Property<std::string> m_particleTypeName{
135  this, "ParticleType", "muon",
136  "The particle type used during extrapolation when not passed via the "
137  "method interfaces"
138  ": muon, pion, nonInteracting"};
139 
140  Gaudi::Property<bool> m_startFromPerigee{ this,
141  "StartFromPerigee",
142  false,
143  "Start from Perigee" };
146 
147  Gaudi::Property<unsigned int> m_extrapolDetectorID{
148  this,
149  "ExtrapolationDetectorID",
150  Trk::Calo,
151  "The detector this tool should extrapolate through. Expects a "
152  "Trk::GeometrySignature enum value."
153  };
154 
156  ToolHandle<GenericMonitoringTool> m_monTool{this,"MonTool","","Monitoring tool"};
157 };
158 } // namespace Trk
159 
160 #endif
Trk::ParticleCaloExtensionTool::~ParticleCaloExtensionTool
virtual ~ParticleCaloExtensionTool()
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:79
GeometrySignature.h
Trk::ParticleCaloExtensionTool::caloExtension
virtual std::unique_ptr< Trk::CaloExtension > caloExtension(const EventContext &ctx, const xAOD::IParticle &particle) const override final
Method returning the calo layers crossed by the IParticle track or the IParticle itself if it is neut...
Definition: ParticleCaloExtensionTool.cxx:63
Trk::CaloExtension
Tracking class to hold the extrapolation through calorimeter Layers Both the caloEntryLayerIntersecti...
Definition: CaloExtension.h:19
Trk::ParticleCaloExtensionTool::m_particleStrategy
ParticleHypothesis m_particleStrategy
Definition: ParticleCaloExtensionTool.h:145
CaloSampling
provides Calorimeter Sampling enum
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:17
TruthParticle
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:58
Trk::ParticleCaloExtensionTool
Definition: ParticleCaloExtensionTool.h:47
Trk::ParticleCaloExtensionTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: ParticleCaloExtensionTool.h:124
IExtrapolator.h
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::Calo
@ Calo
Definition: GeometrySignature.h:28
particleType
Definition: particleType.h:29
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:459
Trk::ParticleCaloExtensionTool::m_extrapolDetectorID
Gaudi::Property< unsigned int > m_extrapolDetectorID
Definition: ParticleCaloExtensionTool.h:147
Trk::ParticleCaloExtensionTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Monitoring tool for recording histograms of the alg in action.
Definition: ParticleCaloExtensionTool.h:156
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:28
Trk::ParticleCaloExtensionTool::caloExtensionCollection
virtual StatusCode caloExtensionCollection(const EventContext &ctx, const xAOD::IParticleContainer &particles, const std::vector< bool > &mask, CaloExtensionCollection &caloextensions) const override final
Method that can be used by algorithms that : A.
Definition: ParticleCaloExtensionTool.cxx:119
Trk::ParticleCaloExtensionTool::m_detID
const AtlasDetectorID * m_detID
Definition: ParticleCaloExtensionTool.h:144
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::ParticleCaloExtensionTool::m_calosurf
ToolHandle< ICaloSurfaceBuilder > m_calosurf
Tool to build calorimeter layer surfaces.
Definition: ParticleCaloExtensionTool.h:127
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CaloCluster.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
vector
Definition: MultiHisto.h:13
AthAlgTool.h
Trk::ParticleCaloExtensionTool::ParticleCaloExtensionTool
ParticleCaloExtensionTool(const std::string &, const std::string &, const IInterface *)
Definition: ParticleCaloExtensionTool.cxx:20
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::ParticleCaloExtensionTool::initialize
virtual StatusCode initialize() override final
Definition: ParticleCaloExtensionTool.cxx:33
xAOD::NeutralParticle
NeutralParticle_v1 NeutralParticle
Reference the current persistent version:
Definition: NeutralParticle.h:13
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
ParticleHypothesis.h
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::IParticleCaloExtensionTool
Interface for extending Particles with calo intersections.
Definition: IParticleCaloExtensionTool.h:96
Trk::ParticleCaloExtensionTool::m_startFromPerigee
Gaudi::Property< bool > m_startFromPerigee
Definition: ParticleCaloExtensionTool.h:140
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
ICaloSurfaceBuilder.h
NeutralParticle.h
Trk::IParticleCaloExtensionTool::Cache
std::unordered_map< size_t, std::unique_ptr< Trk::CaloExtension > > Cache
Definition: IParticleCaloExtensionTool.h:98
Trk::IExtrapolator
Definition: IExtrapolator.h:62
TrackParticle.h
IParticleCaloExtensionTool.h
Trk::ParticleCaloExtensionTool::caloSurfacesFromLayers
std::vector< std::unique_ptr< Trk::Surface > > caloSurfacesFromLayers(const std::vector< CaloSampling::CaloSample > &clusterLayers, double eta, const CaloDetDescrManager &caloDD) const override final
Method returning a vector of calo surfaces give calo layers/samplings.
Definition: ParticleCaloExtensionTool.cxx:355
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
Trk::ParticleCaloExtensionTool::surfaceCaloExtension
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 override final
Method returning a vector of the Track Parameters at layers/samplings.
Definition: ParticleCaloExtensionTool.cxx:375
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
private
#define private
Definition: xAODTruthCnvAlg.h:20
Trk::ParticleCaloExtensionTool::m_particleTypeName
Gaudi::Property< std::string > m_particleTypeName
Definition: ParticleCaloExtensionTool.h:134
AthAlgTool
Definition: AthAlgTool.h:26
TruthParticle.h
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
IParticle
Definition: Event/EventKernel/EventKernel/IParticle.h:43
AtlasDetectorID
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Definition: AtlasDetectorID.h:57
Trk::ParticleCaloExtensionTool::layersCaloExtension
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) const override final
Method returning a vector of the Track Parameters at layers/samplings.
Definition: ParticleCaloExtensionTool.cxx:407