ATLAS Offline Software
Loading...
Searching...
No Matches
AnalogueClusteringToolImpl.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSTRACKRECONSTRUCTION_ANALOGUECLUSTERINGTOOL_IMPL_H
6#define ACTSTRACKRECONSTRUCTION_ANALOGUECLUSTERINGTOOL_IMPL_H
7
14
17
18namespace ActsTrk::detail {
19
20 template <typename calib_data_t, typename traj_t>
22 : public extends<AthAlgTool, IOnTrackCalibratorTool<traj_t>> {
23 public:
24 using base_class = typename extends<AthAlgTool, IOnTrackCalibratorTool<traj_t>>::base_class;
28
29 AnalogueClusteringToolImpl(const std::string& type,
30 const std::string& name,
31 const IInterface* parent);
32
33 virtual StatusCode initialize() override;
34
35 std::pair<Pos, Cov> calibrate(const Acts::GeometryContext&,
36 const Acts::CalibrationContext&,
37 const xAOD::PixelCluster&,
38 const TrackStateProxy&) const;
39
40 std::pair<Pos, Cov> calibrate(const Acts::GeometryContext&,
41 const Acts::CalibrationContext&,
42 const xAOD::PixelCluster&,
43 const Acts::BoundTrackParameters&) const;
44
45 virtual void connect(OnTrackCalibrator<traj_t>& calibrator) const override;
46
48
49 virtual bool calibrateAfterMeasurementSelection() const override;
50
51 private:
52
53 using error_data_t = typename std::remove_pointer_t<decltype(std::declval<calib_data_t>().getClusterErrorData())>;
54
56
57 std::pair<typename AnalogueClusteringToolImpl<calib_data_t, traj_t>::Pos,
59 calibrate(const Acts::GeometryContext& gctx,
60 const Acts::CalibrationContext& cctx,
61 const xAOD::PixelCluster& cluster,
62 const InDetDD::SiDetectorElement& detElement,
63 const std::pair<float, float>& angles) const;
64
65 std::pair<float, float>
67 const Acts::Vector3& direction) const;
68
69
70 std::pair<float, float> getCentroid(const xAOD::PixelCluster& cluster,
71 const InDetDD::SiDetectorElement& element) const;
72
73 const error_data_t* getErrorData() const;
74
75 std::pair<std::optional<float>, std::optional<float>>
77 const error_data_t& errorData,
78 const InDetDD::SiDetectorElement& element,
79 const std::pair<float, float>& angles) const;
80
81 std::pair<std::optional<float>, std::optional<float>>
83 const InDetDD::SiDetectorElement& element,
84 const std::pair<float, float>& angles,
85 const xAOD::PixelCluster& cluster) const;
86
88 "Key of SiDetectorElementCollection for Pixel"
89 };
90
91 SG::ReadCondHandleKey<calib_data_t> m_clusterErrorKey {this, "PixelOfflineCalibData", "ITkPixelOfflineCalibData",
92 "Calibration data for pixel clusters"
93 };
94
95 ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool {this, "PixelLorentzAngleTool", "",
96 "Tool to retreive Lorentz angle"
97 };
98
99 // in micrometers
100 Gaudi::Property<int> m_thickness {this, "PixelThickness", 250};
101 Gaudi::Property<bool> m_postCalibration{this, "CalibrateAfterMeasurementSelection", false};
102 Gaudi::Property<bool> m_correctCovariance{this, "PerformCovarianceCalibration", true};
103 Gaudi::Property<double> m_calibratedCovarianceLowerBound {this, "CalibratedCovarianceLowerBound", 0.};
104 Gaudi::Property<bool> m_useWeightedPos {this, "UseWeightedPosition", false}; // if pixel cluster use weighted local position
105
106 Gaudi::Property<int> m_errorStrategy {this, "errorStrategy", 1, "Which error strategy to use for clusters on track: 0 - calibrated, 1 - cluster pitch, to be used only if broadClusters is used during clustering"};
107
108
109 const PixelID* m_pixelid {nullptr};
110 };
111
112} // namespace ActsTrk::detail
113
115
116#endif
This is an Identifier helper class for the Pixel subdetector.
Acts::Delegate< std::pair< PixelPos, PixelCov >(const Acts::GeometryContext &, const Acts::CalibrationContext &, const xAOD::PixelCluster &, const Acts::BoundTrackParameters &)> PixelCalibrator
typename OnTrackCalibrator< traj_t >::PixelPos Pos
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
typename extends< AthAlgTool, IOnTrackCalibratorTool< traj_t > >::base_class base_class
std::pair< std::optional< float >, std::optional< float > > getCorrectedPosition(const xAOD::PixelCluster &cluster, const error_data_t &errorData, const InDetDD::SiDetectorElement &element, const std::pair< float, float > &angles) const
std::pair< typename AnalogueClusteringToolImpl< calib_data_t, traj_t >::Pos, typename AnalogueClusteringToolImpl< calib_data_t, traj_t >::Cov > calibrate(const Acts::GeometryContext &gctx, const Acts::CalibrationContext &cctx, const xAOD::PixelCluster &cluster, const InDetDD::SiDetectorElement &detElement, const std::pair< float, float > &angles) const
typename OnTrackCalibrator< traj_t >::TrackStateProxy TrackStateProxy
virtual StatusCode initialize() override
const InDetDD::SiDetectorElement & getDetectorElement(xAOD::DetectorIDHashType id) const
typename std::remove_pointer_t< decltype(std::declval< calib_data_t >().getClusterErrorData())> error_data_t
std::pair< float, float > anglesOfIncidence(const InDetDD::SiDetectorElement &element, const Acts::Vector3 &direction) const
AnalogueClusteringToolImpl(const std::string &type, const std::string &name, const IInterface *parent)
std::pair< std::optional< float >, std::optional< float > > getCorrectedError(const error_data_t &errorData, const InDetDD::SiDetectorElement &element, const std::pair< float, float > &angles, const xAOD::PixelCluster &cluster) const
const error_data_t * getErrorData() const
virtual void connect(OnTrackCalibrator< traj_t > &calibrator) const override
typename OnTrackCalibrator< traj_t >::PixelCov Cov
std::pair< Pos, Cov > calibrate(const Acts::GeometryContext &, const Acts::CalibrationContext &, const xAOD::PixelCluster &, const TrackStateProxy &) const
virtual void connectPixelCalibrator(IOnBoundStateCalibratorTool::PixelCalibrator &calibrator) const override
virtual bool calibrateAfterMeasurementSelection() const override
SG::ReadCondHandleKey< calib_data_t > m_clusterErrorKey
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
std::pair< Pos, Cov > calibrate(const Acts::GeometryContext &, const Acts::CalibrationContext &, const xAOD::PixelCluster &, const Acts::BoundTrackParameters &) const
std::pair< float, float > getCentroid(const xAOD::PixelCluster &cluster, const InDetDD::SiDetectorElement &element) const
Inner detector / ITk calibrator implementation used in the KalmanFilterTool.
typename Acts::MultiTrajectory< traj_t >::TrackStateProxy TrackStateProxy
Class to hold geometrical description of a silicon detector element.
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:67
Athena definition of the Eigen plugin.
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.
unsigned int DetectorIDHashType
@ detector ID element hash