ATLAS Offline Software
AnalyticalDerivCalcTool.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 TRK_ANALYTICALDERIVCALCTOOL_H
6 #define TRK_ANALYTICALDERIVCALCTOOL_H
7 
9 #include "GaudiKernel/ToolHandle.h"
12 
15 
17 
18 #include <vector>
19 
20 
33 class AtlasDetectorID;
34 
35 namespace Trk
36 {
37  class AlignModule;
38  class AlignTrack;
39  class MeasurementTypeID;
40 
41  class AnalyticalDerivCalcTool : virtual public IDerivCalcTool, public AthAlgTool
42  {
43 
44  public:
45  AnalyticalDerivCalcTool(const std::string & type, const std::string & name, const IInterface * parent);
46 
47  StatusCode initialize() override;
48  StatusCode finalize() override;
49 
51  bool setDerivatives(AlignTrack * alignTrack) override;
52 
54  void showStatistics() override {}
55 
57  bool setResidualCovMatrix(AlignTrack * alignTrack) const override;
58 
59  private:
60 
61  PublicToolHandle<IAlignModuleTool> m_alignModuleTool{
62  this, "AlignModuleTool", "InDet::InDetAlignModuleTool/InDetAlignModuleTool"};
63 
64  const AtlasDetectorID * m_idHelper = nullptr;
66 
67  bool getMeasErrorMatrix(const AlignTrack * alignTrack, Amg::MatrixX & V) const;
68 
69  bool getTrkParamCovMatrix(const AlignTrack * alignTrack, Amg::MatrixX & HCH) const;
70 
71  bool checkValidity(const Amg::MatrixX & R) const;
72 
73  std::vector<Amg::VectorX> getDerivatives(AlignTrack * alignTrack, const AlignModule * module);
74 
75  void checkResidualType(const AlignTrack * alignTrack);
76 
77  std::vector<std::pair<const AlignModule *, std::vector<Amg::VectorX> > > m_derivatives;
78 
79  BooleanProperty m_useLocalSetting{this, "UseLocalSetting", false,
80  "use local setup for the covariance matrix of the track"};
81 
82  // Use constant errors for each sub-detector such that it's equivalent
83  // to minimize residual distance instead of minizing residual pull.
84  // This is only applied if m_useLocalSetting==true
85  BooleanProperty m_useIntrinsicPixelErrors{
86  this, "UseIntrinsicPixelError", false, "use intrinsic errors for Pixel"};
87  BooleanProperty m_useIntrinsicSCTErrors{
88  this, "UseIntrinsicSCTError", false, "use intrinsic errors for SCT"};
89  BooleanProperty m_useIntrinsicTRTErrors{
90  this, "UseIntrinsicTRTError", false, "use intrinsic errors for TRT"};
91 
93  bool m_residualTypeSet = false;
94 
95  BooleanProperty m_storeDerivatives{this, "StoreDerivatives", false,
96  "store derivatives dr/da on AlignTSOS to be filled into ntuple"};
97 
98  }; // end class
99 
100 } // end namespace
101 
102 #endif // TRK_ANALYTICALDERIVCALCTOOL_H
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:27
Trk::HitOnly
@ HitOnly
Definition: AlignResidualType.h:27
Trk::AnalyticalDerivCalcTool::setDerivatives
bool setDerivatives(AlignTrack *alignTrack) override
sets analytical partial derivatives of residuals w.r.t alignment parameters for TSOS on alignTrack.
Definition: AnalyticalDerivCalcTool.cxx:65
Trk::AnalyticalDerivCalcTool::AnalyticalDerivCalcTool
AnalyticalDerivCalcTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: AnalyticalDerivCalcTool.cxx:31
Trk::AnalyticalDerivCalcTool::finalize
StatusCode finalize() override
Definition: AnalyticalDerivCalcTool.cxx:58
Trk::AnalyticalDerivCalcTool::getDerivatives
std::vector< Amg::VectorX > getDerivatives(AlignTrack *alignTrack, const AlignModule *module)
Definition: AnalyticalDerivCalcTool.cxx:552
Trk::AlignModule
Definition: AlignModule.h:45
Trk::AnalyticalDerivCalcTool::m_idHelper
const AtlasDetectorID * m_idHelper
Definition: AnalyticalDerivCalcTool.h:64
Trk::AnalyticalDerivCalcTool::m_residualTypeSet
bool m_residualTypeSet
do we have the residual type set?
Definition: AnalyticalDerivCalcTool.h:93
Trk::AnalyticalDerivCalcTool::m_useIntrinsicTRTErrors
BooleanProperty m_useIntrinsicTRTErrors
Definition: AnalyticalDerivCalcTool.h:89
AlignResidualType.h
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
Trk::AnalyticalDerivCalcTool::m_useLocalSetting
BooleanProperty m_useLocalSetting
Definition: AnalyticalDerivCalcTool.h:79
Trk::AnalyticalDerivCalcTool::showStatistics
void showStatistics() override
not used yet
Definition: AnalyticalDerivCalcTool.h:54
Trk::AnalyticalDerivCalcTool::checkResidualType
void checkResidualType(const AlignTrack *alignTrack)
Definition: AnalyticalDerivCalcTool.cxx:815
AlignModule
AlignModule is a grouping of TrkDetElementBase objects, grouped according to the type of alignment,...
python.PyAthena.module
module
Definition: PyAthena.py:131
GeoPrimitives.h
Trk::AnalyticalDerivCalcTool::m_derivatives
std::vector< std::pair< const AlignModule *, std::vector< Amg::VectorX > > > m_derivatives
Definition: AnalyticalDerivCalcTool.h:77
Trk::AnalyticalDerivCalcTool::checkValidity
bool checkValidity(const Amg::MatrixX &R) const
Definition: AnalyticalDerivCalcTool.cxx:510
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Trk::AnalyticalDerivCalcTool::m_storeDerivatives
BooleanProperty m_storeDerivatives
Definition: AnalyticalDerivCalcTool.h:95
Trk::AnalyticalDerivCalcTool::m_useIntrinsicSCTErrors
BooleanProperty m_useIntrinsicSCTErrors
Definition: AnalyticalDerivCalcTool.h:87
Trk::AnalyticalDerivCalcTool::setResidualCovMatrix
bool setResidualCovMatrix(AlignTrack *alignTrack) const override
sets residual covariance matrix
Definition: AnalyticalDerivCalcTool.cxx:114
EventPrimitives.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Trk::MeasurementTypeID
classifies a MeasurementBase into one of the known inherited flavours or one of the detector types fo...
Definition: MeasurementTypeID.h:26
Trk::AlignTrack
Definition: AlignTrack.h:41
Trk::AnalyticalDerivCalcTool::m_alignModuleTool
PublicToolHandle< IAlignModuleTool > m_alignModuleTool
Definition: AnalyticalDerivCalcTool.h:61
Trk::IDerivCalcTool
Definition: IDerivCalcTool.h:36
Trk::AnalyticalDerivCalcTool::initialize
StatusCode initialize() override
Definition: AnalyticalDerivCalcTool.cxx:40
Trk::AnalyticalDerivCalcTool
Definition: AnalyticalDerivCalcTool.h:42
IAlignModuleTool.h
Trk::AnalyticalDerivCalcTool::getTrkParamCovMatrix
bool getTrkParamCovMatrix(const AlignTrack *alignTrack, Amg::MatrixX &HCH) const
Definition: AnalyticalDerivCalcTool.cxx:264
AthAlgTool
Definition: AthAlgTool.h:26
IDerivCalcTool.h
Trk::AnalyticalDerivCalcTool::m_measTypeIdHelper
MeasurementTypeID * m_measTypeIdHelper
Definition: AnalyticalDerivCalcTool.h:65
Trk::AnalyticalDerivCalcTool::m_residualType
int m_residualType
residual type to be used in the calculations
Definition: AnalyticalDerivCalcTool.h:92
AtlasDetectorID
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Definition: AtlasDetectorID.h:52
Trk::AnalyticalDerivCalcTool::getMeasErrorMatrix
bool getMeasErrorMatrix(const AlignTrack *alignTrack, Amg::MatrixX &V) const
Definition: AnalyticalDerivCalcTool.cxx:494
Trk::AnalyticalDerivCalcTool::m_useIntrinsicPixelErrors
BooleanProperty m_useIntrinsicPixelErrors
Definition: AnalyticalDerivCalcTool.h:85
AlignTrack
AlignTrack is a generalization of a Trk::Track, used as the basic object to contain track information...