ROOT logo
// $Id$

/**************************************************************************
 * This file is property of and copyright by the ALICE HLT Project        * 
 * ALICE Experiment at CERN, All rights reserved.                         *
 *                                                                        *
 * Primary Authors: 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   testAliHLTDataBuffer.C
    @author Matthias Richter
    @date   
    @brief  Test program for the AliHLTDataBuffer class
 */

#ifndef __CINT__
#include "TDatime.h"
#include "TRandom.h"
#include "AliHLTDataTypes.h"
#include "algorithm"
#include "TObjArray.h"
#include "TObjString.h"
#include "TString.h"
#include "AliHLTDAQ.h"
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cerrno>
#include "AliHLTDataBuffer.h"
#endif

using namespace std;

int gVerbosity=0;
const int gPagesize=1024*1024;

template<class T>
int testLoop(vector<T>& descriptions, int nofLevels, int nofCycles);
int GetRandom(int min, int max);

class AliHLTRandomBuffer {
public:
  AliHLTRandomBuffer(): fpBuffer(NULL), fBufferSize(0), fInstances() {}
  AliHLTRandomBuffer(AliHLTUInt32_t size): fpBuffer(NULL), fBufferSize(0), fInstances() {Init(size);}
  AliHLTRandomBuffer(const AliHLTRandomBuffer&): fpBuffer(NULL), fBufferSize(0), fInstances() {}
  AliHLTRandomBuffer& operator=(const AliHLTRandomBuffer& src) {if (&src!=this) {fpBuffer=NULL; fBufferSize=0;} return *this;}
  ~AliHLTRandomBuffer() {}

  int Init(AliHLTUInt32_t size) {
    if (fpBuffer) return -EINPROGRESS;
    
    fpBuffer=new AliHLTUInt8_t[size];
    if (!fpBuffer) return -ENOMEM;
    fBufferSize=size;

    int words=size/sizeof(AliHLTUInt32_t);
    AliHLTUInt32_t* pTgt=reinterpret_cast<AliHLTUInt32_t*>(fpBuffer);
    for (int i=0; i<words; i++, pTgt++) *pTgt=GetRandom(0, 0x7fffffff);
    return 0;
  }

  struct AliHLTRandomBufferInstance {
    int fId;
    AliHLTUInt32_t fOffset;
    AliHLTUInt32_t fSize;
  };

  int CreateInstance(AliHLTUInt32_t size) {
    if (size>fBufferSize) return -ENOSPC;

    AliHLTRandomBufferInstance instance;
    instance.fId=fInstances.size()>0?fInstances.back().fId+1:0;
    instance.fOffset=GetRandom(0, fBufferSize-size);
    instance.fSize=size;
    fInstances.push_back(instance);
    return instance.fId;
  }

  int ReleaseInstance(int id) {
    for (vector<AliHLTRandomBufferInstance>::iterator instance=fInstances.begin();
	 instance!=fInstances.end(); instance++) {
      if (instance->fId==id) {
	fInstances.erase(instance);
	return 0;
      }
    }
    return -ENOENT;
  }

  const AliHLTUInt8_t* GetBuffer(int id) {
    for (vector<AliHLTRandomBufferInstance>::iterator instance=fInstances.begin();
	 instance!=fInstances.end(); instance++) {
      if (instance->fId==id) {

	return fpBuffer+instance->fOffset;
      }
    }
    return NULL;
  }

  bool CompareBuffer(const AliHLTUInt8_t* buffer, AliHLTUInt32_t size, int id) {
    if (!buffer) return false;
    for (vector<AliHLTRandomBufferInstance>::iterator instance=fInstances.begin();
	 instance!=fInstances.end(); instance++) {
      if (instance->fId==id) {
	if (instance->fSize!=size) {
	  cout << "CompareBuffer ("<< instance->fId << "): size missmatch: " << size << ", expected " << instance->fSize << endl; 
	  return false;
	}
	return memcmp(buffer, fpBuffer+instance->fOffset, size)==0;
      }
    }
    return false;
  }

  void Print(const char* /*option*/) {
    cout << "AliHLTRandomBufferInstance " << this << ": buffer " << (void*)fpBuffer << " size " << fBufferSize << endl;
    if (!fpBuffer) return;

    int words=fBufferSize/sizeof(AliHLTUInt32_t);
    int lines=words/4;
    AliHLTUInt32_t* pTgt=reinterpret_cast<AliHLTUInt32_t*>(fpBuffer);
    for (int line=0; line<lines; line++) {
      for (int i=0; i<4; i++, pTgt++) cout << hex << " 0x" << (*pTgt);
      cout << endl;
    }
    if (words*sizeof(AliHLTUInt32_t)!=fBufferSize) cout << "some remaining bytes left due to alignment" << endl;
  }

private:
  AliHLTUInt8_t* fpBuffer;
  AliHLTUInt32_t fBufferSize;

  vector<AliHLTRandomBufferInstance> fInstances;
};

AliHLTRandomBuffer gData(2*gPagesize);

/**
 * @class AliHLTTestRawPage
 * Helper class for testing cycles of memory allocation, buffer modification, and
 * cleanup with the AliHLTRawPage within the function testLoop.
 */
class AliHLTTestRawPage {
public:
  AliHLTTestRawPage() : fBuffer(NULL) {}
  AliHLTTestRawPage(const AliHLTTestRawPage& src) : fBuffer(src.fBuffer) {}
  AliHLTTestRawPage& operator=(const AliHLTTestRawPage& src) {
    fBuffer=src.fBuffer;
    return *this;
  }

  ~AliHLTTestRawPage() {}

  bool IsAllocated() {return fBuffer!=NULL;}
  bool Alloc(AliHLTUInt32_t size, int verbosity) {
    fBuffer=AliHLTDataBuffer::AliHLTRawPage::GlobalAlloc(size);
    if (!fBuffer) return false;
    if (verbosity>1) {
      printf("allocated raw buffer %p from page %p\n", fBuffer, AliHLTDataBuffer::AliHLTRawPage::FindPage(fBuffer));
      fBuffer->Print("min");
    }
    return true;
  }

  AliHLTUInt8_t* GetPointer() {return fBuffer?fBuffer->GetPointer():NULL;}

