16#ifndef ALICEO2_FWDALIGN_SYMBDMATRIX_H
17#define ALICEO2_FWDALIGN_SYMBDMATRIX_H
54 void Clear(Option_t* option =
"")
override;
57 void Reset()
override;
65 Double_t
operator()(Int_t rown, Int_t coln)
const override;
66 Double_t&
operator()(Int_t rown, Int_t coln)
override;
71 Double_t&
DiagElem(Int_t
r)
override {
return (*
this)(
r,
r); }
77 void Solve(Double_t* rhs);
80 void Solve(
const Double_t* rhs, Double_t* sol);
82 void Solve(TVectorD& rhs) {
Solve(rhs.GetMatrixArray()); }
83 void Solve(
const TVectorD& rhs, TVectorD& sol) {
Solve(rhs.GetMatrixArray(), sol.GetMatrixArray()); }
86 void Print(Option_t* option =
"")
const override;
94 void MultiplyByVec(
const Double_t* vecIn, Double_t* vecOut)
const override;
96 void MultiplyByVec(
const TVectorD& vecIn, TVectorD& vecOut)
const override;
99 void AddToRow(Int_t
r, Double_t* valc, Int_t* indc, Int_t
n)
override;
102 virtual Int_t
GetIndex(Int_t diagID)
const;
130 return (diagID + 1) * fRowLwb - 1;
138 return (
const Double_t&)idx < 0 ? 0.0 :
fElems[idx];
170 MultiplyByVec(vecIn.GetMatrixArray(), vecOut.GetMatrixArray());
Abstract class (from AliROOT) for square matrix used for millepede2 operation.
void Swap(int &r, int &c) const
Double_t DiagElem(Int_t r) const override
Float_t GetDensity() const override
get fraction of non-zero elements
void Print(Option_t *option="") const override
print data
Int_t GetBandHWidth() const
void Solve(Double_t *rhs)
solve matrix equation
void MultiplyByVec(const Double_t *vecIn, Double_t *vecOut) const override
fill vecOut by matrix*vecIn
ClassDefOverride(SymBDMatrix, 0)
Double_t * fElems
Elements booked by constructor.
void SetEl(Int_t row, Int_t col, Double_t val)
virtual Int_t GetIndex(Int_t row, Int_t col) const
Double_t & DiagElem(Int_t r) override
void SetDecomposed(Bool_t v=kTRUE)
void Solve(const TVectorD &rhs, TVectorD &sol)
Int_t GetNElemsStored() const
Double_t operator()(Int_t rown, Int_t coln) const override
void Reset() override
set all elems to 0
void Clear(Option_t *option="") override
clear dynamic part
void DecomposeLDLT()
decomposition to L Diag L^T
void AddToRow(Int_t r, Double_t *valc, Int_t *indc, Int_t n) override
add list of elements to row r
~SymBDMatrix() override
d-tor
SymBDMatrix & operator=(const SymBDMatrix &src)
assignment operator
void Solve(TVectorD &rhs)
Double_t GetEl(Int_t row, Int_t col) const
Bool_t IsDecomposed() const
GLubyte GLubyte GLubyte GLubyte w
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...