]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliMatrixSq.h
Method to get the number of TPC clusters added.
[u/mrichter/AliRoot.git] / STEER / AliMatrixSq.h
index 09f08288c6fa634c884580b4186c75f61982db60..f621d46547c2b62e28a9bd3e7b86cac9fe6c63a0 100644 (file)
@@ -1,5 +1,10 @@
 #ifndef ALIMATRIXSQ_H
 #define ALIMATRIXSQ_H
+/**********************************************************************************************/
+/* Abstract class for matrix used for millepede2 operation.                                   */
+/* Author: ruben.shahoyan@cern.ch                                                             */
+/*                                                                                            */ 
+/**********************************************************************************************/
 
 #include <TMatrixDBase.h>
 #include <TVectorD.h>
@@ -15,20 +20,21 @@ class AliMatrixSq : public TMatrixDBase {
   //
   virtual void  Clear(Option_t* option="")                       = 0;//{Error("Clear","Dummy");}
   //
-  virtual       Double_t      Querry(Int_t rown, Int_t coln)     const {return operator()(rown,coln);}
+  virtual       Double_t      Query(Int_t rown, Int_t coln)     const {return operator()(rown,coln);}
   virtual       Double_t      operator()(Int_t rown, Int_t coln) const = 0;//{Error("(i,j)","Dummy");return 0;}
   virtual       Double_t&     operator()(Int_t rown, Int_t coln) = 0;//{Error("(i,j)","Dummy");return 0;}
   //
-  virtual       Double_t      QuerryDiag(Int_t rc)               const {return DiagElem(rc);}
+  virtual       Double_t      QueryDiag(Int_t rc)               const {return DiagElem(rc);}
   virtual       Double_t      DiagElem(Int_t r)                  const = 0;
   virtual       Double_t&     DiagElem(Int_t r)                  = 0;
+  virtual       void          AddToRow(Int_t r, Double_t *valc,Int_t *indc,Int_t n) = 0;
   //
   virtual void  Print(Option_t* option="")           const       = 0;//{Error("Print","Dummy");}
   virtual void  Reset()                                          = 0;
   virtual void  PrintCOO()                           const;          // print in COO format
   //
-  virtual void  MultiplyByVec(Double_t* vecIn, Double_t* vecOut) const;
-  virtual void  MultiplyByVec(TVectorD &vecIn, TVectorD &vecOut) const;
+  virtual void  MultiplyByVec(const Double_t* vecIn, Double_t* vecOut) const;
+  virtual void  MultiplyByVec(const TVectorD &vecIn, TVectorD &vecOut) const;
   //
   Bool_t        IsSymmetric()                       const {return fSymmetric;}
   void          SetSymmetric(Bool_t v=kTRUE)              {fSymmetric = v;}
@@ -50,6 +56,8 @@ class AliMatrixSq : public TMatrixDBase {
   virtual void Allocate      (Int_t ,Int_t ,Int_t , Int_t ,Int_t ,Int_t ) 
   {Error("Allocate","Dummy"); return;}
   //
+  static Bool_t       IsZero(Double_t x,Double_t thresh=1e-64) {return x>0 ? (x<thresh) : (x>-thresh);}
+  //
  protected:
   //
   void    Swap(int &r,int &c) const {int t=r;r=c;c=t;}
@@ -63,7 +71,7 @@ class AliMatrixSq : public TMatrixDBase {
 
 
 //___________________________________________________________
-inline void AliMatrixSq::MultiplyByVec(TVectorD &vecIn, TVectorD &vecOut) const
+inline void AliMatrixSq::MultiplyByVec(const TVectorD &vecIn, TVectorD &vecOut) const
 {
   MultiplyByVec(vecIn.GetMatrixArray(), vecOut.GetMatrixArray());
 }