]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/comp/AliL3DataCompressor.h
Merged Bergen, mergen Cvetan TransformerRow and
[u/mrichter/AliRoot.git] / HLT / comp / AliL3DataCompressor.h
1 // @(#) $Id$
2
3 #ifndef AliL3_DataCompressor
4 #define AliL3_DataCompressor
5
6 #include "AliL3RootTypes.h"
7
8 class AliL3SpacePointData;
9 class AliL3Benchmark;
10 class AliL3TrackArray;
11 class AliL3Track;
12
13 #ifdef use_root
14 class TH2F;
15 class TFile;
16 #endif
17
18 struct TempCluster {
19   Float_t pad;
20   Float_t time;
21   Float_t sigmaY2;
22   Float_t sigmaZ2;
23   Int_t charge;
24   Int_t padrow;
25 };
26
27 class AliL3DataCompressor {
28   
29  private:
30   AliL3Benchmark *fBenchmark;    //!
31   AliL3TrackArray *fInputTracks; //!
32   AliL3SpacePointData *fClusters[36][6]; //!
33   ofstream *fCompRatioFile;      //!
34 #ifdef use_root
35   TFile *fOutputFile;            //!
36 #else
37   FILE *fOutputFile;
38 #endif
39   UInt_t fNcl[36][6];
40    
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();
49   
50  protected:
51   Char_t fPath[1024];   //!
52   Int_t fEvent;
53   Int_t fNusedClusters;
54   Int_t fNunusedClusters;
55   
56   Bool_t fWriteClusterShape;
57   Bool_t fKeepRemaining;
58   Bool_t fSinglePatch;
59   Bool_t fWriteIdsToFile;
60   Bool_t fNoCompression; //Just process the data through the chain, but do not compress. (input=output). Mostly for debugging...
61
62  public:
63   AliL3DataCompressor();
64   AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
65   virtual ~AliL3DataCompressor();
66   
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;}
75
76   Int_t GetNusedClusters() {return fNusedClusters;}
77   Int_t GetNunusedClusters() {return fNunusedClusters;}
78
79   ClassDef(AliL3DataCompressor,1) 
80
81 };
82
83 #endif