ROOT logo
/**************************************************************************
 * Copyright(c) 2004-2006, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

#include <AliITSdigitSPD.h>
#include <TArrayI.h>

///////////////////////////////////////////////////////////////////
//                                                               //
// Class defining the digit object
// for SPD
// Inherits from AliITSdigit
//                                                               //
///////////////////////////////////////////////////////////////////

ClassImp(AliITSdigitSPD)

//______________________________________________________________________
AliITSdigitSPD::AliITSdigitSPD():AliITSdigit(),
fSignalSPD(0){
    // default constructor, zero coordinates and set array
    // elements to clearly unphysical values. A value of 0 may
    // be a valide track of hit number.
    Int_t i;

    for(i=0;i<fgkSize;i++) fTracks[i]  = -3;
    for(i=0;i<fgkSize;i++) fHits[i]    = -1;
}
//______________________________________________________________________
AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits):
fSignalSPD(digits[2]){
    // Creates a SPD digit object
    Int_t i;

    for(i=0;i<fgkSize;i++) fTracks[i]  = -3;
    for(i=0;i<fgkSize;i++) fHits[i]    = -1;
    fCoord1       = digits[0];
    fCoord2       = digits[1];
    fSignal       = 1;
 }
//______________________________________________________________________
AliITSdigitSPD::AliITSdigitSPD(const Int_t *digits,const Int_t *tracks,
			       const Int_t *hits):
fSignalSPD(digits[2]){
    // Creates a simulated SPD digit object

    for(Int_t i=0; i<fgkSize; i++) {
	fTracks[i] = tracks[i];
	fHits[i]   = hits[i];
    } // end for i
    fCoord1       = digits[0];
    fCoord2       = digits[1];
    fSignal       = 1;
}
//______________________________________________________________________
Int_t AliITSdigitSPD::GetListOfTracks(TArrayI &t){
    // Fills the TArrayI t with the tracks found in fTracks removing
    // duplicated tracks, but otherwise in the same order. It will return
    // the number of tracks and fill the remaining elements to the array
    // t with -1.
    // Inputs:
    //   TArrayI  &t Reference to a TArrayI to contain the list of
    //               nonduplicated track numbers.
    // Output:
    //   TArrayI  &t The input array filled with the nonduplicated track
    //               numbers.
    // Return:
    //   Int_t The number of none -1 entries in the TArrayI t.
    Int_t nt = t.GetSize();
    Int_t nth = this->GetNTracks();
    Int_t n = 0,i,j;
    Bool_t inlist = kFALSE;

    t.Reset(-1); // -1 array.
    for(i=0;i<nth;i++) {
	if(this->GetTrack(i) == -1) continue;
	inlist = kFALSE;
	for(j=0;j<n;j++)if(this->GetTrack(i) == t.At(j)) inlist = kTRUE;
	if(!inlist){ // add to end of list
	    t.AddAt(this->GetTrack(i),n);
	    if(n<nt) n++;
	} // end if
    } // end for i
    return n;
}
//______________________________________________________________________
void AliITSdigitSPD::Print(ostream *os){
    //Standard output format for this class
    Int_t i;

    AliITSdigit::Print(os);
    for(i=0;i<fgkSize;i++) *os <<","<< fTracks[i];
    for(i=0;i<fgkSize;i++) *os <<","<< fHits[i];
    *os << "," << fSignalSPD;
}
//______________________________________________________________________
void AliITSdigitSPD::Read(istream *os){
    //Standard input for this class
    Int_t i;

    AliITSdigit::Read(os);
    for(i=0;i<fgkSize;i++) *os >> fTracks[i];
    for(i=0;i<fgkSize;i++) *os >> fHits[i];
    *os >> fSignalSPD;
}
//______________________________________________________________________
ostream &operator<<(ostream &os,AliITSdigitSPD &source){
    // Standard output streaming function.

    source.Print(&os);
    return os;
}
//______________________________________________________________________
istream &operator>>(istream &os,AliITSdigitSPD &source){
    // Standard output streaming function.

    source.Read(&os);
    return os;
}
 AliITSdigitSPD.cxx:1
 AliITSdigitSPD.cxx:2
 AliITSdigitSPD.cxx:3
 AliITSdigitSPD.cxx:4
 AliITSdigitSPD.cxx:5
 AliITSdigitSPD.cxx:6
 AliITSdigitSPD.cxx:7
 AliITSdigitSPD.cxx:8
 AliITSdigitSPD.cxx:9
 AliITSdigitSPD.cxx:10
 AliITSdigitSPD.cxx:11
 AliITSdigitSPD.cxx:12
 AliITSdigitSPD.cxx:13
 AliITSdigitSPD.cxx:14
 AliITSdigitSPD.cxx:15
 AliITSdigitSPD.cxx:16
 AliITSdigitSPD.cxx:17
 AliITSdigitSPD.cxx:18
 AliITSdigitSPD.cxx:19
 AliITSdigitSPD.cxx:20
 AliITSdigitSPD.cxx:21
 AliITSdigitSPD.cxx:22
 AliITSdigitSPD.cxx:23
 AliITSdigitSPD.cxx:24
 AliITSdigitSPD.cxx:25
 AliITSdigitSPD.cxx:26
 AliITSdigitSPD.cxx:27
 AliITSdigitSPD.cxx:28
 AliITSdigitSPD.cxx:29
 AliITSdigitSPD.cxx:30
 AliITSdigitSPD.cxx:31
 AliITSdigitSPD.cxx:32
 AliITSdigitSPD.cxx:33
 AliITSdigitSPD.cxx:34
 AliITSdigitSPD.cxx:35
 AliITSdigitSPD.cxx:36
 AliITSdigitSPD.cxx:37
 AliITSdigitSPD.cxx:38
 AliITSdigitSPD.cxx:39
 AliITSdigitSPD.cxx:40
 AliITSdigitSPD.cxx:41
 AliITSdigitSPD.cxx:42
 AliITSdigitSPD.cxx:43
 AliITSdigitSPD.cxx:44
 AliITSdigitSPD.cxx:45
 AliITSdigitSPD.cxx:46
 AliITSdigitSPD.cxx:47
 AliITSdigitSPD.cxx:48
 AliITSdigitSPD.cxx:49
 AliITSdigitSPD.cxx:50
 AliITSdigitSPD.cxx:51
 AliITSdigitSPD.cxx:52
 AliITSdigitSPD.cxx:53
 AliITSdigitSPD.cxx:54
 AliITSdigitSPD.cxx:55
 AliITSdigitSPD.cxx:56
 AliITSdigitSPD.cxx:57
 AliITSdigitSPD.cxx:58
 AliITSdigitSPD.cxx:59
 AliITSdigitSPD.cxx:60
 AliITSdigitSPD.cxx:61
 AliITSdigitSPD.cxx:62
 AliITSdigitSPD.cxx:63
 AliITSdigitSPD.cxx:64
 AliITSdigitSPD.cxx:65
 AliITSdigitSPD.cxx:66
 AliITSdigitSPD.cxx:67
 AliITSdigitSPD.cxx:68
 AliITSdigitSPD.cxx:69
 AliITSdigitSPD.cxx:70
 AliITSdigitSPD.cxx:71
 AliITSdigitSPD.cxx:72
 AliITSdigitSPD.cxx:73
 AliITSdigitSPD.cxx:74
 AliITSdigitSPD.cxx:75
 AliITSdigitSPD.cxx:76
 AliITSdigitSPD.cxx:77
 AliITSdigitSPD.cxx:78
 AliITSdigitSPD.cxx:79
 AliITSdigitSPD.cxx:80
 AliITSdigitSPD.cxx:81
 AliITSdigitSPD.cxx:82
 AliITSdigitSPD.cxx:83
 AliITSdigitSPD.cxx:84
 AliITSdigitSPD.cxx:85
 AliITSdigitSPD.cxx:86
 AliITSdigitSPD.cxx:87
 AliITSdigitSPD.cxx:88
 AliITSdigitSPD.cxx:89
 AliITSdigitSPD.cxx:90
 AliITSdigitSPD.cxx:91
 AliITSdigitSPD.cxx:92
 AliITSdigitSPD.cxx:93
 AliITSdigitSPD.cxx:94
 AliITSdigitSPD.cxx:95
 AliITSdigitSPD.cxx:96
 AliITSdigitSPD.cxx:97
 AliITSdigitSPD.cxx:98
 AliITSdigitSPD.cxx:99
 AliITSdigitSPD.cxx:100
 AliITSdigitSPD.cxx:101
 AliITSdigitSPD.cxx:102
 AliITSdigitSPD.cxx:103
 AliITSdigitSPD.cxx:104
 AliITSdigitSPD.cxx:105
 AliITSdigitSPD.cxx:106
 AliITSdigitSPD.cxx:107
 AliITSdigitSPD.cxx:108
 AliITSdigitSPD.cxx:109
 AliITSdigitSPD.cxx:110
 AliITSdigitSPD.cxx:111
 AliITSdigitSPD.cxx:112
 AliITSdigitSPD.cxx:113
 AliITSdigitSPD.cxx:114
 AliITSdigitSPD.cxx:115
 AliITSdigitSPD.cxx:116
 AliITSdigitSPD.cxx:117
 AliITSdigitSPD.cxx:118
 AliITSdigitSPD.cxx:119
 AliITSdigitSPD.cxx:120
 AliITSdigitSPD.cxx:121
 AliITSdigitSPD.cxx:122
 AliITSdigitSPD.cxx:123
 AliITSdigitSPD.cxx:124
 AliITSdigitSPD.cxx:125
 AliITSdigitSPD.cxx:126
 AliITSdigitSPD.cxx:127
 AliITSdigitSPD.cxx:128
 AliITSdigitSPD.cxx:129
 AliITSdigitSPD.cxx:130