ROOT logo
// $Id$
//**************************************************************************
//* This file is property of and copyright by the ALICE HLT Project        * 
//* ALICE Experiment at CERN, All rights reserved.                         *
//*                                                                        *
//* Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
//*                  Sebastian Bablok                                      *
//*                  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   AliHLTCalibrationProcessor.cxx
// @author Jochen Thaeder, Sebastian Bablok
// @date 
// @brief  Base class of HLT calibration components.
// 

#include "AliHLTCalibrationProcessor.h"
#include "AliHLTMemoryFile.h"
#include "AliHLTReadoutList.h"

#include <cstdlib>
#include <cerrno>
#include <string.h>
#include <TObjString.h>
#include <TFile.h>

ClassImp(AliHLTCalibrationProcessor);

const AliHLTUInt32_t AliHLTCalibrationProcessor::fgkFXSProtocolHeaderSize = 204;
const AliHLTUInt32_t AliHLTCalibrationProcessor::fgkFXSProtocolHeaderVersion = 1;

/*
 * ################ Constructor / Destructor ####################
 */

AliHLTCalibrationProcessor::AliHLTCalibrationProcessor() : 
  fEventModulo(0),
  fUseCorruptEvents(kFALSE),
  fEventCounter(0),
  fDDLNumber(),
  fDummy(0) {

  // see header file for class documentation
  // or
  // refer to README to build package
  // or
  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
}

AliHLTCalibrationProcessor::~AliHLTCalibrationProcessor() {
  // see header file for class documentation
}

/*
 * ######################## InitCalibration #####################
 */

Int_t AliHLTCalibrationProcessor::DoInit( int argc, const char** argv ) {
  // see header file for class documentation

  // TODO: revision of argument scan needed, adjust to the new base class
  // methods for argument scan
  // call the configuration from the default OCDB object before the argument
  // scan to override in correct sequence
  Int_t iResult = 0;
  TString argument = "";
  TString parameter = "";
  Int_t bMissingParam=0;
  
  for ( Int_t ii=0; ii<argc && iResult>=0; ii++ ) {
    argument = argv[ii];

    if ( argument.IsNull() ) continue;

    // -eventmodulo
    if ( argument.CompareTo("-eventmodulo") == 0 ) {
      if ( ( bMissingParam=( ++ii >= argc ) ) ) break;
      parameter = argv[ii];  
      parameter.Remove(TString::kLeading, ' '); // remove all blanks
      if (parameter.IsDigit()) {
	fEventModulo = parameter.Atoi();
	HLTInfo("EventModulo is set to %d.", fEventModulo);
      } 
      else {
	HLTError("Cannot convert EventModulo specifier '%s'.", argv[ii]);
	iResult = -EINVAL;
	break;
      }
    } 
    // -usecorruptevents
    else if ( argument.CompareTo( "-usecorruptevents" ) == 0 ) {
      HLTInfo( "Passing through of corrupted events enabled." );
      fUseCorruptEvents = kTRUE;
    } 
    // not known by calibration processor
    else {
      if ( ( iResult = ScanArgument( argc-ii, &argv[ii] ) ) == -EINVAL ) {
	HLTError( "unknown argument %s", argument.Data() );
	break;
      } 
      else if ( iResult == -EPROTO ) {
	bMissingParam = 1;
	break;
      } 
      else if ( iResult >= 0 ) {
	ii += iResult;
	iResult = 0;
      }
    }
  }
  
  if ( bMissingParam ) {
    HLTError( "missing parameter for argument %s", argument.Data() );
    iResult = -EPROTO;
  }

  if ( iResult >= 0 ) {
    iResult = InitCalibration();
  }

  // Reset the DDLNumberList
  memset( fDDLNumber, 0, gkAliHLTFXSHeaderfDDLNumberSize);

  return iResult;
}

Int_t AliHLTCalibrationProcessor::InitCalibration() {
  // see header file for class documentation
  
  // fDummy is just touched here to avoid coding convention violation RC11. 
  // The function can not be declared  const since it is just the default implementation, 
  // overloaded virtual function might not be const.
  fDummy = 0;

  return 0;
}


Int_t AliHLTCalibrationProcessor::ScanArgument(int argc, const char** argv) {
  // see header file for class documentation
  
  // there are no other arguments than the standard ones
  if ( argc == 0 && argv == NULL) {
    // this is just to get rid of the warning "unused parameter"
  }
  
  // fDummy is just touched here to avoid coding convention violation RC11. 
  // The function can not be declared  const since it is just the default implementation, 
  // overloaded virtual function might not be const.
  fDummy = 0;

  return -EINVAL;
}

/*
 * ######################## DeinitCalibration #####################
 */

Int_t AliHLTCalibrationProcessor::DoDeinit() {
  // see header file for class documentation
 
  int iResult = DeinitCalibration();
 
  return iResult;
}

