New ITS code replacing the old structure and simulations code.
[u/mrichter/AliRoot.git] / ITS / AliITSdigit.h
1 #ifndef ALIITSDIGIT_H
2 #define ALIITSDIGIT_H
3
4 ////////////////////////////////////////////////
5 //  Digits classes for set:ITS                //
6 ////////////////////////////////////////////////
7
8 #include <TObject.h>
9 #include <TObjArray.h>
10
11 //___________________________________________
12 class AliITSdigit: public TObject  {
13   
14 public:
15   
16   Int_t fCoord1;  // Cell number on Z axis (SPD+SDD) , flag for side type (SSD)
17   Int_t fCoord2 ; // Cell number on X axis (SPD+SDD) , strip number (SSD)
18   Int_t fSignal;  // Signal 
19   
20 public:
21   AliITSdigit() {
22     // constructor
23     fSignal=fCoord1=fCoord2=0;
24   }
25   AliITSdigit(Int_t *digits);
26   virtual   ~AliITSdigit() {
27     // destructor
28   }
29   
30   ClassDef(AliITSdigit,1)     // Real data digit object for set:ITS
31     };
32
33 //___________________________________________
34 class AliITSdigitSPD: public AliITSdigit {
35   
36 public:
37   
38     // debugging  -- goes to the dictionary
39   Int_t       fTracks[3];         // tracks making this digit 
40   
41 public:
42   AliITSdigitSPD() {
43     // constructor
44     fSignal=fCoord1=fCoord2=0;
45     fTracks[0]=fTracks[1]=fTracks[2]=0;
46   }
47   
48   AliITSdigitSPD(Int_t *digits);
49   AliITSdigitSPD(Int_t *digits, Int_t *tracks);
50   
51   virtual   ~AliITSdigitSPD(){
52     // destructor
53   }
54   virtual int *GetTracks() {
55     // returns pointer to the array of tracks which make this digit
56     return &fTracks[0];
57   }
58   
59     ClassDef(AliITSdigitSPD,1)   // Simulated digit object for SPD
60       };
61
62 //___________________________________________
63 class AliITSdigitSDD: public AliITSdigit {
64   
65 public:
66   
67   // debugging  -- goes to the dictionary
68   Int_t       fTracks[3];         // tracks making this digit 
69   Float_t     fTcharges[3];       // charge per track making this digit 
70   Float_t     fPhysics;           // signal particles contribution to signal
71   
72 public:
73   AliITSdigitSDD() {
74     // constructor
75     fSignal=fCoord1=fCoord2=0;
76     fTracks[0]=fTracks[1]=fTracks[2]=0;
77     fPhysics=0; fTcharges[0]=fTcharges[1]=fTcharges[2]=0;
78   }
79   
80   AliITSdigitSDD(Float_t phys,Int_t *digits);
81   AliITSdigitSDD( Float_t phys, Int_t *digits, Int_t *tracks, Float_t *charges);
82   
83   virtual   ~AliITSdigitSDD(){
84     // destructor
85   }
86   virtual int *GetTracks() {
87     // returns pointer to the array of tracks which make this digit
88     return &fTracks[0];
89   }
90   
91   ClassDef(AliITSdigitSDD,1)   // Simulated digit object for SDD
92     };
93
94 //_____________________________________________________________________________
95
96 class AliITSTransientDigit : public AliITSdigitSDD {
97 public:
98   TObjArray     *fTrackList;  // track list 
99 public:
100   AliITSTransientDigit() {
101     // constructor
102     fTrackList=0;
103   }
104   AliITSTransientDigit(Float_t phys,Int_t *digits);
105   virtual ~AliITSTransientDigit() {
106     // destructor
107     delete fTrackList;
108   }
109   AliITSTransientDigit(const AliITSTransientDigit &source); // copy constructor
110   AliITSTransientDigit& operator=(const AliITSTransientDigit &source); // ass. operator
111   TObjArray  *TrackList()   {
112     // returns pointer to the TObjArray of tracks and associated charges
113     return fTrackList;
114   }
115   
116   ClassDef(AliITSTransientDigit,1)  // Transient digit for set: ITS
117     };
118
119 //___________________________________________
120 class AliITSdigitSSD: public AliITSdigit {
121   
122 public:
123   
124   // debugging  -- goes to the dictionary
125   Int_t       fTracks[3];         // tracks making this digit 
126   
127 public:
128   AliITSdigitSSD() {
129     // constructor
130     fSignal=fCoord1=fCoord2=0;
131     fTracks[0]=fTracks[1]=fTracks[2]=0;
132   }
133   
134   AliITSdigitSSD(Int_t *digits);
135   AliITSdigitSSD(Int_t *digits, Int_t *tracks);
136   
137   virtual   ~AliITSdigitSSD(){
138     // destructor
139   }
140   
141   Int_t  GetSignal() const {
142     // returns signal
143     return fSignal;
144   }
145
146   Int_t  GetStripNumber() const {
147     // returns strip number
148     return fCoord2;
149   }
150   
151   Int_t  IsSideP() const {
152     //returns 1  when side P and 0 when side N     
153     return fCoord1;
154   }
155   
156   virtual int *GetTracks() {
157     // returns pointer to the array of tracks which make this digit
158     return &fTracks[0];
159     }
160   
161   ClassDef(AliITSdigitSSD,1)   // Simulated digit object for SSD
162     };
163
164
165 #endif