Changes due to the coding conventions
[u/mrichter/AliRoot.git] / TPC / AliTPCDDLRawData.cxx
index 5c16b16..db52c72 100644 (file)
  **************************************************************************/
 /* $Id$ */
 
+
 //This class conteins all the methods to create raw data 
 //as par a given DDL.
 //It produces DDL with both compressed and uncompressed format.
 //For compression we use the optimized table wich needs 
 //to be provided.
 
-
-#include "TObjArray.h"
-#include "Riostream.h"
+#include <TObjArray.h>
+#include <Riostream.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include "AliTPCCompression.h"
 ClassImp(AliTPCDDLRawData)
 ////////////////////////////////////////////////////////////////////////////////////////
 
-AliTPCDDLRawData::AliTPCDDLRawData(const AliTPCDDLRawData &source){
+AliTPCDDLRawData::AliTPCDDLRawData(const AliTPCDDLRawData &source):
+  TObject(source)
+{
   // Copy Constructor
+  fVerbose=source.fVerbose;
   return;
 }
 
 AliTPCDDLRawData& AliTPCDDLRawData::operator=(const AliTPCDDLRawData &source){
   //Assigment operator
+  fVerbose=source.fVerbose;
   return *this;
 }
 
 
 ////////////////////////////////////////////////////////////////////////////
-void AliTPCDDLRawData::RawData(Int_t LDCsNumber){
+void AliTPCDDLRawData::RawData(Int_t LDCsNumber,Int_t EventNumber){
   //Raw data slides generation
   //Number of DDL=2*36+4*36=216
   //2 DDL for each inner sector
@@ -73,11 +77,11 @@ void AliTPCDDLRawData::RawData(Int_t LDCsNumber){
   //AliTPCBuffer160 is used in write mode to generate AltroFormat.dat file
   Int_t sliceNumber=1;
   char  filename[15];
-  sprintf(filename,"TPCslice%d",sliceNumber); 
+  sprintf(filename,"Ev%dTPCslice%d",EventNumber,sliceNumber); 
   cout<<"   Creating "<<filename<<endl;
   AliTPCBuffer160 *buffer=new AliTPCBuffer160(filename,1);
 
-  ULong_t count=0;
+  UInt_t count=0;
   Int_t pSecNumber=-1;  //Previous Sector number
   Int_t pRowNumber=-1;  //Previous Row number  
   Int_t pPadNumber=-1;  //Previous Pad number
@@ -86,7 +90,7 @@ void AliTPCDDLRawData::RawData(Int_t LDCsNumber){
   Int_t bunchLength=0;
   Int_t countDDL=0;
   Int_t nwords=0;
-  ULong_t numPackets=0;
+  UInt_t numPackets=0;
   while (f.read((char*)(&data),sizeof(data))){
     count++;
     if (pPadNumber==-1){
@@ -127,7 +131,7 @@ void AliTPCDDLRawData::RawData(Int_t LDCsNumber){
              //cout<<"Mini header for DDL:"<<PSecNumber<<" Sub-sec:"<<PSubSector<<endl;
              delete buffer;
              sliceNumber++;
-             sprintf(filename,"TPCslice%d",sliceNumber);
+             sprintf(filename,"Ev%dTPCslice%d",EventNumber,sliceNumber);
              cout<<"   Creating "<<filename<<endl;
              buffer=new AliTPCBuffer160(filename,1);
              buffer->WriteMiniHeader(0,data.Sec,data.SubSec,0,0);//Dummy;
@@ -169,31 +173,32 @@ void AliTPCDDLRawData::RawData(Int_t LDCsNumber){
 ////////////////////////////////////////////////////////////////////////////
 
 
-Int_t AliTPCDDLRawData::RawDataCompDecompress(Int_t LDCsNumber,Int_t Comp){
+Int_t AliTPCDDLRawData::RawDataCompDecompress(Int_t LDCsNumber,Int_t EventNumber,Int_t Comp){
   //This method is used to compress and decompress the slides
   static const Int_t kNumTables=5;
   char filename[20];
   char dest[20];
   fstream f;
-  ULong_t size=0;
+  UInt_t size=0;
   //Int_t MagicWord,DDLNumber,SecNumber,SubSector,Detector;
   Int_t flag=0;
   for(Int_t i=1;i<=LDCsNumber;i++){
     if(!Comp){
-      sprintf(filename,"TPCslice%d",i);
-      sprintf(dest,"TPCslice%d.comp",i);
+      sprintf(filename,"Ev%dTPCslice%d",EventNumber,i);
+      sprintf(dest,"Ev%dTPCslice%d.comp",EventNumber,i);
     }
     else{
-      sprintf(filename,"TPCslice%d.comp",i);
-      sprintf(dest,"TPCslice%d.decomp",i);
+      sprintf(filename,"Ev%dTPCslice%d.comp",EventNumber,i);
+      sprintf(dest,"Ev%dTPCslice%d.decomp",EventNumber,i);
     }
 #ifndef __DECCXX
     f.open(filename,ios::binary|ios::in);
 #else
     f.open(filename,ios::in);
 #endif
-    if(!f){cout<<"File doesn't exist \n";exit(1);}
-    cout<<filename<<"  "<<dest<<endl;
+    if(!f){cout<<"BE CAREFUL!! There isn't enough data to generate "<<LDCsNumber<<" slices"<<endl;break;}
+    if (fVerbose)
+      cout<<filename<<"  "<<dest<<endl;
     ofstream fdest;
 #ifndef __DECCXX
     fdest.open(dest,ios::binary);
@@ -203,11 +208,12 @@ Int_t AliTPCDDLRawData::RawDataCompDecompress(Int_t LDCsNumber,Int_t Comp){
     //loop over the DDL block 
     //Each block contains a Mini Header followed by raw data (ALTRO FORMAT)
     //The number of block is ceil(216/LDCsNumber)
-    ULong_t miniHeader[3];
+    UInt_t miniHeader[3];
     //here the Mini Header is read
-    while( (f.read((char*)(miniHeader),sizeof(ULong_t)*3)) ){
+    while( (f.read((char*)(miniHeader),sizeof(UInt_t)*3)) ){
       size=miniHeader[0];
-      //Int_t dim=sizeof(ULong_t)+sizeof(Int_t)*5;
+      // cout<<"Data size:"<<size<<endl;
+      //Int_t dim=sizeof(UInt_t)+sizeof(Int_t)*5;
       //cout<<" Sec "<<SecNumber<<" SubSector "<<SubSector<<" size "<<size<<endl;
       //open the temporay File
       ofstream fo;
@@ -218,15 +224,17 @@ Int_t AliTPCDDLRawData::RawDataCompDecompress(Int_t LDCsNumber,Int_t Comp){
       fo.open(temp);
 #endif
       Int_t car=0;
-      for(ULong_t j=0;j<size;j++){
+      for(UInt_t j=0;j<size;j++){
        f.read((char*)(&car),1);
        fo.write((char*)(&car),1);
       }//end for
       fo.close();
       //The temp file is compressed or decompressed
       AliTPCCompression *util = new AliTPCCompression();
-      if(!Comp)
+      util->SetVerbose(0);
+      if(!Comp){
        util->CompressDataOptTables(kNumTables,temp,"TempCompDecomp");
+      }
       else
        util->DecompressDataOptTables(kNumTables,temp,"TempCompDecomp");
       delete util;
@@ -247,14 +255,13 @@ Int_t AliTPCDDLRawData::RawDataCompDecompress(Int_t LDCsNumber,Int_t Comp){
        flag=1;
       else
        flag=0;
-      ULong_t aux=0xFFFF;
-      aux<<=16;
+      UInt_t aux=0x0;
+      flag<<=8;
       aux|=flag;
-      aux|=0xFF;
-      miniHeader[2]=miniHeader[2]&aux;
-      fdest.write((char*)(miniHeader),sizeof(ULong_t)*3);
+      miniHeader[2]=miniHeader[2]|aux;
+      fdest.write((char*)(miniHeader),sizeof(UInt_t)*3);
       //The compressem temp file is copied into the output file fdest
-      for(ULong_t j=0;j<size;j++){
+      for(UInt_t j=0;j<size;j++){
        fi.read((char*)(&car),1);
        fdest.write((char*)(&car),1);
       }//end for
@@ -272,7 +279,7 @@ Int_t AliTPCDDLRawData::RawDataCompDecompress(Int_t LDCsNumber,Int_t Comp){
 /////////////////////////////////////////////////////////////////////////////////
 void AliTPCDDLRawData::RawDataAltro()const{
   //This method is used to build the Altro format from AliTPCDDL.dat
-  //It is used to debug the code and create the tables used in the compresseion phase
+  //It is used to debug the code and creates the tables used in the compresseion phase
   Int_t offset=1;
   ifstream f;
 #ifndef __DECCXX
@@ -296,14 +303,14 @@ void AliTPCDDLRawData::RawDataAltro()const{
   cout<<"   Creating "<<filename<<endl;
   AliTPCBuffer160 *buffer=new AliTPCBuffer160(filename,1);
 
-  ULong_t count=0;
+  UInt_t count=0;
   Int_t pSecNumber=-1;  //Previous Sector number
   Int_t pRowNumber=-1;  //Previous Row number  
   Int_t pPadNumber=-1;  //Previous Pad number
   Int_t pTimeBin=-1;    //Previous Time-Bin
   Int_t bunchLength=0;
   Int_t nwords=0;
-  ULong_t numPackets=0;
+  UInt_t numPackets=0;
   while (f.read((char*)(&data),sizeof(data))){
     count++;
     if (pPadNumber==-1){
@@ -354,7 +361,7 @@ void AliTPCDDLRawData::RawDataAltro()const{
 }
 
 /////////////////////////////////////////////////////////////////////////
-void AliTPCDDLRawData::RawDataAltroDecode(Int_t LDCsNumber,Int_t Comp){
+void AliTPCDDLRawData::RawDataAltroDecode(Int_t LDCsNumber,Int_t EventNumber,Int_t Comp){
   //This method merges the slides in only one file removing at the same 
   //time all the mini headers. The file so obtained must be Altro format
   //complaiant.
@@ -373,29 +380,31 @@ void AliTPCDDLRawData::RawDataAltroDecode(Int_t LDCsNumber,Int_t Comp){
 #else
   fdest.open(dest);
 #endif
-  ULong_t size=0;
+  UInt_t size=0;
   //Int_t MagicWord,DDLNumber,SecNumber,SubSector,Detector,flag=0;
   for(Int_t i=1;i<=LDCsNumber;i++){
-    if(!Comp)
-      sprintf(filename,"TPCslice%d",i);  
-    else
-      sprintf(filename,"TPCslice%d.decomp",i);  
+    if(!Comp){
+      sprintf(filename,"Ev%dTPCslice%d",EventNumber,i);  
+    }
+    else{
+      sprintf(filename,"Ev%dTPCslice%d.decomp",EventNumber,i);  
+    }
 #ifndef __DECCXX
     f.open(filename,ios::binary|ios::in);
 #else
     f.open(filename,ios::in);
 #endif
-    if(!f){cout<<"The file doesn't exist"<<endl;exit(1);}
+    if(!f){cout<<"BE CAREFUL!! There isn't enough data to generate "<<LDCsNumber<<" slices"<<endl;break;}
     //loop over the DDL block 
     //Each block contains a Mini Header followed by raw data (ALTRO FORMAT)
     //The number of block is ceil(216/LDCsNumber)
-    ULong_t miniHeader[3];
+    UInt_t miniHeader[3];
     //here the Mini Header is read
-    while( (f.read((char*)(miniHeader),sizeof(ULong_t)*3)) ){
-      //cout<<"Mini header dimension "<<miniHeader[0]<<endl;
+    //cout<<filename<<endl;
+    while( (f.read((char*)(miniHeader),sizeof(UInt_t)*3)) ){
       Int_t car=0;
       size=miniHeader[0];
-      for(ULong_t j=0;j<size;j++){
+      for(UInt_t j=0;j<size;j++){
        f.read((char*)(&car),1);
        fdest.write((char*)(&car),1);
       }//end for