]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/src/AliL3MemHandler.cxx
Minor changes and cosmetics according to Anders.
[u/mrichter/AliRoot.git] / HLT / src / AliL3MemHandler.cxx
index e8b152f139513448507cc59a5a145d6df25a8b43..732a951a5aa19f3c156d3838d3bcc261164566cb 100644 (file)
@@ -1,8 +1,9 @@
-/* $Id$
-// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
-// -- Copyright &copy Uli 
+// $Id$
+
+// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>, Anders Vestbo <mailto:vestbo$fi.uib.no>
+//*-- Copyright &copy Uli 
 // changes done by Constantin Loizides <mailto:loizides@ikf.physik.uni-frankfurt.de>
-*/
+
 
 #include <math.h>
 #include <time.h>
 #include <stdio.h>
 #include <string.h>
 
-#include "AliL3MemHandler.h"
-#include "AliL3Transform.h"
 #include "AliL3Logging.h"
-
-#include "AliL3DigitData.h"
+#include "AliL3Transform.h"
 #include "AliL3TrackSegmentData.h"
 #include "AliL3SpacePointData.h"
 #include "AliL3TrackArray.h"
+#include "AliL3MemHandler.h"
 
-/** \class AliL3MemHandler
-// _____________________________________________________________
+/** \class AliL3MemHandler 
+//<pre>
+//_____________________________________________________________
 // AliL3MemHandler
 //
-// The L3 Binary File handler 
+// The HLT Binary File handler 
 //
-//
-//  This class does all the memory I/O handling on raw binary files.
-//  For the moment the compressed binary files are run-length encoded, using
-//  10 bit digits.
+//  This class does all the memory I/O handling of HLT binary files.
 //  
 //  Examples:
-//  
+//  ---------
+//
 //  1) Reading a binary file:
 //  
 //  AliL3MemHandler file;
 //  file.SetBinaryInput(filename);
 //  
-//  UInt_t ndigits;
-//  AliL3DigitRowData *data = file.CompBinary2Memory(ndigits);
+//  UInt_t nrowss;
+//  AliL3DigitRowData *data = file.CompBinary2Memory(nrowss);
 //  
-//  for(int i=0; i<NumberOfRowsInPatch; i++) 
+//  for(int i=0; i<nrows; i++) 
 //    {
 //    
 //    AliL3DigitData *dataPt = (AliL3DigitData*)data->fDigitData;
 //  newfile.SetBinaryOutput(newfilename);
 //  newfile.Memory2CompBinary((UInt_t)NumberOfRowsInPatch,(AliL3DigitRowData*)data);
 //  newfile.CloseBinaryOutput();
-*/
-
+//
+//
+// Compressed file format:
+// -----------------------
+//
+// The data is RLE encoded and currently using _10_ bit range for the ADC-values.
+//</pre> 
+*/  
+  
 ClassImp(AliL3MemHandler)
   
 AliL3MemHandler::AliL3MemHandler()
@@ -81,17 +86,13 @@ AliL3MemHandler::AliL3MemHandler()
   fInBinary = 0;
   fOutBinary = 0;
   fNRandom = 0;
-  Int_t r[2]={0,0};
-  Init(0,0,r);
+  Init(0,0);
   IsRandom = kFALSE;
   fDigits = 0;
   fDPt =0;
   fNGenerate = 0;
   fNUsed = 0;
   fNDigits = 0;
-  
-  Int_t row[2] = {0,175};
-  Init(0,0,row);
   ResetROI();
 }
 
@@ -104,6 +105,19 @@ AliL3MemHandler::~AliL3MemHandler()
   if(fDPt) delete [] fDPt;
 }
 
+void AliL3MemHandler::Init(Int_t s,Int_t p, Int_t *r=0)
+{
+  fSlice=s;fPatch=p;
+  if(r) {
+    fRowMin=r[0];
+    fRowMax=r[1];
+  }else{
+     fRowMin=AliL3Transform::GetFirstRow(p);
+     fRowMax=AliL3Transform::GetLastRow(p); 
+  }
+  ResetROI();
+}
+
 void AliL3MemHandler::ResetROI()
 {
   //Resets the Look-up table for Region of Interest mode.
@@ -115,7 +129,6 @@ void AliL3MemHandler::ResetROI()
     }
 }
 
