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   AliHLTDataDeflater.cxx
/// @author Matthias Richter, Timm Steinbeck
/// @date   2011-08-10
/// @brief  Data deflater class storing only necessary bits
/// @note   Code original from AliHLTTPCCompModelDeflater

#include "AliHLTDataDeflater.h"
#include "AliHLTErrorGuard.h"
#include "TObjArray.h"
#include "TH1I.h"
#include "TH2D.h"
#include "TFile.h"
#include "TMath.h"
#include <memory>
#include <algorithm>
#include <iostream>

/** ROOT macro for the implementation of ROOT specific class methods */
ClassImp(AliHLTDataDeflater)

AliHLTDataDeflater::AliHLTDataDeflater()
  : AliHLTLogging()
  , fBitDataCurrentWord(0)
  , fBitDataCurrentPosInWord(0)
  , fBitDataCurrentOutput(NULL)
  , fBitDataCurrentOutputStart(NULL)
  , fBitDataCurrentOutputEnd(NULL)
  , fHistograms(NULL)
  , fParameterCompression(NULL)
  , fParameterSize(NULL)
{
  // see header file for class documentation
  // or
  // refer to README to build package
  // or
  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
  if (fHistograms) fHistograms->SetOwner(kTRUE);
}

AliHLTDataDeflater::~AliHLTDataDeflater()
{
  // destructor
  Clear();

  if (fHistograms)
    delete fHistograms;
  fHistograms=NULL;
  if (fParameterCompression)
    delete fParameterCompression;
  fParameterCompression=NULL;
  if (fParameterSize)
    delete fParameterSize;
  fParameterSize=NULL;
}

int AliHLTDataDeflater::InitBitDataOutput( AliHLTUInt8_t* output, UInt_t outputSize)
{
  // init the target buffer
  fBitDataCurrentWord = 0;
  fBitDataCurrentPosInWord = 7;
  fBitDataCurrentOutput = fBitDataCurrentOutputStart = output;
  fBitDataCurrentOutputEnd = output+outputSize;

  return 0;
}

void AliHLTDataDeflater::CloseBitDataOutput()
{
  // pad to full byte and clear internal pointer references
  Pad8Bits();
  fBitDataCurrentWord=0;
  fBitDataCurrentPosInWord=0;
  fBitDataCurrentOutput=NULL;
  fBitDataCurrentOutputStart=NULL;
  fBitDataCurrentOutputEnd=NULL;
}

AliHLTUInt8_t AliHLTDataDeflater::GetCurrentOutputByte( Int_t offset ) const
{
  // get the current byte
  if ( !offset )
    return fBitDataCurrentWord;
  else
    return *(fBitDataCurrentOutput+offset);
}

bool AliHLTDataDeflater::OutputBit( AliHLTUInt32_t const & value )
{
  // write one bit to the current byte and position
  if ( fBitDataCurrentOutput>=fBitDataCurrentOutputEnd )
    return false;
  fBitDataCurrentWord |= (value & 1) << fBitDataCurrentPosInWord;
  if ( fBitDataCurrentPosInWord )
    fBitDataCurrentPosInWord--;
  else {
    *fBitDataCurrentOutput = fBitDataCurrentWord;
    fBitDataCurrentPosInWord = 7;
    fBitDataCurrentOutput++;
    fBitDataCurrentWord = 0;
  }
  return true;
}

