X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliMatrixSq.h;h=f621d46547c2b62e28a9bd3e7b86cac9fe6c63a0;hb=9a055ce7196a80958b122102f64ccce29819c407;hp=09f08288c6fa634c884580b4186c75f61982db60;hpb=8a9ab0eb066a3d8d5cc32ff6c5ede832750afb96;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliMatrixSq.h b/STEER/AliMatrixSq.h index 09f08288c6f..f621d46547c 100644 --- a/STEER/AliMatrixSq.h +++ b/STEER/AliMatrixSq.h @@ -1,5 +1,10 @@ #ifndef ALIMATRIXSQ_H #define ALIMATRIXSQ_H +/**********************************************************************************************/ +/* Abstract class for matrix used for millepede2 operation. */ +/* Author: ruben.shahoyan@cern.ch */ +/* */ +/**********************************************************************************************/ #include #include @@ -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);} + // 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()); }