-#include "AliITSdigitSSD.h"
+/**************************************************************************
+ * 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. *
+ **************************************************************************/
-ClassImp(AliITSdigitSSD);
+#include <AliITSdigitSSD.h>
+#include <TArrayI.h>
-AliITSdigitSSD::AliITSdigitSSD
- (Int_t *tracks, Int_t *digits, Int_t strNo, Int_t s, Bool_t p)
- :AliITSdigit(tracks,digits) {
-
- fSignal = s;
- fStripNumber = strNo;
- fSide = p;
+///////////////////////////////////////////////////////////////////
+// //
+// Class defining the digit object
+// for SSD
+// Inherits from AliITSdigit
+// //
+///////////////////////////////////////////////////////////////////
+
+ClassImp(AliITSdigitSSD)
+
+//______________________________________________________________________
+AliITSdigitSSD::AliITSdigitSSD():AliITSdigit(){
+ // default constructor
+ Int_t i;
+
+ for(i=0; i<fgkSize; i++) fTracks[i] = -3;
+ for(i=0; i<fgkSize; i++) fHits[i] = -1;
+}
+//__________________________________________________________________________
+AliITSdigitSSD::AliITSdigitSSD(const Int_t *digits):AliITSdigit(digits){
+ // Creates a real SSD digit object
+}
+//_____________________________________________________________________________
+AliITSdigitSSD::AliITSdigitSSD(const Int_t *digits,const Int_t *tracks,
+ const Int_t *hits):AliITSdigit(digits){
+ // Creates a simulated SSD digit object
+
+ for(Int_t i=0; i<fgkSize; i++) {
+ fTracks[i] = tracks[i];
+ fHits[i] = hits[i];
+ } // end for i
+}
+//______________________________________________________________________
+Int_t AliITSdigitSSD::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 AliITSdigitSSD::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];
+}
+//______________________________________________________________________
+void AliITSdigitSSD::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];
+}
+//______________________________________________________________________
+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;
+}