bool AliHLTDataDeflater::OutputBits( AliHLTUInt64_t const & value, UInt_t const & bitCount )
{
  // write bit pattern to the current byte and position
  if ( bitCount>64 ) {
    HLTFatal( "Internal error: Attempt to write more than 64 bits (%u)", (unsigned)bitCount );
    return false;
  }
  UInt_t bitsToWrite=bitCount;
  UInt_t curBitCount;
  while ( bitsToWrite>0 ) {
    if ( fBitDataCurrentOutput>=fBitDataCurrentOutputEnd )
      return false;
#if 1
    if ( bitsToWrite >= fBitDataCurrentPosInWord+1 )
      curBitCount = fBitDataCurrentPosInWord+1;
    else
      curBitCount = bitsToWrite;
    fBitDataCurrentWord |= ( (value >> (bitsToWrite-curBitCount)) & ((1<<curBitCount)-1) ) << (fBitDataCurrentPosInWord+1-curBitCount);
    if ( fBitDataCurrentPosInWord < curBitCount )
      {
	*fBitDataCurrentOutput = fBitDataCurrentWord;
	fBitDataCurrentPosInWord = 7;
	fBitDataCurrentOutput++;
	fBitDataCurrentWord = 0;
      }
    else
      fBitDataCurrentPosInWord -= curBitCount;
    bitsToWrite -= curBitCount;

#else
    AliHLTUInt8_t curValue;
    if ( bitsToWrite>=8 )
      {
	curBitCount=8;
	curValue = (value >> bitsToWrite-8) & 0xFF;
	bitsToWrite -= 8;
      }
    else
      {
	curBitCount=bitsToWrite;
	curValue = value & ( (1<<bitsToWrite)-1 );
	bitsToWrite = 0;
      }
    if ( fBitDataCurrentPosInWord+1>curBitCount )
      {
	fBitDataCurrentWord |= curValue << (fBitDataCurrentPosInWord-curBitCount+1);
	fBitDataCurrentPosInWord -= curBitCount;
      }
    else if ( fBitDataCurrentPosInWord+1==curBitCount )
      {
	fBitDataCurrentWord |= curValue;
	*fBitDataCurrentOutput = fBitDataCurrentWord;
	fBitDataCurrentPosInWord = 7;
	fBitDataCurrentOutput++;
	fBitDataCurrentWord = 0;
      }
    else
      {
	const UInt_t first = fBitDataCurrentPosInWord+1; // Number of bits for first block
	const UInt_t second = curBitCount-first; // Number of bits for second block
	fBitDataCurrentWord |= ( curValue >> second ) & ((1<<first)-1);
	*fBitDataCurrentOutput = fBitDataCurrentWord;
	fBitDataCurrentOutput++;
	if ( fBitDataCurrentOutput>=fBitDataCurrentOutputEnd )
	  return false;
	fBitDataCurrentWord = curValue & ((1<<second)-1) << (8-second);
	fBitDataCurrentPosInWord = 7-second;
      }
#endif
  }
  return true;
}

bool AliHLTDataDeflater::OutputBits( std::bitset<64> const & value, UInt_t const & bitCount )
{
  // write bit pattern to the current byte and position
  if ( bitCount>64 ) {
    HLTFatal( "Internal error: Attempt to write more than 64 bits (%u)", (unsigned)bitCount );
    return false;
  }
  static const std::bitset<64> mask8bit(255ul);
  UInt_t bitsToWrite=bitCount;
  UInt_t curBitCount;
  while ( bitsToWrite>0 ) {
    if ( fBitDataCurrentOutput>=fBitDataCurrentOutputEnd )
      return false;
    if ( bitsToWrite >= fBitDataCurrentPosInWord+1 )
      curBitCount = fBitDataCurrentPosInWord+1;
    else
      curBitCount = bitsToWrite;
    std::bitset<64> valwrite=(value >> (bitsToWrite-curBitCount)) & mask8bit;
    fBitDataCurrentWord |= ( valwrite.to_ulong() & ((1<<curBitCount)-1) ) << (fBitDataCurrentPosInWord+1-curBitCount);
    if ( fBitDataCurrentPosInWord < curBitCount )
      {
	*fBitDataCurrentOutput = fBitDataCurrentWord;
	fBitDataCurrentPosInWord = 7;
	fBitDataCurrentOutput++;
	fBitDataCurrentWord = 0;
      }
    else
      fBitDataCurrentPosInWord -= curBitCount;
    bitsToWrite -= curBitCount;
  }
  return true;
}

void AliHLTDataDeflater::Pad8Bits()
{
  // finish the current word
  if ( fBitDataCurrentPosInWord==7 )
    return;
  *fBitDataCurrentOutput = fBitDataCurrentWord;
  fBitDataCurrentPosInWord = 7;
  fBitDataCurrentOutput++;
  fBitDataCurrentWord = 0;
}

