ATLAS Offline Software
Loading...
Searching...
No Matches
ITkPixelClusterOnTrackTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ITkPixelClusterOnTrackTool_H
6#define ITkPixelClusterOnTrackTool_H
7
8#include "GaudiKernel/ToolHandle.h"
10
15
19
20#include "Identifier/Identifier.h"
22
28
30
31#include <atomic>
32#include <mutex>
33
34namespace ITk
35{
36
50
57
59 public AthAlgTool, virtual public Trk::IRIO_OnTrackCreator
60{
62 // Public methods:
64
65public:
66
68 PixelClusterOnTrackTool(const std::string&,const std::string&,
69 const IInterface*);
70 virtual ~PixelClusterOnTrackTool () = default;
72 virtual StatusCode initialize() override;
73
81 const Trk::PrepRawData&, const Trk::TrackParameters&, const EventContext& ctx) const override;
82
84 // Private methods:
86
87protected:
90 const EventContext&) const;
91
94 const EventContext&) const;
95
98 Amg::MatrixX&, const EventContext&) const;
99
102 Amg::MatrixX&, const EventContext&) const;
103
107 const EventContext&) const;
108
110 getClusterSplittingProbability(const InDet::PixelCluster* pix, const EventContext& ctx) const {
111 if (!pix || m_clusterSplitProbContainer.key().empty())
113
116 if (!splitProbContainer.isValid()) {
117 ATH_MSG_FATAL("Failed to get cluster splitting probability container "
119 }
120 return splitProbContainer->splitProbability(pix);
121 }
122
123private:
124
126 // Private data:
128
129 ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool{this, "LorentzAngleTool", "SiLorentzAngleTool", "Tool to retreive Lorentz angle"};
130
131 SG::ReadCondHandleKey<ITk::PixelOfflineCalibData> m_clusterITkErrorKey{this, "ITkPixelOfflineCalibData", "ITkPixelOfflineCalibData", "Output key of ITk pixel cluster"};
132
134 {this,"PixelErrorScalingKey", "/Indet/TrkErrorScalingPixel", "Key for pixel error scaling conditions data."};
135
138 IntegerProperty m_positionStrategy{this, "PositionStrategy", 1,
139 "Which calibration of cluster positions"};
140 mutable std::atomic_int m_errorStrategy{2};
141 IntegerProperty m_errorStrategyProperty{this, "ErrorStrategy", 2,
142 "Which calibration of cluster position errors"};
143
144
158 const PixelID* m_pixelid = nullptr;
159
162 BooleanProperty m_applyNNcorrectionProperty{this, "applyNNcorrection", false};
163
165 ToolHandle<InDet::NnClusterizationFactory> m_NnClusterizationFactory
166 {this, "NnClusterizationFactory",
167 "InDet::NnClusterizationFactory/NnClusterizationFactory"};
168
169 BooleanProperty m_doNotRecalibrateNN{this, "doNotRecalibrateNN", false};
170 BooleanProperty m_noNNandBroadErrors{this, "noNNandBroadErrors", false};
172 BooleanProperty m_usingTIDE_Ambi{this, "RunningTIDE_Ambi", false};
175
178
179};
180
181} // end of namespace ITk
182
183#endif // ITkPixelClusterOnTrackTool_H
#define ATH_MSG_FATAL(x)
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
Hold pixel distortion data produced by PixelDistortionAlg.
This is an Identifier helper class for the Pixel subdetector.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
virtual ~PixelClusterOnTrackTool()=default
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguities > m_splitClusterMapKey
InDet::PixelClusterOnTrack * correctNN(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &) const
InDet::PixelClusterOnTrack * correctDefault(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &) const
The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track predi...
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainer
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo & getClusterSplittingProbability(const InDet::PixelCluster *pix, const EventContext &ctx) const
IntegerProperty m_positionStrategy
toolhandle for central error scaling flag storing if errors need scaling or should be kept nominal
BooleanProperty m_usingTIDE_Ambi
Enable different treatment of cluster errors based on NN information (do only if TIDE ambi is run).
bool m_applyNNcorrection
Enable NN based calibration (do only if NN calibration is applied).
virtual StatusCode initialize() override
AlgTool initialisation.
bool getErrorsDefaultAmbi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &, const EventContext &) const
bool getErrorsTIDE_Ambi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &, const EventContext &) const
const PixelID * m_pixelid
Flag controlling how module distortions are taken into account:
SG::ReadCondHandleKey< ITk::PixelOfflineCalibData > m_clusterITkErrorKey
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
ToolHandle< InDet::NnClusterizationFactory > m_NnClusterizationFactory
NN clusterizationi factory for NN based positions and errors.
virtual InDet::PixelClusterOnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &ctx) const override
produces a PixelClusterOnTrack (object factory!).
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_pixelErrorScalingKey
PixelClusterOnTrackTool(const std::string &, const std::string &, const IInterface *)
AlgTool constructor.
Specific class to represent the pixel measurements.
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:69
Property holding a SG store/key/clid from which a ReadHandle is made.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
static const ProbabilityInfo & getNoSplitProbability()
Interface class for transforming Trk::PrepRawData to Trk::RIO_OnTrack using a local track hypothesis.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 2, 1 > Vector2D
PixelClusterStrategy
creates PixelClusterOnTrack objects allowing to calibrate cluster position and error using a given tr...
ParametersBase< TrackParametersDim, Charged > TrackParameters