fix in calling of gaussian spread function
[u/mrichter/AliRoot.git] / ITS / AliITSdigitSPD.cxx
CommitLineData
e869281d 1/**************************************************************************
2 * Copyright(c) 2004-2006, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16#include <AliITSdigitSPD.h>
17#include <TArrayI.h>
18
19///////////////////////////////////////////////////////////////////
20// //
21// Class defining the digit object
22// for SPD
23// Inherits from AliITSdigit
24// //
25///////////////////////////////////////////////////////////////////
26
27ClassImp(AliITSdigitSPD)
28
29//______________________________________________________________________
e56160b8 30AliITSdigitSPD::AliITSdigitSPD():AliITSdigit(),
31fSignalSPD(0){
e869281d 32 // default constructor, zero coordinates and set array
33 // elements to clearly unphysical values. A value of 0 may
34 // be a valide track of hit number.
35 Int_t i;
36
0599a018 37 for(i=0;i<fgkSize;i++) fTracks[i] = -3;
38 for(i=0;i<fgkSize;i++) fHits[i] = -1;
e869281d 39}
40//______________________________________________________________________
e56160b8 41AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits):
42fSignalSPD(digits[2]){
e869281d 43 // Creates a SPD digit object
44 Int_t i;
45
0599a018 46 for(i=0;i<fgkSize;i++) fTracks[i] = -3;
47 for(i=0;i<fgkSize;i++) fHits[i] = -1;
e869281d 48 fCoord1 = digits[0];
49 fCoord2 = digits[1];
50 fSignal = 1;
e56160b8 51 }
e869281d 52//______________________________________________________________________
53AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits,const Int_t *tracks,
e56160b8 54 const Int_t *hits):
55fSignalSPD(digits[2]){
e869281d 56 // Creates a simulated SPD digit object
57
0599a018 58 for(Int_t i=0; i<fgkSize; i++) {
e869281d 59 fTracks[i] = tracks[i];
60 fHits[i] = hits[i];
61 } // end for i
62 fCoord1 = digits[0];
63 fCoord2 = digits[1];
64 fSignal = 1;
e869281d 65}
66//______________________________________________________________________
67Int_t AliITSdigitSPD::GetListOfTracks(TArrayI &t){
68 // Fills the TArrayI t with the tracks found in fTracks removing
69 // duplicated tracks, but otherwise in the same order. It will return
70 // the number of tracks and fill the remaining elements to the array
71 // t with -1.
72 // Inputs:
73 // TArrayI &t Reference to a TArrayI to contain the list of
74 // nonduplicated track numbers.
75 // Output:
76 // TArrayI &t The input array filled with the nonduplicated track
77 // numbers.
78 // Return:
79 // Int_t The number of none -1 entries in the TArrayI t.
80 Int_t nt = t.GetSize();
81 Int_t nth = this->GetNTracks();
82 Int_t n = 0,i,j;
83 Bool_t inlist = kFALSE;
84
85 t.Reset(-1); // -1 array.
86 for(i=0;i<nth;i++) {
87 if(this->GetTrack(i) == -1) continue;
88 inlist = kFALSE;
89 for(j=0;j<n;j++)if(this->GetTrack(i) == t.At(j)) inlist = kTRUE;
90 if(!inlist){ // add to end of list
91 t.AddAt(this->GetTrack(i),n);
92 if(n<nt) n++;
93 } // end if
94 } // end for i
95 return n;
96}
97//______________________________________________________________________
98void AliITSdigitSPD::Print(ostream *os){
99 //Standard output format for this class
100 Int_t i;
101
102 AliITSdigit::Print(os);
0599a018 103 for(i=0;i<fgkSize;i++) *os <<","<< fTracks[i];
104 for(i=0;i<fgkSize;i++) *os <<","<< fHits[i];
e869281d 105 *os << "," << fSignalSPD;
106}
107//______________________________________________________________________
108void AliITSdigitSPD::Read(istream *os){
109 //Standard input for this class
110 Int_t i;
111
112 AliITSdigit::Read(os);
0599a018 113 for(i=0;i<fgkSize;i++) *os >> fTracks[i];
114 for(i=0;i<fgkSize;i++) *os >> fHits[i];
e869281d 115 *os >> fSignalSPD;
116}
117//______________________________________________________________________
118ostream &operator<<(ostream &os,AliITSdigitSPD &source){
119 // Standard output streaming function.
120
121 source.Print(&os);
122 return os;
123}
124//______________________________________________________________________
125istream &operator>>(istream &os,AliITSdigitSPD &source){
126 // Standard output streaming function.
127
128 source.Read(&os);
129 return os;
130}