]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/comp/AliL3DataCompressor.h
Moved to the latest version of the HLT code in Bergen.
[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   
40   UInt_t fNcl[36][6];
41   
42   /*
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;
48   
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;
59   */
60  
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();
69   
70  protected:
71   Char_t fPath[1024];   //!
72   Int_t fEvent;
73   Int_t fNusedClusters;
74   Int_t fNunusedClusters;
75   
76   Bool_t fWriteClusterShape;
77   Bool_t fKeepRemaining;
78   Bool_t fSinglePatch;
79   Bool_t fWriteIdsToFile;
80   
81  public:
82   AliL3DataCompressor();
83   AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
84   virtual ~AliL3DataCompressor();
85   
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");
93   
94   /*
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);
98   */
99   Int_t GetNusedClusters() {return fNusedClusters;}
100   Int_t GetNunusedClusters() {return fNunusedClusters;}
101
102   /*
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);
113   */
114
115   ClassDef(AliL3DataCompressor,1) 
116
117 };
118
119 #endif