1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
17 ////////////////////////////////////////////////
18 // Digits classes for all ITS detectors //
19 ////////////////////////////////////////////////
20 #include "AliITSdigit.h"
22 //______________________________________________________________________
24 AliITSdigit::AliITSdigit(const Int_t *digits) {
25 // Creates a real data digit object
31 //______________________________________________________________________
32 void AliITSdigit::Print(ostream *os){
33 //Standard output format for this class
35 *os << fCoord1 <<","<< fCoord2 <<","<< fSignal;
37 //______________________________________________________________________
38 void AliITSdigit::Read(istream *os){
39 //Standard input for this class
41 *os >> fCoord1 >> fCoord2 >> fSignal;
43 //______________________________________________________________________
44 ostream &operator<<(ostream &os,AliITSdigit &source){
45 // Standard output streaming function.
50 //______________________________________________________________________
51 istream &operator>>(istream &os,AliITSdigit &source){
52 // Standard output streaming function.
57 //______________________________________________________________________
58 ClassImp(AliITSdigitSPD)
59 AliITSdigitSPD::AliITSdigitSPD():AliITSdigit(){
60 // default constructor, zero coordinates and set array
61 // elements to clearly unphysical values. A value of 0 may
62 // be a valide track of hit number.
65 for(i=0;i<fkSspd;i++) fTracks[i] = -3;
66 for(i=0;i<fkSspd;i++) fHits[i] = -1;
68 //______________________________________________________________________
69 AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits){
70 // Creates a SPD digit object
73 for(i=0;i<fkSspd;i++) fTracks[i] = -3;
74 for(i=0;i<fkSspd;i++) fHits[i] = -1;
78 fSignalSPD = digits[2];
80 //______________________________________________________________________
81 AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits,const Int_t *tracks,
83 // Creates a simulated SPD digit object
85 for(Int_t i=0; i<fkSspd; i++) {
86 fTracks[i] = tracks[i];
92 fSignalSPD = digits[2];
94 //______________________________________________________________________
95 void AliITSdigitSPD::Print(ostream *os){
96 //Standard output format for this class
99 AliITSdigit::Print(os);
100 for(i=0;i<fkSspd;i++) *os <<","<< fTracks[i];
101 for(i=0;i<fkSspd;i++) *os <<","<< fHits[i];
102 *os << "," << fSignalSPD;
104 //______________________________________________________________________
105 void AliITSdigitSPD::Read(istream *os){
106 //Standard input for this class
109 AliITSdigit::Read(os);
110 for(i=0;i<fkSspd;i++) *os >> fTracks[i];
111 for(i=0;i<fkSspd;i++) *os >> fHits[i];
114 //______________________________________________________________________
115 ostream &operator<<(ostream &os,AliITSdigitSPD &source){
116 // Standard output streaming function.
121 //______________________________________________________________________
122 istream &operator>>(istream &os,AliITSdigitSPD &source){
123 // Standard output streaming function.
128 //______________________________________________________________________
129 ClassImp(AliITSdigitSDD)
130 AliITSdigitSDD::AliITSdigitSDD():AliITSdigit(){
131 // default constructor, zero coordinates and set array
132 // elements to clearly unphysical values. A value of 0 may
133 // be a valide track of hit number.
136 for(i=0;i<fkSsdd;i++) fTracks[i] = -3;
137 for(i=0;i<fkSsdd;i++) fHits[i] = -1;
139 for(i=0;i<fkSsdd;i++) fTcharges[i] = 0;
141 //________________________________________________________________________
142 AliITSdigitSDD::AliITSdigitSDD(Float_t phys,const Int_t *digits):
144 // Creates a simulated SDD digit object to be updated
148 //_____________________________________________________________________________
149 AliITSdigitSDD::AliITSdigitSDD(Float_t phys,const Int_t *digits,
150 const Int_t *tracks,const Int_t *hits,
151 const Float_t *charges):
153 // Creates a simulated SDD digit object
156 for(Int_t i=0; i<fkSsdd; i++) {
157 fTcharges[i] = charges[i];
158 fTracks[i] = tracks[i];
162 //______________________________________________________________________
163 void AliITSdigitSDD::Print(ostream *os){
164 //Standard output format for this class
167 AliITSdigit::Print(os);
168 *os <<","<< fPhysics;
169 for(i=0; i<fkSsdd; i++) *os <<","<< fTcharges[i];
170 for(i=0; i<fkSsdd; i++) *os <<","<< fTracks[i];
171 for(i=0; i<fkSsdd; i++) *os <<","<< fHits[i];
173 //______________________________________________________________________
174 void AliITSdigitSDD::Read(istream *os){
175 //Standard input for this class
178 AliITSdigit::Read(os);
180 for(i=0; i<fkSsdd; i++) *os >> fTcharges[i];
181 for(i=0; i<fkSsdd; i++) *os >> fTracks[i];
182 for(i=0; i<fkSsdd; i++) *os >> fHits[i];
184 //______________________________________________________________________
185 ostream &operator<<(ostream &os,AliITSdigitSDD &source){
186 // Standard output streaming function.
191 //______________________________________________________________________
192 istream &operator>>(istream &os,AliITSdigitSDD &source){
193 // Standard output streaming function.
198 //______________________________________________________________________
199 ClassImp(AliITSTransientDigit)
200 AliITSTransientDigit::AliITSTransientDigit(Float_t phys,const Int_t *digits):
201 AliITSdigitSDD(phys,digits) {
202 // Creates a digit object in a list of digits to be updated
204 fTrackList = new TObjArray;
206 //__________________________________________________________________________
207 AliITSTransientDigit::AliITSTransientDigit(const AliITSTransientDigit &source){
209 if(&source == this) return;
210 this->fTrackList = source.fTrackList;
213 //_________________________________________________________________________
214 AliITSTransientDigit& AliITSTransientDigit::operator=(
215 const AliITSTransientDigit &source) {
216 // Assignment operator
217 if(&source == this) return *this;
218 this->fTrackList = source.fTrackList;
221 //______________________________________________________________________
222 void AliITSTransientDigit::Print(ostream *os){
223 //Standard output format for this class
225 AliITSdigitSDD::Print(os);
227 //______________________________________________________________________
228 void AliITSTransientDigit::Read(istream *os){
229 //Standard input for this class
231 AliITSdigitSDD::Read(os);
233 //______________________________________________________________________
234 ostream &operator<<(ostream &os,AliITSTransientDigit &source){
235 // Standard output streaming function.
240 //______________________________________________________________________
241 istream &operator>>(istream &os,AliITSTransientDigit &source){
242 // Standard output streaming function.
247 //______________________________________________________________________
248 ClassImp(AliITSdigitSSD)
249 AliITSdigitSSD::AliITSdigitSSD():AliITSdigit(){
250 // default constructor
253 for(i=0; i<fkSssd; i++) fTracks[i] = -3;
254 for(i=0; i<fkSssd; i++) fHits[i] = -1;
256 //__________________________________________________________________________
257 AliITSdigitSSD::AliITSdigitSSD(const Int_t *digits):AliITSdigit(digits){
258 // Creates a real SSD digit object
260 //_____________________________________________________________________________
261 AliITSdigitSSD::AliITSdigitSSD(const Int_t *digits,const Int_t *tracks,
262 const Int_t *hits):AliITSdigit(digits){
263 // Creates a simulated SSD digit object
265 for(Int_t i=0; i<fkSssd; i++) {
266 fTracks[i] = tracks[i];
270 //______________________________________________________________________
271 void AliITSdigitSSD::Print(ostream *os){
272 //Standard output format for this class
275 AliITSdigit::Print(os);
276 for(i=0; i<fkSssd; i++) *os <<","<< fTracks[i];
277 for(i=0; i<fkSssd; i++) *os <<","<< fHits[i];
279 //______________________________________________________________________
280 void AliITSdigitSSD::Read(istream *os){
281 //Standard input for this class
284 AliITSdigit::Read(os);
285 for(i=0; i<fkSssd; i++) *os >> fTracks[i];
286 for(i=0; i<fkSssd; i++) *os >> fHits[i];
288 //______________________________________________________________________
289 ostream &operator<<(ostream &os,AliITSdigitSSD &source){
290 // Standard output streaming function.
295 //______________________________________________________________________
296 istream &operator>>(istream &os,AliITSdigitSSD &source){
297 // Standard output streaming function.