3 #ifndef AliL3_DataCompressor
4 #define AliL3_DataCompressor
6 #include "AliL3RootTypes.h"
8 class AliL3SpacePointData;
10 class AliL3TrackArray;
27 class AliL3DataCompressor {
30 AliL3Benchmark *fBenchmark; //!
31 AliL3TrackArray *fInputTracks; //!
32 AliL3SpacePointData *fClusters[36][6]; //!
33 ofstream *fCompRatioFile; //!
35 TFile *fOutputFile; //!
41 void SelectRemainingClusters();
42 void ExpandTrackData(AliL3TrackArray *tracks);
43 void ReadUncompressedData(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
44 void ReadRemaining(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
45 void QSort(TempCluster **a, Int_t first, Int_t last);
46 Int_t Compare(TempCluster *a,TempCluster *b);
47 void OpenOutputFile();
48 void CloseOutputFile();
51 Char_t fPath[1024]; //!
54 Int_t fNunusedClusters;
56 Bool_t fWriteClusterShape;
57 Bool_t fKeepRemaining;
59 Bool_t fWriteIdsToFile;
60 Bool_t fNoCompression; //Just process the data through the chain, but do not compress. (input=output). Mostly for debugging...
63 AliL3DataCompressor();
64 AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
65 virtual ~AliL3DataCompressor();
67 virtual void LoadData(Int_t event,Bool_t sp=kTRUE);
68 virtual void FillData(Int_t minhits,Bool_t expand);
69 virtual void WriteRemaining(Bool_t select);
70 void DetermineMinBits();
71 void CompressAndExpand(Bool_t arithmetic_coding=kTRUE);
72 void RestoreData(Bool_t remaining_only=kFALSE);
73 void DoBench(Char_t *fname="benchmark");
74 void DoNotCompress() {fNoCompression=kTRUE;}
76 Int_t GetNusedClusters() {return fNusedClusters;}
77 Int_t GetNunusedClusters() {return fNunusedClusters;}
79 ClassDef(AliL3DataCompressor,1)