  bool SetSize(AliHLTUInt32_t size, int verbosity) {
    AliHLTDataBuffer::AliHLTRawPage* rawpage=AliHLTDataBuffer::AliHLTRawPage::FindPage(fBuffer);
    if (rawpage) {
      if (rawpage->SetSize(fBuffer, size)==0) {
	if (verbosity>1) {
	  cout << "setting size for raw buffer " << fBuffer << " of page " << rawpage << endl;
	  fBuffer->Print("min");
	}
	return true;
      } else {
	cerr << "failed to set size for raw buffer " << fBuffer << endl; 
      }
    } else {
      cerr << "can not find raw page for buffer " << fBuffer << endl;
    }
    
    return false;
  }

  bool Free(int verbosity) {
    AliHLTDataBuffer::AliHLTRawPage* rawpage=AliHLTDataBuffer::AliHLTRawPage::FindPage(fBuffer);
    if (rawpage) {
      if (rawpage->Free(fBuffer)==0) {
	if (verbosity>1) cout << "released raw buffer " << fBuffer << " from page " << rawpage << endl;
	fBuffer=NULL;
	return true;
      } else {
	cerr << "failed to release raw buffer " << fBuffer  << endl;
      }
    } else {
      cerr << "can not find raw page for buffer " << fBuffer  << endl;
    }
    return false;
  }

  AliHLTUInt32_t GetTotalSize() {return fBuffer?fBuffer->GetTotalSize():0;}

  bool GlobalClean(int verbosity) {
    int nofPages=0;
    for (AliHLTDataBuffer::AliHLTRawPage* rawpage=AliHLTDataBuffer::AliHLTRawPage::NextPage(NULL);
	 rawpage!=NULL; 
	 rawpage=AliHLTDataBuffer::AliHLTRawPage::NextPage(rawpage)) {
      nofPages++;
    }
    if (verbosity>=1) {
      cout << "total number of pages: " << nofPages << endl;
    }

    AliHLTDataBuffer::AliHLTRawPage::GlobalClean();
    return true;
  }

  void Print(const char* options) {
    if (strcmp(options, "pages")==0 ||
	strcmp(options, "global")==0) {
      AliHLTDataBuffer::AliHLTRawPage::NextPage(NULL)->Print("global");
      return;
    }
  }
private:
  AliHLTDataBuffer::AliHLTRawBuffer* fBuffer;
};

struct testRawPageDescription {
  testRawPageDescription() : fLevel(0), fBufferSize(0), fDataId(-1), fTest() {};
  int fLevel;
  AliHLTUInt32_t fBufferSize;
  int fDataId;
  AliHLTTestRawPage fTest;
};

class AliHLTDataBufferWrapper : public AliHLTDataBuffer {
public:
  int ResetDataBuffer() {
    return AliHLTDataBuffer::ResetDataBuffer();
  }
};

/**
 * @class AliHLTTestDataBuffer
 * Helper class for testing cycles of memory allocation, buffer modification, and
 * cleanup with the AliHLTDataBuffer within the function testLoop.
 */
class AliHLTTestDataBuffer {
public:
  AliHLTTestDataBuffer() : fInstance(NULL), fBuffer(NULL), fSize(0) {}
  AliHLTTestDataBuffer(const AliHLTTestDataBuffer&)  : fInstance(NULL), fBuffer(NULL), fSize(0) {} ;
  AliHLTTestDataBuffer& operator=(const AliHLTTestDataBuffer&) {
    fInstance=NULL;
    fBuffer=NULL;
    fSize=0;
    return *this;
  }

  bool IsAllocated() {return fBuffer!=NULL;}
  bool Alloc(AliHLTUInt32_t size, int verbosity) {
    if (!fInstance) {
      fInstance=new AliHLTDataBufferWrapper;
      if (!fInstance) return false;
      fInstance->SetGlobalLoggingLevel(verbosity>1?kHLTLogAll:(AliHLTComponentLogSeverity)0x7c);
    }
    
    fBuffer=fInstance->GetTargetBuffer(size);
    if (!fBuffer) return false;
    fSize=size;
    if (verbosity>1) {
      cout << "allocated data buffer" << this << endl;
    }
    return true;
  }

  AliHLTUInt8_t* GetPointer() {return fBuffer;}

  bool SetSize(AliHLTUInt32_t size, int verbosity) {
    if (!fInstance) return false;
    AliHLTComponentBlockData bd;
    AliHLTComponent::FillBlockData(bd);
    bd.fSize=size;
    bd.fOffset=0;
    fInstance->SetSegments(fBuffer, &bd, 1);

    if (verbosity>1) {
      cout << "setting size for data buffer " << this << ": allocated size " << fSize << " -> " << size << endl;
    }
    fSize=size;
    return true;
  }

  bool Free(int verbosity) {
    if (!fInstance) return false;
    fSize=0;
    if (fInstance->ResetDataBuffer()==0) {
      if (verbosity>1) cout << "released data buffer " << this << endl;
      fBuffer=NULL;
      return true;
    } else {
      cerr << "failed to release raw buffer " << fBuffer  << endl;
    }

    return false;
  }

  AliHLTUInt32_t GetTotalSize() {return fSize;}

  bool GlobalClean(int verbosity) {
    if (!fInstance) return false;
    if (verbosity>=1) {
      fInstance->PrintStatistics();
    }
    delete fInstance;

    AliHLTDataBuffer::AliHLTRawPage::GlobalClean();
    return true;
  }

  void Print(const char* options) {
    if (strcmp(options, "pages")==0 ||
	strcmp(options, "global")==0) {
      fInstance->PrintStatistics();
      AliHLTDataBuffer::AliHLTRawPage::NextPage(NULL)->Print("global");
      return;
    }
  }
private:
  AliHLTDataBufferWrapper* fInstance;
  AliHLTUInt8_t* fBuffer;
  AliHLTUInt32_t fSize;
};

struct testDataBufferDescription {
  testDataBufferDescription() : fLevel(0), fBufferSize(0), fDataId(-1), fTest() {};
  int fLevel;
  AliHLTUInt32_t fBufferSize;
  int fDataId;
  AliHLTTestDataBuffer fTest;
};

template<class T,class S>
int CopyDescription(vector<T>& target, vector<S>& source)
{
  target.clear();
  for (unsigned i=0; i<source.size(); i++) {
    T clone;
    clone.fLevel=source[i].fLevel;
    clone.fBufferSize=source[i].fBufferSize;
    clone.fDataId=source[i].fDataId;
    target.push_back(clone);
  }
  return 0;
}

