StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StMultiArray.h
1 #ifndef STMULTIARRAY_H
2 #define STMULTIARRAY_H
3 
6 
7 
10 {
11 protected:
12 StMultiArrayBase(int n1,int n2);
13 StMultiArrayBase(int n1,int n2,int n3);
14 StMultiArrayBase(int n1,int n2,int n3,int n4);
15 StMultiArrayBase(int n1,int n2,int n3,int n4,int n5);
16 StMultiArrayBase(int n1,int n2,int n3,int n4,int n5,int n6);
17 StMultiArrayBase(int n1,int n2,int n3,int n4,int n5,int n6,int n7);
18 StMultiArrayBase(int n1,int n2,int n3,int n4,int n5,int n6,int n7,int n8);
19 void Init(int *sz,int n);
20 void Clear();
21 void AddIdx(int i);
22 int GetIdx();
23 int GetKdx();
24 public:
25 static void Test();
26 private:
27 int mNDes;
28 int mDes[8+1];
29 int mTally;
30 int mSft;
31 };
32 
33 template<class T>
35 public:
36 StMultiArray(int n1,int n2):StMultiArrayBase(n1,n2){mA=0;}
37 StMultiArray(int n1,int n2,int n3):StMultiArrayBase(n1,n2,n3){mA=0;}
38 StMultiArray(int n1,int n2,int n3,int n4):StMultiArrayBase(n1,n2,n3,n4){mA=0;}
39 StMultiArray(int n1,int n2,int n3,int n4,int n5):StMultiArrayBase(n1,n2,n3,n4,n5){mA=0;}
40 StMultiArray(int n1,int n2,int n3,int n4,int n5,int n6):StMultiArrayBase(n1,n2,n3,n4,n5,n6){mA=0;}
41 StMultiArray(int n1,int n2,int n3,int n4,int n5,int n6,int n7):StMultiArrayBase(n1,n2,n3,n4,n5,n6,n7){mA=0;}
42 StMultiArray(int n1,int n2,int n3,int n4,int n5,int n6,int n7,int n8):StMultiArrayBase(n1,n2,n3,n4,n5,n6,n7,n8){mA=0;}
43 operator T (){return mA[GetIdx()];}
44 operator T*(){return mA+GetKdx();}
45 StMultiArray &operator[](int i) {AddIdx(i); return *this;}
46 void operator=(T *array){mA=array; Clear();}
47 void operator=(T value){mA[GetIdx()]=value;}
48 private:
49 T *mA;
50 };
51 #endif //STMULTIARRAY_H
52 
class StMultiArrayBase is a base, non templated part of StMultiArray
Definition: StMultiArray.h:9