-
 void AliL3MemHandler::SetROI(Float_t *eta,Int_t *slice)
 {
   // Init the Look-up table for the Region of Interest mode.
@@ -146,11 +159,11 @@ void AliL3MemHandler::SetROI(Float_t *eta,Int_t *slice)
       
       Float_t thetamax = 2*atan(exp(-1.*eta[1]));
       
-      xyz[0] = fTransformer->Row2X(i);
+      xyz[0] = AliL3Transform::Row2X(i);
       xyz[1]=0;
       xyz[2] = xyz[0]/tan(thetamax);
-      fTransformer->Slice2Sector(fSlice,i,sector,row);
-      fTransformer->Local2Raw(xyz,sector,row);
+      AliL3Transform::Slice2Sector(fSlice,i,sector,row);
+      AliL3Transform::Local2Raw(xyz,sector,row);
       
       fEtaMinTimeBin[i] = (Int_t)xyz[2];
       
@@ -159,11 +172,11 @@ void AliL3MemHandler::SetROI(Float_t *eta,Int_t *slice)
       else
        {
          Float_t thetamin = 2*atan(exp(-1.*eta[0]));
-         xyz[0] = fTransformer->Row2X(i);
-         xyz[1] = fTransformer->GetMaxY(i);
+         xyz[0] = AliL3Transform::Row2X(i);
+         xyz[1] = AliL3Transform::GetMaxY(i);
          Float_t radii = sqrt(pow(xyz[0],2) + pow(xyz[1],2));
          xyz[2] = radii/tan(thetamin);
-         fTransformer->Local2Raw(xyz,sector,row);
+         AliL3Transform::Local2Raw(xyz,sector,row);
          fEtaMaxTimeBin[i] = (Int_t)xyz[2];
        }
     }