template<class T>
int fillTestSample(int levels, int processes, vector<T>& descriptions)
{
  int availableProcesses=processes;
  for (int level=0; level<levels; level++) {
    int levelprocesses=GetRandom(availableProcesses/2, availableProcesses-(levels-level));
    for (int process=0; process<levelprocesses; process++) {
      T desc;
      desc.fLevel=level;
      desc.fBufferSize=GetRandom(1024, 2*gPagesize);
      //desc.fTest.Clear();
      descriptions.push_back(desc);
    }
    availableProcesses-=levelprocesses;
  }
  return 0;
}

template<class T>
int allocateBuffers(vector<T>& descriptions,
		    int level=-1)
{
  for (unsigned i=0; i<descriptions.size(); i++) {
    if (level>=0 && descriptions[i].fLevel<level) continue;
    if (level>=0 && descriptions[i].fLevel>level) break;
    if (descriptions[i].fTest.IsAllocated()) {
      cerr << "warning: buffer already allocated" << endl;
      continue;
    }

    if (descriptions[i].fTest.Alloc(GetRandom(descriptions[i].fBufferSize/2, descriptions[i].fBufferSize), gVerbosity)) {
    }

    if (!descriptions[i].fTest.IsAllocated()) {
      cerr << "failed to allocate buffer for process " << i << endl;
      return -EFAULT;
    }
  }
  return 0;
}
		   
template<class T>
int setBufferSizes(vector<T>& descriptions,
		   int level=-1)
{
  // set buffer size for all processes of the specified level
  // buffer size is chosen randomly between 0 and the allocated size
  vector<unsigned> positions;
  for (unsigned i=0; i<descriptions.size(); i++) {
    if (!descriptions[i].fTest.IsAllocated()) continue;
    if (level>=0 && descriptions[i].fLevel<level) continue;
    if (level>=0 && descriptions[i].fLevel>level) break;
    positions.push_back(i);
  }

  random_shuffle(positions.begin(), positions.end());
  for (vector<unsigned>::iterator position=positions.begin();
       position!=positions.end(); position++) {
    AliHLTUInt32_t datasize=GetRandom(0, descriptions[*position].fTest.GetTotalSize());
    descriptions[*position].fDataId=gData.CreateInstance(datasize);
    const AliHLTUInt8_t* pSrc=gData.GetBuffer(descriptions[*position].fDataId);
    if (!pSrc) {
      cout << "error creating data instance" << endl;
      return -1;
    }
    AliHLTUInt8_t* pTgt=descriptions[*position].fTest.GetPointer();
    if (!pTgt) {
      cout << "error target buffer" << endl;
      return -1;
    }
    memcpy(pTgt, pSrc, datasize);
    if (descriptions[*position].fTest.SetSize(datasize, gVerbosity)) {
      if (gVerbosity>1) cout << "  process " << *position << " level " << descriptions[*position].fLevel << endl;
    } else {
      cout << "failed allocation for process " << *position << " level " << descriptions[*position].fLevel << endl;
      return -1;
    }
  }
  return 0;
}

template<class T>		   
int releaseBuffers(vector<T>& descriptions,
		   int level=-1)
{
  // find the processes to be releases according to the specified level
  // shuffle the processes and then release in this random order
  vector<unsigned> positions;
  for (unsigned i=0; i<descriptions.size(); i++) {
    if (!descriptions[i].fTest.IsAllocated()) continue;
    if (level>=0 && descriptions[i].fLevel<level) continue;
    if (level>=0 && descriptions[i].fLevel>level) break;
    positions.push_back(i);
  }

  random_shuffle(positions.begin(), positions.end());
  for (vector<unsigned>::iterator position=positions.begin();
       position!=positions.end(); position++) {
    if (!gData.CompareBuffer(descriptions[*position].fTest.GetPointer(), descriptions[*position].fTest.GetTotalSize(), descriptions[*position].fDataId)) {
      cout << "data comparison failed for process " << *position << " level " << descriptions[*position].fLevel << endl;
      return -1;
    }
    gData.ReleaseInstance(descriptions[*position].fDataId);
    if (descriptions[*position].fTest.Free(gVerbosity)) {
      if (gVerbosity>1) cout << "  process " << *position << " level " << descriptions[*position].fLevel << endl;
    } else {
      cout << "failed deallocation for process " << *position << " level " << descriptions[*position].fLevel << endl;
      return -1;
    }
  }
  return 0;
}

template<class T>
int testLoop(vector<T>& descriptions, int nofLevels, int nofCycles)
{
  // test the buffer allocation and deallocation from the AliHLTRawPage
  //
  // build a hierarchy of processes like in a real chain, in the first
  // implementation it is only a linear tree
  // the number of levels and processes are randomly chosen from a certain range
  // processes are distributed among the levels such that there is a decreasing
  // number of processes but at least one process
  //
  // The test cycle consists of the following steps
  // - loop over all levels
  //   - allocation of a maximum buffer for every process of the current level
  //   - set the buffer size to be used for every process of the current level
  //   - release buffers of the previous level
  // - check all created raw pages and throw error, if
  //   - not all buffers released
  //   - not all memory released
  //   - still fragmented
  // 
  int iResult=0;

  AliHLTDataBuffer::AliHLTRawPage* rawpage=NULL;
  for (int cycle=0; cycle<nofCycles && iResult>=0; cycle++) {
    for (int level=0; level<=nofLevels; level++) {
      // allocate buffers
      if (level<nofLevels) {
	if ((iResult=allocateBuffers(descriptions, level))<0) {
	  cerr << "failed to allocate buffers" << endl;
	  return iResult;
	}
      }

      if (gVerbosity>1) {
	cout << "finished allocation - level " << level << " ";
	descriptions[0].fTest.Print("pages");
      }

      if (level<nofLevels) {
	if ((iResult=setBufferSizes(descriptions, level))<0) {
	  cerr << "failed setting  buffers" << endl;
	  return iResult;
	}
      }

      if (gVerbosity>1) {
	cout << "finished size modification - level " << level << " ";
	descriptions[0].fTest.Print("pages");
      }

      if (level>0) {
	if ((iResult=releaseBuffers(descriptions, level-1))<0) {
	  cerr << "failed to release buffers" << endl;
	  return iResult;
	}
      }
    }

    if (gVerbosity>1) {
      cout << "status of released pages: " << endl << "  ";
      descriptions[0].fTest.Print("pages");
    }
    for (rawpage=AliHLTDataBuffer::AliHLTRawPage::NextPage(NULL);
	 rawpage!=NULL; 
	 rawpage=AliHLTDataBuffer::AliHLTRawPage::NextPage(rawpage)) {
      if (rawpage->IsUsed()) {
	cerr << "page " << rawpage << " has used buffers" << endl;
	iResult=-EFAULT;
      } else if (rawpage->Size()!=rawpage->Capacity()) {
	cerr << "page " << rawpage << " not completely released" << endl;
	iResult=-EFAULT;
      } else if (rawpage->IsFragmented()) {
	cerr << "page " << rawpage << " is still fragmented" << endl;
	iResult=-EFAULT;
      }
    }
    AliHLTDataBuffer::SetGlobalEventCount(cycle);
  }

  if (iResult<0) {
    descriptions[0].fTest.Print("pages");
  }

  descriptions[0].fTest.GlobalClean(gVerbosity);

  return iResult;
}

