ATLAS Offline Software
AnalogueClusteringToolImpl.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 ACTS_ANALOGUECLUSTERING_H
6 #define ACTS_ANALOGUECLUSTERING_H
7 
13 
15 #include "OnTrackCalibrator.h"
16 
17 namespace ActsTrk {
18 
19 template <typename calib_data_t, typename traj_t>
20 class AnalogueClusteringToolImpl : public extends<AthAlgTool, IOnTrackCalibratorTool<traj_t>> {
21 public:
22  using base_class = typename extends<AthAlgTool, IOnTrackCalibratorTool<traj_t>>::base_class;
26 
27  AnalogueClusteringToolImpl(const std::string& type,
28  const std::string& name,
29  const IInterface* parent);
30 
31  virtual StatusCode initialize() override;
32 
33  std::pair<Pos, Cov> calibrate(const Acts::GeometryContext&,
34  const Acts::CalibrationContext&,
35  const xAOD::PixelCluster&,
36  const TrackStateProxy&) const;
37 
38  std::pair<Pos, Cov> calibrate(const Acts::GeometryContext&,
39  const Acts::CalibrationContext&,
40  const xAOD::PixelCluster&,
41  const Acts::BoundTrackParameters&) const;
42 
43  virtual void connect(OnTrackCalibrator<traj_t>& calibrator) const override;
44 
45  virtual void connectPixelCalibrator(IOnBoundStateCalibratorTool::PixelCalibrator& calibrator) const override;
46 
47  virtual bool calibrateAfterMeasurementSelection() const override { return m_postCalibration.value(); }
48 
49 private:
50 
51  using error_data_t = typename std::remove_pointer_t<decltype(std::declval<calib_data_t>().getClusterErrorData())>;
52 
54 
55  std::pair<typename AnalogueClusteringToolImpl<calib_data_t, traj_t>::Pos,
57  calibrate(const Acts::GeometryContext& gctx,
58  const Acts::CalibrationContext& cctx,
59  const xAOD::PixelCluster& cluster,
60  const InDetDD::SiDetectorElement& detElement,
61  const std::pair<float, float>& angles) const;
62 
63  std::pair<float, float>
65  const Acts::Vector3& direction) const;
66 
67 
68  std::pair<float, float> getCentroid(const std::vector<Identifier>& rdos,
69  const InDetDD::SiDetectorElement& element) const;
70 
71  const error_data_t* getErrorData() const;
72 
73  std::pair<std::optional<float>, std::optional<float>>
74  getCorrectedPosition(const std::vector<Identifier>& rdos,
75  const error_data_t& errorData,
76  const InDetDD::SiDetectorElement& element,
77  const std::pair<float, float>& angles,
78  const xAOD::PixelCluster& cluster) const;
79 
80  std::pair<std::optional<float>, std::optional<float>>
81  getCorrectedError(const error_data_t& errorData,
82  const InDetDD::SiDetectorElement& element,
83  const std::pair<float, float>& angles,
84  const xAOD::PixelCluster& cluster) const;
85 
87  this,
88  "DetEleCollKey",
89  "",
90  "Key of SiDetectorElementCollection for Pixel"
91  };
92 
94  this,
95  "PixelOfflineCalibData",
96  "ITkPixelOfflineCalibData",
97  "Calibration data for pixel clusters"
98  };
99 
100 
101  ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool {
102  this,
103  "PixelLorentzAngleTool",
104  "",
105  "Tool to retreive Lorentz angle"
106  };
107 
108  // in micrometers
109  Gaudi::Property<int> m_thickness {this, "PixelThickness", 250};
110 
111  Gaudi::Property<bool> m_postCalibration{this,"CalibrateAfterMeasurementSelection",false,""};
112 
114 };
115 
116 } // namespace ActsTrk
117 
119 
120 #endif
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
ActsTrk::AnalogueClusteringToolImpl< ITk::PixelOfflineCalibData, ActsTrk::TrackFindingAlg::RecoTrackStateContainer >::base_class
typename extends< AthAlgTool, IOnTrackCalibratorTool< ActsTrk::TrackFindingAlg::RecoTrackStateContainer > >::base_class base_class
Definition: AnalogueClusteringToolImpl.h:22
ActsTrk::OnTrackCalibrator::TrackStateProxy
typename Acts::MultiTrajectory< traj_t >::TrackStateProxy TrackStateProxy
Definition: OnTrackCalibrator.h:18
ActsTrk::AnalogueClusteringToolImpl::connectPixelCalibrator
virtual void connectPixelCalibrator(IOnBoundStateCalibratorTool::PixelCalibrator &calibrator) const override
ITkPixelOfflineCalibData.h
ActsTrk::AnalogueClusteringToolImpl::getCentroid
std::pair< float, float > getCentroid(const std::vector< Identifier > &rdos, const InDetDD::SiDetectorElement &element) const
IOnTrackCalibratorTool.h
ActsTrk::AnalogueClusteringToolImpl::calibrateAfterMeasurementSelection
virtual bool calibrateAfterMeasurementSelection() const override
Definition: AnalogueClusteringToolImpl.h:47
ActsTrk::AnalogueClusteringToolImpl::getCorrectedPosition
std::pair< std::optional< float >, std::optional< float > > getCorrectedPosition(const std::vector< Identifier > &rdos, const error_data_t &errorData, const InDetDD::SiDetectorElement &element, const std::pair< float, float > &angles, const xAOD::PixelCluster &cluster) const
ActsTrk::IOnBoundStateCalibratorTool::PixelCalibrator
Acts::Delegate< std::pair< PixelPos, PixelCov >(const Acts::GeometryContext &, const Acts::CalibrationContext &, const xAOD::PixelCluster &, const Acts::BoundTrackParameters &)> PixelCalibrator
Definition: IOnBoundStateCalibratorTool.h:29
ActsTrk::AnalogueClusteringToolImpl::getErrorData
const error_data_t * getErrorData() const
ActsTrk::AnalogueClusteringToolImpl::connect
virtual void connect(OnTrackCalibrator< traj_t > &calibrator) const override
ActsTrk::AnalogueClusteringToolImpl< ITk::PixelOfflineCalibData, ActsTrk::TrackFindingAlg::RecoTrackStateContainer >::error_data_t
typename std::remove_pointer_t< decltype(std::declval< ITk::PixelOfflineCalibData >().getClusterErrorData())> error_data_t
Definition: AnalogueClusteringToolImpl.h:51
ActsTrk::AnalogueClusteringToolImpl::AnalogueClusteringToolImpl
AnalogueClusteringToolImpl(const std::string &type, const std::string &name, const IInterface *parent)
ActsTrk::AnalogueClusteringToolImpl::calibrate
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
AnalogueClusteringToolImpl.icc
ActsTrk::AnalogueClusteringToolImpl::m_pixelDetEleCollKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
Definition: AnalogueClusteringToolImpl.h:86
ActsTrk::AnalogueClusteringToolImpl::m_lorentzAngleTool
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
Definition: AnalogueClusteringToolImpl.h:101
OnTrackCalibrator.h
ActsTrk::AnalogueClusteringToolImpl::m_thickness
Gaudi::Property< int > m_thickness
Definition: AnalogueClusteringToolImpl.h:109
ActsTrk::AnalogueClusteringToolImpl< ITk::PixelOfflineCalibData, ActsTrk::TrackFindingAlg::RecoTrackStateContainer >::TrackStateProxy
typename OnTrackCalibrator< ActsTrk::TrackFindingAlg::RecoTrackStateContainer >::TrackStateProxy TrackStateProxy
Definition: AnalogueClusteringToolImpl.h:25
ActsTrk::OnTrackCalibrator::PixelPos
xAOD::MeasVector< 2 > PixelPos
Definition: OnTrackCalibrator.h:20
ActsTrk::AnalogueClusteringToolImpl< ITk::PixelOfflineCalibData, ActsTrk::TrackFindingAlg::RecoTrackStateContainer >::Cov
typename OnTrackCalibrator< ActsTrk::TrackFindingAlg::RecoTrackStateContainer >::PixelCov Cov
Definition: AnalogueClusteringToolImpl.h:24
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
ActsTrk::AnalogueClusteringToolImpl::anglesOfIncidence
std::pair< float, float > anglesOfIncidence(const InDetDD::SiDetectorElement &element, const Acts::Vector3 &direction) const
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ActsTrk::AnalogueClusteringToolImpl::m_pixelid
const PixelID * m_pixelid
Definition: AnalogueClusteringToolImpl.h:113
ReadCondHandleKey.h
ActsTrk::AnalogueClusteringToolImpl::calibrate
std::pair< Pos, Cov > calibrate(const Acts::GeometryContext &, const Acts::CalibrationContext &, const xAOD::PixelCluster &, const TrackStateProxy &) const
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
xAOD::DetectorIDHashType
unsigned int DetectorIDHashType
@ detector ID element hash
Definition: MeasurementDefs.h:42
ActsTrk::AnalogueClusteringToolImpl< ITk::PixelOfflineCalibData, ActsTrk::TrackFindingAlg::RecoTrackStateContainer >::Pos
typename OnTrackCalibrator< ActsTrk::TrackFindingAlg::RecoTrackStateContainer >::PixelPos Pos
Definition: AnalogueClusteringToolImpl.h:23
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
ActsTrk::AnalogueClusteringToolImpl::getDetectorElement
const InDetDD::SiDetectorElement & getDetectorElement(xAOD::DetectorIDHashType id) const
SiDetectorElementCollection.h
ActsTrk::AnalogueClusteringToolImpl::getCorrectedError
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
ActsTrk::AnalogueClusteringToolImpl::initialize
virtual StatusCode initialize() override
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection >
xAOD::PixelCluster_v1
Definition: PixelCluster_v1.h:17
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
ActsTrk::AnalogueClusteringToolImpl
Definition: AnalogueClusteringToolImpl.h:20
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:34
ActsTrk::OnTrackCalibrator
Definition: IOnTrackCalibratorTool.h:13
ActsTrk::OnTrackCalibrator::PixelCov
xAOD::MeasMatrix< 2 > PixelCov
Definition: OnTrackCalibrator.h:21
ActsTrk::AnalogueClusteringToolImpl::m_postCalibration
Gaudi::Property< bool > m_postCalibration
Definition: AnalogueClusteringToolImpl.h:111
ActsTrk::AnalogueClusteringToolImpl::calibrate
std::pair< Pos, Cov > calibrate(const Acts::GeometryContext &, const Acts::CalibrationContext &, const xAOD::PixelCluster &, const Acts::BoundTrackParameters &) const
PixelID
Definition: PixelID.h:67
ActsTrk::AnalogueClusteringToolImpl::m_clusterErrorKey
SG::ReadCondHandleKey< calib_data_t > m_clusterErrorKey
Definition: AnalogueClusteringToolImpl.h:93