ROOT logo
/**********************************************************************************************/
/*                                                                                            */ 
/* Abstract class for matrix used for                                                         */
/* millepede2 operation.                                                                      */
/* Works for expandable square matrices                                                       */ 
/* of arbitrary dimension                                                                     */
/* Author: ruben.shahoyan@cern.ch                                                             */
/*                                                                                            */ 
/*                                                                                            */ 
/**********************************************************************************************/

#include <stdlib.h>
#include <stdio.h>
#include <iostream>
//
#include "TClass.h"
#include "TMath.h"
#include "AliMatrixSq.h"
//

ClassImp(AliMatrixSq)

AliMatrixSq & AliMatrixSq::operator=(const AliMatrixSq &src)
{
  // = operator
  if (this == &src) return *this;
  TMatrixDBase::operator=(src);
  fSymmetric = src.fSymmetric; 
  return *this;
}

//___________________________________________________________
void AliMatrixSq::MultiplyByVec(const Double_t *vecIn,Double_t *vecOut) const
{
  // fill vecOut by matrix*vecIn
  // vector should be of the same size as the matrix
  for (int i=GetSize();i--;) {
    vecOut[i] = 0.0;
    for (int j=GetSize();j--;) vecOut[i] += vecIn[j]*(*this)(i,j);
  }
  //
}

//___________________________________________________________
void AliMatrixSq::PrintCOO() const
{
  // print matrix in COO sparse format
  //
  // get number of non-zero elements
  int nnz = 0;
  int sz = GetSize();
  for (int ir=0;ir<sz;ir++) for (int ic=0;ic<sz;ic++) if (Query(ir,ic)!=0) nnz++;
  //
  printf("%d %d %d\n",sz,sz,nnz);
  double vl;
  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);
  //
}
 AliMatrixSq.cxx:1
 AliMatrixSq.cxx:2
 AliMatrixSq.cxx:3
 AliMatrixSq.cxx:4
 AliMatrixSq.cxx:5
 AliMatrixSq.cxx:6
 AliMatrixSq.cxx:7
 AliMatrixSq.cxx:8
 AliMatrixSq.cxx:9
 AliMatrixSq.cxx:10
 AliMatrixSq.cxx:11
 AliMatrixSq.cxx:12
 AliMatrixSq.cxx:13
 AliMatrixSq.cxx:14
 AliMatrixSq.cxx:15
 AliMatrixSq.cxx:16
 AliMatrixSq.cxx:17
 AliMatrixSq.cxx:18
 AliMatrixSq.cxx:19
 AliMatrixSq.cxx:20
 AliMatrixSq.cxx:21
 AliMatrixSq.cxx:22
 AliMatrixSq.cxx:23
 AliMatrixSq.cxx:24
 AliMatrixSq.cxx:25
 AliMatrixSq.cxx:26
 AliMatrixSq.cxx:27
 AliMatrixSq.cxx:28
 AliMatrixSq.cxx:29
 AliMatrixSq.cxx:30
 AliMatrixSq.cxx:31
 AliMatrixSq.cxx:32
 AliMatrixSq.cxx:33
 AliMatrixSq.cxx:34
 AliMatrixSq.cxx:35
 AliMatrixSq.cxx:36
 AliMatrixSq.cxx:37
 AliMatrixSq.cxx:38
 AliMatrixSq.cxx:39
 AliMatrixSq.cxx:40
 AliMatrixSq.cxx:41
 AliMatrixSq.cxx:42
 AliMatrixSq.cxx:43
 AliMatrixSq.cxx:44
 AliMatrixSq.cxx:45
 AliMatrixSq.cxx:46
 AliMatrixSq.cxx:47
 AliMatrixSq.cxx:48
 AliMatrixSq.cxx:49
 AliMatrixSq.cxx:50
 AliMatrixSq.cxx:51
 AliMatrixSq.cxx:52
 AliMatrixSq.cxx:53
 AliMatrixSq.cxx:54
 AliMatrixSq.cxx:55
 AliMatrixSq.cxx:56
 AliMatrixSq.cxx:57
 AliMatrixSq.cxx:58