/**
 * Get a random number in the given range.
 */
int GetRandom(int min, int max)
{
  if (max-min<2) return min;
  static TRandom rand;
  static bool seedSet=false;
  if (!seedSet) {
    TDatime dt;
    rand.SetSeed(dt.Get());
    seedSet=true;
  }
  return min+rand.Integer(max-min);
}

int testAliHLTDataBuffer()
{
  int iResult=0;
  const int iMaxLevels=10;
  int nofLevels=GetRandom(3,iMaxLevels);
  int nofProcesses=GetRandom(nofLevels,2*iMaxLevels);
  int nofCycles=GetRandom(100,1000);

  vector<testDataBufferDescription> descriptions;

  if ((iResult=fillTestSample(nofLevels, nofProcesses, descriptions))<0) {
    cerr << "failed to fill test sample" << endl;
    return iResult;
  }

  // adjust to the level of the last entry
  nofLevels=descriptions[descriptions.size()-1].fLevel;

  if (gVerbosity>0) {
    cout << "    Test setup: " << nofLevels << " levels/ " << nofProcesses << " processes/ " << nofCycles << " cycle(s)" << endl;
    cout << "    Pagesize: " << gPagesize << endl;
    for (unsigned i=0; i<descriptions.size(); i++) {
      cout << "      process " << i << ": level " << descriptions[i].fLevel << "   max size " << descriptions[i].fBufferSize << endl;
    }
  }

  if ((iResult=testLoop(descriptions, nofLevels, nofCycles))<0) return iResult;

  if (gVerbosity>0) {
    cout << "checking memory allocation using AliHLTRawPage directly ..." << endl;
  }
  vector<testRawPageDescription> rawpagedesc;
  CopyDescription(rawpagedesc, descriptions);
  if ((iResult=testLoop(rawpagedesc, nofLevels, nofCycles))<0) return iResult;

  return 0;
}

/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//
// main functions