bool AliHLTDataDeflater::OutputBytes( AliHLTUInt8_t const * data, UInt_t const & byteCount )
{
  // write sequence of bytes
  Pad8Bits();
  if ( fBitDataCurrentOutput+byteCount>fBitDataCurrentOutputEnd )
    return false;
  memcpy( fBitDataCurrentOutput, data, byteCount );
  fBitDataCurrentOutput += byteCount;
  return true;
}

bool AliHLTDataDeflater::OutputParameterBits( int parameterId, AliHLTUInt64_t const & value )
{
  // write bit pattern of a member to the current byte and position
  return OutputParameterBits(parameterId, value, 0);
}

bool AliHLTDataDeflater::OutputParameterBits( int /*(parameterId*/, AliHLTUInt64_t const & /*value*/ , int /*lengthOffset*/)
{
  // write bit pattern of a member to the current byte and position
  ALIHLTERRORGUARD(1,"method needs to be implemented in child class");
  return false;
}

void AliHLTDataDeflater::Clear(Option_t * /*option*/)
{
  // internal cleanup
}

void AliHLTDataDeflater::Print(Option_t *option) const
{
  // print info
  Print(cout, option);
}

void AliHLTDataDeflater::Print(ostream& out, Option_t */*option*/) const
{
  // print to stream
  out << "AliHLTDataDeflater: " << endl;
}

ostream& operator<<(ostream &out, const AliHLTDataDeflater& me)
{
  me.Print(out);
  return out;
}

int AliHLTDataDeflater::EnableStatistics()
{
  /// enable statistics accounting
  if (!fHistograms) {
    fHistograms=new TObjArray;
    if (!fHistograms) return -ENOMEM;
    fHistograms->SetOwner(kTRUE);
  }
  return 0;
}

int AliHLTDataDeflater::AddHistogram(int id, const char* name, int bitWidth, TH1* h)
{
  /// add a histogram for deflater statistic of the corresponding parameter
  /// a histogram is created with default settings if h is not specified; if
  /// provided, the ownership goes over to the base class
  if (!fHistograms) {
    fHistograms=new TObjArray;
    if (!fHistograms) return -ENOMEM;
    fHistograms->SetOwner(kTRUE);
  }
  if (id>=0 && fHistograms->GetEntriesFast()>id && fHistograms->At(id)!=NULL) {
    HLTWarning("parameter with id %d has existing object (%s), skipping histogram %s",
	       id, fHistograms->At(id)->GetName(), h?h->GetName():name);
    return -EEXIST;
  }
  if (id<0 && h!=NULL && fHistograms->FindObject(h->GetName())) {
    HLTWarning("parameter with name %s already existing, skipping histogram", h->GetName());
    return -EEXIST;
  }
  if (!h)
    h=new TH1I(name, name, 100, 0, 1<<bitWidth);
  if (!h) return -ENOMEM;
  fHistograms->Add(h);
  return 0;
}

int AliHLTDataDeflater::FillStatistics(int id, AliHLTUInt64_t value, unsigned length, float codingWeight)
{
  /// fill statistics for a parameter
  if (!fHistograms ||
      fHistograms->GetEntriesFast()<=id ||
      id<0) return 0;

  TObject* o=fHistograms->At(id);
  if (o) {
    TH1* h=dynamic_cast<TH1*>(o);
    if (h) {
      h->Fill(value);
    }
  }

  if (!fParameterCompression) {
    int bins=fHistograms->GetEntriesFast();
    fParameterCompression=new TH2D("ParameterCompression", "ParameterCompression", bins, 0, bins, 1000, 0., 5.0);
  }
  if (fParameterCompression) {
    fParameterCompression->Fill(id, codingWeight);
  }
  if (!fParameterSize) {
    int bins=fHistograms->GetEntriesFast();
    fParameterSize=new TH2D("ParameterSize", "ParameterSize", bins, 0, bins, 1000, 0., 64.0);
  }
  if (fParameterSize) {
    fParameterSize->Fill(id, length);
  }

  return 0;
}

