ROOT logo
#if !defined(__CINT__)
#include <Riostream.h>
#include <TStopwatch.h>
#include "AliTPCCompression.h"
#endif

/*
This macro compress and decompress an Altro format file using Huffman technique with 5 tables
*/

void AliTPCH5OptimizedTables(const char* fSource="AltroFormat.dat",const char* fDest="CompressedData.dat"){
  cout<<"Source file: "<<fSource<<" Output file: "<<fDest<<endl;
  static const Int_t NumTable=5;
  AliTPCCompression *util = new AliTPCCompression();
  TStopwatch timer;
  //verbose level can be: 0=silent 1=few messages 2=pedantic output
  util->SetVerbose(1);
  
  Int_t choice;
  do{
    cout<<"**** Chose the tables set **** "<<endl;
    cout<<"1==> Create tables from the input file "<<endl;
    cout<<"2==> Use external optimized tables (txt format)"<<endl;
    cout<<"3==> Time gap and Bunch length tables generated using formulas "<<endl;
    cout<<"Insert the corresponding number: ";
    cin>>choice;
    cout<<endl;
  }while((choice<1)||(choice>3));
  switch(choice){
  case 1:{
    //Tables are created
    util->CreateTables(fSource,NumTable);
    cout<<"Tables have been created"<<endl;
    break;
  }
  case 2:{
    util->CreateTablesFromTxtFiles(NumTable);
    break;
  }
  case 3:{
    Double_t beta,gamma=0;
    ULong_t  mul=0;    
    cout<<"Multiplicity (suggested 20000) ==> ";
    cin>>mul;
    cout<<"Gamma (suggested 4.77) ==> ";
    cin>>gamma;
    cout<<"Beta (suggested 0.37) ==> ";
    cin>>beta;
    util->CreateTables(fSource,NumTable);
    util->CreateTableFormula(gamma,mul,300,0);
    util->CreateTableFormula(beta,mul,445,1);
    break;
  }
  };
  
  //BE CAREFUL, the following method must be used only for debugging and
  //it is highly suggested to use it only for debugging files
  //reasonably small, because otherwise the size of the txt files can reach
  //quickly several MB wasting time and disk space.

  //util->ReadAltroFormat("File1.txt",fSource);
  
  //The source file is compressed 
  timer.Start();
  util->CompressDataOptTables(NumTable,fSource,fDest);
  timer.Stop();
  timer.Print();
  

  /*
  //The Compressed file is decompressed  
  timer.Start();
  util->DecompressDataOptTables(NumTable,fDest);
  timer.Stop();
  timer.Print();
  util->ReadAltroFormat("File2.txt","SourceDecompressed.dat");
  */
  delete util;
}
 AliTPCH5OptimizedTables.C:1
 AliTPCH5OptimizedTables.C:2
 AliTPCH5OptimizedTables.C:3
 AliTPCH5OptimizedTables.C:4
 AliTPCH5OptimizedTables.C:5
 AliTPCH5OptimizedTables.C:6
 AliTPCH5OptimizedTables.C:7
 AliTPCH5OptimizedTables.C:8
 AliTPCH5OptimizedTables.C:9
 AliTPCH5OptimizedTables.C:10
 AliTPCH5OptimizedTables.C:11
 AliTPCH5OptimizedTables.C:12
 AliTPCH5OptimizedTables.C:13
 AliTPCH5OptimizedTables.C:14
 AliTPCH5OptimizedTables.C:15
 AliTPCH5OptimizedTables.C:16
 AliTPCH5OptimizedTables.C:17
 AliTPCH5OptimizedTables.C:18
 AliTPCH5OptimizedTables.C:19
 AliTPCH5OptimizedTables.C:20
 AliTPCH5OptimizedTables.C:21
 AliTPCH5OptimizedTables.C:22
 AliTPCH5OptimizedTables.C:23
 AliTPCH5OptimizedTables.C:24
 AliTPCH5OptimizedTables.C:25
 AliTPCH5OptimizedTables.C:26
 AliTPCH5OptimizedTables.C:27
 AliTPCH5OptimizedTables.C:28
 AliTPCH5OptimizedTables.C:29
 AliTPCH5OptimizedTables.C:30
 AliTPCH5OptimizedTables.C:31
 AliTPCH5OptimizedTables.C:32
 AliTPCH5OptimizedTables.C:33
 AliTPCH5OptimizedTables.C:34
 AliTPCH5OptimizedTables.C:35
 AliTPCH5OptimizedTables.C:36
 AliTPCH5OptimizedTables.C:37
 AliTPCH5OptimizedTables.C:38
 AliTPCH5OptimizedTables.C:39
 AliTPCH5OptimizedTables.C:40
 AliTPCH5OptimizedTables.C:41
 AliTPCH5OptimizedTables.C:42
 AliTPCH5OptimizedTables.C:43
 AliTPCH5OptimizedTables.C:44
 AliTPCH5OptimizedTables.C:45
 AliTPCH5OptimizedTables.C:46
 AliTPCH5OptimizedTables.C:47
 AliTPCH5OptimizedTables.C:48
 AliTPCH5OptimizedTables.C:49
 AliTPCH5OptimizedTables.C:50
 AliTPCH5OptimizedTables.C:51
 AliTPCH5OptimizedTables.C:52
 AliTPCH5OptimizedTables.C:53
 AliTPCH5OptimizedTables.C:54
 AliTPCH5OptimizedTables.C:55
 AliTPCH5OptimizedTables.C:56
 AliTPCH5OptimizedTables.C:57
 AliTPCH5OptimizedTables.C:58
 AliTPCH5OptimizedTables.C:59
 AliTPCH5OptimizedTables.C:60
 AliTPCH5OptimizedTables.C:61
 AliTPCH5OptimizedTables.C:62
 AliTPCH5OptimizedTables.C:63
 AliTPCH5OptimizedTables.C:64
 AliTPCH5OptimizedTables.C:65
 AliTPCH5OptimizedTables.C:66
 AliTPCH5OptimizedTables.C:67
 AliTPCH5OptimizedTables.C:68
 AliTPCH5OptimizedTables.C:69
 AliTPCH5OptimizedTables.C:70
 AliTPCH5OptimizedTables.C:71
 AliTPCH5OptimizedTables.C:72
 AliTPCH5OptimizedTables.C:73
 AliTPCH5OptimizedTables.C:74
 AliTPCH5OptimizedTables.C:75
 AliTPCH5OptimizedTables.C:76
 AliTPCH5OptimizedTables.C:77
 AliTPCH5OptimizedTables.C:78
 AliTPCH5OptimizedTables.C:79
 AliTPCH5OptimizedTables.C:80