int main(int /*argc*/, const char** /*argv*/)
{
  int iResult=0;
  const int nofCycles=10;
  for (int cycle=0; cycle<nofCycles && iResult>=0; cycle++) {
    iResult=testAliHLTDataBuffer();
    if (((cycle+1)*100/nofCycles)%10==0) {
      cout << (cycle+1)*100/nofCycles << "% complete" << endl;
    }
  }

  return iResult;
}
 testAliHLTDataBuffer.C:1
 testAliHLTDataBuffer.C:2
 testAliHLTDataBuffer.C:3
 testAliHLTDataBuffer.C:4
 testAliHLTDataBuffer.C:5
 testAliHLTDataBuffer.C:6
 testAliHLTDataBuffer.C:7
 testAliHLTDataBuffer.C:8
 testAliHLTDataBuffer.C:9
 testAliHLTDataBuffer.C:10
 testAliHLTDataBuffer.C:11
 testAliHLTDataBuffer.C:12
 testAliHLTDataBuffer.C:13
 testAliHLTDataBuffer.C:14
 testAliHLTDataBuffer.C:15
 testAliHLTDataBuffer.C:16
 testAliHLTDataBuffer.C:17
 testAliHLTDataBuffer.C:18
 testAliHLTDataBuffer.C:19
 testAliHLTDataBuffer.C:20
 testAliHLTDataBuffer.C:21
 testAliHLTDataBuffer.C:22
 testAliHLTDataBuffer.C:23
 testAliHLTDataBuffer.C:24
 testAliHLTDataBuffer.C:25
 testAliHLTDataBuffer.C:26
 testAliHLTDataBuffer.C:27
 testAliHLTDataBuffer.C:28
 testAliHLTDataBuffer.C:29
 testAliHLTDataBuffer.C:30
 testAliHLTDataBuffer.C:31
 testAliHLTDataBuffer.C:32
 testAliHLTDataBuffer.C:33
 testAliHLTDataBuffer.C:34
 testAliHLTDataBuffer.C:35
 testAliHLTDataBuffer.C:36
 testAliHLTDataBuffer.C:37
 testAliHLTDataBuffer.C:38
 testAliHLTDataBuffer.C:39
 testAliHLTDataBuffer.C:40
 testAliHLTDataBuffer.C:41
 testAliHLTDataBuffer.C:42
 testAliHLTDataBuffer.C:43
 testAliHLTDataBuffer.C:44
 testAliHLTDataBuffer.C:45
 testAliHLTDataBuffer.C:46
 testAliHLTDataBuffer.C:47
 testAliHLTDataBuffer.C:48
 testAliHLTDataBuffer.C:49
 testAliHLTDataBuffer.C:50
 testAliHLTDataBuffer.C:51
 testAliHLTDataBuffer.C:52
 testAliHLTDataBuffer.C:53
 testAliHLTDataBuffer.C:54
 testAliHLTDataBuffer.C:55
 testAliHLTDataBuffer.C:56
 testAliHLTDataBuffer.C:57
 testAliHLTDataBuffer.C:58
 testAliHLTDataBuffer.C:59
 testAliHLTDataBuffer.C:60
 testAliHLTDataBuffer.C:61
 testAliHLTDataBuffer.C:62
 testAliHLTDataBuffer.C:63
 testAliHLTDataBuffer.C:64
 testAliHLTDataBuffer.C:65
 testAliHLTDataBuffer.C:66
 testAliHLTDataBuffer.C:67
 testAliHLTDataBuffer.C:68
 testAliHLTDataBuffer.C:69
 testAliHLTDataBuffer.C:70
 testAliHLTDataBuffer.C:71
 testAliHLTDataBuffer.C:72
 testAliHLTDataBuffer.C:73
 testAliHLTDataBuffer.C:74
 testAliHLTDataBuffer.C:75
 testAliHLTDataBuffer.C:76
 testAliHLTDataBuffer.C:77
 testAliHLTDataBuffer.C:78
 testAliHLTDataBuffer.C:79
 testAliHLTDataBuffer.C:80
 testAliHLTDataBuffer.C:81
 testAliHLTDataBuffer.C:82
 testAliHLTDataBuffer.C:83
 testAliHLTDataBuffer.C:84
 testAliHLTDataBuffer.C:85
 testAliHLTDataBuffer.C:86
 testAliHLTDataBuffer.C:87
 testAliHLTDataBuffer.C:88
 testAliHLTDataBuffer.C:89
 testAliHLTDataBuffer.C:90
 testAliHLTDataBuffer.C:91
 testAliHLTDataBuffer.C:92
 testAliHLTDataBuffer.C:93
 testAliHLTDataBuffer.C:94
 testAliHLTDataBuffer.C:95
 testAliHLTDataBuffer.C:96
 testAliHLTDataBuffer.C:97
 testAliHLTDataBuffer.C:98
 testAliHLTDataBuffer.C:99
 testAliHLTDataBuffer.C:100
 testAliHLTDataBuffer.C:101
 testAliHLTDataBuffer.C:102
 testAliHLTDataBuffer.C:103
 testAliHLTDataBuffer.C:104
 testAliHLTDataBuffer.C:105
 testAliHLTDataBuffer.C:106
 testAliHLTDataBuffer.C:107
 testAliHLTDataBuffer.C:108
 testAliHLTDataBuffer.C:109
 testAliHLTDataBuffer.C:110
 testAliHLTDataBuffer.C:111
 testAliHLTDataBuffer.C:112
 testAliHLTDataBuffer.C:113
 testAliHLTDataBuffer.C:114
 testAliHLTDataBuffer.C:115
 testAliHLTDataBuffer.C:116
 testAliHLTDataBuffer.C:117
 testAliHLTDataBuffer.C:118
 testAliHLTDataBuffer.C:119
 testAliHLTDataBuffer.C:120
 testAliHLTDataBuffer.C:121
 testAliHLTDataBuffer.C:122
 testAliHLTDataBuffer.C:123
 testAliHLTDataBuffer.C:124
 testAliHLTDataBuffer.C:125
 testAliHLTDataBuffer.C:126
 testAliHLTDataBuffer.C:127
 testAliHLTDataBuffer.C:128
 testAliHLTDataBuffer.C:129
 testAliHLTDataBuffer.C:130
 testAliHLTDataBuffer.C:131
 testAliHLTDataBuffer.C:132
 testAliHLTDataBuffer.C:133
 testAliHLTDataBuffer.C:134
 testAliHLTDataBuffer.C:135
 testAliHLTDataBuffer.C:136
 testAliHLTDataBuffer.C:137
 testAliHLTDataBuffer.C:138
 testAliHLTDataBuffer.C:139
 testAliHLTDataBuffer.C:140
 testAliHLTDataBuffer.C:141
 testAliHLTDataBuffer.C:142
 testAliHLTDataBuffer.C:143
 testAliHLTDataBuffer.C:144
 testAliHLTDataBuffer.C:145
 testAliHLTDataBuffer.C:146
 testAliHLTDataBuffer.C:147
 testAliHLTDataBuffer.C:148
 testAliHLTDataBuffer.C:149
 testAliHLTDataBuffer.C:150
 testAliHLTDataBuffer.C:151
 testAliHLTDataBuffer.C:152
 testAliHLTDataBuffer.C:153
 testAliHLTDataBuffer.C:154
 testAliHLTDataBuffer.C:155
 testAliHLTDataBuffer.C:156
 testAliHLTDataBuffer.C:157
 testAliHLTDataBuffer.C:158
 testAliHLTDataBuffer.C:159
 testAliHLTDataBuffer.C:160
 testAliHLTDataBuffer.C:161
 testAliHLTDataBuffer.C:162
 testAliHLTDataBuffer.C:163
 testAliHLTDataBuffer.C:164
 testAliHLTDataBuffer.C:165
 testAliHLTDataBuffer.C:166
 testAliHLTDataBuffer.C:167
 testAliHLTDataBuffer.C:168
 testAliHLTDataBuffer.C:169
 testAliHLTDataBuffer.C:170
 testAliHLTDataBuffer.C:171
 testAliHLTDataBuffer.C:172
 testAliHLTDataBuffer.C:173
 testAliHLTDataBuffer.C:174
 testAliHLTDataBuffer.C:175
 testAliHLTDataBuffer.C:176
 testAliHLTDataBuffer.C:177
 testAliHLTDataBuffer.C:178
 testAliHLTDataBuffer.C:179
 testAliHLTDataBuffer.C:180
 testAliHLTDataBuffer.C:181
 testAliHLTDataBuffer.C:182
 testAliHLTDataBuffer.C:183
 testAliHLTDataBuffer.C:184
 testAliHLTDataBuffer.C:185
 testAliHLTDataBuffer.C:186
 testAliHLTDataBuffer.C:187
 testAliHLTDataBuffer.C:188
 testAliHLTDataBuffer.C:189
 testAliHLTDataBuffer.C:190
 testAliHLTDataBuffer.C:191
 testAliHLTDataBuffer.C:192
 testAliHLTDataBuffer.C:193
 testAliHLTDataBuffer.C:194
 testAliHLTDataBuffer.C:195
 testAliHLTDataBuffer.C:196
 testAliHLTDataBuffer.C:197
 testAliHLTDataBuffer.C:198
 testAliHLTDataBuffer.C:199
 testAliHLTDataBuffer.C:200
 testAliHLTDataBuffer.C:201
 testAliHLTDataBuffer.C:202
 testAliHLTDataBuffer.C:203
 testAliHLTDataBuffer.C:204
 testAliHLTDataBuffer.C:205
 testAliHLTDataBuffer.C:206
 testAliHLTDataBuffer.C:207
 testAliHLTDataBuffer.C:208
 testAliHLTDataBuffer.C:209
 testAliHLTDataBuffer.C:210
 testAliHLTDataBuffer.C:211
 testAliHLTDataBuffer.C:212
 testAliHLTDataBuffer.C:213
 testAliHLTDataBuffer.C:214
 testAliHLTDataBuffer.C:215
 testAliHLTDataBuffer.C:216
 testAliHLTDataBuffer.C:217
 testAliHLTDataBuffer.C:218
 testAliHLTDataBuffer.C:219
 testAliHLTDataBuffer.C:220
 testAliHLTDataBuffer.C:221
 testAliHLTDataBuffer.C:222
 testAliHLTDataBuffer.C:223
 testAliHLTDataBuffer.C:224
 testAliHLTDataBuffer.C:225
 testAliHLTDataBuffer.C:226
 testAliHLTDataBuffer.C:227
 testAliHLTDataBuffer.C:228
 testAliHLTDataBuffer.C:229
 testAliHLTDataBuffer.C:230
 testAliHLTDataBuffer.C:231
 testAliHLTDataBuffer.C:232
 testAliHLTDataBuffer.C:233
 testAliHLTDataBuffer.C:234
 testAliHLTDataBuffer.C:235
 testAliHLTDataBuffer.C:236
 testAliHLTDataBuffer.C:237
 testAliHLTDataBuffer.C:238
 testAliHLTDataBuffer.C:239
 testAliHLTDataBuffer.C:240
 testAliHLTDataBuffer.C:241
 testAliHLTDataBuffer.C:242
 testAliHLTDataBuffer.C:243
 testAliHLTDataBuffer.C:244
 testAliHLTDataBuffer.C:245
 testAliHLTDataBuffer.C:246
 testAliHLTDataBuffer.C:247
 testAliHLTDataBuffer.C:248
 testAliHLTDataBuffer.C:249
 testAliHLTDataBuffer.C:250
 testAliHLTDataBuffer.C:251
 testAliHLTDataBuffer.C:252
 testAliHLTDataBuffer.C:253
 testAliHLTDataBuffer.C:254
 testAliHLTDataBuffer.C:255
 testAliHLTDataBuffer.C:256
 testAliHLTDataBuffer.C:257
 testAliHLTDataBuffer.C:258
 testAliHLTDataBuffer.C:259
 testAliHLTDataBuffer.C:260
 testAliHLTDataBuffer.C:261
 testAliHLTDataBuffer.C:262
 testAliHLTDataBuffer.C:263
 testAliHLTDataBuffer.C:264
 testAliHLTDataBuffer.C:265
 testAliHLTDataBuffer.C:266
 testAliHLTDataBuffer.C:267
 testAliHLTDataBuffer.C:268
 testAliHLTDataBuffer.C:269
 testAliHLTDataBuffer.C:270
 testAliHLTDataBuffer.C:271
 testAliHLTDataBuffer.C:272
 testAliHLTDataBuffer.C:273
 testAliHLTDataBuffer.C:274
 testAliHLTDataBuffer.C:275
 testAliHLTDataBuffer.C:276
 testAliHLTDataBuffer.C:277
 testAliHLTDataBuffer.C:278
 testAliHLTDataBuffer.C:279
 testAliHLTDataBuffer.C:280
 testAliHLTDataBuffer.C:281
 testAliHLTDataBuffer.C:282
 testAliHLTDataBuffer.C:283
 testAliHLTDataBuffer.C:284
 testAliHLTDataBuffer.C:285
 testAliHLTDataBuffer.C:286
 testAliHLTDataBuffer.C:287
 testAliHLTDataBuffer.C:288
 testAliHLTDataBuffer.C:289
 testAliHLTDataBuffer.C:290
 testAliHLTDataBuffer.C:291
 testAliHLTDataBuffer.C:292
 testAliHLTDataBuffer.C:293
 testAliHLTDataBuffer.C:294
 testAliHLTDataBuffer.C:295
 testAliHLTDataBuffer.C:296
 testAliHLTDataBuffer.C:297
 testAliHLTDataBuffer.C:298
 testAliHLTDataBuffer.C:299
 testAliHLTDataBuffer.C:300
 testAliHLTDataBuffer.C:301
 testAliHLTDataBuffer.C:302
 testAliHLTDataBuffer.C:303
 testAliHLTDataBuffer.C:304
 testAliHLTDataBuffer.C:305
 testAliHLTDataBuffer.C:306
 testAliHLTDataBuffer.C:307
 testAliHLTDataBuffer.C:308
 testAliHLTDataBuffer.C:309
 testAliHLTDataBuffer.C:310
 testAliHLTDataBuffer.C:311
 testAliHLTDataBuffer.C:312
 testAliHLTDataBuffer.C:313
 testAliHLTDataBuffer.C:314
 testAliHLTDataBuffer.C:315
 testAliHLTDataBuffer.C:316
 testAliHLTDataBuffer.C:317
 testAliHLTDataBuffer.C:318
 testAliHLTDataBuffer.C:319
 testAliHLTDataBuffer.C:320
 testAliHLTDataBuffer.C:321
 testAliHLTDataBuffer.C:322
 testAliHLTDataBuffer.C:323
 testAliHLTDataBuffer.C:324
 testAliHLTDataBuffer.C:325
 testAliHLTDataBuffer.C:326
 testAliHLTDataBuffer.C:327
 testAliHLTDataBuffer.C:328
 testAliHLTDataBuffer.C:329
 testAliHLTDataBuffer.C:330
 testAliHLTDataBuffer.C:331
 testAliHLTDataBuffer.C:332
 testAliHLTDataBuffer.C:333
 testAliHLTDataBuffer.C:334
 testAliHLTDataBuffer.C:335
 testAliHLTDataBuffer.C:336
 testAliHLTDataBuffer.C:337
 testAliHLTDataBuffer.C:338
 testAliHLTDataBuffer.C:339
 testAliHLTDataBuffer.C:340
 testAliHLTDataBuffer.C:341
 testAliHLTDataBuffer.C:342
 testAliHLTDataBuffer.C:343
 testAliHLTDataBuffer.C:344
 testAliHLTDataBuffer.C:345
 testAliHLTDataBuffer.C:346
 testAliHLTDataBuffer.C:347
 testAliHLTDataBuffer.C:348
 testAliHLTDataBuffer.C:349
 testAliHLTDataBuffer.C:350
 testAliHLTDataBuffer.C:351
 testAliHLTDataBuffer.C:352
 testAliHLTDataBuffer.C:353
 testAliHLTDataBuffer.C:354
 testAliHLTDataBuffer.C:355
 testAliHLTDataBuffer.C:356
 testAliHLTDataBuffer.C:357
 testAliHLTDataBuffer.C:358
 testAliHLTDataBuffer.C:359
 testAliHLTDataBuffer.C:360
 testAliHLTDataBuffer.C:361
 testAliHLTDataBuffer.C:362
 testAliHLTDataBuffer.C:363
 testAliHLTDataBuffer.C:364
 testAliHLTDataBuffer.C:365
 testAliHLTDataBuffer.C:366
 testAliHLTDataBuffer.C:367
 testAliHLTDataBuffer.C:368
 testAliHLTDataBuffer.C:369
 testAliHLTDataBuffer.C:370
 testAliHLTDataBuffer.C:371
 testAliHLTDataBuffer.C:372
 testAliHLTDataBuffer.C:373
 testAliHLTDataBuffer.C:374
 testAliHLTDataBuffer.C:375
 testAliHLTDataBuffer.C:376
 testAliHLTDataBuffer.C:377
 testAliHLTDataBuffer.C:378
 testAliHLTDataBuffer.C:379
 testAliHLTDataBuffer.C:380
 testAliHLTDataBuffer.C:381
 testAliHLTDataBuffer.C:382
 testAliHLTDataBuffer.C:383
 testAliHLTDataBuffer.C:384
 testAliHLTDataBuffer.C:385
 testAliHLTDataBuffer.C:386
 testAliHLTDataBuffer.C:387
 testAliHLTDataBuffer.C:388
 testAliHLTDataBuffer.C:389
 testAliHLTDataBuffer.C:390
 testAliHLTDataBuffer.C:391
 testAliHLTDataBuffer.C:392
 testAliHLTDataBuffer.C:393
 testAliHLTDataBuffer.C:394
 testAliHLTDataBuffer.C:395
 testAliHLTDataBuffer.C:396
 testAliHLTDataBuffer.C:397
 testAliHLTDataBuffer.C:398
 testAliHLTDataBuffer.C:399
 testAliHLTDataBuffer.C:400
 testAliHLTDataBuffer.C:401
 testAliHLTDataBuffer.C:402
 testAliHLTDataBuffer.C:403
 testAliHLTDataBuffer.C:404
 testAliHLTDataBuffer.C:405
 testAliHLTDataBuffer.C:406
 testAliHLTDataBuffer.C:407
 testAliHLTDataBuffer.C:408
 testAliHLTDataBuffer.C:409
 testAliHLTDataBuffer.C:410
 testAliHLTDataBuffer.C:411
 testAliHLTDataBuffer.C:412
 testAliHLTDataBuffer.C:413
 testAliHLTDataBuffer.C:414
 testAliHLTDataBuffer.C:415
 testAliHLTDataBuffer.C:416
 testAliHLTDataBuffer.C:417
 testAliHLTDataBuffer.C:418
 testAliHLTDataBuffer.C:419
 testAliHLTDataBuffer.C:420
 testAliHLTDataBuffer.C:421
 testAliHLTDataBuffer.C:422
 testAliHLTDataBuffer.C:423
 testAliHLTDataBuffer.C:424
 testAliHLTDataBuffer.C:425
 testAliHLTDataBuffer.C:426
 testAliHLTDataBuffer.C:427
 testAliHLTDataBuffer.C:428
 testAliHLTDataBuffer.C:429
 testAliHLTDataBuffer.C:430
 testAliHLTDataBuffer.C:431
 testAliHLTDataBuffer.C:432
 testAliHLTDataBuffer.C:433
 testAliHLTDataBuffer.C:434
 testAliHLTDataBuffer.C:435
 testAliHLTDataBuffer.C:436
 testAliHLTDataBuffer.C:437
 testAliHLTDataBuffer.C:438
 testAliHLTDataBuffer.C:439
 testAliHLTDataBuffer.C:440
 testAliHLTDataBuffer.C:441
 testAliHLTDataBuffer.C:442
 testAliHLTDataBuffer.C:443
 testAliHLTDataBuffer.C:444
 testAliHLTDataBuffer.C:445
 testAliHLTDataBuffer.C:446
 testAliHLTDataBuffer.C:447
 testAliHLTDataBuffer.C:448
 testAliHLTDataBuffer.C:449
 testAliHLTDataBuffer.C:450
 testAliHLTDataBuffer.C:451
 testAliHLTDataBuffer.C:452
 testAliHLTDataBuffer.C:453
 testAliHLTDataBuffer.C:454
 testAliHLTDataBuffer.C:455
 testAliHLTDataBuffer.C:456
 testAliHLTDataBuffer.C:457
 testAliHLTDataBuffer.C:458
 testAliHLTDataBuffer.C:459
 testAliHLTDataBuffer.C:460
 testAliHLTDataBuffer.C:461
 testAliHLTDataBuffer.C:462
 testAliHLTDataBuffer.C:463
 testAliHLTDataBuffer.C:464
 testAliHLTDataBuffer.C:465
 testAliHLTDataBuffer.C:466
 testAliHLTDataBuffer.C:467
 testAliHLTDataBuffer.C:468
 testAliHLTDataBuffer.C:469
 testAliHLTDataBuffer.C:470
 testAliHLTDataBuffer.C:471
 testAliHLTDataBuffer.C:472
 testAliHLTDataBuffer.C:473
 testAliHLTDataBuffer.C:474
 testAliHLTDataBuffer.C:475
 testAliHLTDataBuffer.C:476
 testAliHLTDataBuffer.C:477
 testAliHLTDataBuffer.C:478
 testAliHLTDataBuffer.C:479
 testAliHLTDataBuffer.C:480
 testAliHLTDataBuffer.C:481
 testAliHLTDataBuffer.C:482
 testAliHLTDataBuffer.C:483
 testAliHLTDataBuffer.C:484
 testAliHLTDataBuffer.C:485
 testAliHLTDataBuffer.C:486
 testAliHLTDataBuffer.C:487
 testAliHLTDataBuffer.C:488
 testAliHLTDataBuffer.C:489
 testAliHLTDataBuffer.C:490
 testAliHLTDataBuffer.C:491
 testAliHLTDataBuffer.C:492
 testAliHLTDataBuffer.C:493
 testAliHLTDataBuffer.C:494
 testAliHLTDataBuffer.C:495
 testAliHLTDataBuffer.C:496
 testAliHLTDataBuffer.C:497
 testAliHLTDataBuffer.C:498
 testAliHLTDataBuffer.C:499
 testAliHLTDataBuffer.C:500
 testAliHLTDataBuffer.C:501
 testAliHLTDataBuffer.C:502
 testAliHLTDataBuffer.C:503
 testAliHLTDataBuffer.C:504
 testAliHLTDataBuffer.C:505
 testAliHLTDataBuffer.C:506
 testAliHLTDataBuffer.C:507
 testAliHLTDataBuffer.C:508
 testAliHLTDataBuffer.C:509
 testAliHLTDataBuffer.C:510
 testAliHLTDataBuffer.C:511
 testAliHLTDataBuffer.C:512
 testAliHLTDataBuffer.C:513
 testAliHLTDataBuffer.C:514
 testAliHLTDataBuffer.C:515
 testAliHLTDataBuffer.C:516
 testAliHLTDataBuffer.C:517
 testAliHLTDataBuffer.C:518
 testAliHLTDataBuffer.C:519
 testAliHLTDataBuffer.C:520
 testAliHLTDataBuffer.C:521
 testAliHLTDataBuffer.C:522
 testAliHLTDataBuffer.C:523
 testAliHLTDataBuffer.C:524
 testAliHLTDataBuffer.C:525
 testAliHLTDataBuffer.C:526
 testAliHLTDataBuffer.C:527
 testAliHLTDataBuffer.C:528
 testAliHLTDataBuffer.C:529
 testAliHLTDataBuffer.C:530
 testAliHLTDataBuffer.C:531
 testAliHLTDataBuffer.C:532
 testAliHLTDataBuffer.C:533
 testAliHLTDataBuffer.C:534
 testAliHLTDataBuffer.C:535
 testAliHLTDataBuffer.C:536
 testAliHLTDataBuffer.C:537
 testAliHLTDataBuffer.C:538
 testAliHLTDataBuffer.C:539
 testAliHLTDataBuffer.C:540
 testAliHLTDataBuffer.C:541
 testAliHLTDataBuffer.C:542
 testAliHLTDataBuffer.C:543
 testAliHLTDataBuffer.C:544
 testAliHLTDataBuffer.C:545
 testAliHLTDataBuffer.C:546
 testAliHLTDataBuffer.C:547
 testAliHLTDataBuffer.C:548
 testAliHLTDataBuffer.C:549
 testAliHLTDataBuffer.C:550
 testAliHLTDataBuffer.C:551
 testAliHLTDataBuffer.C:552
 testAliHLTDataBuffer.C:553
 testAliHLTDataBuffer.C:554
 testAliHLTDataBuffer.C:555
 testAliHLTDataBuffer.C:556
 testAliHLTDataBuffer.C:557
 testAliHLTDataBuffer.C:558
 testAliHLTDataBuffer.C:559
 testAliHLTDataBuffer.C:560
 testAliHLTDataBuffer.C:561
 testAliHLTDataBuffer.C:562
 testAliHLTDataBuffer.C:563
 testAliHLTDataBuffer.C:564
 testAliHLTDataBuffer.C:565
 testAliHLTDataBuffer.C:566
 testAliHLTDataBuffer.C:567
 testAliHLTDataBuffer.C:568
 testAliHLTDataBuffer.C:569
 testAliHLTDataBuffer.C:570
 testAliHLTDataBuffer.C:571
 testAliHLTDataBuffer.C:572
 testAliHLTDataBuffer.C:573
 testAliHLTDataBuffer.C:574
 testAliHLTDataBuffer.C:575
 testAliHLTDataBuffer.C:576
 testAliHLTDataBuffer.C:577
 testAliHLTDataBuffer.C:578
 testAliHLTDataBuffer.C:579
 testAliHLTDataBuffer.C:580
 testAliHLTDataBuffer.C:581
 testAliHLTDataBuffer.C:582
 testAliHLTDataBuffer.C:583
 testAliHLTDataBuffer.C:584
 testAliHLTDataBuffer.C:585
 testAliHLTDataBuffer.C:586
 testAliHLTDataBuffer.C:587
 testAliHLTDataBuffer.C:588
 testAliHLTDataBuffer.C:589
 testAliHLTDataBuffer.C:590
 testAliHLTDataBuffer.C:591
 testAliHLTDataBuffer.C:592
 testAliHLTDataBuffer.C:593
 testAliHLTDataBuffer.C:594
 testAliHLTDataBuffer.C:595
 testAliHLTDataBuffer.C:596
 testAliHLTDataBuffer.C:597
 testAliHLTDataBuffer.C:598
 testAliHLTDataBuffer.C:599
 testAliHLTDataBuffer.C:600
 testAliHLTDataBuffer.C:601
 testAliHLTDataBuffer.C:602
 testAliHLTDataBuffer.C:603
 testAliHLTDataBuffer.C:604
 testAliHLTDataBuffer.C:605
 testAliHLTDataBuffer.C:606
 testAliHLTDataBuffer.C:607
 testAliHLTDataBuffer.C:608
 testAliHLTDataBuffer.C:609
 testAliHLTDataBuffer.C:610
 testAliHLTDataBuffer.C:611
 testAliHLTDataBuffer.C:612
 testAliHLTDataBuffer.C:613
 testAliHLTDataBuffer.C:614
 testAliHLTDataBuffer.C:615
 testAliHLTDataBuffer.C:616
 testAliHLTDataBuffer.C:617
 testAliHLTDataBuffer.C:618
 testAliHLTDataBuffer.C:619
 testAliHLTDataBuffer.C:620
 testAliHLTDataBuffer.C:621
 testAliHLTDataBuffer.C:622
 testAliHLTDataBuffer.C:623
 testAliHLTDataBuffer.C:624
 testAliHLTDataBuffer.C:625
 testAliHLTDataBuffer.C:626
 testAliHLTDataBuffer.C:627
 testAliHLTDataBuffer.C:628
 testAliHLTDataBuffer.C:629
 testAliHLTDataBuffer.C:630
 testAliHLTDataBuffer.C:631
 testAliHLTDataBuffer.C:632
 testAliHLTDataBuffer.C:633
 testAliHLTDataBuffer.C:634
 testAliHLTDataBuffer.C:635
 testAliHLTDataBuffer.C:636
 testAliHLTDataBuffer.C:637
 testAliHLTDataBuffer.C:638
 testAliHLTDataBuffer.C:639
 testAliHLTDataBuffer.C:640
 testAliHLTDataBuffer.C:641
 testAliHLTDataBuffer.C:642