void AliHLTDataDeflater::SaveAs(const char *filename,Option_t */*option*/) const
{
  // safe histograms to file
  std::auto_ptr<TFile> file(TFile::Open(filename, "RECREATE"));
  if (!file.get() || file->IsZombie()) {
    HLTError("can not open file %s", filename);;
    return;
  }
  file->cd();
  if (fHistograms) {
    for (int i=0; i<fHistograms->GetEntries(); i++) {
      if (fHistograms->At(i)==NULL || 
	  !fHistograms->At(i)->InheritsFrom("TH1") ||
	  fHistograms->At(i)->InheritsFrom("TH2") ||
	  fHistograms->At(i)->InheritsFrom("TH3")
	  ) continue; // only TH1 objects in the list
      TH1* h=reinterpret_cast<TH1*>(fHistograms->At(i));
      if (!h) continue;
      float entropy=CalcEntropy(h);
      if (entropy<0) continue;
      TString title=h->GetTitle();
      title+=Form(" entropy %.2f", entropy);
      h->SetTitle(title);
    }
    fHistograms->Write();
    if (fParameterCompression)
      fParameterCompression->Write();
    if (fParameterSize)
      fParameterSize->Write();
  }

  file->Close();
}

float AliHLTDataDeflater::CalcEntropy(TH1* histo, const char* /*option*/, int mode)
{

  if (!histo) return -1000.;

  float l2=TMath::Log(2.0);
  float integral=histo->Integral(0,histo->GetNbinsX());
  int centerbin=mode*histo->GetNbinsX()/2;
  int nofBins=histo->GetNbinsX()-centerbin;
  float entropy=0.0;
  for (int offset=0; offset<nofBins; offset++) {
    float abundance=histo->GetBinContent(offset);
    if (abundance<1.0) continue;
    entropy += (- (Double_t) abundance / (Double_t) integral ) * log( ( (Double_t) abundance / (Double_t) integral )) / (l2);
  }

  return entropy;
}
 AliHLTDataDeflater.cxx:1
 AliHLTDataDeflater.cxx:2
 AliHLTDataDeflater.cxx:3
 AliHLTDataDeflater.cxx:4
 AliHLTDataDeflater.cxx:5
 AliHLTDataDeflater.cxx:6
 AliHLTDataDeflater.cxx:7
 AliHLTDataDeflater.cxx:8
 AliHLTDataDeflater.cxx:9
 AliHLTDataDeflater.cxx:10
 AliHLTDataDeflater.cxx:11
 AliHLTDataDeflater.cxx:12
 AliHLTDataDeflater.cxx:13
 AliHLTDataDeflater.cxx:14
 AliHLTDataDeflater.cxx:15
 AliHLTDataDeflater.cxx:16
 AliHLTDataDeflater.cxx:17
 AliHLTDataDeflater.cxx:18
 AliHLTDataDeflater.cxx:19
 AliHLTDataDeflater.cxx:20
 AliHLTDataDeflater.cxx:21
 AliHLTDataDeflater.cxx:22
 AliHLTDataDeflater.cxx:23
 AliHLTDataDeflater.cxx:24
 AliHLTDataDeflater.cxx:25
 AliHLTDataDeflater.cxx:26
 AliHLTDataDeflater.cxx:27
 AliHLTDataDeflater.cxx:28
 AliHLTDataDeflater.cxx:29
 AliHLTDataDeflater.cxx:30
 AliHLTDataDeflater.cxx:31
 AliHLTDataDeflater.cxx:32
 AliHLTDataDeflater.cxx:33
 AliHLTDataDeflater.cxx:34
 AliHLTDataDeflater.cxx:35
 AliHLTDataDeflater.cxx:36
 AliHLTDataDeflater.cxx:37
 AliHLTDataDeflater.cxx:38
 AliHLTDataDeflater.cxx:39
 AliHLTDataDeflater.cxx:40
 AliHLTDataDeflater.cxx:41
 AliHLTDataDeflater.cxx:42
 AliHLTDataDeflater.cxx:43
 AliHLTDataDeflater.cxx:44
 AliHLTDataDeflater.cxx:45
 AliHLTDataDeflater.cxx:46
 AliHLTDataDeflater.cxx:47
 AliHLTDataDeflater.cxx:48
 AliHLTDataDeflater.cxx:49
 AliHLTDataDeflater.cxx:50
 AliHLTDataDeflater.cxx:51
 AliHLTDataDeflater.cxx:52
 AliHLTDataDeflater.cxx:53
 AliHLTDataDeflater.cxx:54
 AliHLTDataDeflater.cxx:55
 AliHLTDataDeflater.cxx:56
 AliHLTDataDeflater.cxx:57
 AliHLTDataDeflater.cxx:58
 AliHLTDataDeflater.cxx:59
 AliHLTDataDeflater.cxx:60
 AliHLTDataDeflater.cxx:61
 AliHLTDataDeflater.cxx:62
 AliHLTDataDeflater.cxx:63
 AliHLTDataDeflater.cxx:64
 AliHLTDataDeflater.cxx:65
 AliHLTDataDeflater.cxx:66
 AliHLTDataDeflater.cxx:67
 AliHLTDataDeflater.cxx:68
 AliHLTDataDeflater.cxx:69
 AliHLTDataDeflater.cxx:70
 AliHLTDataDeflater.cxx:71
 AliHLTDataDeflater.cxx:72
 AliHLTDataDeflater.cxx:73
 AliHLTDataDeflater.cxx:74
 AliHLTDataDeflater.cxx:75
 AliHLTDataDeflater.cxx:76
 AliHLTDataDeflater.cxx:77
 AliHLTDataDeflater.cxx:78
 AliHLTDataDeflater.cxx:79
 AliHLTDataDeflater.cxx:80
 AliHLTDataDeflater.cxx:81
 AliHLTDataDeflater.cxx:82
 AliHLTDataDeflater.cxx:83
 AliHLTDataDeflater.cxx:84
 AliHLTDataDeflater.cxx:85
 AliHLTDataDeflater.cxx:86
 AliHLTDataDeflater.cxx:87
 AliHLTDataDeflater.cxx:88
 AliHLTDataDeflater.cxx:89
 AliHLTDataDeflater.cxx:90
 AliHLTDataDeflater.cxx:91
 AliHLTDataDeflater.cxx:92
 AliHLTDataDeflater.cxx:93
 AliHLTDataDeflater.cxx:94
 AliHLTDataDeflater.cxx:95
 AliHLTDataDeflater.cxx:96
 AliHLTDataDeflater.cxx:97
 AliHLTDataDeflater.cxx:98
 AliHLTDataDeflater.cxx:99
 AliHLTDataDeflater.cxx:100
 AliHLTDataDeflater.cxx:101
 AliHLTDataDeflater.cxx:102
 AliHLTDataDeflater.cxx:103
 AliHLTDataDeflater.cxx:104
 AliHLTDataDeflater.cxx:105
 AliHLTDataDeflater.cxx:106
 AliHLTDataDeflater.cxx:107
 AliHLTDataDeflater.cxx:108
 AliHLTDataDeflater.cxx:109
 AliHLTDataDeflater.cxx:110
 AliHLTDataDeflater.cxx:111
 AliHLTDataDeflater.cxx:112
 AliHLTDataDeflater.cxx:113
 AliHLTDataDeflater.cxx:114
 AliHLTDataDeflater.cxx:115
 AliHLTDataDeflater.cxx:116
 AliHLTDataDeflater.cxx:117
 AliHLTDataDeflater.cxx:118
 AliHLTDataDeflater.cxx:119
 AliHLTDataDeflater.cxx:120
 AliHLTDataDeflater.cxx:121
 AliHLTDataDeflater.cxx:122
 AliHLTDataDeflater.cxx:123
 AliHLTDataDeflater.cxx:124
 AliHLTDataDeflater.cxx:125
 AliHLTDataDeflater.cxx:126
 AliHLTDataDeflater.cxx:127
 AliHLTDataDeflater.cxx:128
 AliHLTDataDeflater.cxx:129
 AliHLTDataDeflater.cxx:130
 AliHLTDataDeflater.cxx:131
 AliHLTDataDeflater.cxx:132
 AliHLTDataDeflater.cxx:133
 AliHLTDataDeflater.cxx:134
 AliHLTDataDeflater.cxx:135
 AliHLTDataDeflater.cxx:136
 AliHLTDataDeflater.cxx:137
 AliHLTDataDeflater.cxx:138
 AliHLTDataDeflater.cxx:139
 AliHLTDataDeflater.cxx:140
 AliHLTDataDeflater.cxx:141
 AliHLTDataDeflater.cxx:142
 AliHLTDataDeflater.cxx:143
 AliHLTDataDeflater.cxx:144
 AliHLTDataDeflater.cxx:145
 AliHLTDataDeflater.cxx:146
 AliHLTDataDeflater.cxx:147
 AliHLTDataDeflater.cxx:148
 AliHLTDataDeflater.cxx:149
 AliHLTDataDeflater.cxx:150
 AliHLTDataDeflater.cxx:151
 AliHLTDataDeflater.cxx:152
 AliHLTDataDeflater.cxx:153
 AliHLTDataDeflater.cxx:154
 AliHLTDataDeflater.cxx:155
 AliHLTDataDeflater.cxx:156
 AliHLTDataDeflater.cxx:157
 AliHLTDataDeflater.cxx:158
 AliHLTDataDeflater.cxx:159
 AliHLTDataDeflater.cxx:160
 AliHLTDataDeflater.cxx:161
 AliHLTDataDeflater.cxx:162
 AliHLTDataDeflater.cxx:163
 AliHLTDataDeflater.cxx:164
 AliHLTDataDeflater.cxx:165
 AliHLTDataDeflater.cxx:166
 AliHLTDataDeflater.cxx:167
 AliHLTDataDeflater.cxx:168
 AliHLTDataDeflater.cxx:169
 AliHLTDataDeflater.cxx:170
 AliHLTDataDeflater.cxx:171
 AliHLTDataDeflater.cxx:172
 AliHLTDataDeflater.cxx:173
 AliHLTDataDeflater.cxx:174
 AliHLTDataDeflater.cxx:175
 AliHLTDataDeflater.cxx:176
 AliHLTDataDeflater.cxx:177
 AliHLTDataDeflater.cxx:178
 AliHLTDataDeflater.cxx:179
 AliHLTDataDeflater.cxx:180
 AliHLTDataDeflater.cxx:181
 AliHLTDataDeflater.cxx:182
 AliHLTDataDeflater.cxx:183
 AliHLTDataDeflater.cxx:184
 AliHLTDataDeflater.cxx:185
 AliHLTDataDeflater.cxx:186
 AliHLTDataDeflater.cxx:187
 AliHLTDataDeflater.cxx:188
 AliHLTDataDeflater.cxx:189
 AliHLTDataDeflater.cxx:190
 AliHLTDataDeflater.cxx:191
 AliHLTDataDeflater.cxx:192
 AliHLTDataDeflater.cxx:193
 AliHLTDataDeflater.cxx:194
 AliHLTDataDeflater.cxx:195
 AliHLTDataDeflater.cxx:196
 AliHLTDataDeflater.cxx:197
 AliHLTDataDeflater.cxx:198
 AliHLTDataDeflater.cxx:199
 AliHLTDataDeflater.cxx:200
 AliHLTDataDeflater.cxx:201
 AliHLTDataDeflater.cxx:202
 AliHLTDataDeflater.cxx:203
 AliHLTDataDeflater.cxx:204
 AliHLTDataDeflater.cxx:205
 AliHLTDataDeflater.cxx:206
 AliHLTDataDeflater.cxx:207
 AliHLTDataDeflater.cxx:208
 AliHLTDataDeflater.cxx:209
 AliHLTDataDeflater.cxx:210
 AliHLTDataDeflater.cxx:211
 AliHLTDataDeflater.cxx:212
 AliHLTDataDeflater.cxx:213
 AliHLTDataDeflater.cxx:214
 AliHLTDataDeflater.cxx:215
 AliHLTDataDeflater.cxx:216
 AliHLTDataDeflater.cxx:217
 AliHLTDataDeflater.cxx:218
 AliHLTDataDeflater.cxx:219
 AliHLTDataDeflater.cxx:220
 AliHLTDataDeflater.cxx:221
 AliHLTDataDeflater.cxx:222
 AliHLTDataDeflater.cxx:223
 AliHLTDataDeflater.cxx:224
 AliHLTDataDeflater.cxx:225
 AliHLTDataDeflater.cxx:226
 AliHLTDataDeflater.cxx:227
 AliHLTDataDeflater.cxx:228
 AliHLTDataDeflater.cxx:229
 AliHLTDataDeflater.cxx:230
 AliHLTDataDeflater.cxx:231
 AliHLTDataDeflater.cxx:232
 AliHLTDataDeflater.cxx:233
 AliHLTDataDeflater.cxx:234
 AliHLTDataDeflater.cxx:235
 AliHLTDataDeflater.cxx:236
 AliHLTDataDeflater.cxx:237
 AliHLTDataDeflater.cxx:238
 AliHLTDataDeflater.cxx:239
 AliHLTDataDeflater.cxx:240
 AliHLTDataDeflater.cxx:241
 AliHLTDataDeflater.cxx:242
 AliHLTDataDeflater.cxx:243
 AliHLTDataDeflater.cxx:244
 AliHLTDataDeflater.cxx:245
 AliHLTDataDeflater.cxx:246
 AliHLTDataDeflater.cxx:247
 AliHLTDataDeflater.cxx:248
 AliHLTDataDeflater.cxx:249
 AliHLTDataDeflater.cxx:250
 AliHLTDataDeflater.cxx:251
 AliHLTDataDeflater.cxx:252
 AliHLTDataDeflater.cxx:253
 AliHLTDataDeflater.cxx:254
 AliHLTDataDeflater.cxx:255
 AliHLTDataDeflater.cxx:256
 AliHLTDataDeflater.cxx:257
 AliHLTDataDeflater.cxx:258
 AliHLTDataDeflater.cxx:259
 AliHLTDataDeflater.cxx:260
 AliHLTDataDeflater.cxx:261
 AliHLTDataDeflater.cxx:262
 AliHLTDataDeflater.cxx:263
 AliHLTDataDeflater.cxx:264
 AliHLTDataDeflater.cxx:265
 AliHLTDataDeflater.cxx:266
 AliHLTDataDeflater.cxx:267
 AliHLTDataDeflater.cxx:268
 AliHLTDataDeflater.cxx:269
 AliHLTDataDeflater.cxx:270
 AliHLTDataDeflater.cxx:271
 AliHLTDataDeflater.cxx:272
 AliHLTDataDeflater.cxx:273
 AliHLTDataDeflater.cxx:274
 AliHLTDataDeflater.cxx:275
 AliHLTDataDeflater.cxx:276
 AliHLTDataDeflater.cxx:277
 AliHLTDataDeflater.cxx:278
 AliHLTDataDeflater.cxx:279
 AliHLTDataDeflater.cxx:280
 AliHLTDataDeflater.cxx:281
 AliHLTDataDeflater.cxx:282
 AliHLTDataDeflater.cxx:283
 AliHLTDataDeflater.cxx:284
 AliHLTDataDeflater.cxx:285
 AliHLTDataDeflater.cxx:286
 AliHLTDataDeflater.cxx:287
 AliHLTDataDeflater.cxx:288
 AliHLTDataDeflater.cxx:289
 AliHLTDataDeflater.cxx:290
 AliHLTDataDeflater.cxx:291
 AliHLTDataDeflater.cxx:292
 AliHLTDataDeflater.cxx:293
 AliHLTDataDeflater.cxx:294
 AliHLTDataDeflater.cxx:295
 AliHLTDataDeflater.cxx:296
 AliHLTDataDeflater.cxx:297
 AliHLTDataDeflater.cxx:298
 AliHLTDataDeflater.cxx:299
 AliHLTDataDeflater.cxx:300
 AliHLTDataDeflater.cxx:301
 AliHLTDataDeflater.cxx:302
 AliHLTDataDeflater.cxx:303
 AliHLTDataDeflater.cxx:304
 AliHLTDataDeflater.cxx:305
 AliHLTDataDeflater.cxx:306
 AliHLTDataDeflater.cxx:307
 AliHLTDataDeflater.cxx:308
 AliHLTDataDeflater.cxx:309
 AliHLTDataDeflater.cxx:310
 AliHLTDataDeflater.cxx:311
 AliHLTDataDeflater.cxx:312
 AliHLTDataDeflater.cxx:313
 AliHLTDataDeflater.cxx:314
 AliHLTDataDeflater.cxx:315
 AliHLTDataDeflater.cxx:316
 AliHLTDataDeflater.cxx:317
 AliHLTDataDeflater.cxx:318
 AliHLTDataDeflater.cxx:319
 AliHLTDataDeflater.cxx:320
 AliHLTDataDeflater.cxx:321
 AliHLTDataDeflater.cxx:322
 AliHLTDataDeflater.cxx:323
 AliHLTDataDeflater.cxx:324
 AliHLTDataDeflater.cxx:325
 AliHLTDataDeflater.cxx:326
 AliHLTDataDeflater.cxx:327
 AliHLTDataDeflater.cxx:328
 AliHLTDataDeflater.cxx:329
 AliHLTDataDeflater.cxx:330
 AliHLTDataDeflater.cxx:331
 AliHLTDataDeflater.cxx:332
 AliHLTDataDeflater.cxx:333
 AliHLTDataDeflater.cxx:334
 AliHLTDataDeflater.cxx:335
 AliHLTDataDeflater.cxx:336
 AliHLTDataDeflater.cxx:337
 AliHLTDataDeflater.cxx:338
 AliHLTDataDeflater.cxx:339
 AliHLTDataDeflater.cxx:340
 AliHLTDataDeflater.cxx:341
 AliHLTDataDeflater.cxx:342
 AliHLTDataDeflater.cxx:343
 AliHLTDataDeflater.cxx:344
 AliHLTDataDeflater.cxx:345
 AliHLTDataDeflater.cxx:346
 AliHLTDataDeflater.cxx:347
 AliHLTDataDeflater.cxx:348
 AliHLTDataDeflater.cxx:349
 AliHLTDataDeflater.cxx:350
 AliHLTDataDeflater.cxx:351
 AliHLTDataDeflater.cxx:352
 AliHLTDataDeflater.cxx:353
 AliHLTDataDeflater.cxx:354
 AliHLTDataDeflater.cxx:355
 AliHLTDataDeflater.cxx:356
 AliHLTDataDeflater.cxx:357
 AliHLTDataDeflater.cxx:358
 AliHLTDataDeflater.cxx:359
 AliHLTDataDeflater.cxx:360
 AliHLTDataDeflater.cxx:361
 AliHLTDataDeflater.cxx:362
 AliHLTDataDeflater.cxx:363
 AliHLTDataDeflater.cxx:364
 AliHLTDataDeflater.cxx:365
 AliHLTDataDeflater.cxx:366
 AliHLTDataDeflater.cxx:367
 AliHLTDataDeflater.cxx:368
 AliHLTDataDeflater.cxx:369
 AliHLTDataDeflater.cxx:370
 AliHLTDataDeflater.cxx:371
 AliHLTDataDeflater.cxx:372
 AliHLTDataDeflater.cxx:373
 AliHLTDataDeflater.cxx:374
 AliHLTDataDeflater.cxx:375
 AliHLTDataDeflater.cxx:376
 AliHLTDataDeflater.cxx:377
 AliHLTDataDeflater.cxx:378
 AliHLTDataDeflater.cxx:379
 AliHLTDataDeflater.cxx:380
 AliHLTDataDeflater.cxx:381
 AliHLTDataDeflater.cxx:382
 AliHLTDataDeflater.cxx:383
 AliHLTDataDeflater.cxx:384
 AliHLTDataDeflater.cxx:385
 AliHLTDataDeflater.cxx:386
 AliHLTDataDeflater.cxx:387
 AliHLTDataDeflater.cxx:388
 AliHLTDataDeflater.cxx:389
 AliHLTDataDeflater.cxx:390
 AliHLTDataDeflater.cxx:391
 AliHLTDataDeflater.cxx:392
 AliHLTDataDeflater.cxx:393
 AliHLTDataDeflater.cxx:394
 AliHLTDataDeflater.cxx:395
 AliHLTDataDeflater.cxx:396
 AliHLTDataDeflater.cxx:397
 AliHLTDataDeflater.cxx:398
 AliHLTDataDeflater.cxx:399
 AliHLTDataDeflater.cxx:400
 AliHLTDataDeflater.cxx:401
 AliHLTDataDeflater.cxx:402
 AliHLTDataDeflater.cxx:403
 AliHLTDataDeflater.cxx:404
 AliHLTDataDeflater.cxx:405
 AliHLTDataDeflater.cxx:406
 AliHLTDataDeflater.cxx:407