45template<
class Element>
52 Error(
"TMatrixTRow_const(const TMatrixT<Element> &,Int_t)",
"row index out of bounds");
67template<
class Element>
74 Error(
"TMatrixTRow_const(const TMatrixTSym &,Int_t)",
"row index out of bounds");
89template<
class Element>
98template<
class Element>
107template<
class Element>
116template<
class Element>
120 Element *rp =
const_cast<Element *
>(this->
fPtr);
125template<
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)
138template<
class Element>
142 Element *rp =
const_cast<Element *
>(this->
fPtr);
150template<
class Element>
154 Element *rp =
const_cast<Element *
>(this->
fPtr);
162template<
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();
186template<
class Element>
192 if (this->
fMatrix->GetColLwb() !=
vec.GetLwb() || this->fMatrix->GetNcols() !=
vec.GetNrows()) {
193 Error(
"operator=(const TVectorT &)",
"vector length != matrix-row length");
197 Element *rp =
const_cast<Element *
>(this->
fPtr);
198 const Element *vp =
vec.GetMatrixArray();
206template<
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();
221 for ( ; rp1 < this->
fPtr+this->
fMatrix->GetNcols(); rp1 += this->
fInc,rp2 +=
r.GetInc())
229template<
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();
244 for ( ; rp1 < this->
fPtr+this->
fMatrix->GetNcols(); rp1 += this->
fInc,rp2 +=
r.GetInc())
251template<
class Element>
258 Error(
"TMatrixTColumn_const(const TMatrixT &,Int_t)",
"column index out of bounds");
273template<
class Element>
280 Error(
"TMatrixTColumn_const(const TMatrixTSym &,Int_t)",
"column index out of bounds");
295template<
class Element>
304template<
class Element>
313template<
class Element>
322template<
class Element>
326 Element *cp =
const_cast<Element *
>(this->
fPtr);
327 for ( ; cp < this->
fPtr+this->
fMatrix->GetNoElements(); cp += this->
fInc)
334template<
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)
347template<
class Element>
351 Element *cp =
const_cast<Element *
>(this->
fPtr);
352 for ( ; cp < this->
fPtr+this->
fMatrix->GetNoElements(); cp += this->
fInc)
359template<
class Element>
363 Element *cp =
const_cast<Element *
>(this->
fPtr);
364 for ( ; cp < this->
fPtr+this->
fMatrix->GetNoElements(); cp += this->
fInc)
371template<
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();
394template<
class Element>
400 if (this->
fMatrix->GetRowLwb() !=
vec.GetLwb() || this->fMatrix->GetNrows() !=
vec.GetNrows()) {
401 Error(
"operator=(const TVectorT &)",
"vector length != matrix-column length");
405 Element *cp =
const_cast<Element *
>(this->
fPtr);
406 const Element *vp =
vec.GetMatrixArray();
407 for ( ; cp < this->
fPtr+this->
fMatrix->GetNoElements(); cp += this->
fInc)
416template<
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();
439template<
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();
461template<
class Element>
475template<
class Element>
489template<
class Element>
498template<
class Element>
507template<
class Element>
516template<
class Element>
520 Element *dp =
const_cast<Element *
>(this->
fPtr);
528template<
class Element>
532 Element *dp =
const_cast<Element *
>(this->
fPtr);
540template<
class Element>
544 Element *dp =
const_cast<Element *
>(this->
fPtr);
552template<
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();
575template<
class Element>
582 Error(
"operator=(const TVectorT &)",
"vector length != matrix-diagonal length");
586 Element *dp =
const_cast<Element *
>(this->
fPtr);
587 const Element *vp =
vec.GetMatrixArray();
588 for ( ; vp <
vec.GetMatrixArray()+
vec.GetNrows(); dp += this->fInc)
596template<
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();
618template<
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();
639template<
class Element>
652template<
class Element>
665template<
class Element>
674template<
class Element>
683template<
class Element>
692template<
class Element>
696 Element *fp =
const_cast<Element *
>(this->
fPtr);
697 while (fp < this->
fPtr+this->
fMatrix->GetNoElements())
704template<
class Element>
708 Element *fp =
const_cast<Element *
>(this->
fPtr);
709 while (fp < this->
fPtr+this->
fMatrix->GetNoElements())
716template<
class Element>
720 Element *fp =
const_cast<Element *
>(this->
fPtr);
721 while (fp < this->
fPtr+this->
fMatrix->GetNoElements())
728template<
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())
750template<
class Element>
755 if (this->
fMatrix->GetNoElements() !=
vec.GetNrows()) {
756 Error(
"operator=(const TVectorT &)",
"vector length != # matrix-elements");
760 Element *fp =
const_cast<Element *
>(this->
fPtr);
761 const Element *vp =
vec.GetMatrixArray();
762 while (fp < this->
fPtr+this->
fMatrix->GetNoElements())
769template<
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())
790template<
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())
813template<
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);
867template<
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);
919template<
class Element>
929template<
class Element>
939template<
class Element>
949template<
class Element>
955 if (
v.GetNoElements() <
TMath::Max(this->fNrowsSub,this->fNcolsSub)) {
956 Error(
"Rank1Update",
"vector too short");
960 const Element *
const pv =
v.GetMatrixArray();
966 const Element tmp = alpha*pv[irow];
968 mp[off+icol] += tmp*pv[icol];
975template<
class Element>
992template<
class Element>
1009template<
class Element>
1026template<
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];
1073 for (
Int_t irow = 0; irow < this->fNrowsSub; irow++) {
1075 const Int_t off2 = irow*ncols2;
1076 for (
Int_t icol = 0; icol < this->fNcolsSub; icol++)
1077 p1[off1+icol] = p2[off2+icol];
1085template<
class Element>
1091 if (this->
fMatrix->GetMatrixArray() ==
m.GetMatrixArray())
return;
1093 if (this->
fNrowsSub !=
m.GetNrows() || this->fNcolsSub !=
m.GetNcols()) {
1094 Error(
"operator=(const TMatrixTBase<Element> &)",
"sub matrices and matrix have different size");
1105template<
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];
1147 for (
Int_t irow = 0; irow < this->fNrowsSub; irow++) {
1149 const Int_t off2 = irow*ncols2;
1150 for (
Int_t icol = 0; icol < this->fNcolsSub; icol++)
1151 p1[off1+icol] += p2[off2+icol];
1159template<
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; ) {
1198 for (
Int_t j = 0; j < this->fNcolsSub; j++) {
1199 cij += trp[j] * *scp;
1200 scp += this->fNcolsSub;
1205 cp += ncols-this->fNcolsSub;
1210 R__ASSERT(cp == trp0_last && trp0 == trp0_last);
1218template<
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];
1245template<
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; ) {
1283 for (
Int_t j = 0; j < this->fNcolsSub; j++) {
1284 cij += trp[j] * *scp;
1285 scp += this->fNcolsSub;
1290 cp += ncols-this->fNcolsSub;
1295 R__ASSERT(cp == trp0_last && trp0 == trp0_last);
1303template<
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; ) {
1341 for (
Int_t j = 0; j < this->fNcolsSub; j++) {
1342 cij += trp[j] * *scp;
1343 scp += this->fNcolsSub;
1348 cp += ncols-this->fNcolsSub;
1353 R__ASSERT(cp == trp0_last && trp0 == trp0_last);
1361template<
class Element>
1368 Error(
"TMatrixTSparseRow_const(const TMatrixTSparse &,Int_t)",
"row index out of bounds");
1386template<
class Element>
1392 if (acoln < fMatrix->GetNcols() && acoln >= 0) {
1397 Error(
"operator()",
"Request col(%d) outside matrix range of %d - %d",
1406template<
class Element>
1415template<
class Element>
1424template<
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",
1436 i,this->
fMatrix->GetColLwb(),this->fMatrix->GetColLwb()+this->fMatrix->GetNcols());
1444template<
class Element>
1451 if (acoln >= this->
fMatrix->GetNcols() || acoln < 0) {
1452 Error(
"operator()(Int_t",
"Requested element %d outside range : %d - %d",i,
1453 this->
fMatrix->GetColLwb(),this->fMatrix->GetColLwb()+this->fMatrix->GetNcols());
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");
1483template<
class Element>
1487 Element *rp =
const_cast<Element *
>(this->
fDataPtr);
1495template<
class Element>
1499 Element *rp =
const_cast<Element *
>(this->
fDataPtr);
1507template<
class Element>
1511 Element *rp =
const_cast<Element *
>(this->
fDataPtr);
1519template<
class Element>
1523 if (this->
fMatrix == mt)
return;
1528 Error(
"operator=(const TMatrixTSparseRow_const &)",
"matrix rows not compatible");
1543 this->
fNindex = eIndex-sIndex;
1552template<
class Element>
1558 if (this->
fMatrix->GetColLwb() !=
vec.GetLwb() || this->fMatrix->GetNcols() !=
vec.GetNrows()) {
1559 Error(
"operator=(const TVectorT &)",
"vector length != matrix-row length");
1563 const Element *vp =
vec.GetMatrixArray();
1570 this->
fNindex = eIndex-sIndex;
1578template<
class Element>
1586 Error(
"operator+=(const TMatrixTRow_const &)",
"different row lengths");
1597 this->
fMatrix->ExtractRow(row1,col,
v1.GetMatrixArray());
1604 this->
fNindex = eIndex-sIndex;
1613template<
class Element>
1621 Error(
"operator+=(const TMatrixTRow_const &)",
"different row lengths");
1632 this->
fMatrix->ExtractRow(row1,col,
v1.GetMatrixArray());
1640 this->
fNindex = eIndex-sIndex;
1648template<
class Element>
1660template<
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);
1683template<
class Element>
1692template<
class Element>
1701template<
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);
1724template<
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];
1765template<
class Element>
1776template<
class Element>
1787template<
class Element>
1798template<
class Element>
1802 if (this->
fMatrix == mt)
return;
1807 Error(
"operator=(const TMatrixTSparseDiag_const &)",
"matrix-diagonal's different length");
1818template<
class Element>
1825 Error(
"operator=(const TVectorT &)",
"vector length != matrix-diagonal length");
1829 const Element *vp =
vec.GetMatrixArray();
1838template<
class Element>
1846 Error(
"operator+=(const TMatrixTSparseDiag_const &)",
"matrix-diagonal's different length");
1851 (*
this)(i) += md(i);
1858template<
class Element>
1866 Error(
"operator*=(const TMatrixTSparseDiag_const &)",
"matrix-diagonal's different length");
1871 (*
this)(i) *= md(i);
1895 ix = (((xalo-leftlo*b16)-p)+(fhi-k*b15)*b16)+k;
1896 if (ix < 0.0) ix = ix+p;
1898 return (ix*4.656612875e-10);
1901template class TMatrixTRow_const <Float_t>;
1902template class TMatrixTColumn_const <Float_t>;
1903template class TMatrixTDiag_const <Float_t>;
1904template class TMatrixTFlat_const <Float_t>;
1905template class TMatrixTSub_const <Float_t>;
1906template class TMatrixTSparseRow_const <Float_t>;
1908template class TMatrixTRow <Float_t>;
1909template class TMatrixTColumn <Float_t>;
1910template class TMatrixTDiag <Float_t>;
1911template class TMatrixTFlat <Float_t>;
1912template class TMatrixTSub <Float_t>;
1913template class TMatrixTSparseRow <Float_t>;
1914template class TMatrixTSparseDiag <Float_t>;
1915template class TElementActionT <Float_t>;
1916template class TElementPosActionT <Float_t>;
1918template class TMatrixTRow_const <Double_t>;
1919template class TMatrixTColumn_const <Double_t>;
1920template class TMatrixTDiag_const <Double_t>;
1921template class TMatrixTFlat_const <Double_t>;
1922template class TMatrixTSub_const <Double_t>;
1923template class TMatrixTSparseRow_const <Double_t>;
1925template class TMatrixTRow <Double_t>;
1926template class TMatrixTColumn <Double_t>;
1927template class TMatrixTDiag <Double_t>;
1928template class TMatrixTFlat <Double_t>;
1929template class TMatrixTSub <Double_t>;
1930template class TMatrixTSparseRow <Double_t>;
1931template class TMatrixTSparseDiag <Double_t>;
1932template class TElementActionT <Double_t>;
1933template class TElementPosActionT <Double_t>;
int Int_t
Signed integer 4 bytes (int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
Error("WriteTObject","The current directory (%s) is not associated with a file. The object (%s) has not been written.", GetName(), objname)
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
Double_t Drand(Double_t &ix)
Random number generator [0....1] with seed ix.
virtual const Element * GetMatrixArray() const =0
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
Int_t GetNoElements() const
static Element & NaNValue()
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.
const TMatrixTBase< Element > * fMatrix
Int_t GetColIndex() const
const TMatrixTBase< Element > * GetMatrix() const
const Element * GetPtr() const
void operator+=(Element val)
Add val to every element of the matrix column.
void operator=(Element val)
void Assign(Element val)
Assign val to every element of the matrix column.
void operator*=(Element val)
Multiply every element of the matrix column with val.
const Element * GetPtr() const
const TMatrixTBase< Element > * GetMatrix() const
const TMatrixTBase< Element > * fMatrix
void operator+=(Element val)
Assign val to every element of the matrix diagonal.
void operator=(Element val)
Assign val to every element of the matrix diagonal.
void operator*=(Element val)
Assign val to every element of the matrix diagonal.
const TMatrixTBase< Element > * fMatrix
const TMatrixTBase< Element > * GetMatrix() const
const Element * GetPtr() const
void operator+=(Element val)
Add val to every element of the matrix.
void operator*=(Element val)
Multiply every element of the matrix with val.
void operator=(Element val)
Assign val to every element of the matrix.
const Element * GetPtr() const
Int_t GetRowIndex() const
const TMatrixTBase< Element > * fMatrix
const TMatrixTBase< Element > * GetMatrix() const
void Assign(Element val)
Assign val to every element of the matrix row.
void operator*=(Element val)
Multiply every element of the matrix row with val.
void operator+=(Element val)
Add val to every element of the matrix row.
void operator=(std::initializer_list< Element > l)
TMatrixTSparseDiag_const()
Element operator()(Int_t i) const
const TMatrixTSparse< Element > * fMatrix
const TMatrixTBase< Element > * GetMatrix() const
Element operator()(Int_t i) const
void operator=(Element val)
Assign val to every element of the matrix diagonal.
void operator*=(Element val)
Multiply every element of the matrix diagonal by val.
void operator+=(Element val)
Add val to every element of the matrix diagonal.
TMatrixTSparseRow_const()
const TMatrixTSparse< Element > * fMatrix
Int_t GetRowIndex() const
Element operator()(Int_t i) const
const TMatrixTBase< Element > * GetMatrix() const
void operator+=(Element val)
Add val to every non-zero (!) element of the matrix row.
void operator=(Element val)
Assign val to every non-zero (!) element of the matrix row.
void operator*=(Element val)
Multiply every element of the matrix row by val.
Element operator()(Int_t i) const
TMatrixTBase< Element > & InsertRow(Int_t row, Int_t col, const Element *v, Int_t n=-1) override
Insert in row rown, n elements of array v at column coln.
const Int_t * GetRowIndexArray() const override
const Int_t * GetColIndexArray() const override
const Element * GetMatrixArray() const override
const TMatrixTBase< Element > * fMatrix
const TMatrixTBase< Element > * GetMatrix() const
void Rank1Update(const TVectorT< Element > &vec, Element alpha=1.0)
Perform a rank 1 operation on the matrix: A += alpha * v * v^T.
void operator*=(Element val)
Multiply every element of the sub matrix by val .
void operator+=(Element val)
Add val to every element of the sub matrix.
void operator=(Element val)
Assign val to every element of the sub matrix.
TMatrixTBase< Element > & ResizeTo(Int_t nrows, Int_t ncols, Int_t=-1) override
Set size of the matrix to nrows x ncols New dynamic elements are created, the overlapping part of the...
const Element * GetMatrixArray() const override
const Element * GetMatrixArray() const override
TMatrixTBase< Element > & ResizeTo(Int_t nrows, Int_t ncols, Int_t=-1) override
Set size of the matrix to nrows x ncols New dynamic elements are created, the overlapping part of the...
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Binary search in an array of n values to locate value.
TMatrixT< Element > & ElementMult(TMatrixT< Element > &target, const TMatrixT< Element > &source)
Multiply target by the source, element-by-element.