/************************************************************************** * Copyright(c) 1998-1999, 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. * **************************************************************************/ /* $Id$ */ //////////////////////////////////////////////// // Digits classes for all ITS detectors // //////////////////////////////////////////////// #include #include #include #include #include "AliITSdigit.h" //______________________________________________________________________ ClassImp(AliITSdigit) AliITSdigit::AliITSdigit(const Int_t *digits) { // Creates a real data digit object fCoord1 = digits[0]; fCoord2 = digits[1]; fSignal = digits[2]; } //______________________________________________________________________ void AliITSdigit::Print(ostream *os){ //Standard output format for this class *os << fCoord1 <<","<< fCoord2 <<","<< fSignal; } //______________________________________________________________________ void AliITSdigit::Read(istream *os){ //Standard input for this class *os >> fCoord1 >> fCoord2 >> fSignal; } //______________________________________________________________________ ostream &operator<<(ostream &os,AliITSdigit &source){ // Standard output streaming function. source.Print(&os); return os; } //______________________________________________________________________ istream &operator>>(istream &os,AliITSdigit &source){ // Standard output streaming function. source.Read(&os); return os; } //______________________________________________________________________ ClassImp(AliITSdigitSPD) AliITSdigitSPD::AliITSdigitSPD():AliITSdigit(){ // 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;iGetNTracks(); Int_t n = 0,i,j; Bool_t inlist = kFALSE; t.Reset(-1); // -1 array. for(i=0;iGetTrack(i) == -1) continue; inlist = kFALSE; for(j=0;jGetTrack(i) == t.At(j)) inlist = kTRUE; if(!inlist){ // add to end of list t.AddAt(this->GetTrack(i),n); if(n> fTracks[i]; for(i=0;i> 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; } //______________________________________________________________________ ClassImp(AliITSdigitSDD) AliITSdigitSDD::AliITSdigitSDD():AliITSdigit(){ // 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;iGetNTracks(); Int_t n = 0,i,j; Bool_t inlist = kFALSE; t.Reset(-1); // -1 array. c.Reset(0.0); // zero array. for(i=0;iGetTrack(i) == -1) continue; inlist = kFALSE; for(j=0;jGetTrack(i) == t.At(j)){ inlist = kTRUE; c.AddAt(this->GetCharge(i)+c.At(j),j); } // end for j/end if if(!inlist){ // add to end of list t.AddAt(this->GetTrack(i),n); c.AddAt(this->GetCharge(i),n); if(n-1 && c.At(j)>ch){ t.AddAt(t.At(j+1),j); c.AddAt(c.At(j+1),j); j--; } // end while t.AddAt(tr,j+1); c.AddAt(ch,j+1); } // end for i // return n; } //______________________________________________________________________ void AliITSdigitSDD::Print(ostream *os){ //Standard output format for this class Int_t i; AliITSdigit::Print(os); *os <<","<< fPhysics; for(i=0; i>fPhysics; for(i=0; i> fTcharges[i]; for(i=0; i> fTracks[i]; for(i=0; i> fHits[i]; } //______________________________________________________________________ ostream &operator<<(ostream &os,AliITSdigitSDD &source){ // Standard output streaming function. source.Print(&os); return os; } //______________________________________________________________________ istream &operator>>(istream &os,AliITSdigitSDD &source){ // Standard output streaming function. source.Read(&os); return os; } //______________________________________________________________________ ClassImp(AliITSTransientDigit) AliITSTransientDigit::AliITSTransientDigit(Float_t phys,const Int_t *digits): AliITSdigitSDD(phys,digits) { // Creates a digit object in a list of digits to be updated fTrackList = new TObjArray; } //__________________________________________________________________________ AliITSTransientDigit::AliITSTransientDigit(const AliITSTransientDigit &source): AliITSdigitSDD(source){ // Copy Constructor if(&source == this) return; this->fTrackList = source.fTrackList; return; } //_________________________________________________________________________ AliITSTransientDigit& AliITSTransientDigit::operator=( const AliITSTransientDigit &source) { // Assignment operator if(&source == this) return *this; this->fTrackList = source.fTrackList; return *this; } //______________________________________________________________________ void AliITSTransientDigit::Print(ostream *os){ //Standard output format for this class AliITSdigitSDD::Print(os); } //______________________________________________________________________ void AliITSTransientDigit::Read(istream *os){ //Standard input for this class AliITSdigitSDD::Read(os); } //______________________________________________________________________ ostream &operator<<(ostream &os,AliITSTransientDigit &source){ // Standard output streaming function. source.Print(&os); return os; } //______________________________________________________________________ istream &operator>>(istream &os,AliITSTransientDigit &source){ // Standard output streaming function. source.Read(&os); return os; } //______________________________________________________________________ ClassImp(AliITSdigitSSD) AliITSdigitSSD::AliITSdigitSSD():AliITSdigit(){ // default constructor Int_t i; for(i=0; iGetNTracks(); Int_t n = 0,i,j; Bool_t inlist = kFALSE; t.Reset(-1); // -1 array. for(i=0;iGetTrack(i) == -1) continue; inlist = kFALSE; for(j=0;jGetTrack(i) == t.At(j)) inlist = kTRUE; if(!inlist){ // add to end of list t.AddAt(this->GetTrack(i),n); if(n> fTracks[i]; for(i=0; i> fHits[i]; } //______________________________________________________________________ ostream &operator<<(ostream &os,AliITSdigitSSD &source){ // Standard output streaming function. source.Print(&os); return os; } //______________________________________________________________________ istream &operator>>(istream &os,AliITSdigitSSD &source){ // Standard output streaming function. source.Read(&os); return os; }