@@ -212,7 +225,7 @@ void AliL3MemHandler::CloseBinaryInput()
 Bool_t AliL3MemHandler::SetBinaryOutput(char *name)
 {
   //Set the binary output file.
-  fOutBinary = fopen(name,"w");
+    fOutBinary = fopen(name,"w");
   if(!fOutBinary){
     LOG(AliL3Log::kWarning,"AliL3MemHandler::SetBinaryOutput","File Open")
       <<"Pointer to File = 0x0 "<<ENDLOG;
@@ -376,7 +389,7 @@ UInt_t AliL3MemHandler::GetRandomSize()
 {
   Int_t nrandom = 0;
   for(Int_t r=fRowMin;r<=fRowMax;r++){
-    Int_t npad=fTransformer->GetNPads(r);
+    Int_t npad=AliL3Transform::GetNPads(r);
     nrandom  += Int_t (fNGenerate * ((Double_t) npad/141.));
   }
   return 9 * nrandom * sizeof(AliL3DigitData);
@@ -389,10 +402,10 @@ void AliL3MemHandler::Generate(Int_t row)
   if(!IsRandom) return;
   ResetRandom();
   fNDigits = 0;
-  Int_t npad=fTransformer->GetNPads(row);
+  Int_t npad=AliL3Transform::GetNPads(row);
   Int_t ntime = fEtaMaxTimeBin[row] - fEtaMinTimeBin[row];
   Int_t nrandom  = Int_t (fNGenerate * ((Double_t) npad/141.) * 
-                         (Double_t) ntime/(Double_t) fTransformer->GetNTimeBins() );
+                         (Double_t) ntime/(Double_t) AliL3Transform::GetNTimeBins() );
   
   for(Int_t n=0;n<nrandom;n++){
     Int_t pad = (int)((float)rand()/RAND_MAX*npad);
@@ -420,8 +433,8 @@ void AliL3MemHandler::DigitizePoint(Int_t row, Int_t pad,
       Int_t dpad  = j + pad;
       Int_t dtime = k + time;
       
-      if(dpad<0||dpad>=fTransformer->GetNPads(row))  continue;
-      if(dtime<0||dtime>=fTransformer->GetNTimeBins()) continue;
+      if(dpad<0||dpad>=AliL3Transform::GetNPads(row))  continue;
+      if(dtime<0||dtime>=AliL3Transform::GetNTimeBins()) continue;
       
       fDigits[fNDigits].fCharge = dcharge;
       fDigits[fNDigits].fRow = row;
@@ -973,8 +986,7 @@ Bool_t AliL3MemHandler::Memory2Binary(UInt_t npoint,AliL3SpacePointData *data)
   return kTRUE;
 }
 
-Bool_t AliL3MemHandler::Transform(UInt_t npoint,AliL3SpacePointData *data,
-                                 Int_t slice, AliL3Transform* trans)
+Bool_t AliL3MemHandler::Transform(UInt_t npoint,AliL3SpacePointData *data,Int_t slice)
 {
   //Transform the space points in data, to global coordinates in slice.
   if(!data){
@@ -982,17 +994,13 @@ Bool_t AliL3MemHandler::Transform(UInt_t npoint,AliL3SpacePointData *data,
     <<"Pointer to AliL3SpacePointData = 0x0 "<<ENDLOG;
     return kFALSE;
   }
-  if(!trans){
-    LOG(AliL3Log::kWarning,"AliL3MemHandler::Transform","Object")
-    <<"Pointer to AliL3Transform = 0x0 "<<ENDLOG;
-    return kFALSE;
-  }
+  
   for(UInt_t i=0;i<npoint;i++){
     Float_t xyz[3];
     xyz[0] = data[i].fX;
     xyz[1] = data[i].fY;
     xyz[2] = data[i].fZ;
-    trans->Local2Global(xyz,slice);
+    AliL3Transform::Local2Global(xyz,slice);
     data[i].fX = xyz[0];
     data[i].fY = xyz[1];
     data[i].fZ = xyz[2];
@@ -1175,6 +1183,7 @@ Bool_t AliL3MemHandler::TrackArray2Binary(AliL3TrackArray *array)
     return kFALSE;
   }
   AliL3TrackSegmentData *data = (AliL3TrackSegmentData *)Allocate(array);
+
   UInt_t ntrack;
   TrackArray2Memory(ntrack,data,array);
   Memory2Binary(ntrack,data);
@@ -1217,6 +1226,7 @@ Bool_t AliL3MemHandler::TrackArray2Memory(UInt_t & ntrack,AliL3TrackSegmentData
     <<"Pointer to AliL3TrackArray = 0x0 "<<ENDLOG;
     return kFALSE;
   }
+
   array->WriteTracks(ntrack,data);
   return kTRUE;
 }
@@ -1239,11 +1249,10 @@ Bool_t AliL3MemHandler::Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *d
   return kTRUE;
 }
 
-Bool_t AliL3MemHandler::Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array,Int_t slice,
-                                         AliL3Transform* trans)
+Bool_t AliL3MemHandler::Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array,Int_t slice)
 {
   //Fill the tracks in data into trackarray, and rotate the tracks to global coordinates.
-  
+    
   if(!data){
     LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2TrackArray","Memory")
     <<"Pointer to AliL3TrackSegmentData = 0x0 "<<ENDLOG;
@@ -1254,12 +1263,7 @@ Bool_t AliL3MemHandler::Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *d
     <<"Pointer to AliL3TrackArray = 0x0 "<<ENDLOG;
     return kFALSE;
   }
-  if(!trans){
-    LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2TrackArray","Object")
-    <<"Pointer to AliL3Transform = 0x0 "<<ENDLOG;
-    return kFALSE;
-  }
-  array->FillTracks(ntrack,data,slice,trans);
+  array->FillTracks(ntrack,data,slice);
   return kTRUE;
 }