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):AliITSdigit(digits){
69 // Creates a SPD digit object
71 fTracks[0] = fTracks[1] = fTracks[2] = -3;
72 fHits[0] = fHits[1] = fHits[2] = -1;
74 //______________________________________________________________________
75 AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits,const Int_t *tracks,
76 const Int_t *hits): AliITSdigit(digits){
77 // Creates a simulated SPD digit object
79 for(Int_t i=0; i<3; i++) {
80 fTracks[i] = tracks[i];
84 //______________________________________________________________________
85 void AliITSdigitSPD::Print(ostream *os){
86 //Standard output format for this class
88 AliITSdigit::Print(os);
89 *os <<","<< fTracks[0] <<","<< fTracks[1] <<","<< fTracks[2];
90 *os <<","<< fHits[0] <<","<< fHits[1] <<","<< fHits[2];
92 //______________________________________________________________________
93 void AliITSdigitSPD::Read(istream *os){
94 //Standard input for this class
96 AliITSdigit::Read(os);
97 *os >> fTracks[0] >> fTracks[1] >> fTracks[2];
98 *os >> fHits[0] >> fHits[1] >> fHits[2];
100 //______________________________________________________________________
101 ostream &operator<<(ostream &os,AliITSdigitSPD &source){
102 // Standard output streaming function.
107 //______________________________________________________________________
108 istream &operator>>(istream &os,AliITSdigitSPD &source){
109 // Standard output streaming function.
114 //______________________________________________________________________
115 ClassImp(AliITSdigitSDD)
116 AliITSdigitSDD::AliITSdigitSDD():AliITSdigit(){
117 // default constructor, zero coordinates and set array
118 // elements to clearly unphysical values. A value of 0 may
119 // be a valide track of hit number.
121 fTracks[0] = fTracks[1] = fTracks[2] = -3;
122 fHits[0] = fHits[1] = fHits[2] = -1;
124 fTcharges[0] = fTcharges[1] = fTcharges[2] = 0;
126 //________________________________________________________________________
127 AliITSdigitSDD::AliITSdigitSDD(Float_t phys,const Int_t *digits):
129 // Creates a simulated SDD digit object to be updated
133 //_____________________________________________________________________________
134 AliITSdigitSDD::AliITSdigitSDD(Float_t phys,const Int_t *digits,
135 const Int_t *tracks,const Int_t *hits,
136 const Float_t *charges):
138 // Creates a simulated SDD digit object
141 for(Int_t i=0; i<3; i++) {
142 fTcharges[i] = charges[i];
143 fTracks[i] = tracks[i];
147 //______________________________________________________________________
148 void AliITSdigitSDD::Print(ostream *os){
149 //Standard output format for this class
151 AliITSdigit::Print(os);
152 *os <<","<< fPhysics;
153 *os <<","<< fTcharges[0] <<","<< fTcharges[1] <<","<< fTcharges[2];
154 *os <<","<< fTracks[0] <<","<< fTracks[1] <<","<< fTracks[2];
155 *os <<","<< fHits[0] <<","<< fHits[1] <<","<< fHits[2];
157 //______________________________________________________________________
158 void AliITSdigitSDD::Read(istream *os){
159 //Standard input for this class
161 AliITSdigit::Read(os);
163 *os >> fTcharges[0] >> fTcharges[1] >> fTcharges[2];
164 *os >> fTracks[0] >> fTracks[1] >> fTracks[2];
165 *os >> fHits[0] >> fHits[1] >> fHits[2];
167 //______________________________________________________________________
168 ostream &operator<<(ostream &os,AliITSdigitSDD &source){
169 // Standard output streaming function.
174 //______________________________________________________________________
175 istream &operator>>(istream &os,AliITSdigitSDD &source){
176 // Standard output streaming function.
181 //______________________________________________________________________
182 ClassImp(AliITSTransientDigit)
183 AliITSTransientDigit::AliITSTransientDigit(Float_t phys,const Int_t *digits):
184 AliITSdigitSDD(phys,digits) {
185 // Creates a digit object in a list of digits to be updated
187 fTrackList = new TObjArray;
189 //__________________________________________________________________________
190 AliITSTransientDigit::AliITSTransientDigit(const AliITSTransientDigit &source){
192 if(&source == this) return;
193 this->fTrackList = source.fTrackList;
196 //_________________________________________________________________________
197 AliITSTransientDigit& AliITSTransientDigit::operator=(
198 const AliITSTransientDigit &source) {
199 // Assignment operator
200 if(&source == this) return *this;
201 this->fTrackList = source.fTrackList;
204 //______________________________________________________________________
205 void AliITSTransientDigit::Print(ostream *os){
206 //Standard output format for this class
208 AliITSdigitSDD::Print(os);
210 //______________________________________________________________________
211 void AliITSTransientDigit::Read(istream *os){
212 //Standard input for this class
214 AliITSdigitSDD::Read(os);
216 //______________________________________________________________________
217 ostream &operator<<(ostream &os,AliITSTransientDigit &source){
218 // Standard output streaming function.
223 //______________________________________________________________________
224 istream &operator>>(istream &os,AliITSTransientDigit &source){
225 // Standard output streaming function.
230 //______________________________________________________________________
231 ClassImp(AliITSdigitSSD)
232 AliITSdigitSSD::AliITSdigitSSD():AliITSdigit(){
233 // default constructor
235 fTracks[0] = fTracks[1] = fTracks[2] = -3;
236 fHits[0] = fHits[1] = fHits[2] = -1;
238 //__________________________________________________________________________
239 AliITSdigitSSD::AliITSdigitSSD(const Int_t *digits):AliITSdigit(digits){
240 // Creates a real SSD digit object
242 //_____________________________________________________________________________
243 AliITSdigitSSD::AliITSdigitSSD(const Int_t *digits,const Int_t *tracks,
244 const Int_t *hits):AliITSdigit(digits){
245 // Creates a simulated SSD digit object
247 for(Int_t i=0; i<3; i++) {
248 fTracks[i] = tracks[i];
252 //______________________________________________________________________
253 void AliITSdigitSSD::Print(ostream *os){
254 //Standard output format for this class
256 AliITSdigit::Print(os);
257 *os <<","<< fTracks[0] <<","<< fTracks[1] <<","<< fTracks[2];
258 *os <<","<< fHits[0] <<","<< fHits[1] <<","<< fHits[2];
260 //______________________________________________________________________
261 void AliITSdigitSSD::Read(istream *os){
262 //Standard input for this class
264 AliITSdigit::Read(os);
265 *os >> fTracks[0] >> fTracks[1] >> fTracks[2];
266 *os >> fHits[0] >> fHits[1] >> fHits[2];
268 //______________________________________________________________________
269 ostream &operator<<(ostream &os,AliITSdigitSSD &source){
270 // Standard output streaming function.
275 //______________________________________________________________________
276 istream &operator>>(istream &os,AliITSdigitSSD &source){
277 // Standard output streaming function.