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