ATLAS Offline Software
PixelClusterOnTrackTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef PixelClusterOnTrackTool_H
6 #define PixelClusterOnTrackTool_H
7 
8 #include "GaudiKernel/ToolHandle.h"
10 
14 
18 
19 #include "Identifier/Identifier.h"
21 
27 
29 
31 
32 #include <atomic>
33 #include <mutex>
34 
35 namespace InDet {
36 
51  class NnClusterizationFactory;
52 
58  };
59 
61  public AthAlgTool, virtual public Trk::IRIO_OnTrackCreator
62 {
64  // Public methods:
66 
67 public:
68 
70  PixelClusterOnTrackTool(const std::string&,const std::string&,
71  const IInterface*);
74  virtual StatusCode initialize() override;
76  virtual StatusCode finalize () override;
77 
85  const Trk::PrepRawData&, const Trk::TrackParameters&) const override;
86 
88  // Private methods:
90 
91 protected:
92  void correctBow(const Identifier&, Amg::Vector2D& locpos, const double tanphi, const double taneta) const;
93 
95  const Trk::TrackParameters&) const;
96 
98  const Trk::TrackParameters&) const;
99 
101  Amg::Vector2D&, Amg::MatrixX&) const;
102 
104  Amg::Vector2D&, Amg::MatrixX&) const;
105 
107  const Trk::TrackParameters&,
108  const InDet::PixelClusterStrategy) const;
109 
112 
114  if (!splitProbContainer.isValid()) {
115  ATH_MSG_FATAL("Failed to get cluster splitting probability container " << m_clusterSplitProbContainer);
116  }
117  return splitProbContainer->splitProbability(pix);
118  }
119 
120 private:
121 
123  // Private data:
125 
127  {this, "PixelDistortionData", "PixelDistortionData", "Output readout distortion data"};
128 
129  ToolHandle<ISiLorentzAngleTool> m_lorentzAngleTool{this, "LorentzAngleTool", "SiLorentzAngleTool", "Tool to retreive Lorentz angle"};
130 
131  SG::ReadCondHandleKey<PixelCalib::PixelOfflineCalibData> m_clusterErrorKey{this, "PixelOfflineCalibData", "PixelOfflineCalibData", "Output key of pixel cluster"};
133  {this,"PixelErrorScalingKey", "/Indet/TrkErrorScalingPixel", "Key for pixel error scaling conditions data."};
134 
139  mutable std::atomic_int m_errorStrategy{2};
140  IntegerProperty m_errorStrategyProperty{this, "ErrorStrategy", 2, "Which calibration of cluster position errors"};
141 
142 
155  const PixelID* m_pixelid;
157 
159  bool m_applyNNcorrection{false};
160  BooleanProperty m_applyNNcorrectionProperty{this, "applyNNcorrection", false};
163 
165  ToolHandle<NnClusterizationFactory> m_NnClusterizationFactory;
167 
173 
175  {this, "ClusterSplitProbabilityName", "",""};
176 
177  //moved from static to member variable
178  static constexpr int s_nbinphi=9;
179  static constexpr int s_nbineta=6;
180  double m_calphi[s_nbinphi]{};
181  double m_caleta[s_nbineta][3]{};
182  double m_calerrphi[s_nbinphi][3]{};
183  double m_calerreta[s_nbineta][3]{};
184  double m_phix[s_nbinphi+1]{};
185  double m_etax[s_nbineta+1]{};
186 };
187 
188 } // end of namespace InDet
189 
190 #endif // PixelClusterOnTrackTool_H
InDet::PixelClusterOnTrackTool::m_noNNandBroadErrors
bool m_noNNandBroadErrors
Definition: PixelClusterOnTrackTool.h:169
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
PixelDistortionData.h
Hold pixel distortion data produced by PixelDistortionAlg.
InDet::PixelClusterOnTrackTool::m_splitClusterMapKey
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguities > m_splitClusterMapKey
Definition: PixelClusterOnTrackTool.h:172
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
InDet::PixelClusterOnTrackTool::m_positionStrategy
int m_positionStrategy
Definition: PixelClusterOnTrackTool.h:138
InDet::PixelClusterOnTrackTool::m_clusterSplitProbContainer
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainer
Definition: PixelClusterOnTrackTool.h:175
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
TrackParameters.h
PixelOfflineCalibData.h
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
InDet::PixelClusterOnTrackTool::m_clusterErrorKey
SG::ReadCondHandleKey< PixelCalib::PixelOfflineCalibData > m_clusterErrorKey
Definition: PixelClusterOnTrackTool.h:131
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
Trk::ClusterSplitProbabilityContainer::ProbabilityInfo
Definition: ClusterSplitProbabilityContainer.h:22
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::PixelClusterOnTrackTool::m_calphi
double m_calphi[s_nbinphi]
Definition: PixelClusterOnTrackTool.h:180
InDet::PixelClusterOnTrackTool::m_NnClusterizationFactory
ToolHandle< NnClusterizationFactory > m_NnClusterizationFactory
NN clusterizationi factory for NN based positions and errors.
Definition: PixelClusterOnTrackTool.h:165
IRIO_OnTrackCreator.h
InDet::PixelClusterOnTrackTool::m_phix
double m_phix[s_nbinphi+1]
Definition: PixelClusterOnTrackTool.h:184
InDet::PixelClusterOnTrackTool::initialize
virtual StatusCode initialize() override
AlgTool initialisation.
Definition: PixelClusterOnTrackTool.cxx:93
InDet::PixelClusterOnTrackTool::correctDefault
InDet::PixelClusterOnTrack * correctDefault(const Trk::PrepRawData &, const Trk::TrackParameters &) const
The correct method produces a PixelClusterOnTrack using the measured PixelCluster and the track predi...
Definition: PixelClusterOnTrackTool.cxx:198
InDet::PixelClusterOnTrackTool::m_distortionKey
SG::ReadCondHandleKey< PixelDistortionData > m_distortionKey
Definition: PixelClusterOnTrackTool.h:127
ISiLorentzAngleTool.h
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::ReadHandleKey< InDet::PixelGangedClusterAmbiguities >
InDet::PixelClusterOnTrackTool::m_pixelErrorScalingKey
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_pixelErrorScalingKey
Definition: PixelClusterOnTrackTool.h:133
InDet::PixelClusterOnTrackTool::m_errorStrategy
std::atomic_int m_errorStrategy
Definition: PixelClusterOnTrackTool.h:139
InDet::PixelClusterOnTrackTool::finalize
virtual StatusCode finalize() override
AlgTool termination.
Definition: PixelClusterOnTrackTool.cxx:149
GeoPrimitives.h
InDet::PixelClusterOnTrackTool::m_IBLParameterSvc
ServiceHandle< IIBLParameterSvc > m_IBLParameterSvc
Definition: PixelClusterOnTrackTool.h:166
InDet::PixelClusterOnTrackTool
Definition: PixelClusterOnTrackTool.h:62
IIBLParameterSvc.h
InDet::PixelClusterOnTrackTool::s_nbinphi
static constexpr int s_nbinphi
Definition: PixelClusterOnTrackTool.h:178
InDet::PixelClusterOnTrackTool::m_doNotRecalibrateNN
bool m_doNotRecalibrateNN
Definition: PixelClusterOnTrackTool.h:168
InDet::PixelClusterOnTrackTool::m_lorentzAngleTool
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
Definition: PixelClusterOnTrackTool.h:129
InDet::PixelClusterOnTrackTool::m_IBLAbsent
bool m_IBLAbsent
Definition: PixelClusterOnTrackTool.h:162
PixelGangedClusterAmbiguities.h
InDet::PixelClusterStrategy
PixelClusterStrategy
Definition: PixelClusterOnTrackTool.h:53
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDet::PixelClusterOnTrackTool::m_errorStrategyProperty
IntegerProperty m_errorStrategyProperty
Definition: PixelClusterOnTrackTool.h:140
AthAlgTool.h
InDet::PIXELCLUSTER_DEFAULT
@ PIXELCLUSTER_DEFAULT
Definition: PixelClusterOnTrackTool.h:54
InDet::PIXELCLUSTER_SHARED
@ PIXELCLUSTER_SHARED
Definition: PixelClusterOnTrackTool.h:56
InDet::PixelClusterOnTrackTool::m_caleta
double m_caleta[s_nbineta][3]
Definition: PixelClusterOnTrackTool.h:181
InDet::PixelClusterOnTrackTool::getClusterSplittingProbability
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo & getClusterSplittingProbability(const InDet::PixelCluster *pix) const
Definition: PixelClusterOnTrackTool.h:110
Trk::ParametersBase
Definition: ParametersBase.h:55
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
InDet::PixelClusterOnTrackTool::m_applyNNcorrectionProperty
BooleanProperty m_applyNNcorrectionProperty
Definition: PixelClusterOnTrackTool.h:160
ReadCondHandleKey.h
Trk::PrepRawData
Definition: PrepRawData.h:62
InDet::PIXELCLUSTER_OUTLIER
@ PIXELCLUSTER_OUTLIER
Definition: PixelClusterOnTrackTool.h:55
InDet::PixelClusterOnTrackTool::m_calerrphi
double m_calerrphi[s_nbinphi][3]
Definition: PixelClusterOnTrackTool.h:182
InDet::PixelClusterOnTrackTool::PixelClusterOnTrackTool
PixelClusterOnTrackTool(const std::string &, const std::string &, const IInterface *)
AlgTool constructor.
Definition: PixelClusterOnTrackTool.cxx:58
InDet::PixelCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelCluster.h:49
SG::ReadCondHandleKey< PixelDistortionData >
InDet::PixelClusterOnTrackTool::getErrorsTIDE_Ambi
bool getErrorsTIDE_Ambi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
Definition: PixelClusterOnTrackTool.cxx:825
PixelRIO_OnTrackErrorScaling.h
InDet::PixelClusterOnTrack
Definition: PixelClusterOnTrack.h:51
InDet::PixelClusterOnTrackTool::correctBow
void correctBow(const Identifier &, Amg::Vector2D &locpos, const double tanphi, const double taneta) const
Definition: PixelClusterOnTrackTool.cxx:535
InDet::PixelClusterOnTrackTool::m_disableDistortions
bool m_disableDistortions
toolhandle for central error scaling flag storing if errors need scaling or should be kept nominal
Definition: PixelClusterOnTrackTool.h:137
InDet::PixelClusterOnTrackTool::m_usingTIDE_Ambi
bool m_usingTIDE_Ambi
Enable different treatment of cluster errors based on NN information (do only if TIDE ambi is run)
Definition: PixelClusterOnTrackTool.h:171
ClusterSplitProbabilityContainer.h
InDet::PixelClusterOnTrackTool::~PixelClusterOnTrackTool
virtual ~PixelClusterOnTrackTool()
InDet::PixelClusterOnTrackTool::m_calerreta
double m_calerreta[s_nbineta][3]
Definition: PixelClusterOnTrackTool.h:183
InDet::PixelClusterOnTrackTool::correctNN
InDet::PixelClusterOnTrack * correctNN(const Trk::PrepRawData &, const Trk::TrackParameters &) const
Definition: PixelClusterOnTrackTool.cxx:567
InDet::PixelClusterOnTrackTool::s_nbineta
static constexpr int s_nbineta
Definition: PixelClusterOnTrackTool.h:179
Trk::ClusterSplitProbabilityContainer::splitProbability
const ProbabilityInfo & splitProbability(const PrepRawData *cluster) const
Definition: ClusterSplitProbabilityContainer.h:35
InDet::PixelClusterOnTrackTool::m_applyNNcorrection
bool m_applyNNcorrection
Enable NN based calibration (do only if NN calibration is applied)
Definition: PixelClusterOnTrackTool.h:159
InDet::PixelClusterOnTrackTool::m_NNIBLcorrection
bool m_NNIBLcorrection
Definition: PixelClusterOnTrackTool.h:161
AthAlgTool
Definition: AthAlgTool.h:26
InDet::PIXELCLUSTER_SPLIT
@ PIXELCLUSTER_SPLIT
Definition: PixelClusterOnTrackTool.h:57
Trk::IRIO_OnTrackCreator
Interface class for transforming Trk::PrepRawData to Trk::RIO_OnTrack using a local track hypothesis.
Definition: IRIO_OnTrackCreator.h:32
InDet::PixelClusterOnTrackTool::m_pixelid
const PixelID * m_pixelid
Flag controlling how module distortions are taken into account:
Definition: PixelClusterOnTrackTool.h:156
pix
Definition: PixelMapping.cxx:16
PixelClusterOnTrack.h
PixelID
Definition: PixelID.h:67
InDet::PixelClusterOnTrackTool::correct
virtual InDet::PixelClusterOnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &) const override
produces a PixelClusterOnTrack (object factory!).
Definition: PixelClusterOnTrackTool.cxx:160
InDet::PixelClusterOnTrackTool::getErrorsDefaultAmbi
bool getErrorsDefaultAmbi(const InDet::PixelCluster *, const Trk::TrackParameters &, Amg::Vector2D &, Amg::MatrixX &) const
Definition: PixelClusterOnTrackTool.cxx:677
InDet::PixelClusterOnTrackTool::m_etax
double m_etax[s_nbineta+1]
Definition: PixelClusterOnTrackTool.h:185
Trk::ClusterSplitProbabilityContainer::getNoSplitProbability
static const ProbabilityInfo & getNoSplitProbability()
Definition: ClusterSplitProbabilityContainer.h:33
ServiceHandle< IIBLParameterSvc >