]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/comp/AliL3DataCompressor.h
Introduction of a fast version of the AliITSVertexerZ for HLT
[u/mrichter/AliRoot.git] / HLT / comp / AliL3DataCompressor.h
index ea011d56e2ec9927f4e1265c0addeaaff21b8292..a67bcf3b117a9a69f432c42a1aa1c908dd1f7972 100644 (file)
@@ -3,6 +3,8 @@
 #ifndef AliL3_DataCompressor
 #define AliL3_DataCompressor
 
+#include "AliL3RootTypes.h"
+
 class AliL3SpacePointData;
 class AliL3Benchmark;
 class AliL3TrackArray;
@@ -14,46 +16,57 @@ class TFile;
 #endif
 
 struct TempCluster {
-  Float_t pad;
-  Float_t time;
-  Float_t sigmaY2;
-  Float_t sigmaZ2;
-  Int_t charge;
-  Int_t padrow;
+  Float_t fPad; // Pad
+  Float_t fTime; // Time
+  Float_t fSigmaY2; // SigmaY2
+  Float_t fSigmaZ2; // SigmaZ2
+  Int_t fCharge; // Charge
+  Int_t fPadrow; // Pad row
 };
 
 class AliL3DataCompressor {
   
+ public:
+  AliL3DataCompressor();
+  AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
+  virtual ~AliL3DataCompressor();
+  
+  virtual void LoadData(Int_t event,Bool_t sp=kTRUE);
+  virtual void FillData(Int_t minhits,Bool_t expand);
+  virtual void WriteRemaining(Bool_t select);
+  void DetermineMinBits();
+  void CompressAndExpand(Bool_t arithmeticCoding=kTRUE);
+  void RestoreData(Bool_t remainingOnly=kFALSE);
+  void DoBench(Char_t *fname="benchmark");
+  void DoNotCompress() {fNoCompression=kTRUE;}
+
+  Int_t GetNusedClusters() const {return fNusedClusters;}
+  Int_t GetNunusedClusters() const {return fNunusedClusters;}
+
+ protected:
+  Char_t fPath[1024];   //! Path to the files
+  Int_t fEvent; // Current event
+  Int_t fNusedClusters; // Number of used clusters
+  Int_t fNunusedClusters; // Number of unused clusters
+  
+  Bool_t fWriteClusterShape; // Flag to write the cluster's shape
+  Bool_t fKeepRemaining; // Flag to keep the remaining clusters
+  Bool_t fSinglePatch; // Flag to run over single patch (?)
+  Bool_t fWriteIdsToFile; // Flag (not used?)
+  Bool_t fNoCompression; //Just process the data through the chain, but do not compress. (input=output). Mostly for debugging...
+
  private:
-  AliL3Benchmark *fBenchmark;    //!
-  AliL3TrackArray *fInputTracks; //!
-  AliL3SpacePointData *fClusters[36][6]; //!
-  ofstream *fCompRatioFile;      //!
+  AliL3Benchmark *fBenchmark;    //! Benchmark
+  AliL3TrackArray *fInputTracks; //! Array of input tracks
+  AliL3SpacePointData *fClusters[36][6]; //! Array of pointers to clusters
+  ofstream *fCompRatioFile;      //! Stream to write the ration between use and unused clusters
 #ifdef use_root
-  TFile *fOutputFile;            //!
+  TFile *fOutputFile;            //! Output file
 #else
-  FILE *fOutputFile;
+  FILE *fOutputFile; // Output file
 #endif
-  
-  UInt_t fNcl[36][6];
-  
-  static Int_t fNumPadBits;
-  static Int_t fNumTimeBits;
-  static Int_t fNumChargeBits;
-  static Int_t fNumPadShapeBits;
-  static Int_t fNumTimeShapeBits;
-  
-  static Float_t fPadResidualStep1;
-  static Float_t fPadResidualStep2;
-  static Float_t fPadResidualStep3;
-  static Float_t fTimeResidualStep1;
-  static Float_t fTimeResidualStep2;
-  static Float_t fTimeResidualStep3;
-  static Float_t fPadSigma2Step1;
-  static Float_t fPadSigma2Step2;
-  static Float_t fTimeSigma2Step;
-  static Int_t fClusterCharge;
-  
+  UInt_t fNcl[36][6]; // Array containing numbers of clusters
+   
   void SelectRemainingClusters();
   void ExpandTrackData(AliL3TrackArray *tracks);
   void ReadUncompressedData(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
@@ -63,48 +76,6 @@ class AliL3DataCompressor {
   void OpenOutputFile();
   void CloseOutputFile();
   
- protected:
-  Char_t fPath[1024];            //!
-  Int_t fEvent;
-  Int_t fNusedClusters;
-  Int_t fNunusedClusters;
-  
-  Bool_t fWriteClusterShape;
-  Bool_t fKeepRemaining;
-  Bool_t fSinglePatch;
-  Bool_t fWriteIdsToFile;
-  
- public:
-  AliL3DataCompressor();
-  AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
-  virtual ~AliL3DataCompressor();
-  
-  virtual void LoadData(Int_t event,Bool_t sp=kTRUE);
-  virtual void FillData(Int_t minhits,Bool_t expand);
-  virtual void WriteRemaining(Bool_t select);
-  void CompressAndExpand();
-  void RestoreData(Bool_t remaining_only=kFALSE);
-  void DoBench(Char_t *fname="benchmark");
-  
-  void SetBitNumbers(Int_t pad,Int_t time,Int_t charge,Int_t shapepad,Int_t shapetime);
-  void SetTransverseResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width=0.005);
-  void SetLongitudinalResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width=0.005);
-  
-  Int_t GetNusedClusters() {return fNusedClusters;}
-  Int_t GetNunusedClusters() {return fNunusedClusters;}
-
-  static const Int_t GetNPadBits() {return fNumPadBits;}
-  static const Int_t GetNTimeBits() {return fNumTimeBits;}
-  static const Int_t GetNChargeBits() {return fNumChargeBits;}
-  static const Int_t GetNPadShapeBits() {return fNumPadShapeBits;}
-  static const Int_t GetNTimeShapeBits() {return fNumTimeShapeBits;}
-  static const Float_t GetPadSigma2Step(Int_t patch) {return patch < 2 ? fPadSigma2Step1 : fPadSigma2Step2;}
-  static const Float_t GetTimeSigma2Step() {return fTimeSigma2Step;}
-  static const Int_t GetClusterCharge() {return fClusterCharge;}
-  static const Float_t GetPadResidualStep(Int_t row);
-  static const Float_t GetTimeResidualStep(Int_t row);
-
-
   ClassDef(AliL3DataCompressor,1) 
 
 };