45 template<
class Element>
51 if (fRowInd >= matrix.
GetNrows() || fRowInd < 0) {
52 Error(
"TMatrixTRow_const(const TMatrixT<Element> &,Int_t)",
"row index out of bounds");
67 template<
class Element>
73 if (fRowInd >= matrix.
GetNrows() || fRowInd < 0) {
74 Error(
"TMatrixTRow_const(const TMatrixTSym &,Int_t)",
"row index out of bounds");
89 template<
class Element>
98 template<
class Element>
107 template<
class Element>
116 template<
class Element>
120 Element *rp =
const_cast<Element *
>(this->
fPtr);
125 template<
class Element>
129 Element *rp =
const_cast<Element *
>(this->
fPtr);
130 auto litr = l.begin();
131 for ( ; rp < this->
fPtr+this->
fMatrix->GetNcols() && litr != l.end(); rp += this->
fInc)
138 template<
class Element>
142 Element *rp =
const_cast<Element *
>(this->
fPtr);
150 template<
class Element>
154 Element *rp =
const_cast<Element *
>(this->
fPtr);
162 template<
class Element>
172 Error(
"operator=(const TMatrixTRow_const &)",
"matrix rows not compatible");
176 Element *rp1 =
const_cast<Element *
>(this->
fPtr);
177 const Element *rp2 = mr.
GetPtr();
186 template<
class Element>
193 Error(
"operator=(const TVectorT &)",
"vector length != matrix-row length");
197 Element *rp =
const_cast<Element *
>(this->
fPtr);
206 template<
class Element>
215 Error(
"operator+=(const TMatrixTRow_const &)",
"different row lengths");
219 Element *rp1 =
const_cast<Element *
>(this->
fPtr);
220 const Element *rp2 = r.
GetPtr();
229 template<
class Element>
238 Error(
"operator*=(const TMatrixTRow_const &)",
"different row lengths");
242 Element *rp1 =
const_cast<Element *
>(this->
fPtr);
243 const Element *rp2 = r.
GetPtr();
251 template<
class Element>
257 if (this->fColInd >= matrix.
GetNcols() || this->fColInd < 0) {
258 Error(
"TMatrixTColumn_const(const TMatrixT &,Int_t)",
"column index out of bounds");
273 template<
class Element>
279 if (fColInd >= matrix.
GetNcols() || fColInd < 0) {
280 Error(
"TMatrixTColumn_const(const TMatrixTSym &,Int_t)",
"column index out of bounds");
295 template<
class Element>
304 template<
class Element>
313 template<
class Element>
322 template<
class Element>
326 Element *cp =
const_cast<Element *
>(this->
fPtr);
327 for ( ; cp < this->
fPtr+this->
fMatrix->GetNoElements(); cp += this->
fInc)
334 template<
class Element>
338 Element *rp =
const_cast<Element *
>(this->
fPtr);
339 auto litr = l.begin();
340 for ( ; rp < this->
fPtr+this->
fMatrix->GetNoElements() && litr != l.end(); rp += this->
fInc)
347 template<
class Element>
351 Element *cp =
const_cast<Element *
>(this->
fPtr);
352 for ( ; cp < this->
fPtr+this->
fMatrix->GetNoElements(); cp += this->
fInc)
359 template<
class Element>
363 Element *cp =
const_cast<Element *
>(this->
fPtr);
364 for ( ; cp < this->
fPtr+this->
fMatrix->GetNoElements(); cp += this->
fInc)
371 template<
class Element>
381 Error(
"operator=(const TMatrixTColumn_const &)",
"matrix columns not compatible");
385 Element *cp1 =
const_cast<Element *
>(this->
fPtr);
386 const Element *cp2 = mc.
GetPtr();
394 template<
class Element>
401 Error(
"operator=(const TVectorT &)",
"vector length != matrix-column length");
405 Element *cp =
const_cast<Element *
>(this->
fPtr);
407 for ( ; cp < this->
fPtr+this->
fMatrix->GetNoElements(); cp += this->
fInc)
416 template<
class Element>
425 Error(
"operator+=(const TMatrixTColumn_const &)",
"different row lengths");
429 Element *cp1 =
const_cast<Element *
>(this->
fPtr);
430 const Element *cp2 = mc.
GetPtr();
439 template<
class Element>
448 Error(
"operator*=(const TMatrixTColumn_const &)",
"different row lengths");
452 Element *cp1 =
const_cast<Element *
>(this->
fPtr);
453 const Element *cp2 = mc.
GetPtr();
461 template<
class Element>
475 template<
class Element>
489 template<
class Element>
498 template<
class Element>
507 template<
class Element>
516 template<
class Element>
520 Element *dp =
const_cast<Element *
>(this->
fPtr);
528 template<
class Element>
532 Element *dp =
const_cast<Element *
>(this->
fPtr);
540 template<
class Element>
544 Element *dp =
const_cast<Element *
>(this->
fPtr);
552 template<
class Element>
556 if (this->
fMatrix == mt)
return;
562 Error(
"operator=(const TMatrixTDiag_const &)",
"diagonals not compatible");
566 Element *dp1 =
const_cast<Element *
>(this->
fPtr);
567 const Element *dp2 = md.
GetPtr();
575 template<
class Element>
582 Error(
"operator=(const TVectorT &)",
"vector length != matrix-diagonal length");
586 Element *dp =
const_cast<Element *
>(this->
fPtr);
596 template<
class Element>
604 Error(
"operator=(const TMatrixTDiag_const &)",
"matrix-diagonal's different length");
608 Element *dp1 =
const_cast<Element *
>(this->
fPtr);
609 const Element *dp2 = md.
GetPtr();
618 template<
class Element>
626 Error(
"operator*=(const TMatrixTDiag_const &)",
"matrix-diagonal's different length");
630 Element *dp1 =
const_cast<Element *
>(this->
fPtr);
631 const Element *dp2 = md.
GetPtr();
639 template<
class Element>
652 template<
class Element>
665 template<
class Element>
674 template<
class Element>
683 template<
class Element>
692 template<
class Element>
696 Element *fp =
const_cast<Element *
>(this->
fPtr);
697 while (fp < this->
fPtr+this->
fMatrix->GetNoElements())
704 template<
class Element>
708 Element *fp =
const_cast<Element *
>(this->
fPtr);
709 while (fp < this->
fPtr+this->
fMatrix->GetNoElements())
716 template<
class Element>
720 Element *fp =
const_cast<Element *
>(this->
fPtr);
721 while (fp < this->
fPtr+this->
fMatrix->GetNoElements())
728 template<
class Element>
737 Error(
"operator=(const TMatrixTFlat_const &)",
"matrix lengths different");
741 Element *fp1 =
const_cast<Element *
>(this->
fPtr);
742 const Element *fp2 = mf.
GetPtr();
743 while (fp1 < this->
fPtr+this->
fMatrix->GetNoElements())
750 template<
class Element>
756 Error(
"operator=(const TVectorT &)",
"vector length != # matrix-elements");
760 Element *fp =
const_cast<Element *
>(this->
fPtr);
762 while (fp < this->
fPtr+this->
fMatrix->GetNoElements())
769 template<
class Element>
777 Error(
"operator+=(const TMatrixTFlat_const &)",
"matrices lengths different");
781 Element *fp1 =
const_cast<Element *
>(this->
fPtr);
782 const Element *fp2 = mf.
GetPtr();
783 while (fp1 < this->
fPtr + this->
fMatrix->GetNoElements())
790 template<
class Element>
798 Error(
"operator*=(const TMatrixTFlat_const &)",
"matrices lengths different");
802 Element *fp1 =
const_cast<Element *
>(this->
fPtr);
803 const Element *fp2 = mf.
GetPtr();
804 while (fp1 < this->
fPtr + this->
fMatrix->GetNoElements())
813 template<
class Element>
825 if (row_upbs < row_lwbs) {
826 Error(
"TMatrixTSub_const",
"Request sub-matrix with row_upbs(%d) < row_lwbs(%d)",row_upbs,row_lwbs);
829 if (col_upbs < col_lwbs) {
830 Error(
"TMatrixTSub_const",
"Request sub-matrix with col_upbs(%d) < col_lwbs(%d)",col_upbs,col_lwbs);
839 if (row_lwbs < rowLwb || row_lwbs > rowUpb) {
840 Error(
"TMatrixTSub_const",
"Request row_lwbs sub-matrix(%d) outside matrix range of %d - %d",row_lwbs,rowLwb,rowUpb);
843 if (col_lwbs < colLwb || col_lwbs > colUpb) {
844 Error(
"TMatrixTSub_const",
"Request col_lwbs sub-matrix(%d) outside matrix range of %d - %d",col_lwbs,colLwb,colUpb);
847 if (row_upbs < rowLwb || row_upbs > rowUpb) {
848 Error(
"TMatrixTSub_const",
"Request row_upbs sub-matrix(%d) outside matrix range of %d - %d",row_upbs,rowLwb,rowUpb);
851 if (col_upbs < colLwb || col_upbs > colUpb) {
852 Error(
"TMatrixTSub_const",
"Request col_upbs sub-matrix(%d) outside matrix range of %d - %d",col_upbs,colLwb,colUpb);
856 fRowOff = row_lwbs-rowLwb;
857 fColOff = col_lwbs-colLwb;
858 fNrowsSub = row_upbs-row_lwbs+1;
859 fNcolsSub = col_upbs-col_lwbs+1;
867 template<
class Element>
879 if (row_upbs < row_lwbs) {
880 Error(
"TMatrixTSub_const",
"Request sub-matrix with row_upbs(%d) < row_lwbs(%d)",row_upbs,row_lwbs);
883 if (col_upbs < col_lwbs) {
884 Error(
"TMatrixTSub_const",
"Request sub-matrix with col_upbs(%d) < col_lwbs(%d)",col_upbs,col_lwbs);
893 if (row_lwbs < rowLwb || row_lwbs > rowUpb) {
894 Error(
"TMatrixTSub_const",
"Request row_lwbs sub-matrix(%d) outside matrix range of %d - %d",row_lwbs,rowLwb,rowUpb);
897 if (col_lwbs < colLwb || col_lwbs > colUpb) {
898 Error(
"TMatrixTSub_const",
"Request col_lwbs sub-matrix(%d) outside matrix range of %d - %d",col_lwbs,colLwb,colUpb);
901 if (row_upbs < rowLwb || row_upbs > rowUpb) {
902 Error(
"TMatrixTSub_const",
"Request row_upbs sub-matrix(%d) outside matrix range of %d - %d",row_upbs,rowLwb,rowUpb);
905 if (col_upbs < colLwb || col_upbs > colUpb) {
906 Error(
"TMatrixTSub_const",
"Request col_upbs sub-matrix(%d) outside matrix range of %d - %d",col_upbs,colLwb,colUpb);
910 fRowOff = row_lwbs-rowLwb;
911 fColOff = col_lwbs-colLwb;
912 fNrowsSub = row_upbs-row_lwbs+1;
913 fNcolsSub = col_upbs-col_lwbs+1;
919 template<
class Element>
929 template<
class Element>
939 template<
class Element>
949 template<
class Element>
956 Error(
"Rank1Update",
"vector too short");
966 const Element tmp = alpha*pv[irow];
968 mp[off+icol] += tmp*pv[icol];
975 template<
class Element>
992 template<
class Element>
1009 template<
class Element>
1026 template<
class Element>
1040 Error(
"operator=(const TMatrixTSub_const &)",
"sub matrices have different size");
1051 Element *
p1 =
const_cast<Element *
>(this->
fMatrix->GetMatrixArray());
1059 const Int_t off2 = (irow+rowOff2)*ncols2+colOff2;
1061 p1[off1+icol] = p2[off2+icol];
1075 const Int_t off2 = irow*ncols2;
1077 p1[off1+icol] = p2[off2+icol];
1085 template<
class Element>
1094 Error(
"operator=(const TMatrixTBase<Element> &)",
"sub matrices and matrix have different size");
1105 template<
class Element>
1114 Error(
"operator+=(const TMatrixTSub_const &)",
"sub matrices have different size");
1125 Element *
p1 =
const_cast<Element *
>(this->
fMatrix->GetMatrixArray());
1133 const Int_t off2 = (irow+rowOff2)*ncols2+colOff2;
1135 p1[off1+icol] += p2[off2+icol];
1149 const Int_t off2 = irow*ncols2;
1151 p1[off1+icol] += p2[off2+icol];
1159 template<
class Element>
1163 Error(
"operator*=(const TMatrixTSub_const &)",
"source sub matrix has wrong shape");
1175 source->
GetSub(row_lwbs,row_upbs,col_lwbs,col_upbs,source_sub);
1184 Element *trp = work;
1186 isAllocated =
kTRUE;
1190 Element *cp =
const_cast<Element *
>(this->
fMatrix->GetMatrixArray())+this->
fRowOff*ncols+this->
fColOff;
1191 const Element *trp0 = cp;
1192 const Element *
const trp0_last = trp0+this->
fNrowsSub*ncols;
1193 while (trp0 < trp0_last) {
1194 memcpy(trp,trp0,this->
fNcolsSub*
sizeof(Element));
1195 for (
const Element *scp = sp; scp < sp+this->
fNcolsSub; ) {
1199 cij += trp[j] * *scp;
1210 R__ASSERT(cp == trp0_last && trp0 == trp0_last);
1218 template<
class Element>
1225 Error(
"operator+=(const TMatrixTBase<Element> &)",
"sub matrix and matrix have different size");
1229 Element *
p1 =
const_cast<Element *
>(this->
fMatrix->GetMatrixArray());
1236 const Int_t off2 = irow*ncols2;
1238 p1[off1+icol] += p2[off2+icol];
1245 template<
class Element>
1249 Error(
"operator*=(const TMatrixT<Element> &)",
"source matrix has wrong shape");
1269 Element *trp = work;
1271 isAllocated =
kTRUE;
1275 Element *cp =
const_cast<Element *
>(this->
fMatrix->GetMatrixArray())+this->
fRowOff*ncols+this->
fColOff;
1276 const Element *trp0 = cp;
1277 const Element *
const trp0_last = trp0+this->
fNrowsSub*ncols;
1278 while (trp0 < trp0_last) {
1279 memcpy(trp,trp0,this->
fNcolsSub*
sizeof(Element));
1280 for (
const Element *scp = sp; scp < sp+this->
fNcolsSub; ) {
1284 cij += trp[j] * *scp;
1295 R__ASSERT(cp == trp0_last && trp0 == trp0_last);
1303 template<
class Element>
1307 Error(
"operator*=(const TMatrixTSym<Element> &)",
"source matrix has wrong shape");
1327 Element *trp = work;
1329 isAllocated =
kTRUE;
1333 Element *cp =
const_cast<Element *
>(this->
fMatrix->GetMatrixArray())+this->
fRowOff*ncols+this->
fColOff;
1334 const Element *trp0 = cp;
1335 const Element *
const trp0_last = trp0+this->
fNrowsSub*ncols;
1336 while (trp0 < trp0_last) {
1337 memcpy(trp,trp0,this->
fNcolsSub*
sizeof(Element));
1338 for (
const Element *scp = sp; scp < sp+this->
fNcolsSub; ) {
1342 cij += trp[j] * *scp;
1353 R__ASSERT(cp == trp0_last && trp0 == trp0_last);
1361 template<
class Element>
1367 if (fRowInd >= matrix.
GetNrows() || fRowInd < 0) {
1368 Error(
"TMatrixTSparseRow_const(const TMatrixTSparse &,Int_t)",
"row index out of bounds");
1379 fNindex = eIndex-sIndex;
1386 template<
class Element>
1392 if (acoln < fMatrix->
GetNcols() && acoln >= 0) {
1394 if (index >= 0 && fColPtr[index] == acoln)
return fDataPtr[index];
1397 Error(
"operator()",
"Request col(%d) outside matrix range of %d - %d",
1406 template<
class Element>
1415 template<
class Element>
1424 template<
class Element>
1430 if (acoln < this->
fMatrix->GetNcols() && acoln >= 0) {
1432 if (index >= 0 && this->
fColPtr[index] == acoln)
return this->
fDataPtr[index];
1435 Error(
"operator()",
"Request col(%d) outside matrix range of %d - %d",
1444 template<
class Element>
1451 if (acoln >= this->
fMatrix->GetNcols() || acoln < 0) {
1452 Error(
"operator()(Int_t",
"Requested element %d outside range : %d - %d",i,
1458 if (index >= 0 && this->
fColPtr[index] == acoln)
1459 return (const_cast<Element*>(this->
fDataPtr))[index];
1467 this->
fNindex = eIndex-sIndex;
1471 if (index >= 0 && this->
fColPtr[index] == acoln)
1472 return (const_cast<Element*>(this->
fDataPtr))[index];
1474 Error(
"operator()(Int_t",
"Insert row failed");
1483 template<
class Element>
1487 Element *rp =
const_cast<Element *
>(this->
fDataPtr);
1495 template<
class Element>
1499 Element *rp =
const_cast<Element *
>(this->
fDataPtr);
1507 template<
class Element>
1511 Element *rp =
const_cast<Element *
>(this->
fDataPtr);
1519 template<
class Element>
1523 if (this->
fMatrix == mt)
return;
1528 Error(
"operator=(const TMatrixTSparseRow_const &)",
"matrix rows not compatible");
1543 this->
fNindex = eIndex-sIndex;
1552 template<
class Element>
1559 Error(
"operator=(const TVectorT &)",
"vector length != matrix-row length");
1570 this->
fNindex = eIndex-sIndex;
1578 template<
class Element>
1586 Error(
"operator+=(const TMatrixTRow_const &)",
"different row lengths");
1604 this->
fNindex = eIndex-sIndex;
1613 template<
class Element>
1621 Error(
"operator+=(const TMatrixTRow_const &)",
"different row lengths");
1640 this->
fNindex = eIndex-sIndex;
1648 template<
class Element>
1660 template<
class Element>
1664 if (i < fNdiag && i >= 0) {
1667 const Element *
const pD =
fMatrix->GetMatrixArray();
1668 const Int_t sIndex = pR[i];
1669 const Int_t eIndex = pR[i+1];
1671 if (index >= sIndex && pC[index] == i)
return pD[index];
1674 Error(
"operator()",
"Request diagonal(%d) outside matrix range of 0 - %d",i,fNdiag);
1683 template<
class Element>
1692 template<
class Element>
1701 template<
class Element>
1705 if (i < this->
fNdiag && i >= 0) {
1706 const Int_t *
const pR = this->
fMatrix->GetRowIndexArray();
1707 const Int_t *
const pC = this->
fMatrix->GetColIndexArray();
1708 const Element *
const pD = this->
fMatrix->GetMatrixArray();
1709 const Int_t sIndex = pR[i];
1710 const Int_t eIndex = pR[i+1];
1712 if (index >= sIndex && pC[index] == i)
return pD[index];
1715 Error(
"operator()",
"Request diagonal(%d) outside matrix range of 0 - %d",i,this->
fNdiag);
1724 template<
class Element>
1729 if (i < 0 || i >= this->
fNdiag) {
1730 Error(
"operator()(Int_t",
"Requested element %d outside range : 0 - %d",i,this->
fNdiag);
1731 return (const_cast<Element*>(this->
fDataPtr))[0];
1737 Int_t sIndex = pR[i];
1738 Int_t eIndex = pR[i+1];
1740 if (index >= sIndex && pC[index] == i)
1741 return (const_cast<Element*>(this->
fDataPtr))[index];
1753 if (index >= sIndex && pC[index] == i)
1754 return (const_cast<Element*>(this->
fDataPtr))[index];
1756 Error(
"operator()(Int_t",
"Insert row failed");
1757 return (const_cast<Element*>(this->
fDataPtr))[0];
1765 template<
class Element>
1776 template<
class Element>
1787 template<
class Element>
1798 template<
class Element>
1802 if (this->
fMatrix == mt)
return;
1807 Error(
"operator=(const TMatrixTSparseDiag_const &)",
"matrix-diagonal's different length");
1818 template<
class Element>
1825 Error(
"operator=(const TVectorT &)",
"vector length != matrix-diagonal length");
1838 template<
class Element>
1846 Error(
"operator+=(const TMatrixTSparseDiag_const &)",
"matrix-diagonal's different length");
1851 (*
this)(i) += md(i);
1858 template<
class Element>
1866 Error(
"operator*=(const TMatrixTSparseDiag_const &)",
"matrix-diagonal's different length");
1871 (*
this)(i) *= md(i);
1889 Int_t leftloint = (int) leftlo;
1895 ix = (((xalo-leftlo*b16)-p)+(fhi-k*b15)*b16)+k;
1896 if (ix < 0.0) ix = ix+p;
1898 return (ix*4.656612875
e-10);
void Rank1Update(const TVectorT< Element > &vec, Element alpha=1.0)
Perform a rank 1 operation on the matrix: A += alpha * v * v^T.
Element operator()(Int_t i) const
const TMatrixTSparse< Element > * fMatrix
virtual const Element * GetMatrixArray() const =0
const TMatrixTBase< Element > * GetMatrix() const
virtual const Element * GetMatrixArray() const
virtual TMatrixTBase< Element > & InsertRow(Int_t row, Int_t col, const Element *v, Int_t n=-1)
Insert in row rown, n elements of array v at column coln.
const Element * GetPtr() const
virtual TMatrixTBase< Element > & ResizeTo(Int_t nrows, Int_t ncols, Int_t=-1)
Set size of the matrix to nrows x ncols New dynamic elements are created, the overlapping part of the...
void operator+=(Element val)
Add val to every element of the matrix column.
Int_t GetRowIndex() const
virtual const Int_t * GetRowIndexArray() const
void operator*=(Element val)
Multiply every element of the matrix with val.
virtual const Element * GetMatrixArray() const
TMatrixTSparseDiag_const()
const TMatrixTBase< Element > * fMatrix
void Assign(Element val)
Assign val to every element of the matrix row.
void operator+=(Element val)
Assign val to every element of the matrix diagonal.
Double_t Drand(Double_t &ix)
Random number generator [0....1] with seed ix.
void operator*=(Element val)
Multiply every element of the sub matrix by val .
Short_t Min(Short_t a, Short_t b)
void operator=(Element val)
Assign val to every element of the matrix diagonal.
Element operator()(Int_t i) const
virtual const Element * GetMatrixArray() const
void operator+=(Element val)
Add val to every non-zero (!) element of the matrix row.
void operator*=(Element val)
Multiply every element of the matrix row with val.
virtual TMatrixTBase< Element > & ResizeTo(Int_t nrows, Int_t ncols, Int_t=-1)
Set size of the matrix to nrows x ncols New dynamic elements are created, the overlapping part of the...
const Element * GetPtr() const
void operator=(std::initializer_list< Element > l)
Int_t GetNoElements() const
const Element * GetPtr() const
TMatrixTSparseRow_const()
const TMatrixTBase< Element > * fMatrix
void operator*=(Element val)
Multiply every element of the matrix diagonal by val.
const Element * GetPtr() const
static double p2(double t, double a, double b, double c)
Int_t GetRowIndex() const
void Error(const char *location, const char *msgfmt,...)
void operator=(Element val)
Element * GetMatrixArray()
void operator=(Element val)
Assign val to every element of the matrix.
virtual void ExtractRow(Int_t row, Int_t col, Element *v, Int_t n=-1) const
Store in array v, n matrix elements of row rown starting at column coln.
TMatrixT< Element > & ElementMult(TMatrixT< Element > &target, const TMatrixT< Element > &source)
Multiply target by the source, element-by-element.
Element operator()(Int_t i) const
Int_t GetNoElements() const
static double p1(double t, double a, double b)
const TMatrixTBase< Element > * fMatrix
void operator+=(Element val)
Add val to every element of the sub matrix.
static constexpr double ms
const TMatrixTBase< Element > * GetMatrix() const
virtual const Int_t * GetColIndexArray() const
void Assign(Element val)
Assign val to every element of the matrix column.
const TMatrixTBase< Element > * GetMatrix() const
void operator+=(Element val)
Add val to every element of the matrix.
void operator=(Element val)
Assign val to every element of the sub matrix.
void operator+=(Element val)
Add val to every element of the matrix diagonal.
Element operator()(Int_t i) const
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
const TMatrixTBase< Element > * GetMatrix() const
const TMatrixTSparse< Element > * fMatrix
const TMatrixTBase< Element > * fMatrix
const TMatrixTBase< Element > * GetMatrix() const
void operator*=(Element val)
Multiply every element of the matrix row by val.
Int_t GetColIndex() const
void operator*=(Element val)
Multiply every element of the matrix column with val.
Short_t Max(Short_t a, Short_t b)
static Element & NaNValue()
void operator=(Element val)
Assign val to every non-zero (!) element of the matrix row.
const TMatrixTBase< Element > * fMatrix
void operator*=(Element val)
Assign val to every element of the matrix diagonal.
virtual TMatrixTBase< Element > & GetSub(Int_t row_lwb, Int_t row_upb, Int_t col_lwb, Int_t col_upb, TMatrixTBase< Element > &target, Option_t *option="S") const =0
void operator+=(Element val)
Add val to every element of the matrix row.
Long64_t BinarySearch(Long64_t n, const T *array, T value)
const TMatrixTBase< Element > * GetMatrix() const
const TMatrixTBase< Element > * GetMatrix() const
void operator=(Element val)
Assign val to every element of the matrix diagonal.