ATLAS Offline Software
Loading...
Searching...
No Matches
ITkPixelClusterOnTrackTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ITkPixelClusterOnTrackTool_H
6#define ITkPixelClusterOnTrackTool_H
7
8#include "GaudiKernel/ToolHandle.h"
9#include "GaudiKernel/ThreadLocalContext.h"
11
16
20
21#include "Identifier/Identifier.h"
23
29
31
32#include <atomic>
33#include <mutex>
34
35namespace ITk
36{
37
51
58
60 public AthAlgTool, virtual public Trk::IRIO_OnTrackCreator
61{
63 // Public methods:
65
66public:
67
69 PixelClusterOnTrackTool(const std::string&,const std::string&,
70 const IInterface*);
71 virtual ~PixelClusterOnTrackTool () = default;
73 virtual StatusCode initialize() override;
74
82 const Trk::PrepRawData&, const Trk::TrackParameters&, const EventContext& ctx = Gaudi::Hive::currentContext()) const override;
83
85 // Private methods:
87
88protected:
90 const Trk::TrackParameters&) const;
91
93 const Trk::TrackParameters&) const;
94
97 Amg::MatrixX&) const;
98
101 Amg::MatrixX&) const;
102
105 const ITk::PixelClusterStrategy) const;
106
109 if (!pix || m_clusterSplitProbContainer.key().empty())
111
114 if (!splitProbContainer.isValid()) {
115 ATH_MSG_FATAL("Failed to get cluster splitting probability container "
117 }
118 return splitProbContainer->splitProbability(pix);
119 }
120
121private:
122
124 // Private data:
126
127 ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool{this, "LorentzAngleTool", "SiLorentzAngleTool", "Tool to retreive Lorentz angle"};
128
129 SG::ReadCondHandleKey<ITk::PixelOfflineCalibData> m_clusterITkErrorKey{this, "ITkPixelOfflineCalibData", "ITkPixelOfflineCalibData", "Output key of ITk pixel cluster"};
130
132 {this,"PixelErrorScalingKey", "/Indet/TrkErrorScalingPixel", "Key for pixel error scaling conditions data."};
133
136 IntegerProperty m_positionStrategy{this, "PositionStrategy", 1,
137 "Which calibration of cluster positions"};
138 mutable std::atomic_int m_errorStrategy{2};
139 IntegerProperty m_errorStrategyProperty{this, "ErrorStrategy", 2,
140 "Which calibration of cluster position errors"};
141
142
156 const PixelID* m_pixelid = nullptr;
157
160 BooleanProperty m_applyNNcorrectionProperty{this, "applyNNcorrection", false};
161
163 ToolHandle<InDet::NnClusterizationFactory> m_NnClusterizationFactory
164 {this, "NnClusterizationFactory",
165 "InDet::NnClusterizationFactory/NnClusterizationFactory"};
166
167 BooleanProperty m_doNotRecalibrateNN{this, "doNotRecalibrateNN", false};
168 BooleanProperty m_noNNandBroadErrors{this, "noNNandBroadErrors", false};
170 BooleanProperty m_usingTIDE_Ambi{this, "RunningTIDE_Ambi", false};
173
176
177};
178
179} // end of namespace ITk
180
181#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:
bool getErrorsDefaultAmbi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
virtual ~PixelClusterOnTrackTool()=default
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguities > m_splitClusterMapKey
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainer
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo & getClusterSplittingProbability(const InDet::PixelCluster *pix) 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)
InDet::PixelClusterOnTrack * correctNN(const Trk::PrepRawData &, const Trk::TrackParameters &) const
bool m_applyNNcorrection
Enable NN based calibration (do only if NN calibration is applied)
virtual StatusCode initialize() override
AlgTool initialisation.
InDet::PixelClusterOnTrack * correctDefault(const Trk::PrepRawData &, const Trk::TrackParameters &) const
The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track predi...
bool getErrorsTIDE_Ambi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) 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.
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_pixelErrorScalingKey
PixelClusterOnTrackTool(const std::string &, const std::string &, const IInterface *)
AlgTool constructor.
virtual InDet::PixelClusterOnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &ctx=Gaudi::Hive::currentContext()) const override
produces a PixelClusterOnTrack (object factory!).
Specific class to represent the pixel measurements.
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:67
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