4 #include "AliL3RootTypes.h"
5 #include "AliL3Models.h"
6 #include "AliL3DigitData.h"
13 AliL3TrackArray *fTracks; //!
14 AliL3RandomDigitData *fDigits; //!
15 AliL3RandomDigitData **fDPt; //!
29 void CreateDigitArray(Int_t maxnumber);
30 void CreateDigits(Int_t row,Int_t npads,Float_t pad,Float_t time,Int_t charge,Float_t ywidth,Float_t zwidth);
31 void QSort(AliL3RandomDigitData **a, Int_t first, Int_t last);
32 Int_t ComparePoints(Int_t row,UShort_t pad,UShort_t time);
33 Int_t CompareDigits(AliL3RandomDigitData *a,AliL3RandomDigitData *b);
37 AliL3Compress(Int_t slice,Int_t patch,Char_t *path="./",Bool_t writeshape=kFALSE);
38 virtual ~AliL3Compress();
40 void SetBitNumbers(Int_t pad,Int_t time,Int_t charge,Int_t shape);
41 void WriteFile(AliL3TrackArray *tracks);
42 void ReadFile(Char_t which);
45 void RestoreData(Char_t which='u');
46 void WriteRestoredData();
47 void WriteRootFile(Char_t *newrootfile);
48 void PrintDigits(Int_t padrow=-1);
49 void PrintCompRatio();
51 AliL3TrackArray *GetTracks() {return fTracks;}
53 ClassDef(AliL3Compress,1)
57 inline Int_t AliL3Compress::ComparePoints(Int_t row,UShort_t pad,UShort_t time)
59 if(fNUsed >= fNDigits) return 0;
61 if(fDPt[fNUsed]->fRow != row) return 0;
64 if(fDPt[fNUsed]->fPad < pad) return 1;
65 if(fDPt[fNUsed]->fPad == pad && fDPt[fNUsed]->fTime < time) return 1;
67 //if(fDPt[fNUsed]->fPad == pad && fDPt[fNUsed]->fTime == time) return 2;
73 inline Int_t AliL3Compress::CompareDigits(AliL3RandomDigitData *a,AliL3RandomDigitData *b)
75 if(a->fRow < b->fRow) return -1;
77 if(a->fPad==b->fPad && a->fTime == b->fTime && a->fRow == b->fRow) return 0;
79 if(a->fPad<b->fPad && a->fRow == b->fRow) return -1;
80 if(a->fPad==b->fPad && a->fTime<b->fTime && a->fRow == b->fRow) return -1;