5f9f200345c24daf6d1829af8c9576a73c636935
[u/mrichter/AliRoot.git] / ITS / AliITSpList.h
1 #ifndef ALIITSPLIST_H
2 #define ALIITSPLIST_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 #include "AliITSMap.h"
7 #include "AliITSpListItem.h"
8 class TObjArray;
9 // class AliITSpListItem;
10
11 class AliITSpList: public AliITSMap {
12
13  public:
14     // Default Constructor
15     AliITSpList();
16     // Standard Constructor
17     AliITSpList(Int_t imax,Int_t jmax);
18     // Class destrutor
19     virtual ~AliITSpList();
20     // Copy constructor
21     AliITSpList(const AliITSpList &source);
22     // = Operator
23     virtual AliITSpList& operator=(const AliITSpList &source);
24     // Returns the max mape index values
25     void GetMaxMapIndex(Int_t &ni,Int_t &nj) const {ni=fNi;nj=fNj;return;}
26     // returns the max index value.
27     Int_t GetMaxIndex() const {return fNi*fNj;}
28     // returns the largest non-zero entry kept in the array fa.
29     Int_t GetEntries() const {return fEnteries;}
30     // returns the max number of track/hit entries per cell.
31     Int_t GetNEnteries() const {return AliITSpListItem::GetMaxKept();}
32     // for a give TObjArray index it returns the corresponding map index
33     void  GetMapIndex(Int_t index,Int_t &i,Int_t &j) const {
34         i = index/fNj;j = index - fNj*i;
35         if(i<0||i>=fNi || j<0||j>=fNj){i=-1;j=-1; return;}
36     }
37     // Returns the signal+noise for a give map coordinate
38     Double_t GetSignal(Int_t index) {
39         if(GetpListItem(index)==0) return 0.0;
40         return GetpListItem(index)->GetSumSignal();
41     }
42     // Returns the signal+noise for a give map coordinate
43     virtual Double_t GetSignal(Int_t i,Int_t j)  {
44         if(GetpListItem(i,j)==0) return 0.0;
45         return GetpListItem(i,j)->GetSumSignal();
46     }
47     // Returns the signal only for a give map coordinate
48     Double_t GetSignalOnly(Int_t i,Int_t j) {
49         if(GetpListItem(i,j)==0) return 0.0;
50         return GetpListItem(i,j)->GetSignal();
51     }
52     // Returns the noise for a give map coordinate
53     Double_t GetNoise(Int_t i,Int_t j) {
54         if(GetpListItem(i,j)==0) return 0.0;
55         return GetpListItem(i,j)->GetNoise();
56     }
57     // returns the track number which generated the signal at a given map
58     // coordinate. If there is no signal or only noise, then -2 is returned.
59     // k is the track rank number.
60     Double_t GetTSignal(Int_t i,Int_t j,Int_t k) {
61         if(GetpListItem(i,j)==0) return 0.0;
62         return GetpListItem(i,j)->GetSignal(k);
63     }
64     // returns the track number which generated the signal at a given map
65     // coordinate. If there is no signal or only noise, then -2 is returned.
66     // k is the track rank number.
67     Int_t GetTrack(Int_t i,Int_t j,Int_t k) {
68         if(GetpListItem(i,j)==0) return -2;
69         return GetpListItem(i,j)->GetTrack(k);
70     }
71     // returns the hit number which generated the signal at a given map
72     // coordinate. If there is no signal or only noise, then -2 is returned.
73     // k is the hit rank number.
74     Int_t GetHit(Int_t i,Int_t j,Int_t k) {
75         if(GetpListItem(i,j)==0) return -2;
76         return GetpListItem(i,j)->GetHit(k);
77     }
78     // returns the number of Signal values
79     Int_t GetNSignals(Int_t i,Int_t j) {
80         if(GetpListItem(i,j)==0) return 0;
81         return GetpListItem(i,j)->GetNsignals();
82     }
83     // Adds the contents of pl to the list with track number off set given by
84     // fileIndex.
85     virtual void AddItemTo(Int_t fileIndex, AliITSpListItem *pl);
86     // Adds a Signal value to the map. Creating and expanding arrays as needed.
87     void AddSignal(Int_t i,Int_t j,Int_t trk,Int_t ht,Int_t mod,Double_t sig);
88     // Adds a Noise value to the map. Creating and expanding arrays as needed.
89     void AddNoise(Int_t i,Int_t j,Int_t mod,Double_t noise);
90     // Delete all AliITSpListItems and zero the TObjArray
91     virtual void ClearMap();
92     // Delete a particular AliITSpListItem in the TObjArray.
93     virtual void DeleteHit(Int_t i,Int_t j);
94     // returns hit index in TObjArray
95     virtual Int_t GetHitIndex(Int_t i,Int_t j) const {return GetIndex(i,j);}
96     // returns "hit" AliITSpListItem as a TObject.
97     TObject * GetHit(Int_t i,Int_t j){return (TObject*)GetpListItem(i,j);}
98     // tests hit status.
99     virtual FlagType TestHit(Int_t i,Int_t j){if(GetpListItem(i,j)==0) return kEmpty;
100     else if(GetSignal(i,j)<=0) return kUnused; else return kUsed;}
101     // Returns the pointer to the TObjArray of pList Items
102     TObjArray * GetpListItems(){return fa;}
103     // returns the pList Item stored in the TObject array
104     AliITSpListItem* GetpListItem(Int_t index){
105         if(fa!=0)return (AliITSpListItem*) (fa->At(index));
106         else return 0;}
107     // returns the pList Item stored in the TObject array
108     AliITSpListItem* GetpListItem(Int_t i,Int_t j) const {
109         if(fa!=0)return (AliITSpListItem*) (fa->At(GetIndex(i,j)));
110         else return 0;}
111
112     // Fill pList from digits. Not functional yet
113     virtual void FillMap(){NotImplemented("FillMap");}
114     // Sets threshold for significance. Not of relavance in this case.
115     virtual void SetThreshold(Int_t /* i */){NotImplemented("SetThreshold");}
116     // Sets a single hit. Not of relavance in this case.
117     virtual void SetHit(Int_t /* i */,Int_t /* j */,Int_t /* k */){NotImplemented("SetHit");}
118     // Flags a hit. Not of relavence in this case.
119     virtual void FlagHit(Int_t /* i */,Int_t /* j */){NotImplemented("FlagHit");}
120     virtual void GetCell(Int_t index,Int_t &i,Int_t &j) const;
121
122  private:
123
124 // private methods
125     Int_t GetIndex(Int_t i,Int_t j) const;
126     void NotImplemented(const char *method) const {if(gDebug>0)
127          Warning(method,"This method is not implemented for this class");}
128 // data members
129     Int_t     fNi,fNj;   // The max index in i,j.
130     TObjArray *fa;       // array of pList items
131     Int_t     fEnteries; // keepts track of the number of non-zero entries.
132
133     ClassDef(AliITSpList,3) // list of signals and track numbers
134 };      
135 #endif