ATLAS Offline Software
Loading...
Searching...
No Matches
IPCMatrixTool.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 TRKALIGNGENTOOLS_IPCMATRIXTOOL_H
6#define TRKALIGNGENTOOLS_IPCMATRIXTOOL_H
7
21
24
25namespace Trk {
26
27 class AlVec;
28 class AlSymMatBase;
29 class IPCMat;
30
31 class IPCMatrixTool : public AthAlgTool, virtual public IMatrixTool {
32 public:
33
35 IPCMatrixTool(const std::string& type, const std::string& name,
36 const IInterface* parent);
37
39 virtual ~IPCMatrixTool();
40
42 StatusCode initialize();
43
45 StatusCode finalize();
46
48 StatusCode allocateMatrix(int nDoF);
49
51 void prepareBinaryFiles(int solveOption);
52
55
57 void addFirstDerivatives(std::list<int,double>& derivatives);
58
61
63 void addSecondDerivatives(std::list<std::pair<int,int>,double >& derivatives);
64
67
69 int solve();
70
71 void addFirstDerivative(int irow, double firstderiv);
72 void addSecondDerivative(int irow, int icol, double secondderiv);
73
74 //void setAlignModule(int, const AlignModule*, int) {}
75
76 private:
77
79 IPCMat* m_ipcmat = nullptr;
80
81 Gaudi::Property<std::string> m_ipcmatMatName
82 {this, "IPCMatrixName", "/tmp/ipcmat.dat", "IPC binary matrix filename"};
83 Gaudi::Property<std::string> m_ipcmatVecName
84 {this, "IPCVectorName", "/tmp/ipcvec.dat", "IPC binary vector filename"};
85
87 Gaudi::Property<bool> m_IPCremoval{this, "IPCRemoval", false};
88
89 }; // end of class
90
91 inline void IPCMatrixTool::addFirstDerivative(int, double) { /*m_bigvector[i]+=firstderiv;*/ }
92
93 inline void IPCMatrixTool::addSecondDerivative(int, int, double) { /*m_bigmatrix[irow][icol]+=secondderiv;*/ }
94
95
96} // end of namespace
97
98#endif // TRKALIGNGENTOOLS_IPCMATRIXTOOL_H
99
100
101
102
103
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
contains the base implementation for handling symmertic matrices
IMatrixTool()
constructor
void addSecondDerivatives(AlSymMatBase *matrix)
adds second derivatives to matrix
StatusCode initialize()
initialize
IPCMatrixTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
void addFirstDerivatives(AlVec *vector)
adds first derivative to vector
bool accumulateFromFiles()
accumulates from files
void prepareBinaryFiles(int solveOption)
reads/writes matrix entries from/to binary files as necessary
virtual ~IPCMatrixTool()
Virtual destructor.
Gaudi::Property< std::string > m_ipcmatVecName
Gaudi::Property< std::string > m_ipcmatMatName
int solve()
solves for alignment parameters
IPCMat * m_ipcmat
Pointer to IPCMat, used for parallel processing.
StatusCode allocateMatrix(int nDoF)
allocates memory for IPC matrix and vector
void addFirstDerivative(int irow, double firstderiv)
StatusCode finalize()
initialize
void addSecondDerivative(int irow, int icol, double secondderiv)
Gaudi::Property< bool > m_IPCremoval
remove spurious + align.
Ensure that the ATLAS eigen extensions are properly loaded.