ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * 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.                  *
 **************************************************************************/

#include "AliAnalysisTaskCfg.h"
#include "AliAnalysisManager.h"

#include "Riostream.h"
#include "TError.h"
#include "TMacro.h"
#include "TInterpreter.h"
#include "TSystem.h"
#include "TObjArray.h"
#include "TObjString.h"
#include "TList.h"

// Author: Andrei Gheata, 12/08/2011

//==============================================================================
//   AliAnalysysTaskCfg - Class embedding the configuration needed to run
// a given analysis task: libraries to be loaded, location and name of the macro
// used to add the task to the analysis manager, dependencies.
//==============================================================================

// This class is used to fully describe how to run a given analysis task. It
// requires that the user creates an AddTask macro for his task and defines:
//  - The needed libs separated by commas,
//  - The full path to the AddTask macro (starting with $ALICE_ROOT if needed)
//  - The list of arguments to be provided to the AddTask macro. One can use
//    here only constants that can be interpreted.
//  - The list of dependencies (other modules required to run this task). These
//    must be names of other AliAnalysisTaskCfg objects, separated by commas.
//  - Data types supported by the task (e.g. ESD, AOD, MC)
// The class has normal ROOT IO, but it can also read from and write to text files.
// An example:
// Content of file: QAsym.cfg
/*
# Lines that do not start with #Module are ignored, except those in embedded
  macro blocks
#Module.Begin        QAsym
#Module.Libs         PWGPP
#Module.Deps         PhysicsSelection
#Module.DataTypes    ESD, AOD, MC
#Module.MacroName    $ALICE_ROOT/PWGPP/PilotTrain/AddTaskQAsym.C
#Module.MacroArgs    0, AliVEvent::kAnyINT, AliVEvent::kHighMult, AliVEvent::kEMC7, AliVEvent::kMUU7
#Module.OutputFile   
#Module.TerminateFile
#Module.StartConfig  
__R_ADDTASK__->SelectCollisionCandidates();
#Module.EndConfig
*/
// The following special variable names can be used:
// __R_ADDTASK__ = the return value of the AddTask macro included
// __R_ESDH__    = pointer to ESD handler
// __R_AODH__    = pointer to AOD handler
// __R_MCH__     = pointer to MC handler
// The static method ExtractModulesFrom(const char *filename) allows reading
// several task configuration modules from the same text file and returning
// them in a TObjArray.
//
// A list of configuration modules representing a train should be injected in
// the right order in the grid handler to generate train macros.


using std::cout;
using std::endl;
using std::ios;
using std::ofstream;
using std::ifstream;
ClassImp(AliAnalysisTaskCfg)

//______________________________________________________________________________
AliAnalysisTaskCfg::AliAnalysisTaskCfg()
                   :TNamed(),
                    fMacroName(),
                    fMacroArgs(),
                    fLibs(),
                    fDeps(),
                    fDataTypes(),
                    fOutputFile(),
                    fTerminateFile(),
                    fMacro(0),
                    fConfigDeps(0),
                    fRAddTask(0)
{
// I/O constructor.
}

//______________________________________________________________________________
AliAnalysisTaskCfg::AliAnalysisTaskCfg(const char *name)
                   :TNamed(name,""),
                    fMacroName(),
                    fMacroArgs(),
                    fLibs(),
                    fDeps(),
                    fDataTypes(),
                    fOutputFile(),
                    fTerminateFile(),
                    fMacro(0),
                    fConfigDeps(0),
                    fRAddTask(0)
{
// Constructor. All configuration objects need to be named since they are looked
// for by name.
}

//______________________________________________________________________________
AliAnalysisTaskCfg::AliAnalysisTaskCfg(const AliAnalysisTaskCfg &other)
                   :TNamed(other),
                    fMacroName(other.fMacroName),
                    fMacroArgs(other.fMacroArgs),
                    fLibs(other.fLibs),
                    fDeps(other.fDeps),
                    fDataTypes(other.fDataTypes),
                    fOutputFile(other.fOutputFile),
                    fTerminateFile(other.fTerminateFile),
                    fMacro(0),
                    fConfigDeps(0),
                    fRAddTask(0)
{
// Copy constructor.
   if (other.fMacro) fMacro = new TMacro(*other.fMacro);
   if (other.fConfigDeps) fConfigDeps = new TMacro(*other.fConfigDeps);
}   

//______________________________________________________________________________
AliAnalysisTaskCfg::~AliAnalysisTaskCfg()
{
// Destructor.
   delete fMacro;
   delete fConfigDeps;
}

//______________________________________________________________________________
AliAnalysisTaskCfg& AliAnalysisTaskCfg::operator=(const AliAnalysisTaskCfg &other)
{
// Assignment operator.
   if (&other == this) return *this;
   TNamed::operator=(other);
   fMacroName = other.fMacroName;
   fMacroArgs = other.fMacroArgs;
   fLibs      = other.fLibs;
   fDeps      = other.fDeps;
   fDataTypes = other.fDataTypes;
   fOutputFile = other.fOutputFile;
   fTerminateFile = other.fTerminateFile;
   if (other.fMacro) fMacro = new TMacro(*other.fMacro);
   if (other.fConfigDeps) fConfigDeps = new TMacro(*other.fConfigDeps);
   fRAddTask  = other.fRAddTask;
   return *this;
}
   
//______________________________________________________________________________
TMacro *AliAnalysisTaskCfg::OpenMacro(const char *name)
{
// Opens the specified macro if name is not empty. In case of success updates
// fMacroName, creates the maco object and returns its pointer.
   // Clean-up previous macro if any
   if (fMacro) {
      delete fMacro;
      fMacro = 0;
   }   
   TString expname;
   if (strlen(name)) expname = gSystem->ExpandPathName(name);
   else              expname = gSystem->ExpandPathName(fMacroName.Data());
   if (expname.IsNull()) {
      Error("OpenMacro", "Macro name not provided and not previously set");
      return 0;
   }   
   if (gSystem->AccessPathName(expname)) {
      Error("OpenMacro", "Macro: %s cannot be opened.", expname.Data());
      return 0;
   }
   if (strlen(name)) fMacroName = name;
   fMacro = new TMacro(expname);
   return fMacro;
}   

//______________________________________________________________________________
void AliAnalysisTaskCfg::SetMacro(TMacro *macro)
{
// Set the AddTask macro from outside. This will discard the existing macro if
// any. The provided macro will be owned by this object.
   if (fMacro) delete fMacro;
   fMacro = macro;
}   

