#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"
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)
{
}
AliAnalysisTaskCfg::AliAnalysisTaskCfg(const char *name)
:TNamed(name,""),
fMacroName(),
fMacroArgs(),
fLibs(),
fDeps(),
fDataTypes(),
fOutputFile(),
fTerminateFile(),
fMacro(0),
fConfigDeps(0),
fRAddTask(0)
{
}
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)
{
if (other.fMacro) fMacro = new TMacro(*other.fMacro);
if (other.fConfigDeps) fConfigDeps = new TMacro(*other.fConfigDeps);
}
AliAnalysisTaskCfg::~AliAnalysisTaskCfg()
{
delete fMacro;
delete fConfigDeps;
}
AliAnalysisTaskCfg& AliAnalysisTaskCfg::operator=(const AliAnalysisTaskCfg &other)
{
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)
{
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)
{
if (fMacro) delete fMacro;
fMacro = macro;
}
Long64_t AliAnalysisTaskCfg::ExecuteMacro(const char *newargs)
{
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;
}
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
{
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
{
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
{
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
{
TString libname = lib;
libname.ReplaceAll(".so","");
if (libname.BeginsWith("lib")) libname.Remove(0, 3);
return fLibs.Contains(libname);
}
Int_t AliAnalysisTaskCfg::GetNdeps() const
{
if (fDeps.IsNull()) return 0;
Int_t ndeps = fDeps.CountChar(',')+1;
return ndeps;
}
const char *AliAnalysisTaskCfg::GetDependency(Int_t i) const
{
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
{
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;
crt = fDeps(indmin, indmax-indmin);
if (crt==dep) return kTRUE;
indmin = indmax+1;
}
return kFALSE;
}
TMacro *AliAnalysisTaskCfg::OpenConfigMacro(const char *name)
{
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)
{
if (fConfigDeps) delete fConfigDeps;
fConfigDeps = macro;
}
Long64_t AliAnalysisTaskCfg::ExecuteConfigMacro()
{
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)
{
fDataTypes = types;
fDataTypes.ToUpper();
}
Bool_t AliAnalysisTaskCfg::SupportsData(const char *type) const
{
TString stype = type;
stype.ToUpper();
return fDataTypes.Contains(stype);
}
void AliAnalysisTaskCfg::Print(Option_t * option) const
{
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
{
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)
{
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)
{
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")) {
if (cfg) {
if (addMacro) cfg->SetMacro(addMacro);
if (addConfig) cfg->SetConfigMacro(addConfig);
if (!array) array = new TObjArray();
array->Add(cfg);
}
decode = AliAnalysisTaskCfg::DecodeValue(line);
cfg = new AliAnalysisTaskCfg(decode);
addMacro = 0;
addConfig = 0;
} else if (cfg && line.BeginsWith("#Module.Libs")) {
decode = AliAnalysisTaskCfg::DecodeValue(line);
cfg->SetLibraries(decode);
} else if (cfg && line.BeginsWith("#Module.Deps")) {
decode = AliAnalysisTaskCfg::DecodeValue(line);
cfg->SetDependencies(decode);
} else if (cfg && line.BeginsWith("#Module.DataTypes")) {
decode = AliAnalysisTaskCfg::DecodeValue(line);
cfg->SetDataTypes(decode);
} else if (cfg && line.BeginsWith("#Module.OutputFile")) {
decode = AliAnalysisTaskCfg::DecodeValue(line);
cfg->SetOutputFileName(decode);
} else if (cfg && line.BeginsWith("#Module.TerminateFile")) {
decode = AliAnalysisTaskCfg::DecodeValue(line);
cfg->SetTerminateFileName(decode);
} else if (cfg && line.BeginsWith("#Module.MacroName")) {
decode = AliAnalysisTaskCfg::DecodeValue(line);
cfg->SetMacroName(decode);
} else if (cfg && line.BeginsWith("#Module.MacroArgs")) {
decode = AliAnalysisTaskCfg::DecodeValue(line);
cfg->SetMacroArgs(decode);
} else if (cfg && line.BeginsWith("#Module.StartMacro")) {
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")) {
addConfig = new TMacro();
TString shortName = cfg->GetName();
shortName += "_Config";
addConfig->SetName(shortName);
shortName += ".C";
addConfig->SetTitle(shortName);
} else if (cfg && line.BeginsWith("#Module.EndMacro")) {
if (cfg && addMacro) {
cfg->SetMacro(addMacro);
addMacro = 0;
} else {
::Error("ExtractModulesFrom", "Canot end un-started macro block");
}
} else if (cfg && line.BeginsWith("#Module.EndConfig")) {
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 {
if (addMacro) addMacro->AddLine(line);
else if (addConfig) addConfig->AddLine(line);
}
}
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: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