ATLAS Offline Software
Loading...
Searching...
No Matches
AnalogueClusteringToolImpl.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 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
24 template <typename calib_data_t>
26 using error_data_t = typename std::remove_pointer_t<decltype(std::declval<calib_data_t>().getClusterErrorData())>;
32 };
33
35 template <typename calib_data_t, typename traj_t>
37 : public PixelClusterCalibratorBase<AnalogueClusteringCalibrator<calib_data_t,traj_t>, traj_t>
38 {
39 public:
41 friend BASE;
43
46 Options &&options)
47 : BASE(std::move(base_options)),
48 m_options(std::move(options))
49 {}
50
51 protected:
52 const error_data_t* getErrorData() const {
53 return m_options.m_errorData;
54 }
55
56 std::pair<typename AnalogueClusteringCalibrator<calib_data_t, traj_t>::BASE::Pos,
58 calibrate(const EventContext& ctx,
59 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> getCentroid(const EventContext& ctx,
66 const xAOD::PixelCluster& cluster,
67 const InDetDD::SiDetectorElement& element) const;
68
69 std::pair<std::optional<float>, std::optional<float>>
70 getCorrectedPosition(const EventContext& ctx,
71 const xAOD::PixelCluster& cluster,
72 const error_data_t& errorData,
73 const InDetDD::SiDetectorElement& element,
74 const std::pair<float, float>& angles) const;
75
76 std::pair<std::optional<float>, std::optional<float>>
78 const InDetDD::SiDetectorElement& element,
79 const std::pair<float, float>& angles,
80 const xAOD::PixelCluster& cluster) const;
81
83 };
84
86 template <typename calib_data_t, typename traj_t>
88 : public PixelClusterCalibrationToolBase<traj_t> {
89 public:
91 using BASE::BASE;
92
93 virtual StatusCode initialize() override;
94
95 virtual std::unique_ptr<PixelOnBoundStateCalibratorBase > create(const EventContext &ctx) const override {
96 return createOnTrackCalibrator(ctx);
97 }
98
99 virtual std::unique_ptr<PixelOnTrackCalibratorBase<traj_t> > createOnTrackCalibrator(const EventContext &ctx) const override final {
100 return std::make_unique<AnalogueClusteringCalibrator<calib_data_t,traj_t> >(this->createBaseOptions(ctx),
101 this->createOptions(ctx));
102 }
103
104 private:
106
108 // @TODO cannot use designators because there is a method which creates the options for the base class
110 .m_errorData=getErrorData(ctx),
112 .m_errorStrategy=m_errorStrategy,
113 .m_correctCovariance=m_correctCovariance,
114 .m_useWeightedPos=m_useWeightedPos};
115 return options;
116 }
117
118 SG::ReadCondHandleKey<calib_data_t> m_clusterErrorKey {this, "PixelOfflineCalibData", "ITkPixelOfflineCalibData",
119 "Calibration data for pixel clusters"
120 };
121
122 // in micrometers
123 Gaudi::Property<bool> m_correctCovariance{this, "PerformCovarianceCalibration", true};
124 Gaudi::Property<double> m_calibratedCovarianceLowerBound {this, "CalibratedCovarianceLowerBound", 0.};
125 Gaudi::Property<bool> m_useWeightedPos {this, "UseWeightedPosition", false}; // if pixel cluster use weighted local position
126
127 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"};
128 };
129
130} // namespace ActsTrk::detail
131
133
134#endif
This is an Identifier helper class for the Pixel subdetector.
AnalogueClusteringCalibratorOptions< calib_data_t > m_options
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
AnalogueClusteringCalibratorOptions< calib_data_t > Options
std::pair< std::optional< float >, std::optional< float > > getCorrectedPosition(const EventContext &ctx, const xAOD::PixelCluster &cluster, const error_data_t &errorData, const InDetDD::SiDetectorElement &element, const std::pair< float, float > &angles) const
PixelClusterCalibratorBase< AnalogueClusteringCalibrator< calib_data_t, traj_t >, traj_t > BASE
AnalogueClusteringCalibrator(PixelClusterCalibratorOptionsBase &&base_options, Options &&options)
std::pair< typename AnalogueClusteringCalibrator< calib_data_t, traj_t >::BASE::Pos, typename AnalogueClusteringCalibrator< calib_data_t, traj_t >::BASE::Cov > calibrate(const EventContext &ctx, const Acts::GeometryContext &gctx, const Acts::CalibrationContext &cctx, const xAOD::PixelCluster &cluster, const InDetDD::SiDetectorElement &detElement, const std::pair< float, float > &angles) const
std::pair< float, float > getCentroid(const EventContext &ctx, const xAOD::PixelCluster &cluster, const InDetDD::SiDetectorElement &element) const
AnalogueClusteringCalibratorOptions< calib_data_t >::error_data_t error_data_t
the tool to create the analogue clustering calibrator.
PixelClusterCalibrationToolBase< traj_t > BASE
virtual std::unique_ptr< PixelOnTrackCalibratorBase< traj_t > > createOnTrackCalibrator(const EventContext &ctx) const override final
AnalogueClusteringCalibratorOptions< calib_data_t > createOptions(const EventContext &ctx) const
virtual StatusCode initialize() override
initializes this base class (must be called by the derived class)
virtual std::unique_ptr< PixelOnBoundStateCalibratorBase > create(const EventContext &ctx) const override
convenience class to create an OnBoundState calibrator from an OnTrack calibrator.
const AnalogueClusteringCalibrator< calib_data_t, traj_t >::error_data_t * getErrorData(const EventContext &ctx) const
SG::ReadCondHandleKey< calib_data_t > m_clusterErrorKey
base class of a Pixel cluster calibration tool In addition to some common functionality provied by Pi...
PixelClusterCalibratorOptionsBase createBaseOptions(const EventContext &) const
create options needed by the calibrator base class.
Class to hold geometrical description of a silicon detector element.
Athena definition of the Eigen plugin.
STL namespace.
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.
Options for the analogue clustering calibrator.
typename std::remove_pointer_t< decltype(std::declval< calib_data_t >().getClusterErrorData())> error_data_t
the base options the options of the options of every PixelClusterCalibrator must be based on