//______________________________________________________________________________
Long64_t AliAnalysisTaskCfg::ExecuteMacro(const char *newargs)
{
// Execute AddTask macro. Opens first the macro pointed by fMacroName if not yet
// done. Checks if the requested libraries are loaded, else loads them. Executes 
// with stored fMacroArgs unless new arguments are provided. The flag IsLoaded
// is set once the macro was successfully executed.
   if (IsLoaded()) return kTRUE;
   if (!fMacro && !OpenMacro()) {
      Error("ExecuteMacro", "Cannot execute this macro");
      return -1;
   }
   if (!CheckLoadLibraries()) {
      Error("ExecuteMacro", "Cannot load requested libraries: %s", fLibs.Data());
      return -1;
   }
   
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
      Error("ExecuteMacro", "Analysis manager not defined yet");
      return -1;
   }
   Int_t ntasks0 = mgr->GetTasks()->GetEntriesFast();
   TString args = newargs;
   if (args.IsNull()) args = fMacroArgs;
   Int_t error = 0;
   Long64_t retval = fMacro->Exec(args, &error);
   if (error != TInterpreter::kNoError)
   {
      Error("ExecuteMacro", "Macro interpretation failed");
      return -1;
   }
   Int_t ntasks = mgr->GetTasks()->GetEntriesFast();
   if (ntasks<=ntasks0)
   {
      Error("ExecuteMacro", "The macro did not add any tasks to the manager");
      return -1;
   }
//   Long64_t ptrTask = (Long64_t)mgr->GetTasks()->At(ntasks0);
   if (retval) {
      TObject::SetBit(AliAnalysisTaskCfg::kLoaded, kTRUE);
      fRAddTask = reinterpret_cast<TObject*>(retval);
      if (fConfigDeps && dynamic_cast<TObject*>(fRAddTask)) {
         TString classname = fRAddTask->ClassName();
         classname += Form("* __R_ADDTASK__ = (%s*)0x%lx;", classname.Data(),(ULong_t)retval);
         classname.Prepend("  ");
         TObjString *line = fConfigDeps->GetLineWith("__R_ADDTASK__");
         if (line) {
            TList *lines = fConfigDeps->GetListOfLines();
            lines->AddBefore(line, new TObjString(classname));
         }
      }   
   }
   Info("ExecuteMacro", "Macro %s added %d tasks to the manager", fMacro->GetName(), ntasks-ntasks0);
   return retval;
}

//______________________________________________________________________________
Int_t AliAnalysisTaskCfg::GetNlibs() const
{
// Returns number of requested libraries.
   if (fLibs.IsNull()) return 0;
   TObjArray *list  = fLibs.Tokenize(",");
   Int_t nlibs = list->GetEntriesFast();
   delete list;
   return nlibs;
}

//______________________________________________________________________________
const char *AliAnalysisTaskCfg::GetLibrary(Int_t i) const
{
// Returns library name for the i-th library.
   Int_t nlibs = GetNlibs();
   if (i>=nlibs) return 0;
   static TString libname;
   TObjArray *list  = fLibs.Tokenize(",");
   libname = list->At(i)->GetName();
   libname.ReplaceAll(".so","");
   libname.ReplaceAll(" ","");
   if (libname.BeginsWith("lib")) libname.Remove(0, 3);
   delete list;
   return libname.Data();
}

