ROOT logo
#ifndef ALIRECTMATRIX_H
#define ALIRECTMATRIX_H

/*********************************************************************************/
/*                                                                               */ 
/* Class for rectangular matrix used for                                         */
/* millepede2 operation.                                                         */
/* Author: ruben.shahoyan@cern.ch                                                */
/*                                                                               */ 
/*********************************************************************************/

#include "TObject.h"
class TString;

class AliRectMatrix : public TObject {
  //
 public:
  AliRectMatrix();
  AliRectMatrix(Int_t nrow,Int_t ncol);
  AliRectMatrix(const AliRectMatrix &src);
  virtual ~AliRectMatrix();
  //
  Int_t         GetNRows()                            const {return fNRows;}
  Int_t         GetNCols()                            const {return fNCols;}
  //
  Double_t      Query(Int_t rown, Int_t coln)         const {return operator()(rown,coln);}

  AliRectMatrix& operator=(const AliRectMatrix& src);
  Double_t      operator()(Int_t rown, Int_t coln)    const;
  Double_t&     operator()(Int_t rown, Int_t coln);
  Double_t*     operator()(Int_t row)                 const {return GetRow(row);}
  Double_t*     GetRow(Int_t row)                     const {return fRows[row];}
  //
  void          Reset() const;
  //
  virtual void  Print(Option_t* option="")           const;
  //
 protected:
  //
  Int_t   fNRows;       // Number of rows
  Int_t   fNCols;       // Number of columns
  Double_t **fRows;     // pointers on rows
  //
  ClassDef(AliRectMatrix,0) //Rectangular Matrix Class
};

//___________________________________________________________
inline Double_t AliRectMatrix::operator()(Int_t row, Int_t col) const
{
  return (const Double_t&) GetRow(row)[col];
}

//___________________________________________________________
inline Double_t& AliRectMatrix::operator()(Int_t row, Int_t col)
{
  return (Double_t&) fRows[row][col];
}


#endif
 AliRectMatrix.h:1
 AliRectMatrix.h:2
 AliRectMatrix.h:3
 AliRectMatrix.h:4
 AliRectMatrix.h:5
 AliRectMatrix.h:6
 AliRectMatrix.h:7
 AliRectMatrix.h:8
 AliRectMatrix.h:9
 AliRectMatrix.h:10
 AliRectMatrix.h:11
 AliRectMatrix.h:12
 AliRectMatrix.h:13
 AliRectMatrix.h:14
 AliRectMatrix.h:15
 AliRectMatrix.h:16
 AliRectMatrix.h:17
 AliRectMatrix.h:18
 AliRectMatrix.h:19
 AliRectMatrix.h:20
 AliRectMatrix.h:21
 AliRectMatrix.h:22
 AliRectMatrix.h:23
 AliRectMatrix.h:24
 AliRectMatrix.h:25
 AliRectMatrix.h:26
 AliRectMatrix.h:27
 AliRectMatrix.h:28
 AliRectMatrix.h:29
 AliRectMatrix.h:30
 AliRectMatrix.h:31
 AliRectMatrix.h:32
 AliRectMatrix.h:33
 AliRectMatrix.h:34
 AliRectMatrix.h:35
 AliRectMatrix.h:36
 AliRectMatrix.h:37
 AliRectMatrix.h:38
 AliRectMatrix.h:39
 AliRectMatrix.h:40
 AliRectMatrix.h:41
 AliRectMatrix.h:42
 AliRectMatrix.h:43
 AliRectMatrix.h:44
 AliRectMatrix.h:45
 AliRectMatrix.h:46
 AliRectMatrix.h:47
 AliRectMatrix.h:48
 AliRectMatrix.h:49
 AliRectMatrix.h:50
 AliRectMatrix.h:51
 AliRectMatrix.h:52
 AliRectMatrix.h:53
 AliRectMatrix.h:54
 AliRectMatrix.h:55
 AliRectMatrix.h:56
 AliRectMatrix.h:57
 AliRectMatrix.h:58
 AliRectMatrix.h:59
 AliRectMatrix.h:60