ROOT logo
// $Id$

///**************************************************************************
///* This file is property of and copyright by the                          * 
///* 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   AliHLTConfiguration.cxx
/// @author Matthias Richter
/// @date   2007
/// @brief  HLT configuration description for a single component.
/// @note   The class is used in Offline (AliRoot) context

#include <cerrno>
#include "AliHLTConfiguration.h"
#include "AliHLTConfigurationHandler.h"
#include "AliHLTTask.h"
#include "AliHLTComponent.h"
#include "AliHLTComponentHandler.h"
#include <iostream>
#include <string>
#include "TList.h"

using std::vector;

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

AliHLTConfiguration::AliHLTConfiguration()
  :
  fID(""),
  fComponent(""),
  fStringSources(""),
  fNofSources(-1),
  fListSources(),
  fListSrcElementIdx(-1),
  fArguments(""),
  fArgc(-1),
  fArgv(NULL),
  fBufferSize(-1)
{ 
  // This class describes a configuration for an HLT component by means of
  // the following parameters:
  // - configuration id:      a unique id string/name
  // - component id:          id returned by AliHLTComponent::GetComponentID()
  // - parent configuartions: ids of configurations it requires input from
  // - component arguments:   passed to the component when it is initialized
}

AliHLTConfiguration::AliHLTConfiguration(const char* id, const char* component, const char* sources,
					 const char* arguments, const char* bufsize)
  :
  fID(id),
  fComponent(component),
  fStringSources(sources),
  fNofSources(-1),
  fListSources(),
  fListSrcElementIdx(-1),
  fArguments(arguments),
  fArgc(-1),
  fArgv(NULL),
  fBufferSize(-1)
{
  // constructor
  if (bufsize) fBufferSize=ConvertSizeString(bufsize);
  if (id && component) {
    if (AliHLTConfigurationHandler::Instance()) {
      AliHLTConfigurationHandler::Instance()->RegisterConfiguration(this);
    } else {
      AliHLTConfigurationHandler::MissedRegistration(id);
    }
  }
}

AliHLTConfiguration::AliHLTConfiguration(const AliHLTConfiguration& src)
  :
  TObject(),
  AliHLTLogging(),
  fID(src.fID),
  fComponent(src.fComponent),
  fStringSources(src.fStringSources),
  fNofSources(-1),
  fListSources(),
  fListSrcElementIdx(-1),
  fArguments(src.fArguments),
  fArgc(-1),
  fArgv(NULL),
  fBufferSize(src.fBufferSize)
{ 
  // copy constructor
}

AliHLTConfiguration& AliHLTConfiguration::operator=(const AliHLTConfiguration& src)
{ 
  // assignment operator
  if (this==&src) return *this;

  fID=src.fID;
  fComponent=src.fComponent;
  fStringSources=src.fStringSources;
  fNofSources=-1;
  fArguments=src.fArguments;
  fArgc=-1;
  fArgv=NULL;
  fBufferSize=src.fBufferSize;
  return *this;
}

AliHLTConfiguration::~AliHLTConfiguration()
{
  // destructor
  if (AliHLTConfigurationHandler::Instance()) {
    if (AliHLTConfigurationHandler::Instance()->FindConfiguration(fID.Data())!=NULL) {
      // remove the configuration from the handler if it exists
      // but DO NOT remove the clone configuration
      AliHLTConfigurationHandler::Instance()->RemoveConfiguration(this);
    }
  }
  if (fArgv != NULL) {
    if (fArgc>0) {
      for (int i=0; i<fArgc; i++) {
	delete[] fArgv[i];
      }
    }
    delete[] fArgv;
    fArgv=NULL;
  }

  vector<AliHLTConfiguration*>::iterator element=fListSources.begin();
  while (element!=fListSources.end()) {
    fListSources.erase(element);
    element=fListSources.begin();
  }
}

const char* AliHLTConfiguration::GetName() const 
{
  // get name
  if (!fID.IsNull())
    return fID.Data();
  return TObject::GetName();
}

AliHLTConfiguration* AliHLTConfiguration::GetSource(const char* id)
{
  // get source by id
  AliHLTConfiguration* pSrc=NULL;
  if (id) {
    // first check the current element
    if (fListSrcElementIdx>=0 && fListSrcElementIdx<(int)fListSources.size() &&
	strcmp(id, (fListSources[fListSrcElementIdx])->GetName())==0) {
      pSrc=fListSources[fListSrcElementIdx];
      } else {
      // check the list

      pSrc=GetFirstSource();
      while (pSrc) {
	if (strcmp(id, pSrc->GetName())==0)
	  break;
	pSrc=GetNextSource();
      }
    }
  }
  return pSrc;
}

