ROOT logo
/*********************************************************************************/
/*                                                                               */ 
/* Class for rectangular matrix used for                                         */
/* millepede2 operation.                                                         */
/* May be sparse or dense.                                                       */ 
/* -----------------------                                                       */ 
/* Author: ruben.shahoyan@cern.ch                                                */
/*                                                                               */ 
/*********************************************************************************/

#include "AliRectMatrix.h"
#include <TString.h>
//

ClassImp(AliRectMatrix)


//___________________________________________________________
AliRectMatrix::AliRectMatrix() 
: fNRows(0),fNCols(0),fRows(0)
{}

//___________________________________________________________
AliRectMatrix::AliRectMatrix(Int_t nrow,Int_t ncol)
  : fNRows(nrow),fNCols(ncol),fRows(0)
{
  // c-tor
  fRows = new Double_t*[fNRows];
  for (int i=fNRows;i--;) {
    fRows[i] = new Double_t[fNCols];
    memset(fRows[i],0,fNCols*sizeof(Double_t));
  }
  //
}

//___________________________________________________________
AliRectMatrix::AliRectMatrix(const AliRectMatrix &src)
  : TObject(src),fNRows(src.fNRows), fNCols(src.fNCols), fRows(0)
{
  // copy c-tor
  fRows = new Double_t*[fNRows];
  for (int i=fNRows;i--;) {
    fRows[i] = new Double_t[fNCols];
    memcpy(fRows[i], src.fRows[i], fNCols*sizeof(Double_t));
  }
}

//___________________________________________________________
AliRectMatrix::~AliRectMatrix()
{
  // dest-tor
  if (fNRows) for (int i=fNRows;i--;) delete[] fRows[i];
  delete[] fRows;
}

//___________________________________________________________
AliRectMatrix& AliRectMatrix::operator=(const AliRectMatrix& src)
{
  // assignment op-r
  if (&src == this) return *this;
  if (fNRows) for (int i=fNRows;i--;) delete[] fRows[i];
  delete[] fRows;
  fNRows = src.fNRows;
  fNCols = src.fNCols;
  fRows = new Double_t*[fNRows];
  for (int i=fNRows;i--;) {
    fRows[i] = new Double_t[fNCols];
    memcpy(fRows[i], src.fRows[i], fNCols*sizeof(Double_t));
  }
  //
  return *this;
}

//___________________________________________________________
void AliRectMatrix::Print(Option_t* option) const
{
  // print itself
  printf("Rectangular Matrix:  %d rows %d columns\n",fNRows,fNCols);
  TString opt = option; opt.ToLower();
  if (opt.IsNull()) return;
  for (int i=0;i<fNRows;i++) {
    for (Int_t j=0;j<=fNCols;j++) printf("%+.3e|",Query(i,j));
    printf("\n");
  }
}


//___________________________________________________________
void AliRectMatrix::Reset() const
{
  // reset all
  for (int i=fNRows;i--;) {
    double *row = GetRow(i); 
    for (int j=fNCols;j--;)  row[j] = 0.;
  }
}
 AliRectMatrix.cxx:1
 AliRectMatrix.cxx:2
 AliRectMatrix.cxx:3
 AliRectMatrix.cxx:4
 AliRectMatrix.cxx:5
 AliRectMatrix.cxx:6
 AliRectMatrix.cxx:7
 AliRectMatrix.cxx:8
 AliRectMatrix.cxx:9
 AliRectMatrix.cxx:10
 AliRectMatrix.cxx:11
 AliRectMatrix.cxx:12
 AliRectMatrix.cxx:13
 AliRectMatrix.cxx:14
 AliRectMatrix.cxx:15
 AliRectMatrix.cxx:16
 AliRectMatrix.cxx:17
 AliRectMatrix.cxx:18
 AliRectMatrix.cxx:19
 AliRectMatrix.cxx:20
 AliRectMatrix.cxx:21
 AliRectMatrix.cxx:22
 AliRectMatrix.cxx:23
 AliRectMatrix.cxx:24
 AliRectMatrix.cxx:25
 AliRectMatrix.cxx:26
 AliRectMatrix.cxx:27
 AliRectMatrix.cxx:28
 AliRectMatrix.cxx:29
 AliRectMatrix.cxx:30
 AliRectMatrix.cxx:31
 AliRectMatrix.cxx:32
 AliRectMatrix.cxx:33
 AliRectMatrix.cxx:34
 AliRectMatrix.cxx:35
 AliRectMatrix.cxx:36
 AliRectMatrix.cxx:37
 AliRectMatrix.cxx:38
 AliRectMatrix.cxx:39
 AliRectMatrix.cxx:40
 AliRectMatrix.cxx:41
 AliRectMatrix.cxx:42
 AliRectMatrix.cxx:43
 AliRectMatrix.cxx:44
 AliRectMatrix.cxx:45
 AliRectMatrix.cxx:46
 AliRectMatrix.cxx:47
 AliRectMatrix.cxx:48
 AliRectMatrix.cxx:49
 AliRectMatrix.cxx:50
 AliRectMatrix.cxx:51
 AliRectMatrix.cxx:52
 AliRectMatrix.cxx:53
 AliRectMatrix.cxx:54
 AliRectMatrix.cxx:55
 AliRectMatrix.cxx:56
 AliRectMatrix.cxx:57
 AliRectMatrix.cxx:58
 AliRectMatrix.cxx:59
 AliRectMatrix.cxx:60
 AliRectMatrix.cxx:61
 AliRectMatrix.cxx:62
 AliRectMatrix.cxx:63
 AliRectMatrix.cxx:64
 AliRectMatrix.cxx:65
 AliRectMatrix.cxx:66
 AliRectMatrix.cxx:67
 AliRectMatrix.cxx:68
 AliRectMatrix.cxx:69
 AliRectMatrix.cxx:70
 AliRectMatrix.cxx:71
 AliRectMatrix.cxx:72
 AliRectMatrix.cxx:73
 AliRectMatrix.cxx:74
 AliRectMatrix.cxx:75
 AliRectMatrix.cxx:76
 AliRectMatrix.cxx:77
 AliRectMatrix.cxx:78
 AliRectMatrix.cxx:79
 AliRectMatrix.cxx:80
 AliRectMatrix.cxx:81
 AliRectMatrix.cxx:82
 AliRectMatrix.cxx:83
 AliRectMatrix.cxx:84
 AliRectMatrix.cxx:85
 AliRectMatrix.cxx:86
 AliRectMatrix.cxx:87
 AliRectMatrix.cxx:88
 AliRectMatrix.cxx:89
 AliRectMatrix.cxx:90
 AliRectMatrix.cxx:91
 AliRectMatrix.cxx:92
 AliRectMatrix.cxx:93
 AliRectMatrix.cxx:94
 AliRectMatrix.cxx:95
 AliRectMatrix.cxx:96