New ITS code for new structure and simulations.
[u/mrichter/AliRoot.git] / ITS / AliITSMap.h
1 #ifndef ALIITSMAP_H
2 #define ALIITSMAP_H
3
4
5 #include "AliITS.h"
6
7 typedef enum {kEmpty, kUsed, kUnused} Flag_t;
8
9 //___________________________________________________________________________
10
11 class AliITSMap :
12   public TObject {
13
14 public:
15   virtual ~AliITSMap() {}
16   virtual  void  FillMap()                                       =0;
17   virtual  void  ClearMap()                                      =0;
18   virtual  void  SetHit(Int_t iz, Int_t ix, Int_t idigit)        =0;
19   virtual  void  DeleteHit(Int_t iz, Int_t ix)                   =0;
20   virtual  void   FlagHit(Int_t iz, Int_t ix)                    =0;    
21   virtual Int_t  GetHitIndex(Int_t iz, Int_t ix)                 =0;
22   virtual TObject * GetHit(Int_t iz, Int_t ix)                   =0;
23   virtual Flag_t TestHit(Int_t iz, Int_t ix)                     =0;
24   virtual Double_t  GetSignal(Int_t iz, Int_t ix)                =0;
25   
26   ClassDef(AliITSMap,1) //virtual base class for ITS Hit/Digit Map
27
28     };
29
30
31 class AliITSMapA1 :
32   public AliITSMap 
33 {
34   
35 public:
36   AliITSMapA1() {
37     // constructor
38   }
39   AliITSMapA1(AliITSsegmentation *seg);
40   AliITSMapA1(AliITSsegmentation *seg, TObjArray *dig);
41   AliITSMapA1(const AliITSMapA1 &source); // copy constructor
42   AliITSMapA1& operator=(const AliITSMapA1 &source); // assignment operator
43   
44   virtual ~AliITSMapA1();
45   virtual  void  FillMap();
46   virtual  void  ClearMap();    
47   virtual Double_t  GetSignal(Int_t iz, Int_t ix) {
48     // get signal
49     return 0.;
50   }
51   virtual  void  SetHit(Int_t iz, Int_t ix, Int_t idigit);
52   virtual void  DeleteHit(Int_t iz, Int_t ix);
53   virtual Int_t  GetHitIndex(Int_t iz, Int_t ix);
54   virtual TObject*  GetHit(Int_t iz, Int_t ix);
55   virtual  void  FlagHit(Int_t iz, Int_t ix);    
56   virtual Flag_t TestHit(Int_t iz, Int_t ix);
57   Int_t  CheckedIndex(Int_t iz, Int_t ix);
58   Int_t   MaxIndex() {
59     // max index
60     return fMaxIndex;
61   }
62   void SetArray(TObjArray *obj);
63   
64 protected:
65   AliITSsegmentation *fSegmentation;   // segmentation class
66   Int_t fNpx;                          // fNpx
67   Int_t fNpz;                          // fNpz
68   TObjArray  *fObjects;                // object
69   Int_t fNobjects;                     // nu of object
70   Int_t fMaxIndex;                     // max index
71   
72 private:
73   Int_t *fHitMap;                      // hit map
74
75   ClassDef(AliITSMapA1,1) // Implements Hit/Digit Map for SDD - read tree
76     };
77
78
79 class AliITSMapA2 :
80 public AliITSMapA1 
81 {
82
83 public:
84   AliITSMapA2(AliITSsegmentation *seg);
85   AliITSMapA2(AliITSsegmentation *seg, TObjArray *hist,Double_t thresh);
86   virtual ~AliITSMapA2();
87   AliITSMapA2(const AliITSMapA2 &source); // copy constructor
88   AliITSMapA2& operator=(const AliITSMapA2 &source); // assignment operator
89   virtual  void  FillMap();
90   virtual  void  ClearMap();    
91   virtual  void  SetHit(Int_t iz, Int_t ix, Int_t signal){
92     // set hit
93   }
94   virtual  void  FlagHit(Int_t iz, Int_t ix);    
95   virtual  void  DeleteHit(Int_t iz, Int_t ix);
96   virtual Int_t  GetHitIndex(Int_t iz, Int_t ix);
97   virtual TObject * GetHit(Int_t iz, Int_t dummy);
98   virtual Flag_t TestHit(Int_t iz, Int_t ix);
99   virtual Double_t  GetSignal(Int_t iz, Int_t ix);
100   void  SetHit(Int_t iz, Int_t ix, Double_t signal);
101   Double_t  GetSignal(Int_t index);
102
103 private:
104   Double_t *fHitMap;        // fHitMap
105   Double_t fMapThreshold;   // fMapThreshold
106
107   void  FillMapFromHist();
108   void  FillHist();
109   void  ResetHist();
110   
111   ClassDef(AliITSMapA2,1) // Implements Signal Map for SDD -fill or read hist
112     };
113
114
115 #endif  
116
117
118
119