ATLAS Offline Software
Loading...
Searching...
No Matches
MuidCaloTrackStateOnSurface.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
18
19#ifndef MUIDCALOSCATTERINGTOOLS_MUIDCALOTRACKSTATEONSURFACE_H
20#define MUIDCALOSCATTERINGTOOLS_MUIDCALOTRACKSTATEONSURFACE_H
21
22//<<<<<< INCLUDES >>>>>>
23
25// For magneticfield
26#include <atomic>
27
28#include "GaudiKernel/ServiceHandle.h"
29#include "GaudiKernel/ToolHandle.h"
36
37namespace Rec {
38
40 public:
41 MuidCaloTrackStateOnSurface(const std::string& type, const std::string& name, const IInterface* parent);
42 virtual ~MuidCaloTrackStateOnSurface() = default; // destructor
43
44 StatusCode initialize() override;
45 StatusCode finalize() override;
46
50 std::vector<std::unique_ptr<const Trk::TrackStateOnSurface>> caloTSOS(const EventContext& ctx,
51 const Trk::TrackParameters& parameters) const override;
52
56 std::unique_ptr<Trk::TrackStateOnSurface> innerTSOS(const EventContext& ctx, const Trk::TrackParameters& parameters) const override;
57 std::unique_ptr<Trk::TrackStateOnSurface> outerTSOS(const EventContext& ctx, const Trk::TrackParameters& parameters) const override;
58
64 std::unique_ptr<Trk::TrackStateOnSurface> middleTSOS(const EventContext& ctx, const Trk::TrackParameters& middleParameters,
65 const Trk::TrackParameters* innerParameters,
66 const Trk::TrackParameters* outerParameters) const override;
67
68 private:
69 // private methods
71 const Trk::Surface* getCaloSurface(const double eta, const short layer) const;
72
73 std::unique_ptr<const Trk::TrackParameters> getExtrapolatedParameters(const EventContext& ctx,
74 const Trk::TrackParameters& parameters,
75 const short layer) const;
76
77 static bool useEtaPhiFromDirection(const Trk::TrackParameters& parameters) ;
78
79 // helpers, managers, tools
80 ToolHandle<Rec::IMuidCaloEnergy> m_caloEnergyDeposit{
81 this,
82 "CaloEnergyDeposit",
83 "Rec::MuidCaloEnergyTool/MuidCaloEnergyTool",
84 };
85 ToolHandle<Rec::IMuidCaloEnergy> m_caloEnergyParam{
86 this,
87 "CaloEnergyParam",
88 "Rec::MuidCaloEnergyTool/MuidCaloEnergyToolParam",
89 };
90 ToolHandle<Rec::IMuidCaloMaterialParam> m_caloMaterialParam{
91 this,
92 "CaloMaterialParam",
93 "Rec::MuidCaloMaterialParam/MuidCaloMaterialParam",
94 };
95 ToolHandle<Trk::IPropagator> m_propagator{
96 this,
97 "Propagator",
98 "Trk::IntersectorWrapper/IntersectorWrapper",
99 };
100
102
103 // Read handle for conditions object to get the field cache
105 "Name of the Magnetic Field conditions object key"};
106
107 // configurable cut-off values
111
112 // counters (for finalize)
113 mutable std::atomic_int m_count{0};
114 mutable std::atomic_int m_countArbitrarySolution{0};
115 mutable std::atomic_int m_countCompleteFailure{0};
116 mutable std::atomic_int m_countInnerFailure{0};
117 mutable std::atomic_int m_countOuterFailure{0};
118 };
119
120} // namespace Rec
121
122#endif // MUIDCALOSCATTERINGTOOLS_MUIDCALOTRACKSTATEONSURFACE_H
Scalar eta() const
pseudorapidity method
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Base class for MuidCaloTrackStateOnSurface AlgTool.
std::vector< std::unique_ptr< const Trk::TrackStateOnSurface > > caloTSOS(const EventContext &ctx, const Trk::TrackParameters &parameters) const override
IMuidCaloTrackStateOnSurface interface: to get the 3 scattering and energy deposit TSOS'es representi...
std::unique_ptr< Trk::TrackStateOnSurface > middleTSOS(const EventContext &ctx, const Trk::TrackParameters &middleParameters, const Trk::TrackParameters *innerParameters, const Trk::TrackParameters *outerParameters) const override
IMuidCaloTrackStateOnSurface interface: to get the energy deposit TSOS representing the calorimeter.
MuidCaloTrackStateOnSurface(const std::string &type, const std::string &name, const IInterface *parent)
const Trk::Surface * getCaloSurface(const double eta, const short layer) const
std::unique_ptr< Trk::TrackStateOnSurface > outerTSOS(const EventContext &ctx, const Trk::TrackParameters &parameters) const override
ToolHandle< Rec::IMuidCaloEnergy > m_caloEnergyDeposit
Trk::MagneticFieldProperties m_magFieldProperties
virtual ~MuidCaloTrackStateOnSurface()=default
static bool useEtaPhiFromDirection(const Trk::TrackParameters &parameters)
std::unique_ptr< const Trk::TrackParameters > getExtrapolatedParameters(const EventContext &ctx, const Trk::TrackParameters &parameters, const short layer) const
std::unique_ptr< Trk::TrackStateOnSurface > innerTSOS(const EventContext &ctx, const Trk::TrackParameters &parameters) const override
IMuidCaloTrackStateOnSurface interface: to get individually the scattering TSOS'es representing the c...
ToolHandle< Rec::IMuidCaloEnergy > m_caloEnergyParam
ToolHandle< Trk::IPropagator > m_propagator
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
ToolHandle< Rec::IMuidCaloMaterialParam > m_caloMaterialParam
magnetic field properties to steer the behavior of the extrapolation
Abstract Base Class for tracking surfaces.
Gaudi Tools.
@ FullField
Field is set to be realistic, but within a given Volume.
ParametersBase< TrackParametersDim, Charged > TrackParameters