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.
64 fTracks[0] = fTracks[1] = fTracks[2] = -3;
65 fHits[0] = fHits[1] = fHits[2] = -1;
67 //______________________________________________________________________
68 AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits){
69 // Creates a SPD digit object
71 fTracks[0] = fTracks[1] = fTracks[2] = -3;
72 fHits[0] = fHits[1] = fHits[2] = -1;
76 fSignalSPD = digits[2];
78 //______________________________________________________________________
79 AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits,const Int_t *tracks,
81 // Creates a simulated SPD digit object
83 for(Int_t i=0; i<3; i++) {
84 fTracks[i] = tracks[i];
90 fSignalSPD = digits[2];
92 //______________________________________________________________________
93 void AliITSdigitSPD::Print(ostream *os){
94 //Standard output format for this class
96 AliITSdigit::Print(os);
97 *os <<","<< fTracks[0] <<","<< fTracks[1] <<","<< fTracks[2];
98 *os <<","<< fHits[0] <<","<< fHits[1] <<","<< fHits[2];
99 *os << "," << fSignalSPD;
101 //______________________________________________________________________
102 void AliITSdigitSPD::Read(istream *os){
103 //Standard input for this class
105 AliITSdigit::Read(os);
106 *os >> fTracks[0] >> fTracks[1] >> fTracks[2];
107 *os >> fHits[0] >> fHits[1] >> fHits[2] >> fSignalSPD;
109 //______________________________________________________________________
110 ostream &operator<<(ostream &os,AliITSdigitSPD &source){
111 // Standard output streaming function.
116 //______________________________________________________________________
117 istream &operator>>(istream &os,AliITSdigitSPD &source){
118 // Standard output streaming function.
123 //______________________________________________________________________
124 ClassImp(AliITSdigitSDD)
125 AliITSdigitSDD::AliITSdigitSDD():AliITSdigit(){
126 // default constructor, zero coordinates and set array
127 // elements to clearly unphysical values. A value of 0 may
128 // be a valide track of hit number.
130 fTracks[0] = fTracks[1] = fTracks[2] = -3;
131 fHits[0] = fHits[1] = fHits[2] = -1;
133 fTcharges[0] = fTcharges[1] = fTcharges[2] = 0;
135 //________________________________________________________________________
136 AliITSdigitSDD::AliITSdigitSDD(Float_t phys,const Int_t *digits):
138 // Creates a simulated SDD digit object to be updated
142 //_____________________________________________________________________________
143 AliITSdigitSDD::AliITSdigitSDD(Float_t phys,const Int_t *digits,
144 const Int_t *tracks,const Int_t *hits,
145 const Float_t *charges):
147 // Creates a simulated SDD digit object
150 for(Int_t i=0; i<3; i++) {
151 fTcharges[i] = charges[i];
152 fTracks[i] = tracks[i];
156 //______________________________________________________________________
157 void AliITSdigitSDD::Print(ostream *os){
158 //Standard output format for this class
160 AliITSdigit::Print(os);
161 *os <<","<< fPhysics;
162 *os <<","<< fTcharges[0] <<","<< fTcharges[1] <<","<< fTcharges[2];
163 *os <<","<< fTracks[0] <<","<< fTracks[1] <<","<< fTracks[2];
164 *os <<","<< fHits[0] <<","<< fHits[1] <<","<< fHits[2];
166 //______________________________________________________________________
167 void AliITSdigitSDD::Read(istream *os){
168 //Standard input for this class
170 AliITSdigit::Read(os);
172 *os >> fTcharges[0] >> fTcharges[1] >> fTcharges[2];
173 *os >> fTracks[0] >> fTracks[1] >> fTracks[2];
174 *os >> fHits[0] >> fHits[1] >> fHits[2];
176 //______________________________________________________________________
177 ostream &operator<<(ostream &os,AliITSdigitSDD &source){
178 // Standard output streaming function.
183 //______________________________________________________________________
184 istream &operator>>(istream &os,AliITSdigitSDD &source){
185 // Standard output streaming function.
190 //______________________________________________________________________
191 ClassImp(AliITSTransientDigit)
192 AliITSTransientDigit::AliITSTransientDigit(Float_t phys,const Int_t *digits):
193 AliITSdigitSDD(phys,digits) {
194 // Creates a digit object in a list of digits to be updated
196 fTrackList = new TObjArray;
198 //__________________________________________________________________________
199 AliITSTransientDigit::AliITSTransientDigit(const AliITSTransientDigit &source){
201 if(&source == this) return;
202 this->fTrackList = source.fTrackList;
205 //_________________________________________________________________________
206 AliITSTransientDigit& AliITSTransientDigit::operator=(
207 const AliITSTransientDigit &source) {
208 // Assignment operator
209 if(&source == this) return *this;
210 this->fTrackList = source.fTrackList;
213 //______________________________________________________________________
214 void AliITSTransientDigit::Print(ostream *os){
215 //Standard output format for this class
217 AliITSdigitSDD::Print(os);
219 //______________________________________________________________________
220 void AliITSTransientDigit::Read(istream *os){
221 //Standard input for this class
223 AliITSdigitSDD::Read(os);
225 //______________________________________________________________________
226 ostream &operator<<(ostream &os,AliITSTransientDigit &source){
227 // Standard output streaming function.
232 //______________________________________________________________________
233 istream &operator>>(istream &os,AliITSTransientDigit &source){
234 // Standard output streaming function.
239 //______________________________________________________________________
240 ClassImp(AliITSdigitSSD)
241 AliITSdigitSSD::AliITSdigitSSD():AliITSdigit(){
242 // default constructor
244 fTracks[0] = fTracks[1] = fTracks[2] = -3;
245 fHits[0] = fHits[1] = fHits[2] = -1;
247 //__________________________________________________________________________
248 AliITSdigitSSD::AliITSdigitSSD(const Int_t *digits):AliITSdigit(digits){
249 // Creates a real SSD digit object
251 //_____________________________________________________________________________
252 AliITSdigitSSD::AliITSdigitSSD(const Int_t *digits,const Int_t *tracks,
253 const Int_t *hits):AliITSdigit(digits){
254 // Creates a simulated SSD digit object
256 for(Int_t i=0; i<3; i++) {
257 fTracks[i] = tracks[i];
261 //______________________________________________________________________
262 void AliITSdigitSSD::Print(ostream *os){
263 //Standard output format for this class
265 AliITSdigit::Print(os);
266 *os <<","<< fTracks[0] <<","<< fTracks[1] <<","<< fTracks[2];
267 *os <<","<< fHits[0] <<","<< fHits[1] <<","<< fHits[2];
269 //______________________________________________________________________
270 void AliITSdigitSSD::Read(istream *os){
271 //Standard input for this class
273 AliITSdigit::Read(os);
274 *os >> fTracks[0] >> fTracks[1] >> fTracks[2];
275 *os >> fHits[0] >> fHits[1] >> fHits[2];
277 //______________________________________________________________________
278 ostream &operator<<(ostream &os,AliITSdigitSSD &source){
279 // Standard output streaming function.
284 //______________________________________________________________________
285 istream &operator>>(istream &os,AliITSdigitSSD &source){
286 // Standard output streaming function.