]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/STEER/AliMatrixSq.cxx
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / STEER / STEER / AliMatrixSq.cxx
CommitLineData
7c3070ec 1/**********************************************************************************************/
339fbe23 2/* */
3/* Abstract class for matrix used for */
4/* millepede2 operation. */
5/* Works for expandable square matrices */
6/* of arbitrary dimension */
7c3070ec 7/* Author: ruben.shahoyan@cern.ch */
8/* */
339fbe23 9/* */
7c3070ec 10/**********************************************************************************************/
11
8a9ab0eb 12#include <stdlib.h>
13#include <stdio.h>
14#include <iostream>
15//
16#include "TClass.h"
17#include "TMath.h"
8a9ab0eb 18#include "AliMatrixSq.h"
19//
20
8a9ab0eb 21ClassImp(AliMatrixSq)
22
6d3c4556 23AliMatrixSq & AliMatrixSq::operator=(const AliMatrixSq &src)
24{
25 // = operator
26 if (this == &src) return *this;
27 TMatrixDBase::operator=(src);
28 fSymmetric = src.fSymmetric;
247ffe04 29 return *this;
6d3c4556 30}
8a9ab0eb 31
32//___________________________________________________________
551c9e69 33void AliMatrixSq::MultiplyByVec(const Double_t *vecIn,Double_t *vecOut) const
8a9ab0eb 34{
35 // fill vecOut by matrix*vecIn
36 // vector should be of the same size as the matrix
37 for (int i=GetSize();i--;) {
38 vecOut[i] = 0.0;
39 for (int j=GetSize();j--;) vecOut[i] += vecIn[j]*(*this)(i,j);
40 }
41 //
42}
43
44//___________________________________________________________
45void AliMatrixSq::PrintCOO() const
46{
47 // print matrix in COO sparse format
48 //
49 // get number of non-zero elements
50 int nnz = 0;
51 int sz = GetSize();
de34b538 52 for (int ir=0;ir<sz;ir++) for (int ic=0;ic<sz;ic++) if (Query(ir,ic)!=0) nnz++;
8a9ab0eb 53 //
54 printf("%d %d %d\n",sz,sz,nnz);
55 double vl;
de34b538 56 for (int ir=0;ir<sz;ir++) for (int ic=0;ic<sz;ic++) if ((vl=Query(ir,ic))!=0) printf("%d %d %f\n",ir,ic,vl);
8a9ab0eb 57 //
58}