AliHLTConfiguration* AliHLTConfiguration::GetFirstSource() const
{
  // get first source in the list
  // TODO: iterator class
  AliHLTConfiguration* pSrc=NULL;
  if (fNofSources>0) {
    const_cast<AliHLTConfiguration*>(this)->fListSrcElementIdx=-1;
    pSrc=GetNextSource();
  } 
  return pSrc;
}

AliHLTConfiguration* AliHLTConfiguration::GetNextSource() const
{
  // get next source
  AliHLTConfiguration* pSrc=NULL;
  if (fNofSources>0) {
    if (fListSrcElementIdx+1<(int)fListSources.size()) {
      const_cast<AliHLTConfiguration*>(this)->fListSrcElementIdx++;
      pSrc=fListSources[fListSrcElementIdx];
    }
  } 
  return pSrc;
}

int AliHLTConfiguration::SourcesResolved() const
{
  // check if all sources are resolved
  int iResult=0;
  if (fNofSources>=0) {
    iResult=fNofSources==(int)fListSources.size();
  }
  return iResult;
}

int AliHLTConfiguration::InvalidateSource(AliHLTConfiguration* pConf)
{
  // invalidate state of all sources
  int iResult=0;
  if (pConf) {
    vector<AliHLTConfiguration*>::iterator element=fListSources.begin();
    while (element!=fListSources.end()) {
      if (*element==pConf) {
	fListSources.erase(element);
	fListSrcElementIdx=fListSources.size();
	// there is no need to re-evaluate until there was a new configuration registered
	// -> postpone the invalidation, its done in AliHLTConfigurationHandler::RegisterConfiguration
	//InvalidateSources();
	break;
      }
      element++;
    }
  } else {
    iResult=-EINVAL;
  }
  return iResult;
}

void AliHLTConfiguration::PrintStatus() const
{
  // print info
  HLTLogKeyword("configuration status");
  HLTMessage("status of configuration \"%s\" (%p)", GetName(), this);
  if (!fComponent.IsNull()) HLTMessage("  - component: \"%s\"", fComponent.Data());
  else HLTMessage("  - component string invalid");
  if (!fStringSources.IsNull()) HLTMessage("  - sources: \"%s\"", fStringSources.Data());
  else HLTMessage("  - no sources");
  if (SourcesResolved()!=1)
    HLTMessage("    there are unresolved sources");
  AliHLTConfiguration* pSrc=GetFirstSource();
  while (pSrc) {
    HLTMessage("    source \"%s\" (%p) resolved", pSrc->GetName(), pSrc);
    pSrc=GetNextSource();
  }
}

void AliHLTConfiguration::Print(const char* option) const
{
  // print information
  if (option && strcmp(option, "status")==0) {
    PrintStatus();
    return;
  }
  HLTLogKeyword("configuration");
  HLTMessage("configuration %s: component %s, sources %s, arguments %s",
	     GetName(),
	     GetComponentID(),
	     GetSourceSettings(),
	     GetArgumentSettings()
	     );
}

int AliHLTConfiguration::GetArguments(const char*** pArgv) const
{
  // get argument array
  int iResult=0;
  if (pArgv) {
    if (fArgc==-1) {
      if ((iResult=const_cast<AliHLTConfiguration*>(this)->ExtractArguments())<0) {
	HLTError("error extracting arguments for configuration %s", GetName());
      }
    } else if (fArgc<0) {
      HLTError("previous argument extraction failed");
    }
    //HLTDebug("%s fArgc %d", GetName(), fArgc);
    iResult=fArgc;
    *pArgv=(const char**)fArgv;
  } else {
    HLTError("invalid parameter");
    iResult=-EINVAL;
  }
  return iResult;
}