Int_t AliHLTCalibrationProcessor::DeinitCalibration() {
  // see header file for class documentation

  // fDummy is just touched here to avoid coding convention violation RC11. 
  // The function can not be declared  const since it is just the default implementation, 
  // overloaded virtual function might not be const.
  fDummy = 0;

  return 0;
}

/*
 * ######################## DoEvent #####################
 */

Int_t AliHLTCalibrationProcessor::DoEvent( const AliHLTComponentEventData& evtData,
	       const AliHLTComponentBlockData* blocks, 
	       AliHLTComponentTriggerData& trigData,
	       AliHLTUInt8_t* outputPtr, 
	       AliHLTUInt32_t& size,
	       vector<AliHLTComponentBlockData>& outputBlocks )
{
  // see header file for class documentation

  Int_t iResult = 0;

  const AliHLTComponentBlockData* blkSOR = NULL;
  blkSOR = GetFirstInputBlock( kAliHLTDataTypeSOR );
  const AliHLTComponentBlockData* blkEOR = NULL;
  blkEOR = GetFirstInputBlock( kAliHLTDataTypeEOR );

  // ** if event Type is not SOR or EOR -> fill DDLNumber list and process data
  if ( ! blkEOR  && !blkSOR ) {
    // ** ProcessData
    iResult = ProcessCalibration( evtData, blocks, trigData, outputPtr, size, outputBlocks );
    fEventCounter++; 
  }  

  // - if event Type is EOR or event modulo is set -> ship data to FXS
  // - use event modulo ship data also during the run 
  if ( ( fEventModulo > 0 && fEventCounter == fEventModulo ) || blkEOR ){
    HLTDebug ( "Ship Data to FXS!" );
    iResult = ShipDataToFXS( evtData, blocks, trigData, outputPtr, size, outputBlocks );
    fEventCounter = 0;
  }

  return iResult;
}

/*
 * ######################## ProcessCalibration #####################
 */

Int_t AliHLTCalibrationProcessor::ProcessCalibration( const AliHLTComponentEventData& evtData,
						      const AliHLTComponentBlockData* /*blocks*/, 
						      AliHLTComponentTriggerData& trigData,
						      AliHLTUInt8_t* /*outputPtr*/, 
						      AliHLTUInt32_t& /*size*/,
						      vector<AliHLTComponentBlockData>& /*outputBlocks*/ ) {
  // see header file for class documentation

  // we just forward to the high level method, all other parameters already
  // have been stored internally
  return ProcessCalibration( evtData, trigData );
}

Int_t AliHLTCalibrationProcessor::ProcessCalibration( const AliHLTComponentEventData& /*evtData*/, 
						      AliHLTComponentTriggerData& /*trigData*/) {
  // see header file for class documentation

  HLTFatal( "no processing method implemented" );
  return -ENOSYS;
}

/*
 * ######################## ShipDataToFXS #####################
 */

Int_t AliHLTCalibrationProcessor::ShipDataToFXS( const AliHLTComponentEventData& evtData,
						 const AliHLTComponentBlockData* /*blocks*/, 
						 AliHLTComponentTriggerData& trigData,
						 AliHLTUInt8_t* /*outputPtr*/, 
						 AliHLTUInt32_t& /*size*/,
						 vector<AliHLTComponentBlockData>& /*outputBlocks*/ ) {
  // see header file for class documentation

  // we just forward to the high level method, all other parameters already
  // have been stored internally
  return ShipDataToFXS( evtData, trigData );
}


Int_t AliHLTCalibrationProcessor::ShipDataToFXS( const AliHLTComponentEventData& /*evtData*/, 
						 AliHLTComponentTriggerData& /*trigData*/) {
  // see header file for class documentation

  HLTFatal( "no processing method implemented" );
  return -ENOSYS;
}

/*
 * ######################## CreateFXSHeader #####################
 */

