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; //!
43 static Int_t fNumPadBits;
44 static Int_t fNumTimeBits;
45 static Int_t fNumChargeBits;
46 static Int_t fNumPadShapeBits;
47 static Int_t fNumTimeShapeBits;
49 static Float_t fPadResidualStep1;
50 static Float_t fPadResidualStep2;
51 static Float_t fPadResidualStep3;
52 static Float_t fTimeResidualStep1;
53 static Float_t fTimeResidualStep2;
54 static Float_t fTimeResidualStep3;
55 static Float_t fPadSigma2Step1;
56 static Float_t fPadSigma2Step2;
57 static Float_t fTimeSigma2Step;
58 static Int_t fClusterCharge;
61 void SelectRemainingClusters();
62 void ExpandTrackData(AliL3TrackArray *tracks);
63 void ReadUncompressedData(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
64 void ReadRemaining(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
65 void QSort(TempCluster **a, Int_t first, Int_t last);
66 Int_t Compare(TempCluster *a,TempCluster *b);
67 void OpenOutputFile();
68 void CloseOutputFile();
71 Char_t fPath[1024]; //!
74 Int_t fNunusedClusters;
76 Bool_t fWriteClusterShape;
77 Bool_t fKeepRemaining;
79 Bool_t fWriteIdsToFile;
82 AliL3DataCompressor();
83 AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
84 virtual ~AliL3DataCompressor();
86 virtual void LoadData(Int_t event,Bool_t sp=kTRUE);
87 virtual void FillData(Int_t minhits,Bool_t expand);
88 virtual void WriteRemaining(Bool_t select);
89 void DetermineMinBits();
90 void CompressAndExpand();
91 void RestoreData(Bool_t remaining_only=kFALSE);
92 void DoBench(Char_t *fname="benchmark");
95 void SetBitNumbers(Int_t pad,Int_t time,Int_t charge,Int_t shapepad,Int_t shapetime);
96 void SetTransverseResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width=0.005);
97 void SetLongitudinalResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width=0.005);
99 Int_t GetNusedClusters() {return fNusedClusters;}
100 Int_t GetNunusedClusters() {return fNunusedClusters;}
103 static const Int_t GetNPadBits() {return fNumPadBits;}
104 static const Int_t GetNTimeBits() {return fNumTimeBits;}
105 static const Int_t GetNChargeBits() {return fNumChargeBits;}
106 static const Int_t GetNPadShapeBits() {return fNumPadShapeBits;}
107 static const Int_t GetNTimeShapeBits() {return fNumTimeShapeBits;}
108 static const Float_t GetPadSigma2Step(Int_t patch) {return patch < 2 ? fPadSigma2Step1 : fPadSigma2Step2;}
109 static const Float_t GetTimeSigma2Step() {return fTimeSigma2Step;}
110 static const Int_t GetClusterCharge() {return fClusterCharge;}
111 static const Float_t GetPadResidualStep(Int_t row);
112 static const Float_t GetTimeResidualStep(Int_t row);
115 ClassDef(AliL3DataCompressor,1)