int AliHLTConfiguration::ExtractSources(AliHLTConfigurationHandler* pHandler)
{
  // extract source configurations from the handler
  // TODO: would be less confusing to use 'parent' instead of 'source'
  // but this needs to be changed consistently throughout the class
  int iResult=0;
  fNofSources=0; // indicates that the function was called, there are either n or 0 sources
  fListSources.clear();
  if (!pHandler) {
    HLTError("configuration handler missing, can not resolve sources");
    return -EFAULT;
  }
  if (!fStringSources.IsNull()) {
    vector<char*> tgtList;
    if ((iResult=InterpreteString(fStringSources.Data(), tgtList))>=0) {
      fNofSources=tgtList.size();
      vector<char*>::iterator element=tgtList.begin();
      while ((element=tgtList.begin())!=tgtList.end()) {
	  AliHLTConfiguration* pConf=pHandler->FindConfiguration(*element);
	  if (pConf) {
	    //HLTDebug("configuration %s (%p): source \"%s\" (%p) inserted", GetName(), this, pConf->GetName(), pConf);
	    fListSources.push_back(pConf);
	  } else {
	    HLTError("can not find source \"%s\"", (*element));
	    iResult=-ENOENT;
	  }
	delete[] (*element);
	tgtList.erase(element);
      }
    }
  }
  fListSrcElementIdx=-1;
  return iResult<0?iResult:SourcesResolved();
}

int AliHLTConfiguration::ExtractArguments()
{
  // extract argument list from string
  int iResult=0;
  if (!fArguments.IsNull()) {
    vector<char*> tgtList;
    if ((iResult=InterpreteString(fArguments, tgtList))>=0) {
      fArgc=tgtList.size();
      //HLTDebug("configuration %s: extracted %d arguments from \"%s\"", GetName(), fArgc, fArguments);
      if (fArgc>0) {
	fArgv = new char*[fArgc];
	if (fArgv) {
	  vector<char*>::iterator element=tgtList.begin();
	  int i=0;
	  while (element!=tgtList.end()) {
	    //HLTDebug("assign arguments %d (%s)", i, *element);
	    fArgv[i++]=(*element);
	    element++;
	  }
	} else {
	  iResult=-ENOMEM;
	}
      }
    }
  } else {
    // there are zero arguments
    fArgc=0;
  }
  if (iResult<0) fArgc=iResult;
  return iResult;
}

int AliHLTConfiguration::InterpreteString(const char* arg, vector<char*>& argList)
{
  // interprete a string
  int iResult=0;
  if (arg) {
    //HLTDebug("interprete \"%s\"", arg);
    int i=0;
    int prec=-1;
    int bQuote=0;
    do {
      //HLTDebug("%d %x", i, arg[i]);
      if (arg[i]=='\'' && bQuote==0) {
	bQuote=1;
      } else if (arg[i]==0 || 
		 (arg[i]==' ' && bQuote==0) ||
		 (arg[i]=='\'' && bQuote==1)) {
	bQuote=0;
	if (prec>=0) {
	  char* pEntry= new char[i-prec+1];
	  if (pEntry) {
	    strncpy(pEntry, &arg[prec], i-prec);
	    pEntry[i-prec]=0; // terminate string
	    //HLTDebug("create string \"%s\", insert at %d", pEntry, argList.size());
	    argList.push_back(pEntry);
	  } else 
	    iResult=-ENOMEM;
	  prec=-1;
	}
      } else if (prec==-1) prec=i;
    } while (arg[i++]!=0 && iResult>=0); 
  } else {
    iResult=-EINVAL;
  }
  return iResult;
}

int AliHLTConfiguration::ConvertSizeString(const char* strSize) const
{
  // convert a size argument
  int size=0;
  if (!strSize) return -1;

  char* endptr=NULL;
  size=strtol(strSize, &endptr, 10);
  if (size>=0) {
    if (endptr) {
      if (endptr==strSize) {
	HLTWarning("ignoring unrecognized buffer size '%s'", strSize);
	size=-1;
      } else if (*endptr==0) {
	// no unit specifier
      } else if (*endptr=='k') {
	size*=1014;
      } else if (*endptr=='M') {
	size*=1024*1024;
      } else {
	HLTWarning("ignoring buffer size of unknown unit '%c'", endptr[0]);
      }
    } else {
      HLTWarning("ignoring negative buffer size specifier '%s'", strSize);
      size=-1;
    }
  }
  return size;
}

int AliHLTConfiguration::FollowDependency(const char* id, TList* pTgtList)
{
  // follow dependencies
  int iResult=0;
  if (id) {
    AliHLTConfiguration* pDep=NULL;
    if ((pDep=GetSource(id))!=NULL) {
      if (pTgtList) pTgtList->Add(pDep);
      iResult++;
    } else {
      pDep=GetFirstSource();
      while (pDep && iResult==0) {
	if ((iResult=pDep->FollowDependency(id, pTgtList))>0) {
	  if (pTgtList) pTgtList->AddFirst(pDep);
	  iResult++;
	}
	pDep=GetNextSource();
      }
    }
  } else {
    iResult=-EINVAL;
  }
  return iResult;
}


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