Int_t AliHLTCalibrationProcessor::CreateFXSHeader( AliHLTFXSHeader &pHeader, const char* pDetector, const char* pFileID, const AliHLTReadoutList* pDDLList ) {
  // see header file for class documentation

  Int_t iResult = 0;

  // ** Fill header version
  pHeader.fHeaderVersion = AliHLTCalibrationProcessor::fgkFXSProtocolHeaderVersion;

  // ** Fill run number
  pHeader.fRunNumber = GetRunNo(); 
  
  // ** Fill origin
  HLTDebug( "FXS Header Detector  size max %i - actual %i .",gkAliHLTFXSHeaderfOriginSize, strlen( pDetector ) );
  strncpy ( pHeader.fOrigin, pDetector, gkAliHLTFXSHeaderfOriginSize ) ; 

  // To take care if fileIDs which are longer than gkAliHLTFXSHeaderfOriginSize, write one 0 is cheaper than an if.
  pHeader.fOrigin[gkAliHLTFXSHeaderfOriginSize-1] = 0;

  // ** Fill file ID
  HLTDebug( "FXS Header FileID size max %i - actual %i .",gkAliHLTFXSHeaderfFileIDSize, strlen( pFileID ) );
  strncpy ( pHeader.fFileID, pFileID, gkAliHLTFXSHeaderfFileIDSize ) ; 

  // To take care if fileIDs which are longer than gkAliHLTFXSHeaderfFileIDSize, write one 0 is cheaper than an if.
  pHeader.fFileID[gkAliHLTFXSHeaderfFileIDSize-1] = 0;

  // ** Fill DDL number

  // -- if component provides list, convert to fDDLNumber
  if ( pDDLList ) {
    // use user list
    
    AliHLTReadoutList::EDetectorId detid = pDDLList->GetFirstUsedDetector();
    Int_t wordNdx = AliHLTReadoutList::GetFirstWord(detid);
    Int_t wordCount = AliHLTReadoutList::GetWordCount(detid);
    
    if (pDDLList->GetFirstUsedDetector(detid) != AliHLTReadoutList::kNoDetector or wordNdx < 0)
    {
      HLTError("DDLIDs for minimum of TWO detectors ( %s, %s ) set, this function works only for ONE detector.",
          AliHLTReadoutList::DetectorIdToString(detid),
          AliHLTReadoutList::DetectorIdToString(pDDLList->GetFirstUsedDetector(detid))
        );
      iResult = -1;
    }
    else
    {
      // check word for word 
      for ( Int_t ndx = 0; ndx < wordCount; ndx++ ) {
	AliHLTUInt32_t word = pDDLList->Buffer()->fList[wordNdx+ndx];
	
	// set only 4 bit into one Char_t
	for ( Int_t charNdx = 0; charNdx < 8; charNdx++) {
	  fDDLNumber[(8*ndx)+charNdx] = (Char_t) word & 0x0000000F;
	  word = word >> 4;
	}
      }
    }
  } //   if ( pDDLList ) {

  // -- fill header with ascii chars
  for (Int_t ndx = 0; ndx < gkAliHLTFXSHeaderfDDLNumberSize; ndx++ ){
    Int_t numberToChar = (Int_t) fDDLNumber[ndx];
    // Get ASCII
    if ( numberToChar > 9 ) numberToChar += 55;
    else numberToChar += 48;
    
    pHeader.fDDLNumber[ndx] = (Char_t) numberToChar;
  }
  
  return iResult;
}  // Int_t AliHLTCalibrationProcessor::CreateFXSHeader( AliHLTXSHeader &pHeader, const char* pDetector, const char* pFileID, const AliHLTReadoutList* pDDLList ) {

/*
 * ######################## PushToFXS #####################
 */

Int_t AliHLTCalibrationProcessor::PushToFXS(TObject* pObject, const char* pDetector, const char* pFileID, const AliHLTReadoutList* pDDLList ) {
  // see header file for class documentation

  Int_t iResult = 0;
  
  AliHLTFXSHeader pHeader;

  CreateFXSHeader( pHeader, pDetector, pFileID, pDDLList );
  
  if ( pObject ) {
    
    AliHLTMemoryFile* pMemFile = CreateMemoryFile( kAliHLTDataTypeFXSCalib, kAliHLTVoidDataSpec );
    if ( pMemFile ) {
      
      iResult = pMemFile->WriteHeaderBuffer( (const char*) &pHeader, AliHLTCalibrationProcessor::fgkFXSProtocolHeaderSize );

      if ( iResult ) {
	HLTError( "Buffer size to small - for header!" ); 
      }
      else {
	iResult = Write( pMemFile, pObject );
	if ( !iResult ) {
	  HLTError( "Buffer size to small - for data!" ); 
	}
	else {
	  iResult = CloseMemoryFile( pMemFile );  
	}
      }
    } 
    else {
      iResult = -ENOMEM;
    }
  } 
  else {
    iResult=-EINVAL;
  }

  return iResult;

} // Int_t AliHLTCalibrationProcessor::PushToFXS(TObject* pObject, const char* detector, const char* pFileID, const AliHLTReadoutList* pDDLList ) {

Int_t AliHLTCalibrationProcessor::PushToFXS( void* pBuffer, int iSize, const char* pDetector, const char* pFileID, const AliHLTReadoutList* pDDLList ) {
  // see header file for class documentation

  Int_t iResult = 0;
  
  AliHLTFXSHeader pHeader;

  CreateFXSHeader( pHeader, pDetector, pFileID, pDDLList );
  
  iResult = PushBack( pBuffer, iSize, kAliHLTDataTypeFXSCalib, kAliHLTVoidDataSpec, (void*) (&pHeader), AliHLTCalibrationProcessor::fgkFXSProtocolHeaderSize );

  return iResult;

} // Int_t AliHLTCalibrationProcessor::PushToFXS(void* pBuffer, int iSize, const char* pDdetector, const char* pFileID, const AliHLTReadoutList* pDDLList ) {

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