//______________________________________________________________________________
Bool_t AliAnalysisTaskCfg::CheckLoadLibraries() const
{
// Check if all requested libraries were loaded, otherwise load them. If some
// library cannot be loaded return false.
   TString library;
   Int_t nlibs = GetNlibs();
   for (Int_t i=0; i<nlibs; i++) {
      library = GetLibrary(i);
      library.Prepend("lib");
      TString libext = library;
      libext.Append(".");
      Int_t loaded = strlen(gSystem->GetLibraries(libext,"",kFALSE));
      if (!loaded) loaded = gSystem->Load(library);
      if (loaded < 0) {
         Error("CheckLoadLibraries", "Cannot load library %s", library.Data());
         return kFALSE;
      }
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t AliAnalysisTaskCfg::NeedsLibrary(const char *lib) const
{
// Check if a given library is needed by the module.
   TString libname = lib;
   libname.ReplaceAll(".so","");
   if (libname.BeginsWith("lib")) libname.Remove(0, 3);
   return fLibs.Contains(libname);
}

//______________________________________________________________________________
Int_t AliAnalysisTaskCfg::GetNdeps() const
{
// Returns number of requested libraries.
   if (fDeps.IsNull()) return 0;
   Int_t ndeps = fDeps.CountChar(',')+1;
   return ndeps;
}

//______________________________________________________________________________
const char *AliAnalysisTaskCfg::GetDependency(Int_t i) const
{
// Returns library name for the i-th library.
   Int_t ndeps = GetNdeps();
   if (i>=ndeps) return 0;
   static TString depname;
   TObjArray *list  = fDeps.Tokenize(",");
   depname = list->At(i)->GetName();
   depname.ReplaceAll(" ","");
   delete list;
   return depname.Data();
}

//______________________________________________________________________________
Bool_t AliAnalysisTaskCfg::NeedsDependency(const char *dep) const
{
// Check if a given library is needed by the module.
   Int_t indmin = 0;
   Int_t indmax = 0;
   Int_t len = fDeps.Length();
   TString crt;
   while (indmax<len) {
      indmax = fDeps.Index(",",indmin);
      if (indmax < 0) indmax = len;
      // indmin points to the beginning of the string while indmax to the end+1
      crt = fDeps(indmin, indmax-indmin);
      if (crt==dep) return kTRUE;
      indmin = indmax+1;
   }
   return kFALSE;
}

//______________________________________________________________________________
TMacro *AliAnalysisTaskCfg::OpenConfigMacro(const char *name)
{
// Opens the specified macro if name is not empty.
   if (fConfigDeps) {
      delete fConfigDeps;
      fConfigDeps = 0;
   }
   
   TString expname = gSystem->ExpandPathName(name);
   if (expname.IsNull()) {
      Error("OpenConfigMacro", "Macro name not provided");
      return 0;
   }   
   if (gSystem->AccessPathName(expname)) {
      Error("OpenMacro", "Macro: %s cannot be opened.", expname.Data());
      return 0;
   }
   fConfigDeps = new TMacro(expname);
   return fConfigDeps;
}   

//______________________________________________________________________________
void AliAnalysisTaskCfg::SetConfigMacro(TMacro *macro)
{
// Set the macro for configuring deps from outside. This will discard the 
// existing macro if any. The provided macro will be owned by this object.
   if (fConfigDeps) delete fConfigDeps;
   fConfigDeps = macro;
}   
  
//______________________________________________________________________________
Long64_t AliAnalysisTaskCfg::ExecuteConfigMacro()
{
// Execute macro to configure dependencies. No arguments are supported.
   if (!fConfigDeps) {
      Error("ExecuteConfigMacro", "Call OpenConfigMacro() first");
      return -1;
   }
   if (!CheckLoadLibraries()) {
      Error("ExecuteConfigMacro", "Cannot load requested libraries: %s", fLibs.Data());
      return -1;
   }
   Int_t error = 0;
   Long64_t retval = fConfigDeps->Exec("", &error);
   if (error != TInterpreter::kNoError)
   {
      Error("ExecuteMacro", "Macro interpretation failed");
      return -1;
   }
   return retval;
}

//______________________________________________________________________________
void AliAnalysisTaskCfg::SetDataTypes(const char *types)
{
// Sets the data types supported by the module. Stored in upper case.
   fDataTypes = types;
   fDataTypes.ToUpper();
}

//______________________________________________________________________________
Bool_t AliAnalysisTaskCfg::SupportsData(const char *type) const
{
// Checks if the given data type is supported.
   TString stype = type;
   stype.ToUpper();
   return fDataTypes.Contains(stype);
}

//______________________________________________________________________________
void AliAnalysisTaskCfg::Print(Option_t * option) const
{
// Print content of the module.
   TString opt(option);
   Bool_t full = (opt.Length())?kTRUE:kFALSE;
   printf("====================================================================\n");
   printf("# Analysis task:                %s\n", GetName());
   printf("# Supported data types:         %s\n", fDataTypes.Data());
   printf("# Extra libraries:              %s\n", fLibs.Data());
   printf("# Extra dependencies:           %s\n", fDeps.Data());
   if (fConfigDeps) {
      printf("# Macro to configure deps:      %s\n", fConfigDeps->GetTitle());
      if (full) fConfigDeps->Print();
   }   
   printf("# Macro connecting this task:   %s\n", fMacroName.Data());
   printf("# Arguments to run the macro:   %s\n", fMacroArgs.Data());
   if (full) {
      if (fMacro) fMacro->Print();
      else {
         TMacro macro(gSystem->ExpandPathName(fMacroName.Data()));
         macro.Print();
      }   
   }   
}
   
//______________________________________________________________________________
void AliAnalysisTaskCfg::SaveAs(const char *filename, Option_t *option) const
{
// Save the configuration module as text file in the form key:value. The
// option can be APPEND, otherwise the file gets overwritten.
   TString opt(option);
   opt.ToUpper();
   ios::openmode mode = ios::out;
   if (opt == "APPEND") mode = ios::app;
   ofstream out;
   out.open(filename, mode);
   if (out.bad()) {
      Error("SaveAs", "Bad file name: %s", filename);
      return;
   }
   out << "#Module.Begin " << GetName() << endl;
   out << "#Module.Libs " << fLibs << endl;
   out << "#Module.Deps " << fDeps << endl;
   out << "#Module.DataTypes " << fDataTypes << endl;
   out << "#Module.OutputFile " << fOutputFile << endl;
   out << "#Module.TerminateFile " << fTerminateFile << endl;
   out << "#Module.MacroName " << fMacroName << endl;
   out << "#Module.MacroArgs " << fMacroArgs << endl;
   if (fConfigDeps) {
      out << "#Config.Deps " << fConfigDeps->GetTitle() << endl;
   }      
}


//______________________________________________________________________________
const char *AliAnalysisTaskCfg::DecodeValue(TString &line)
{
// Decode the value string from the line
   static TString value;
   value = line(line.Index(' '),line.Length());
   value = value.Strip(TString::kLeading,' ');
   value = value.Strip(TString::kTrailing,' ');
   return value.Data();
}
   
//______________________________________________________________________________
TObjArray *AliAnalysisTaskCfg::ExtractModulesFrom(const char *filename)
{
// Read all modules from a text file and add them to an object array. The
// caller must delete the array at the end. Any module must start with a line
// containing: #Module.Begin
   TString expname = gSystem->ExpandPathName(filename);
   if (gSystem->AccessPathName(expname)) {
      ::Error("ExtractModulesFrom", "Cannot open file %s", filename);
      return 0;
   }   
   AliAnalysisTaskCfg *cfg = 0;
   TObjArray *array = 0;
   ifstream in;
   in.open(expname);
   char cline[1024];
   TString line;
   TString decode;
   TMacro *addMacro = 0;
   TMacro *addConfig = 0;
   while (in.good()) {
      in.getline(cline,1024);
      line = cline;
      if (line.BeginsWith("#Module.Begin")) {
      // New module found, save previous if any
         if (cfg) {
            if (addMacro) cfg->SetMacro(addMacro);
            if (addConfig) cfg->SetConfigMacro(addConfig);
            if (!array) array = new TObjArray();
            array->Add(cfg);
         }
         // Decode module name from the line
         decode = AliAnalysisTaskCfg::DecodeValue(line);
         cfg = new AliAnalysisTaskCfg(decode);
         addMacro = 0;
         addConfig = 0;
      } else if (cfg && line.BeginsWith("#Module.Libs")) {
         // Libraries section
         decode = AliAnalysisTaskCfg::DecodeValue(line);
         cfg->SetLibraries(decode);
      } else if (cfg && line.BeginsWith("#Module.Deps")) {
         // Dependencies section
         decode = AliAnalysisTaskCfg::DecodeValue(line);
         cfg->SetDependencies(decode);
      } else if (cfg && line.BeginsWith("#Module.DataTypes")) {
         // Data types
         decode = AliAnalysisTaskCfg::DecodeValue(line);
         cfg->SetDataTypes(decode);
      } else if (cfg && line.BeginsWith("#Module.OutputFile")) {
         // Desired output file name (via SetCommonOutput)
         decode = AliAnalysisTaskCfg::DecodeValue(line);
         cfg->SetOutputFileName(decode);
      } else if (cfg && line.BeginsWith("#Module.TerminateFile")) {
         // Custom file name produced in Terminate if any
         decode = AliAnalysisTaskCfg::DecodeValue(line);
         cfg->SetTerminateFileName(decode);
      } else if (cfg && line.BeginsWith("#Module.MacroName")) {
         // Name of the add task macro (including path)
         decode = AliAnalysisTaskCfg::DecodeValue(line);
         cfg->SetMacroName(decode);
      } else if (cfg && line.BeginsWith("#Module.MacroArgs")) {
         // Arguments for the AddTask macro
         decode = AliAnalysisTaskCfg::DecodeValue(line);
         cfg->SetMacroArgs(decode);
      } else if (cfg && line.BeginsWith("#Module.StartMacro")) {
         // Marker for start of the AddTask macro
         addMacro = new TMacro();
         TString shortName = gSystem->BaseName(cfg->GetMacroName());
         shortName = shortName(0,shortName.Index("."));
         addMacro->SetName(shortName);
         addMacro->SetTitle(cfg->GetMacroName());
      } else if (cfg && line.BeginsWith("#Module.StartConfig")) {
         // Marker for start of the configuration macro
         addConfig = new TMacro();
//         TString shortName = gSystem->BaseName(cfg->GetMacroName());
//         shortName = shortName(0,shortName.Index("."));
         TString shortName = cfg->GetName();
         shortName += "_Config";
         addConfig->SetName(shortName);
//         shortName.Prepend("/");
//         shortName.Prepend(gSystem->DirName(cfg->GetMacroName()));
         shortName += ".C";
         addConfig->SetTitle(shortName);
      } else if (cfg && line.BeginsWith("#Module.EndMacro")) {
         // Marker for the end of the embedded macro. EndMacro block mandatory.
         if (cfg && addMacro) {
            cfg->SetMacro(addMacro);
            addMacro = 0;
         } else {
            ::Error("ExtractModulesFrom", "Canot end un-started macro block");
         }
      } else if (cfg && line.BeginsWith("#Module.EndConfig")) {
         // Marker for the end of the config macro. EndConfig block is mandatory
         if (cfg && addConfig) {
            addConfig->GetListOfLines()->AddFirst(new TObjString(Form("%s() {",gSystem->BaseName(addConfig->GetName()))));
            addConfig->GetListOfLines()->AddLast(new TObjString("}"));
            cfg->SetConfigMacro(addConfig);
            addConfig = 0;
         } else {
            ::Error("ExtractModulesFrom", "Canot end un-started config macro block");
         }
      } else {   
         // Reading a block line
         if (addMacro) addMacro->AddLine(line);
         else if (addConfig) addConfig->AddLine(line);
      }   
   }
   // Add last found object to the list
   if (cfg) {
      if (addMacro) ::Error("ExtractModulesFrom", "#Module.EndMacro block not found");         
      if (addConfig) ::Error("ExtractModulesFrom", "#Module.EndConfig block not found");
      if (!array) array = new TObjArray();
      array->Add(cfg);
   }
   return array;  
}
 AliAnalysisTaskCfg.cxx:1
 AliAnalysisTaskCfg.cxx:2
 AliAnalysisTaskCfg.cxx:3
 AliAnalysisTaskCfg.cxx:4
 AliAnalysisTaskCfg.cxx:5
 AliAnalysisTaskCfg.cxx:6
 AliAnalysisTaskCfg.cxx:7
 AliAnalysisTaskCfg.cxx:8
 AliAnalysisTaskCfg.cxx:9
 AliAnalysisTaskCfg.cxx:10
 AliAnalysisTaskCfg.cxx:11
 AliAnalysisTaskCfg.cxx:12
 AliAnalysisTaskCfg.cxx:13
 AliAnalysisTaskCfg.cxx:14
 AliAnalysisTaskCfg.cxx:15
 AliAnalysisTaskCfg.cxx:16
 AliAnalysisTaskCfg.cxx:17
 AliAnalysisTaskCfg.cxx:18
 AliAnalysisTaskCfg.cxx:19
 AliAnalysisTaskCfg.cxx:20
 AliAnalysisTaskCfg.cxx:21
 AliAnalysisTaskCfg.cxx:22
 AliAnalysisTaskCfg.cxx:23
 AliAnalysisTaskCfg.cxx:24
 AliAnalysisTaskCfg.cxx:25
 AliAnalysisTaskCfg.cxx:26
 AliAnalysisTaskCfg.cxx:27
 AliAnalysisTaskCfg.cxx:28
 AliAnalysisTaskCfg.cxx:29
 AliAnalysisTaskCfg.cxx:30
 AliAnalysisTaskCfg.cxx:31
 AliAnalysisTaskCfg.cxx:32
 AliAnalysisTaskCfg.cxx:33
 AliAnalysisTaskCfg.cxx:34
 AliAnalysisTaskCfg.cxx:35
 AliAnalysisTaskCfg.cxx:36
 AliAnalysisTaskCfg.cxx:37
 AliAnalysisTaskCfg.cxx:38
 AliAnalysisTaskCfg.cxx:39
 AliAnalysisTaskCfg.cxx:40
 AliAnalysisTaskCfg.cxx:41
 AliAnalysisTaskCfg.cxx:42
 AliAnalysisTaskCfg.cxx:43
 AliAnalysisTaskCfg.cxx:44
 AliAnalysisTaskCfg.cxx:45
 AliAnalysisTaskCfg.cxx:46
 AliAnalysisTaskCfg.cxx:47
 AliAnalysisTaskCfg.cxx:48
 AliAnalysisTaskCfg.cxx:49
 AliAnalysisTaskCfg.cxx:50
 AliAnalysisTaskCfg.cxx:51
 AliAnalysisTaskCfg.cxx:52
 AliAnalysisTaskCfg.cxx:53
 AliAnalysisTaskCfg.cxx:54
 AliAnalysisTaskCfg.cxx:55
 AliAnalysisTaskCfg.cxx:56
 AliAnalysisTaskCfg.cxx:57
 AliAnalysisTaskCfg.cxx:58
 AliAnalysisTaskCfg.cxx:59
 AliAnalysisTaskCfg.cxx:60
 AliAnalysisTaskCfg.cxx:61
 AliAnalysisTaskCfg.cxx:62
 AliAnalysisTaskCfg.cxx:63
 AliAnalysisTaskCfg.cxx:64
 AliAnalysisTaskCfg.cxx:65
 AliAnalysisTaskCfg.cxx:66
 AliAnalysisTaskCfg.cxx:67
 AliAnalysisTaskCfg.cxx:68
 AliAnalysisTaskCfg.cxx:69
 AliAnalysisTaskCfg.cxx:70
 AliAnalysisTaskCfg.cxx:71
 AliAnalysisTaskCfg.cxx:72
 AliAnalysisTaskCfg.cxx:73
 AliAnalysisTaskCfg.cxx:74
 AliAnalysisTaskCfg.cxx:75
 AliAnalysisTaskCfg.cxx:76
 AliAnalysisTaskCfg.cxx:77
 AliAnalysisTaskCfg.cxx:78
 AliAnalysisTaskCfg.cxx:79
 AliAnalysisTaskCfg.cxx:80
 AliAnalysisTaskCfg.cxx:81
 AliAnalysisTaskCfg.cxx:82
 AliAnalysisTaskCfg.cxx:83
 AliAnalysisTaskCfg.cxx:84
 AliAnalysisTaskCfg.cxx:85
 AliAnalysisTaskCfg.cxx:86
 AliAnalysisTaskCfg.cxx:87
 AliAnalysisTaskCfg.cxx:88
 AliAnalysisTaskCfg.cxx:89
 AliAnalysisTaskCfg.cxx:90
 AliAnalysisTaskCfg.cxx:91
 AliAnalysisTaskCfg.cxx:92
 AliAnalysisTaskCfg.cxx:93
 AliAnalysisTaskCfg.cxx:94
 AliAnalysisTaskCfg.cxx:95
 AliAnalysisTaskCfg.cxx:96
 AliAnalysisTaskCfg.cxx:97
 AliAnalysisTaskCfg.cxx:98
 AliAnalysisTaskCfg.cxx:99
 AliAnalysisTaskCfg.cxx:100
 AliAnalysisTaskCfg.cxx:101
 AliAnalysisTaskCfg.cxx:102
 AliAnalysisTaskCfg.cxx:103
 AliAnalysisTaskCfg.cxx:104
 AliAnalysisTaskCfg.cxx:105
 AliAnalysisTaskCfg.cxx:106
 AliAnalysisTaskCfg.cxx:107
 AliAnalysisTaskCfg.cxx:108
 AliAnalysisTaskCfg.cxx:109
 AliAnalysisTaskCfg.cxx:110
 AliAnalysisTaskCfg.cxx:111
 AliAnalysisTaskCfg.cxx:112
 AliAnalysisTaskCfg.cxx:113
 AliAnalysisTaskCfg.cxx:114
 AliAnalysisTaskCfg.cxx:115
 AliAnalysisTaskCfg.cxx:116
 AliAnalysisTaskCfg.cxx:117
 AliAnalysisTaskCfg.cxx:118
 AliAnalysisTaskCfg.cxx:119
 AliAnalysisTaskCfg.cxx:120
 AliAnalysisTaskCfg.cxx:121
 AliAnalysisTaskCfg.cxx:122
 AliAnalysisTaskCfg.cxx:123
 AliAnalysisTaskCfg.cxx:124
 AliAnalysisTaskCfg.cxx:125
 AliAnalysisTaskCfg.cxx:126
 AliAnalysisTaskCfg.cxx:127
 AliAnalysisTaskCfg.cxx:128
 AliAnalysisTaskCfg.cxx:129
 AliAnalysisTaskCfg.cxx:130
 AliAnalysisTaskCfg.cxx:131
 AliAnalysisTaskCfg.cxx:132
 AliAnalysisTaskCfg.cxx:133
 AliAnalysisTaskCfg.cxx:134
 AliAnalysisTaskCfg.cxx:135
 AliAnalysisTaskCfg.cxx:136
 AliAnalysisTaskCfg.cxx:137
 AliAnalysisTaskCfg.cxx:138
 AliAnalysisTaskCfg.cxx:139
 AliAnalysisTaskCfg.cxx:140
 AliAnalysisTaskCfg.cxx:141
 AliAnalysisTaskCfg.cxx:142
 AliAnalysisTaskCfg.cxx:143
 AliAnalysisTaskCfg.cxx:144
 AliAnalysisTaskCfg.cxx:145
 AliAnalysisTaskCfg.cxx:146
 AliAnalysisTaskCfg.cxx:147
 AliAnalysisTaskCfg.cxx:148
 AliAnalysisTaskCfg.cxx:149
 AliAnalysisTaskCfg.cxx:150
 AliAnalysisTaskCfg.cxx:151
 AliAnalysisTaskCfg.cxx:152
 AliAnalysisTaskCfg.cxx:153
 AliAnalysisTaskCfg.cxx:154
 AliAnalysisTaskCfg.cxx:155
 AliAnalysisTaskCfg.cxx:156
 AliAnalysisTaskCfg.cxx:157
 AliAnalysisTaskCfg.cxx:158
 AliAnalysisTaskCfg.cxx:159
 AliAnalysisTaskCfg.cxx:160
 AliAnalysisTaskCfg.cxx:161
 AliAnalysisTaskCfg.cxx:162
 AliAnalysisTaskCfg.cxx:163
 AliAnalysisTaskCfg.cxx:164
 AliAnalysisTaskCfg.cxx:165
 AliAnalysisTaskCfg.cxx:166
 AliAnalysisTaskCfg.cxx:167
 AliAnalysisTaskCfg.cxx:168
 AliAnalysisTaskCfg.cxx:169
 AliAnalysisTaskCfg.cxx:170
 AliAnalysisTaskCfg.cxx:171
 AliAnalysisTaskCfg.cxx:172
 AliAnalysisTaskCfg.cxx:173
 AliAnalysisTaskCfg.cxx:174
 AliAnalysisTaskCfg.cxx:175
 AliAnalysisTaskCfg.cxx:176
 AliAnalysisTaskCfg.cxx:177
 AliAnalysisTaskCfg.cxx:178
 AliAnalysisTaskCfg.cxx:179
 AliAnalysisTaskCfg.cxx:180
 AliAnalysisTaskCfg.cxx:181
 AliAnalysisTaskCfg.cxx:182
 AliAnalysisTaskCfg.cxx:183
 AliAnalysisTaskCfg.cxx:184
 AliAnalysisTaskCfg.cxx:185
 AliAnalysisTaskCfg.cxx:186
 AliAnalysisTaskCfg.cxx:187
 AliAnalysisTaskCfg.cxx:188
 AliAnalysisTaskCfg.cxx:189
 AliAnalysisTaskCfg.cxx:190
 AliAnalysisTaskCfg.cxx:191
 AliAnalysisTaskCfg.cxx:192
 AliAnalysisTaskCfg.cxx:193
 AliAnalysisTaskCfg.cxx:194
 AliAnalysisTaskCfg.cxx:195
 AliAnalysisTaskCfg.cxx:196
 AliAnalysisTaskCfg.cxx:197
 AliAnalysisTaskCfg.cxx:198
 AliAnalysisTaskCfg.cxx:199
 AliAnalysisTaskCfg.cxx:200
 AliAnalysisTaskCfg.cxx:201
 AliAnalysisTaskCfg.cxx:202
 AliAnalysisTaskCfg.cxx:203
 AliAnalysisTaskCfg.cxx:204
 AliAnalysisTaskCfg.cxx:205
 AliAnalysisTaskCfg.cxx:206
 AliAnalysisTaskCfg.cxx:207
 AliAnalysisTaskCfg.cxx:208
 AliAnalysisTaskCfg.cxx:209
 AliAnalysisTaskCfg.cxx:210
 AliAnalysisTaskCfg.cxx:211
 AliAnalysisTaskCfg.cxx:212
 AliAnalysisTaskCfg.cxx:213
 AliAnalysisTaskCfg.cxx:214
 AliAnalysisTaskCfg.cxx:215
 AliAnalysisTaskCfg.cxx:216
 AliAnalysisTaskCfg.cxx:217
 AliAnalysisTaskCfg.cxx:218
 AliAnalysisTaskCfg.cxx:219
 AliAnalysisTaskCfg.cxx:220
 AliAnalysisTaskCfg.cxx:221
 AliAnalysisTaskCfg.cxx:222
 AliAnalysisTaskCfg.cxx:223
 AliAnalysisTaskCfg.cxx:224
 AliAnalysisTaskCfg.cxx:225
 AliAnalysisTaskCfg.cxx:226
 AliAnalysisTaskCfg.cxx:227
 AliAnalysisTaskCfg.cxx:228
 AliAnalysisTaskCfg.cxx:229
 AliAnalysisTaskCfg.cxx:230
 AliAnalysisTaskCfg.cxx:231
 AliAnalysisTaskCfg.cxx:232
 AliAnalysisTaskCfg.cxx:233
 AliAnalysisTaskCfg.cxx:234
 AliAnalysisTaskCfg.cxx:235
 AliAnalysisTaskCfg.cxx:236
 AliAnalysisTaskCfg.cxx:237
 AliAnalysisTaskCfg.cxx:238
 AliAnalysisTaskCfg.cxx:239
 AliAnalysisTaskCfg.cxx:240
 AliAnalysisTaskCfg.cxx:241
 AliAnalysisTaskCfg.cxx:242
 AliAnalysisTaskCfg.cxx:243
 AliAnalysisTaskCfg.cxx:244
 AliAnalysisTaskCfg.cxx:245
 AliAnalysisTaskCfg.cxx:246
 AliAnalysisTaskCfg.cxx:247
 AliAnalysisTaskCfg.cxx:248
 AliAnalysisTaskCfg.cxx:249
 AliAnalysisTaskCfg.cxx:250
 AliAnalysisTaskCfg.cxx:251
 AliAnalysisTaskCfg.cxx:252
 AliAnalysisTaskCfg.cxx:253
 AliAnalysisTaskCfg.cxx:254
 AliAnalysisTaskCfg.cxx:255
 AliAnalysisTaskCfg.cxx:256
 AliAnalysisTaskCfg.cxx:257
 AliAnalysisTaskCfg.cxx:258
 AliAnalysisTaskCfg.cxx:259
 AliAnalysisTaskCfg.cxx:260
 AliAnalysisTaskCfg.cxx:261
 AliAnalysisTaskCfg.cxx:262
 AliAnalysisTaskCfg.cxx:263
 AliAnalysisTaskCfg.cxx:264
 AliAnalysisTaskCfg.cxx:265
 AliAnalysisTaskCfg.cxx:266
 AliAnalysisTaskCfg.cxx:267
 AliAnalysisTaskCfg.cxx:268
 AliAnalysisTaskCfg.cxx:269
 AliAnalysisTaskCfg.cxx:270
 AliAnalysisTaskCfg.cxx:271
 AliAnalysisTaskCfg.cxx:272
 AliAnalysisTaskCfg.cxx:273
 AliAnalysisTaskCfg.cxx:274
 AliAnalysisTaskCfg.cxx:275
 AliAnalysisTaskCfg.cxx:276
 AliAnalysisTaskCfg.cxx:277
 AliAnalysisTaskCfg.cxx:278
 AliAnalysisTaskCfg.cxx:279
 AliAnalysisTaskCfg.cxx:280
 AliAnalysisTaskCfg.cxx:281
 AliAnalysisTaskCfg.cxx:282
 AliAnalysisTaskCfg.cxx:283
 AliAnalysisTaskCfg.cxx:284
 AliAnalysisTaskCfg.cxx:285
 AliAnalysisTaskCfg.cxx:286
 AliAnalysisTaskCfg.cxx:287
 AliAnalysisTaskCfg.cxx:288
 AliAnalysisTaskCfg.cxx:289
 AliAnalysisTaskCfg.cxx:290
 AliAnalysisTaskCfg.cxx:291
 AliAnalysisTaskCfg.cxx:292
 AliAnalysisTaskCfg.cxx:293
 AliAnalysisTaskCfg.cxx:294
 AliAnalysisTaskCfg.cxx:295
 AliAnalysisTaskCfg.cxx:296
 AliAnalysisTaskCfg.cxx:297
 AliAnalysisTaskCfg.cxx:298
 AliAnalysisTaskCfg.cxx:299
 AliAnalysisTaskCfg.cxx:300
 AliAnalysisTaskCfg.cxx:301
 AliAnalysisTaskCfg.cxx:302
 AliAnalysisTaskCfg.cxx:303
 AliAnalysisTaskCfg.cxx:304
 AliAnalysisTaskCfg.cxx:305
 AliAnalysisTaskCfg.cxx:306
 AliAnalysisTaskCfg.cxx:307
 AliAnalysisTaskCfg.cxx:308
 AliAnalysisTaskCfg.cxx:309
 AliAnalysisTaskCfg.cxx:310
 AliAnalysisTaskCfg.cxx:311
 AliAnalysisTaskCfg.cxx:312
 AliAnalysisTaskCfg.cxx:313
 AliAnalysisTaskCfg.cxx:314
 AliAnalysisTaskCfg.cxx:315
 AliAnalysisTaskCfg.cxx:316
 AliAnalysisTaskCfg.cxx:317
 AliAnalysisTaskCfg.cxx:318
 AliAnalysisTaskCfg.cxx:319
 AliAnalysisTaskCfg.cxx:320
 AliAnalysisTaskCfg.cxx:321
 AliAnalysisTaskCfg.cxx:322
 AliAnalysisTaskCfg.cxx:323
 AliAnalysisTaskCfg.cxx:324
 AliAnalysisTaskCfg.cxx:325
 AliAnalysisTaskCfg.cxx:326
 AliAnalysisTaskCfg.cxx:327
 AliAnalysisTaskCfg.cxx:328
 AliAnalysisTaskCfg.cxx:329
 AliAnalysisTaskCfg.cxx:330
 AliAnalysisTaskCfg.cxx:331
 AliAnalysisTaskCfg.cxx:332
 AliAnalysisTaskCfg.cxx:333
 AliAnalysisTaskCfg.cxx:334
 AliAnalysisTaskCfg.cxx:335
 AliAnalysisTaskCfg.cxx:336
 AliAnalysisTaskCfg.cxx:337
 AliAnalysisTaskCfg.cxx:338
 AliAnalysisTaskCfg.cxx:339
 AliAnalysisTaskCfg.cxx:340
 AliAnalysisTaskCfg.cxx:341
 AliAnalysisTaskCfg.cxx:342
 AliAnalysisTaskCfg.cxx:343
 AliAnalysisTaskCfg.cxx:344
 AliAnalysisTaskCfg.cxx:345
 AliAnalysisTaskCfg.cxx:346
 AliAnalysisTaskCfg.cxx:347
 AliAnalysisTaskCfg.cxx:348
 AliAnalysisTaskCfg.cxx:349
 AliAnalysisTaskCfg.cxx:350
 AliAnalysisTaskCfg.cxx:351
 AliAnalysisTaskCfg.cxx:352
 AliAnalysisTaskCfg.cxx:353
 AliAnalysisTaskCfg.cxx:354
 AliAnalysisTaskCfg.cxx:355
 AliAnalysisTaskCfg.cxx:356
 AliAnalysisTaskCfg.cxx:357
 AliAnalysisTaskCfg.cxx:358
 AliAnalysisTaskCfg.cxx:359
 AliAnalysisTaskCfg.cxx:360
 AliAnalysisTaskCfg.cxx:361
 AliAnalysisTaskCfg.cxx:362
 AliAnalysisTaskCfg.cxx:363
 AliAnalysisTaskCfg.cxx:364
 AliAnalysisTaskCfg.cxx:365
 AliAnalysisTaskCfg.cxx:366
 AliAnalysisTaskCfg.cxx:367
 AliAnalysisTaskCfg.cxx:368
 AliAnalysisTaskCfg.cxx:369
 AliAnalysisTaskCfg.cxx:370
 AliAnalysisTaskCfg.cxx:371
 AliAnalysisTaskCfg.cxx:372
 AliAnalysisTaskCfg.cxx:373
 AliAnalysisTaskCfg.cxx:374
 AliAnalysisTaskCfg.cxx:375
 AliAnalysisTaskCfg.cxx:376
 AliAnalysisTaskCfg.cxx:377
 AliAnalysisTaskCfg.cxx:378
 AliAnalysisTaskCfg.cxx:379
 AliAnalysisTaskCfg.cxx:380
 AliAnalysisTaskCfg.cxx:381
 AliAnalysisTaskCfg.cxx:382
 AliAnalysisTaskCfg.cxx:383
 AliAnalysisTaskCfg.cxx:384
 AliAnalysisTaskCfg.cxx:385
 AliAnalysisTaskCfg.cxx:386
 AliAnalysisTaskCfg.cxx:387
 AliAnalysisTaskCfg.cxx:388
 AliAnalysisTaskCfg.cxx:389
 AliAnalysisTaskCfg.cxx:390
 AliAnalysisTaskCfg.cxx:391
 AliAnalysisTaskCfg.cxx:392
 AliAnalysisTaskCfg.cxx:393
 AliAnalysisTaskCfg.cxx:394
 AliAnalysisTaskCfg.cxx:395
 AliAnalysisTaskCfg.cxx:396
 AliAnalysisTaskCfg.cxx:397
 AliAnalysisTaskCfg.cxx:398
 AliAnalysisTaskCfg.cxx:399
 AliAnalysisTaskCfg.cxx:400
 AliAnalysisTaskCfg.cxx:401
 AliAnalysisTaskCfg.cxx:402
 AliAnalysisTaskCfg.cxx:403
 AliAnalysisTaskCfg.cxx:404
 AliAnalysisTaskCfg.cxx:405
 AliAnalysisTaskCfg.cxx:406
 AliAnalysisTaskCfg.cxx:407
 AliAnalysisTaskCfg.cxx:408
 AliAnalysisTaskCfg.cxx:409
 AliAnalysisTaskCfg.cxx:410
 AliAnalysisTaskCfg.cxx:411
 AliAnalysisTaskCfg.cxx:412
 AliAnalysisTaskCfg.cxx:413
 AliAnalysisTaskCfg.cxx:414
 AliAnalysisTaskCfg.cxx:415
 AliAnalysisTaskCfg.cxx:416
 AliAnalysisTaskCfg.cxx:417
 AliAnalysisTaskCfg.cxx:418
 AliAnalysisTaskCfg.cxx:419
 AliAnalysisTaskCfg.cxx:420
 AliAnalysisTaskCfg.cxx:421
 AliAnalysisTaskCfg.cxx:422
 AliAnalysisTaskCfg.cxx:423
 AliAnalysisTaskCfg.cxx:424
 AliAnalysisTaskCfg.cxx:425
 AliAnalysisTaskCfg.cxx:426
 AliAnalysisTaskCfg.cxx:427
 AliAnalysisTaskCfg.cxx:428
 AliAnalysisTaskCfg.cxx:429
 AliAnalysisTaskCfg.cxx:430
 AliAnalysisTaskCfg.cxx:431
 AliAnalysisTaskCfg.cxx:432
 AliAnalysisTaskCfg.cxx:433
 AliAnalysisTaskCfg.cxx:434
 AliAnalysisTaskCfg.cxx:435
 AliAnalysisTaskCfg.cxx:436
 AliAnalysisTaskCfg.cxx:437
 AliAnalysisTaskCfg.cxx:438
 AliAnalysisTaskCfg.cxx:439
 AliAnalysisTaskCfg.cxx:440
 AliAnalysisTaskCfg.cxx:441
 AliAnalysisTaskCfg.cxx:442
 AliAnalysisTaskCfg.cxx:443
 AliAnalysisTaskCfg.cxx:444
 AliAnalysisTaskCfg.cxx:445
 AliAnalysisTaskCfg.cxx:446
 AliAnalysisTaskCfg.cxx:447
 AliAnalysisTaskCfg.cxx:448
 AliAnalysisTaskCfg.cxx:449
 AliAnalysisTaskCfg.cxx:450
 AliAnalysisTaskCfg.cxx:451
 AliAnalysisTaskCfg.cxx:452
 AliAnalysisTaskCfg.cxx:453
 AliAnalysisTaskCfg.cxx:454
 AliAnalysisTaskCfg.cxx:455
 AliAnalysisTaskCfg.cxx:456
 AliAnalysisTaskCfg.cxx:457
 AliAnalysisTaskCfg.cxx:458
 AliAnalysisTaskCfg.cxx:459
 AliAnalysisTaskCfg.cxx:460
 AliAnalysisTaskCfg.cxx:461
 AliAnalysisTaskCfg.cxx:462
 AliAnalysisTaskCfg.cxx:463
 AliAnalysisTaskCfg.cxx:464
 AliAnalysisTaskCfg.cxx:465
 AliAnalysisTaskCfg.cxx:466
 AliAnalysisTaskCfg.cxx:467
 AliAnalysisTaskCfg.cxx:468
 AliAnalysisTaskCfg.cxx:469
 AliAnalysisTaskCfg.cxx:470
 AliAnalysisTaskCfg.cxx:471
 AliAnalysisTaskCfg.cxx:472
 AliAnalysisTaskCfg.cxx:473
 AliAnalysisTaskCfg.cxx:474
 AliAnalysisTaskCfg.cxx:475
 AliAnalysisTaskCfg.cxx:476
 AliAnalysisTaskCfg.cxx:477
 AliAnalysisTaskCfg.cxx:478
 AliAnalysisTaskCfg.cxx:479
 AliAnalysisTaskCfg.cxx:480
 AliAnalysisTaskCfg.cxx:481
 AliAnalysisTaskCfg.cxx:482
 AliAnalysisTaskCfg.cxx:483
 AliAnalysisTaskCfg.cxx:484
 AliAnalysisTaskCfg.cxx:485
 AliAnalysisTaskCfg.cxx:486
 AliAnalysisTaskCfg.cxx:487
 AliAnalysisTaskCfg.cxx:488
 AliAnalysisTaskCfg.cxx:489
 AliAnalysisTaskCfg.cxx:490
 AliAnalysisTaskCfg.cxx:491
 AliAnalysisTaskCfg.cxx:492
 AliAnalysisTaskCfg.cxx:493
 AliAnalysisTaskCfg.cxx:494
 AliAnalysisTaskCfg.cxx:495
 AliAnalysisTaskCfg.cxx:496
 AliAnalysisTaskCfg.cxx:497
 AliAnalysisTaskCfg.cxx:498
 AliAnalysisTaskCfg.cxx:499
 AliAnalysisTaskCfg.cxx:500
 AliAnalysisTaskCfg.cxx:501
 AliAnalysisTaskCfg.cxx:502
 AliAnalysisTaskCfg.cxx:503
 AliAnalysisTaskCfg.cxx:504
 AliAnalysisTaskCfg.cxx:505
 AliAnalysisTaskCfg.cxx:506
 AliAnalysisTaskCfg.cxx:507
 AliAnalysisTaskCfg.cxx:508
 AliAnalysisTaskCfg.cxx:509
 AliAnalysisTaskCfg.cxx:510
 AliAnalysisTaskCfg.cxx:511
 AliAnalysisTaskCfg.cxx:512
 AliAnalysisTaskCfg.cxx:513
 AliAnalysisTaskCfg.cxx:514
 AliAnalysisTaskCfg.cxx:515
 AliAnalysisTaskCfg.cxx:516
 AliAnalysisTaskCfg.cxx:517
 AliAnalysisTaskCfg.cxx:518
 AliAnalysisTaskCfg.cxx:519
 AliAnalysisTaskCfg.cxx:520
 AliAnalysisTaskCfg.cxx:521
 AliAnalysisTaskCfg.cxx:522
 AliAnalysisTaskCfg.cxx:523
 AliAnalysisTaskCfg.cxx:524
 AliAnalysisTaskCfg.cxx:525
 AliAnalysisTaskCfg.cxx:526
 AliAnalysisTaskCfg.cxx:527
 AliAnalysisTaskCfg.cxx:528
 AliAnalysisTaskCfg.cxx:529
 AliAnalysisTaskCfg.cxx:530
 AliAnalysisTaskCfg.cxx:531
 AliAnalysisTaskCfg.cxx:532
 AliAnalysisTaskCfg.cxx:533
 AliAnalysisTaskCfg.cxx:534
 AliAnalysisTaskCfg.cxx:535
 AliAnalysisTaskCfg.cxx:536
 AliAnalysisTaskCfg.cxx:537
 AliAnalysisTaskCfg.cxx:538
 AliAnalysisTaskCfg.cxx:539
 AliAnalysisTaskCfg.cxx:540
 AliAnalysisTaskCfg.cxx:541
 AliAnalysisTaskCfg.cxx:542
 AliAnalysisTaskCfg.cxx:543
 AliAnalysisTaskCfg.cxx:544
 AliAnalysisTaskCfg.cxx:545
 AliAnalysisTaskCfg.cxx:546
 AliAnalysisTaskCfg.cxx:547
 AliAnalysisTaskCfg.cxx:548
 AliAnalysisTaskCfg.cxx:549
 AliAnalysisTaskCfg.cxx:550
 AliAnalysisTaskCfg.cxx:551
 AliAnalysisTaskCfg.cxx:552
 AliAnalysisTaskCfg.cxx:553
 AliAnalysisTaskCfg.cxx:554
 AliAnalysisTaskCfg.cxx:555
 AliAnalysisTaskCfg.cxx:556
 AliAnalysisTaskCfg.cxx:557
 AliAnalysisTaskCfg.cxx:558
 AliAnalysisTaskCfg.cxx:559
 AliAnalysisTaskCfg.cxx:560
 AliAnalysisTaskCfg.cxx:561
 AliAnalysisTaskCfg.cxx:562
 AliAnalysisTaskCfg.cxx:563
 AliAnalysisTaskCfg.cxx:564
 AliAnalysisTaskCfg.cxx:565
 AliAnalysisTaskCfg.cxx:566
 AliAnalysisTaskCfg.cxx:567
 AliAnalysisTaskCfg.cxx:568
 AliAnalysisTaskCfg.cxx:569
 AliAnalysisTaskCfg.cxx:570
 AliAnalysisTaskCfg.cxx:571
 AliAnalysisTaskCfg.cxx:572
 AliAnalysisTaskCfg.cxx:573
 AliAnalysisTaskCfg.cxx:574
 AliAnalysisTaskCfg.cxx:575
 AliAnalysisTaskCfg.cxx:576
 AliAnalysisTaskCfg.cxx:577
 AliAnalysisTaskCfg.cxx:578
 AliAnalysisTaskCfg.cxx:579
 AliAnalysisTaskCfg.cxx:580
 AliAnalysisTaskCfg.cxx:581
 AliAnalysisTaskCfg.cxx:582
 AliAnalysisTaskCfg.cxx:583
 AliAnalysisTaskCfg.cxx:584
 AliAnalysisTaskCfg.cxx:585
 AliAnalysisTaskCfg.cxx:586
 AliAnalysisTaskCfg.cxx:587
 AliAnalysisTaskCfg.cxx:588
 AliAnalysisTaskCfg.cxx:589
 AliAnalysisTaskCfg.cxx:590
 AliAnalysisTaskCfg.cxx:591
 AliAnalysisTaskCfg.cxx:592
 AliAnalysisTaskCfg.cxx:593
 AliAnalysisTaskCfg.cxx:594
 AliAnalysisTaskCfg.cxx:595
 AliAnalysisTaskCfg.cxx:596
 AliAnalysisTaskCfg.cxx:597
 AliAnalysisTaskCfg.cxx:598
 AliAnalysisTaskCfg.cxx:599
 AliAnalysisTaskCfg.cxx:600
 AliAnalysisTaskCfg.cxx:601
 AliAnalysisTaskCfg.cxx:602
 AliAnalysisTaskCfg.cxx:603
 AliAnalysisTaskCfg.cxx:604
 AliAnalysisTaskCfg.cxx:605
 AliAnalysisTaskCfg.cxx:606
 AliAnalysisTaskCfg.cxx:607
 AliAnalysisTaskCfg.cxx:608