ATLAS Offline Software
Loading...
Searching...
No Matches
PixelClusterOnTrackTool.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 PixelClusterOnTrackTool_H
6#define PixelClusterOnTrackTool_H
7
8#include "GaudiKernel/ToolHandle.h"
9#include "GaudiKernel/ThreadLocalContext.h"
11
15
19
20#include "Identifier/Identifier.h"
22
28
30
32
33#include <atomic>
34#include <mutex>
35
36namespace InDet {
37
51
53
60
62 public AthAlgTool, virtual public Trk::IRIO_OnTrackCreator
63{
65 // Public methods:
67
68public:
69
71 PixelClusterOnTrackTool(const std::string&,const std::string&,
72 const IInterface*);
75 virtual StatusCode initialize() override;
77 virtual StatusCode finalize () override;
78
86 const Trk::PrepRawData&, const Trk::TrackParameters&, const EventContext& ctx = Gaudi::Hive::currentContext()) const override;
87
89 // Private methods:
91
92protected:
93 void correctBow(const Identifier&, Amg::Vector2D& locpos, const double tanphi, const double taneta, const EventContext& ctx) const;
94
97 const EventContext& ctx) const;
98
101 const EventContext& ctx) const;
102
104 Amg::Vector2D&, Amg::MatrixX&) const;
105
107 Amg::Vector2D&, Amg::MatrixX&) const;
108
111 const InDet::PixelClusterStrategy) const;
112
115
117 if (!splitProbContainer.isValid()) {
118 ATH_MSG_FATAL("Failed to get cluster splitting probability container " << m_clusterSplitProbContainer);
119 }
120 return splitProbContainer->splitProbability(pix);
121 }
122
123private:
124
126 // Private data:
128
130 {this, "PixelDistortionData", "PixelDistortionData", "Output readout distortion data"};
131
132 ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool
133 {this, "LorentzAngleTool", "SiLorentzAngleTool", "Tool to retrieve Lorentz angle"};
134
136 {this, "PixelOfflineCalibData", "PixelOfflineCalibData", "Output key of pixel cluster"};
138 {this,"PixelErrorScalingKey", "/Indet/TrkErrorScalingPixel", "Key for pixel error scaling conditions data."};
139
142 BooleanProperty m_disableDistortions{this, "DisableDistortions", false,
143 "Disable simulation of module distortions"};
144 IntegerProperty m_positionStrategy{this, "PositionStrategy", 1,
145 "Which calibration of cluster positions"};
146 mutable std::atomic_int m_errorStrategy{2};
148 {this, "ErrorStrategy", 2, "Which calibration of cluster position errors"};
149
150
164 const PixelID* m_pixelid = nullptr;
165
167 BooleanProperty m_applyNNcorrectionProperty{this, "applyNNcorrection", false};
168 bool m_applyNNcorrection = false; // Updated depending on other configs
169 BooleanProperty m_NNIBLcorrection{this, "NNIBLcorrection", false};
170 bool m_IBLAbsent = true;
171
173 ToolHandle<NnClusterizationFactory> m_NnClusterizationFactory
174 {this, "NnClusterizationFactory",
175 "InDet::NnClusterizationFactory/NnClusterizationFactory"};
177 {this, "IBLParameterSvc", "IBLParameterSvc"};
178
179 BooleanProperty m_doNotRecalibrateNN{this, "doNotRecalibrateNN", false};
180 BooleanProperty m_noNNandBroadErrors{this, "noNNandBroadErrors", false};
182 BooleanProperty m_usingTIDE_Ambi{this, "RunningTIDE_Ambi", false};
185
188
189 //moved from static to member variable
190 static constexpr int s_nbinphi=9;
191 static constexpr int s_nbineta=6;
193 double m_caleta[s_nbineta][3]{};
194 double m_calerrphi[s_nbinphi][3]{};
195 double m_calerreta[s_nbineta][3]{};
196 double m_phix[s_nbinphi+1]{};
197 double m_etax[s_nbineta+1]{};
198};
199
200} // end of namespace InDet
201
202#endif // PixelClusterOnTrackTool_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:
const PixelID * m_pixelid
Flag controlling how module distortions are taken into account:
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_pixelErrorScalingKey
BooleanProperty m_disableDistortions
toolhandle for central error scaling flag storing if errors need scaling or should be kept nominal
InDet::PixelClusterOnTrack * correctDefault(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &ctx) const
The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track predi...
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguities > m_splitClusterMapKey
bool getErrorsDefaultAmbi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
virtual InDet::PixelClusterOnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &ctx=Gaudi::Hive::currentContext()) const override
produces a PixelClusterOnTrack (object factory!).
SG::ReadCondHandleKey< PixelCalib::PixelOfflineCalibData > m_clusterErrorKey
virtual StatusCode finalize() override
AlgTool termination.
InDet::PixelClusterOnTrack * correctNN(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &ctx) const
virtual StatusCode initialize() override
AlgTool initialisation.
SG::ReadCondHandleKey< PixelDistortionData > m_distortionKey
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo & getClusterSplittingProbability(const InDet::PixelCluster *pix) const
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
PixelClusterOnTrackTool(const std::string &, const std::string &, const IInterface *)
AlgTool constructor.
BooleanProperty m_usingTIDE_Ambi
Enable different treatment of cluster errors based on NN information (do only if TIDE ambi is run)
BooleanProperty m_applyNNcorrectionProperty
Enable NN based calibration (do only if NN calibration is applied)
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainer
bool getErrorsTIDE_Ambi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
ServiceHandle< IIBLParameterSvc > m_IBLParameterSvc
ToolHandle< NnClusterizationFactory > m_NnClusterizationFactory
NN clusterizationi factory for NN based positions and errors.
void correctBow(const Identifier &, Amg::Vector2D &locpos, const double tanphi, const double taneta, const EventContext &ctx) const
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
Primary Vertex Finder.
ParametersBase< TrackParametersDim, Charged > TrackParameters