Fixed some codding convensions and added setters/getters and standard streamers.
[u/mrichter/AliRoot.git] / ITS / AliITSdigit.h
1 #ifndef ALIITSDIGIT_H
2 #define ALIITSDIGIT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5 /* $Id$ */
6 ////////////////////////////////////////////////
7 //  Digits classes for all ITS detectors      //
8 ////////////////////////////////////////////////
9 #include <iostream.h>
10 #include <fstream.h>
11 #include <TObject.h>
12 #include <TObjArray.h>
13
14 //______________________________________________________________________
15 class AliITSdigit: public TObject  {
16
17  public:
18     AliITSdigit() {//default constructor. zero all values.
19         fSignal=fCoord1=fCoord2=0;}
20     //Standard Constructor. Fills class from array digits
21     AliITSdigit(const Int_t *digits);
22     //Destructor
23     virtual ~AliITSdigit() { }
24     //returns pointer to array of tracks
25     virtual Int_t *GetTracks() const {return 0;}
26     //returns pointer to array of hits
27     virtual Int_t *GetHits() const {return 0;}
28     // returns track number kept in the array element i of fTracks 
29     virtual Int_t GetTrack(Int_t i) const {return 0;}
30     // returns hit number kept in the array element i of fHits 
31     virtual Int_t GetHit(Int_t i) const {return 0;}
32     virtual Int_t GetCoord1() const {return fCoord1;} // returns fCoord1
33     virtual Int_t GetCoord2() const {return fCoord2;} // returns fCoord2
34     virtual Int_t GetSignal() const {return fSignal;} // returns fSignal
35     virtual void SetCoord1(Int_t i){fCoord1 = i;} // Sets fCoord1 value
36     virtual void SetCoord2(Int_t i){fCoord2 = i;} // Sets fCoord12value
37     virtual void SetSignal(Int_t i){fSignal = i;} // Sets fSignal value
38     void Print(ostream *os); // Class ascii print function
39     void Read(istream *os);  // Class ascii read function
40
41  public:
42     Int_t fCoord1; // Cell number on Z axis (SPD+SDD), flag for side type (SSD)
43     Int_t fCoord2; // Cell number on X axis (SPD+SDD), strip number (SSD)
44     Int_t fSignal; // Signal in ADC counts
45
46     ClassDef(AliITSdigit,1)     // Real data digit object for set:ITS
47
48 };
49 // Input and output functions for standard C++ input/output.
50 ostream &operator<<(ostream &os,AliITSdigit &source);
51 istream &operator>>(istream &os,AliITSdigit &source);
52 //______________________________________________________________________
53 class AliITSdigitSPD: public AliITSdigit {
54
55  public:
56     AliITSdigitSPD(); //default creator
57     AliITSdigitSPD(const Int_t *digits);//standard creator digits only
58     //standard creator with digits, tracks, and hits
59     AliITSdigitSPD(const Int_t *digits,const Int_t *tracks,const Int_t *hits);
60     virtual ~AliITSdigitSPD(){/*destructor*/}
61     // returns pointer to the array of tracks which make this digit
62     virtual int *GetTracks() {return &fTracks[0];}
63      //returns the pointer to the array of hits which made this digit
64     virtual Int_t *GetHits() {return &fHits[0];}
65     // returns track number kept in the array element i of fTracks 
66     virtual Int_t GetTrack(Int_t i) const {return fTracks[i];}
67     // returns hit number kept in the array element i of fHits 
68     virtual Int_t GetHit(Int_t i) const {return fHits[i];}
69     //copy the array trks[3] into fTracks
70     virtual void SetTracks(const Int_t *trks){
71         for(Int_t i=0;i<3;i++) fTracks[i]=trks[i];}
72     //copy the array hits[3] into fHits
73     virtual void SetHits(const Int_t *hits){
74         for(Int_t i=0;i<3;i++) fHits[i]=hits[i];}
75     //set array element i of fTracks to trk.
76     virtual void SetTrack(Int_t i,Int_t trk){fTracks[i]=trk;}
77     //set array element i of fHits to hit.
78     virtual void SetHit(Int_t i,Int_t hit){fHits[i]=hit;}
79     void Print(ostream *os); // Class ascii print function
80     void Read(istream *os);  // Class ascii read function
81
82  public:  
83     // debugging  -- goes to the dictionary
84     Int_t fTracks[3]; // tracks making this digit 
85     Int_t fHits[3];   // hits associated to the tracks
86                       // 3 hits temporarily - it will be only 1
87
88     ClassDef(AliITSdigitSPD,1)   // Simulated digit object for SPD
89
90 };
91 // Input and output functions for standard C++ input/output.
92 ostream &operator<<(ostream &os,AliITSdigitSPD &source);
93 istream &operator>>(istream &os,AliITSdigitSPD &source);
94 //______________________________________________________________________
95 class AliITSdigitSDD: public AliITSdigit {
96
97  public:
98     AliITSdigitSDD(); //default creator
99     //standard creator  with digits and "phys"
100     AliITSdigitSDD(Float_t phys,const Int_t *digits);
101     //standard creator with digits, tracls, hits, "phys", and charge
102     AliITSdigitSDD( Float_t phys,const Int_t *digits,const Int_t *tracks,
103                     const Int_t *hits,const Float_t *charges);
104     virtual ~AliITSdigitSDD(){/* destructor*/}
105     // returns pointer to the array of tracks which make this digit
106     virtual int *GetTracks() {return &fTracks[0];}
107     // returns the pointer to the array of hits which made this digit
108     virtual Int_t *GetHits() {return &fHits[0];}
109     // returns track number kept in the array element i of fTracks 
110     virtual Int_t GetTrack(Int_t i) const {return fTracks[i];}
111     // returns hit number kept in the array element i of fHits 
112     virtual Int_t GetHit(Int_t i) const {return fHits[i];}
113     //copy the array trks[3] into fTracks
114     virtual void SetTracks(const Int_t *trks){
115         for(Int_t i=0;i<3;i++) fTracks[i]=trks[i];}
116     //copy the array hits[3] into fHits
117     virtual void SetHits(const Int_t *hits){
118         for(Int_t i=0;i<3;i++) fHits[i]=hits[i];}
119     //set array element i of fTracks to trk.
120     virtual void SetTrack(Int_t i,Int_t trk){fTracks[i]=trk;}
121     //set array element i of fHits to hit.
122     virtual void SetHit(Int_t i,Int_t hit){fHits[i]=hit;}
123     void Print(ostream *os); // Class ascii print function
124     void Read(istream *os);  // Class ascii read function
125
126  public:
127     // debugging  -- goes to the dictionary
128     Int_t   fTracks[3];   // tracks making this digit 
129     Int_t   fHits[3];     // hits associated to the tracks
130                           // 3 hits temporarily - it will be only 1
131     Float_t fTcharges[3]; // charge per track making this digit 
132     Float_t fPhysics;     // signal particles contribution to signal
133
134     ClassDef(AliITSdigitSDD,1)   // Simulated digit object for SDD
135
136 };
137 // Input and output functions for standard C++ input/output.
138 ostream &operator<<(ostream &os,AliITSdigitSDD &source);
139 istream &operator>>(istream &os,AliITSdigitSDD &source);
140 //______________________________________________________________________
141 class AliITSTransientDigit : public AliITSdigitSDD {
142
143  public:
144     AliITSTransientDigit() {/*default constructor*/fTrackList=0;}
145     // Standard constructor with digits and "phys"
146     AliITSTransientDigit(Float_t phys,const Int_t *digits);
147     virtual ~AliITSTransientDigit(){/*destructor delets TObjArray fTracklist */
148         delete fTrackList;}
149     //copy constructor
150     AliITSTransientDigit(const AliITSTransientDigit &source);
151     //assignment operator
152     AliITSTransientDigit& operator=(const AliITSTransientDigit &source);
153     // returns pointer to the TObjArray of tracks and associated charges
154     TObjArray  *TrackList() const {return fTrackList;}
155     //returns element i of fTrackList
156     TObject *TrackItem(Int_t i) const {return fTrackList->At(i);}
157     //put TObject into fTrackList at location i
158     void PutTrackItem(TObject *obj,Int_t i){fTrackList->AddAt(obj,i);}
159     void Print(ostream *os); // Class ascii print function
160     void Read(istream *os);  // Class ascii read function
161
162  public:
163     TObjArray *fTrackList;  // track list 
164
165     ClassDef(AliITSTransientDigit,1)  // Transient digit for set: ITS
166
167 };
168 // Input and output functions for standard C++ input/output.
169 ostream &operator<<(ostream &os,AliITSTransientDigit &source);
170 istream &operator>>(istream &os,AliITSTransientDigit &source);
171 //______________________________________________________________________
172 class AliITSdigitSSD: public AliITSdigit {
173
174  public:
175     AliITSdigitSSD(); //default constructor
176     //Standard constructor with digits
177     AliITSdigitSSD(const Int_t *digits);
178     //Standard constructor with digits, tracks, and hits
179     AliITSdigitSSD(const Int_t *digits,const Int_t *tracks,const Int_t *hits);
180     virtual ~AliITSdigitSSD(){/* destructor */}
181     Int_t  GetSignal() const {/* returns signal*/return fSignal;}
182     Int_t  GetStripNumber() const {/* returns strip number*/return fCoord2;}
183     //returns 1  when side P and 0 when side N
184     Int_t  IsSideP() const {return fCoord1;}
185     // returns pointer to the array of tracks which make this digit
186     virtual int *GetTracks() {return &fTracks[0];}
187     // returns the pointer to the array of hits which made this digit
188     virtual Int_t *GetHits() {return &fHits[0];}
189     // returns track number kept in the array element i of fTracks 
190     virtual Int_t GetTrack(Int_t i) const {return fTracks[i];}
191     // returns hit number kept in the array element i of fHits 
192     virtual Int_t GetHit(Int_t i) const {return fHits[i];}
193     //copy the array trks[3] into fTracks
194     virtual void SetTracks(const Int_t *trks){
195         for(Int_t i=0;i<3;i++) fTracks[i]=trks[i];}
196     //copy the array hits[3] into fHits
197     virtual void SetHits(const Int_t *hits){
198         for(Int_t i=0;i<3;i++) fHits[i]=hits[i];}
199     //set array element i of fTracks to trk.
200     virtual void SetTrack(Int_t i,Int_t trk){fTracks[i]=trk;}
201     //set array element i of fHits to hit.
202     virtual void SetHit(Int_t i,Int_t hit){fHits[i]=hit;}
203     void Print(ostream *os); // Class ascii print function
204     void Read(istream *os);  // Class ascii read function
205
206  public:
207     // debugging  -- goes to the dictionary
208     Int_t fTracks[3]; // tracks making this digit 
209     Int_t fHits[3];   // hits associated to the tracks
210                       // 3 hits temporarily - it will be only 1
211     
212     ClassDef(AliITSdigitSSD,1)   // Simulated digit object for SSD
213
214 };
215 // Input and output functions for standard C++ input/output.
216 ostream &operator<<(ostream &os,AliITSdigitSSD &source);
217 istream &operator>>(istream &os,AliITSdigitSSD &source);
218
219 #endif