]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCMemHandler.cxx
Remove compilser warnings
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCMemHandler.cxx
index 4a4d8b5925c646669aafc6aca2f4653acb3a3c1e..8ffa9c0bd6bdceac166721bb65758b3f002552a4 100644 (file)
@@ -1,68 +1,33 @@
 // @(#) $Id$
-// Original: AliL3MemHandler.cxx,v 1.52 2005/06/14 10:55:21 cvetan 
-
-// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>, Anders Vestbo <mailto:vestbo$fi.uib.no>, Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
-//*-- Copyright &copy ALICE HLT Group 
-
-/** \class AliHLTTPCMemHandler 
-<pre>
-//_____________________________________________________________
-// AliHLTTPCMemHandler
-//
-// The HLT Binary File handler 
-//
-//  This class does all the memory I/O handling of HLT binary files.
-//  
-//  Examples:
-//  ---------
-//
-//  1) Reading a binary file:
-//  
-//  AliHLTTPCMemHandler file;
-//  file.SetBinaryInput(filename);
-//  file.Init(slice,patch);
-//
-//  UInt_t nrowss;
-//  AliHLTTPCDigitRowData *data = file.CompBinary2Memory(nrows);
-//  
-//  for(int i=0; i<nrows; i++) 
-//    {
-//    
-//    AliHLTTPCDigitData *dataPt = (AliHLTTPCDigitData*)data->fDigitData;
-//    for(int j=0; j<data->fNDigit; j++) 
-//      {
-//        pad = dataPt[j].fPad;
-//        time = dataPt[j].fTime;
-//        charge = dataPt[j].fCharge;
-//      }
-//     
-//    file.UpdateRowPointer(data);
-//  
-//    }
-//  file.CloseBinaryInput();
-//  ________________________
-//  
-//  2) Writing a binary file:
-//  
-//  //First of all you need to store the data in memory,
-//  //and have a pointer to it of type AliHLTTPCDigitRowData.
-//  //E.g. if you just want to write the data you read in example 1)
-//  //into a new file, you can do the following:
-//  
-//  AliHLTTPCMemHandler newfile;
-//  newfile.Init(slice,patch);
-//  newfile.SetBinaryOutput(newfilename);
-//  newfile.Memory2CompBinary((UInt_t)NumberOfRowsInPatch,(AliHLTTPCDigitRowData*)data);
-//  newfile.CloseBinaryOutput();
-//
-//
-// Compressed file format:
-// -----------------------
-//
-// The data is RLE encoded and currently using _10_ bit range for the ADC-values.
-</pre>
-*/  
-
+// Original: AliHLTMemHandler.cxx,v 1.52 2005/06/14 10:55:21 cvetan 
+
+//**************************************************************************
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//*                                                                        *
+//* Primary Authors: U. Frankenfeld, A. Vestbo, C. Loizides                *
+//*                  Matthias Richter <Matthias.Richter@ift.uib.no>        *
+//*                  for The ALICE HLT Project.                            *
+//*                                                                        *
+//* Permission to use, copy, modify and distribute this software and its   *
+//* documentation strictly for non-commercial purposes is hereby granted   *
+//* without fee, provided that the above copyright notice appears in all   *
+//* copies and that both the copyright notice and this permission notice   *
+//* appear in the supporting documentation. The authors make no claims     *
+//* about the suitability of this software for any purpose. It is          *
+//* provided "as is" without express or implied warranty.                  *
+//**************************************************************************
+
+/** @file   AliHLTTPCMemHandler.cxx
+    @author U. Frankenfeld, A. Vestbo, C. Loizides, maintained by
+            Matthias Richter
+    @date   
+    @brief  input interface base class for the TPC tracking code before
+            migration to the HLT component framework
+*/
+
+
+#include <cassert>
 #include "AliHLTTPCRootTypes.h"
 #include "AliHLTTPCDigitData.h"
 #include "AliHLTTPCLogging.h"
@@ -79,24 +44,29 @@ using namespace std;
 ClassImp(AliHLTTPCMemHandler)
   
 AliHLTTPCMemHandler::AliHLTTPCMemHandler()
