3 #ifndef AliL3_DataCompressor
4 #define AliL3_DataCompressor
6 class AliL3SpacePointData;
25 class AliL3DataCompressor {
28 AliL3Benchmark *fBenchmark; //!
29 AliL3TrackArray *fInputTracks; //!
30 AliL3SpacePointData *fClusters[36][6]; //!
31 ofstream *fCompRatioFile; //!
33 TFile *fOutputFile; //!
40 static Int_t fNumPadBits;
41 static Int_t fNumTimeBits;
42 static Int_t fNumChargeBits;
43 static Int_t fNumShapeBits;
45 static Float_t fXYResidualStep1;
46 static Float_t fXYResidualStep2;
47 static Float_t fXYResidualStep3;
48 static Float_t fZResidualStep1;
49 static Float_t fZResidualStep2;
50 static Float_t fZResidualStep3;
51 static Float_t fXYWidthStep;
52 static Float_t fZWidthStep;
53 static Int_t fClusterCharge;
55 void SelectRemainingClusters();
56 void ExpandTrackData(AliL3TrackArray *tracks);
57 void ReadUncompressedData(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
58 void ReadRemaining(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
59 void QSort(TempCluster **a, Int_t first, Int_t last);
60 Int_t Compare(TempCluster *a,TempCluster *b);
61 void OpenOutputFile();
62 void CloseOutputFile();
65 Char_t fPath[1024]; //!
68 Int_t fNunusedClusters;
70 Bool_t fWriteClusterShape;
71 Bool_t fKeepRemaining;
73 Bool_t fWriteIdsToFile;
76 AliL3DataCompressor();
77 AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
78 virtual ~AliL3DataCompressor();
80 virtual void LoadData(Int_t event,Bool_t sp=kTRUE);
81 virtual void FillData(Int_t minhits,Bool_t expand);
82 virtual void WriteRemaining(Bool_t select);
83 void CompressAndExpand();
84 void RestoreData(Bool_t remaining_only=kFALSE);
85 void DoBench(Char_t *fname="benchmark");
87 void SetBitNumbers(Int_t pad,Int_t time,Int_t charge,Int_t shape);
88 void SetTransverseResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width=0.005);
89 void SetLongitudinalResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width=0.005);
91 Int_t GetNusedClusters() {return fNusedClusters;}
92 Int_t GetNunusedClusters() {return fNunusedClusters;}
94 static const Int_t GetNPadBits() {return fNumPadBits;}
95 static const Int_t GetNTimeBits() {return fNumTimeBits;}
96 static const Int_t GetNChargeBits() {return fNumChargeBits;}
97 static const Int_t GetNShapeBits() {return fNumShapeBits;}
98 static const Float_t GetXYWidthStep() {return fXYWidthStep;}
99 static const Float_t GetZWidthStep() {return fZWidthStep;}
100 static const Int_t GetClusterCharge() {return fClusterCharge;}
101 static const Float_t GetXYResidualStep(Int_t row);
102 static const Float_t GetZResidualStep(Int_t row);
105 ClassDef(AliL3DataCompressor,1)