]>
Commit | Line | Data |
---|---|---|
de34b538 | 1 | #ifndef ALIVECTORSPARSE_H |
2 | #define ALIVECTORSPARSE_H | |
3 | ||
4 | #include <TObject.h> | |
5 | #include <TMath.h> | |
6 | ||
7 | /**********************************************************************************************/ | |
8 | /* Sparse vector class, used as row of the AliMatrixSparse class */ | |
9 | /* */ | |
10 | /* Author: ruben.shahoyan@cern.ch */ | |
11 | /* */ | |
12 | /**********************************************************************************************/ | |
13 | ||
14 | /////////////////////////////////////////////////////////////////////////////////////// | |
15 | class AliVectorSparse : public TObject { | |
16 | public: | |
17 | AliVectorSparse(); | |
18 | AliVectorSparse(const AliVectorSparse& src); | |
19 | virtual ~AliVectorSparse() {Clear();} | |
20 | virtual void Print(Option_t* option="") const; | |
21 | // | |
22 | Int_t GetNElems() const {return fNElems;} | |
23 | UShort_t *GetIndices() const {return fIndex;} | |
24 | Double_t *GetElems() const {return fElems;} | |
25 | UShort_t& GetIndex(Int_t i) {return fIndex[i];} | |
26 | Double_t& GetElem(Int_t i) const {return fElems[i];} | |
27 | void Clear(Option_t* option=""); | |
28 | void Reset() {memset(fElems,0,fNElems*sizeof(Double_t));} | |
29 | void ReSize(Int_t sz,Bool_t copy=kFALSE); | |
30 | void SortIndices(Bool_t valuesToo=kFALSE); | |
31 | void Add(Double_t *valc,Int_t *indc,Int_t n); | |
32 | // | |
33 | AliVectorSparse& operator=(const AliVectorSparse& src); | |
34 | // | |
35 | virtual Double_t operator()(Int_t ind) const; | |
36 | virtual Double_t& operator()(Int_t ind); | |
37 | virtual void SetToZero(Int_t ind); | |
38 | Double_t FindIndex(Int_t ind) const; | |
39 | Double_t& FindIndexAdd(Int_t ind); | |
40 | // | |
41 | Int_t GetLastIndex() const {return fIndex[fNElems-1];} | |
42 | Double_t GetLastElem() const {return fElems[fNElems-1];} | |
43 | Double_t &GetLastElem() {return fElems[fNElems-1];} | |
44 | // | |
45 | protected: | |
46 | Int_t fNElems; // | |
47 | UShort_t* fIndex; // Index of stored elems | |
48 | Double_t* fElems; // pointer on elements | |
49 | // | |
50 | ClassDef(AliVectorSparse,0) | |
51 | }; | |
52 | ||
53 | ||
54 | //___________________________________________________ | |
55 | inline Double_t AliVectorSparse::operator()(Int_t ind) const | |
56 | { | |
57 | return FindIndex(ind); | |
58 | } | |
59 | ||
60 | //___________________________________________________ | |
61 | inline Double_t& AliVectorSparse::operator()(Int_t ind) | |
62 | { | |
63 | return FindIndexAdd(ind); | |
64 | } | |
65 | ||
66 | ////////////////////////////////////////////////////////////////////////////////////// | |
67 | ||
68 | #endif |