+  :
+  fRowMin(0),
+  fRowMax(0),
+  fSlice(0),
+  fPatch(0),
+  fInBinary(NULL),
+  fOutBinary(NULL),
+  fPt(NULL),
+  fSize(0),
+  fIsRandom(kFALSE),
+  fNRandom(0),
+  fNGenerate(0),
+  fNUsed(0),
+  fNDigits(0),
+  fDPt(NULL),
+  fRandomDigits(NULL),
+  fDummy(0)
 { 
   //Constructor
-  fPt = 0;
-  fSize =0;
-  fInBinary = 0;
-  fOutBinary = 0;
-  fNRandom = 0;
   Init(0,0);
-  fIsRandom = kFALSE;
-  fRandomDigits = 0;
-  fDPt =0;
-  fNGenerate = 0;
-  fNUsed = 0;
-  fNDigits = 0;
   ResetROI();
 }
 
-
 AliHLTTPCMemHandler::~AliHLTTPCMemHandler()
 {
   //Destructor
@@ -108,6 +78,17 @@ AliHLTTPCMemHandler::~AliHLTTPCMemHandler()
 void AliHLTTPCMemHandler::Init(Int_t s,Int_t p, Int_t *r)
 {
   //init handler
+  assert(s<fgkNSlice);
+  if (s>fgkNSlice) {
+    fSlice=0;
+    fPatch=0;
+    fRowMin=0;
+    fRowMax=0;
+    if (r) *r=0;
+    LOG(AliHLTTPCLog::kWarning,"AliHLTTPCMemHandler::Init","sector coordinates")
+      <<"Invalid slice no " << s <<ENDLOG;
+    return;
+  }
   fSlice=s;fPatch=p;
   if(r) {
     fRowMin=r[0];
@@ -143,7 +124,7 @@ void AliHLTTPCMemHandler::SetROI(Float_t *eta,Int_t */*slice*/)
   if(eta[1]==0)
     {
       LOG(AliHLTTPCLog::kWarning,"AliHLTTPCMemHandler::SetROI","Eta Values")
-       <<"Bad ROI parameters. IDIOT! "<<ENDLOG;
+       <<"Bad ROI parameters."<<ENDLOG;
       for(Int_t i=fRowMin; i<=fRowMax; i++)
        {
          fEtaMinTimeBin[i]=0;
@@ -441,10 +422,10 @@ void AliHLTTPCMemHandler::DigitizePoint(Int_t row, Int_t pad,
 }
 
 ///////////////////////////////////////// Digit IO  
-Bool_t AliHLTTPCMemHandler::Memory2Binary(UInt_t nrow,AliHLTTPCDigitRowData *data)
+Bool_t AliHLTTPCMemHandler::Memory2BinaryFile(UInt_t nrow,AliHLTTPCDigitRowData *data)
 {
   //Write data to the outputfile as is. No run-length encoding is done.
-  
+
   if(!fOutBinary){
     LOG(AliHLTTPCLog::kWarning,"AliHLTTPCMemHandler::Memory2Binary","File")
       <<"No Output File"<<ENDLOG;
@@ -491,17 +472,27 @@ Bool_t AliHLTTPCMemHandler::Binary2Memory(UInt_t & nrow,AliHLTTPCDigitRowData *d
   rewind(fInBinary);
   AliHLTTPCDigitRowData *rowPt = data;
   UInt_t rowcount = 0;
-  Int_t outsize =0;
+  UInt_t outsize =0;
   while(!feof(fInBinary)){
     Byte_t  *bytePt =(Byte_t *) rowPt;
 
+    if (sz<outsize+sizeof(AliHLTTPCDigitRowData)) {
+      LOG(AliHLTTPCLog::kFatal,"AliHLTTPCMemHandler::Binary2Memory","Memory")
+       << "target data buffer too small" <<ENDLOG;
+      return kFALSE;
+    }
     if(fread(rowPt,sizeof(AliHLTTPCDigitRowData),1,fInBinary)!=1) break;
 
     bytePt += sizeof(AliHLTTPCDigitRowData);
     outsize += sizeof(AliHLTTPCDigitRowData);
 
-    Int_t size = sizeof(AliHLTTPCDigitData) * rowPt->fNDigit;
+    UInt_t size = sizeof(AliHLTTPCDigitData) * rowPt->fNDigit;
 
+    if (sz<outsize+size) {
+      LOG(AliHLTTPCLog::kFatal,"AliHLTTPCMemHandler::Binary2Memory","Memory")
+       << "target data buffer too small" <<ENDLOG;
+      return kFALSE;
+    }
     //if(fread(bytePt,size,1,fInBinary)!=1) break;
     fread(bytePt,size,1,fInBinary);
     bytePt += size;