#include "AliAnalysisAlien.h"
#include "Riostream.h"
#include "TEnv.h"
#include "TKey.h"
#include "TBits.h"
#include "TError.h"
#include "TROOT.h"
#include "TSystem.h"
#include "TInterpreter.h"
#include "TFile.h"
#include "TFileCollection.h"
#include "TChain.h"
#include "TObjString.h"
#include "TObjArray.h"
#include "TMacro.h"
#include "TGrid.h"
#include "TGridResult.h"
#include "TGridCollection.h"
#include "TGridJDL.h"
#include "TGridJobStatusList.h"
#include "TGridJobStatus.h"
#include "TFileMerger.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisTaskCfg.h"
#include "AliVEventHandler.h"
#include "AliAnalysisDataContainer.h"
#include "AliMultiInputEventHandler.h"
using std::ofstream;
using std::ifstream;
using std::ios;
using std::endl;
ClassImp(AliAnalysisAlien)
#if 0
;
#endif
namespace {
Bool_t copyLocal2Alien(const char* where, const char* loc, const char* rem)
{
TString sl(Form("file:%s", loc));
TString sr(Form("alien://%s", rem));
Bool_t ret = TFile::Cp(sl, sr);
if (!ret) {
Warning(where, "Failed to copy %s to %s", sl.Data(), sr.Data());
}
return ret;
}
}
AliAnalysisAlien::AliAnalysisAlien()
:AliAnalysisGrid(),
fGridJDL(NULL),
fMergingJDL(NULL),
fPrice(0),
fTTL(0),
fSplitMaxInputFileNumber(0),
fMaxInitFailed(0),
fMasterResubmitThreshold(0),
fNtestFiles(0),
fNrunsPerMaster(0),
fMaxMergeFiles(0),
fMaxMergeStages(0),
fNsubmitted(0),
fProductionMode(0),
fOutputToRunNo(0),
fMergeViaJDL(0),
fFastReadOption(0),
fOverwriteMode(1),
fNreplicas(2),
fNproofWorkers(0),
fNproofWorkersPerSlave(0),
fProofReset(0),
fNMCevents(0),
fNMCjobs(0),
fRunNumbers(),
fExecutable(),
fExecutableCommand(),
fArguments(),
fExecutableArgs(),
fAnalysisMacro(),
fAnalysisSource(),
fValidationScript(),
fAdditionalRootLibs(),
fAdditionalLibs(),
fGeneratorLibs(),
fSplitMode(),
fAPIVersion(),
fROOTVersion(),
fAliROOTVersion(),
fExternalPackages(),
fUser(),
fGridWorkingDir(),
fGridDataDir(),
fDataPattern(),
fGridOutputDir(),
fOutputArchive(),
fOutputFiles(),
fInputFormat(),
fDatasetName(),
fJDLName(),
fTerminateFiles(),
fMergeExcludes(),
fRegisterExcludes(),
fIncludePath(),
fCloseSE(),
fFriendChainName(),
fJobTag(),
fOutputSingle(),
fRunPrefix(),
fProofCluster(),
fProofDataSet(),
fFileForTestMode(),
fAliRootMode(),
fProofProcessOpt(),
fMergeDirName(),
fInputFiles(0),
fPackages(0),
fModules(0),
fProofParam(),
fDropToShell(true),
fMCLoop(false),
fGridJobIDs(""),
fGridStages(""),
fFriendLibs(""),
fTreeName()
{
SetDefaults();
}
AliAnalysisAlien::AliAnalysisAlien(const char *name)
:AliAnalysisGrid(name),
fGridJDL(NULL),
fMergingJDL(NULL),
fPrice(0),
fTTL(0),
fSplitMaxInputFileNumber(0),
fMaxInitFailed(0),
fMasterResubmitThreshold(0),
fNtestFiles(0),
fNrunsPerMaster(0),
fMaxMergeFiles(0),
fMaxMergeStages(0),
fNsubmitted(0),
fProductionMode(0),
fOutputToRunNo(0),
fMergeViaJDL(0),
fFastReadOption(0),
fOverwriteMode(1),
fNreplicas(2),
fNproofWorkers(0),
fNproofWorkersPerSlave(0),
fProofReset(0),
fNMCevents(0),
fNMCjobs(0),
fRunNumbers(),
fExecutable(),
fExecutableCommand(),
fArguments(),
fExecutableArgs(),
fAnalysisMacro(),
fAnalysisSource(),
fValidationScript(),
fAdditionalRootLibs(),
fAdditionalLibs(),
fGeneratorLibs(),
fSplitMode(),
fAPIVersion(),
fROOTVersion(),
fAliROOTVersion(),
fExternalPackages(),
fUser(),
fGridWorkingDir(),
fGridDataDir(),
fDataPattern(),
fGridOutputDir(),
fOutputArchive(),
fOutputFiles(),
fInputFormat(),
fDatasetName(),
fJDLName(),
fTerminateFiles(),
fMergeExcludes(),
fRegisterExcludes(),
fIncludePath(),
fCloseSE(),
fFriendChainName(),
fJobTag(),
fOutputSingle(),
fRunPrefix(),
fProofCluster(),
fProofDataSet(),
fFileForTestMode(),
fAliRootMode(),
fProofProcessOpt(),
fMergeDirName(),
fInputFiles(0),
fPackages(0),
fModules(0),
fProofParam(),
fDropToShell(true),
fMCLoop(false),
fGridJobIDs(""),
fGridStages(""),
fFriendLibs(""),
fTreeName()
{
SetDefaults();
}
AliAnalysisAlien::AliAnalysisAlien(const AliAnalysisAlien& other)
:AliAnalysisGrid(other),
fGridJDL(NULL),
fMergingJDL(NULL),
fPrice(other.fPrice),
fTTL(other.fTTL),
fSplitMaxInputFileNumber(other.fSplitMaxInputFileNumber),
fMaxInitFailed(other.fMaxInitFailed),
fMasterResubmitThreshold(other.fMasterResubmitThreshold),
fNtestFiles(other.fNtestFiles),
fNrunsPerMaster(other.fNrunsPerMaster),
fMaxMergeFiles(other.fMaxMergeFiles),
fMaxMergeStages(other.fMaxMergeStages),
fNsubmitted(other.fNsubmitted),
fProductionMode(other.fProductionMode),
fOutputToRunNo(other.fOutputToRunNo),
fMergeViaJDL(other.fMergeViaJDL),
fFastReadOption(other.fFastReadOption),
fOverwriteMode(other.fOverwriteMode),
fNreplicas(other.fNreplicas),
fNproofWorkers(other.fNproofWorkers),
fNproofWorkersPerSlave(other.fNproofWorkersPerSlave),
fProofReset(other.fProofReset),
fNMCevents(other.fNMCevents),
fNMCjobs(other.fNMCjobs),
fRunNumbers(other.fRunNumbers),
fExecutable(other.fExecutable),
fExecutableCommand(other.fExecutableCommand),
fArguments(other.fArguments),
fExecutableArgs(other.fExecutableArgs),
fAnalysisMacro(other.fAnalysisMacro),
fAnalysisSource(other.fAnalysisSource),
fValidationScript(other.fValidationScript),
fAdditionalRootLibs(other.fAdditionalRootLibs),
fAdditionalLibs(other.fAdditionalLibs),
fGeneratorLibs(other.fGeneratorLibs),
fSplitMode(other.fSplitMode),
fAPIVersion(other.fAPIVersion),
fROOTVersion(other.fROOTVersion),
fAliROOTVersion(other.fAliROOTVersion),
fExternalPackages(other.fExternalPackages),
fUser(other.fUser),
fGridWorkingDir(other.fGridWorkingDir),
fGridDataDir(other.fGridDataDir),
fDataPattern(other.fDataPattern),
fGridOutputDir(other.fGridOutputDir),
fOutputArchive(other.fOutputArchive),
fOutputFiles(other.fOutputFiles),
fInputFormat(other.fInputFormat),
fDatasetName(other.fDatasetName),
fJDLName(other.fJDLName),
fTerminateFiles(other.fTerminateFiles),
fMergeExcludes(other.fMergeExcludes),
fRegisterExcludes(other.fRegisterExcludes),
fIncludePath(other.fIncludePath),
fCloseSE(other.fCloseSE),
fFriendChainName(other.fFriendChainName),
fJobTag(other.fJobTag),
fOutputSingle(other.fOutputSingle),
fRunPrefix(other.fRunPrefix),
fProofCluster(other.fProofCluster),
fProofDataSet(other.fProofDataSet),
fFileForTestMode(other.fFileForTestMode),
fAliRootMode(other.fAliRootMode),
fProofProcessOpt(other.fProofProcessOpt),
fMergeDirName(other.fMergeDirName),
fInputFiles(0),
fPackages(0),
fModules(0),
fProofParam(),
fDropToShell(other.fDropToShell),
fMCLoop(other.fMCLoop),
fGridJobIDs(other.fGridJobIDs),
fGridStages(other.fGridStages),
fFriendLibs(other.fFriendLibs),
fTreeName(other.fTreeName)
{
fGridJDL = (TGridJDL*)gROOT->ProcessLine("new TAlienJDL()");
fMergingJDL = (TGridJDL*)gROOT->ProcessLine("new TAlienJDL()");
fRunRange[0] = other.fRunRange[0];
fRunRange[1] = other.fRunRange[1];
if (other.fInputFiles) {
fInputFiles = new TObjArray();
TIter next(other.fInputFiles);
TObject *obj;
while ((obj=next())) fInputFiles->Add(new TObjString(obj->GetName()));
fInputFiles->SetOwner();
}
if (other.fPackages) {
fPackages = new TObjArray();
TIter next(other.fPackages);
TObject *obj;
while ((obj=next())) fPackages->Add(new TObjString(obj->GetName()));
fPackages->SetOwner();
}
if (other.fModules) {
fModules = new TObjArray();
fModules->SetOwner();
TIter next(other.fModules);
AliAnalysisTaskCfg *mod, *crt;
while ((crt=(AliAnalysisTaskCfg*)next())) {
mod = new AliAnalysisTaskCfg(*crt);
fModules->Add(mod);
}
}
}
AliAnalysisAlien::~AliAnalysisAlien()
{
delete fGridJDL;
delete fMergingJDL;
delete fInputFiles;
delete fPackages;
delete fModules;
fProofParam.DeleteAll();
}
AliAnalysisAlien &AliAnalysisAlien::operator=(const AliAnalysisAlien& other)
{
if (this != &other) {
AliAnalysisGrid::operator=(other);
fGridJDL = (TGridJDL*)gROOT->ProcessLine("new TAlienJDL()");
fMergingJDL = (TGridJDL*)gROOT->ProcessLine("new TAlienJDL()");
fPrice = other.fPrice;
fTTL = other.fTTL;
fSplitMaxInputFileNumber = other.fSplitMaxInputFileNumber;
fMaxInitFailed = other.fMaxInitFailed;
fMasterResubmitThreshold = other.fMasterResubmitThreshold;
fNtestFiles = other.fNtestFiles;
fNrunsPerMaster = other.fNrunsPerMaster;
fMaxMergeFiles = other.fMaxMergeFiles;
fMaxMergeStages = other.fMaxMergeStages;
fNsubmitted = other.fNsubmitted;
fProductionMode = other.fProductionMode;
fOutputToRunNo = other.fOutputToRunNo;
fMergeViaJDL = other.fMergeViaJDL;
fFastReadOption = other.fFastReadOption;
fOverwriteMode = other.fOverwriteMode;
fNreplicas = other.fNreplicas;
fNproofWorkers = other.fNproofWorkers;
fNproofWorkersPerSlave = other.fNproofWorkersPerSlave;
fProofReset = other.fProofReset;
fNMCevents = other.fNMCevents;
fNMCjobs = other.fNMCjobs;
fRunNumbers = other.fRunNumbers;
fExecutable = other.fExecutable;
fExecutableCommand = other.fExecutableCommand;
fArguments = other.fArguments;
fExecutableArgs = other.fExecutableArgs;
fAnalysisMacro = other.fAnalysisMacro;
fAnalysisSource = other.fAnalysisSource;
fValidationScript = other.fValidationScript;
fAdditionalRootLibs = other.fAdditionalRootLibs;
fAdditionalLibs = other.fAdditionalLibs;
fGeneratorLibs = other.fGeneratorLibs;
fSplitMode = other.fSplitMode;
fAPIVersion = other.fAPIVersion;
fROOTVersion = other.fROOTVersion;
fAliROOTVersion = other.fAliROOTVersion;
fExternalPackages = other.fExternalPackages;
fUser = other.fUser;
fGridWorkingDir = other.fGridWorkingDir;
fGridDataDir = other.fGridDataDir;
fDataPattern = other.fDataPattern;
fGridOutputDir = other.fGridOutputDir;
fOutputArchive = other.fOutputArchive;
fOutputFiles = other.fOutputFiles;
fInputFormat = other.fInputFormat;
fDatasetName = other.fDatasetName;
fJDLName = other.fJDLName;
fTerminateFiles = other.fTerminateFiles;
fMergeExcludes = other.fMergeExcludes;
fRegisterExcludes = other.fRegisterExcludes;
fIncludePath = other.fIncludePath;
fCloseSE = other.fCloseSE;
fFriendChainName = other.fFriendChainName;
fJobTag = other.fJobTag;
fOutputSingle = other.fOutputSingle;
fRunPrefix = other.fRunPrefix;
fProofCluster = other.fProofCluster;
fProofDataSet = other.fProofDataSet;
fFileForTestMode = other.fFileForTestMode;
fAliRootMode = other.fAliRootMode;
fProofProcessOpt = other.fProofProcessOpt;
fMergeDirName = other.fMergeDirName;
fDropToShell = other.fDropToShell;
fMCLoop = other.fMCLoop;
fGridJobIDs = other.fGridJobIDs;
fGridStages = other.fGridStages;
fFriendLibs = other.fFriendLibs;
fTreeName = other.fTreeName;
if (other.fInputFiles) {
fInputFiles = new TObjArray();
TIter next(other.fInputFiles);
TObject *obj;
while ((obj=next())) fInputFiles->Add(new TObjString(obj->GetName()));
fInputFiles->SetOwner();
}
if (other.fPackages) {
fPackages = new TObjArray();
TIter next(other.fPackages);
TObject *obj;
while ((obj=next())) fPackages->Add(new TObjString(obj->GetName()));
fPackages->SetOwner();
}
if (other.fModules) {
fModules = new TObjArray();
fModules->SetOwner();
TIter next(other.fModules);
AliAnalysisTaskCfg *mod, *crt;
while ((crt=(AliAnalysisTaskCfg*)next())) {
mod = new AliAnalysisTaskCfg(*crt);
fModules->Add(mod);
}
}
}
return *this;
}
void AliAnalysisAlien::AddAdditionalLibrary(const char *name)
{
TString lib(name);
if (!lib.Contains(".")) {
Error("AddAdditionalLibrary", "Extension not defined for %s", name);
return;
}
if (fAdditionalLibs.Contains(name)) {
Warning("AddAdditionalLibrary", "Library %s already added.", name);
return;
}
if (!fAdditionalLibs.IsNull()) fAdditionalLibs += " ";
fAdditionalLibs += lib;
}
void AliAnalysisAlien::AddModule(AliAnalysisTaskCfg *module)
{
if (!module) return;
if (GetModule(module->GetName())) {
Error("AddModule", "A module having the same name %s already added", module->GetName());
return;
}
if (!fModules) {
fModules = new TObjArray();
fModules->SetOwner();
}
fModules->Add(module);
}
void AliAnalysisAlien::AddModules(TObjArray *list)
{
TIter next(list);
AliAnalysisTaskCfg *module;
while ((module = (AliAnalysisTaskCfg*)next())) AddModule(module);
}
Bool_t AliAnalysisAlien::CheckDependencies()
{
Int_t nmodules = GetNmodules();
if (!nmodules) {
Warning("CheckDependencies", "No modules added yet to check their dependencies");
return kTRUE;
}
AliAnalysisTaskCfg *mod = 0;
AliAnalysisTaskCfg *dep = 0;
TString depname;
Int_t i, j, k;
for (i=0; i<nmodules; i++) {
mod = (AliAnalysisTaskCfg*) fModules->At(i);
Int_t ndeps = mod->GetNdeps();
Int_t istart = i;
for (j=0; j<ndeps; j++) {
depname = mod->GetDependency(j);
dep = GetModule(depname);
if (!dep) {
Error("CheckDependencies","Dependency %s not added for module %s",
depname.Data(), mod->GetName());
return kFALSE;
}
if (dep->NeedsDependency(mod->GetName())) {
Error("CheckDependencies","Modules %s and %s circularly depend on each other",
mod->GetName(), dep->GetName());
return kFALSE;
}
Int_t idep = fModules->IndexOf(dep);
if (idep>i) {
fModules->RemoveAt(idep);
for (k=idep-1; k>=i; k--) fModules->AddAt(fModules->RemoveAt(k),k+1);
fModules->AddAt(dep, i++);
}
if (i>istart) i=istart-1;
}
}
return kTRUE;
}
AliAnalysisManager *AliAnalysisAlien::CreateAnalysisManager(const char *name, const char *filename)
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (mgr) {
mgr->SetMCLoop(fMCLoop);
return mgr;
}
mgr = new AliAnalysisManager(name);
mgr->SetGridHandler((AliAnalysisGrid*)this);
mgr->SetMCLoop(fMCLoop);
if (strlen(filename)) {
TString line = gSystem->ExpandPathName(filename);
line.Prepend(".x ");
gROOT->ProcessLine(line.Data());
}
return mgr;
}
Int_t AliAnalysisAlien::GetNmodules() const
{
if (!fModules) return 0;
return fModules->GetEntries();
}
AliAnalysisTaskCfg *AliAnalysisAlien::GetModule(const char *name)
{
if (!fModules) return 0;
return (AliAnalysisTaskCfg*)fModules->FindObject(name);
}
Bool_t AliAnalysisAlien::LoadModule(AliAnalysisTaskCfg *mod)
{
if (mod->IsLoaded()) return kTRUE;
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
Error("LoadModule", "No analysis manager created yet. Use CreateAnalysisManager first.");
return kFALSE;
}
Int_t ndeps = mod->GetNdeps();
TString depname;
for (Int_t j=0; j<ndeps; j++) {
depname = mod->GetDependency(j);
AliAnalysisTaskCfg *dep = GetModule(depname);
if (!dep) {
Error("LoadModule","Dependency %s not existing for module %s",
depname.Data(), mod->GetName());
return kFALSE;
}
if (!LoadModule(dep)) {
Error("LoadModule","Dependency %s for module %s could not be loaded",
depname.Data(), mod->GetName());
return kFALSE;
}
}
if (!mod->CheckLoadLibraries()) {
Error("LoadModule", "Cannot load all libraries for module %s", mod->GetName());
return kFALSE;
}
if (strlen(mod->GetOutputFileName())) mgr->SetCommonFileName(mod->GetOutputFileName());
if (strlen(mod->GetTerminateFileName())) {
if (!fTerminateFiles.IsNull()) fTerminateFiles += ",";
fTerminateFiles += mod->GetTerminateFileName();
}
if (mod->ExecuteMacro()<0) {
Error("LoadModule", "Executing the macro %s with arguments: %s for module %s returned a negative value",
mod->GetMacroName(), mod->GetMacroArgs(), mod->GetName());
return kFALSE;
}
if (mod->GetConfigMacro() && mod->ExecuteConfigMacro()<0) {
Error("LoadModule", "There was an error executing the deps config macro %s for module %s",
mod->GetConfigMacro()->GetTitle(), mod->GetName());
return kFALSE;
}
Int_t nlibs = mod->GetNlibs();
TString lib;
for (Int_t i=0; i<nlibs; i++) {
lib = mod->GetLibrary(i);
lib = Form("lib%s.so", lib.Data());
if (fAdditionalLibs.Contains(lib)) continue;
if (!fAdditionalLibs.IsNull()) fAdditionalLibs += " ";
fAdditionalLibs += lib;
}
return kTRUE;
}
Bool_t AliAnalysisAlien::GenerateTrain(const char *name)
{
fAdditionalLibs = "";
if (!LoadModules()) return kFALSE;
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr->InitAnalysis()) return kFALSE;
mgr->RunLocalInit();
mgr->PrintStatus();
Int_t productionMode = fProductionMode;
SetProductionMode();
TString macro = fAnalysisMacro;
TString executable = fExecutable;
TString validation = fValidationScript;
TString execCommand = fExecutableCommand;
SetAnalysisMacro(Form("%s.C", name));
SetExecutable(Form("%s.sh", name));
SetValidationScript(Form("%s_validation.sh", name));
StartAnalysis();
SetProductionMode(productionMode);
fAnalysisMacro = macro;
fExecutable = executable;
fExecutableCommand = execCommand;
fValidationScript = validation;
return kTRUE;
}
Bool_t AliAnalysisAlien::GenerateTest(const char *name, const char *modname)
{
fAdditionalLibs = "";
if (strlen(modname)) {
if (!CheckDependencies()) return kFALSE;
AliAnalysisTaskCfg *mod = GetModule(modname);
if (!mod) {
Error("GenerateTest", "cannot generate test for inexistent module %s", modname);
return kFALSE;
}
if (!LoadModule(mod)) return kFALSE;
if (!LoadFriendLibs()) return kFALSE;
} else if (!LoadModules()) return kFALSE;
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr->InitAnalysis()) return kFALSE;
mgr->RunLocalInit();
mgr->PrintStatus();
SetLocalTest(kTRUE);
Int_t productionMode = fProductionMode;
SetProductionMode();
TString macro = fAnalysisMacro;
TString executable = fExecutable;
TString validation = fValidationScript;
TString execCommand = fExecutableCommand;
SetAnalysisMacro(Form("%s.C", name));
SetExecutable(Form("%s.sh", name));
fOutputFiles = GetListOfFiles("outaod");
TString extra = GetListOfFiles("ext");
if (!extra.IsNull()) {
extra.ReplaceAll(".root", "*.root");
if (!fOutputFiles.IsNull()) fOutputFiles += ",";
fOutputFiles += extra;
}
SetValidationScript(Form("%s_validation.sh", name));
WriteAnalysisFile();
WriteAnalysisMacro();
WriteExecutable();
WriteValidationScript();
WriteMergingMacro();
WriteMergeExecutable();
WriteValidationScript(kTRUE);
SetLocalTest(kFALSE);
SetProductionMode(productionMode);
fAnalysisMacro = macro;
fExecutable = executable;
fExecutableCommand = execCommand;
fValidationScript = validation;
return kTRUE;
}
Bool_t AliAnalysisAlien::LoadModules()
{
fAdditionalLibs = "";
Int_t nmodules = GetNmodules();
if (!nmodules) {
Warning("LoadModules", "No module to be loaded");
return kTRUE;
}
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
Error("LoadModules", "No analysis manager created yet. Use CreateAnalysisManager first.");
return kFALSE;
}
if (!CheckDependencies()) return kFALSE;
nmodules = GetNmodules();
AliAnalysisTaskCfg *mod;
for (Int_t imod=0; imod<nmodules; imod++) {
mod = (AliAnalysisTaskCfg*)fModules->At(imod);
if (!LoadModule(mod)) return kFALSE;
}
return LoadFriendLibs();
}
Bool_t AliAnalysisAlien::LoadFriendLibs() const
{
if (fFriendLibs.Length()) {
TObjArray *list = 0;
TString lib;
if (fFriendLibs.Contains(",")) list = fFriendLibs.Tokenize(",");
else list = fFriendLibs.Tokenize(" ");
for (Int_t ilib=0; ilib<list->GetEntriesFast(); ilib++) {
lib = list->At(ilib)->GetName();
lib.ReplaceAll(".so","");
lib.ReplaceAll(".dylib","");
lib.ReplaceAll(" ","");
if (lib.BeginsWith("lib")) lib.Remove(0, 3);
lib.Prepend("lib");
Int_t loaded = strlen(gSystem->GetLibraries(lib,"",kFALSE));
if (!loaded) loaded = gSystem->Load(lib);
if (loaded < 0) {
Error("LoadModules", "Cannot load library for friends %s", lib.Data());
return kFALSE;
}
}
delete list;
}
return kTRUE;
}
void AliAnalysisAlien::SetRunPrefix(const char *prefix)
{
fRunPrefix = prefix;
if (!fRunPrefix.Contains("%")) fRunPrefix += "%d";
}
void AliAnalysisAlien::AddIncludePath(const char *path)
{
TString p(path);
if (p.Contains("-I")) fIncludePath += Form("%s ", path);
else fIncludePath += Form("-I%s ", path);
}
void AliAnalysisAlien::AddRunNumber(Int_t run)
{
if (fRunNumbers.Length()) fRunNumbers += " ";
fRunNumbers += Form(fRunPrefix.Data(), run);
}
void AliAnalysisAlien::AddRunList(const char* runList)
{
TString sList = runList;
TObjArray *list = sList.Tokenize(" ");
Int_t n = list->GetEntries();
for (Int_t i = 0; i < n; i++) {
TObjString *os = (TObjString*)list->At(i);
AddRunNumber(os->GetString().Atoi());
}
delete list;
}
void AliAnalysisAlien::AddRunNumber(const char* run)
{
TString runs = run;
TObjString *os;
TObjArray *arr = runs.Tokenize(" ");
TIter next(arr);
TString prefix;
prefix.Append(fRunPrefix, fRunPrefix.Index("%d"));
while ((os=(TObjString*)next())){
if (fRunNumbers.Length()) fRunNumbers += " ";
fRunNumbers += Form("%s%s", prefix.Data(), os->GetString().Data());
}
delete arr;
}
void AliAnalysisAlien::AddDataFile(const char *lfn)
{
if (!fInputFiles) fInputFiles = new TObjArray();
fInputFiles->Add(new TObjString(lfn));
}
void AliAnalysisAlien::AddExternalPackage(const char *package)
{
if (fExternalPackages) fExternalPackages += " ";
fExternalPackages += package;
}
Bool_t AliAnalysisAlien::Connect()
{
if (gGrid && gGrid->IsConnected()) return kTRUE;
if (fProductionMode) return kTRUE;
if (!gGrid) {
Info("Connect", "Trying to connect to AliEn ...");
TGrid::Connect("alien://");
}
if (!gGrid || !gGrid->IsConnected()) {
Error("Connect", "Did not managed to connect to AliEn. Make sure you have a valid token.");
return kFALSE;
}
fUser = gGrid->GetUser();
Info("Connect", "\n##### Connected to AliEn as user %s. Setting analysis user to <%s>", fUser.Data(), fUser.Data());
return kTRUE;
}
void AliAnalysisAlien::CdWork()
{
if (!Connect()) {
Error("CdWork", "Alien connection required");
return;
}
TString homedir = gGrid->GetHomeDirectory();
TString workdir = homedir + fGridWorkingDir;
if (DirectoryExists(workdir)) {
gGrid->Cd(workdir);
return;
}
gGrid->Cd(homedir);
if (gGrid->Mkdir(workdir, "-p")) {
gGrid->Cd(fGridWorkingDir);
Info("CdWork", "\n##### Created alien working directory %s", fGridWorkingDir.Data());
} else {
Warning("CdWork", "Working directory %s cannot be created.\n Using %s instead.",
workdir.Data(), homedir.Data());
fGridWorkingDir = "";
}
}
Bool_t AliAnalysisAlien::CheckFileCopy(const char *alienpath)
{
if (fProductionMode) return kTRUE;
TString salienpath(alienpath);
if (salienpath.Contains(" ")) {
Error("CheckFileCopy", "path: <%s> contains blancs - FIX IT !",alienpath);
return kFALSE;
}
if (!Connect()) {
Error("CheckFileCopy", "Not connected to AliEn. File copying cannot be tested.");
return kFALSE;
}
Info("CheckFileCopy", "Checking possibility to copy files to your AliEn home directory... \
\n +++ NOTE: You can disable this via: plugin->SetCheckCopy(kFALSE);");
TString closeSE = gSystem->Getenv("alien_CLOSE_SE");
if (!closeSE.IsNull()) {
Info("CheckFileCopy", "Your current close storage is pointing to: \
\n alien_CLOSE_SE = \"%s\"", closeSE.Data());
} else {
Warning("CheckFileCopy", "Your current close storage is empty ! Depending on your location, file copying may fail.");
}
if (!DirectoryExists(alienpath)) {
Error("CheckFileCopy", "Alien path %s does not seem to exist", alienpath);
return kFALSE;
}
TString stest = "plugin_test_copy";
TFile f(stest, "RECREATE");
if (f.IsZombie()) {
Error("CheckFileCopy", "Cannot create local test file. Do you have write access to current directory: <%s> ?",
gSystem->WorkingDirectory());
return kFALSE;
}
f.Close();
if (FileExists(Form("alien://%s/%s",alienpath, stest.Data()))) gGrid->Rm(Form("alien://%s/%s",alienpath, stest.Data()));
if (!TFile::Cp(stest.Data(), Form("alien://%s/%s",alienpath, stest.Data()))) {
Error("CheckFileCopy", "Cannot copy files to Alien destination: <%s> This may be temporary, or: \
\n# 1. Make sure you have write permissions there. If this is the case: \
\n# 2. Check the storage availability at: http:
\n# Do: export alien_CLOSE_SE=\"working_disk_SE\" \
\n# To make this permanent put in in your .bashrc (in .alienshrc is not enough) \
\n# Redo token: rm /tmp/x509up_u$UID then: alien-token-init <username>", alienpath);
gSystem->Unlink(stest.Data());
return kFALSE;
}
gSystem->Unlink(stest.Data());
gGrid->Rm(Form("%s/%s",alienpath,stest.Data()));
Info("CheckFileCopy", "### ...SUCCESS ###");
return kTRUE;
}
Bool_t AliAnalysisAlien::CheckInputData()
{
if (fProductionMode) return kTRUE;
if (!fInputFiles && !fRunNumbers.Length() && !fRunRange[0]) {
if (!fGridDataDir.Length()) {
Error("CkeckInputData", "AliEn path to base data directory must be set.\n = Use: SetGridDataDir()");
return kFALSE;
}
if (fMergeViaJDL) {
Error("CheckInputData", "Merging via jdl works only with run numbers, run range or provided xml");
return kFALSE;
}
Info("CheckInputData", "Analysis will make a single xml for base data directory %s",fGridDataDir.Data());
if (fDataPattern.Contains("tag") && TestBit(AliAnalysisGrid::kTest))
TObject::SetBit(AliAnalysisGrid::kUseTags, kTRUE);
return kTRUE;
}
Bool_t isCollection = kFALSE;
Bool_t isXml = kFALSE;
Bool_t useTags = kFALSE;
Bool_t checked = kFALSE;
if (!TestBit(AliAnalysisGrid::kTest)) CdWork();
TString file;
TString workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
if (fInputFiles) {
TObjString *objstr;
TIter next(fInputFiles);
while ((objstr=(TObjString*)next())) {
file = workdir;
file += "/";
file += objstr->GetString();
if (FileExists(file)) objstr->SetString(file);
else {
file = objstr->GetName();
if (!FileExists(objstr->GetName())) {
Error("CheckInputData", "Data file %s not found or not in your working dir: %s",
objstr->GetName(), workdir.Data());
return kFALSE;
}
}
Bool_t iscoll, isxml, usetags;
CheckDataType(file, iscoll, isxml, usetags);
if (!checked) {
checked = kTRUE;
isCollection = iscoll;
isXml = isxml;
useTags = usetags;
TObject::SetBit(AliAnalysisGrid::kUseTags, useTags);
} else {
if ((iscoll != isCollection) || (isxml != isXml) || (usetags != useTags)) {
Error("CheckInputData", "Some conflict was found in the types of inputs");
return kFALSE;
}
}
}
}
if (!fRunNumbers.Length() && !fRunRange[0]) return kTRUE;
if (!fGridDataDir.Length()) {
Error("CkeckInputData", "AliEn path to base data directory must be set.\n = Use: SetGridDataDir()");
return kFALSE;
}
if (!DirectoryExists(fGridDataDir)) {
Error("CheckInputData", "Data directory %s not existing.", fGridDataDir.Data());
return kFALSE;
}
if (isCollection) {
Error("CheckInputData", "You are using raw AliEn collections as input. Cannot process run numbers.");
return kFALSE;
}
if (checked && !isXml) {
Error("CheckInputData", "Cannot mix processing of full runs with non-xml files");
return kFALSE;
}
TObjArray *arr;
TObjString *os;
TString format;
Int_t nruns = 0;
TString schunk, schunk2;
TString path;
if (!checked) {
checked = kTRUE;
useTags = fDataPattern.Contains("tag");
TObject::SetBit(AliAnalysisGrid::kUseTags, useTags);
}
if (useTags != fDataPattern.Contains("tag")) {
Error("CheckInputData", "Cannot mix input files using/not using tags");
return kFALSE;
}
if (fRunNumbers.Length()) {
Info("CheckDataType", "Using supplied run numbers (run ranges are ignored)");
arr = fRunNumbers.Tokenize(" ");
TIter next(arr);
while ((os=(TObjString*)next())) {
path = Form("%s/%s ", fGridDataDir.Data(), os->GetString().Data());
if (!DirectoryExists(path)) {
Warning("CheckInputData", "Run number %s not found in path: <%s>", os->GetString().Data(), path.Data());
continue;
}
path = Form("%s/%s.xml", workdir.Data(),os->GetString().Data());
TString msg = "\n##### file: ";
msg += path;
msg += " type: xml_collection;";
if (useTags) msg += " using_tags: Yes";
else msg += " using_tags: No";
Info("CheckDataType", "%s", msg.Data());
if (fNrunsPerMaster<2) {
AddDataFile(Form("%s.xml", os->GetString().Data()));
} else {
nruns++;
if (((nruns-1)%fNrunsPerMaster) == 0) {
schunk = os->GetString();
}
if ((nruns%fNrunsPerMaster)!=0 && os!=arr->Last()) continue;
schunk += Form("_%s.xml", os->GetString().Data());
AddDataFile(schunk);
}
}
delete arr;
} else {
Info("CheckDataType", "Using run range [%d, %d]", fRunRange[0], fRunRange[1]);
for (Int_t irun=fRunRange[0]; irun<=fRunRange[1]; irun++) {
format = Form("%%s/%s ", fRunPrefix.Data());
path = Form(format.Data(), fGridDataDir.Data(), irun);
if (!DirectoryExists(path)) {
continue;
}
format = Form("%%s/%s.xml", fRunPrefix.Data());
path = Form(format.Data(), workdir.Data(),irun);
TString msg = "\n##### file: ";
msg += path;
msg += " type: xml_collection;";
if (useTags) msg += " using_tags: Yes";
else msg += " using_tags: No";
Info("CheckDataType", "%s", msg.Data());
if (fNrunsPerMaster<2) {
format = Form("%s.xml", fRunPrefix.Data());
AddDataFile(Form(format.Data(),irun));
} else {
nruns++;
if (((nruns-1)%fNrunsPerMaster) == 0) {
schunk = Form(fRunPrefix.Data(),irun);
}
format = Form("_%s.xml", fRunPrefix.Data());
schunk2 = Form(format.Data(), irun);
if ((nruns%fNrunsPerMaster)!=0 && irun != fRunRange[1]) continue;
schunk += schunk2;
AddDataFile(schunk);
}
}
if (!fInputFiles) {
schunk += schunk2;
AddDataFile(schunk);
}
}
return kTRUE;
}
Int_t AliAnalysisAlien::CopyLocalDataset(const char *griddir, const char *pattern, Int_t nfiles, const char *output, const char *archivefile, const char *outputdir)
{
if (!Connect()) {
Error("CopyLocalDataset", "Cannot copy local dataset with no grid connection");
return 0;
}
if (!DirectoryExists(griddir)) {
Error("CopyLocalDataset", "Data directory %s not existing.", griddir);
return 0;
}
TString command = Form("find -z -l %d %s %s", nfiles, griddir, pattern);
printf("Running command: %s\n", command.Data());
TGridResult *res = gGrid->Command(command);
Int_t nfound = res->GetEntries();
if (!nfound) {
Error("CopyLocalDataset", "No file found in <%s> having pattern <%s>", griddir, pattern);
return 0;
}
printf("... found %d files. Copying locally ...\n", nfound);
TObjArray* additionalArchives = 0;
if (strlen(archivefile) > 0 && TString(archivefile).Contains(";")) {
additionalArchives = TString(archivefile).Tokenize(";");
archivefile = additionalArchives->At(0)->GetName();
additionalArchives->RemoveAt(0);
additionalArchives->Compress();
}
ofstream out;
out.open(output, ios::out);
TMap *map;
TString turl, dirname, filename, temp;
TString cdir = gSystem->WorkingDirectory();
gSystem->MakeDirectory(outputdir);
gSystem->ChangeDirectory(outputdir);
Int_t ncopied = 0;
for (Int_t i=0; i<nfound; i++) {
map = (TMap*)res->At(i);
turl = map->GetValue("turl")->GetName();
filename = gSystem->BaseName(turl.Data());
dirname = gSystem->DirName(turl.Data());
dirname = gSystem->BaseName(dirname.Data());
gSystem->MakeDirectory(dirname);
TString source(turl);
TString targetFileName(filename);
if (strlen(archivefile) > 0) {
source = Form("%s/%s", gSystem->DirName(source.Data()), archivefile);
targetFileName = archivefile;
}
if (TFile::Cp(source, Form("file:./%s/%s", dirname.Data(), targetFileName.Data()))) {
Bool_t success = kTRUE;
if (additionalArchives) {
for (Int_t j=0; j<additionalArchives->GetEntriesFast(); j++) {
TString target;
target.Form("./%s/%s", dirname.Data(), additionalArchives->At(j)->GetName());
gSystem->MakeDirectory(gSystem->DirName(target));
success &= TFile::Cp(Form("%s/%s", gSystem->DirName(source.Data()), additionalArchives->At(j)->GetName()), Form("file:%s", target.Data()));
}
}
if (success) {
if (strlen(archivefile) > 0) targetFileName = Form("%s#%s", targetFileName.Data(), gSystem->BaseName(turl.Data()));
out << cdir << Form("/%s/%s/%s", outputdir, dirname.Data(), targetFileName.Data()) << endl;
ncopied++;
}
}
}
gSystem->ChangeDirectory(cdir);
delete res;
delete additionalArchives;
return ncopied;
}
Bool_t AliAnalysisAlien::CreateDataset(const char *pattern)
{
const Int_t gMaxEntries = 15000;
if (fProductionMode || TestBit(AliAnalysisGrid::kOffline)) return kTRUE;
if (!Connect()) {
Error("CreateDataset", "Cannot create dataset with no grid connection");
return kFALSE;
}
if (!TestBit(AliAnalysisGrid::kTest)) CdWork();
TString workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
TString format;
TString command;
TString delimiter = pattern;
delimiter.Strip();
if (delimiter.Contains(" ")) delimiter = "";
else delimiter = " ";
TString options = "-x collection ";
if (TestBit(AliAnalysisGrid::kTest)) options += Form("-l %d ", fNtestFiles);
else options += Form("-l %d ", gMaxEntries);
TString conditions = "";
Int_t nstart = 0;
Int_t ncount = 0;
Int_t stage = 0;
TString file;
TString path;
Int_t nruns = 0;
TString schunk, schunk2;
TGridCollection *cbase=0, *cadd=0;
if (!fRunNumbers.Length() && !fRunRange[0]) {
if (fInputFiles && fInputFiles->GetEntries()) return kTRUE;
path = fGridDataDir;
if (!DirectoryExists(path)) {
Error("CreateDataset", "Path to data directory %s not valid",fGridDataDir.Data());
return kFALSE;
}
if (TestBit(AliAnalysisGrid::kTest)) file = "wn.xml";
else file = Form("%s.xml", gSystem->BaseName(path));
while (1) {
ncount = 0;
stage++;
if (gSystem->AccessPathName(file) || TestBit(AliAnalysisGrid::kTest) || fOverwriteMode) {
command = "find ";
command += Form("%s -o %d ",options.Data(), nstart);
command += path;
command += delimiter;
command += pattern;
command += conditions;
printf("command: %s\n", command.Data());
TGridResult *res = gGrid->Command(command);
if (res) delete res;
gROOT->ProcessLine(Form("gGrid->Stdout(); > __tmp%d__%s", stage, file.Data()));
Bool_t hasGrep = (gSystem->Exec("grep --version 2>/dev/null > /dev/null")==0)?kTRUE:kFALSE;
Bool_t nullFile = kFALSE;
if (!hasGrep) {
Warning("CreateDataset", "'grep' command not available on this system - cannot validate the result of the grid 'find' command");
} else {
nullFile = (gSystem->Exec(Form("grep -c /event __tmp%d__%s 2>/dev/null > __tmp__",stage,file.Data()))==0)?kFALSE:kTRUE;
if (nullFile) {
Error("CreateDataset","Dataset %s produced by the previous find command is empty !", file.Data());
gSystem->Exec("rm -f __tmp*");
return kFALSE;
}
TString line;
ifstream in;
in.open("__tmp__");
in >> line;
in.close();
gSystem->Exec("rm -f __tmp__");
ncount = line.Atoi();
}
}
if (ncount == gMaxEntries) {
Info("CreateDataset", "Dataset %s has more than 15K entries. Trying to merge...", file.Data());
cadd = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"__tmp%d__%s\", 1000000);",stage,file.Data()));
if (!cbase) cbase = cadd;
else {
gROOT->ProcessLine(Form("((TAlienCollection*)%p)->AddFast((TGridCollection*)%p)",cbase,cadd));
delete cadd;
}
nstart += ncount;
} else {
if (cbase) {
cadd = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"__tmp%d__%s\", 1000000);",stage,file.Data()));
printf("... please wait - TAlienCollection::Add() scales badly...\n");
gROOT->ProcessLine(Form("((TAlienCollection*)%p)->AddFast((TGridCollection*)%p)",cbase,cadd));
delete cadd;
cbase->ExportXML(Form("file://%s", file.Data()),kFALSE,kFALSE, file, "Merged entries for a run");
delete cbase; cbase = 0;
} else {
TFile::Cp(Form("__tmp%d__%s",stage, file.Data()), file.Data());
}
gSystem->Exec("rm -f __tmp*");
Info("CreateDataset", "Created dataset %s with %d files", file.Data(), nstart+ncount);
break;
}
}
Bool_t fileExists = FileExists(file);
if (!TestBit(AliAnalysisGrid::kTest) && (!fileExists || fOverwriteMode)) {
if (fileExists) gGrid->Rm(file);
TFile::Cp(Form("file:%s",file.Data()), Form("alien://%s/%s",workdir.Data(), file.Data()));
if (!FileExists(file)) {
Error("CreateDataset", "Command %s did NOT succeed", command.Data());
return kFALSE;
}
}
AddDataFile(Form("%s/%s", workdir.Data(), file.Data()));
return kTRUE;
}
Bool_t nullResult = kTRUE;
if (fRunNumbers.Length()) {
TObjArray *arr = fRunNumbers.Tokenize(" ");
TObjString *os;
TIter next(arr);
while ((os=(TObjString*)next())) {
nstart = 0;
stage = 0;
path = Form("%s/%s", fGridDataDir.Data(), os->GetString().Data());
if (!DirectoryExists(path)) continue;
if (TestBit(AliAnalysisGrid::kTest)) file = "wn.xml";
else file = Form("%s.xml", os->GetString().Data());
while (1) {
ncount = 0;
stage++;
if (gSystem->AccessPathName(file) || TestBit(AliAnalysisGrid::kTest) || fOverwriteMode) {
command = "find ";
command += Form("%s -o %d ",options.Data(), nstart);
command += path;
command += delimiter;
command += pattern;
command += conditions;
TGridResult *res = gGrid->Command(command);
if (res) delete res;
gROOT->ProcessLine(Form("gGrid->Stdout(); > __tmp%d__%s", stage,file.Data()));
Bool_t hasGrep = (gSystem->Exec("grep --version 2>/dev/null > /dev/null")==0)?kTRUE:kFALSE;
Bool_t nullFile = kFALSE;
if (!hasGrep) {
Warning("CreateDataset", "'grep' command not available on this system - cannot validate the result of the grid 'find' command");
} else {
nullFile = (gSystem->Exec(Form("grep -c /event __tmp%d__%s 2>/dev/null > __tmp__",stage,file.Data()))==0)?kFALSE:kTRUE;
if (nullFile) {
Warning("CreateDataset","Dataset %s produced by: <%s> is empty !", file.Data(), command.Data());
gSystem->Exec("rm -f __tmp*");
fRunNumbers.ReplaceAll(os->GetString().Data(), "");
break;
}
TString line;
ifstream in;
in.open("__tmp__");
in >> line;
in.close();
gSystem->Exec("rm -f __tmp__");
ncount = line.Atoi();
}
nullResult = kFALSE;
}
if (ncount == gMaxEntries) {
Info("CreateDataset", "Dataset %s has more than 15K entries. Trying to merge...", file.Data());
if (fNrunsPerMaster > 1) {
Error("CreateDataset", "File %s has more than %d entries. Please set the number of runs per master to 1 !",
file.Data(),gMaxEntries);
return kFALSE;
}
cadd = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"__tmp%d__%s\", 1000000);",stage,file.Data()));
if (!cbase) cbase = cadd;
else {
gROOT->ProcessLine(Form("((TAlienCollection*)%p)->AddFast((TGridCollection*)%p)",cbase,cadd));
delete cadd;
}
nstart += ncount;
} else {
if (cbase && fNrunsPerMaster<2) {
cadd = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"__tmp%d__%s\", 1000000);",stage,file.Data()));
printf("... please wait - TAlienCollection::Add() scales badly...\n");
gROOT->ProcessLine(Form("((TAlienCollection*)%p)->AddFast((TGridCollection*)%p)",cbase,cadd));
delete cadd;
cbase->ExportXML(Form("file://%s", file.Data()),kFALSE,kFALSE, file, "Merged entries for a run");
delete cbase; cbase = 0;
} else {
TFile::Cp(Form("__tmp%d__%s",stage, file.Data()), file.Data());
}
gSystem->Exec("rm -f __tmp*");
Info("CreateDataset", "Created dataset %s with %d files", file.Data(), nstart+ncount);
break;
}
}
if (TestBit(AliAnalysisGrid::kTest)) break;
if (fNrunsPerMaster<2) {
if (FileExists(file)) {
if (fOverwriteMode) gGrid->Rm(file);
else {
Info("CreateDataset", "\n##### Dataset %s exist. Skipping creation...", file.Data());
continue;
}
}
TFile::Cp(Form("file:%s",file.Data()), Form("alien://%s/%s",workdir.Data(), file.Data()));
if (!FileExists(file)) {
Error("CreateDataset", "Command %s did NOT succeed", command.Data());
delete arr;
return kFALSE;
}
} else {
nruns++;
if (((nruns-1)%fNrunsPerMaster) == 0) {
schunk = os->GetString();
cbase = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"%s\", 1000000);",file.Data()));
} else {
cadd = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"%s\", 1000000);",file.Data()));
printf(" Merging collection <%s> into masterjob input...\n", file.Data());
gROOT->ProcessLine(Form("((TAlienCollection*)%p)->AddFast((TGridCollection*)%p)",cbase,cadd));
delete cadd;
}
if ((nruns%fNrunsPerMaster)!=0 && os!=arr->Last()) {
continue;
}
schunk += Form("_%s.xml", os->GetString().Data());
if (FileExists(schunk)) {
if (fOverwriteMode) gGrid->Rm(file);
else {
Info("CreateDataset", "\n##### Dataset %s exist. Skipping creation...", schunk.Data());
continue;
}
}
printf("Exporting merged collection <%s> and copying to AliEn\n", schunk.Data());
cbase->ExportXML(Form("file://%s", schunk.Data()),kFALSE,kFALSE, schunk, "Merged runs");
TFile::Cp(Form("file:%s",schunk.Data()), Form("alien://%s/%s",workdir.Data(), schunk.Data()));
if (!FileExists(schunk)) {
Error("CreateDataset", "Copy command did NOT succeed for %s", schunk.Data());
delete arr;
return kFALSE;
}
}
}
delete arr;
if (nullResult) {
Error("CreateDataset", "No valid dataset corresponding to the query!");
return kFALSE;
}
} else {
for (Int_t irun=fRunRange[0]; irun<=fRunRange[1]; irun++) {
format = Form("%%s/%s", fRunPrefix.Data());
nstart = 0;
stage = 0;
path = Form(format.Data(), fGridDataDir.Data(), irun);
if (!DirectoryExists(path)) continue;
format = Form("%s.xml", fRunPrefix.Data());
if (TestBit(AliAnalysisGrid::kTest)) file = "wn.xml";
else file = Form(format.Data(), irun);
if (FileExists(file) && fNrunsPerMaster<2 && !TestBit(AliAnalysisGrid::kTest)) {
if (fOverwriteMode) gGrid->Rm(file);
else {
Info("CreateDataset", "\n##### Dataset %s exist. Skipping creation...", file.Data());
continue;
}
}
while (1) {
ncount = 0;
stage++;
if (gSystem->AccessPathName(file) || TestBit(AliAnalysisGrid::kTest) || fOverwriteMode) {
command = "find ";
command += Form("%s -o %d ",options.Data(), nstart);
command += path;
command += delimiter;
command += pattern;
command += conditions;
TGridResult *res = gGrid->Command(command);
if (res) delete res;
gROOT->ProcessLine(Form("gGrid->Stdout(); > __tmp%d__%s", stage,file.Data()));
Bool_t hasGrep = (gSystem->Exec("grep --version 2>/dev/null > /dev/null")==0)?kTRUE:kFALSE;
Bool_t nullFile = kFALSE;
if (!hasGrep) {
Warning("CreateDataset", "'grep' command not available on this system - cannot validate the result of the grid 'find' command");
} else {
nullFile = (gSystem->Exec(Form("grep -c /event __tmp%d__%s 2>/dev/null > __tmp__",stage,file.Data()))==0)?kFALSE:kTRUE;
if (nullFile) {
Warning("CreateDataset","Dataset %s produced by: <%s> is empty !", file.Data(), command.Data());
gSystem->Exec("rm -f __tmp*");
break;
}
TString line;
ifstream in;
in.open("__tmp__");
in >> line;
in.close();
gSystem->Exec("rm -f __tmp__");
ncount = line.Atoi();
}
nullResult = kFALSE;
}
if (ncount == gMaxEntries) {
Info("CreateDataset", "Dataset %s has more than 15K entries. Trying to merge...", file.Data());
if (fNrunsPerMaster > 1) {
Error("CreateDataset", "File %s has more than %d entries. Please set the number of runs per master to 1 !",
file.Data(),gMaxEntries);
return kFALSE;
}
cadd = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"__tmp%d__%s\", 1000000);",stage,file.Data()));
if (!cbase) cbase = cadd;
else {
gROOT->ProcessLine(Form("((TAlienCollection*)%p)->AddFast((TGridCollection*)%p)",cbase,cadd));
delete cadd;
}
nstart += ncount;
} else {
if (cbase && fNrunsPerMaster<2) {
cadd = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"__tmp%d__%s\", 1000000);",stage,file.Data()));
printf("... please wait - TAlienCollection::Add() scales badly...\n");
gROOT->ProcessLine(Form("((TAlienCollection*)%p)->AddFast((TGridCollection*)%p)",cbase,cadd));
delete cadd;
cbase->ExportXML(Form("file://%s", file.Data()),kFALSE,kFALSE, file, "Merged entries for a run");
delete cbase; cbase = 0;
} else {
TFile::Cp(Form("__tmp%d__%s",stage, file.Data()), file.Data());
}
Info("CreateDataset", "Created dataset %s with %d files", file.Data(), nstart+ncount);
break;
}
}
if (TestBit(AliAnalysisGrid::kTest)) break;
if (fNrunsPerMaster<2) {
if (FileExists(file)) {
if (fOverwriteMode) gGrid->Rm(file);
else {
Info("CreateDataset", "\n##### Dataset %s exist. Skipping creation...", file.Data());
continue;
}
}
TFile::Cp(Form("file:%s",file.Data()), Form("alien://%s/%s",workdir.Data(), file.Data()));
if (!FileExists(file)) {
Error("CreateDataset", "Command %s did NOT succeed", command.Data());
return kFALSE;
}
} else {
nruns++;
Int_t nchunk = (nruns-1)/fNrunsPerMaster;
if (FileExists(fInputFiles->At(nchunk)->GetName())) {
if (fOverwriteMode) gGrid->Rm(fInputFiles->At(nchunk)->GetName());
else continue;
}
printf(" Merging collection <%s> into %d runs chunk...\n",file.Data(),fNrunsPerMaster);
if (((nruns-1)%fNrunsPerMaster) == 0) {
schunk = Form(fRunPrefix.Data(), irun);
cbase = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"%s\", 1000000);",file.Data()));
} else {
cadd = (TGridCollection*)gROOT->ProcessLine(Form("new TAlienCollection(\"%s\", 1000000);",file.Data()));
gROOT->ProcessLine(Form("((TAlienCollection*)%p)->AddFast((TGridCollection*)%p)",cbase,cadd));
delete cadd;
}
format = Form("%%s_%s.xml", fRunPrefix.Data());
schunk2 = Form(format.Data(), schunk.Data(), irun);
if ((nruns%fNrunsPerMaster)!=0 && irun!=fRunRange[1] && schunk2 != fInputFiles->Last()->GetName()) {
continue;
}
schunk = schunk2;
if (FileExists(schunk)) {
if (fOverwriteMode) gGrid->Rm(schunk);
else {
Info("CreateDataset", "\n##### Dataset %s exist. Skipping creation...", schunk.Data());
continue;
}
}
printf("Exporting merged collection <%s> and copying to AliEn.\n", schunk.Data());
cbase->ExportXML(Form("file://%s", schunk.Data()),kFALSE,kFALSE, schunk, "Merged runs");
if (FileExists(schunk)) {
if (fOverwriteMode) gGrid->Rm(schunk);
else {
Info("CreateDataset", "\n##### Dataset %s exist. Skipping copy...", schunk.Data());
continue;
}
}
TFile::Cp(Form("file:%s",schunk.Data()), Form("alien://%s/%s",workdir.Data(), schunk.Data()));
if (!FileExists(schunk)) {
Error("CreateDataset", "Copy command did NOT succeed for %s", schunk.Data());
return kFALSE;
}
}
}
if (nullResult) {
Error("CreateDataset", "No valid dataset corresponding to the query!");
return kFALSE;
}
}
return kTRUE;
}
Bool_t AliAnalysisAlien::CreateJDL()
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
Bool_t error = kFALSE;
TObjArray *arr = 0;
Bool_t copy = kTRUE;
if (fProductionMode || TestBit(AliAnalysisGrid::kOffline) || TestBit(AliAnalysisGrid::kTest)) copy = kFALSE;
Bool_t generate = kTRUE;
if (TestBit(AliAnalysisGrid::kTest) || TestBit(AliAnalysisGrid::kSubmit)) generate = kFALSE;
if (!Connect()) {
Error("CreateJDL", "Alien connection required");
return kFALSE;
}
TString workdir;
if (!fProductionMode && !fGridWorkingDir.BeginsWith("/alice")) workdir = gGrid->GetHomeDirectory();
if (!fProductionMode && !TestBit(AliAnalysisGrid::kTest)) CdWork();
workdir += fGridWorkingDir;
if (generate) {
TObjString *os;
if (!fInputFiles && !fMCLoop) {
Error("CreateJDL()", "Define some input files for your analysis.");
error = kTRUE;
}
if (!fOutputFiles.Length()) {
Error("CreateJDL", "You must define at least one output file");
error = kTRUE;
}
if (!fGridOutputDir.Length()) {
Error("CreateJDL", "You must define AliEn output directory");
error = kTRUE;
} else {
if (!fProductionMode) {
if (!fGridOutputDir.Contains("/")) fGridOutputDir = Form("%s/%s", workdir.Data(), fGridOutputDir.Data());
if (!DirectoryExists(fGridOutputDir)) {
if (gGrid->Mkdir(fGridOutputDir,"-p")) {
Info("CreateJDL", "\n##### Created alien output directory %s", fGridOutputDir.Data());
} else {
Error("CreateJDL", "Could not create alien output directory %s", fGridOutputDir.Data());
}
} else {
Warning("CreateJDL", "#### Output directory %s exists! If this contains old data, jobs will fail with ERROR_SV !!! ###", fGridOutputDir.Data());
}
gGrid->Cd(workdir);
}
}
if (error) return kFALSE;
if (!fUser.IsNull()) {
fGridJDL->SetValue("User", Form("\"%s\"", fUser.Data()));
fMergingJDL->SetValue("User", Form("\"%s\"", fUser.Data()));
}
TString executable = fExecutable;
if (!executable.BeginsWith("/"))
executable.Prepend(Form("%s/", workdir.Data()));
fGridJDL->SetExecutable(executable, "This is the startup script");
TString mergeExec = executable;
mergeExec.ReplaceAll(".sh", "_merge.sh");
fMergingJDL->SetExecutable(mergeExec, "This is the startup script");
mergeExec.ReplaceAll(".sh", ".C");
fMergingJDL->AddToInputSandbox(Form("LF:%s", mergeExec.Data()), "List of input files to be uploaded to workers");
if (!fArguments.IsNull())
fGridJDL->SetArguments(fArguments, "Arguments for the executable command");
if (IsOneStageMerging()) fMergingJDL->SetArguments(fGridOutputDir);
else {
if (fProductionMode) fMergingJDL->SetArguments("wn.xml $4");
else fMergingJDL->SetArguments("wn.xml $2");
}
fGridJDL->SetValue("TTL", Form("\"%d\"",fTTL));
fGridJDL->SetDescription("TTL", Form("Time after which the job is killed (%d min.)", fTTL/60));
fMergingJDL->SetValue("TTL", Form("\"%d\"",fTTL));
fMergingJDL->SetDescription("TTL", Form("Time after which the job is killed (%d min.)", fTTL/60));
if (fMaxInitFailed > 0) {
fGridJDL->SetValue("MaxInitFailed", Form("\"%d\"",fMaxInitFailed));
fGridJDL->SetDescription("MaxInitFailed", "Maximum number of first failing jobs to abort the master job");
}
if (fSplitMaxInputFileNumber > 0 && !fMCLoop) {
fGridJDL->SetValue("SplitMaxInputFileNumber", Form("\"%d\"", fSplitMaxInputFileNumber));
fGridJDL->SetDescription("SplitMaxInputFileNumber", "Maximum number of input files to be processed per subjob");
}
if (!IsOneStageMerging()) {
fMergingJDL->SetValue("SplitMaxInputFileNumber", Form("\"%d\"",fMaxMergeFiles));
fMergingJDL->SetDescription("SplitMaxInputFileNumber", "Maximum number of input files to be merged in one go");
}
if (fSplitMode.Length()) {
fGridJDL->SetValue("Split", Form("\"%s\"", fSplitMode.Data()));
fGridJDL->SetDescription("Split", "We split per SE or file");
}
fMergingJDL->SetValue("Split", "\"se\"");
fMergingJDL->SetDescription("Split", "We split per SE for merging in stages");
if (!fAliROOTVersion.IsNull()) {
fGridJDL->AddToPackages("AliRoot", fAliROOTVersion,"VO_ALICE", "List of requested packages");
fMergingJDL->AddToPackages("AliRoot", fAliROOTVersion, "VO_ALICE", "List of requested packages");
}
if (!fROOTVersion.IsNull()) {
fGridJDL->AddToPackages("ROOT", fROOTVersion);
fMergingJDL->AddToPackages("ROOT", fROOTVersion);
}
if (!fAPIVersion.IsNull()) {
fGridJDL->AddToPackages("APISCONFIG", fAPIVersion);
fMergingJDL->AddToPackages("APISCONFIG", fAPIVersion);
}
if (!fExternalPackages.IsNull()) {
arr = fExternalPackages.Tokenize(" ");
TIter next(arr);
while ((os=(TObjString*)next())) {
TString pkgname = os->GetString();
Int_t index = pkgname.Index("::");
TString pkgversion = pkgname(index+2, pkgname.Length());
pkgname.Remove(index);
fGridJDL->AddToPackages(pkgname, pkgversion);
fMergingJDL->AddToPackages(pkgname, pkgversion);
}
delete arr;
}
if (!fMCLoop) {
fGridJDL->SetInputDataListFormat(fInputFormat, "Format of input data");
fGridJDL->SetInputDataList("wn.xml", "Collection name to be processed on each worker node");
}
fMergingJDL->SetInputDataListFormat(fInputFormat, "Format of input data");
fMergingJDL->SetInputDataList("wn.xml", "Collection name to be processed on each worker node");
fGridJDL->AddToInputSandbox(Form("LF:%s/%s", workdir.Data(), fAnalysisMacro.Data()), "List of input files to be uploaded to workers");
TString analysisFile = fExecutable;
analysisFile.ReplaceAll(".sh", ".root");
fGridJDL->AddToInputSandbox(Form("LF:%s/%s", workdir.Data(),analysisFile.Data()));
fMergingJDL->AddToInputSandbox(Form("LF:%s/%s", workdir.Data(),analysisFile.Data()));
if (fAdditionalLibs.Length()) {
arr = fAdditionalLibs.Tokenize(" ");
TIter next(arr);
while ((os=(TObjString*)next())) {
if (os->GetString().Contains(".so") ||
os->GetString().Contains(".dylib")) continue;
fGridJDL->AddToInputSandbox(Form("LF:%s/%s", workdir.Data(), os->GetString().Data()));
fMergingJDL->AddToInputSandbox(Form("LF:%s/%s", workdir.Data(), os->GetString().Data()));
}
delete arr;
}
if (fPackages) {
TIter next(fPackages);
TObject *obj;
while ((obj=next())) {
fGridJDL->AddToInputSandbox(Form("LF:%s/%s", workdir.Data(), obj->GetName()));
fMergingJDL->AddToInputSandbox(Form("LF:%s/%s", workdir.Data(), obj->GetName()));
}
}
const char *comment = "List of output files and archives";
if (fOutputArchive.Length()) {
TString outputArchive = fOutputArchive;
if (!fRegisterExcludes.IsNull()) {
arr = fRegisterExcludes.Tokenize(" ");
TIter next1(arr);
while ((os=(TObjString*)next1())) {
outputArchive.ReplaceAll(Form("%s,",os->GetString().Data()),"");
outputArchive.ReplaceAll(os->GetString(),"");
}
delete arr;
}
arr = outputArchive.Tokenize(" ");
TIter next(arr);
Bool_t first = kTRUE;
while ((os=(TObjString*)next())) {
if (!os->GetString().Contains("@") && fCloseSE.Length())
fGridJDL->AddToSet("Output", Form("%s@%s",os->GetString().Data(), fCloseSE.Data()));
else
fGridJDL->AddToSet("Output", os->GetString());
if (first) fGridJDL->AddToSetDescription("Output", comment);
first = kFALSE;
}
delete arr;
if (TestBit(AliAnalysisGrid::kDefaultOutputs)) {
outputArchive = "log_archive.zip:std*@disk=1 ";
TString files;
if (IsMergeAOD()) files = GetListOfFiles("outaodextter");
else files = GetListOfFiles("outextter");
if (!fRegisterExcludes.IsNull()) {
arr = fRegisterExcludes.Tokenize(" ");
TIter next1(arr);
while ((os=(TObjString*)next1())) {
files.ReplaceAll(Form("%s,",os->GetString().Data()),"");
files.ReplaceAll(os->GetString(),"");
}
delete arr;
}
files.ReplaceAll(".root", "*.root");
if (mgr->IsCollectThroughput())
outputArchive += Form("root_archive.zip:%s,*.stat@disk=%d %s@disk=%d",files.Data(),fNreplicas, mgr->GetFileInfoLog(),fNreplicas);
else
outputArchive += Form("root_archive.zip:%s,*.stat@disk=%d",files.Data(),fNreplicas);
} else {
TString files = fOutputArchive;
files.ReplaceAll(".root", "*.root");
outputArchive = files;
}
arr = outputArchive.Tokenize(" ");
TIter next2(arr);
first = kTRUE;
while ((os=(TObjString*)next2())) {
TString currentfile = os->GetString();
if (!currentfile.Contains("@") && fCloseSE.Length())
fMergingJDL->AddToSet("Output", Form("%s@%s",currentfile.Data(), fCloseSE.Data()));
else
fMergingJDL->AddToSet("Output", currentfile);
if (first) fMergingJDL->AddToSetDescription("Output", comment);
first = kFALSE;
}
delete arr;
}
arr = fOutputFiles.Tokenize(",");
TIter next(arr);
Bool_t first = kTRUE;
while ((os=(TObjString*)next())) {
TString sout = os->GetString();
sout.ReplaceAll("*", "");
sout.ReplaceAll(".root", "");
if (sout.Index("@")>0) sout.Remove(sout.Index("@"));
if (fOutputArchive.Contains(sout)) continue;
if (fRegisterExcludes.Contains(sout)) continue;
if (!first) comment = NULL;
if (!os->GetString().Contains("@") && fCloseSE.Length())
fGridJDL->AddToSet("Output", Form("%s@%s",os->GetString().Data(), fCloseSE.Data()));
else
fGridJDL->AddToSet("Output", os->GetString());
if (first) fGridJDL->AddToSetDescription("Output", comment);
if (fMergeExcludes.Contains(sout)) continue;
if (!os->GetString().Contains("@") && fCloseSE.Length())
fMergingJDL->AddToSet("Output", Form("%s@%s",os->GetString().Data(), fCloseSE.Data()));
else
fMergingJDL->AddToSet("Output", os->GetString());
if (first) fMergingJDL->AddToSetDescription("Output", comment);
first = kFALSE;
}
delete arr;
fGridJDL->SetPrice((UInt_t)fPrice, "AliEn price for this job");
fMergingJDL->SetPrice((UInt_t)fPrice, "AliEn price for this job");
TString validationScript = fValidationScript;
fGridJDL->SetValidationCommand(Form("%s/%s", workdir.Data(),validationScript.Data()), "Validation script to be run for each subjob");
validationScript.ReplaceAll(".sh", "_merge.sh");
fMergingJDL->SetValidationCommand(Form("%s/%s", workdir.Data(),validationScript.Data()), "Validation script to be run for each subjob");
if (fMasterResubmitThreshold) {
fGridJDL->SetValue("MasterResubmitThreshold", Form("\"%d%%\"", fMasterResubmitThreshold));
fGridJDL->SetDescription("MasterResubmitThreshold", "Resubmit failed jobs until DONE rate reaches this percentage");
}
WriteJDL(copy);
}
if (copy) {
if (!fGridOutputDir.Length()) {
Error("CreateJDL", "You must define AliEn output directory");
return kFALSE;
} else {
if (!fGridOutputDir.Contains("/")) fGridOutputDir = Form("%s/%s", workdir.Data(), fGridOutputDir.Data());
if (!fProductionMode && !DirectoryExists(fGridOutputDir)) {
if (gGrid->Mkdir(fGridOutputDir,"-p")) {
Info("CreateJDL", "\n##### Created alien output directory %s", fGridOutputDir.Data());
} else {
Error("CreateJDL", "Could not create alien output directory %s", fGridOutputDir.Data());
return kFALSE;
}
}
gGrid->Cd(workdir);
}
if (TestBit(AliAnalysisGrid::kSubmit)) {
TString mergeJDLName = fExecutable;
mergeJDLName.ReplaceAll(".sh", "_merge.jdl");
TString locjdl = Form("%s/%s", fGridOutputDir.Data(),fJDLName.Data());
TString locjdl1 = Form("%s/%s", fGridOutputDir.Data(),mergeJDLName.Data());
if (fProductionMode) {
locjdl = Form("%s/%s", workdir.Data(),fJDLName.Data());
locjdl1 = Form("%s/%s", workdir.Data(),mergeJDLName.Data());
}
if (FileExists(locjdl)) gGrid->Rm(locjdl);
if (FileExists(locjdl1)) gGrid->Rm(locjdl1);
Info("CreateJDL", "\n##### Copying JDL file <%s> to your AliEn output directory", fJDLName.Data());
if (!copyLocal2Alien("CreateJDL", fJDLName, locjdl))
Fatal("","Terminating");
if (fMergeViaJDL) {
Info("CreateJDL", "\n##### Copying merging JDL file <%s> to your AliEn output directory", mergeJDLName.Data());
if (!copyLocal2Alien("CreateJDL", mergeJDLName.Data(), locjdl1))
Fatal("","Terminating");
}
}
if (fAdditionalLibs.Length()) {
arr = fAdditionalLibs.Tokenize(" ");
TObjString *os;
TIter next(arr);
while ((os=(TObjString*)next())) {
if (os->GetString().Contains(".so") ||
os->GetString().Contains(".dylib")) continue;
Info("CreateJDL", "\n##### Copying dependency: <%s> to your alien workspace", os->GetString().Data());
if (FileExists(os->GetString())) gGrid->Rm(os->GetString());
if (!copyLocal2Alien("CreateJDL", os->GetString().Data(),
Form("%s/%s", workdir.Data(), os->GetString().Data())))
Fatal("","Terminating");
}
delete arr;
}
if (fPackages) {
TIter next(fPackages);
TObject *obj;
while ((obj=next())) {
if (FileExists(obj->GetName())) gGrid->Rm(obj->GetName());
Info("CreateJDL", "\n##### Copying dependency: <%s> to your alien workspace", obj->GetName());
if (!copyLocal2Alien("CreateJDL",obj->GetName(),
Form("%s/%s", workdir.Data(), obj->GetName())))
Fatal("","Terminating");
}
}
}
return kTRUE;
}
Bool_t AliAnalysisAlien::WriteJDL(Bool_t copy)
{
if (!fInputFiles && !fMCLoop) return kFALSE;
TObject *os;
TString workdir;
if (!fProductionMode && !fGridWorkingDir.BeginsWith("/alice")) workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
TString stageName = "$2";
if (fProductionMode) stageName = "$4";
if (!fMergeDirName.IsNull()) {
fMergingJDL->AddToInputDataCollection(Form("LF:$1/%s/Stage_%s.xml,nodownload",fMergeDirName.Data(),stageName.Data()), "Collection of files to be merged for current stage");
fMergingJDL->SetOutputDirectory(Form("$1/%s/Stage_%s/#alien_counter_03i#",fMergeDirName.Data(),stageName.Data()), "Output directory");
} else {
fMergingJDL->AddToInputDataCollection(Form("LF:$1/Stage_%s.xml,nodownload",stageName.Data()), "Collection of files to be merged for current stage");
fMergingJDL->SetOutputDirectory(Form("$1/Stage_%s/#alien_counter_03i#",stageName.Data()), "Output directory");
}
if (fProductionMode) {
TIter next(fInputFiles);
while ((os=next())) {
fGridJDL->AddToInputDataCollection(Form("LF:%s,nodownload", os->GetName()), "Input xml collections");
}
if (!fOutputToRunNo)
fGridJDL->SetOutputDirectory(Form("%s/#alien_counter_04i#", fGridOutputDir.Data()));
else
fGridJDL->SetOutputDirectory(fGridOutputDir);
} else {
if (!fRunNumbers.Length() && !fRunRange[0]) {
TIter next(fInputFiles);
while ((os=next()))
fGridJDL->AddToInputDataCollection(Form("LF:%s,nodownload", os->GetName()), "Input xml collections");
if (!fOutputSingle.IsNull())
fGridJDL->SetOutputDirectory(Form("#alienfulldir#/../%s",fOutputSingle.Data()), "Output directory");
else {
fGridJDL->SetOutputDirectory(Form("%s/#alien_counter_03i#", fGridOutputDir.Data()), "Output directory");
}
} else {
fGridJDL->AddToInputDataCollection(Form("LF:%s/$1,nodownload", workdir.Data()), "Input xml collections");
if (!fOutputSingle.IsNull()) {
if (!fOutputToRunNo) fGridJDL->SetOutputDirectory(Form("#alienfulldir#/%s",fOutputSingle.Data()), "Output directory");
else fGridJDL->SetOutputDirectory(Form("%s/$2",fGridOutputDir.Data()), "Output directory");
} else {
fGridJDL->SetOutputDirectory(Form("%s/$2/#alien_counter_03i#", fGridOutputDir.Data()), "Output directory");
}
}
}
TString sjdl = fGridJDL->Generate();
TString sjdl1 = fMergingJDL->Generate();
if (!fMergeDirName.IsNull()) {
fMergingJDL->SetOutputDirectory(Form("$1/%s",fMergeDirName.Data()), "Output directory");
fMergingJDL->AddToInputSandbox(Form("LF:$1/%s/Stage_%s.xml",fMergeDirName.Data(),stageName.Data()));
} else {
fMergingJDL->SetOutputDirectory("$1", "Output directory");
fMergingJDL->AddToInputSandbox(Form("LF:$1/Stage_%s.xml",stageName.Data()));
}
TString sjdl2 = fMergingJDL->Generate();
Int_t index, index1;
sjdl.ReplaceAll("\",\"", "\",\n \"");
sjdl.ReplaceAll("(member", "\n (member");
sjdl.ReplaceAll("\",\"VO_", "\",\n \"VO_");
sjdl.ReplaceAll("{", "{\n ");
sjdl.ReplaceAll("};", "\n};");
sjdl.ReplaceAll("{\n \n", "{\n");
sjdl.ReplaceAll("\n\n", "\n");
sjdl.ReplaceAll("OutputDirectory", "OutputDir");
sjdl1.ReplaceAll("\",\"", "\",\n \"");
sjdl1.ReplaceAll("(member", "\n (member");
sjdl1.ReplaceAll("\",\"VO_", "\",\n \"VO_");
sjdl1.ReplaceAll("{", "{\n ");
sjdl1.ReplaceAll("};", "\n};");
sjdl1.ReplaceAll("{\n \n", "{\n");
sjdl1.ReplaceAll("\n\n", "\n");
sjdl1.ReplaceAll("OutputDirectory", "OutputDir");
sjdl2.ReplaceAll("\",\"", "\",\n \"");
sjdl2.ReplaceAll("(member", "\n (member");
sjdl2.ReplaceAll("\",\"VO_", "\",\n \"VO_");
sjdl2.ReplaceAll("{", "{\n ");
sjdl2.ReplaceAll("};", "\n};");
sjdl2.ReplaceAll("{\n \n", "{\n");
sjdl2.ReplaceAll("\n\n", "\n");
sjdl2.ReplaceAll("OutputDirectory", "OutputDir");
sjdl += "JDLVariables = \n{\n \"Packages\",\n \"OutputDir\"\n};\n";
sjdl.Prepend(Form("Jobtag = {\n \"comment:%s\"\n};\n", fJobTag.Data()));
index = sjdl.Index("JDLVariables");
if (index >= 0) sjdl.Insert(index, "\n# JDL variables\n");
sjdl += "Workdirectorysize = {\"5000MB\"};";
sjdl1 += "Workdirectorysize = {\"5000MB\"};";
sjdl1 += "JDLVariables = \n{\n \"Packages\",\n \"OutputDir\"\n};\n";
index = fJobTag.Index(":");
if (index < 0) index = fJobTag.Length();
TString jobTag = fJobTag;
if (fProductionMode) jobTag.Insert(index,"_Stage$4");
sjdl1.Prepend(Form("Jobtag = {\n \"comment:%s_Merging\"\n};\n", jobTag.Data()));
if (fProductionMode) {
sjdl1.Prepend("# Generated merging jdl (production mode) \
\n# $1 = full alien path to output directory to be merged \
\n# $2 = train number \
\n# $3 = production (like LHC10b) \
\n# $4 = merging stage \
\n# Stage_<n>.xml made via: find <OutputDir> *Stage<n-1>pass1, Long64_t )
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
Bool_t testMode = TestBit(AliAnalysisGrid::kTest);
if (!mgr || !mgr->IsInitialized()) {
Error("StartAnalysis", "You need an initialized analysis manager for this");
return kFALSE;
}
if (mgr->IsProofMode()) {
if (testMode) Info("StartAnalysis", "##### Starting PROOF analysis with Proof Lite via the plugin #####");
else Info("StartAnalysis", "##### Starting PROOF analysis on cluster <%s> via the plugin #####", fProofCluster.Data());
if (fProofCluster.IsNull()) {
Error("StartAnalysis", "You need to specify the proof cluster name via SetProofCluster");
return kFALSE;
}
if (fProofDataSet.IsNull() && !testMode) {
Error("StartAnalysis", "You need to specify a dataset using SetProofDataSet()");
return kFALSE;
}
gEnv->SetValue("XSec.GSI.DelegProxy","2");
if (fProofReset && !testMode) {
if (fProofReset==1) {
Info("StartAnalysis", "Sending soft reset signal to proof cluster %s", fProofCluster.Data());
gROOT->ProcessLine(Form("TProof::Reset(\"%s\", kFALSE);", fProofCluster.Data()));
} else {
Info("StartAnalysis", "Sending hard reset signal to proof cluster %s", fProofCluster.Data());
gROOT->ProcessLine(Form("TProof::Reset(\"%s\", kTRUE);", fProofCluster.Data()));
}
Info("StartAnalysis", "Stopping the analysis. Please use SetProofReset(0) to resume.");
return kFALSE;
}
if (!testMode) {
Long_t nsessions = gROOT->ProcessLine(Form("TProof::Mgr(\"%s\")->QuerySessions(\"\")->GetEntries();", fProofCluster.Data()));
if (nsessions) {
Error("StartAnalysis","You have to reset your old session first\n");
return kFALSE;
}
}
if (!fROOTVersion.IsNull() && !testMode) {
gROOT->ProcessLine(Form("TProof::Mgr(\"%s\")->SetROOTVersion(\"VO_ALICE@ROOT::%s\");",
fProofCluster.Data(), fROOTVersion.Data()));
}
Long_t proof = 0;
TString sworkers;
if (fNproofWorkersPerSlave) sworkers = Form("workers=%dx", fNproofWorkersPerSlave);
else if (fNproofWorkers) sworkers = Form("workers=%d", fNproofWorkers);
if (!testMode) {
if (!sworkers.IsNull())
proof = gROOT->ProcessLine(Form("TProof::Open(\"%s\", \"%s\");", fProofCluster.Data(), sworkers.Data()));
else
proof = gROOT->ProcessLine(Form("TProof::Open(\"%s\");", fProofCluster.Data()));
} else {
proof = gROOT->ProcessLine("TProof::Open(\"\");");
if (!proof) {
Error("StartAnalysis", "Could not start PROOF in test mode");
return kFALSE;
}
}
if (!proof) {
Error("StartAnalysis", "Could not connect to PROOF cluster <%s>", fProofCluster.Data());
return kFALSE;
}
if (fNproofWorkersPerSlave*fNproofWorkers > 0)
gROOT->ProcessLine(Form("gProof->SetParallel(%d);", fNproofWorkers));
TIter nextpp(&fProofParam);
TObject *proofparam;
while ((proofparam=nextpp())) {
TString svalue = GetProofParameter(proofparam->GetName());
gROOT->ProcessLine(Form("gProof->SetParameter(\"%s\",%s);", proofparam->GetName(), svalue.Data()));
}
if (!testMode) {
TString dataset = fProofDataSet;
Int_t index = dataset.Index("#");
if (index>=0) dataset.Remove(index);
}
if (TestSpecialBit(kClearPackages)) {
Info("StartAnalysis", "ClearPackages signal sent to PROOF. Use SetClearPackages(kFALSE) to reset this.");
gROOT->ProcessLine("gProof->ClearPackages();");
}
TList optionsList;
TString parLibs;
if (!fAliRootMode.IsNull()) {
TString alirootMode = fAliRootMode;
if (alirootMode == "default") alirootMode = "";
Info("StartAnalysis", "You are requesting AliRoot mode: %s", fAliRootMode.Data());
optionsList.SetOwner();
optionsList.Add(new TNamed("ALIROOT_MODE", alirootMode.Data()));
TString extraLibs;
Bool_t parMode = kFALSE;
if (!alirootMode.IsNull()) extraLibs = "ANALYSIS:OADB:ANALYSISalice";
if (fAdditionalLibs.Length()) {
TString additionalLibs = fAdditionalLibs;
additionalLibs.Strip();
if (additionalLibs.Length() && fFriendLibs.Length())
additionalLibs += " ";
additionalLibs += fFriendLibs;
TObjArray *list = additionalLibs.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
if (str->GetString().Contains(".so") ||
str->GetString().Contains(".dylib") ) {
if (parMode) {
Warning("StartAnalysis", "Plugin does not support loading libs after par files in PROOF mode. Library %s and following will not load on workers", str->GetName());
break;
}
TString stmp = str->GetName();
if (stmp.BeginsWith("lib")) stmp.Remove(0,3);
stmp.ReplaceAll(".so","");
stmp.ReplaceAll(".dylib","");
if (!extraLibs.IsNull()) extraLibs += ":";
extraLibs += stmp;
continue;
}
if (str->GetString().Contains(".par")) {
parMode = kTRUE;
if (!parLibs.IsNull()) parLibs += ":";
parLibs += str->GetName();
continue;
}
}
if (list) delete list;
}
if (!extraLibs.IsNull()) {
Info("StartAnalysis", "Adding extra libs: %s",extraLibs.Data());
optionsList.Add(new TNamed("ALIROOT_EXTRA_LIBS",extraLibs.Data()));
}
if (!fIncludePath.IsNull()) {
TString includePath = fIncludePath;
includePath.ReplaceAll(" ",":");
includePath.ReplaceAll("$ALICE_ROOT/","");
includePath.ReplaceAll("${ALICE_ROOT}/","");
includePath.ReplaceAll("-I","");
includePath.Remove(TString::kTrailing, ':');
Info("StartAnalysis", "Adding extra includes: %s",includePath.Data());
optionsList.Add(new TNamed("ALIROOT_EXTRA_INCLUDES",includePath.Data()));
}
if (TestSpecialBit(kProofConnectGrid))
optionsList.Add(new TNamed("ALIROOT_ENABLE_ALIEN", "1"));
if (testMode) {
TString alirootLite = gSystem->ExpandPathName("$ALICE_ROOT/ANALYSIS/macros/AliRootProofLite.par");
for (Int_t i=0; i<optionsList.GetSize(); i++) {
TNamed *obj = (TNamed*)optionsList.At(i);
printf("%s %s\n", obj->GetName(), obj->GetTitle());
}
if (!gROOT->ProcessLine(Form("gProof->UploadPackage(\"%s\");",alirootLite.Data()))
&& !gROOT->ProcessLine(Form("gProof->EnablePackage(\"%s\", (TList*)%p);",alirootLite.Data(),&optionsList))) {
Info("StartAnalysis", "AliRootProofLite enabled");
} else {
Error("StartAnalysis", "There was an error trying to enable package AliRootProofLite.par");
return kFALSE;
}
} else {
if ( ! fAliROOTVersion.IsNull() ) {
if (gROOT->ProcessLine(Form("gProof->EnablePackage(\"VO_ALICE@AliRoot::%s\", (TList*)%p, kTRUE);",
fAliROOTVersion.Data(), &optionsList))) {
Error("StartAnalysis", "There was an error trying to enable package VO_ALICE@AliRoot::%s", fAliROOTVersion.Data());
return kFALSE;
}
}
}
if (!parLibs.IsNull()) {
TObjArray *list = parLibs.Tokenize(":");
TIter next(list);
TObjString *package;
while((package=(TObjString*)next())) {
TString spkg = package->GetName();
spkg.ReplaceAll(".par", "");
gSystem->Exec(TString::Format("rm -rf %s", spkg.Data()));
if (!gROOT->ProcessLine(Form("gProof->UploadPackage(\"%s\");", package->GetName()))) {
TString enablePackage = (testMode)?Form("gProof->EnablePackage(\"%s\",kFALSE);", package->GetName()):Form("gProof->EnablePackage(\"%s\",kTRUE);", package->GetName());
if (gROOT->ProcessLine(enablePackage)) {
Error("StartAnalysis", "There was an error trying to enable package %s", package->GetName());
return kFALSE;
}
} else {
Error("StartAnalysis", "There was an error trying to upload package %s", package->GetName());
return kFALSE;
}
}
if (list) delete list;
}
} else {
if ((fAdditionalLibs.Contains(".so") || fAdditionalLibs.Contains(".dylib")) &&
!testMode) {
Error("StartAnalysis", "You request additional libs to be loaded but did not enabled any AliRoot mode. Please refer to: \
\n http:
return kFALSE;
}
}
if (fPackages && fPackages->GetEntries()) {
TIter next(fPackages);
TObject *package;
while ((package=next())) {
if (parLibs.Contains(package->GetName())) continue;
TString spkg = package->GetName();
spkg.ReplaceAll(".par", "");
gSystem->Exec(TString::Format("rm -rf %s", spkg.Data()));
if (!gROOT->ProcessLine(Form("gProof->UploadPackage(\"%s\");", package->GetName()))) {
if (gROOT->ProcessLine(Form("gProof->EnablePackage(\"%s\",kTRUE);", package->GetName()))) {
Error("StartAnalysis", "There was an error trying to enable package %s", package->GetName());
return kFALSE;
}
} else {
Error("StartAnalysis", "There was an error trying to upload package %s", package->GetName());
return kFALSE;
}
}
}
if (fAnalysisSource.Length()) {
TObjArray *list = fAnalysisSource.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
gROOT->ProcessLine(Form("gProof->Load(\"%s+g\", kTRUE);", str->GetName()));
}
if (list) delete list;
}
if (testMode) {
if (fFileForTestMode.IsNull()) {
Error("GetChainForTestMode", "For proof test mode please use SetFileForTestMode() pointing to a file that contains data file locations.");
return kFALSE;
}
if (gSystem->AccessPathName(fFileForTestMode)) {
Error("GetChainForTestMode", "File not found: %s", fFileForTestMode.Data());
return kFALSE;
}
TFileCollection *coll = new TFileCollection();
coll->AddFromFile(fFileForTestMode);
gROOT->ProcessLine(Form("gProof->RegisterDataSet(\"test_collection\", (TFileCollection*)%p, \"OV\");", coll));
gROOT->ProcessLine("gProof->ShowDataSets()");
}
return kTRUE;
}
if (TestBit(AliAnalysisGrid::kDefaultOutputs)) {
fOutputFiles = GetListOfFiles("outaod");
TString extra = GetListOfFiles("ext");
if (!extra.IsNull()) {
extra.ReplaceAll(".root", "*.root");
if (!fOutputFiles.IsNull()) fOutputFiles += ",";
fOutputFiles += extra;
}
fOutputArchive = "log_archive.zip:std*@disk=1 ";
if (mgr->IsCollectThroughput())
fOutputArchive += Form("root_archive.zip:%s,*.stat@disk=%d %s@disk=%d",fOutputFiles.Data(),fNreplicas, mgr->GetFileInfoLog(),fNreplicas);
else
fOutputArchive += Form("root_archive.zip:%s,*.stat@disk=%d",fOutputFiles.Data(),fNreplicas);
}
if (TestBit(AliAnalysisGrid::kOffline)) {
Info("StartAnalysis","\n##### OFFLINE MODE ##### Files to be used in GRID are produced but not copied \
\n there nor any job run. You can revise the JDL and analysis \
\n macro then run the same in \"submit\" mode.");
} else if (TestBit(AliAnalysisGrid::kTest)) {
Info("StartAnalysis","\n##### LOCAL MODE ##### Your analysis will be run locally on a subset of the requested \
\n dataset.");
} else if (TestBit(AliAnalysisGrid::kSubmit)) {
Info("StartAnalysis","\n##### SUBMIT MODE ##### Files required by your analysis are copied to your grid working \
\n space and job submitted.");
} else if (TestBit(AliAnalysisGrid::kMerge)) {
Info("StartAnalysis","\n##### MERGE MODE ##### The registered outputs of the analysis will be merged");
if (fMergeViaJDL) CheckInputData();
return kTRUE;
} else {
Info("StartAnalysis","\n##### FULL ANALYSIS MODE ##### Producing needed files and submitting your analysis job...");
}
Print();
if (!Connect()) {
Error("StartAnalysis", "Cannot start grid analysis without grid connection");
return kFALSE;
}
if (IsCheckCopy() && gGrid) CheckFileCopy(gGrid->GetHomeDirectory());
if (!CheckInputData()) {
Error("StartAnalysis", "There was an error in preprocessing your requested input data");
return kFALSE;
}
if (!CreateDataset(fDataPattern)) {
TString serror;
if (!fRunNumbers.Length() && !fRunRange[0]) serror = Form("path to data directory: <%s>", fGridDataDir.Data());
if (fRunNumbers.Length()) serror = "run numbers";
if (fRunRange[0]) serror = Form("run range [%d, %d]", fRunRange[0], fRunRange[1]);
serror += Form("\n or data pattern <%s>", fDataPattern.Data());
Error("StartAnalysis", "No data to process. Please fix %s in your plugin configuration.", serror.Data());
return kFALSE;
}
WriteAnalysisFile();
WriteAnalysisMacro();
WriteExecutable();
WriteValidationScript();
if (fMergeViaJDL) {
WriteMergingMacro();
WriteMergeExecutable();
WriteValidationScript(kTRUE);
}
if (!CreateJDL()) return kFALSE;
if (TestBit(AliAnalysisGrid::kOffline)) return kFALSE;
if (testMode) {
Info("StartAnalysis", "\n_______________________________________________________________________ \
\n Running analysis script in a daughter shell as on a worker node \
\n_______________________________________________________________________");
TObjArray *list = fOutputFiles.Tokenize(",");
TIter next(list);
TObjString *str;
TString outputFile;
while((str=(TObjString*)next())) {
outputFile = str->GetString();
Int_t index = outputFile.Index("@");
if (index > 0) outputFile.Remove(index);
if (!gSystem->AccessPathName(outputFile)) gSystem->Exec(Form("rm %s", outputFile.Data()));
}
delete list;
gSystem->Exec(Form("bash %s 2>stderr", fExecutable.Data()));
gSystem->Exec(Form("bash %s",fValidationScript.Data()));
return kFALSE;
}
if (fProductionMode) {
Info("StartAnalysis", "Job submitting is managed by LPM. Rerun in terminate mode after jobs finished.");
return kFALSE;
}
gGrid->Cd(fGridOutputDir);
TGridResult *res;
TString jobID = "";
fGridJobIDs = "";
fGridStages = "";
if (!fRunNumbers.Length() && !fRunRange[0]) {
res = gGrid->Command(Form("submit %s", fJDLName.Data()));
printf("*************************** %s\n",Form("submit %s", fJDLName.Data()));
if (res) {
const char *cjobId = res->GetKey(0,"jobId");
if (!cjobId) {
gGrid->Stdout();
gGrid->Stderr();
Error("StartAnalysis", "Your JDL %s could not be submitted", fJDLName.Data());
return kFALSE;
} else {
Info("StartAnalysis", "\n_______________________________________________________________________ \
\n##### Your JDL %s was successfully submitted. \nTHE JOB ID IS: %s \
\n_______________________________________________________________________",
fJDLName.Data(), cjobId);
jobID = cjobId;
if (jobID.Atoi()) {
if (!fGridJobIDs.IsNull()) fGridJobIDs.Append(" ");
fGridJobIDs.Append(jobID);
if (!fGridStages.IsNull()) fGridStages.Append(" ");
fGridStages.Append("full");
}
}
delete res;
} else {
Error("StartAnalysis", "No grid result after submission !!! Bailing out...");
return kFALSE;
}
} else {
if (!Submit()) return kFALSE;
jobID = fGridJobIDs;
}
if (fDropToShell) {
Info("StartAnalysis", "\n#### STARTING AN ALIEN SHELL FOR YOU. EXIT WHEN YOUR JOB %s HAS FINISHED. #### \
\n You may exit at any time and terminate the job later using the option <terminate> \
\n ##################################################################################", jobID.Data());
gSystem->Exec("aliensh");
} else {
Info("StartAnalysis", "\n#### SUBMITTED JOB %s TO ALIEN QUEUE #### \
\n Remember to terminate the job later using the option <terminate> \
\n ##################################################################################", jobID.Data());
}
return kTRUE;
}
const char *AliAnalysisAlien::GetListOfFiles(const char *type)
{
static TString files;
files = "";
TString stype = type;
stype.ToLower();
TString aodfiles, extra;
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
::Error("GetListOfFiles", "Cannot call this without analysis manager");
return files.Data();
}
if (mgr->GetOutputEventHandler()) {
aodfiles = "";
if (mgr->GetOutputEventHandler()->GetFillAOD())
aodfiles = mgr->GetOutputEventHandler()->GetOutputFileName();
TString extraaod = mgr->GetOutputEventHandler()->GetExtraOutputs(kTRUE);
if (!extraaod.IsNull() && mgr->GetOutputEventHandler()->GetFillExtension()) {
if (!aodfiles.IsNull()) aodfiles += ",";
aodfiles += extraaod;
}
}
if (stype.Contains("aod")) {
files = aodfiles;
if (stype == "aod") return files.Data();
}
TString outputfiles = "";
TIter next(mgr->GetOutputs());
AliAnalysisDataContainer *output;
const char *filename = 0;
while ((output=(AliAnalysisDataContainer*)next())) {
filename = output->GetFileName();
if (!(strcmp(filename, "default"))) continue;
if (outputfiles.Contains(filename)) continue;
if (aodfiles.Contains(filename)) continue;
if (!outputfiles.IsNull() && strlen(filename)) outputfiles += ",";
outputfiles += filename;
}
if (stype.Contains("out")) {
if (!files.IsNull() && !outputfiles.IsNull()) files += ",";
files += outputfiles;
if (stype == "out") return files.Data();
}
TString sextra;
extra = mgr->GetExtraFiles();
if (!extra.IsNull()) {
extra.Strip();
extra.ReplaceAll(" ", ",");
TObjArray *fextra = extra.Tokenize(",");
TIter nextx(fextra);
TObject *obj;
while ((obj=nextx())) {
if (aodfiles.Contains(obj->GetName())) continue;
if (outputfiles.Contains(obj->GetName())) continue;
if (sextra.Contains(obj->GetName())) continue;
if (!sextra.IsNull()) sextra += ",";
sextra += obj->GetName();
}
delete fextra;
if (stype.Contains("ext")) {
if (!files.IsNull() && !sextra.IsNull()) files += ",";
files += sextra;
}
}
if (stype == "ext") return files.Data();
TString termfiles;
if (!fTerminateFiles.IsNull()) {
fTerminateFiles.Strip();
fTerminateFiles.ReplaceAll(" ",",");
TObjArray *fextra = fTerminateFiles.Tokenize(",");
TIter nextx(fextra);
TObject *obj;
while ((obj=nextx())) {
if (aodfiles.Contains(obj->GetName())) continue;
if (outputfiles.Contains(obj->GetName())) continue;
if (termfiles.Contains(obj->GetName())) continue;
if (sextra.Contains(obj->GetName())) continue;
if (!termfiles.IsNull()) termfiles += ",";
termfiles += obj->GetName();
}
delete fextra;
}
if (stype.Contains("ter")) {
if (!files.IsNull() && !termfiles.IsNull()) {
files += ",";
files += termfiles;
}
}
return files.Data();
}
Bool_t AliAnalysisAlien::Submit()
{
Int_t nmasterjobs = fInputFiles->GetEntries();
Long_t tshoot = gSystem->Now();
if (!fNsubmitted && !SubmitNext()) return kFALSE;
while (fNsubmitted < nmasterjobs) {
Long_t now = gSystem->Now();
if ((now-tshoot)>30000) {
tshoot = now;
if (!SubmitNext()) return kFALSE;
}
}
return kTRUE;
}
Bool_t AliAnalysisAlien::SubmitMerging()
{
if (!fGridOutputDir.Contains("/")) fGridOutputDir = Form("%s/%s/%s", gGrid->GetHomeDirectory(), fGridWorkingDir.Data(), fGridOutputDir.Data());
gGrid->Cd(fGridOutputDir);
TString mergeJDLName = fExecutable;
mergeJDLName.ReplaceAll(".sh", "_merge.jdl");
if (!fInputFiles) {
Error("SubmitMerging", "You have to use explicit run numbers or run range to merge via JDL!");
return kFALSE;
}
Int_t ntosubmit = fInputFiles->GetEntries();
for (Int_t i=0; i<ntosubmit; i++) {
TString runOutDir = gSystem->BaseName(fInputFiles->At(i)->GetName());
runOutDir.ReplaceAll(".xml", "");
if (fOutputToRunNo) {
printf("### Submitting merging job for run <%s>\n", runOutDir.Data());
runOutDir = Form("%s/%s", fGridOutputDir.Data(), runOutDir.Data());
} else {
if (!fRunNumbers.Length() && !fRunRange[0]) {
printf("### Submitting merging job for the full output directory %s.\n", fGridOutputDir.Data());
runOutDir = fGridOutputDir;
} else {
printf("### Submitting merging job for master <%03d>\n", i);
runOutDir = Form("%s/%03d",fGridOutputDir.Data(), i);
}
}
TObjArray *list = fOutputFiles.Tokenize(",");
TIter next(list);
TObjString *str;
TString outputFile;
while((str=(TObjString*)next())) {
outputFile = str->GetString();
Int_t index = outputFile.Index("@");
if (index > 0) outputFile.Remove(index);
if (!fMergeExcludes.Contains(outputFile) &&
!fRegisterExcludes.Contains(outputFile)) break;
}
delete list;
Bool_t done = CheckMergedFiles(outputFile, runOutDir, fMaxMergeFiles, mergeJDLName);
if (!done && (i==ntosubmit-1)) return kFALSE;
if (!fRunNumbers.Length() && !fRunRange[0]) break;
}
if (!ntosubmit) return kTRUE;
if (fDropToShell) {
Info("StartAnalysis", "\n #### STARTING AN ALIEN SHELL FOR YOU. You can exit any time or inspect your jobs in a different shell.##########\
\n Make sure your jobs are in a final state (you can resubmit failed ones via 'masterjob <id> resubmit ERROR_ALL')\
\n Rerun in 'terminate' mode to submit all merging stages, each AFTER the previous one completed. The final merged \
\n output will be written to your alien output directory, while separate stages in <Stage_n>. \
\n ################################################################################################################");
gSystem->Exec("aliensh");
} else {
Info("StartAnalysis", "\n #### STARTED MERGING JOBS FOR YOU #### \
\n Make sure your jobs are in a final state (you can resubmit failed ones via 'masterjob <id> resubmit ERROR_ALL') \
\n Rerun in 'terminate' mode to submit all merging stages, each AFTER the previous one completed. The final merged \
\n output will be written to your alien output directory, while separate stages in <Stage_n>. \
\n ################################################################################################################");
}
return kTRUE;
}
Bool_t AliAnalysisAlien::SubmitNext()
{
static Bool_t iscalled = kFALSE;
static Int_t firstmaster = 0;
static Int_t lastmaster = 0;
static Int_t npermaster = 0;
if (iscalled) return kTRUE;
iscalled = kTRUE;
Int_t nrunning=0, nwaiting=0, nerror=0, ndone=0;
Int_t ntosubmit = 0;
TGridResult *res;
TString jobID = "";
Int_t nmasterjobs = fInputFiles->GetEntries();
if (!fNsubmitted) {
ntosubmit = 1;
if (!IsUseSubmitPolicy()) {
if (nmasterjobs>5)
Info("SubmitNext","### Warning submit policy not used ! Submitting too many jobs at a time may be prohibitted. \
\n### You can use SetUseSubmitPolicy() to enable if you have problems.");
ntosubmit = nmasterjobs;
}
} else {
TString status = GetJobStatus(firstmaster, lastmaster, nrunning, nwaiting, nerror, ndone);
printf("=== master %d: %s\n", lastmaster, status.Data());
if (status != "SPLIT") {iscalled = kFALSE; return kTRUE;}
if (nwaiting>500) {iscalled = kFALSE; return kTRUE;}
npermaster = (nrunning+nwaiting+nerror+ndone)/fNsubmitted;
if (npermaster) ntosubmit = (500-nwaiting)/npermaster;
if (!ntosubmit) ntosubmit = 1;
printf("=== WAITING(%d) RUNNING(%d) DONE(%d) OTHER(%d) NperMaster=%d => to submit %d jobs\n",
nwaiting, nrunning, ndone, nerror, npermaster, ntosubmit);
}
for (Int_t i=0; i<ntosubmit; i++) {
if (fNsubmitted>=nmasterjobs) {iscalled = kFALSE; return kTRUE;}
TString query;
TString runOutDir = gSystem->BaseName(fInputFiles->At(fNsubmitted)->GetName());
runOutDir.ReplaceAll(".xml", "");
if (fOutputToRunNo)
query = Form("submit %s %s %s", fJDLName.Data(), fInputFiles->At(fNsubmitted)->GetName(), runOutDir.Data());
else
query = Form("submit %s %s %03d", fJDLName.Data(), fInputFiles->At(fNsubmitted)->GetName(), fNsubmitted);
printf("********* %s\n",query.Data());
res = gGrid->Command(query);
if (res) {
TString cjobId1 = res->GetKey(0,"jobId");
if (!cjobId1.Length()) {
iscalled = kFALSE;
gGrid->Stdout();
gGrid->Stderr();
Error("StartAnalysis", "Your JDL %s could not be submitted. The message was:", fJDLName.Data());
return kFALSE;
} else {
Info("StartAnalysis", "\n_______________________________________________________________________ \
\n##### Your JDL %s submitted (%d to go). \nTHE JOB ID IS: %s \
\n_______________________________________________________________________",
fJDLName.Data(), nmasterjobs-fNsubmitted-1, cjobId1.Data());
if (!fGridJobIDs.IsNull()) fGridJobIDs.Append(" ");
fGridJobIDs.Append(cjobId1);
if (!fGridStages.IsNull()) fGridStages.Append(" ");
fGridStages.Append("full");
jobID += cjobId1;
jobID += " ";
lastmaster = cjobId1.Atoi();
if (!firstmaster) firstmaster = lastmaster;
fNsubmitted++;
}
delete res;
} else {
Error("StartAnalysis", "No grid result after submission !!! Bailing out...");
return kFALSE;
}
}
iscalled = kFALSE;
return kTRUE;
}
void AliAnalysisAlien::WriteAnalysisFile()
{
TString analysisFile = fExecutable;
analysisFile.ReplaceAll(".sh", ".root");
if (!TestBit(AliAnalysisGrid::kSubmit)) {
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr || !mgr->IsInitialized()) {
Error("WriteAnalysisFile", "You need an initialized analysis manager for this");
return;
}
TObject *handler;
if (mgr->GetMCtruthEventHandler()) TObject::SetBit(AliAnalysisGrid::kUseMC);
handler = (TObject*)mgr->GetInputEventHandler();
if (handler) {
if (handler->InheritsFrom("AliMultiInputEventHandler")) {
AliMultiInputEventHandler *multiIH = (AliMultiInputEventHandler*)handler;
if (multiIH->GetFirstInputEventHandler()->InheritsFrom("AliESDInputHandler")) TObject::SetBit(AliAnalysisGrid::kUseESD);
if (multiIH->GetFirstInputEventHandler()->InheritsFrom("AliAODInputHandler")) TObject::SetBit(AliAnalysisGrid::kUseAOD);
} else {
if (handler->InheritsFrom("AliESDInputHandler")) TObject::SetBit(AliAnalysisGrid::kUseESD);
if (handler->InheritsFrom("AliAODInputHandler")) TObject::SetBit(AliAnalysisGrid::kUseAOD);
}
}
TDirectory *cdir = gDirectory;
TFile *file = TFile::Open(analysisFile, "RECREATE");
if (file) {
if (!TestBit(AliAnalysisGrid::kTest)) mgr->SetSkipTerminate(kTRUE);
if (IsSingleOutput()) mgr->SetSkipTerminate(kFALSE);
mgr->Write();
delete file;
mgr->SetSkipTerminate(kFALSE);
}
if (cdir) cdir->cd();
Info("WriteAnalysisFile", "\n##### Analysis manager: %s wrote to file <%s>\n", mgr->GetName(),analysisFile.Data());
}
Bool_t copy = kTRUE;
if (fProductionMode || TestBit(AliAnalysisGrid::kOffline) || TestBit(AliAnalysisGrid::kTest)) copy = kFALSE;
if (copy) {
CdWork();
TString workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
Info("WriteAnalysisFile", "\n##### Copying file <%s> containing your initialized analysis manager to your alien workspace", analysisFile.Data());
if (FileExists(analysisFile)) gGrid->Rm(analysisFile);
if (!copyLocal2Alien("WriteAnalysisFile",analysisFile.Data(),
Form("%s/%s", workdir.Data(),analysisFile.Data()))) Fatal("","Terminating");
}
}
void AliAnalysisAlien::WriteAnalysisMacro()
{
if (!TestBit(AliAnalysisGrid::kSubmit)) {
ofstream out;
out.open(fAnalysisMacro.Data(), ios::out);
if (!out.good()) {
Error("WriteAnalysisMacro", "could not open file %s for writing", fAnalysisMacro.Data());
return;
}
Bool_t hasSTEERBase = kFALSE;
Bool_t hasESD = kFALSE;
Bool_t hasAOD = kFALSE;
Bool_t hasANALYSIS = kFALSE;
Bool_t hasOADB = kFALSE;
Bool_t hasANALYSISalice = kFALSE;
Bool_t hasCORRFW = kFALSE;
TString func = fAnalysisMacro;
TString type = "ESD";
TString comment = "// Analysis using ";
if (fMCLoop) {
type = "MCGEN";
comment += "MCGEN";
} else {
if (IsUseMCchain()) {
type = "MC";
comment += "MC";
} else {
if (TObject::TestBit(AliAnalysisGrid::kUseESD)) comment += "ESD";
if (TObject::TestBit(AliAnalysisGrid::kUseAOD)) {
type = "AOD";
comment += "AOD";
}
}
}
if (type!="AOD" && fFriendChainName!="") {
Error("WriteAnalysisMacro", "Friend chain can be attached only to AOD");
return;
}
if (TObject::TestBit(AliAnalysisGrid::kUseMC)) comment += "/MC";
else comment += " data";
out << "const char *anatype = \"" << type.Data() << "\";" << endl << endl;
func.ReplaceAll(".C", "");
out << "void " << func.Data() << "()" << endl;
out << "{" << endl;
out << comment.Data() << endl;
out << "// Automatically generated analysis steering macro executed in grid subjobs" << endl << endl;
out << " TStopwatch timer;" << endl;
out << " timer.Start();" << endl << endl;
if (!IsLocalTest()) {
out << "// connect to AliEn and make the chain" << endl;
out << " if (!TGrid::Connect(\"alien://\")) return;" << endl;
}
out << "// Set temporary merging directory to current one" << endl;
out << " gSystem->Setenv(\"TMPDIR\", gSystem->pwd());" << endl << endl;
out << "// Set temporary compilation directory to current one" << endl;
out << " gSystem->SetBuildDir(gSystem->pwd(), kTRUE);" << endl << endl;
out << "// Reset existing include path and add current directory first in the search" << endl;
out << " gSystem->SetIncludePath(\"-I.\");" << endl;
if (!fExecutableCommand.Contains("aliroot")) {
out << "// load base root libraries" << endl;
out << " gSystem->Load(\"libTree\");" << endl;
out << " gSystem->Load(\"libGeom\");" << endl;
out << " gSystem->Load(\"libVMC\");" << endl;
out << " gSystem->Load(\"libPhysics\");" << endl << endl;
out << " gSystem->Load(\"libMinuit\");" << endl << endl;
}
if (fAdditionalRootLibs.Length()) {
out << "// Add aditional libraries" << endl;
TObjArray *list = fAdditionalRootLibs.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
if (str->GetString().Contains(".so") || str->GetString().Contains(".dylib"))
out << " gSystem->Load(\"" << str->GetString().Data() << "\");" << endl;
}
if (list) delete list;
}
out << "// Load analysis framework libraries" << endl;
TString setupPar = "AliAnalysisAlien::SetupPar";
if (!fPackages) {
if (!fExecutableCommand.Contains("aliroot")) {
out << " gSystem->Load(\"libSTEERBase\");" << endl;
out << " gSystem->Load(\"libESD\");" << endl;
out << " gSystem->Load(\"libAOD\");" << endl;
}
out << " gSystem->Load(\"libANALYSIS\");" << endl;
out << " gSystem->Load(\"libOADB\");" << endl;
out << " gSystem->Load(\"libANALYSISalice\");" << endl;
out << " gSystem->Load(\"libCORRFW\");" << endl << endl;
} else {
TIter next(fPackages);
TObject *obj;
TString pkgname;
while ((obj=next())) {
pkgname = obj->GetName();
if (pkgname == "STEERBase" ||
pkgname == "STEERBase.par") hasSTEERBase = kTRUE;
if (pkgname == "ESD" ||
pkgname == "ESD.par") hasESD = kTRUE;
if (pkgname == "AOD" ||
pkgname == "AOD.par") hasAOD = kTRUE;
if (pkgname == "ANALYSIS" ||
pkgname == "ANALYSIS.par") hasANALYSIS = kTRUE;
if (pkgname == "OADB" ||
pkgname == "OADB.par") hasOADB = kTRUE;
if (pkgname == "ANALYSISalice" ||
pkgname == "ANALYSISalice.par") hasANALYSISalice = kTRUE;
if (pkgname == "CORRFW" ||
pkgname == "CORRFW.par") hasCORRFW = kTRUE;
}
if (hasANALYSISalice) setupPar = "SetupPar";
if (!hasSTEERBase) out << " gSystem->Load(\"libSTEERBase\");" << endl;
else out << " if (!" << setupPar << "(\"STEERBase\")) return;" << endl;
if (!hasESD) out << " gSystem->Load(\"libESD\");" << endl;
else out << " if (!" << setupPar << "(\"ESD\")) return;" << endl;
if (!hasAOD) out << " gSystem->Load(\"libAOD\");" << endl;
else out << " if (!" << setupPar << "(\"AOD\")) return;" << endl;
if (!hasANALYSIS) out << " gSystem->Load(\"libANALYSIS\");" << endl;
else out << " if (!" << setupPar << "(\"ANALYSIS\")) return;" << endl;
if (!hasOADB) out << " gSystem->Load(\"libOADB\");" << endl;
else out << " if (!" << setupPar << "(\"OADB\")) return;" << endl;
if (!hasANALYSISalice) out << " gSystem->Load(\"libANALYSISalice\");" << endl;
else out << " if (!" << setupPar << "(\"ANALYSISalice\")) return;" << endl;
if (!hasCORRFW) out << " gSystem->Load(\"libCORRFW\");" << endl << endl;
else out << " if (!" << setupPar << "(\"CORRFW\")) return;" << endl << endl;
out << "// Compile other par packages" << endl;
next.Reset();
while ((obj=next())) {
pkgname = obj->GetName();
if (pkgname == "STEERBase" ||
pkgname == "STEERBase.par" ||
pkgname == "ESD" ||
pkgname == "ESD.par" ||
pkgname == "AOD" ||
pkgname == "AOD.par" ||
pkgname == "ANALYSIS" ||
pkgname == "ANALYSIS.par" ||
pkgname == "OADB" ||
pkgname == "OADB.par" ||
pkgname == "ANALYSISalice" ||
pkgname == "ANALYSISalice.par" ||
pkgname == "CORRFW" ||
pkgname == "CORRFW.par") continue;
out << " if (!" << setupPar << "(\"" << obj->GetName() << "\")) return;" << endl;
}
}
out << "// include path" << endl;
out << " TString intPath = gInterpreter->GetIncludePath();" << endl;
out << " TObjArray *listpaths = intPath.Tokenize(\" \");" << endl;
out << " TIter nextpath(listpaths);" << endl;
out << " TObjString *pname;" << endl;
out << " while ((pname=(TObjString*)nextpath())) {" << endl;
out << " TString current = pname->GetName();" << endl;
out << " if (current.Contains(\"AliRoot\") || current.Contains(\"ALICE_ROOT\")) continue;" << endl;
out << " gSystem->AddIncludePath(current);" << endl;
out << " }" << endl;
out << " if (listpaths) delete listpaths;" << endl;
if (fIncludePath.Length()) out << " gSystem->AddIncludePath(\"" << fIncludePath.Data() << "\");" << endl;
out << " gROOT->ProcessLine(\".include $ALICE_ROOT/include\");" << endl;
out << " printf(\"Include path: %s\\n\", gSystem->GetIncludePath());" << endl << endl;
if (fMCLoop && !fGeneratorLibs.IsNull()) {
out << "// MC generator libraries" << endl;
TObjArray *list = fGeneratorLibs.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
out << " gSystem->Load(\"" << str->GetName() << "\");" << endl;
}
delete list;
}
if (fAdditionalLibs.Length()) {
out << "// Add aditional AliRoot libraries" << endl;
TString additionalLibs = fAdditionalLibs;
additionalLibs.Strip();
if (additionalLibs.Length() && fFriendLibs.Length())
additionalLibs += " ";
additionalLibs += fFriendLibs;
TObjArray *list = additionalLibs.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
if (str->GetString().Contains(".so") || str->GetString().Contains(".dylib"))
out << " gSystem->Load(\"" << str->GetString().Data() << "\");" << endl;
if (str->GetString().Contains(".par"))
out << " if (!" << setupPar << "(\"" << str->GetString() << "\")) return;" << endl;
}
delete list;
}
out << endl;
out << "// analysis source to be compiled at runtime (if any)" << endl;
if (fAnalysisSource.Length()) {
TObjArray *list = fAnalysisSource.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
out << " gROOT->ProcessLine(\".L " << str->GetString().Data() << "+g\");" << endl;
}
if (list) delete list;
}
out << endl;
if (fFastReadOption) {
Warning("WriteAnalysisMacro", "!!! You requested FastRead option. Using xrootd flags to reduce timeouts in the grid jobs. This may skip some files that could be accessed !!! \
\n+++ NOTE: To disable this option, use: plugin->SetFastReadOption(kFALSE)");
out << "// fast xrootd reading enabled" << endl;
out << " printf(\"!!! You requested FastRead option. Using xrootd flags to reduce timeouts. Note that this may skip some files that could be accessed !!!\");" << endl;
out << " gEnv->SetValue(\"XNet.ConnectTimeout\",50);" << endl;
out << " gEnv->SetValue(\"XNet.RequestTimeout\",50);" << endl;
out << " gEnv->SetValue(\"XNet.MaxRedirectCount\",2);" << endl;
out << " gEnv->SetValue(\"XNet.ReconnectTimeout\",50);" << endl;
out << " gEnv->SetValue(\"XNet.FirstConnectMaxCnt\",1);" << endl << endl;
}
out << "// read the analysis manager from file" << endl;
TString analysisFile = fExecutable;
analysisFile.ReplaceAll(".sh", ".root");
out << " AliAnalysisManager *mgr = AliAnalysisAlien::LoadAnalysisManager(\""
<< analysisFile << "\");" << endl;
out << " if (!mgr) return;" << endl;
if (IsLocalTest()) {
out << " AliAnalysisAlien *plugin = new AliAnalysisAlien();" << endl;
out << " plugin->SetRunMode(\"test\");" << endl;
if (fFileForTestMode.IsNull())
out << " plugin->SetFileForTestMode(\"data.txt\");" << endl;
else
out << " plugin->SetFileForTestMode(\"" << fFileForTestMode << "\");" << endl;
out << " plugin->SetNtestFiles(" << fNtestFiles << ");" << endl;
if (!fFriendChainName.IsNull())
out << " plugin->SetFriendChainName(\"" << fFriendChainName << "\",\"" << fFriendLibs << "\");" << endl;
if (IsUseMCchain())
out << " plugin->SetUseMCchain();" << endl;
if (fMCLoop)
out << " plugin->SetMCLoop(kTRUE);" << endl;
out << " mgr->SetGridHandler(plugin);" << endl;
if (AliAnalysisManager::GetAnalysisManager()) {
out << " mgr->SetDebugLevel(" << AliAnalysisManager::GetAnalysisManager()->GetDebugLevel() << ");" << endl;
out << " mgr->SetNSysInfo(" << AliAnalysisManager::GetAnalysisManager()->GetNsysInfo() << ");" << endl;
} else {
out << " mgr->SetDebugLevel(10);" << endl;
out << " mgr->SetNSysInfo(100);" << endl;
}
}
out << " mgr->PrintStatus();" << endl;
if (AliAnalysisManager::GetAnalysisManager()) {
if (AliAnalysisManager::GetAnalysisManager()->GetDebugLevel()>3) {
out << " gEnv->SetValue(\"XNet.Debug\", \"1\");" << endl;
} else {
if (TestBit(AliAnalysisGrid::kTest))
out << " AliLog::SetGlobalLogLevel(AliLog::kWarning);" << endl;
else
out << " AliLog::SetGlobalLogLevel(AliLog::kError);" << endl;
}
}
if (!IsLocalTest()) {
if (fMCLoop) {
out << " mgr->SetCacheSize(0);" << endl;
out << " mgr->EventLoop(" << fNMCevents << ");" << endl;
} else {
out << " TChain *chain = CreateChain(\"wn.xml\", anatype);" << endl << endl;
out << " mgr->StartAnalysis(\"localfile\", chain);" << endl;
}
} else {
if (fMCLoop) {
out << " mgr->SetCacheSize(0);" << endl;
out << " mgr->EventLoop(" << fNMCevents << ");" << endl;
} else {
out << " mgr->StartAnalysis(\"localfile\");" << endl;
}
}
out << " timer.Stop();" << endl;
out << " timer.Print();" << endl;
out << "}" << endl << endl;
if (!IsLocalTest() && !fMCLoop) {
out <<"//________________________________________________________________________________" << endl;
out << "TChain* CreateChain(const char *xmlfile, const char *type=\"ESD\")" << endl;
out << "{" << endl;
out << "// Create a chain using url's from xml file" << endl;
out << " TString filename;" << endl;
out << " Int_t run = 0;" << endl;
if (IsUseMCchain()) {
out << " TString treename = \"TE\";" << endl;
} else {
if (!fTreeName.IsNull()) {
out << " TString treename = \"" << fTreeName << "\";" << endl;
} else {
out << " TString treename = type;" << endl;
out << " treename.ToLower();" << endl;
out << " treename += \"Tree\";" << endl;
}
}
out << " printf(\"***************************************\\n\");" << endl;
out << " printf(\" Getting chain of trees %s\\n\", treename.Data());" << endl;
out << " printf(\"***************************************\\n\");" << endl;
out << " TAlienCollection *coll = TAlienCollection::Open(xmlfile);" << endl;
out << " if (!coll) {" << endl;
out << " ::Error(\"CreateChain\", \"Cannot create an AliEn collection from %s\", xmlfile);" << endl;
out << " return NULL;" << endl;
out << " }" << endl;
out << " AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();" << endl;
out << " TChain *chain = new TChain(treename);" << endl;
if(!fFriendChainName.IsNull()) {
out << " TList *friends = new TList();" << endl;
out << " TIter nextfriend(friends);" << endl;
out << " TChain *cfriend = 0;" << endl;
TObjArray *list = fFriendChainName.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
out << " cfriend = new TChain(treename, \"" << str->GetName() << "\");" << endl;
out << " friends->Add(cfriend);" << endl;
out << " chain->AddFriend(cfriend);" << endl;
}
delete list;
}
out << " coll->Reset();" << endl;
out << " while (coll->Next()) {" << endl;
out << " filename = coll->GetTURL("");" << endl;
out << " if (mgr) {" << endl;
out << " Int_t nrun = AliAnalysisManager::GetRunFromAlienPath(filename);" << endl;
out << " if (nrun && nrun != run) {" << endl;
out << " printf(\"### Run number detected from chain: %d\\n\", nrun);" << endl;
out << " mgr->SetRunFromPath(nrun);" << endl;
out << " run = nrun;" << endl;
out << " }" << endl;
out << " }" << endl;
out << " chain->Add(filename);" << endl;
if(!fFriendChainName.IsNull()) {
out << " TString bpath=coll->GetTURL(\"\");" << endl;
out << " if (bpath.Index(\"#\") > -1) bpath.Remove(bpath.Index(\"#\"));" << endl;
out << " bpath = gSystem->DirName(bpath);" << endl;
out << " bpath += \"/\";" << endl;
out << " TString fileFriend;" << endl;
out << " nextfriend.Reset();" << endl;
out << " while ((cfriend=(TChain*)nextfriend())) {" << endl;
out << " fileFriend = bpath;" << endl;
out << " fileFriend += cfriend->GetTitle();" << endl;
out << " TFile *file = TFile::Open(fileFriend);" << endl;
out << " if (file) {" << endl;
out << " file->Close();" << endl;
out << " cfriend->Add(fileFriend.Data());" << endl;
out << " } else {" << endl;
out << " ::Fatal(\"CreateChain\", \"Cannot open friend file: %s\", fileFriend.Data());" << endl;
out << " return 0;" << endl;
out << " }" << endl;
out << " }" << endl;
}
out << " }" << endl;
out << " if (!chain->GetNtrees()) {" << endl;
out << " ::Error(\"CreateChain\", \"No tree found from collection %s\", xmlfile);" << endl;
out << " return NULL;" << endl;
out << " }" << endl;
out << " return chain;" << endl;
out << "}" << endl << endl;
}
if (hasANALYSISalice) {
out <<"//________________________________________________________________________________" << endl;
out << "Bool_t SetupPar(const char *package) {" << endl;
out << "// Compile the package and set it up." << endl;
out << " TString pkgdir = package;" << endl;
out << " pkgdir.ReplaceAll(\".par\",\"\");" << endl;
out << " gSystem->Exec(TString::Format(\"tar xvzf %s.par\", pkgdir.Data()));" << endl;
out << " TString cdir = gSystem->WorkingDirectory();" << endl;
out << " gSystem->ChangeDirectory(pkgdir);" << endl;
out << " // Check for BUILD.sh and execute" << endl;
out << " if (!gSystem->AccessPathName(\"PROOF-INF/BUILD.sh\")) {" << endl;
out << " printf(\"*******************************\\n\");" << endl;
out << " printf(\"*** Building PAR archive ***\\n\");" << endl;
out << " printf(\"*******************************\\n\");" << endl;
out << " if (gSystem->Exec(\"PROOF-INF/BUILD.sh\")) {" << endl;
out << " ::Error(\"SetupPar\", \"Cannot build par archive %s\", pkgdir.Data());" << endl;
out << " gSystem->ChangeDirectory(cdir);" << endl;
out << " return kFALSE;" << endl;
out << " }" << endl;
out << " } else {" << endl;
out << " ::Error(\"SetupPar\",\"Cannot access PROOF-INF/BUILD.sh for package %s\", pkgdir.Data());" << endl;
out << " gSystem->ChangeDirectory(cdir);" << endl;
out << " return kFALSE;" << endl;
out << " }" << endl;
out << " // Check for SETUP.C and execute" << endl;
out << " if (!gSystem->AccessPathName(\"PROOF-INF/SETUP.C\")) {" << endl;
out << " printf(\"*******************************\\n\");" << endl;
out << " printf(\"*** Setup PAR archive ***\\n\");" << endl;
out << " printf(\"*******************************\\n\");" << endl;
out << " gROOT->Macro(\"PROOF-INF/SETUP.C\");" << endl;
out << " } else {" << endl;
out << " ::Error(\"SetupPar\",\"Cannot access PROOF-INF/SETUP.C for package %s\", pkgdir.Data());" << endl;
out << " gSystem->ChangeDirectory(cdir);" << endl;
out << " return kFALSE;" << endl;
out << " }" << endl;
out << " // Restore original workdir" << endl;
out << " gSystem->ChangeDirectory(cdir);" << endl;
out << " return kTRUE;" << endl;
out << "}" << endl;
}
Info("WriteAnalysisMacro", "\n##### Analysis macro to run on worker nodes <%s> written",fAnalysisMacro.Data());
}
Bool_t copy = kTRUE;
if (fProductionMode || TestBit(AliAnalysisGrid::kOffline) || TestBit(AliAnalysisGrid::kTest)) copy = kFALSE;
if (copy) {
CdWork();
TString workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
if (FileExists(fAnalysisMacro)) gGrid->Rm(fAnalysisMacro);
Info("WriteAnalysisMacro", "\n##### Copying analysis macro: <%s> to your alien workspace", fAnalysisMacro.Data());
if (!copyLocal2Alien("WriteAnalysisMacro",fAnalysisMacro.Data(),
Form("alien://%s/%s", workdir.Data(),
fAnalysisMacro.Data()))) Fatal("","Terminating");
}
}
void AliAnalysisAlien::WriteMergingMacro()
{
if (!fMergeViaJDL) return;
if (!fOutputFiles.Length()) {
Error("WriteMergingMacro", "No output file names defined. Are you running the right AliAnalysisAlien configuration ?");
return;
}
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
TString mergingMacro = fExecutable;
mergingMacro.ReplaceAll(".sh","_merge.C");
if (gGrid && !fGridOutputDir.Contains("/")) fGridOutputDir = Form("%s/%s/%s", gGrid->GetHomeDirectory(), fGridWorkingDir.Data(), fGridOutputDir.Data());
if (!TestBit(AliAnalysisGrid::kSubmit)) {
ofstream out;
out.open(mergingMacro.Data(), ios::out);
if (!out.good()) {
Error("WriteMergingMacro", "could not open file %s for writing", fAnalysisMacro.Data());
return;
}
Bool_t hasSTEERBase = kFALSE;
Bool_t hasESD = kFALSE;
Bool_t hasAOD = kFALSE;
Bool_t hasANALYSIS = kFALSE;
Bool_t hasOADB = kFALSE;
Bool_t hasANALYSISalice = kFALSE;
Bool_t hasCORRFW = kFALSE;
TString func = mergingMacro;
TString comment;
func.ReplaceAll(".C", "");
out << "void " << func.Data() << "(const char *dir, Int_t stage=0)" << endl;
out << "{" << endl;
out << "// Automatically generated merging macro executed in grid subjobs" << endl << endl;
out << " TStopwatch timer;" << endl;
out << " timer.Start();" << endl << endl;
out << "// Reset existing include path and add current directory first in the search" << endl;
out << " gSystem->SetIncludePath(\"-I.\");" << endl;
if (!fExecutableCommand.Contains("aliroot")) {
out << "// load base root libraries" << endl;
out << " gSystem->Load(\"libTree\");" << endl;
out << " gSystem->Load(\"libGeom\");" << endl;
out << " gSystem->Load(\"libVMC\");" << endl;
out << " gSystem->Load(\"libPhysics\");" << endl << endl;
out << " gSystem->Load(\"libMinuit\");" << endl << endl;
}
if (fAdditionalRootLibs.Length()) {
out << "// Add aditional libraries" << endl;
TObjArray *list = fAdditionalRootLibs.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
if (str->GetString().Contains(".so") || str->GetString().Contains(".dylib"))
out << " gSystem->Load(\"" << str->GetString().Data() << "\");" << endl;
}
if (list) delete list;
}
out << "// Load analysis framework libraries" << endl;
if (!fPackages) {
if (!fExecutableCommand.Contains("aliroot")) {
out << " gSystem->Load(\"libSTEERBase\");" << endl;
out << " gSystem->Load(\"libESD\");" << endl;
out << " gSystem->Load(\"libAOD\");" << endl;
}
out << " gSystem->Load(\"libANALYSIS\");" << endl;
out << " gSystem->Load(\"libOADB\");" << endl;
out << " gSystem->Load(\"libANALYSISalice\");" << endl;
out << " gSystem->Load(\"libCORRFW\");" << endl << endl;
} else {
TIter next(fPackages);
TObject *obj;
TString pkgname;
TString setupPar = "AliAnalysisAlien::SetupPar";
while ((obj=next())) {
pkgname = obj->GetName();
if (pkgname == "STEERBase" ||
pkgname == "STEERBase.par") hasSTEERBase = kTRUE;
if (pkgname == "ESD" ||
pkgname == "ESD.par") hasESD = kTRUE;
if (pkgname == "AOD" ||
pkgname == "AOD.par") hasAOD = kTRUE;
if (pkgname == "ANALYSIS" ||
pkgname == "ANALYSIS.par") hasANALYSIS = kTRUE;
if (pkgname == "OADB" ||
pkgname == "OADB.par") hasOADB = kTRUE;
if (pkgname == "ANALYSISalice" ||
pkgname == "ANALYSISalice.par") hasANALYSISalice = kTRUE;
if (pkgname == "CORRFW" ||
pkgname == "CORRFW.par") hasCORRFW = kTRUE;
}
if (hasANALYSISalice) setupPar = "SetupPar";
if (!hasSTEERBase) out << " gSystem->Load(\"libSTEERBase\");" << endl;
else out << " if (!" << setupPar << "(\"STEERBase\")) return;" << endl;
if (!hasESD) out << " gSystem->Load(\"libESD\");" << endl;
else out << " if (!" << setupPar << "(\"ESD\")) return;" << endl;
if (!hasAOD) out << " gSystem->Load(\"libAOD\");" << endl;
else out << " if (!" << setupPar << "(\"AOD\")) return;" << endl;
out << " gSystem->Load(\"libOADB\");" << endl;
if (!hasANALYSIS) out << " gSystem->Load(\"libANALYSIS\");" << endl;
else out << " if (!" << setupPar << "(\"ANALYSIS\")) return;" << endl;
if (!hasOADB) out << " gSystem->Load(\"libOADB\");" << endl;
else out << " if (!" << setupPar << "(\"OADB\")) return;" << endl;
if (!hasANALYSISalice) out << " gSystem->Load(\"libANALYSISalice\");" << endl;
else out << " if (!" << setupPar << "(\"ANALYSISalice\")) return;" << endl;
if (!hasCORRFW) out << " gSystem->Load(\"libCORRFW\");" << endl << endl;
else out << " if (!" << setupPar << "(\"CORRFW\")) return;" << endl << endl;
out << "// Compile other par packages" << endl;
next.Reset();
while ((obj=next())) {
pkgname = obj->GetName();
if (pkgname == "STEERBase" ||
pkgname == "STEERBase.par" ||
pkgname == "ESD" ||
pkgname == "ESD.par" ||
pkgname == "AOD" ||
pkgname == "AOD.par" ||
pkgname == "ANALYSIS" ||
pkgname == "ANALYSIS.par" ||
pkgname == "OADB" ||
pkgname == "OADB.par" ||
pkgname == "ANALYSISalice" ||
pkgname == "ANALYSISalice.par" ||
pkgname == "CORRFW" ||
pkgname == "CORRFW.par") continue;
out << " if (!" << setupPar << "(\"" << obj->GetName() << "\")) return;" << endl;
}
}
out << "// include path" << endl;
out << " TString intPath = gInterpreter->GetIncludePath();" << endl;
out << " TObjArray *listpaths = intPath.Tokenize(\" \");" << endl;
out << " TIter nextpath(listpaths);" << endl;
out << " TObjString *pname;" << endl;
out << " while ((pname=(TObjString*)nextpath())) {" << endl;
out << " TString current = pname->GetName();" << endl;
out << " if (current.Contains(\"AliRoot\") || current.Contains(\"ALICE_ROOT\")) continue;" << endl;
out << " gSystem->AddIncludePath(current);" << endl;
out << " }" << endl;
out << " if (listpaths) delete listpaths;" << endl;
if (fIncludePath.Length()) out << " gSystem->AddIncludePath(\"" << fIncludePath.Data() << "\");" << endl;
out << " gROOT->ProcessLine(\".include $ALICE_ROOT/include\");" << endl;
out << " printf(\"Include path: %s\\n\", gSystem->GetIncludePath());" << endl << endl;
if (fMCLoop && !fGeneratorLibs.IsNull()) {
out << "// MC generator libraries" << endl;
TObjArray *list = fGeneratorLibs.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
out << " gSystem->Load(\"" << str->GetName() << "\");" << endl;
}
delete list;
}
if (fAdditionalLibs.Length()) {
out << "// Add aditional AliRoot libraries" << endl;
TString additionalLibs = fAdditionalLibs;
additionalLibs.Strip();
if (additionalLibs.Length() && fFriendLibs.Length())
additionalLibs += " ";
additionalLibs += fFriendLibs;
TObjArray *list = additionalLibs.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
if (str->GetString().Contains(".so") || str->GetString().Contains(".dylib"))
out << " gSystem->Load(\"" << str->GetString().Data() << "\");" << endl;
}
if (list) delete list;
}
out << endl;
out << "// Analysis source to be compiled at runtime (if any)" << endl;
if (fAnalysisSource.Length()) {
TObjArray *list = fAnalysisSource.Tokenize(" ");
TIter next(list);
TObjString *str;
while((str=(TObjString*)next())) {
out << " gROOT->ProcessLine(\".L " << str->GetString().Data() << "+g\");" << endl;
}
if (list) delete list;
}
out << endl;
if (fFastReadOption) {
Warning("WriteMergingMacro", "!!! You requested FastRead option. Using xrootd flags to reduce timeouts in the grid merging jobs. Note that this may skip some files that could be accessed !!!");
out << "// fast xrootd reading enabled" << endl;
out << " printf(\"!!! You requested FastRead option. Using xrootd flags to reduce timeouts. Note that this may skip some files that could be accessed !!!\");" << endl;
out << " gEnv->SetValue(\"XNet.ConnectTimeout\",50);" << endl;
out << " gEnv->SetValue(\"XNet.RequestTimeout\",50);" << endl;
out << " gEnv->SetValue(\"XNet.MaxRedirectCount\",2);" << endl;
out << " gEnv->SetValue(\"XNet.ReconnectTimeout\",50);" << endl;
out << " gEnv->SetValue(\"XNet.FirstConnectMaxCnt\",1);" << endl << endl;
}
out << "// Connect to AliEn" << endl;
out << " if (!TGrid::Connect(\"alien://\")) return;" << endl;
out << "// Set temporary merging directory to current one" << endl;
out << " gSystem->Setenv(\"TMPDIR\", gSystem->pwd());" << endl << endl;
out << "// Set temporary compilation directory to current one" << endl;
out << " gSystem->SetBuildDir(gSystem->pwd(), kTRUE);" << endl << endl;
out << " TString outputDir = dir;" << endl;
if (IsMergeAOD())
out << " TString outputFiles = \"" << GetListOfFiles("outaod") << "\";" << endl;
else
out << " TString outputFiles = \"" << GetListOfFiles("out") << "\";" << endl;
out << " TString mergeExcludes = \"" << fMergeExcludes << " " << fRegisterExcludes << "\";" << endl;
out << " TObjArray *list = outputFiles.Tokenize(\",\");" << endl;
out << " TIter *iter = new TIter(list);" << endl;
out << " TObjString *str;" << endl;
out << " TString outputFile;" << endl;
out << " Bool_t merged = kTRUE;" << endl;
TString analysisFile = fExecutable;
analysisFile.ReplaceAll(".sh", ".root");
out << " AliAnalysisManager *mgr = AliAnalysisAlien::LoadAnalysisManager(\""
<< analysisFile << "\");" << endl;
out << " if (!mgr) {" << endl;
out << " printf(\"ERROR: Analysis manager could not be extracted from file \");" << endl;
out << " return;" << endl;
out << " }" << endl;
if (IsLocalTest()) {
out << " printf(\"===================================\\n\");" << endl;
out << " printf(\"Testing merging...\\n\");" << endl;
out << " printf(\"===================================\\n\");" << endl;
}
out << " while((str=(TObjString*)iter->Next())) {" << endl;
out << " outputFile = str->GetString();" << endl;
out << " if (outputFile.Contains(\"*\")) continue;" << endl;
out << " Int_t index = outputFile.Index(\"@\");" << endl;
out << " if (index > 0) outputFile.Remove(index);" << endl;
out << " // Skip already merged outputs" << endl;
out << " if (!gSystem->AccessPathName(outputFile)) {" << endl;
out << " printf(\"Output file <%s> found. Not merging again.\\n\",outputFile.Data());" << endl;
out << " continue;" << endl;
out << " }" << endl;
out << " if (mergeExcludes.Contains(outputFile.Data())) continue;" << endl;
out << " merged = AliAnalysisAlien::MergeOutput(outputFile, outputDir, " << fMaxMergeFiles << ", stage);" << endl;
out << " if (!merged) {" << endl;
out << " printf(\"ERROR: Cannot merge %s\\n\", outputFile.Data());" << endl;
out << " return;" << endl;
out << " }" << endl;
out << " }" << endl;
if (mgr && mgr->IsCollectThroughput() && !IsLocalTest()) {
out << " TString infolog = \"" << mgr->GetFileInfoLog() << "\";" << endl;
out << " AliAnalysisAlien::MergeInfo(infolog, outputDir);" << endl;
}
out << " // all outputs merged, validate" << endl;
out << " ofstream out;" << endl;
out << " out.open(\"outputs_valid\", ios::out);" << endl;
out << " out.close();" << endl;
out << " // read the analysis manager from file" << endl;
if (IsLocalTest()) {
out << " printf(\"===================================\\n\");" << endl;
out << " printf(\"Testing Terminate()...\\n\");" << endl;
out << " printf(\"===================================\\n\");" << endl;
} else {
out << " if (!outputDir.Contains(\"Stage\")) return;" << endl;
}
out << " mgr->SetRunFromPath(mgr->GetRunFromAlienPath(dir));" << endl;
out << " mgr->SetSkipTerminate(kFALSE);" << endl;
out << " mgr->PrintStatus();" << endl;
if (mgr) {
if (mgr->GetDebugLevel()>3) {
out << " gEnv->SetValue(\"XNet.Debug\", \"1\");" << endl;
} else {
if (TestBit(AliAnalysisGrid::kTest))
out << " AliLog::SetGlobalLogLevel(AliLog::kWarning);" << endl;
else
out << " AliLog::SetGlobalLogLevel(AliLog::kError);" << endl;
}
}
out << " TTree *tree = NULL;" << endl;
out << " mgr->StartAnalysis(\"gridterminate\", tree);" << endl;
out << "}" << endl << endl;
if (hasANALYSISalice) {
out <<"//________________________________________________________________________________" << endl;
out << "Bool_t SetupPar(const char *package) {" << endl;
out << "// Compile the package and set it up." << endl;
out << " TString pkgdir = package;" << endl;
out << " pkgdir.ReplaceAll(\".par\",\"\");" << endl;
out << " gSystem->Exec(TString::Format(\"tar xvzf %s.par\", pkgdir.Data()));" << endl;
out << " TString cdir = gSystem->WorkingDirectory();" << endl;
out << " gSystem->ChangeDirectory(pkgdir);" << endl;
out << " // Check for BUILD.sh and execute" << endl;
out << " if (!gSystem->AccessPathName(\"PROOF-INF/BUILD.sh\")) {" << endl;
out << " printf(\"*******************************\\n\");" << endl;
out << " printf(\"*** Building PAR archive ***\\n\");" << endl;
out << " printf(\"*******************************\\n\");" << endl;
out << " if (gSystem->Exec(\"PROOF-INF/BUILD.sh\")) {" << endl;
out << " ::Error(\"SetupPar\", \"Cannot build par archive %s\", pkgdir.Data());" << endl;
out << " gSystem->ChangeDirectory(cdir);" << endl;
out << " return kFALSE;" << endl;
out << " }" << endl;
out << " } else {" << endl;
out << " ::Error(\"SetupPar\",\"Cannot access PROOF-INF/BUILD.sh for package %s\", pkgdir.Data());" << endl;
out << " gSystem->ChangeDirectory(cdir);" << endl;
out << " return kFALSE;" << endl;
out << " }" << endl;
out << " // Check for SETUP.C and execute" << endl;
out << " if (!gSystem->AccessPathName(\"PROOF-INF/SETUP.C\")) {" << endl;
out << " printf(\"*******************************\\n\");" << endl;
out << " printf(\"*** Setup PAR archive ***\\n\");" << endl;
out << " printf(\"*******************************\\n\");" << endl;
out << " gROOT->Macro(\"PROOF-INF/SETUP.C\");" << endl;
out << " } else {" << endl;
out << " ::Error(\"SetupPar\",\"Cannot access PROOF-INF/SETUP.C for package %s\", pkgdir.Data());" << endl;
out << " gSystem->ChangeDirectory(cdir);" << endl;
out << " return kFALSE;" << endl;
out << " }" << endl;
out << " // Restore original workdir" << endl;
out << " gSystem->ChangeDirectory(cdir);" << endl;
out << " return kTRUE;" << endl;
out << "}" << endl;
}
}
Bool_t copy = kTRUE;
if (fProductionMode || TestBit(AliAnalysisGrid::kOffline) || TestBit(AliAnalysisGrid::kTest)) copy = kFALSE;
if (copy) {
CdWork();
TString workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
if (FileExists(mergingMacro)) gGrid->Rm(mergingMacro);
Info("WriteMergingMacro", "\n##### Copying merging macro: <%s> to your alien workspace", mergingMacro.Data());
if (!copyLocal2Alien("WriteMergeMacro",mergingMacro.Data(),
Form("%s/%s", workdir.Data(), mergingMacro.Data()))) Fatal("","Terminating");
}
}
Bool_t AliAnalysisAlien::SetupPar(const char *package)
{
TString pkgdir = package;
pkgdir.ReplaceAll(".par","");
gSystem->Exec(TString::Format("tar xzf %s.par", pkgdir.Data()));
TString cdir = gSystem->WorkingDirectory();
gSystem->ChangeDirectory(pkgdir);
if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
printf("**************************************************\n");
printf("*** Building PAR archive %s\n", package);
printf("**************************************************\n");
if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
::Error("SetupPar", "Cannot build par archive %s", pkgdir.Data());
gSystem->ChangeDirectory(cdir);
return kFALSE;
}
} else {
::Error("SetupPar","Cannot access PROOF-INF/BUILD.sh for package %s", pkgdir.Data());
gSystem->ChangeDirectory(cdir);
return kFALSE;
}
if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
printf("**************************************************\n");
printf("*** Setup PAR archive %s\n", package);
printf("**************************************************\n");
gROOT->Macro("PROOF-INF/SETUP.C");
printf("*** Loaded library: %s\n", gSystem->GetLibraries(pkgdir,"",kFALSE));
} else {
::Error("SetupPar","Cannot access PROOF-INF/SETUP.C for package %s", pkgdir.Data());
gSystem->ChangeDirectory(cdir);
return kFALSE;
}
gSystem->ChangeDirectory(cdir);
return kTRUE;
}
void AliAnalysisAlien::WriteExecutable()
{
if (fExecutableCommand.Contains("root") &&
fExecutableCommand.Contains("-q") &&
!fExecutableCommand.Contains("-x")) fExecutableCommand += " -x";
if (!TestBit(AliAnalysisGrid::kSubmit)) {
ofstream out;
out.open(fExecutable.Data(), ios::out);
if (out.bad()) {
Error("WriteExecutable", "Bad file name for executable: %s", fExecutable.Data());
return;
}
out << "#!/bin/bash" << endl;
out << "export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH" << endl;
out << "echo \"=========================================\"" << endl;
out << "echo \"############## PATH : ##############\"" << endl;
out << "echo $PATH" << endl;
out << "echo \"############## LD_LIBRARY_PATH : ##############\"" << endl;
out << "echo $LD_LIBRARY_PATH" << endl;
out << "echo \"############## ROOTSYS : ##############\"" << endl;
out << "echo $ROOTSYS" << endl;
out << "echo \"############## which root : ##############\"" << endl;
out << "which root" << endl;
out << "echo \"############## ALICE_ROOT : ##############\"" << endl;
out << "echo $ALICE_ROOT" << endl;
out << "echo \"############## which aliroot : ##############\"" << endl;
out << "which aliroot" << endl;
out << "echo \"############## system limits : ##############\"" << endl;
out << "ulimit -a" << endl;
out << "echo \"############## memory : ##############\"" << endl;
out << "free -m" << endl;
out << "echo \"=========================================\"" << endl << endl;
out << fExecutableCommand << " ";
out << fAnalysisMacro.Data() << " " << fExecutableArgs.Data() << endl;
out << "RET=$?" << endl;
out << "if [ \"$RET\" != \"0\" ];then" << endl;
out << " echo \"======== ERROR : " << fAnalysisMacro.Data() << " finished with NON zero code: $RET ========\"" << endl;
out << " if [ \"$RET\" -gt 128 ] && [ \"$RET\" -lt 160 ]; then"<<endl;
out << " let sig=\"$RET - 128\""<<endl;
out << " sigs='HUP INT QUIT ILL TRAP ABRT BUS FPE"<<endl;
out << " KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT"<<endl;
out << " CHLD CONT STOP TSTP TTIN TTOU URG XCPU"<<endl;
out << " XFSZ VTALRM PROF WINCH IO PWR SYS'"<<endl;
out << " sig=SIG`echo $sigs | awk '{ print $'\"$sig\"' }'`"<<endl;
out << " echo \"======== it appears to have been killed with signal: $sig ========\""<<endl;
out << " fi"<<endl;
out << " exit $RET"<< endl;
out << "fi" << endl << endl ;
out << "echo \"======== " << fAnalysisMacro.Data() << " finished with exit code: $RET ========\"" << endl;
out << "echo \"############## memory after: ##############\"" << endl;
out << "free -m" << endl;
}
Bool_t copy = kTRUE;
if (fProductionMode || TestBit(AliAnalysisGrid::kOffline) || TestBit(AliAnalysisGrid::kTest)) copy = kFALSE;
if (copy) {
CdWork();
TString workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
TString executable = TString::Format("%s/%s", workdir.Data(), fExecutable.Data());
if (FileExists(executable)) gGrid->Rm(executable);
Info("WriteExecutable", "\n##### Copying executable file <%s> to your AliEn bin directory", fExecutable.Data());
if (!copyLocal2Alien("WriteExecutable",fExecutable.Data(),
executable.Data())) Fatal("","Terminating");
}
}
void AliAnalysisAlien::WriteMergeExecutable()
{
if (!fMergeViaJDL) return;
TString mergeExec = fExecutable;
mergeExec.ReplaceAll(".sh", "_merge.sh");
if (!TestBit(AliAnalysisGrid::kSubmit)) {
ofstream out;
out.open(mergeExec.Data(), ios::out);
if (out.bad()) {
Error("WriteMergingExecutable", "Bad file name for executable: %s", mergeExec.Data());
return;
}
out << "#!/bin/bash" << endl;
out << "export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH" << endl;
out << "echo \"=========================================\"" << endl;
out << "echo \"############## PATH : ##############\"" << endl;
out << "echo $PATH" << endl;
out << "echo \"############## LD_LIBRARY_PATH : ##############\"" << endl;
out << "echo $LD_LIBRARY_PATH" << endl;
out << "echo \"############## ROOTSYS : ##############\"" << endl;
out << "echo $ROOTSYS" << endl;
out << "echo \"############## which root : ##############\"" << endl;
out << "which root" << endl;
out << "echo \"############## ALICE_ROOT : ##############\"" << endl;
out << "echo $ALICE_ROOT" << endl;
out << "echo \"############## which aliroot : ##############\"" << endl;
out << "which aliroot" << endl;
out << "echo \"############## system limits : ##############\"" << endl;
out << "ulimit -a" << endl;
out << "echo \"############## memory : ##############\"" << endl;
out << "free -m" << endl;
out << "echo \"=========================================\"" << endl << endl;
TString mergeMacro = fExecutable;
mergeMacro.ReplaceAll(".sh", "_merge.C");
if (IsOneStageMerging())
out << "export ARG=\"" << mergeMacro << "(\\\"$1\\\")\"" << endl;
else
out << "export ARG=\"" << mergeMacro << "(\\\"$1\\\",$2)\"" << endl;
out << fExecutableCommand << " " << "$ARG" << endl;
out << "RET=$?" << endl;
out << "if [ \"$RET\" != \"0\" ];then" << endl;
out << " echo \"======== ERROR : " << fAnalysisMacro.Data() << " finished with NON zero code: $RET ========\"" << endl;
out << " if [ \"$RET\" -gt 128 ] && [ \"$RET\" -lt 160 ]; then"<<endl;
out << " let sig=\"$RET - 128\""<<endl;
out << " sigs='HUP INT QUIT ILL TRAP ABRT BUS FPE"<<endl;
out << " KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT"<<endl;
out << " CHLD CONT STOP TSTP TTIN TTOU URG XCPU"<<endl;
out << " XFSZ VTALRM PROF WINCH IO PWR SYS'"<<endl;
out << " sig=SIG`echo $sigs | awk '{ print $'\"$sig\"' }'`"<<endl;
out << " echo \"======== it appears to have been killed with signal: $sig ========\""<<endl;
out << " fi"<<endl;
out << " exit $RET"<< endl;
out << "fi" << endl << endl ;
out << "echo \"======== " << mergeMacro.Data() << " finished with exit code: $? ========\"" << endl;
out << "echo \"############## memory after: ##############\"" << endl;
out << "free -m" << endl;
}
Bool_t copy = kTRUE;
if (fProductionMode || TestBit(AliAnalysisGrid::kOffline) || TestBit(AliAnalysisGrid::kTest)) copy = kFALSE;
if (copy) {
CdWork();
TString workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
TString executable = TString::Format("%s/%s", workdir.Data(), mergeExec.Data());
if (FileExists(executable)) gGrid->Rm(executable);
Info("WriteMergeExecutable", "\n##### Copying executable file <%s> to your AliEn bin directory", mergeExec.Data());
if (!copyLocal2Alien("WriteMergeExecutable",mergeExec.Data(),
executable.Data())) Fatal("","Terminating");
}
}
void AliAnalysisAlien::WriteProductionFile(const char *filename) const
{
ofstream out;
out.open(filename, ios::out);
if (out.bad()) {
Error("WriteProductionFile", "Bad file name: %s", filename);
return;
}
TString workdir;
if (!fProductionMode && !fGridWorkingDir.BeginsWith("/alice"))
workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
Int_t njobspermaster = 1000*fNrunsPerMaster/fSplitMaxInputFileNumber;
TString locjdl = Form("%s/%s", workdir.Data(),fJDLName.Data());
out << locjdl << " " << njobspermaster << endl;
Int_t nmasterjobs = fInputFiles->GetEntries();
for (Int_t i=0; i<nmasterjobs; i++) {
TString runOutDir = gSystem->BaseName(fInputFiles->At(i)->GetName());
runOutDir.ReplaceAll(".xml", "");
if (fOutputToRunNo)
out << Form("%s", fInputFiles->At(i)->GetName()) << " " << runOutDir << endl;
else
out << Form("%s", fInputFiles->At(i)->GetName()) << " " << Form("%03d", i) << endl;
}
if (gGrid) {
Info("WriteProductionFile", "\n##### Copying production file <%s> to your work directory", filename);
if (FileExists(filename)) gGrid->Rm(filename);
if (!copyLocal2Alien("WriteProductionFile", filename,
Form("%s/%s", workdir.Data(),filename))) Fatal("","Terminating");
}
}
void AliAnalysisAlien::WriteValidationScript(Bool_t merge)
{
TObjString *os;
if (fValidationScript.IsNull()) {
fValidationScript = fExecutable;
fValidationScript.ReplaceAll(".sh", "_validation.sh");
}
TString validationScript = fValidationScript;
if (merge) validationScript.ReplaceAll(".sh", "_merge.sh");
if (!Connect()) {
Error("WriteValidationScript", "Alien connection required");
return;
}
if (!fTerminateFiles.IsNull()) {
fTerminateFiles.Strip();
fTerminateFiles.ReplaceAll(" ",",");
}
TString outStream = "";
if (!TestBit(AliAnalysisGrid::kTest)) outStream = " >> stdout";
if (!TestBit(AliAnalysisGrid::kSubmit)) {
ofstream out;
out.open(validationScript, ios::out);
out << "#!/bin/bash" << endl;
out << "##################################################" << endl;
out << "validateout=`dirname $0`" << endl;
out << "validatetime=`date`" << endl;
out << "validated=\"0\";" << endl;
out << "error=0" << endl;
out << "if [ -z $validateout ]" << endl;
out << "then" << endl;
out << " validateout=\".\"" << endl;
out << "fi" << endl << endl;
out << "cd $validateout;" << endl;
out << "validateworkdir=`pwd`;" << endl << endl;
out << "echo \"*******************************************************\"" << outStream << endl;
out << "echo \"* Automatically generated validation script *\"" << outStream << endl;
out << "" << endl;
out << "echo \"* Time: $validatetime \"" << outStream << endl;
out << "echo \"* Dir: $validateout\"" << outStream << endl;
out << "echo \"* Workdir: $validateworkdir\"" << outStream << endl;
out << "echo \"* ----------------------------------------------------*\"" << outStream << endl;
out << "ls -la ./" << outStream << endl;
out << "echo \"* ----------------------------------------------------*\"" << outStream << endl << endl;
out << "##################################################" << endl;
out << "" << endl;
out << "if [ ! -f stderr ] ; then" << endl;
out << " error=1" << endl;
out << " echo \"* ########## Job not validated - no stderr ###\" " << outStream << endl;
out << " echo \"Error = $error\" " << outStream << endl;
out << "fi" << endl;
out << "parArch=`grep -Ei \"Cannot Build the PAR Archive\" stderr`" << endl;
out << "segViol=`grep -Ei \"Segmentation violation\" stderr`" << endl;
out << "segFault=`grep -Ei \"Segmentation fault\" stderr`" << endl;
out << "glibcErr=`grep -Ei '\\*\\*\\* glibc detected \\*\\*\\*' stderr`" << endl;
out << "" << endl;
out << "if [ \"$parArch\" != \"\" ] ; then" << endl;
out << " error=1" << endl;
out << " echo \"* ########## Job not validated - PAR archive not built ###\" " << outStream << endl;
out << " echo \"$parArch\" " << outStream << endl;
out << " echo \"Error = $error\" " << outStream << endl;
out << "fi" << endl;
out << "if [ \"$segViol\" != \"\" ] ; then" << endl;
out << " error=1" << endl;
out << " echo \"* ########## Job not validated - Segment. violation ###\" " << outStream << endl;
out << " echo \"$segViol\" " << outStream << endl;
out << " echo \"Error = $error\" " << outStream << endl;
out << "fi" << endl;
out << "if [ \"$segFault\" != \"\" ] ; then" << endl;
out << " error=1" << endl;
out << " echo \"* ########## Job not validated - Segment. fault ###\" " << outStream << endl;
out << " echo \"$segFault\" " << outStream << endl;
out << " echo \"Error = $error\" " << outStream << endl;
out << "fi" << endl;
out << "if [ \"$glibcErr\" != \"\" ] ; then" << endl;
out << " error=1" << endl;
out << " echo \"* ########## Job not validated - *** glibc detected *** ###\" " << outStream << endl;
out << " echo \"$glibcErr\" " << outStream << endl;
out << " echo \"Error = $error\" " << outStream << endl;
out << "fi" << endl;
TString outputFiles = fOutputFiles;
if (merge && !fTerminateFiles.IsNull()) {
if (!outputFiles.IsNull()) outputFiles += ",";
outputFiles += fTerminateFiles;
}
TObjArray *arr = outputFiles.Tokenize(",");
TIter next1(arr);
TString outputFile;
while (!merge && (os=(TObjString*)next1())) {
outputFile = os->GetString();
Int_t index = outputFile.Index("@");
if (index > 0) outputFile.Remove(index);
if (fTerminateFiles.Contains(outputFile)) continue;
if (outputFile.Contains("*")) continue;
out << "if ! [ -f " << outputFile.Data() << " ] ; then" << endl;
out << " error=1" << endl;
out << " echo \"Output file " << outputFile << " not found. Job FAILED !\"" << outStream << endl;
out << " echo \"Output file " << outputFile << " not found. Job FAILED !\" >> stderr" << endl;
out << "fi" << endl;
}
delete arr;
out << "if ! [ -f outputs_valid ] ; then" << endl;
out << " error=1" << endl;
out << " echo \"Output files were not validated by the analysis manager\" >> stdout" << endl;
out << " echo \"Output files were not validated by the analysis manager\" >> stderr" << endl;
out << "fi" << endl;
out << "if [ $error = 0 ] ; then" << endl;
out << " echo \"* ---------------- Job Validated ------------------*\"" << outStream << endl;
if (!IsKeepLogs()) {
out << " echo \"* === Logs std* will be deleted === \"" << endl;
outStream = "";
out << " rm -f std*" << endl;
}
out << "fi" << endl;
out << "echo \"* ----------------------------------------------------*\"" << outStream << endl;
out << "echo \"*******************************************************\"" << outStream << endl;
out << "cd -" << endl;
out << "exit $error" << endl;
}
Bool_t copy = kTRUE;
if (fProductionMode || TestBit(AliAnalysisGrid::kOffline) || TestBit(AliAnalysisGrid::kTest)) copy = kFALSE;
if (copy) {
CdWork();
TString workdir = gGrid->GetHomeDirectory();
workdir += fGridWorkingDir;
Info("WriteValidationScript", "\n##### Copying validation script <%s> to your AliEn working space", validationScript.Data());
if (FileExists(validationScript)) gGrid->Rm(validationScript);
if (!copyLocal2Alien("WriteValidationScript", validationScript.Data(),
Form("%s/%s",workdir.Data(), validationScript.Data()))) Fatal("","Terminating");
}
}
AliAnalysisAlien.cxx:1000 AliAnalysisAlien.cxx:1001 AliAnalysisAlien.cxx:1002 AliAnalysisAlien.cxx:1003 AliAnalysisAlien.cxx:1004 AliAnalysisAlien.cxx:1005 AliAnalysisAlien.cxx:1006 AliAnalysisAlien.cxx:1007 AliAnalysisAlien.cxx:1008 AliAnalysisAlien.cxx:1009 AliAnalysisAlien.cxx:1010 AliAnalysisAlien.cxx:1011 AliAnalysisAlien.cxx:1012 AliAnalysisAlien.cxx:1013 AliAnalysisAlien.cxx:1014 AliAnalysisAlien.cxx:1015 AliAnalysisAlien.cxx:1016 AliAnalysisAlien.cxx:1017 AliAnalysisAlien.cxx:1018 AliAnalysisAlien.cxx:1019 AliAnalysisAlien.cxx:1020 AliAnalysisAlien.cxx:1021 AliAnalysisAlien.cxx:1022 AliAnalysisAlien.cxx:1023 AliAnalysisAlien.cxx:1024 AliAnalysisAlien.cxx:1025 AliAnalysisAlien.cxx:1026 AliAnalysisAlien.cxx:1027 AliAnalysisAlien.cxx:1028 AliAnalysisAlien.cxx:1029 AliAnalysisAlien.cxx:1030 AliAnalysisAlien.cxx:1031 AliAnalysisAlien.cxx:1032 AliAnalysisAlien.cxx:1033 AliAnalysisAlien.cxx:1034 AliAnalysisAlien.cxx:1035 AliAnalysisAlien.cxx:1036 AliAnalysisAlien.cxx:1037 AliAnalysisAlien.cxx:1038 AliAnalysisAlien.cxx:1039 AliAnalysisAlien.cxx:1040 AliAnalysisAlien.cxx:1041 AliAnalysisAlien.cxx:1042 AliAnalysisAlien.cxx:1043 AliAnalysisAlien.cxx:1044 AliAnalysisAlien.cxx:1045 AliAnalysisAlien.cxx:1046 AliAnalysisAlien.cxx:1047 AliAnalysisAlien.cxx:1048 AliAnalysisAlien.cxx:1049 AliAnalysisAlien.cxx:1050 AliAnalysisAlien.cxx:1051 AliAnalysisAlien.cxx:1052 AliAnalysisAlien.cxx:1053 AliAnalysisAlien.cxx:1054 AliAnalysisAlien.cxx:1055 AliAnalysisAlien.cxx:1056 AliAnalysisAlien.cxx:1057 AliAnalysisAlien.cxx:1058 AliAnalysisAlien.cxx:1059 AliAnalysisAlien.cxx:1060 AliAnalysisAlien.cxx:1061 AliAnalysisAlien.cxx:1062 AliAnalysisAlien.cxx:1063 AliAnalysisAlien.cxx:1064 AliAnalysisAlien.cxx:1065 AliAnalysisAlien.cxx:1066 AliAnalysisAlien.cxx:1067 AliAnalysisAlien.cxx:1068 AliAnalysisAlien.cxx:1069 AliAnalysisAlien.cxx:1070 AliAnalysisAlien.cxx:1071 AliAnalysisAlien.cxx:1072 AliAnalysisAlien.cxx:1073 AliAnalysisAlien.cxx:1074 AliAnalysisAlien.cxx:1075 AliAnalysisAlien.cxx:1076 AliAnalysisAlien.cxx:1077 AliAnalysisAlien.cxx:1078 AliAnalysisAlien.cxx:1079 AliAnalysisAlien.cxx:1080 AliAnalysisAlien.cxx:1081 AliAnalysisAlien.cxx:1082 AliAnalysisAlien.cxx:1083 AliAnalysisAlien.cxx:1084 AliAnalysisAlien.cxx:1085 AliAnalysisAlien.cxx:1086 AliAnalysisAlien.cxx:1087 AliAnalysisAlien.cxx:1088 AliAnalysisAlien.cxx:1089 AliAnalysisAlien.cxx:1090 AliAnalysisAlien.cxx:1091 AliAnalysisAlien.cxx:1092 AliAnalysisAlien.cxx:1093 AliAnalysisAlien.cxx:1094 AliAnalysisAlien.cxx:1095 AliAnalysisAlien.cxx:1096 AliAnalysisAlien.cxx:1097 AliAnalysisAlien.cxx:1098 AliAnalysisAlien.cxx:1099 AliAnalysisAlien.cxx:1100 AliAnalysisAlien.cxx:1101 AliAnalysisAlien.cxx:1102 AliAnalysisAlien.cxx:1103 AliAnalysisAlien.cxx:1104 AliAnalysisAlien.cxx:1105 AliAnalysisAlien.cxx:1106 AliAnalysisAlien.cxx:1107 AliAnalysisAlien.cxx:1108 AliAnalysisAlien.cxx:1109 AliAnalysisAlien.cxx:1110 AliAnalysisAlien.cxx:1111 AliAnalysisAlien.cxx:1112 AliAnalysisAlien.cxx:1113 AliAnalysisAlien.cxx:1114 AliAnalysisAlien.cxx:1115 AliAnalysisAlien.cxx:1116 AliAnalysisAlien.cxx:1117 AliAnalysisAlien.cxx:1118 AliAnalysisAlien.cxx:1119 AliAnalysisAlien.cxx:1120 AliAnalysisAlien.cxx:1121 AliAnalysisAlien.cxx:1122 AliAnalysisAlien.cxx:1123 AliAnalysisAlien.cxx:1124 AliAnalysisAlien.cxx:1125 AliAnalysisAlien.cxx:1126 AliAnalysisAlien.cxx:1127 AliAnalysisAlien.cxx:1128 AliAnalysisAlien.cxx:1129 AliAnalysisAlien.cxx:1130 AliAnalysisAlien.cxx:1131 AliAnalysisAlien.cxx:1132 AliAnalysisAlien.cxx:1133 AliAnalysisAlien.cxx:1134 AliAnalysisAlien.cxx:1135 AliAnalysisAlien.cxx:1136 AliAnalysisAlien.cxx:1137 AliAnalysisAlien.cxx:1138 AliAnalysisAlien.cxx:1139 AliAnalysisAlien.cxx:1140 AliAnalysisAlien.cxx:1141 AliAnalysisAlien.cxx:1142 AliAnalysisAlien.cxx:1143 AliAnalysisAlien.cxx:1144 AliAnalysisAlien.cxx:1145 AliAnalysisAlien.cxx:1146 AliAnalysisAlien.cxx:1147 AliAnalysisAlien.cxx:1148 AliAnalysisAlien.cxx:1149 AliAnalysisAlien.cxx:1150 AliAnalysisAlien.cxx:1151 AliAnalysisAlien.cxx:1152 AliAnalysisAlien.cxx:1153 AliAnalysisAlien.cxx:1154 AliAnalysisAlien.cxx:1155 AliAnalysisAlien.cxx:1156 AliAnalysisAlien.cxx:1157 AliAnalysisAlien.cxx:1158 AliAnalysisAlien.cxx:1159 AliAnalysisAlien.cxx:1160 AliAnalysisAlien.cxx:1161 AliAnalysisAlien.cxx:1162 AliAnalysisAlien.cxx:1163 AliAnalysisAlien.cxx:1164 AliAnalysisAlien.cxx:1165 AliAnalysisAlien.cxx:1166 AliAnalysisAlien.cxx:1167 AliAnalysisAlien.cxx:1168 AliAnalysisAlien.cxx:1169 AliAnalysisAlien.cxx:1170 AliAnalysisAlien.cxx:1171 AliAnalysisAlien.cxx:1172 AliAnalysisAlien.cxx:1173 AliAnalysisAlien.cxx:1174 AliAnalysisAlien.cxx:1175 AliAnalysisAlien.cxx:1176 AliAnalysisAlien.cxx:1177 AliAnalysisAlien.cxx:1178 AliAnalysisAlien.cxx:1179 AliAnalysisAlien.cxx:1180 AliAnalysisAlien.cxx:1181 AliAnalysisAlien.cxx:1182 AliAnalysisAlien.cxx:1183 AliAnalysisAlien.cxx:1184 AliAnalysisAlien.cxx:1185 AliAnalysisAlien.cxx:1186 AliAnalysisAlien.cxx:1187 AliAnalysisAlien.cxx:1188 AliAnalysisAlien.cxx:1189 AliAnalysisAlien.cxx:1190 AliAnalysisAlien.cxx:1191 AliAnalysisAlien.cxx:1192 AliAnalysisAlien.cxx:1193 AliAnalysisAlien.cxx:1194 AliAnalysisAlien.cxx:1195 AliAnalysisAlien.cxx:1196 AliAnalysisAlien.cxx:1197 AliAnalysisAlien.cxx:1198 AliAnalysisAlien.cxx:1199 AliAnalysisAlien.cxx:1200 AliAnalysisAlien.cxx:1201 AliAnalysisAlien.cxx:1202 AliAnalysisAlien.cxx:1203 AliAnalysisAlien.cxx:1204 AliAnalysisAlien.cxx:1205 AliAnalysisAlien.cxx:1206 AliAnalysisAlien.cxx:1207 AliAnalysisAlien.cxx:1208 AliAnalysisAlien.cxx:1209 AliAnalysisAlien.cxx:1210 AliAnalysisAlien.cxx:1211 AliAnalysisAlien.cxx:1212 AliAnalysisAlien.cxx:1213 AliAnalysisAlien.cxx:1214 AliAnalysisAlien.cxx:1215 AliAnalysisAlien.cxx:1216 AliAnalysisAlien.cxx:1217 AliAnalysisAlien.cxx:1218 AliAnalysisAlien.cxx:1219 AliAnalysisAlien.cxx:1220 AliAnalysisAlien.cxx:1221 AliAnalysisAlien.cxx:1222 AliAnalysisAlien.cxx:1223 AliAnalysisAlien.cxx:1224 AliAnalysisAlien.cxx:1225 AliAnalysisAlien.cxx:1226 AliAnalysisAlien.cxx:1227 AliAnalysisAlien.cxx:1228 AliAnalysisAlien.cxx:1229 AliAnalysisAlien.cxx:1230 AliAnalysisAlien.cxx:1231 AliAnalysisAlien.cxx:1232 AliAnalysisAlien.cxx:1233 AliAnalysisAlien.cxx:1234 AliAnalysisAlien.cxx:1235 AliAnalysisAlien.cxx:1236 AliAnalysisAlien.cxx:1237 AliAnalysisAlien.cxx:1238 AliAnalysisAlien.cxx:1239 AliAnalysisAlien.cxx:1240 AliAnalysisAlien.cxx:1241 AliAnalysisAlien.cxx:1242 AliAnalysisAlien.cxx:1243 AliAnalysisAlien.cxx:1244 AliAnalysisAlien.cxx:1245 AliAnalysisAlien.cxx:1246 AliAnalysisAlien.cxx:1247 AliAnalysisAlien.cxx:1248 AliAnalysisAlien.cxx:1249 AliAnalysisAlien.cxx:1250 AliAnalysisAlien.cxx:1251 AliAnalysisAlien.cxx:1252 AliAnalysisAlien.cxx:1253 AliAnalysisAlien.cxx:1254 AliAnalysisAlien.cxx:1255 AliAnalysisAlien.cxx:1256 AliAnalysisAlien.cxx:1257 AliAnalysisAlien.cxx:1258 AliAnalysisAlien.cxx:1259 AliAnalysisAlien.cxx:1260 AliAnalysisAlien.cxx:1261 AliAnalysisAlien.cxx:1262 AliAnalysisAlien.cxx:1263 AliAnalysisAlien.cxx:1264 AliAnalysisAlien.cxx:1265 AliAnalysisAlien.cxx:1266 AliAnalysisAlien.cxx:1267 AliAnalysisAlien.cxx:1268 AliAnalysisAlien.cxx:1269 AliAnalysisAlien.cxx:1270 AliAnalysisAlien.cxx:1271 AliAnalysisAlien.cxx:1272 AliAnalysisAlien.cxx:1273 AliAnalysisAlien.cxx:1274 AliAnalysisAlien.cxx:1275 AliAnalysisAlien.cxx:1276 AliAnalysisAlien.cxx:1277 AliAnalysisAlien.cxx:1278 AliAnalysisAlien.cxx:1279 AliAnalysisAlien.cxx:1280 AliAnalysisAlien.cxx:1281 AliAnalysisAlien.cxx:1282 AliAnalysisAlien.cxx:1283 AliAnalysisAlien.cxx:1284 AliAnalysisAlien.cxx:1285 AliAnalysisAlien.cxx:1286 AliAnalysisAlien.cxx:1287 AliAnalysisAlien.cxx:1288 AliAnalysisAlien.cxx:1289 AliAnalysisAlien.cxx:1290 AliAnalysisAlien.cxx:1291 AliAnalysisAlien.cxx:1292 AliAnalysisAlien.cxx:1293 AliAnalysisAlien.cxx:1294 AliAnalysisAlien.cxx:1295 AliAnalysisAlien.cxx:1296 AliAnalysisAlien.cxx:1297 AliAnalysisAlien.cxx:1298 AliAnalysisAlien.cxx:1299 AliAnalysisAlien.cxx:1300 AliAnalysisAlien.cxx:1301 AliAnalysisAlien.cxx:1302 AliAnalysisAlien.cxx:1303 AliAnalysisAlien.cxx:1304 AliAnalysisAlien.cxx:1305 AliAnalysisAlien.cxx:1306 AliAnalysisAlien.cxx:1307 AliAnalysisAlien.cxx:1308 AliAnalysisAlien.cxx:1309 AliAnalysisAlien.cxx:1310 AliAnalysisAlien.cxx:1311 AliAnalysisAlien.cxx:1312 AliAnalysisAlien.cxx:1313 AliAnalysisAlien.cxx:1314 AliAnalysisAlien.cxx:1315 AliAnalysisAlien.cxx:1316 AliAnalysisAlien.cxx:1317 AliAnalysisAlien.cxx:1318 AliAnalysisAlien.cxx:1319 AliAnalysisAlien.cxx:1320 AliAnalysisAlien.cxx:1321 AliAnalysisAlien.cxx:1322 AliAnalysisAlien.cxx:1323 AliAnalysisAlien.cxx:1324 AliAnalysisAlien.cxx:1325 AliAnalysisAlien.cxx:1326 AliAnalysisAlien.cxx:1327 AliAnalysisAlien.cxx:1328 AliAnalysisAlien.cxx:1329 AliAnalysisAlien.cxx:1330 AliAnalysisAlien.cxx:1331 AliAnalysisAlien.cxx:1332 AliAnalysisAlien.cxx:1333 AliAnalysisAlien.cxx:1334 AliAnalysisAlien.cxx:1335 AliAnalysisAlien.cxx:1336 AliAnalysisAlien.cxx:1337 AliAnalysisAlien.cxx:1338 AliAnalysisAlien.cxx:1339 AliAnalysisAlien.cxx:1340 AliAnalysisAlien.cxx:1341 AliAnalysisAlien.cxx:1342 AliAnalysisAlien.cxx:1343 AliAnalysisAlien.cxx:1344 AliAnalysisAlien.cxx:1345 AliAnalysisAlien.cxx:1346 AliAnalysisAlien.cxx:1347 AliAnalysisAlien.cxx:1348 AliAnalysisAlien.cxx:1349 AliAnalysisAlien.cxx:1350 AliAnalysisAlien.cxx:1351 AliAnalysisAlien.cxx:1352 AliAnalysisAlien.cxx:1353 AliAnalysisAlien.cxx:1354 AliAnalysisAlien.cxx:1355 AliAnalysisAlien.cxx:1356 AliAnalysisAlien.cxx:1357 AliAnalysisAlien.cxx:1358 AliAnalysisAlien.cxx:1359 AliAnalysisAlien.cxx:1360 AliAnalysisAlien.cxx:1361 AliAnalysisAlien.cxx:1362 AliAnalysisAlien.cxx:1363 AliAnalysisAlien.cxx:1364 AliAnalysisAlien.cxx:1365 AliAnalysisAlien.cxx:1366 AliAnalysisAlien.cxx:1367 AliAnalysisAlien.cxx:1368 AliAnalysisAlien.cxx:1369 AliAnalysisAlien.cxx:1370 AliAnalysisAlien.cxx:1371 AliAnalysisAlien.cxx:1372 AliAnalysisAlien.cxx:1373 AliAnalysisAlien.cxx:1374 AliAnalysisAlien.cxx:1375 AliAnalysisAlien.cxx:1376 AliAnalysisAlien.cxx:1377 AliAnalysisAlien.cxx:1378 AliAnalysisAlien.cxx:1379 AliAnalysisAlien.cxx:1380 AliAnalysisAlien.cxx:1381 AliAnalysisAlien.cxx:1382 AliAnalysisAlien.cxx:1383 AliAnalysisAlien.cxx:1384 AliAnalysisAlien.cxx:1385 AliAnalysisAlien.cxx:1386 AliAnalysisAlien.cxx:1387 AliAnalysisAlien.cxx:1388 AliAnalysisAlien.cxx:1389 AliAnalysisAlien.cxx:1390 AliAnalysisAlien.cxx:1391 AliAnalysisAlien.cxx:1392 AliAnalysisAlien.cxx:1393 AliAnalysisAlien.cxx:1394 AliAnalysisAlien.cxx:1395 AliAnalysisAlien.cxx:1396 AliAnalysisAlien.cxx:1397 AliAnalysisAlien.cxx:1398 AliAnalysisAlien.cxx:1399 AliAnalysisAlien.cxx:1400 AliAnalysisAlien.cxx:1401 AliAnalysisAlien.cxx:1402 AliAnalysisAlien.cxx:1403 AliAnalysisAlien.cxx:1404 AliAnalysisAlien.cxx:1405 AliAnalysisAlien.cxx:1406 AliAnalysisAlien.cxx:1407 AliAnalysisAlien.cxx:1408 AliAnalysisAlien.cxx:1409 AliAnalysisAlien.cxx:1410 AliAnalysisAlien.cxx:1411 AliAnalysisAlien.cxx:1412 AliAnalysisAlien.cxx:1413 AliAnalysisAlien.cxx:1414 AliAnalysisAlien.cxx:1415 AliAnalysisAlien.cxx:1416 AliAnalysisAlien.cxx:1417 AliAnalysisAlien.cxx:1418 AliAnalysisAlien.cxx:1419 AliAnalysisAlien.cxx:1420 AliAnalysisAlien.cxx:1421 AliAnalysisAlien.cxx:1422 AliAnalysisAlien.cxx:1423 AliAnalysisAlien.cxx:1424 AliAnalysisAlien.cxx:1425 AliAnalysisAlien.cxx:1426 AliAnalysisAlien.cxx:1427 AliAnalysisAlien.cxx:1428 AliAnalysisAlien.cxx:1429 AliAnalysisAlien.cxx:1430 AliAnalysisAlien.cxx:1431 AliAnalysisAlien.cxx:1432 AliAnalysisAlien.cxx:1433 AliAnalysisAlien.cxx:1434 AliAnalysisAlien.cxx:1435 AliAnalysisAlien.cxx:1436 AliAnalysisAlien.cxx:1437 AliAnalysisAlien.cxx:1438 AliAnalysisAlien.cxx:1439 AliAnalysisAlien.cxx:1440 AliAnalysisAlien.cxx:1441 AliAnalysisAlien.cxx:1442 AliAnalysisAlien.cxx:1443 AliAnalysisAlien.cxx:1444 AliAnalysisAlien.cxx:1445 AliAnalysisAlien.cxx:1446 AliAnalysisAlien.cxx:1447 AliAnalysisAlien.cxx:1448 AliAnalysisAlien.cxx:1449 AliAnalysisAlien.cxx:1450 AliAnalysisAlien.cxx:1451 AliAnalysisAlien.cxx:1452 AliAnalysisAlien.cxx:1453 AliAnalysisAlien.cxx:1454 AliAnalysisAlien.cxx:1455 AliAnalysisAlien.cxx:1456 AliAnalysisAlien.cxx:1457 AliAnalysisAlien.cxx:1458 AliAnalysisAlien.cxx:1459 AliAnalysisAlien.cxx:1460 AliAnalysisAlien.cxx:1461 AliAnalysisAlien.cxx:1462 AliAnalysisAlien.cxx:1463 AliAnalysisAlien.cxx:1464 AliAnalysisAlien.cxx:1465 AliAnalysisAlien.cxx:1466 AliAnalysisAlien.cxx:1467 AliAnalysisAlien.cxx:1468 AliAnalysisAlien.cxx:1469 AliAnalysisAlien.cxx:1470 AliAnalysisAlien.cxx:1471 AliAnalysisAlien.cxx:1472 AliAnalysisAlien.cxx:1473 AliAnalysisAlien.cxx:1474 AliAnalysisAlien.cxx:1475 AliAnalysisAlien.cxx:1476 AliAnalysisAlien.cxx:1477 AliAnalysisAlien.cxx:1478 AliAnalysisAlien.cxx:1479 AliAnalysisAlien.cxx:1480 AliAnalysisAlien.cxx:1481 AliAnalysisAlien.cxx:1482 AliAnalysisAlien.cxx:1483 AliAnalysisAlien.cxx:1484 AliAnalysisAlien.cxx:1485 AliAnalysisAlien.cxx:1486 AliAnalysisAlien.cxx:1487 AliAnalysisAlien.cxx:1488 AliAnalysisAlien.cxx:1489 AliAnalysisAlien.cxx:1490 AliAnalysisAlien.cxx:1491 AliAnalysisAlien.cxx:1492 AliAnalysisAlien.cxx:1493 AliAnalysisAlien.cxx:1494 AliAnalysisAlien.cxx:1495 AliAnalysisAlien.cxx:1496 AliAnalysisAlien.cxx:1497 AliAnalysisAlien.cxx:1498 AliAnalysisAlien.cxx:1499 AliAnalysisAlien.cxx:1500 AliAnalysisAlien.cxx:1501 AliAnalysisAlien.cxx:1502 AliAnalysisAlien.cxx:1503 AliAnalysisAlien.cxx:1504 AliAnalysisAlien.cxx:1505 AliAnalysisAlien.cxx:1506 AliAnalysisAlien.cxx:1507 AliAnalysisAlien.cxx:1508 AliAnalysisAlien.cxx:1509 AliAnalysisAlien.cxx:1510 AliAnalysisAlien.cxx:1511 AliAnalysisAlien.cxx:1512 AliAnalysisAlien.cxx:1513 AliAnalysisAlien.cxx:1514 AliAnalysisAlien.cxx:1515 AliAnalysisAlien.cxx:1516 AliAnalysisAlien.cxx:1517 AliAnalysisAlien.cxx:1518 AliAnalysisAlien.cxx:1519 AliAnalysisAlien.cxx:1520 AliAnalysisAlien.cxx:1521 AliAnalysisAlien.cxx:1522 AliAnalysisAlien.cxx:1523 AliAnalysisAlien.cxx:1524 AliAnalysisAlien.cxx:1525 AliAnalysisAlien.cxx:1526 AliAnalysisAlien.cxx:1527 AliAnalysisAlien.cxx:1528 AliAnalysisAlien.cxx:1529 AliAnalysisAlien.cxx:1530 AliAnalysisAlien.cxx:1531 AliAnalysisAlien.cxx:1532 AliAnalysisAlien.cxx:1533 AliAnalysisAlien.cxx:1534 AliAnalysisAlien.cxx:1535 AliAnalysisAlien.cxx:1536 AliAnalysisAlien.cxx:1537 AliAnalysisAlien.cxx:1538 AliAnalysisAlien.cxx:1539 AliAnalysisAlien.cxx:1540 AliAnalysisAlien.cxx:1541 AliAnalysisAlien.cxx:1542 AliAnalysisAlien.cxx:1543 AliAnalysisAlien.cxx:1544 AliAnalysisAlien.cxx:1545 AliAnalysisAlien.cxx:1546 AliAnalysisAlien.cxx:1547 AliAnalysisAlien.cxx:1548 AliAnalysisAlien.cxx:1549 AliAnalysisAlien.cxx:1550 AliAnalysisAlien.cxx:1551 AliAnalysisAlien.cxx:1552 AliAnalysisAlien.cxx:1553 AliAnalysisAlien.cxx:1554 AliAnalysisAlien.cxx:1555 AliAnalysisAlien.cxx:1556 AliAnalysisAlien.cxx:1557 AliAnalysisAlien.cxx:1558 AliAnalysisAlien.cxx:1559 AliAnalysisAlien.cxx:1560 AliAnalysisAlien.cxx:1561 AliAnalysisAlien.cxx:1562 AliAnalysisAlien.cxx:1563 AliAnalysisAlien.cxx:1564 AliAnalysisAlien.cxx:1565 AliAnalysisAlien.cxx:1566 AliAnalysisAlien.cxx:1567 AliAnalysisAlien.cxx:1568 AliAnalysisAlien.cxx:1569 AliAnalysisAlien.cxx:1570 AliAnalysisAlien.cxx:1571 AliAnalysisAlien.cxx:1572 AliAnalysisAlien.cxx:1573 AliAnalysisAlien.cxx:1574 AliAnalysisAlien.cxx:1575 AliAnalysisAlien.cxx:1576 AliAnalysisAlien.cxx:1577 AliAnalysisAlien.cxx:1578 AliAnalysisAlien.cxx:1579 AliAnalysisAlien.cxx:1580 AliAnalysisAlien.cxx:1581 AliAnalysisAlien.cxx:1582 AliAnalysisAlien.cxx:1583 AliAnalysisAlien.cxx:1584 AliAnalysisAlien.cxx:1585 AliAnalysisAlien.cxx:1586 AliAnalysisAlien.cxx:1587 AliAnalysisAlien.cxx:1588 AliAnalysisAlien.cxx:1589 AliAnalysisAlien.cxx:1590 AliAnalysisAlien.cxx:1591 AliAnalysisAlien.cxx:1592 AliAnalysisAlien.cxx:1593 AliAnalysisAlien.cxx:1594 AliAnalysisAlien.cxx:1595 AliAnalysisAlien.cxx:1596 AliAnalysisAlien.cxx:1597 AliAnalysisAlien.cxx:1598 AliAnalysisAlien.cxx:1599 AliAnalysisAlien.cxx:1600 AliAnalysisAlien.cxx:1601 AliAnalysisAlien.cxx:1602 AliAnalysisAlien.cxx:1603 AliAnalysisAlien.cxx:1604 AliAnalysisAlien.cxx:1605 AliAnalysisAlien.cxx:1606 AliAnalysisAlien.cxx:1607 AliAnalysisAlien.cxx:1608 AliAnalysisAlien.cxx:1609 AliAnalysisAlien.cxx:1610 AliAnalysisAlien.cxx:1611 AliAnalysisAlien.cxx:1612 AliAnalysisAlien.cxx:1613 AliAnalysisAlien.cxx:1614 AliAnalysisAlien.cxx:1615 AliAnalysisAlien.cxx:1616 AliAnalysisAlien.cxx:1617 AliAnalysisAlien.cxx:1618 AliAnalysisAlien.cxx:1619 AliAnalysisAlien.cxx:1620 AliAnalysisAlien.cxx:1621 AliAnalysisAlien.cxx:1622 AliAnalysisAlien.cxx:1623 AliAnalysisAlien.cxx:1624 AliAnalysisAlien.cxx:1625 AliAnalysisAlien.cxx:1626 AliAnalysisAlien.cxx:1627 AliAnalysisAlien.cxx:1628 AliAnalysisAlien.cxx:1629 AliAnalysisAlien.cxx:1630 AliAnalysisAlien.cxx:1631 AliAnalysisAlien.cxx:1632 AliAnalysisAlien.cxx:1633 AliAnalysisAlien.cxx:1634 AliAnalysisAlien.cxx:1635 AliAnalysisAlien.cxx:1636 AliAnalysisAlien.cxx:1637 AliAnalysisAlien.cxx:1638 AliAnalysisAlien.cxx:1639 AliAnalysisAlien.cxx:1640 AliAnalysisAlien.cxx:1641 AliAnalysisAlien.cxx:1642 AliAnalysisAlien.cxx:1643 AliAnalysisAlien.cxx:1644 AliAnalysisAlien.cxx:1645 AliAnalysisAlien.cxx:1646 AliAnalysisAlien.cxx:1647 AliAnalysisAlien.cxx:1648 AliAnalysisAlien.cxx:1649 AliAnalysisAlien.cxx:1650 AliAnalysisAlien.cxx:1651 AliAnalysisAlien.cxx:1652 AliAnalysisAlien.cxx:1653 AliAnalysisAlien.cxx:1654 AliAnalysisAlien.cxx:1655 AliAnalysisAlien.cxx:1656 AliAnalysisAlien.cxx:1657 AliAnalysisAlien.cxx:1658 AliAnalysisAlien.cxx:1659 AliAnalysisAlien.cxx:1660 AliAnalysisAlien.cxx:1661 AliAnalysisAlien.cxx:1662 AliAnalysisAlien.cxx:1663 AliAnalysisAlien.cxx:1664 AliAnalysisAlien.cxx:1665 AliAnalysisAlien.cxx:1666 AliAnalysisAlien.cxx:1667 AliAnalysisAlien.cxx:1668 AliAnalysisAlien.cxx:1669 AliAnalysisAlien.cxx:1670 AliAnalysisAlien.cxx:1671 AliAnalysisAlien.cxx:1672 AliAnalysisAlien.cxx:1673 AliAnalysisAlien.cxx:1674 AliAnalysisAlien.cxx:1675 AliAnalysisAlien.cxx:1676 AliAnalysisAlien.cxx:1677 AliAnalysisAlien.cxx:1678 AliAnalysisAlien.cxx:1679 AliAnalysisAlien.cxx:1680 AliAnalysisAlien.cxx:1681 AliAnalysisAlien.cxx:1682 AliAnalysisAlien.cxx:1683 AliAnalysisAlien.cxx:1684 AliAnalysisAlien.cxx:1685 AliAnalysisAlien.cxx:1686 AliAnalysisAlien.cxx:1687 AliAnalysisAlien.cxx:1688 AliAnalysisAlien.cxx:1689 AliAnalysisAlien.cxx:1690 AliAnalysisAlien.cxx:1691 AliAnalysisAlien.cxx:1692 AliAnalysisAlien.cxx:1693 AliAnalysisAlien.cxx:1694 AliAnalysisAlien.cxx:1695 AliAnalysisAlien.cxx:1696 AliAnalysisAlien.cxx:1697 AliAnalysisAlien.cxx:1698 AliAnalysisAlien.cxx:1699 AliAnalysisAlien.cxx:1700 AliAnalysisAlien.cxx:1701 AliAnalysisAlien.cxx:1702 AliAnalysisAlien.cxx:1703 AliAnalysisAlien.cxx:1704 AliAnalysisAlien.cxx:1705 AliAnalysisAlien.cxx:1706 AliAnalysisAlien.cxx:1707 AliAnalysisAlien.cxx:1708 AliAnalysisAlien.cxx:1709 AliAnalysisAlien.cxx:1710 AliAnalysisAlien.cxx:1711 AliAnalysisAlien.cxx:1712 AliAnalysisAlien.cxx:1713 AliAnalysisAlien.cxx:1714 AliAnalysisAlien.cxx:1715 AliAnalysisAlien.cxx:1716 AliAnalysisAlien.cxx:1717 AliAnalysisAlien.cxx:1718 AliAnalysisAlien.cxx:1719 AliAnalysisAlien.cxx:1720 AliAnalysisAlien.cxx:1721 AliAnalysisAlien.cxx:1722 AliAnalysisAlien.cxx:1723 AliAnalysisAlien.cxx:1724 AliAnalysisAlien.cxx:1725 AliAnalysisAlien.cxx:1726 AliAnalysisAlien.cxx:1727 AliAnalysisAlien.cxx:1728 AliAnalysisAlien.cxx:1729 AliAnalysisAlien.cxx:1730 AliAnalysisAlien.cxx:1731 AliAnalysisAlien.cxx:1732 AliAnalysisAlien.cxx:1733 AliAnalysisAlien.cxx:1734 AliAnalysisAlien.cxx:1735 AliAnalysisAlien.cxx:1736 AliAnalysisAlien.cxx:1737 AliAnalysisAlien.cxx:1738 AliAnalysisAlien.cxx:1739 AliAnalysisAlien.cxx:1740 AliAnalysisAlien.cxx:1741 AliAnalysisAlien.cxx:1742 AliAnalysisAlien.cxx:1743 AliAnalysisAlien.cxx:1744 AliAnalysisAlien.cxx:1745 AliAnalysisAlien.cxx:1746 AliAnalysisAlien.cxx:1747 AliAnalysisAlien.cxx:1748 AliAnalysisAlien.cxx:1749 AliAnalysisAlien.cxx:1750 AliAnalysisAlien.cxx:1751 AliAnalysisAlien.cxx:1752 AliAnalysisAlien.cxx:1753 AliAnalysisAlien.cxx:1754 AliAnalysisAlien.cxx:1755 AliAnalysisAlien.cxx:1756 AliAnalysisAlien.cxx:1757 AliAnalysisAlien.cxx:1758 AliAnalysisAlien.cxx:1759 AliAnalysisAlien.cxx:1760 AliAnalysisAlien.cxx:1761 AliAnalysisAlien.cxx:1762 AliAnalysisAlien.cxx:1763 AliAnalysisAlien.cxx:1764 AliAnalysisAlien.cxx:1765 AliAnalysisAlien.cxx:1766 AliAnalysisAlien.cxx:1767 AliAnalysisAlien.cxx:1768 AliAnalysisAlien.cxx:1769 AliAnalysisAlien.cxx:1770 AliAnalysisAlien.cxx:1771 AliAnalysisAlien.cxx:1772 AliAnalysisAlien.cxx:1773 AliAnalysisAlien.cxx:1774 AliAnalysisAlien.cxx:1775 AliAnalysisAlien.cxx:1776 AliAnalysisAlien.cxx:1777 AliAnalysisAlien.cxx:1778 AliAnalysisAlien.cxx:1779 AliAnalysisAlien.cxx:1780 AliAnalysisAlien.cxx:1781 AliAnalysisAlien.cxx:1782 AliAnalysisAlien.cxx:1783 AliAnalysisAlien.cxx:1784 AliAnalysisAlien.cxx:1785 AliAnalysisAlien.cxx:1786 AliAnalysisAlien.cxx:1787 AliAnalysisAlien.cxx:1788 AliAnalysisAlien.cxx:1789 AliAnalysisAlien.cxx:1790 AliAnalysisAlien.cxx:1791 AliAnalysisAlien.cxx:1792 AliAnalysisAlien.cxx:1793 AliAnalysisAlien.cxx:1794 AliAnalysisAlien.cxx:1795 AliAnalysisAlien.cxx:1796 AliAnalysisAlien.cxx:1797 AliAnalysisAlien.cxx:1798 AliAnalysisAlien.cxx:1799 AliAnalysisAlien.cxx:1800 AliAnalysisAlien.cxx:1801 AliAnalysisAlien.cxx:1802 AliAnalysisAlien.cxx:1803 AliAnalysisAlien.cxx:1804 AliAnalysisAlien.cxx:1805 AliAnalysisAlien.cxx:1806 AliAnalysisAlien.cxx:1807 AliAnalysisAlien.cxx:1808 AliAnalysisAlien.cxx:1809 AliAnalysisAlien.cxx:1810 AliAnalysisAlien.cxx:1811 AliAnalysisAlien.cxx:1812 AliAnalysisAlien.cxx:1813 AliAnalysisAlien.cxx:1814 AliAnalysisAlien.cxx:1815 AliAnalysisAlien.cxx:1816 AliAnalysisAlien.cxx:1817 AliAnalysisAlien.cxx:1818 AliAnalysisAlien.cxx:1819 AliAnalysisAlien.cxx:1820 AliAnalysisAlien.cxx:1821 AliAnalysisAlien.cxx:1822 AliAnalysisAlien.cxx:1823 AliAnalysisAlien.cxx:1824 AliAnalysisAlien.cxx:1825 AliAnalysisAlien.cxx:1826 AliAnalysisAlien.cxx:1827 AliAnalysisAlien.cxx:1828 AliAnalysisAlien.cxx:1829 AliAnalysisAlien.cxx:1830 AliAnalysisAlien.cxx:1831 AliAnalysisAlien.cxx:1832 AliAnalysisAlien.cxx:1833 AliAnalysisAlien.cxx:1834 AliAnalysisAlien.cxx:1835 AliAnalysisAlien.cxx:1836 AliAnalysisAlien.cxx:1837 AliAnalysisAlien.cxx:1838 AliAnalysisAlien.cxx:1839 AliAnalysisAlien.cxx:1840 AliAnalysisAlien.cxx:1841 AliAnalysisAlien.cxx:1842 AliAnalysisAlien.cxx:1843 AliAnalysisAlien.cxx:1844 AliAnalysisAlien.cxx:1845 AliAnalysisAlien.cxx:1846 AliAnalysisAlien.cxx:1847 AliAnalysisAlien.cxx:1848 AliAnalysisAlien.cxx:1849 AliAnalysisAlien.cxx:1850 AliAnalysisAlien.cxx:1851 AliAnalysisAlien.cxx:1852 AliAnalysisAlien.cxx:1853 AliAnalysisAlien.cxx:1854 AliAnalysisAlien.cxx:1855 AliAnalysisAlien.cxx:1856 AliAnalysisAlien.cxx:1857 AliAnalysisAlien.cxx:1858 AliAnalysisAlien.cxx:1859 AliAnalysisAlien.cxx:1860 AliAnalysisAlien.cxx:1861 AliAnalysisAlien.cxx:1862 AliAnalysisAlien.cxx:1863 AliAnalysisAlien.cxx:1864 AliAnalysisAlien.cxx:1865 AliAnalysisAlien.cxx:1866 AliAnalysisAlien.cxx:1867 AliAnalysisAlien.cxx:1868 AliAnalysisAlien.cxx:1869 AliAnalysisAlien.cxx:1870 AliAnalysisAlien.cxx:1871 AliAnalysisAlien.cxx:1872 AliAnalysisAlien.cxx:1873 AliAnalysisAlien.cxx:1874 AliAnalysisAlien.cxx:1875 AliAnalysisAlien.cxx:1876 AliAnalysisAlien.cxx:1877 AliAnalysisAlien.cxx:1878 AliAnalysisAlien.cxx:1879 AliAnalysisAlien.cxx:1880 AliAnalysisAlien.cxx:1881 AliAnalysisAlien.cxx:1882 AliAnalysisAlien.cxx:1883 AliAnalysisAlien.cxx:1884 AliAnalysisAlien.cxx:1885 AliAnalysisAlien.cxx:1886 AliAnalysisAlien.cxx:1887 AliAnalysisAlien.cxx:1888 AliAnalysisAlien.cxx:1889 AliAnalysisAlien.cxx:1890 AliAnalysisAlien.cxx:1891 AliAnalysisAlien.cxx:1892 AliAnalysisAlien.cxx:1893 AliAnalysisAlien.cxx:1894 AliAnalysisAlien.cxx:1895 AliAnalysisAlien.cxx:1896 AliAnalysisAlien.cxx:1897 AliAnalysisAlien.cxx:1898 AliAnalysisAlien.cxx:1899 AliAnalysisAlien.cxx:1900 AliAnalysisAlien.cxx:1901 AliAnalysisAlien.cxx:1902 AliAnalysisAlien.cxx:1903 AliAnalysisAlien.cxx:1904 AliAnalysisAlien.cxx:1905 AliAnalysisAlien.cxx:1906 AliAnalysisAlien.cxx:1907 AliAnalysisAlien.cxx:1908 AliAnalysisAlien.cxx:1909 AliAnalysisAlien.cxx:1910 AliAnalysisAlien.cxx:1911 AliAnalysisAlien.cxx:1912 AliAnalysisAlien.cxx:1913 AliAnalysisAlien.cxx:1914 AliAnalysisAlien.cxx:1915 AliAnalysisAlien.cxx:1916 AliAnalysisAlien.cxx:1917 AliAnalysisAlien.cxx:1918 AliAnalysisAlien.cxx:1919 AliAnalysisAlien.cxx:1920 AliAnalysisAlien.cxx:1921 AliAnalysisAlien.cxx:1922 AliAnalysisAlien.cxx:1923 AliAnalysisAlien.cxx:1924 AliAnalysisAlien.cxx:1925 AliAnalysisAlien.cxx:1926 AliAnalysisAlien.cxx:1927 AliAnalysisAlien.cxx:1928 AliAnalysisAlien.cxx:1929 AliAnalysisAlien.cxx:1930 AliAnalysisAlien.cxx:1931 AliAnalysisAlien.cxx:1932 AliAnalysisAlien.cxx:1933 AliAnalysisAlien.cxx:1934 AliAnalysisAlien.cxx:1935 AliAnalysisAlien.cxx:1936 AliAnalysisAlien.cxx:1937 AliAnalysisAlien.cxx:1938 AliAnalysisAlien.cxx:1939 AliAnalysisAlien.cxx:1940 AliAnalysisAlien.cxx:1941 AliAnalysisAlien.cxx:1942 AliAnalysisAlien.cxx:1943 AliAnalysisAlien.cxx:1944 AliAnalysisAlien.cxx:1945 AliAnalysisAlien.cxx:1946 AliAnalysisAlien.cxx:1947 AliAnalysisAlien.cxx:1948 AliAnalysisAlien.cxx:1949 AliAnalysisAlien.cxx:1950 AliAnalysisAlien.cxx:1951 AliAnalysisAlien.cxx:1952 AliAnalysisAlien.cxx:1953 AliAnalysisAlien.cxx:1954 AliAnalysisAlien.cxx:1955 AliAnalysisAlien.cxx:1956 AliAnalysisAlien.cxx:1957 AliAnalysisAlien.cxx:1958 AliAnalysisAlien.cxx:1959 AliAnalysisAlien.cxx:1960 AliAnalysisAlien.cxx:1961 AliAnalysisAlien.cxx:1962 AliAnalysisAlien.cxx:1963 AliAnalysisAlien.cxx:1964 AliAnalysisAlien.cxx:1965 AliAnalysisAlien.cxx:1966 AliAnalysisAlien.cxx:1967 AliAnalysisAlien.cxx:1968 AliAnalysisAlien.cxx:1969 AliAnalysisAlien.cxx:1970 AliAnalysisAlien.cxx:1971 AliAnalysisAlien.cxx:1972 AliAnalysisAlien.cxx:1973 AliAnalysisAlien.cxx:1974 AliAnalysisAlien.cxx:1975 AliAnalysisAlien.cxx:1976 AliAnalysisAlien.cxx:1977 AliAnalysisAlien.cxx:1978 AliAnalysisAlien.cxx:1979 AliAnalysisAlien.cxx:1980 AliAnalysisAlien.cxx:1981 AliAnalysisAlien.cxx:1982 AliAnalysisAlien.cxx:1983 AliAnalysisAlien.cxx:1984 AliAnalysisAlien.cxx:1985 AliAnalysisAlien.cxx:1986 AliAnalysisAlien.cxx:1987 AliAnalysisAlien.cxx:1988 AliAnalysisAlien.cxx:1989 AliAnalysisAlien.cxx:1990 AliAnalysisAlien.cxx:1991 AliAnalysisAlien.cxx:1992 AliAnalysisAlien.cxx:1993 AliAnalysisAlien.cxx:1994 AliAnalysisAlien.cxx:1995 AliAnalysisAlien.cxx:1996 AliAnalysisAlien.cxx:1997 AliAnalysisAlien.cxx:1998 AliAnalysisAlien.cxx:1999 AliAnalysisAlien.cxx:2000 AliAnalysisAlien.cxx:2001 AliAnalysisAlien.cxx:2002 AliAnalysisAlien.cxx:2003 AliAnalysisAlien.cxx:2004 AliAnalysisAlien.cxx:2005 AliAnalysisAlien.cxx:2006 AliAnalysisAlien.cxx:2007 AliAnalysisAlien.cxx:2008 AliAnalysisAlien.cxx:2009 AliAnalysisAlien.cxx:2010 AliAnalysisAlien.cxx:2011 AliAnalysisAlien.cxx:2012 AliAnalysisAlien.cxx:2013 AliAnalysisAlien.cxx:2014 AliAnalysisAlien.cxx:2015 AliAnalysisAlien.cxx:2016 AliAnalysisAlien.cxx:2017 AliAnalysisAlien.cxx:2018 AliAnalysisAlien.cxx:2019 AliAnalysisAlien.cxx:2020 AliAnalysisAlien.cxx:2021 AliAnalysisAlien.cxx:2022 AliAnalysisAlien.cxx:2023 AliAnalysisAlien.cxx:2024 AliAnalysisAlien.cxx:2025 AliAnalysisAlien.cxx:2026 AliAnalysisAlien.cxx:2027 AliAnalysisAlien.cxx:2028 AliAnalysisAlien.cxx:2029 AliAnalysisAlien.cxx:2030 AliAnalysisAlien.cxx:2031 AliAnalysisAlien.cxx:2032 AliAnalysisAlien.cxx:2033 AliAnalysisAlien.cxx:2034 AliAnalysisAlien.cxx:2035 AliAnalysisAlien.cxx:2036 AliAnalysisAlien.cxx:2037 AliAnalysisAlien.cxx:2038 AliAnalysisAlien.cxx:2039 AliAnalysisAlien.cxx:2040 AliAnalysisAlien.cxx:2041 AliAnalysisAlien.cxx:2042 AliAnalysisAlien.cxx:2043 AliAnalysisAlien.cxx:2044 AliAnalysisAlien.cxx:2045 AliAnalysisAlien.cxx:2046 AliAnalysisAlien.cxx:2047 AliAnalysisAlien.cxx:2048 AliAnalysisAlien.cxx:2049 AliAnalysisAlien.cxx:2050 AliAnalysisAlien.cxx:2051 AliAnalysisAlien.cxx:2052 AliAnalysisAlien.cxx:2053 AliAnalysisAlien.cxx:2054 AliAnalysisAlien.cxx:2055 AliAnalysisAlien.cxx:2056 AliAnalysisAlien.cxx:2057 AliAnalysisAlien.cxx:2058 AliAnalysisAlien.cxx:2059 AliAnalysisAlien.cxx:2060 AliAnalysisAlien.cxx:2061 AliAnalysisAlien.cxx:2062 AliAnalysisAlien.cxx:2063 AliAnalysisAlien.cxx:2064 AliAnalysisAlien.cxx:2065 AliAnalysisAlien.cxx:2066 AliAnalysisAlien.cxx:2067 AliAnalysisAlien.cxx:2068 AliAnalysisAlien.cxx:2069 AliAnalysisAlien.cxx:2070 AliAnalysisAlien.cxx:2071 AliAnalysisAlien.cxx:2072 AliAnalysisAlien.cxx:2073 AliAnalysisAlien.cxx:2074 AliAnalysisAlien.cxx:2075 AliAnalysisAlien.cxx:2076 AliAnalysisAlien.cxx:2077 AliAnalysisAlien.cxx:2078 AliAnalysisAlien.cxx:2079 AliAnalysisAlien.cxx:2080 AliAnalysisAlien.cxx:2081 AliAnalysisAlien.cxx:2082 AliAnalysisAlien.cxx:2083 AliAnalysisAlien.cxx:2084 AliAnalysisAlien.cxx:2085 AliAnalysisAlien.cxx:2086 AliAnalysisAlien.cxx:2087 AliAnalysisAlien.cxx:2088 AliAnalysisAlien.cxx:2089 AliAnalysisAlien.cxx:2090 AliAnalysisAlien.cxx:2091 AliAnalysisAlien.cxx:2092 AliAnalysisAlien.cxx:2093 AliAnalysisAlien.cxx:2094 AliAnalysisAlien.cxx:2095 AliAnalysisAlien.cxx:2096 AliAnalysisAlien.cxx:2097 AliAnalysisAlien.cxx:2098 AliAnalysisAlien.cxx:2099 AliAnalysisAlien.cxx:2100 AliAnalysisAlien.cxx:2101 AliAnalysisAlien.cxx:2102 AliAnalysisAlien.cxx:2103 AliAnalysisAlien.cxx:2104 AliAnalysisAlien.cxx:2105 AliAnalysisAlien.cxx:2106 AliAnalysisAlien.cxx:2107 AliAnalysisAlien.cxx:2108 AliAnalysisAlien.cxx:2109 AliAnalysisAlien.cxx:2110 AliAnalysisAlien.cxx:2111 AliAnalysisAlien.cxx:2112 AliAnalysisAlien.cxx:2113 AliAnalysisAlien.cxx:2114 AliAnalysisAlien.cxx:2115 AliAnalysisAlien.cxx:2116 AliAnalysisAlien.cxx:2117 AliAnalysisAlien.cxx:2118 AliAnalysisAlien.cxx:2119 AliAnalysisAlien.cxx:2120 AliAnalysisAlien.cxx:2121 AliAnalysisAlien.cxx:2122 AliAnalysisAlien.cxx:2123 AliAnalysisAlien.cxx:2124 AliAnalysisAlien.cxx:2125 AliAnalysisAlien.cxx:2126 AliAnalysisAlien.cxx:2127 AliAnalysisAlien.cxx:2128 AliAnalysisAlien.cxx:2129 AliAnalysisAlien.cxx:2130 AliAnalysisAlien.cxx:2131 AliAnalysisAlien.cxx:2132 AliAnalysisAlien.cxx:2133 AliAnalysisAlien.cxx:2134 AliAnalysisAlien.cxx:2135 AliAnalysisAlien.cxx:2136 AliAnalysisAlien.cxx:2137 AliAnalysisAlien.cxx:2138 AliAnalysisAlien.cxx:2139 AliAnalysisAlien.cxx:2140 AliAnalysisAlien.cxx:2141 AliAnalysisAlien.cxx:2142 AliAnalysisAlien.cxx:2143 AliAnalysisAlien.cxx:2144 AliAnalysisAlien.cxx:2145 AliAnalysisAlien.cxx:2146 AliAnalysisAlien.cxx:2147 AliAnalysisAlien.cxx:2148 AliAnalysisAlien.cxx:2149 AliAnalysisAlien.cxx:2150 AliAnalysisAlien.cxx:2151 AliAnalysisAlien.cxx:2152 AliAnalysisAlien.cxx:2153 AliAnalysisAlien.cxx:2154 AliAnalysisAlien.cxx:2155 AliAnalysisAlien.cxx:2156 AliAnalysisAlien.cxx:2157 AliAnalysisAlien.cxx:2158 AliAnalysisAlien.cxx:2159 AliAnalysisAlien.cxx:2160 AliAnalysisAlien.cxx:2161 AliAnalysisAlien.cxx:2162 AliAnalysisAlien.cxx:2163 AliAnalysisAlien.cxx:2164 AliAnalysisAlien.cxx:2165 AliAnalysisAlien.cxx:2166 AliAnalysisAlien.cxx:2167 AliAnalysisAlien.cxx:2168 AliAnalysisAlien.cxx:2169 AliAnalysisAlien.cxx:2170 AliAnalysisAlien.cxx:2171 AliAnalysisAlien.cxx:2172 AliAnalysisAlien.cxx:2173 AliAnalysisAlien.cxx:2174 AliAnalysisAlien.cxx:2175 AliAnalysisAlien.cxx:2176 AliAnalysisAlien.cxx:2177 AliAnalysisAlien.cxx:2178 AliAnalysisAlien.cxx:2179 AliAnalysisAlien.cxx:2180 AliAnalysisAlien.cxx:2181 AliAnalysisAlien.cxx:2182 AliAnalysisAlien.cxx:2183 AliAnalysisAlien.cxx:2184 AliAnalysisAlien.cxx:2185 AliAnalysisAlien.cxx:2186 AliAnalysisAlien.cxx:2187 AliAnalysisAlien.cxx:2188 AliAnalysisAlien.cxx:2189 AliAnalysisAlien.cxx:2190 AliAnalysisAlien.cxx:2191 AliAnalysisAlien.cxx:2192 AliAnalysisAlien.cxx:2193 AliAnalysisAlien.cxx:2194 AliAnalysisAlien.cxx:2195 AliAnalysisAlien.cxx:2196 AliAnalysisAlien.cxx:2197 AliAnalysisAlien.cxx:2198 AliAnalysisAlien.cxx:2199 AliAnalysisAlien.cxx:2200 AliAnalysisAlien.cxx:2201 AliAnalysisAlien.cxx:2202 AliAnalysisAlien.cxx:2203 AliAnalysisAlien.cxx:2204 AliAnalysisAlien.cxx:2205 AliAnalysisAlien.cxx:2206 AliAnalysisAlien.cxx:2207 AliAnalysisAlien.cxx:2208 AliAnalysisAlien.cxx:2209 AliAnalysisAlien.cxx:2210 AliAnalysisAlien.cxx:2211 AliAnalysisAlien.cxx:2212 AliAnalysisAlien.cxx:2213 AliAnalysisAlien.cxx:2214 AliAnalysisAlien.cxx:2215 AliAnalysisAlien.cxx:2216 AliAnalysisAlien.cxx:2217 AliAnalysisAlien.cxx:2218 AliAnalysisAlien.cxx:2219 AliAnalysisAlien.cxx:2220 AliAnalysisAlien.cxx:2221 AliAnalysisAlien.cxx:2222 AliAnalysisAlien.cxx:2223 AliAnalysisAlien.cxx:2224 AliAnalysisAlien.cxx:2225 AliAnalysisAlien.cxx:2226 AliAnalysisAlien.cxx:2227 AliAnalysisAlien.cxx:2228 AliAnalysisAlien.cxx:2229 AliAnalysisAlien.cxx:2230 AliAnalysisAlien.cxx:2231 AliAnalysisAlien.cxx:2232 AliAnalysisAlien.cxx:2233 AliAnalysisAlien.cxx:2234 AliAnalysisAlien.cxx:2235 AliAnalysisAlien.cxx:2236 AliAnalysisAlien.cxx:2237 AliAnalysisAlien.cxx:2238 AliAnalysisAlien.cxx:2239 AliAnalysisAlien.cxx:2240 AliAnalysisAlien.cxx:2241 AliAnalysisAlien.cxx:2242 AliAnalysisAlien.cxx:2243 AliAnalysisAlien.cxx:2244 AliAnalysisAlien.cxx:2245 AliAnalysisAlien.cxx:2246 AliAnalysisAlien.cxx:2247 AliAnalysisAlien.cxx:2248 AliAnalysisAlien.cxx:2249 AliAnalysisAlien.cxx:2250 AliAnalysisAlien.cxx:2251 AliAnalysisAlien.cxx:2252 AliAnalysisAlien.cxx:2253 AliAnalysisAlien.cxx:2254 AliAnalysisAlien.cxx:2255 AliAnalysisAlien.cxx:2256 AliAnalysisAlien.cxx:2257 AliAnalysisAlien.cxx:2258 AliAnalysisAlien.cxx:2259 AliAnalysisAlien.cxx:2260 AliAnalysisAlien.cxx:2261 AliAnalysisAlien.cxx:2262 AliAnalysisAlien.cxx:2263 AliAnalysisAlien.cxx:2264 AliAnalysisAlien.cxx:2265 AliAnalysisAlien.cxx:2266 AliAnalysisAlien.cxx:2267 AliAnalysisAlien.cxx:2268 AliAnalysisAlien.cxx:2269 AliAnalysisAlien.cxx:2270 AliAnalysisAlien.cxx:2271 AliAnalysisAlien.cxx:2272 AliAnalysisAlien.cxx:2273 AliAnalysisAlien.cxx:2274 AliAnalysisAlien.cxx:2275 AliAnalysisAlien.cxx:2276 AliAnalysisAlien.cxx:2277 AliAnalysisAlien.cxx:2278 AliAnalysisAlien.cxx:2279 AliAnalysisAlien.cxx:2280 AliAnalysisAlien.cxx:2281 AliAnalysisAlien.cxx:2282 AliAnalysisAlien.cxx:2283 AliAnalysisAlien.cxx:2284 AliAnalysisAlien.cxx:2285 AliAnalysisAlien.cxx:2286 AliAnalysisAlien.cxx:2287 AliAnalysisAlien.cxx:2288 AliAnalysisAlien.cxx:2289 AliAnalysisAlien.cxx:2290 AliAnalysisAlien.cxx:2291 AliAnalysisAlien.cxx:2292 AliAnalysisAlien.cxx:2293 AliAnalysisAlien.cxx:2294 AliAnalysisAlien.cxx:2295 AliAnalysisAlien.cxx:2296 AliAnalysisAlien.cxx:2297 AliAnalysisAlien.cxx:2298 AliAnalysisAlien.cxx:2299 AliAnalysisAlien.cxx:2300 AliAnalysisAlien.cxx:2301 AliAnalysisAlien.cxx:2302 AliAnalysisAlien.cxx:2303 AliAnalysisAlien.cxx:2304 AliAnalysisAlien.cxx:2305 AliAnalysisAlien.cxx:2306 AliAnalysisAlien.cxx:2307 AliAnalysisAlien.cxx:2308 AliAnalysisAlien.cxx:2309 AliAnalysisAlien.cxx:2310 AliAnalysisAlien.cxx:2311 AliAnalysisAlien.cxx:2312 AliAnalysisAlien.cxx:2313 AliAnalysisAlien.cxx:2314 AliAnalysisAlien.cxx:2315 AliAnalysisAlien.cxx:2316 AliAnalysisAlien.cxx:2317 AliAnalysisAlien.cxx:2318 AliAnalysisAlien.cxx:2319 AliAnalysisAlien.cxx:2320 AliAnalysisAlien.cxx:2321 AliAnalysisAlien.cxx:2322 AliAnalysisAlien.cxx:2323 AliAnalysisAlien.cxx:2324 AliAnalysisAlien.cxx:2325 AliAnalysisAlien.cxx:2326 AliAnalysisAlien.cxx:2327 AliAnalysisAlien.cxx:2328 AliAnalysisAlien.cxx:2329 AliAnalysisAlien.cxx:2330 AliAnalysisAlien.cxx:2331 AliAnalysisAlien.cxx:2332 AliAnalysisAlien.cxx:2333 AliAnalysisAlien.cxx:2334 AliAnalysisAlien.cxx:2335 AliAnalysisAlien.cxx:2336 AliAnalysisAlien.cxx:2337 AliAnalysisAlien.cxx:2338 AliAnalysisAlien.cxx:2339 AliAnalysisAlien.cxx:2340 AliAnalysisAlien.cxx:2341 AliAnalysisAlien.cxx:2342 AliAnalysisAlien.cxx:2343 AliAnalysisAlien.cxx:2344 AliAnalysisAlien.cxx:2345 AliAnalysisAlien.cxx:2346 AliAnalysisAlien.cxx:2347 AliAnalysisAlien.cxx:2348 AliAnalysisAlien.cxx:2349 AliAnalysisAlien.cxx:2350 AliAnalysisAlien.cxx:2351 AliAnalysisAlien.cxx:2352 AliAnalysisAlien.cxx:2353 AliAnalysisAlien.cxx:2354 AliAnalysisAlien.cxx:2355 AliAnalysisAlien.cxx:2356 AliAnalysisAlien.cxx:2357 AliAnalysisAlien.cxx:2358 AliAnalysisAlien.cxx:2359 AliAnalysisAlien.cxx:2360 AliAnalysisAlien.cxx:2361 AliAnalysisAlien.cxx:2362 AliAnalysisAlien.cxx:2363 AliAnalysisAlien.cxx:2364 AliAnalysisAlien.cxx:2365 AliAnalysisAlien.cxx:2366 AliAnalysisAlien.cxx:2367 AliAnalysisAlien.cxx:2368 AliAnalysisAlien.cxx:2369 AliAnalysisAlien.cxx:2370 AliAnalysisAlien.cxx:2371 AliAnalysisAlien.cxx:2372 AliAnalysisAlien.cxx:2373 AliAnalysisAlien.cxx:2374 AliAnalysisAlien.cxx:2375 AliAnalysisAlien.cxx:2376 AliAnalysisAlien.cxx:2377 AliAnalysisAlien.cxx:2378 AliAnalysisAlien.cxx:2379 AliAnalysisAlien.cxx:2380 AliAnalysisAlien.cxx:2381 AliAnalysisAlien.cxx:2382 AliAnalysisAlien.cxx:2383 AliAnalysisAlien.cxx:2384 AliAnalysisAlien.cxx:2385 AliAnalysisAlien.cxx:2386 AliAnalysisAlien.cxx:2387 AliAnalysisAlien.cxx:2388 AliAnalysisAlien.cxx:2389 AliAnalysisAlien.cxx:2390 AliAnalysisAlien.cxx:2391 AliAnalysisAlien.cxx:2392 AliAnalysisAlien.cxx:2393 AliAnalysisAlien.cxx:2394 AliAnalysisAlien.cxx:2395 AliAnalysisAlien.cxx:2396 AliAnalysisAlien.cxx:2397 AliAnalysisAlien.cxx:2398 AliAnalysisAlien.cxx:2399 AliAnalysisAlien.cxx:2400 AliAnalysisAlien.cxx:2401 AliAnalysisAlien.cxx:2402 AliAnalysisAlien.cxx:2403 AliAnalysisAlien.cxx:2404 AliAnalysisAlien.cxx:2405 AliAnalysisAlien.cxx:2406 AliAnalysisAlien.cxx:2407 AliAnalysisAlien.cxx:2408 AliAnalysisAlien.cxx:2409 AliAnalysisAlien.cxx:2410 AliAnalysisAlien.cxx:2411 AliAnalysisAlien.cxx:2412 AliAnalysisAlien.cxx:2413 AliAnalysisAlien.cxx:2414 AliAnalysisAlien.cxx:2415 AliAnalysisAlien.cxx:2416 AliAnalysisAlien.cxx:2417 AliAnalysisAlien.cxx:2418 AliAnalysisAlien.cxx:2419 AliAnalysisAlien.cxx:2420 AliAnalysisAlien.cxx:2421 AliAnalysisAlien.cxx:2422 AliAnalysisAlien.cxx:2423 AliAnalysisAlien.cxx:2424 AliAnalysisAlien.cxx:2425 AliAnalysisAlien.cxx:2426 AliAnalysisAlien.cxx:2427 AliAnalysisAlien.cxx:2428 AliAnalysisAlien.cxx:2429 AliAnalysisAlien.cxx:2430 AliAnalysisAlien.cxx:2431 AliAnalysisAlien.cxx:2432 AliAnalysisAlien.cxx:2433 AliAnalysisAlien.cxx:2434 AliAnalysisAlien.cxx:2435 AliAnalysisAlien.cxx:2436 AliAnalysisAlien.cxx:2437 AliAnalysisAlien.cxx:2438 AliAnalysisAlien.cxx:2439 AliAnalysisAlien.cxx:2440 AliAnalysisAlien.cxx:2441 AliAnalysisAlien.cxx:2442 AliAnalysisAlien.cxx:2443 AliAnalysisAlien.cxx:2444 AliAnalysisAlien.cxx:2445 AliAnalysisAlien.cxx:2446 AliAnalysisAlien.cxx:2447 AliAnalysisAlien.cxx:2448 AliAnalysisAlien.cxx:2449 AliAnalysisAlien.cxx:2450 AliAnalysisAlien.cxx:2451 AliAnalysisAlien.cxx:2452 AliAnalysisAlien.cxx:2453 AliAnalysisAlien.cxx:2454 AliAnalysisAlien.cxx:2455 AliAnalysisAlien.cxx:2456 AliAnalysisAlien.cxx:2457 AliAnalysisAlien.cxx:2458 AliAnalysisAlien.cxx:2459 AliAnalysisAlien.cxx:2460 AliAnalysisAlien.cxx:2461 AliAnalysisAlien.cxx:2462 AliAnalysisAlien.cxx:2463 AliAnalysisAlien.cxx:2464 AliAnalysisAlien.cxx:2465 AliAnalysisAlien.cxx:2466 AliAnalysisAlien.cxx:2467 AliAnalysisAlien.cxx:2468 AliAnalysisAlien.cxx:2469 AliAnalysisAlien.cxx:2470 AliAnalysisAlien.cxx:2471 AliAnalysisAlien.cxx:2472 AliAnalysisAlien.cxx:2473 AliAnalysisAlien.cxx:2474 AliAnalysisAlien.cxx:2475 AliAnalysisAlien.cxx:2476 AliAnalysisAlien.cxx:2477 AliAnalysisAlien.cxx:2478 AliAnalysisAlien.cxx:2479 AliAnalysisAlien.cxx:2480 AliAnalysisAlien.cxx:2481 AliAnalysisAlien.cxx:2482 AliAnalysisAlien.cxx:2483 AliAnalysisAlien.cxx:2484 AliAnalysisAlien.cxx:2485 AliAnalysisAlien.cxx:2486 AliAnalysisAlien.cxx:2487 AliAnalysisAlien.cxx:2488 AliAnalysisAlien.cxx:2489 AliAnalysisAlien.cxx:2490 AliAnalysisAlien.cxx:2491 AliAnalysisAlien.cxx:2492 AliAnalysisAlien.cxx:2493 AliAnalysisAlien.cxx:2494 AliAnalysisAlien.cxx:2495 AliAnalysisAlien.cxx:2496 AliAnalysisAlien.cxx:2497 AliAnalysisAlien.cxx:2498 AliAnalysisAlien.cxx:2499 AliAnalysisAlien.cxx:2500 AliAnalysisAlien.cxx:2501 AliAnalysisAlien.cxx:2502 AliAnalysisAlien.cxx:2503 AliAnalysisAlien.cxx:2504 AliAnalysisAlien.cxx:2505 AliAnalysisAlien.cxx:2506 AliAnalysisAlien.cxx:2507 AliAnalysisAlien.cxx:2508 AliAnalysisAlien.cxx:2509 AliAnalysisAlien.cxx:2510 AliAnalysisAlien.cxx:2511 AliAnalysisAlien.cxx:2512 AliAnalysisAlien.cxx:2513 AliAnalysisAlien.cxx:2514 AliAnalysisAlien.cxx:2515 AliAnalysisAlien.cxx:2516 AliAnalysisAlien.cxx:2517 AliAnalysisAlien.cxx:2518 AliAnalysisAlien.cxx:2519 AliAnalysisAlien.cxx:2520 AliAnalysisAlien.cxx:2521 AliAnalysisAlien.cxx:2522 AliAnalysisAlien.cxx:2523 AliAnalysisAlien.cxx:2524 AliAnalysisAlien.cxx:2525 AliAnalysisAlien.cxx:2526 AliAnalysisAlien.cxx:2527 AliAnalysisAlien.cxx:2528 AliAnalysisAlien.cxx:2529 AliAnalysisAlien.cxx:2530 AliAnalysisAlien.cxx:2531 AliAnalysisAlien.cxx:2532 AliAnalysisAlien.cxx:2533 AliAnalysisAlien.cxx:2534 AliAnalysisAlien.cxx:2535 AliAnalysisAlien.cxx:2536 AliAnalysisAlien.cxx:2537 AliAnalysisAlien.cxx:2538 AliAnalysisAlien.cxx:2539 AliAnalysisAlien.cxx:2540 AliAnalysisAlien.cxx:2541 AliAnalysisAlien.cxx:2542 AliAnalysisAlien.cxx:2543 AliAnalysisAlien.cxx:2544 AliAnalysisAlien.cxx:2545 AliAnalysisAlien.cxx:2546 AliAnalysisAlien.cxx:2547 AliAnalysisAlien.cxx:2548 AliAnalysisAlien.cxx:2549 AliAnalysisAlien.cxx:2550 AliAnalysisAlien.cxx:2551 AliAnalysisAlien.cxx:2552 AliAnalysisAlien.cxx:2553 AliAnalysisAlien.cxx:2554 AliAnalysisAlien.cxx:2555 AliAnalysisAlien.cxx:2556 AliAnalysisAlien.cxx:2557 AliAnalysisAlien.cxx:2558 AliAnalysisAlien.cxx:2559 AliAnalysisAlien.cxx:2560 AliAnalysisAlien.cxx:2561 AliAnalysisAlien.cxx:2562 AliAnalysisAlien.cxx:2563 AliAnalysisAlien.cxx:2564 AliAnalysisAlien.cxx:2565 AliAnalysisAlien.cxx:2566 AliAnalysisAlien.cxx:2567 AliAnalysisAlien.cxx:2568 AliAnalysisAlien.cxx:2569 AliAnalysisAlien.cxx:2570 AliAnalysisAlien.cxx:2571 AliAnalysisAlien.cxx:2572 AliAnalysisAlien.cxx:2573 AliAnalysisAlien.cxx:2574 AliAnalysisAlien.cxx:2575 AliAnalysisAlien.cxx:2576 AliAnalysisAlien.cxx:2577 AliAnalysisAlien.cxx:2578 AliAnalysisAlien.cxx:2579 AliAnalysisAlien.cxx:2580 AliAnalysisAlien.cxx:2581 AliAnalysisAlien.cxx:2582 AliAnalysisAlien.cxx:2583 AliAnalysisAlien.cxx:2584 AliAnalysisAlien.cxx:2585 AliAnalysisAlien.cxx:2586 AliAnalysisAlien.cxx:2587 AliAnalysisAlien.cxx:2588 AliAnalysisAlien.cxx:2589 AliAnalysisAlien.cxx:2590 AliAnalysisAlien.cxx:2591 AliAnalysisAlien.cxx:2592 AliAnalysisAlien.cxx:2593 AliAnalysisAlien.cxx:2594 AliAnalysisAlien.cxx:2595 AliAnalysisAlien.cxx:2596 AliAnalysisAlien.cxx:2597 AliAnalysisAlien.cxx:2598 AliAnalysisAlien.cxx:2599 AliAnalysisAlien.cxx:2600 AliAnalysisAlien.cxx:2601 AliAnalysisAlien.cxx:2602 AliAnalysisAlien.cxx:2603 AliAnalysisAlien.cxx:2604 AliAnalysisAlien.cxx:2605 AliAnalysisAlien.cxx:2606 AliAnalysisAlien.cxx:2607 AliAnalysisAlien.cxx:2608 AliAnalysisAlien.cxx:2609 AliAnalysisAlien.cxx:2610 AliAnalysisAlien.cxx:2611 AliAnalysisAlien.cxx:2612 AliAnalysisAlien.cxx:2613 AliAnalysisAlien.cxx:2614 AliAnalysisAlien.cxx:2615 AliAnalysisAlien.cxx:2616 AliAnalysisAlien.cxx:2617 AliAnalysisAlien.cxx:2618 AliAnalysisAlien.cxx:2619 AliAnalysisAlien.cxx:2620 AliAnalysisAlien.cxx:2621 AliAnalysisAlien.cxx:2622 AliAnalysisAlien.cxx:2623 AliAnalysisAlien.cxx:2624 AliAnalysisAlien.cxx:2625 AliAnalysisAlien.cxx:2626 AliAnalysisAlien.cxx:2627 AliAnalysisAlien.cxx:2628 AliAnalysisAlien.cxx:2629 AliAnalysisAlien.cxx:2630 AliAnalysisAlien.cxx:2631 AliAnalysisAlien.cxx:2632 AliAnalysisAlien.cxx:2633 AliAnalysisAlien.cxx:2634 AliAnalysisAlien.cxx:2635 AliAnalysisAlien.cxx:2636 AliAnalysisAlien.cxx:2637 AliAnalysisAlien.cxx:2638 AliAnalysisAlien.cxx:2639 AliAnalysisAlien.cxx:2640 AliAnalysisAlien.cxx:2641 AliAnalysisAlien.cxx:2642 AliAnalysisAlien.cxx:2643 AliAnalysisAlien.cxx:2644 AliAnalysisAlien.cxx:2645 AliAnalysisAlien.cxx:2646 AliAnalysisAlien.cxx:2647 AliAnalysisAlien.cxx:2648 AliAnalysisAlien.cxx:2649 AliAnalysisAlien.cxx:2650 AliAnalysisAlien.cxx:2651 AliAnalysisAlien.cxx:2652 AliAnalysisAlien.cxx:2653 AliAnalysisAlien.cxx:2654 AliAnalysisAlien.cxx:2655 AliAnalysisAlien.cxx:2656 AliAnalysisAlien.cxx:2657 AliAnalysisAlien.cxx:2658 AliAnalysisAlien.cxx:2659 AliAnalysisAlien.cxx:2660 AliAnalysisAlien.cxx:2661 AliAnalysisAlien.cxx:2662 AliAnalysisAlien.cxx:2663 AliAnalysisAlien.cxx:2664 AliAnalysisAlien.cxx:2665 AliAnalysisAlien.cxx:2666 AliAnalysisAlien.cxx:2667 AliAnalysisAlien.cxx:2668 AliAnalysisAlien.cxx:2669 AliAnalysisAlien.cxx:2670 AliAnalysisAlien.cxx:2671 AliAnalysisAlien.cxx:2672 AliAnalysisAlien.cxx:2673 AliAnalysisAlien.cxx:2674 AliAnalysisAlien.cxx:2675 AliAnalysisAlien.cxx:2676 AliAnalysisAlien.cxx:2677 AliAnalysisAlien.cxx:2678 AliAnalysisAlien.cxx:2679 AliAnalysisAlien.cxx:2680 AliAnalysisAlien.cxx:2681 AliAnalysisAlien.cxx:2682 AliAnalysisAlien.cxx:2683 AliAnalysisAlien.cxx:2684 AliAnalysisAlien.cxx:2685 AliAnalysisAlien.cxx:2686 AliAnalysisAlien.cxx:2687 AliAnalysisAlien.cxx:2688 AliAnalysisAlien.cxx:2689 AliAnalysisAlien.cxx:2690 AliAnalysisAlien.cxx:2691 AliAnalysisAlien.cxx:2692 AliAnalysisAlien.cxx:2693 AliAnalysisAlien.cxx:2694 AliAnalysisAlien.cxx:2695 AliAnalysisAlien.cxx:2696 AliAnalysisAlien.cxx:2697 AliAnalysisAlien.cxx:2698 AliAnalysisAlien.cxx:2699 AliAnalysisAlien.cxx:2700 AliAnalysisAlien.cxx:2701 AliAnalysisAlien.cxx:2702 AliAnalysisAlien.cxx:2703 AliAnalysisAlien.cxx:2704 AliAnalysisAlien.cxx:2705 AliAnalysisAlien.cxx:2706 AliAnalysisAlien.cxx:2707 AliAnalysisAlien.cxx:2708 AliAnalysisAlien.cxx:2709 AliAnalysisAlien.cxx:2710 AliAnalysisAlien.cxx:2711 AliAnalysisAlien.cxx:2712 AliAnalysisAlien.cxx:2713 AliAnalysisAlien.cxx:2714 AliAnalysisAlien.cxx:2715 AliAnalysisAlien.cxx:2716 AliAnalysisAlien.cxx:2717 AliAnalysisAlien.cxx:2718 AliAnalysisAlien.cxx:2719 AliAnalysisAlien.cxx:2720 AliAnalysisAlien.cxx:2721 AliAnalysisAlien.cxx:2722 AliAnalysisAlien.cxx:2723 AliAnalysisAlien.cxx:2724 AliAnalysisAlien.cxx:2725 AliAnalysisAlien.cxx:2726 AliAnalysisAlien.cxx:2727 AliAnalysisAlien.cxx:2728 AliAnalysisAlien.cxx:2729 AliAnalysisAlien.cxx:2730 AliAnalysisAlien.cxx:2731 AliAnalysisAlien.cxx:2732 AliAnalysisAlien.cxx:2733 AliAnalysisAlien.cxx:2734 AliAnalysisAlien.cxx:2735 AliAnalysisAlien.cxx:2736 AliAnalysisAlien.cxx:2737 AliAnalysisAlien.cxx:2738 AliAnalysisAlien.cxx:2739 AliAnalysisAlien.cxx:2740 AliAnalysisAlien.cxx:2741 AliAnalysisAlien.cxx:2742 AliAnalysisAlien.cxx:2743 AliAnalysisAlien.cxx:2744 AliAnalysisAlien.cxx:2745 AliAnalysisAlien.cxx:2746 AliAnalysisAlien.cxx:2747 AliAnalysisAlien.cxx:2748 AliAnalysisAlien.cxx:2749 AliAnalysisAlien.cxx:2750 AliAnalysisAlien.cxx:2751 AliAnalysisAlien.cxx:2752 AliAnalysisAlien.cxx:2753 AliAnalysisAlien.cxx:2754 AliAnalysisAlien.cxx:2755 AliAnalysisAlien.cxx:2756 AliAnalysisAlien.cxx:2757 AliAnalysisAlien.cxx:2758 AliAnalysisAlien.cxx:2759 AliAnalysisAlien.cxx:2760 AliAnalysisAlien.cxx:2761 AliAnalysisAlien.cxx:2762 AliAnalysisAlien.cxx:2763 AliAnalysisAlien.cxx:2764 AliAnalysisAlien.cxx:2765 AliAnalysisAlien.cxx:2766 AliAnalysisAlien.cxx:2767 AliAnalysisAlien.cxx:2768 AliAnalysisAlien.cxx:2769 AliAnalysisAlien.cxx:2770 AliAnalysisAlien.cxx:2771 AliAnalysisAlien.cxx:2772 AliAnalysisAlien.cxx:2773 AliAnalysisAlien.cxx:2774 AliAnalysisAlien.cxx:2775 AliAnalysisAlien.cxx:2776 AliAnalysisAlien.cxx:2777 AliAnalysisAlien.cxx:2778 AliAnalysisAlien.cxx:2779 AliAnalysisAlien.cxx:2780 AliAnalysisAlien.cxx:2781 AliAnalysisAlien.cxx:2782 AliAnalysisAlien.cxx:2783 AliAnalysisAlien.cxx:2784 AliAnalysisAlien.cxx:2785 AliAnalysisAlien.cxx:2786 AliAnalysisAlien.cxx:2787 AliAnalysisAlien.cxx:2788 AliAnalysisAlien.cxx:2789 AliAnalysisAlien.cxx:2790 AliAnalysisAlien.cxx:2791 AliAnalysisAlien.cxx:2792 AliAnalysisAlien.cxx:2793 AliAnalysisAlien.cxx:2794 AliAnalysisAlien.cxx:2795 AliAnalysisAlien.cxx:2796 AliAnalysisAlien.cxx:2797 AliAnalysisAlien.cxx:2798 AliAnalysisAlien.cxx:2799 AliAnalysisAlien.cxx:2800 AliAnalysisAlien.cxx:2801 AliAnalysisAlien.cxx:2802 AliAnalysisAlien.cxx:2803 AliAnalysisAlien.cxx:2804 AliAnalysisAlien.cxx:2805 AliAnalysisAlien.cxx:2806 AliAnalysisAlien.cxx:2807 AliAnalysisAlien.cxx:2808 AliAnalysisAlien.cxx:2809 AliAnalysisAlien.cxx:2810 AliAnalysisAlien.cxx:2811 AliAnalysisAlien.cxx:2812 AliAnalysisAlien.cxx:2813 AliAnalysisAlien.cxx:2814 AliAnalysisAlien.cxx:2815 AliAnalysisAlien.cxx:2816 AliAnalysisAlien.cxx:2817 AliAnalysisAlien.cxx:2818 AliAnalysisAlien.cxx:2819 AliAnalysisAlien.cxx:2820 AliAnalysisAlien.cxx:2821 AliAnalysisAlien.cxx:2822 AliAnalysisAlien.cxx:2823 AliAnalysisAlien.cxx:2824 AliAnalysisAlien.cxx:2825 AliAnalysisAlien.cxx:2826 AliAnalysisAlien.cxx:2827 AliAnalysisAlien.cxx:2828 AliAnalysisAlien.cxx:2829 AliAnalysisAlien.cxx:2830 AliAnalysisAlien.cxx:2831 AliAnalysisAlien.cxx:2832 AliAnalysisAlien.cxx:2833 AliAnalysisAlien.cxx:2834 AliAnalysisAlien.cxx:2835 AliAnalysisAlien.cxx:2836 AliAnalysisAlien.cxx:2837 AliAnalysisAlien.cxx:2838 AliAnalysisAlien.cxx:2839 AliAnalysisAlien.cxx:2840 AliAnalysisAlien.cxx:2841 AliAnalysisAlien.cxx:2842 AliAnalysisAlien.cxx:2843 AliAnalysisAlien.cxx:2844 AliAnalysisAlien.cxx:2845 AliAnalysisAlien.cxx:2846 AliAnalysisAlien.cxx:2847 AliAnalysisAlien.cxx:2848 AliAnalysisAlien.cxx:2849 AliAnalysisAlien.cxx:2850 AliAnalysisAlien.cxx:2851 AliAnalysisAlien.cxx:2852 AliAnalysisAlien.cxx:2853 AliAnalysisAlien.cxx:2854 AliAnalysisAlien.cxx:2855 AliAnalysisAlien.cxx:2856 AliAnalysisAlien.cxx:2857 AliAnalysisAlien.cxx:2858 AliAnalysisAlien.cxx:2859 AliAnalysisAlien.cxx:2860 AliAnalysisAlien.cxx:2861 AliAnalysisAlien.cxx:2862 AliAnalysisAlien.cxx:2863 AliAnalysisAlien.cxx:2864 AliAnalysisAlien.cxx:2865 AliAnalysisAlien.cxx:2866 AliAnalysisAlien.cxx:2867 AliAnalysisAlien.cxx:2868 AliAnalysisAlien.cxx:2869 AliAnalysisAlien.cxx:2870 AliAnalysisAlien.cxx:2871 AliAnalysisAlien.cxx:2872 AliAnalysisAlien.cxx:2873 AliAnalysisAlien.cxx:2874 AliAnalysisAlien.cxx:2875 AliAnalysisAlien.cxx:2876 AliAnalysisAlien.cxx:2877 AliAnalysisAlien.cxx:2878 AliAnalysisAlien.cxx:2879 AliAnalysisAlien.cxx:2880 AliAnalysisAlien.cxx:2881 AliAnalysisAlien.cxx:2882 AliAnalysisAlien.cxx:2883 AliAnalysisAlien.cxx:2884 AliAnalysisAlien.cxx:2885 AliAnalysisAlien.cxx:2886 AliAnalysisAlien.cxx:2887 AliAnalysisAlien.cxx:2888 AliAnalysisAlien.cxx:2889 AliAnalysisAlien.cxx:2890 AliAnalysisAlien.cxx:2891 AliAnalysisAlien.cxx:2892 AliAnalysisAlien.cxx:2893 AliAnalysisAlien.cxx:2894 AliAnalysisAlien.cxx:2895 AliAnalysisAlien.cxx:2896 AliAnalysisAlien.cxx:2897 AliAnalysisAlien.cxx:2898 AliAnalysisAlien.cxx:2899 AliAnalysisAlien.cxx:2900 AliAnalysisAlien.cxx:2901 AliAnalysisAlien.cxx:2902 AliAnalysisAlien.cxx:2903 AliAnalysisAlien.cxx:2904 AliAnalysisAlien.cxx:2905 AliAnalysisAlien.cxx:2906 AliAnalysisAlien.cxx:2907 AliAnalysisAlien.cxx:2908 AliAnalysisAlien.cxx:2909 AliAnalysisAlien.cxx:2910 AliAnalysisAlien.cxx:2911 AliAnalysisAlien.cxx:2912 AliAnalysisAlien.cxx:2913 AliAnalysisAlien.cxx:2914 AliAnalysisAlien.cxx:2915 AliAnalysisAlien.cxx:2916 AliAnalysisAlien.cxx:2917 AliAnalysisAlien.cxx:2918 AliAnalysisAlien.cxx:2919 AliAnalysisAlien.cxx:2920 AliAnalysisAlien.cxx:2921 AliAnalysisAlien.cxx:2922 AliAnalysisAlien.cxx:2923 AliAnalysisAlien.cxx:2924 AliAnalysisAlien.cxx:2925 AliAnalysisAlien.cxx:2926 AliAnalysisAlien.cxx:2927 AliAnalysisAlien.cxx:2928 AliAnalysisAlien.cxx:2929 AliAnalysisAlien.cxx:2930 AliAnalysisAlien.cxx:2931 AliAnalysisAlien.cxx:2932 AliAnalysisAlien.cxx:2933 AliAnalysisAlien.cxx:2934 AliAnalysisAlien.cxx:2935 AliAnalysisAlien.cxx:2936 AliAnalysisAlien.cxx:2937 AliAnalysisAlien.cxx:2938 AliAnalysisAlien.cxx:2939 AliAnalysisAlien.cxx:2940 AliAnalysisAlien.cxx:2941 AliAnalysisAlien.cxx:2942 AliAnalysisAlien.cxx:2943 AliAnalysisAlien.cxx:2944 AliAnalysisAlien.cxx:2945 AliAnalysisAlien.cxx:2946 AliAnalysisAlien.cxx:2947 AliAnalysisAlien.cxx:2948 AliAnalysisAlien.cxx:2949 AliAnalysisAlien.cxx:2950 AliAnalysisAlien.cxx:2951 AliAnalysisAlien.cxx:2952 AliAnalysisAlien.cxx:2953 AliAnalysisAlien.cxx:2954 AliAnalysisAlien.cxx:2955 AliAnalysisAlien.cxx:2956 AliAnalysisAlien.cxx:2957 AliAnalysisAlien.cxx:2958 AliAnalysisAlien.cxx:2959 AliAnalysisAlien.cxx:2960 AliAnalysisAlien.cxx:2961 AliAnalysisAlien.cxx:2962 AliAnalysisAlien.cxx:2963 AliAnalysisAlien.cxx:2964 AliAnalysisAlien.cxx:2965 AliAnalysisAlien.cxx:2966 AliAnalysisAlien.cxx:2967 AliAnalysisAlien.cxx:2968 AliAnalysisAlien.cxx:2969 AliAnalysisAlien.cxx:2970 AliAnalysisAlien.cxx:2971 AliAnalysisAlien.cxx:2972 AliAnalysisAlien.cxx:2973 AliAnalysisAlien.cxx:2974 AliAnalysisAlien.cxx:2975 AliAnalysisAlien.cxx:2976 AliAnalysisAlien.cxx:2977 AliAnalysisAlien.cxx:2978 AliAnalysisAlien.cxx:2979 AliAnalysisAlien.cxx:2980 AliAnalysisAlien.cxx:2981 AliAnalysisAlien.cxx:2982 AliAnalysisAlien.cxx:2983 AliAnalysisAlien.cxx:2984 AliAnalysisAlien.cxx:2985 AliAnalysisAlien.cxx:2986 AliAnalysisAlien.cxx:2987 AliAnalysisAlien.cxx:2988 AliAnalysisAlien.cxx:2989 AliAnalysisAlien.cxx:2990 AliAnalysisAlien.cxx:2991 AliAnalysisAlien.cxx:2992 AliAnalysisAlien.cxx:2993 AliAnalysisAlien.cxx:2994 AliAnalysisAlien.cxx:2995 AliAnalysisAlien.cxx:2996 AliAnalysisAlien.cxx:2997 AliAnalysisAlien.cxx:2998 AliAnalysisAlien.cxx:2999 AliAnalysisAlien.cxx:3000 AliAnalysisAlien.cxx:3001 AliAnalysisAlien.cxx:3002 AliAnalysisAlien.cxx:3003 AliAnalysisAlien.cxx:3004 AliAnalysisAlien.cxx:3005 AliAnalysisAlien.cxx:3006 AliAnalysisAlien.cxx:3007 AliAnalysisAlien.cxx:3008 AliAnalysisAlien.cxx:3009 AliAnalysisAlien.cxx:3010 AliAnalysisAlien.cxx:3011 AliAnalysisAlien.cxx:3012 AliAnalysisAlien.cxx:3013 AliAnalysisAlien.cxx:3014 AliAnalysisAlien.cxx:3015 AliAnalysisAlien.cxx:3016 AliAnalysisAlien.cxx:3017 AliAnalysisAlien.cxx:3018 AliAnalysisAlien.cxx:3019 AliAnalysisAlien.cxx:3020 AliAnalysisAlien.cxx:3021 AliAnalysisAlien.cxx:3022 AliAnalysisAlien.cxx:3023 AliAnalysisAlien.cxx:3024 AliAnalysisAlien.cxx:3025 AliAnalysisAlien.cxx:3026 AliAnalysisAlien.cxx:3027 AliAnalysisAlien.cxx:3028 AliAnalysisAlien.cxx:3029 AliAnalysisAlien.cxx:3030 AliAnalysisAlien.cxx:3031 AliAnalysisAlien.cxx:3032 AliAnalysisAlien.cxx:3033 AliAnalysisAlien.cxx:3034 AliAnalysisAlien.cxx:3035 AliAnalysisAlien.cxx:3036 AliAnalysisAlien.cxx:3037 AliAnalysisAlien.cxx:3038 AliAnalysisAlien.cxx:3039 AliAnalysisAlien.cxx:3040 AliAnalysisAlien.cxx:3041 AliAnalysisAlien.cxx:3042 AliAnalysisAlien.cxx:3043 AliAnalysisAlien.cxx:3044 AliAnalysisAlien.cxx:3045 AliAnalysisAlien.cxx:3046 AliAnalysisAlien.cxx:3047 AliAnalysisAlien.cxx:3048 AliAnalysisAlien.cxx:3049 AliAnalysisAlien.cxx:3050 AliAnalysisAlien.cxx:3051 AliAnalysisAlien.cxx:3052 AliAnalysisAlien.cxx:3053 AliAnalysisAlien.cxx:3054 AliAnalysisAlien.cxx:3055 AliAnalysisAlien.cxx:3056 AliAnalysisAlien.cxx:3057 AliAnalysisAlien.cxx:3058 AliAnalysisAlien.cxx:3059 AliAnalysisAlien.cxx:3060 AliAnalysisAlien.cxx:3061 AliAnalysisAlien.cxx:3062 AliAnalysisAlien.cxx:3063 AliAnalysisAlien.cxx:3064 AliAnalysisAlien.cxx:3065 AliAnalysisAlien.cxx:3066 AliAnalysisAlien.cxx:3067 AliAnalysisAlien.cxx:3068 AliAnalysisAlien.cxx:3069 AliAnalysisAlien.cxx:3070 AliAnalysisAlien.cxx:3071 AliAnalysisAlien.cxx:3072 AliAnalysisAlien.cxx:3073 AliAnalysisAlien.cxx:3074 AliAnalysisAlien.cxx:3075 AliAnalysisAlien.cxx:3076 AliAnalysisAlien.cxx:3077 AliAnalysisAlien.cxx:3078 AliAnalysisAlien.cxx:3079 AliAnalysisAlien.cxx:3080 AliAnalysisAlien.cxx:3081 AliAnalysisAlien.cxx:3082 AliAnalysisAlien.cxx:3083 AliAnalysisAlien.cxx:3084 AliAnalysisAlien.cxx:3085 AliAnalysisAlien.cxx:3086 AliAnalysisAlien.cxx:3087 AliAnalysisAlien.cxx:3088 AliAnalysisAlien.cxx:3089 AliAnalysisAlien.cxx:3090 AliAnalysisAlien.cxx:3091 AliAnalysisAlien.cxx:3092 AliAnalysisAlien.cxx:3093 AliAnalysisAlien.cxx:3094 AliAnalysisAlien.cxx:3095 AliAnalysisAlien.cxx:3096 AliAnalysisAlien.cxx:3097 AliAnalysisAlien.cxx:3098 AliAnalysisAlien.cxx:3099 AliAnalysisAlien.cxx:3100 AliAnalysisAlien.cxx:3101 AliAnalysisAlien.cxx:3102 AliAnalysisAlien.cxx:3103 AliAnalysisAlien.cxx:3104 AliAnalysisAlien.cxx:3105 AliAnalysisAlien.cxx:3106 AliAnalysisAlien.cxx:3107 AliAnalysisAlien.cxx:3108 AliAnalysisAlien.cxx:3109 AliAnalysisAlien.cxx:3110 AliAnalysisAlien.cxx:3111 AliAnalysisAlien.cxx:3112 AliAnalysisAlien.cxx:3113 AliAnalysisAlien.cxx:3114 AliAnalysisAlien.cxx:3115 AliAnalysisAlien.cxx:3116 AliAnalysisAlien.cxx:3117 AliAnalysisAlien.cxx:3118 AliAnalysisAlien.cxx:3119 AliAnalysisAlien.cxx:3120 AliAnalysisAlien.cxx:3121 AliAnalysisAlien.cxx:3122 AliAnalysisAlien.cxx:3123 AliAnalysisAlien.cxx:3124 AliAnalysisAlien.cxx:3125 AliAnalysisAlien.cxx:3126 AliAnalysisAlien.cxx:3127 AliAnalysisAlien.cxx:3128 AliAnalysisAlien.cxx:3129 AliAnalysisAlien.cxx:3130 AliAnalysisAlien.cxx:3131 AliAnalysisAlien.cxx:3132 AliAnalysisAlien.cxx:3133 AliAnalysisAlien.cxx:3134 AliAnalysisAlien.cxx:3135 AliAnalysisAlien.cxx:3136 AliAnalysisAlien.cxx:3137 AliAnalysisAlien.cxx:3138 AliAnalysisAlien.cxx:3139 AliAnalysisAlien.cxx:3140 AliAnalysisAlien.cxx:3141 AliAnalysisAlien.cxx:3142 AliAnalysisAlien.cxx:3143 AliAnalysisAlien.cxx:3144 AliAnalysisAlien.cxx:3145 AliAnalysisAlien.cxx:3146 AliAnalysisAlien.cxx:3147 AliAnalysisAlien.cxx:3148 AliAnalysisAlien.cxx:3149 AliAnalysisAlien.cxx:3150 AliAnalysisAlien.cxx:3151 AliAnalysisAlien.cxx:3152 AliAnalysisAlien.cxx:3153 AliAnalysisAlien.cxx:3154 AliAnalysisAlien.cxx:3155 AliAnalysisAlien.cxx:3156 AliAnalysisAlien.cxx:3157 AliAnalysisAlien.cxx:3158 AliAnalysisAlien.cxx:3159 AliAnalysisAlien.cxx:3160 AliAnalysisAlien.cxx:3161 AliAnalysisAlien.cxx:3162 AliAnalysisAlien.cxx:3163 AliAnalysisAlien.cxx:3164 AliAnalysisAlien.cxx:3165 AliAnalysisAlien.cxx:3166 AliAnalysisAlien.cxx:3167 AliAnalysisAlien.cxx:3168 AliAnalysisAlien.cxx:3169 AliAnalysisAlien.cxx:3170 AliAnalysisAlien.cxx:3171 AliAnalysisAlien.cxx:3172 AliAnalysisAlien.cxx:3173 AliAnalysisAlien.cxx:3174 AliAnalysisAlien.cxx:3175 AliAnalysisAlien.cxx:3176 AliAnalysisAlien.cxx:3177 AliAnalysisAlien.cxx:3178 AliAnalysisAlien.cxx:3179 AliAnalysisAlien.cxx:3180 AliAnalysisAlien.cxx:3181 AliAnalysisAlien.cxx:3182 AliAnalysisAlien.cxx:3183 AliAnalysisAlien.cxx:3184 AliAnalysisAlien.cxx:3185 AliAnalysisAlien.cxx:3186 AliAnalysisAlien.cxx:3187 AliAnalysisAlien.cxx:3188 AliAnalysisAlien.cxx:3189 AliAnalysisAlien.cxx:3190 AliAnalysisAlien.cxx:3191 AliAnalysisAlien.cxx:3192 AliAnalysisAlien.cxx:3193 AliAnalysisAlien.cxx:3194 AliAnalysisAlien.cxx:3195 AliAnalysisAlien.cxx:3196 AliAnalysisAlien.cxx:3197 AliAnalysisAlien.cxx:3198 AliAnalysisAlien.cxx:3199 AliAnalysisAlien.cxx:3200 AliAnalysisAlien.cxx:3201 AliAnalysisAlien.cxx:3202 AliAnalysisAlien.cxx:3203 AliAnalysisAlien.cxx:3204 AliAnalysisAlien.cxx:3205 AliAnalysisAlien.cxx:3206 AliAnalysisAlien.cxx:3207 AliAnalysisAlien.cxx:3208 AliAnalysisAlien.cxx:3209 AliAnalysisAlien.cxx:3210 AliAnalysisAlien.cxx:3211 AliAnalysisAlien.cxx:3212 AliAnalysisAlien.cxx:3213 AliAnalysisAlien.cxx:3214 AliAnalysisAlien.cxx:3215 AliAnalysisAlien.cxx:3216 AliAnalysisAlien.cxx:3217 AliAnalysisAlien.cxx:3218 AliAnalysisAlien.cxx:3219 AliAnalysisAlien.cxx:3220 AliAnalysisAlien.cxx:3221 AliAnalysisAlien.cxx:3222 AliAnalysisAlien.cxx:3223 AliAnalysisAlien.cxx:3224 AliAnalysisAlien.cxx:3225 AliAnalysisAlien.cxx:3226 AliAnalysisAlien.cxx:3227 AliAnalysisAlien.cxx:3228 AliAnalysisAlien.cxx:3229 AliAnalysisAlien.cxx:3230 AliAnalysisAlien.cxx:3231 AliAnalysisAlien.cxx:3232 AliAnalysisAlien.cxx:3233 AliAnalysisAlien.cxx:3234 AliAnalysisAlien.cxx:3235 AliAnalysisAlien.cxx:3236 AliAnalysisAlien.cxx:3237 AliAnalysisAlien.cxx:3238 AliAnalysisAlien.cxx:3239 AliAnalysisAlien.cxx:3240 AliAnalysisAlien.cxx:3241 AliAnalysisAlien.cxx:3242 AliAnalysisAlien.cxx:3243 AliAnalysisAlien.cxx:3244 AliAnalysisAlien.cxx:3245 AliAnalysisAlien.cxx:3246 AliAnalysisAlien.cxx:3247 AliAnalysisAlien.cxx:3248 AliAnalysisAlien.cxx:3249 AliAnalysisAlien.cxx:3250 AliAnalysisAlien.cxx:3251 AliAnalysisAlien.cxx:3252 AliAnalysisAlien.cxx:3253 AliAnalysisAlien.cxx:3254 AliAnalysisAlien.cxx:3255 AliAnalysisAlien.cxx:3256 AliAnalysisAlien.cxx:3257 AliAnalysisAlien.cxx:3258 AliAnalysisAlien.cxx:3259 AliAnalysisAlien.cxx:3260 AliAnalysisAlien.cxx:3261 AliAnalysisAlien.cxx:3262 AliAnalysisAlien.cxx:3263 AliAnalysisAlien.cxx:3264 AliAnalysisAlien.cxx:3265 AliAnalysisAlien.cxx:3266 AliAnalysisAlien.cxx:3267 AliAnalysisAlien.cxx:3268 AliAnalysisAlien.cxx:3269 AliAnalysisAlien.cxx:3270 AliAnalysisAlien.cxx:3271 AliAnalysisAlien.cxx:3272 AliAnalysisAlien.cxx:3273 AliAnalysisAlien.cxx:3274 AliAnalysisAlien.cxx:3275 AliAnalysisAlien.cxx:3276 AliAnalysisAlien.cxx:3277 AliAnalysisAlien.cxx:3278 AliAnalysisAlien.cxx:3279 AliAnalysisAlien.cxx:3280 AliAnalysisAlien.cxx:3281 AliAnalysisAlien.cxx:3282 AliAnalysisAlien.cxx:3283 AliAnalysisAlien.cxx:3284 AliAnalysisAlien.cxx:3285 AliAnalysisAlien.cxx:3286 AliAnalysisAlien.cxx:3287 AliAnalysisAlien.cxx:3288 AliAnalysisAlien.cxx:3289 AliAnalysisAlien.cxx:3290 AliAnalysisAlien.cxx:3291 AliAnalysisAlien.cxx:3292 AliAnalysisAlien.cxx:3293 AliAnalysisAlien.cxx:3294 AliAnalysisAlien.cxx:3295 AliAnalysisAlien.cxx:3296 AliAnalysisAlien.cxx:3297 AliAnalysisAlien.cxx:3298 AliAnalysisAlien.cxx:3299 AliAnalysisAlien.cxx:3300 AliAnalysisAlien.cxx:3301 AliAnalysisAlien.cxx:3302 AliAnalysisAlien.cxx:3303 AliAnalysisAlien.cxx:3304 AliAnalysisAlien.cxx:3305 AliAnalysisAlien.cxx:3306 AliAnalysisAlien.cxx:3307 AliAnalysisAlien.cxx:3308 AliAnalysisAlien.cxx:3309 AliAnalysisAlien.cxx:3310 AliAnalysisAlien.cxx:3311 AliAnalysisAlien.cxx:3312 AliAnalysisAlien.cxx:3313 AliAnalysisAlien.cxx:3314 AliAnalysisAlien.cxx:3315 AliAnalysisAlien.cxx:3316 AliAnalysisAlien.cxx:3317 AliAnalysisAlien.cxx:3318 AliAnalysisAlien.cxx:3319 AliAnalysisAlien.cxx:3320 AliAnalysisAlien.cxx:3321 AliAnalysisAlien.cxx:3322 AliAnalysisAlien.cxx:3323 AliAnalysisAlien.cxx:3324 AliAnalysisAlien.cxx:3325 AliAnalysisAlien.cxx:3326 AliAnalysisAlien.cxx:3327 AliAnalysisAlien.cxx:3328 AliAnalysisAlien.cxx:3329 AliAnalysisAlien.cxx:3330 AliAnalysisAlien.cxx:3331 AliAnalysisAlien.cxx:3332 AliAnalysisAlien.cxx:3333 AliAnalysisAlien.cxx:3334 AliAnalysisAlien.cxx:3335 AliAnalysisAlien.cxx:3336 AliAnalysisAlien.cxx:3337 AliAnalysisAlien.cxx:3338 AliAnalysisAlien.cxx:3339 AliAnalysisAlien.cxx:3340 AliAnalysisAlien.cxx:3341 AliAnalysisAlien.cxx:3342 AliAnalysisAlien.cxx:3343 AliAnalysisAlien.cxx:3344 AliAnalysisAlien.cxx:3345 AliAnalysisAlien.cxx:3346 AliAnalysisAlien.cxx:3347 AliAnalysisAlien.cxx:3348 AliAnalysisAlien.cxx:3349 AliAnalysisAlien.cxx:3350 AliAnalysisAlien.cxx:3351 AliAnalysisAlien.cxx:3352 AliAnalysisAlien.cxx:3353 AliAnalysisAlien.cxx:3354 AliAnalysisAlien.cxx:3355 AliAnalysisAlien.cxx:3356 AliAnalysisAlien.cxx:3357 AliAnalysisAlien.cxx:3358 AliAnalysisAlien.cxx:3359 AliAnalysisAlien.cxx:3360 AliAnalysisAlien.cxx:3361 AliAnalysisAlien.cxx:3362 AliAnalysisAlien.cxx:3363 AliAnalysisAlien.cxx:3364 AliAnalysisAlien.cxx:3365 AliAnalysisAlien.cxx:3366 AliAnalysisAlien.cxx:3367 AliAnalysisAlien.cxx:3368 AliAnalysisAlien.cxx:3369 AliAnalysisAlien.cxx:3370 AliAnalysisAlien.cxx:3371 AliAnalysisAlien.cxx:3372 AliAnalysisAlien.cxx:3373 AliAnalysisAlien.cxx:3374 AliAnalysisAlien.cxx:3375 AliAnalysisAlien.cxx:3376 AliAnalysisAlien.cxx:3377 AliAnalysisAlien.cxx:3378 AliAnalysisAlien.cxx:3379 AliAnalysisAlien.cxx:3380 AliAnalysisAlien.cxx:3381 AliAnalysisAlien.cxx:3382 AliAnalysisAlien.cxx:3383 AliAnalysisAlien.cxx:3384 AliAnalysisAlien.cxx:3385 AliAnalysisAlien.cxx:3386 AliAnalysisAlien.cxx:3387 AliAnalysisAlien.cxx:3388 AliAnalysisAlien.cxx:3389 AliAnalysisAlien.cxx:3390 AliAnalysisAlien.cxx:3391 AliAnalysisAlien.cxx:3392 AliAnalysisAlien.cxx:3393 AliAnalysisAlien.cxx:3394 AliAnalysisAlien.cxx:3395 AliAnalysisAlien.cxx:3396 AliAnalysisAlien.cxx:3397 AliAnalysisAlien.cxx:3398 AliAnalysisAlien.cxx:3399 AliAnalysisAlien.cxx:3400 AliAnalysisAlien.cxx:3401 AliAnalysisAlien.cxx:3402 AliAnalysisAlien.cxx:3403 AliAnalysisAlien.cxx:3404 AliAnalysisAlien.cxx:3405 AliAnalysisAlien.cxx:3406 AliAnalysisAlien.cxx:3407 AliAnalysisAlien.cxx:3408 AliAnalysisAlien.cxx:3409 AliAnalysisAlien.cxx:3410 AliAnalysisAlien.cxx:3411 AliAnalysisAlien.cxx:3412 AliAnalysisAlien.cxx:3413 AliAnalysisAlien.cxx:3414 AliAnalysisAlien.cxx:3415 AliAnalysisAlien.cxx:3416 AliAnalysisAlien.cxx:3417 AliAnalysisAlien.cxx:3418 AliAnalysisAlien.cxx:3419 AliAnalysisAlien.cxx:3420 AliAnalysisAlien.cxx:3421 AliAnalysisAlien.cxx:3422 AliAnalysisAlien.cxx:3423 AliAnalysisAlien.cxx:3424 AliAnalysisAlien.cxx:3425 AliAnalysisAlien.cxx:3426 AliAnalysisAlien.cxx:3427 AliAnalysisAlien.cxx:3428 AliAnalysisAlien.cxx:3429 AliAnalysisAlien.cxx:3430 AliAnalysisAlien.cxx:3431 AliAnalysisAlien.cxx:3432 AliAnalysisAlien.cxx:3433 AliAnalysisAlien.cxx:3434 AliAnalysisAlien.cxx:3435 AliAnalysisAlien.cxx:3436 AliAnalysisAlien.cxx:3437 AliAnalysisAlien.cxx:3438 AliAnalysisAlien.cxx:3439 AliAnalysisAlien.cxx:3440 AliAnalysisAlien.cxx:3441 AliAnalysisAlien.cxx:3442 AliAnalysisAlien.cxx:3443 AliAnalysisAlien.cxx:3444 AliAnalysisAlien.cxx:3445 AliAnalysisAlien.cxx:3446 AliAnalysisAlien.cxx:3447 AliAnalysisAlien.cxx:3448 AliAnalysisAlien.cxx:3449 AliAnalysisAlien.cxx:3450 AliAnalysisAlien.cxx:3451 AliAnalysisAlien.cxx:3452 AliAnalysisAlien.cxx:3453 AliAnalysisAlien.cxx:3454 AliAnalysisAlien.cxx:3455 AliAnalysisAlien.cxx:3456 AliAnalysisAlien.cxx:3457 AliAnalysisAlien.cxx:3458 AliAnalysisAlien.cxx:3459 AliAnalysisAlien.cxx:3460 AliAnalysisAlien.cxx:3461 AliAnalysisAlien.cxx:3462 AliAnalysisAlien.cxx:3463 AliAnalysisAlien.cxx:3464 AliAnalysisAlien.cxx:3465 AliAnalysisAlien.cxx:3466 AliAnalysisAlien.cxx:3467 AliAnalysisAlien.cxx:3468 AliAnalysisAlien.cxx:3469 AliAnalysisAlien.cxx:3470 AliAnalysisAlien.cxx:3471 AliAnalysisAlien.cxx:3472 AliAnalysisAlien.cxx:3473 AliAnalysisAlien.cxx:3474 AliAnalysisAlien.cxx:3475 AliAnalysisAlien.cxx:3476 AliAnalysisAlien.cxx:3477 AliAnalysisAlien.cxx:3478 AliAnalysisAlien.cxx:3479 AliAnalysisAlien.cxx:3480 AliAnalysisAlien.cxx:3481 AliAnalysisAlien.cxx:3482 AliAnalysisAlien.cxx:3483 AliAnalysisAlien.cxx:3484 AliAnalysisAlien.cxx:3485 AliAnalysisAlien.cxx:3486 AliAnalysisAlien.cxx:3487 AliAnalysisAlien.cxx:3488 AliAnalysisAlien.cxx:3489 AliAnalysisAlien.cxx:3490 AliAnalysisAlien.cxx:3491 AliAnalysisAlien.cxx:3492 AliAnalysisAlien.cxx:3493 AliAnalysisAlien.cxx:3494 AliAnalysisAlien.cxx:3495 AliAnalysisAlien.cxx:3496 AliAnalysisAlien.cxx:3497 AliAnalysisAlien.cxx:3498 AliAnalysisAlien.cxx:3499 AliAnalysisAlien.cxx:3500 AliAnalysisAlien.cxx:3501 AliAnalysisAlien.cxx:3502 AliAnalysisAlien.cxx:3503 AliAnalysisAlien.cxx:3504 AliAnalysisAlien.cxx:3505 AliAnalysisAlien.cxx:3506 AliAnalysisAlien.cxx:3507 AliAnalysisAlien.cxx:3508 AliAnalysisAlien.cxx:3509 AliAnalysisAlien.cxx:3510 AliAnalysisAlien.cxx:3511 AliAnalysisAlien.cxx:3512 AliAnalysisAlien.cxx:3513 AliAnalysisAlien.cxx:3514 AliAnalysisAlien.cxx:3515 AliAnalysisAlien.cxx:3516 AliAnalysisAlien.cxx:3517 AliAnalysisAlien.cxx:3518 AliAnalysisAlien.cxx:3519 AliAnalysisAlien.cxx:3520 AliAnalysisAlien.cxx:3521 AliAnalysisAlien.cxx:3522 AliAnalysisAlien.cxx:3523 AliAnalysisAlien.cxx:3524 AliAnalysisAlien.cxx:3525 AliAnalysisAlien.cxx:3526 AliAnalysisAlien.cxx:3527 AliAnalysisAlien.cxx:3528 AliAnalysisAlien.cxx:3529 AliAnalysisAlien.cxx:3530 AliAnalysisAlien.cxx:3531 AliAnalysisAlien.cxx:3532 AliAnalysisAlien.cxx:3533 AliAnalysisAlien.cxx:3534 AliAnalysisAlien.cxx:3535 AliAnalysisAlien.cxx:3536 AliAnalysisAlien.cxx:3537 AliAnalysisAlien.cxx:3538 AliAnalysisAlien.cxx:3539 AliAnalysisAlien.cxx:3540 AliAnalysisAlien.cxx:3541 AliAnalysisAlien.cxx:3542 AliAnalysisAlien.cxx:3543 AliAnalysisAlien.cxx:3544 AliAnalysisAlien.cxx:3545 AliAnalysisAlien.cxx:3546 AliAnalysisAlien.cxx:3547 AliAnalysisAlien.cxx:3548 AliAnalysisAlien.cxx:3549 AliAnalysisAlien.cxx:3550 AliAnalysisAlien.cxx:3551 AliAnalysisAlien.cxx:3552 AliAnalysisAlien.cxx:3553 AliAnalysisAlien.cxx:3554 AliAnalysisAlien.cxx:3555 AliAnalysisAlien.cxx:3556 AliAnalysisAlien.cxx:3557 AliAnalysisAlien.cxx:3558 AliAnalysisAlien.cxx:3559 AliAnalysisAlien.cxx:3560 AliAnalysisAlien.cxx:3561 AliAnalysisAlien.cxx:3562 AliAnalysisAlien.cxx:3563 AliAnalysisAlien.cxx:3564 AliAnalysisAlien.cxx:3565 AliAnalysisAlien.cxx:3566 AliAnalysisAlien.cxx:3567 AliAnalysisAlien.cxx:3568 AliAnalysisAlien.cxx:3569 AliAnalysisAlien.cxx:3570 AliAnalysisAlien.cxx:3571 AliAnalysisAlien.cxx:3572 AliAnalysisAlien.cxx:3573 AliAnalysisAlien.cxx:3574 AliAnalysisAlien.cxx:3575 AliAnalysisAlien.cxx:3576 AliAnalysisAlien.cxx:3577 AliAnalysisAlien.cxx:3578 AliAnalysisAlien.cxx:3579 AliAnalysisAlien.cxx:3580 AliAnalysisAlien.cxx:3581 AliAnalysisAlien.cxx:3582 AliAnalysisAlien.cxx:3583 AliAnalysisAlien.cxx:3584 AliAnalysisAlien.cxx:3585 AliAnalysisAlien.cxx:3586 AliAnalysisAlien.cxx:3587 AliAnalysisAlien.cxx:3588 AliAnalysisAlien.cxx:3589 AliAnalysisAlien.cxx:3590 AliAnalysisAlien.cxx:3591 AliAnalysisAlien.cxx:3592 AliAnalysisAlien.cxx:3593 AliAnalysisAlien.cxx:3594 AliAnalysisAlien.cxx:3595 AliAnalysisAlien.cxx:3596 AliAnalysisAlien.cxx:3597 AliAnalysisAlien.cxx:3598 AliAnalysisAlien.cxx:3599 AliAnalysisAlien.cxx:3600 AliAnalysisAlien.cxx:3601 AliAnalysisAlien.cxx:3602 AliAnalysisAlien.cxx:3603 AliAnalysisAlien.cxx:3604 AliAnalysisAlien.cxx:3605 AliAnalysisAlien.cxx:3606 AliAnalysisAlien.cxx:3607 AliAnalysisAlien.cxx:3608 AliAnalysisAlien.cxx:3609 AliAnalysisAlien.cxx:3610 AliAnalysisAlien.cxx:3611 AliAnalysisAlien.cxx:3612 AliAnalysisAlien.cxx:3613 AliAnalysisAlien.cxx:3614 AliAnalysisAlien.cxx:3615 AliAnalysisAlien.cxx:3616 AliAnalysisAlien.cxx:3617 AliAnalysisAlien.cxx:3618 AliAnalysisAlien.cxx:3619 AliAnalysisAlien.cxx:3620 AliAnalysisAlien.cxx:3621 AliAnalysisAlien.cxx:3622 AliAnalysisAlien.cxx:3623 AliAnalysisAlien.cxx:3624 AliAnalysisAlien.cxx:3625 AliAnalysisAlien.cxx:3626 AliAnalysisAlien.cxx:3627 AliAnalysisAlien.cxx:3628 AliAnalysisAlien.cxx:3629 AliAnalysisAlien.cxx:3630 AliAnalysisAlien.cxx:3631 AliAnalysisAlien.cxx:3632 AliAnalysisAlien.cxx:3633 AliAnalysisAlien.cxx:3634 AliAnalysisAlien.cxx:3635 AliAnalysisAlien.cxx:3636 AliAnalysisAlien.cxx:3637 AliAnalysisAlien.cxx:3638 AliAnalysisAlien.cxx:3639 AliAnalysisAlien.cxx:3640 AliAnalysisAlien.cxx:3641 AliAnalysisAlien.cxx:3642 AliAnalysisAlien.cxx:3643 AliAnalysisAlien.cxx:3644 AliAnalysisAlien.cxx:3645 AliAnalysisAlien.cxx:3646 AliAnalysisAlien.cxx:3647 AliAnalysisAlien.cxx:3648 AliAnalysisAlien.cxx:3649 AliAnalysisAlien.cxx:3650 AliAnalysisAlien.cxx:3651 AliAnalysisAlien.cxx:3652 AliAnalysisAlien.cxx:3653 AliAnalysisAlien.cxx:3654 AliAnalysisAlien.cxx:3655 AliAnalysisAlien.cxx:3656 AliAnalysisAlien.cxx:3657 AliAnalysisAlien.cxx:3658 AliAnalysisAlien.cxx:3659 AliAnalysisAlien.cxx:3660 AliAnalysisAlien.cxx:3661 AliAnalysisAlien.cxx:3662 AliAnalysisAlien.cxx:3663 AliAnalysisAlien.cxx:3664 AliAnalysisAlien.cxx:3665 AliAnalysisAlien.cxx:3666 AliAnalysisAlien.cxx:3667 AliAnalysisAlien.cxx:3668 AliAnalysisAlien.cxx:3669 AliAnalysisAlien.cxx:3670 AliAnalysisAlien.cxx:3671 AliAnalysisAlien.cxx:3672 AliAnalysisAlien.cxx:3673 AliAnalysisAlien.cxx:3674 AliAnalysisAlien.cxx:3675 AliAnalysisAlien.cxx:3676 AliAnalysisAlien.cxx:3677 AliAnalysisAlien.cxx:3678 AliAnalysisAlien.cxx:3679 AliAnalysisAlien.cxx:3680 AliAnalysisAlien.cxx:3681 AliAnalysisAlien.cxx:3682 AliAnalysisAlien.cxx:3683 AliAnalysisAlien.cxx:3684 AliAnalysisAlien.cxx:3685 AliAnalysisAlien.cxx:3686 AliAnalysisAlien.cxx:3687 AliAnalysisAlien.cxx:3688 AliAnalysisAlien.cxx:3689 AliAnalysisAlien.cxx:3690 AliAnalysisAlien.cxx:3691 AliAnalysisAlien.cxx:3692 AliAnalysisAlien.cxx:3693 AliAnalysisAlien.cxx:3694 AliAnalysisAlien.cxx:3695 AliAnalysisAlien.cxx:3696 AliAnalysisAlien.cxx:3697 AliAnalysisAlien.cxx:3698 AliAnalysisAlien.cxx:3699 AliAnalysisAlien.cxx:3700 AliAnalysisAlien.cxx:3701 AliAnalysisAlien.cxx:3702 AliAnalysisAlien.cxx:3703 AliAnalysisAlien.cxx:3704 AliAnalysisAlien.cxx:3705 AliAnalysisAlien.cxx:3706 AliAnalysisAlien.cxx:3707 AliAnalysisAlien.cxx:3708 AliAnalysisAlien.cxx:3709 AliAnalysisAlien.cxx:3710 AliAnalysisAlien.cxx:3711 AliAnalysisAlien.cxx:3712 AliAnalysisAlien.cxx:3713 AliAnalysisAlien.cxx:3714 AliAnalysisAlien.cxx:3715 AliAnalysisAlien.cxx:3716 AliAnalysisAlien.cxx:3717 AliAnalysisAlien.cxx:3718 AliAnalysisAlien.cxx:3719 AliAnalysisAlien.cxx:3720 AliAnalysisAlien.cxx:3721 AliAnalysisAlien.cxx:3722 AliAnalysisAlien.cxx:3723 AliAnalysisAlien.cxx:3724 AliAnalysisAlien.cxx:3725 AliAnalysisAlien.cxx:3726 AliAnalysisAlien.cxx:3727 AliAnalysisAlien.cxx:3728 AliAnalysisAlien.cxx:3729 AliAnalysisAlien.cxx:3730 AliAnalysisAlien.cxx:3731 AliAnalysisAlien.cxx:3732 AliAnalysisAlien.cxx:3733 AliAnalysisAlien.cxx:3734 AliAnalysisAlien.cxx:3735 AliAnalysisAlien.cxx:3736 AliAnalysisAlien.cxx:3737 AliAnalysisAlien.cxx:3738 AliAnalysisAlien.cxx:3739 AliAnalysisAlien.cxx:3740 AliAnalysisAlien.cxx:3741 AliAnalysisAlien.cxx:3742 AliAnalysisAlien.cxx:3743 AliAnalysisAlien.cxx:3744 AliAnalysisAlien.cxx:3745 AliAnalysisAlien.cxx:3746 AliAnalysisAlien.cxx:3747 AliAnalysisAlien.cxx:3748 AliAnalysisAlien.cxx:3749 AliAnalysisAlien.cxx:3750 AliAnalysisAlien.cxx:3751 AliAnalysisAlien.cxx:3752 AliAnalysisAlien.cxx:3753 AliAnalysisAlien.cxx:3754 AliAnalysisAlien.cxx:3755 AliAnalysisAlien.cxx:3756 AliAnalysisAlien.cxx:3757 AliAnalysisAlien.cxx:3758 AliAnalysisAlien.cxx:3759 AliAnalysisAlien.cxx:3760 AliAnalysisAlien.cxx:3761 AliAnalysisAlien.cxx:3762 AliAnalysisAlien.cxx:3763 AliAnalysisAlien.cxx:3764 AliAnalysisAlien.cxx:3765 AliAnalysisAlien.cxx:3766 AliAnalysisAlien.cxx:3767 AliAnalysisAlien.cxx:3768 AliAnalysisAlien.cxx:3769 AliAnalysisAlien.cxx:3770 AliAnalysisAlien.cxx:3771 AliAnalysisAlien.cxx:3772 AliAnalysisAlien.cxx:3773 AliAnalysisAlien.cxx:3774 AliAnalysisAlien.cxx:3775 AliAnalysisAlien.cxx:3776 AliAnalysisAlien.cxx:3777 AliAnalysisAlien.cxx:3778 AliAnalysisAlien.cxx:3779 AliAnalysisAlien.cxx:3780 AliAnalysisAlien.cxx:3781 AliAnalysisAlien.cxx:3782 AliAnalysisAlien.cxx:3783 AliAnalysisAlien.cxx:3784 AliAnalysisAlien.cxx:3785 AliAnalysisAlien.cxx:3786 AliAnalysisAlien.cxx:3787 AliAnalysisAlien.cxx:3788 AliAnalysisAlien.cxx:3789 AliAnalysisAlien.cxx:3790 AliAnalysisAlien.cxx:3791 AliAnalysisAlien.cxx:3792 AliAnalysisAlien.cxx:3793 AliAnalysisAlien.cxx:3794 AliAnalysisAlien.cxx:3795 AliAnalysisAlien.cxx:3796 AliAnalysisAlien.cxx:3797 AliAnalysisAlien.cxx:3798 AliAnalysisAlien.cxx:3799 AliAnalysisAlien.cxx:3800 AliAnalysisAlien.cxx:3801 AliAnalysisAlien.cxx:3802 AliAnalysisAlien.cxx:3803 AliAnalysisAlien.cxx:3804 AliAnalysisAlien.cxx:3805 AliAnalysisAlien.cxx:3806 AliAnalysisAlien.cxx:3807 AliAnalysisAlien.cxx:3808 AliAnalysisAlien.cxx:3809 AliAnalysisAlien.cxx:3810 AliAnalysisAlien.cxx:3811 AliAnalysisAlien.cxx:3812 AliAnalysisAlien.cxx:3813 AliAnalysisAlien.cxx:3814 AliAnalysisAlien.cxx:3815 AliAnalysisAlien.cxx:3816 AliAnalysisAlien.cxx:3817 AliAnalysisAlien.cxx:3818 AliAnalysisAlien.cxx:3819 AliAnalysisAlien.cxx:3820 AliAnalysisAlien.cxx:3821 AliAnalysisAlien.cxx:3822 AliAnalysisAlien.cxx:3823 AliAnalysisAlien.cxx:3824 AliAnalysisAlien.cxx:3825 AliAnalysisAlien.cxx:3826 AliAnalysisAlien.cxx:3827 AliAnalysisAlien.cxx:3828 AliAnalysisAlien.cxx:3829 AliAnalysisAlien.cxx:3830 AliAnalysisAlien.cxx:3831 AliAnalysisAlien.cxx:3832 AliAnalysisAlien.cxx:3833 AliAnalysisAlien.cxx:3834 AliAnalysisAlien.cxx:3835 AliAnalysisAlien.cxx:3836 AliAnalysisAlien.cxx:3837 AliAnalysisAlien.cxx:3838 AliAnalysisAlien.cxx:3839 AliAnalysisAlien.cxx:3840 AliAnalysisAlien.cxx:3841 AliAnalysisAlien.cxx:3842 AliAnalysisAlien.cxx:3843 AliAnalysisAlien.cxx:3844 AliAnalysisAlien.cxx:3845 AliAnalysisAlien.cxx:3846 AliAnalysisAlien.cxx:3847 AliAnalysisAlien.cxx:3848 AliAnalysisAlien.cxx:3849 AliAnalysisAlien.cxx:3850 AliAnalysisAlien.cxx:3851 AliAnalysisAlien.cxx:3852 AliAnalysisAlien.cxx:3853 AliAnalysisAlien.cxx:3854 AliAnalysisAlien.cxx:3855 AliAnalysisAlien.cxx:3856 AliAnalysisAlien.cxx:3857 AliAnalysisAlien.cxx:3858 AliAnalysisAlien.cxx:3859 AliAnalysisAlien.cxx:3860 AliAnalysisAlien.cxx:3861 AliAnalysisAlien.cxx:3862 AliAnalysisAlien.cxx:3863 AliAnalysisAlien.cxx:3864 AliAnalysisAlien.cxx:3865 AliAnalysisAlien.cxx:3866 AliAnalysisAlien.cxx:3867 AliAnalysisAlien.cxx:3868 AliAnalysisAlien.cxx:3869 AliAnalysisAlien.cxx:3870 AliAnalysisAlien.cxx:3871 AliAnalysisAlien.cxx:3872 AliAnalysisAlien.cxx:3873 AliAnalysisAlien.cxx:3874 AliAnalysisAlien.cxx:3875 AliAnalysisAlien.cxx:3876 AliAnalysisAlien.cxx:3877 AliAnalysisAlien.cxx:3878 AliAnalysisAlien.cxx:3879 AliAnalysisAlien.cxx:3880 AliAnalysisAlien.cxx:3881 AliAnalysisAlien.cxx:3882 AliAnalysisAlien.cxx:3883 AliAnalysisAlien.cxx:3884 AliAnalysisAlien.cxx:3885 AliAnalysisAlien.cxx:3886 AliAnalysisAlien.cxx:3887 AliAnalysisAlien.cxx:3888 AliAnalysisAlien.cxx:3889 AliAnalysisAlien.cxx:3890 AliAnalysisAlien.cxx:3891 AliAnalysisAlien.cxx:3892 AliAnalysisAlien.cxx:3893 AliAnalysisAlien.cxx:3894 AliAnalysisAlien.cxx:3895 AliAnalysisAlien.cxx:3896 AliAnalysisAlien.cxx:3897 AliAnalysisAlien.cxx:3898 AliAnalysisAlien.cxx:3899 AliAnalysisAlien.cxx:3900 AliAnalysisAlien.cxx:3901 AliAnalysisAlien.cxx:3902 AliAnalysisAlien.cxx:3903 AliAnalysisAlien.cxx:3904 AliAnalysisAlien.cxx:3905 AliAnalysisAlien.cxx:3906 AliAnalysisAlien.cxx:3907 AliAnalysisAlien.cxx:3908 AliAnalysisAlien.cxx:3909 AliAnalysisAlien.cxx:3910 AliAnalysisAlien.cxx:3911 AliAnalysisAlien.cxx:3912 AliAnalysisAlien.cxx:3913 AliAnalysisAlien.cxx:3914 AliAnalysisAlien.cxx:3915 AliAnalysisAlien.cxx:3916 AliAnalysisAlien.cxx:3917 AliAnalysisAlien.cxx:3918 AliAnalysisAlien.cxx:3919 AliAnalysisAlien.cxx:3920 AliAnalysisAlien.cxx:3921 AliAnalysisAlien.cxx:3922 AliAnalysisAlien.cxx:3923 AliAnalysisAlien.cxx:3924 AliAnalysisAlien.cxx:3925 AliAnalysisAlien.cxx:3926 AliAnalysisAlien.cxx:3927 AliAnalysisAlien.cxx:3928 AliAnalysisAlien.cxx:3929 AliAnalysisAlien.cxx:3930 AliAnalysisAlien.cxx:3931 AliAnalysisAlien.cxx:3932 AliAnalysisAlien.cxx:3933 AliAnalysisAlien.cxx:3934 AliAnalysisAlien.cxx:3935 AliAnalysisAlien.cxx:3936 AliAnalysisAlien.cxx:3937 AliAnalysisAlien.cxx:3938 AliAnalysisAlien.cxx:3939 AliAnalysisAlien.cxx:3940 AliAnalysisAlien.cxx:3941 AliAnalysisAlien.cxx:3942 AliAnalysisAlien.cxx:3943 AliAnalysisAlien.cxx:3944 AliAnalysisAlien.cxx:3945 AliAnalysisAlien.cxx:3946 AliAnalysisAlien.cxx:3947 AliAnalysisAlien.cxx:3948 AliAnalysisAlien.cxx:3949 AliAnalysisAlien.cxx:3950 AliAnalysisAlien.cxx:3951 AliAnalysisAlien.cxx:3952 AliAnalysisAlien.cxx:3953 AliAnalysisAlien.cxx:3954 AliAnalysisAlien.cxx:3955 AliAnalysisAlien.cxx:3956 AliAnalysisAlien.cxx:3957 AliAnalysisAlien.cxx:3958 AliAnalysisAlien.cxx:3959 AliAnalysisAlien.cxx:3960 AliAnalysisAlien.cxx:3961 AliAnalysisAlien.cxx:3962 AliAnalysisAlien.cxx:3963 AliAnalysisAlien.cxx:3964 AliAnalysisAlien.cxx:3965 AliAnalysisAlien.cxx:3966 AliAnalysisAlien.cxx:3967 AliAnalysisAlien.cxx:3968 AliAnalysisAlien.cxx:3969 AliAnalysisAlien.cxx:3970 AliAnalysisAlien.cxx:3971 AliAnalysisAlien.cxx:3972 AliAnalysisAlien.cxx:3973 AliAnalysisAlien.cxx:3974 AliAnalysisAlien.cxx:3975 AliAnalysisAlien.cxx:3976 AliAnalysisAlien.cxx:3977 AliAnalysisAlien.cxx:3978 AliAnalysisAlien.cxx:3979 AliAnalysisAlien.cxx:3980 AliAnalysisAlien.cxx:3981 AliAnalysisAlien.cxx:3982 AliAnalysisAlien.cxx:3983 AliAnalysisAlien.cxx:3984 AliAnalysisAlien.cxx:3985 AliAnalysisAlien.cxx:3986 AliAnalysisAlien.cxx:3987 AliAnalysisAlien.cxx:3988 AliAnalysisAlien.cxx:3989 AliAnalysisAlien.cxx:3990 AliAnalysisAlien.cxx:3991 AliAnalysisAlien.cxx:3992 AliAnalysisAlien.cxx:3993 AliAnalysisAlien.cxx:3994 AliAnalysisAlien.cxx:3995 AliAnalysisAlien.cxx:3996 AliAnalysisAlien.cxx:3997 AliAnalysisAlien.cxx:3998 AliAnalysisAlien.cxx:3999 AliAnalysisAlien.cxx:4000 AliAnalysisAlien.cxx:4001 AliAnalysisAlien.cxx:4002 AliAnalysisAlien.cxx:4003 AliAnalysisAlien.cxx:4004 AliAnalysisAlien.cxx:4005 AliAnalysisAlien.cxx:4006 AliAnalysisAlien.cxx:4007 AliAnalysisAlien.cxx:4008 AliAnalysisAlien.cxx:4009 AliAnalysisAlien.cxx:4010 AliAnalysisAlien.cxx:4011 AliAnalysisAlien.cxx:4012 AliAnalysisAlien.cxx:4013 AliAnalysisAlien.cxx:4014 AliAnalysisAlien.cxx:4015 AliAnalysisAlien.cxx:4016 AliAnalysisAlien.cxx:4017 AliAnalysisAlien.cxx:4018 AliAnalysisAlien.cxx:4019 AliAnalysisAlien.cxx:4020 AliAnalysisAlien.cxx:4021 AliAnalysisAlien.cxx:4022 AliAnalysisAlien.cxx:4023 AliAnalysisAlien.cxx:4024 AliAnalysisAlien.cxx:4025 AliAnalysisAlien.cxx:4026 AliAnalysisAlien.cxx:4027 AliAnalysisAlien.cxx:4028 AliAnalysisAlien.cxx:4029 AliAnalysisAlien.cxx:4030 AliAnalysisAlien.cxx:4031 AliAnalysisAlien.cxx:4032 AliAnalysisAlien.cxx:4033 AliAnalysisAlien.cxx:4034 AliAnalysisAlien.cxx:4035 AliAnalysisAlien.cxx:4036 AliAnalysisAlien.cxx:4037 AliAnalysisAlien.cxx:4038 AliAnalysisAlien.cxx:4039 AliAnalysisAlien.cxx:4040 AliAnalysisAlien.cxx:4041 AliAnalysisAlien.cxx:4042 AliAnalysisAlien.cxx:4043 AliAnalysisAlien.cxx:4044 AliAnalysisAlien.cxx:4045 AliAnalysisAlien.cxx:4046 AliAnalysisAlien.cxx:4047 AliAnalysisAlien.cxx:4048 AliAnalysisAlien.cxx:4049 AliAnalysisAlien.cxx:4050 AliAnalysisAlien.cxx:4051 AliAnalysisAlien.cxx:4052 AliAnalysisAlien.cxx:4053 AliAnalysisAlien.cxx:4054 AliAnalysisAlien.cxx:4055 AliAnalysisAlien.cxx:4056 AliAnalysisAlien.cxx:4057 AliAnalysisAlien.cxx:4058 AliAnalysisAlien.cxx:4059 AliAnalysisAlien.cxx:4060 AliAnalysisAlien.cxx:4061 AliAnalysisAlien.cxx:4062 AliAnalysisAlien.cxx:4063 AliAnalysisAlien.cxx:4064 AliAnalysisAlien.cxx:4065 AliAnalysisAlien.cxx:4066 AliAnalysisAlien.cxx:4067 AliAnalysisAlien.cxx:4068 AliAnalysisAlien.cxx:4069 AliAnalysisAlien.cxx:4070 AliAnalysisAlien.cxx:4071 AliAnalysisAlien.cxx:4072 AliAnalysisAlien.cxx:4073 AliAnalysisAlien.cxx:4074 AliAnalysisAlien.cxx:4075 AliAnalysisAlien.cxx:4076 AliAnalysisAlien.cxx:4077 AliAnalysisAlien.cxx:4078 AliAnalysisAlien.cxx:4079 AliAnalysisAlien.cxx:4080 AliAnalysisAlien.cxx:4081 AliAnalysisAlien.cxx:4082 AliAnalysisAlien.cxx:4083 AliAnalysisAlien.cxx:4084 AliAnalysisAlien.cxx:4085 AliAnalysisAlien.cxx:4086 AliAnalysisAlien.cxx:4087 AliAnalysisAlien.cxx:4088 AliAnalysisAlien.cxx:4089 AliAnalysisAlien.cxx:4090 AliAnalysisAlien.cxx:4091 AliAnalysisAlien.cxx:4092 AliAnalysisAlien.cxx:4093 AliAnalysisAlien.cxx:4094 AliAnalysisAlien.cxx:4095 AliAnalysisAlien.cxx:4096 AliAnalysisAlien.cxx:4097 AliAnalysisAlien.cxx:4098 AliAnalysisAlien.cxx:4099 AliAnalysisAlien.cxx:4100 AliAnalysisAlien.cxx:4101 AliAnalysisAlien.cxx:4102 AliAnalysisAlien.cxx:4103 AliAnalysisAlien.cxx:4104 AliAnalysisAlien.cxx:4105 AliAnalysisAlien.cxx:4106 AliAnalysisAlien.cxx:4107 AliAnalysisAlien.cxx:4108 AliAnalysisAlien.cxx:4109 AliAnalysisAlien.cxx:4110 AliAnalysisAlien.cxx:4111 AliAnalysisAlien.cxx:4112 AliAnalysisAlien.cxx:4113 AliAnalysisAlien.cxx:4114 AliAnalysisAlien.cxx:4115 AliAnalysisAlien.cxx:4116 AliAnalysisAlien.cxx:4117 AliAnalysisAlien.cxx:4118 AliAnalysisAlien.cxx:4119 AliAnalysisAlien.cxx:4120 AliAnalysisAlien.cxx:4121 AliAnalysisAlien.cxx:4122 AliAnalysisAlien.cxx:4123 AliAnalysisAlien.cxx:4124 AliAnalysisAlien.cxx:4125 AliAnalysisAlien.cxx:4126 AliAnalysisAlien.cxx:4127 AliAnalysisAlien.cxx:4128 AliAnalysisAlien.cxx:4129 AliAnalysisAlien.cxx:4130 AliAnalysisAlien.cxx:4131 AliAnalysisAlien.cxx:4132 AliAnalysisAlien.cxx:4133 AliAnalysisAlien.cxx:4134 AliAnalysisAlien.cxx:4135 AliAnalysisAlien.cxx:4136 AliAnalysisAlien.cxx:4137 AliAnalysisAlien.cxx:4138 AliAnalysisAlien.cxx:4139 AliAnalysisAlien.cxx:4140 AliAnalysisAlien.cxx:4141 AliAnalysisAlien.cxx:4142 AliAnalysisAlien.cxx:4143 AliAnalysisAlien.cxx:4144 AliAnalysisAlien.cxx:4145 AliAnalysisAlien.cxx:4146 AliAnalysisAlien.cxx:4147 AliAnalysisAlien.cxx:4148 AliAnalysisAlien.cxx:4149 AliAnalysisAlien.cxx:4150 AliAnalysisAlien.cxx:4151 AliAnalysisAlien.cxx:4152 AliAnalysisAlien.cxx:4153 AliAnalysisAlien.cxx:4154 AliAnalysisAlien.cxx:4155 AliAnalysisAlien.cxx:4156 AliAnalysisAlien.cxx:4157 AliAnalysisAlien.cxx:4158 AliAnalysisAlien.cxx:4159 AliAnalysisAlien.cxx:4160 AliAnalysisAlien.cxx:4161 AliAnalysisAlien.cxx:4162 AliAnalysisAlien.cxx:4163 AliAnalysisAlien.cxx:4164 AliAnalysisAlien.cxx:4165 AliAnalysisAlien.cxx:4166 AliAnalysisAlien.cxx:4167 AliAnalysisAlien.cxx:4168 AliAnalysisAlien.cxx:4169 AliAnalysisAlien.cxx:4170 AliAnalysisAlien.cxx:4171 AliAnalysisAlien.cxx:4172 AliAnalysisAlien.cxx:4173 AliAnalysisAlien.cxx:4174 AliAnalysisAlien.cxx:4175 AliAnalysisAlien.cxx:4176 AliAnalysisAlien.cxx:4177 AliAnalysisAlien.cxx:4178 AliAnalysisAlien.cxx:4179 AliAnalysisAlien.cxx:4180 AliAnalysisAlien.cxx:4181 AliAnalysisAlien.cxx:4182 AliAnalysisAlien.cxx:4183 AliAnalysisAlien.cxx:4184 AliAnalysisAlien.cxx:4185 AliAnalysisAlien.cxx:4186 AliAnalysisAlien.cxx:4187 AliAnalysisAlien.cxx:4188 AliAnalysisAlien.cxx:4189 AliAnalysisAlien.cxx:4190 AliAnalysisAlien.cxx:4191 AliAnalysisAlien.cxx:4192 AliAnalysisAlien.cxx:4193 AliAnalysisAlien.cxx:4194 AliAnalysisAlien.cxx:4195 AliAnalysisAlien.cxx:4196 AliAnalysisAlien.cxx:4197 AliAnalysisAlien.cxx:4198 AliAnalysisAlien.cxx:4199 AliAnalysisAlien.cxx:4200 AliAnalysisAlien.cxx:4201 AliAnalysisAlien.cxx:4202 AliAnalysisAlien.cxx:4203 AliAnalysisAlien.cxx:4204 AliAnalysisAlien.cxx:4205 AliAnalysisAlien.cxx:4206 AliAnalysisAlien.cxx:4207 AliAnalysisAlien.cxx:4208 AliAnalysisAlien.cxx:4209 AliAnalysisAlien.cxx:4210 AliAnalysisAlien.cxx:4211 AliAnalysisAlien.cxx:4212 AliAnalysisAlien.cxx:4213 AliAnalysisAlien.cxx:4214 AliAnalysisAlien.cxx:4215 AliAnalysisAlien.cxx:4216 AliAnalysisAlien.cxx:4217 AliAnalysisAlien.cxx:4218 AliAnalysisAlien.cxx:4219 AliAnalysisAlien.cxx:4220 AliAnalysisAlien.cxx:4221 AliAnalysisAlien.cxx:4222 AliAnalysisAlien.cxx:4223 AliAnalysisAlien.cxx:4224 AliAnalysisAlien.cxx:4225 AliAnalysisAlien.cxx:4226 AliAnalysisAlien.cxx:4227 AliAnalysisAlien.cxx:4228 AliAnalysisAlien.cxx:4229 AliAnalysisAlien.cxx:4230 AliAnalysisAlien.cxx:4231 AliAnalysisAlien.cxx:4232 AliAnalysisAlien.cxx:4233 AliAnalysisAlien.cxx:4234 AliAnalysisAlien.cxx:4235 AliAnalysisAlien.cxx:4236 AliAnalysisAlien.cxx:4237 AliAnalysisAlien.cxx:4238 AliAnalysisAlien.cxx:4239 AliAnalysisAlien.cxx:4240 AliAnalysisAlien.cxx:4241 AliAnalysisAlien.cxx:4242 AliAnalysisAlien.cxx:4243 AliAnalysisAlien.cxx:4244 AliAnalysisAlien.cxx:4245 AliAnalysisAlien.cxx:4246 AliAnalysisAlien.cxx:4247 AliAnalysisAlien.cxx:4248 AliAnalysisAlien.cxx:4249 AliAnalysisAlien.cxx:4250 AliAnalysisAlien.cxx:4251 AliAnalysisAlien.cxx:4252 AliAnalysisAlien.cxx:4253 AliAnalysisAlien.cxx:4254 AliAnalysisAlien.cxx:4255 AliAnalysisAlien.cxx:4256 AliAnalysisAlien.cxx:4257 AliAnalysisAlien.cxx:4258 AliAnalysisAlien.cxx:4259 AliAnalysisAlien.cxx:4260 AliAnalysisAlien.cxx:4261 AliAnalysisAlien.cxx:4262 AliAnalysisAlien.cxx:4263 AliAnalysisAlien.cxx:4264 AliAnalysisAlien.cxx:4265 AliAnalysisAlien.cxx:4266 AliAnalysisAlien.cxx:4267 AliAnalysisAlien.cxx:4268 AliAnalysisAlien.cxx:4269 AliAnalysisAlien.cxx:4270 AliAnalysisAlien.cxx:4271 AliAnalysisAlien.cxx:4272 AliAnalysisAlien.cxx:4273 AliAnalysisAlien.cxx:4274 AliAnalysisAlien.cxx:4275 AliAnalysisAlien.cxx:4276 AliAnalysisAlien.cxx:4277 AliAnalysisAlien.cxx:4278 AliAnalysisAlien.cxx:4279 AliAnalysisAlien.cxx:4280 AliAnalysisAlien.cxx:4281 AliAnalysisAlien.cxx:4282 AliAnalysisAlien.cxx:4283 AliAnalysisAlien.cxx:4284 AliAnalysisAlien.cxx:4285 AliAnalysisAlien.cxx:4286 AliAnalysisAlien.cxx:4287 AliAnalysisAlien.cxx:4288 AliAnalysisAlien.cxx:4289 AliAnalysisAlien.cxx:4290 AliAnalysisAlien.cxx:4291 AliAnalysisAlien.cxx:4292 AliAnalysisAlien.cxx:4293 AliAnalysisAlien.cxx:4294 AliAnalysisAlien.cxx:4295 AliAnalysisAlien.cxx:4296 AliAnalysisAlien.cxx:4297 AliAnalysisAlien.cxx:4298 AliAnalysisAlien.cxx:4299 AliAnalysisAlien.cxx:4300 AliAnalysisAlien.cxx:4301 AliAnalysisAlien.cxx:4302 AliAnalysisAlien.cxx:4303 AliAnalysisAlien.cxx:4304 AliAnalysisAlien.cxx:4305 AliAnalysisAlien.cxx:4306 AliAnalysisAlien.cxx:4307 AliAnalysisAlien.cxx:4308 AliAnalysisAlien.cxx:4309 AliAnalysisAlien.cxx:4310 AliAnalysisAlien.cxx:4311 AliAnalysisAlien.cxx:4312 AliAnalysisAlien.cxx:4313 AliAnalysisAlien.cxx:4314 AliAnalysisAlien.cxx:4315 AliAnalysisAlien.cxx:4316 AliAnalysisAlien.cxx:4317 AliAnalysisAlien.cxx:4318 AliAnalysisAlien.cxx:4319 AliAnalysisAlien.cxx:4320 AliAnalysisAlien.cxx:4321 AliAnalysisAlien.cxx:4322 AliAnalysisAlien.cxx:4323 AliAnalysisAlien.cxx:4324 AliAnalysisAlien.cxx:4325 AliAnalysisAlien.cxx:4326 AliAnalysisAlien.cxx:4327 AliAnalysisAlien.cxx:4328 AliAnalysisAlien.cxx:4329 AliAnalysisAlien.cxx:4330 AliAnalysisAlien.cxx:4331 AliAnalysisAlien.cxx:4332 AliAnalysisAlien.cxx:4333 AliAnalysisAlien.cxx:4334 AliAnalysisAlien.cxx:4335 AliAnalysisAlien.cxx:4336 AliAnalysisAlien.cxx:4337 AliAnalysisAlien.cxx:4338 AliAnalysisAlien.cxx:4339 AliAnalysisAlien.cxx:4340 AliAnalysisAlien.cxx:4341 AliAnalysisAlien.cxx:4342 AliAnalysisAlien.cxx:4343 AliAnalysisAlien.cxx:4344 AliAnalysisAlien.cxx:4345 AliAnalysisAlien.cxx:4346 AliAnalysisAlien.cxx:4347 AliAnalysisAlien.cxx:4348 AliAnalysisAlien.cxx:4349 AliAnalysisAlien.cxx:4350 AliAnalysisAlien.cxx:4351 AliAnalysisAlien.cxx:4352 AliAnalysisAlien.cxx:4353 AliAnalysisAlien.cxx:4354 AliAnalysisAlien.cxx:4355 AliAnalysisAlien.cxx:4356 AliAnalysisAlien.cxx:4357 AliAnalysisAlien.cxx:4358 AliAnalysisAlien.cxx:4359 AliAnalysisAlien.cxx:4360 AliAnalysisAlien.cxx:4361 AliAnalysisAlien.cxx:4362 AliAnalysisAlien.cxx:4363 AliAnalysisAlien.cxx:4364 AliAnalysisAlien.cxx:4365 AliAnalysisAlien.cxx:4366 AliAnalysisAlien.cxx:4367 AliAnalysisAlien.cxx:4368 AliAnalysisAlien.cxx:4369 AliAnalysisAlien.cxx:4370 AliAnalysisAlien.cxx:4371 AliAnalysisAlien.cxx:4372 AliAnalysisAlien.cxx:4373 AliAnalysisAlien.cxx:4374 AliAnalysisAlien.cxx:4375 AliAnalysisAlien.cxx:4376 AliAnalysisAlien.cxx:4377 AliAnalysisAlien.cxx:4378 AliAnalysisAlien.cxx:4379 AliAnalysisAlien.cxx:4380 AliAnalysisAlien.cxx:4381 AliAnalysisAlien.cxx:4382 AliAnalysisAlien.cxx:4383 AliAnalysisAlien.cxx:4384 AliAnalysisAlien.cxx:4385 AliAnalysisAlien.cxx:4386 AliAnalysisAlien.cxx:4387 AliAnalysisAlien.cxx:4388 AliAnalysisAlien.cxx:4389 AliAnalysisAlien.cxx:4390 AliAnalysisAlien.cxx:4391 AliAnalysisAlien.cxx:4392 AliAnalysisAlien.cxx:4393 AliAnalysisAlien.cxx:4394 AliAnalysisAlien.cxx:4395 AliAnalysisAlien.cxx:4396 AliAnalysisAlien.cxx:4397 AliAnalysisAlien.cxx:4398 AliAnalysisAlien.cxx:4399 AliAnalysisAlien.cxx:4400 AliAnalysisAlien.cxx:4401 AliAnalysisAlien.cxx:4402 AliAnalysisAlien.cxx:4403 AliAnalysisAlien.cxx:4404 AliAnalysisAlien.cxx:4405 AliAnalysisAlien.cxx:4406 AliAnalysisAlien.cxx:4407 AliAnalysisAlien.cxx:4408 AliAnalysisAlien.cxx:4409 AliAnalysisAlien.cxx:4410 AliAnalysisAlien.cxx:4411 AliAnalysisAlien.cxx:4412 AliAnalysisAlien.cxx:4413 AliAnalysisAlien.cxx:4414 AliAnalysisAlien.cxx:4415 AliAnalysisAlien.cxx:4416 AliAnalysisAlien.cxx:4417 AliAnalysisAlien.cxx:4418 AliAnalysisAlien.cxx:4419 AliAnalysisAlien.cxx:4420 AliAnalysisAlien.cxx:4421 AliAnalysisAlien.cxx:4422 AliAnalysisAlien.cxx:4423 AliAnalysisAlien.cxx:4424 AliAnalysisAlien.cxx:4425 AliAnalysisAlien.cxx:4426 AliAnalysisAlien.cxx:4427 AliAnalysisAlien.cxx:4428 AliAnalysisAlien.cxx:4429 AliAnalysisAlien.cxx:4430 AliAnalysisAlien.cxx:4431 AliAnalysisAlien.cxx:4432 AliAnalysisAlien.cxx:4433 AliAnalysisAlien.cxx:4434 AliAnalysisAlien.cxx:4435 AliAnalysisAlien.cxx:4436 AliAnalysisAlien.cxx:4437 AliAnalysisAlien.cxx:4438 AliAnalysisAlien.cxx:4439 AliAnalysisAlien.cxx:4440 AliAnalysisAlien.cxx:4441 AliAnalysisAlien.cxx:4442 AliAnalysisAlien.cxx:4443 AliAnalysisAlien.cxx:4444 AliAnalysisAlien.cxx:4445 AliAnalysisAlien.cxx:4446 AliAnalysisAlien.cxx:4447 AliAnalysisAlien.cxx:4448 AliAnalysisAlien.cxx:4449 AliAnalysisAlien.cxx:4450 AliAnalysisAlien.cxx:4451 AliAnalysisAlien.cxx:4452 AliAnalysisAlien.cxx:4453 AliAnalysisAlien.cxx:4454 AliAnalysisAlien.cxx:4455 AliAnalysisAlien.cxx:4456 AliAnalysisAlien.cxx:4457 AliAnalysisAlien.cxx:4458 AliAnalysisAlien.cxx:4459 AliAnalysisAlien.cxx:4460 AliAnalysisAlien.cxx:4461 AliAnalysisAlien.cxx:4462 AliAnalysisAlien.cxx:4463 AliAnalysisAlien.cxx:4464 AliAnalysisAlien.cxx:4465 AliAnalysisAlien.cxx:4466 AliAnalysisAlien.cxx:4467 AliAnalysisAlien.cxx:4468 AliAnalysisAlien.cxx:4469 AliAnalysisAlien.cxx:4470 AliAnalysisAlien.cxx:4471 AliAnalysisAlien.cxx:4472 AliAnalysisAlien.cxx:4473 AliAnalysisAlien.cxx:4474 AliAnalysisAlien.cxx:4475 AliAnalysisAlien.cxx:4476 AliAnalysisAlien.cxx:4477 AliAnalysisAlien.cxx:4478 AliAnalysisAlien.cxx:4479 AliAnalysisAlien.cxx:4480 AliAnalysisAlien.cxx:4481 AliAnalysisAlien.cxx:4482 AliAnalysisAlien.cxx:4483 AliAnalysisAlien.cxx:4484 AliAnalysisAlien.cxx:4485 AliAnalysisAlien.cxx:4486 AliAnalysisAlien.cxx:4487 AliAnalysisAlien.cxx:4488 AliAnalysisAlien.cxx:4489 AliAnalysisAlien.cxx:4490 AliAnalysisAlien.cxx:4491 AliAnalysisAlien.cxx:4492 AliAnalysisAlien.cxx:4493 AliAnalysisAlien.cxx:4494 AliAnalysisAlien.cxx:4495 AliAnalysisAlien.cxx:4496 AliAnalysisAlien.cxx:4497 AliAnalysisAlien.cxx:4498 AliAnalysisAlien.cxx:4499 AliAnalysisAlien.cxx:4500 AliAnalysisAlien.cxx:4501 AliAnalysisAlien.cxx:4502 AliAnalysisAlien.cxx:4503 AliAnalysisAlien.cxx:4504 AliAnalysisAlien.cxx:4505 AliAnalysisAlien.cxx:4506 AliAnalysisAlien.cxx:4507 AliAnalysisAlien.cxx:4508 AliAnalysisAlien.cxx:4509 AliAnalysisAlien.cxx:4510 AliAnalysisAlien.cxx:4511 AliAnalysisAlien.cxx:4512 AliAnalysisAlien.cxx:4513 AliAnalysisAlien.cxx:4514 AliAnalysisAlien.cxx:4515 AliAnalysisAlien.cxx:4516 AliAnalysisAlien.cxx:4517 AliAnalysisAlien.cxx:4518 AliAnalysisAlien.cxx:4519 AliAnalysisAlien.cxx:4520 AliAnalysisAlien.cxx:4521 AliAnalysisAlien.cxx:4522 AliAnalysisAlien.cxx:4523 AliAnalysisAlien.cxx:4524 AliAnalysisAlien.cxx:4525 AliAnalysisAlien.cxx:4526 AliAnalysisAlien.cxx:4527 AliAnalysisAlien.cxx:4528 AliAnalysisAlien.cxx:4529 AliAnalysisAlien.cxx:4530 AliAnalysisAlien.cxx:4531 AliAnalysisAlien.cxx:4532 AliAnalysisAlien.cxx:4533 AliAnalysisAlien.cxx:4534 AliAnalysisAlien.cxx:4535 AliAnalysisAlien.cxx:4536 AliAnalysisAlien.cxx:4537 AliAnalysisAlien.cxx:4538 AliAnalysisAlien.cxx:4539 AliAnalysisAlien.cxx:4540 AliAnalysisAlien.cxx:4541 AliAnalysisAlien.cxx:4542 AliAnalysisAlien.cxx:4543 AliAnalysisAlien.cxx:4544 AliAnalysisAlien.cxx:4545 AliAnalysisAlien.cxx:4546 AliAnalysisAlien.cxx:4547 AliAnalysisAlien.cxx:4548 AliAnalysisAlien.cxx:4549 AliAnalysisAlien.cxx:4550 AliAnalysisAlien.cxx:4551 AliAnalysisAlien.cxx:4552 AliAnalysisAlien.cxx:4553 AliAnalysisAlien.cxx:4554 AliAnalysisAlien.cxx:4555 AliAnalysisAlien.cxx:4556 AliAnalysisAlien.cxx:4557 AliAnalysisAlien.cxx:4558 AliAnalysisAlien.cxx:4559 AliAnalysisAlien.cxx:4560 AliAnalysisAlien.cxx:4561 AliAnalysisAlien.cxx:4562 AliAnalysisAlien.cxx:4563 AliAnalysisAlien.cxx:4564 AliAnalysisAlien.cxx:4565 AliAnalysisAlien.cxx:4566 AliAnalysisAlien.cxx:4567 AliAnalysisAlien.cxx:4568 AliAnalysisAlien.cxx:4569 AliAnalysisAlien.cxx:4570 AliAnalysisAlien.cxx:4571 AliAnalysisAlien.cxx:4572 AliAnalysisAlien.cxx:4573 AliAnalysisAlien.cxx:4574 AliAnalysisAlien.cxx:4575 AliAnalysisAlien.cxx:4576 AliAnalysisAlien.cxx:4577 AliAnalysisAlien.cxx:4578 AliAnalysisAlien.cxx:4579 AliAnalysisAlien.cxx:4580 AliAnalysisAlien.cxx:4581 AliAnalysisAlien.cxx:4582 AliAnalysisAlien.cxx:4583 AliAnalysisAlien.cxx:4584 AliAnalysisAlien.cxx:4585 AliAnalysisAlien.cxx:4586 AliAnalysisAlien.cxx:4587 AliAnalysisAlien.cxx:4588 AliAnalysisAlien.cxx:4589 AliAnalysisAlien.cxx:4590 AliAnalysisAlien.cxx:4591 AliAnalysisAlien.cxx:4592 AliAnalysisAlien.cxx:4593 AliAnalysisAlien.cxx:4594 AliAnalysisAlien.cxx:4595 AliAnalysisAlien.cxx:4596 AliAnalysisAlien.cxx:4597 AliAnalysisAlien.cxx:4598 AliAnalysisAlien.cxx:4599 AliAnalysisAlien.cxx:4600 AliAnalysisAlien.cxx:4601 AliAnalysisAlien.cxx:4602 AliAnalysisAlien.cxx:4603 AliAnalysisAlien.cxx:4604 AliAnalysisAlien.cxx:4605 AliAnalysisAlien.cxx:4606 AliAnalysisAlien.cxx:4607 AliAnalysisAlien.cxx:4608 AliAnalysisAlien.cxx:4609 AliAnalysisAlien.cxx:4610 AliAnalysisAlien.cxx:4611 AliAnalysisAlien.cxx:4612 AliAnalysisAlien.cxx:4613 AliAnalysisAlien.cxx:4614 AliAnalysisAlien.cxx:4615 AliAnalysisAlien.cxx:4616 AliAnalysisAlien.cxx:4617 AliAnalysisAlien.cxx:4618 AliAnalysisAlien.cxx:4619 AliAnalysisAlien.cxx:4620 AliAnalysisAlien.cxx:4621 AliAnalysisAlien.cxx:4622 AliAnalysisAlien.cxx:4623 AliAnalysisAlien.cxx:4624 AliAnalysisAlien.cxx:4625 AliAnalysisAlien.cxx:4626 AliAnalysisAlien.cxx:4627 AliAnalysisAlien.cxx:4628 AliAnalysisAlien.cxx:4629 AliAnalysisAlien.cxx:4630 AliAnalysisAlien.cxx:4631 AliAnalysisAlien.cxx:4632 AliAnalysisAlien.cxx:4633 AliAnalysisAlien.cxx:4634 AliAnalysisAlien.cxx:4635 AliAnalysisAlien.cxx:4636 AliAnalysisAlien.cxx:4637 AliAnalysisAlien.cxx:4638 AliAnalysisAlien.cxx:4639 AliAnalysisAlien.cxx:4640 AliAnalysisAlien.cxx:4641 AliAnalysisAlien.cxx:4642 AliAnalysisAlien.cxx:4643 AliAnalysisAlien.cxx:4644 AliAnalysisAlien.cxx:4645 AliAnalysisAlien.cxx:4646 AliAnalysisAlien.cxx:4647 AliAnalysisAlien.cxx:4648 AliAnalysisAlien.cxx:4649 AliAnalysisAlien.cxx:4650 AliAnalysisAlien.cxx:4651 AliAnalysisAlien.cxx:4652 AliAnalysisAlien.cxx:4653 AliAnalysisAlien.cxx:4654 AliAnalysisAlien.cxx:4655 AliAnalysisAlien.cxx:4656 AliAnalysisAlien.cxx:4657 AliAnalysisAlien.cxx:4658 AliAnalysisAlien.cxx:4659 AliAnalysisAlien.cxx:4660 AliAnalysisAlien.cxx:4661 AliAnalysisAlien.cxx:4662 AliAnalysisAlien.cxx:4663 AliAnalysisAlien.cxx:4664 AliAnalysisAlien.cxx:4665 AliAnalysisAlien.cxx:4666 AliAnalysisAlien.cxx:4667 AliAnalysisAlien.cxx:4668 AliAnalysisAlien.cxx:4669 AliAnalysisAlien.cxx:4670 AliAnalysisAlien.cxx:4671 AliAnalysisAlien.cxx:4672 AliAnalysisAlien.cxx:4673 AliAnalysisAlien.cxx:4674 AliAnalysisAlien.cxx:4675 AliAnalysisAlien.cxx:4676 AliAnalysisAlien.cxx:4677 AliAnalysisAlien.cxx:4678 AliAnalysisAlien.cxx:4679 AliAnalysisAlien.cxx:4680 AliAnalysisAlien.cxx:4681 AliAnalysisAlien.cxx:4682 AliAnalysisAlien.cxx:4683 AliAnalysisAlien.cxx:4684 AliAnalysisAlien.cxx:4685 AliAnalysisAlien.cxx:4686 AliAnalysisAlien.cxx:4687 AliAnalysisAlien.cxx:4688 AliAnalysisAlien.cxx:4689 AliAnalysisAlien.cxx:4690 AliAnalysisAlien.cxx:4691 AliAnalysisAlien.cxx:4692 AliAnalysisAlien.cxx:4693 AliAnalysisAlien.cxx:4694 AliAnalysisAlien.cxx:4695 AliAnalysisAlien.cxx:4696 AliAnalysisAlien.cxx:4697 AliAnalysisAlien.cxx:4698 AliAnalysisAlien.cxx:4699 AliAnalysisAlien.cxx:4700 AliAnalysisAlien.cxx:4701 AliAnalysisAlien.cxx:4702 AliAnalysisAlien.cxx:4703 AliAnalysisAlien.cxx:4704 AliAnalysisAlien.cxx:4705 AliAnalysisAlien.cxx:4706 AliAnalysisAlien.cxx:4707 AliAnalysisAlien.cxx:4708 AliAnalysisAlien.cxx:4709 AliAnalysisAlien.cxx:4710 AliAnalysisAlien.cxx:4711 AliAnalysisAlien.cxx:4712 AliAnalysisAlien.cxx:4713 AliAnalysisAlien.cxx:4714 AliAnalysisAlien.cxx:4715 AliAnalysisAlien.cxx:4716 AliAnalysisAlien.cxx:4717 AliAnalysisAlien.cxx:4718 AliAnalysisAlien.cxx:4719 AliAnalysisAlien.cxx:4720 AliAnalysisAlien.cxx:4721 AliAnalysisAlien.cxx:4722 AliAnalysisAlien.cxx:4723 AliAnalysisAlien.cxx:4724 AliAnalysisAlien.cxx:4725 AliAnalysisAlien.cxx:4726 AliAnalysisAlien.cxx:4727 AliAnalysisAlien.cxx:4728 AliAnalysisAlien.cxx:4729 AliAnalysisAlien.cxx:4730 AliAnalysisAlien.cxx:4731 AliAnalysisAlien.cxx:4732 AliAnalysisAlien.cxx:4733 AliAnalysisAlien.cxx:4734 AliAnalysisAlien.cxx:4735 AliAnalysisAlien.cxx:4736 AliAnalysisAlien.cxx:4737 AliAnalysisAlien.cxx:4738 AliAnalysisAlien.cxx:4739 AliAnalysisAlien.cxx:4740 AliAnalysisAlien.cxx:4741 AliAnalysisAlien.cxx:4742 AliAnalysisAlien.cxx:4743 AliAnalysisAlien.cxx:4744 AliAnalysisAlien.cxx:4745 AliAnalysisAlien.cxx:4746 AliAnalysisAlien.cxx:4747 AliAnalysisAlien.cxx:4748 AliAnalysisAlien.cxx:4749 AliAnalysisAlien.cxx:4750 AliAnalysisAlien.cxx:4751 AliAnalysisAlien.cxx:4752 AliAnalysisAlien.cxx:4753 AliAnalysisAlien.cxx:4754 AliAnalysisAlien.cxx:4755 AliAnalysisAlien.cxx:4756 AliAnalysisAlien.cxx:4757 AliAnalysisAlien.cxx:4758 AliAnalysisAlien.cxx:4759 AliAnalysisAlien.cxx:4760 AliAnalysisAlien.cxx:4761 AliAnalysisAlien.cxx:4762 AliAnalysisAlien.cxx:4763 AliAnalysisAlien.cxx:4764 AliAnalysisAlien.cxx:4765 AliAnalysisAlien.cxx:4766 AliAnalysisAlien.cxx:4767 AliAnalysisAlien.cxx:4768 AliAnalysisAlien.cxx:4769 AliAnalysisAlien.cxx:4770 AliAnalysisAlien.cxx:4771 AliAnalysisAlien.cxx:4772 AliAnalysisAlien.cxx:4773 AliAnalysisAlien.cxx:4774 AliAnalysisAlien.cxx:4775 AliAnalysisAlien.cxx:4776 AliAnalysisAlien.cxx:4777 AliAnalysisAlien.cxx:4778 AliAnalysisAlien.cxx:4779 AliAnalysisAlien.cxx:4780 AliAnalysisAlien.cxx:4781 AliAnalysisAlien.cxx:4782 AliAnalysisAlien.cxx:4783 AliAnalysisAlien.cxx:4784 AliAnalysisAlien.cxx:4785 AliAnalysisAlien.cxx:4786 AliAnalysisAlien.cxx:4787 AliAnalysisAlien.cxx:4788 AliAnalysisAlien.cxx:4789 AliAnalysisAlien.cxx:4790 AliAnalysisAlien.cxx:4791 AliAnalysisAlien.cxx:4792 AliAnalysisAlien.cxx:4793 AliAnalysisAlien.cxx:4794 AliAnalysisAlien.cxx:4795 AliAnalysisAlien.cxx:4796 AliAnalysisAlien.cxx:4797 AliAnalysisAlien.cxx:4798 AliAnalysisAlien.cxx:4799 AliAnalysisAlien.cxx:4800 AliAnalysisAlien.cxx:4801 AliAnalysisAlien.cxx:4802 AliAnalysisAlien.cxx:4803 AliAnalysisAlien.cxx:4804 AliAnalysisAlien.cxx:4805 AliAnalysisAlien.cxx:4806 AliAnalysisAlien.cxx:4807 AliAnalysisAlien.cxx:4808 AliAnalysisAlien.cxx:4809 AliAnalysisAlien.cxx:4810 AliAnalysisAlien.cxx:4811 AliAnalysisAlien.cxx:4812 AliAnalysisAlien.cxx:4813 AliAnalysisAlien.cxx:4814 AliAnalysisAlien.cxx:4815 AliAnalysisAlien.cxx:4816 AliAnalysisAlien.cxx:4817 AliAnalysisAlien.cxx:4818 AliAnalysisAlien.cxx:4819 AliAnalysisAlien.cxx:4820 AliAnalysisAlien.cxx:4821 AliAnalysisAlien.cxx:4822 AliAnalysisAlien.cxx:4823 AliAnalysisAlien.cxx:4824 AliAnalysisAlien.cxx:4825 AliAnalysisAlien.cxx:4826 AliAnalysisAlien.cxx:4827 AliAnalysisAlien.cxx:4828 AliAnalysisAlien.cxx:4829 AliAnalysisAlien.cxx:4830 AliAnalysisAlien.cxx:4831 AliAnalysisAlien.cxx:4832 AliAnalysisAlien.cxx:4833 AliAnalysisAlien.cxx:4834 AliAnalysisAlien.cxx:4835 AliAnalysisAlien.cxx:4836 AliAnalysisAlien.cxx:4837 AliAnalysisAlien.cxx:4838 AliAnalysisAlien.cxx:4839 AliAnalysisAlien.cxx:4840 AliAnalysisAlien.cxx:4841 AliAnalysisAlien.cxx:4842 AliAnalysisAlien.cxx:4843 AliAnalysisAlien.cxx:4844 AliAnalysisAlien.cxx:4845 AliAnalysisAlien.cxx:4846 AliAnalysisAlien.cxx:4847 AliAnalysisAlien.cxx:4848 AliAnalysisAlien.cxx:4849 AliAnalysisAlien.cxx:4850 AliAnalysisAlien.cxx:4851 AliAnalysisAlien.cxx:4852 AliAnalysisAlien.cxx:4853 AliAnalysisAlien.cxx:4854 AliAnalysisAlien.cxx:4855 AliAnalysisAlien.cxx:4856 AliAnalysisAlien.cxx:4857 AliAnalysisAlien.cxx:4858 AliAnalysisAlien.cxx:4859 AliAnalysisAlien.cxx:4860 AliAnalysisAlien.cxx:4861 AliAnalysisAlien.cxx:4862 AliAnalysisAlien.cxx:4863 AliAnalysisAlien.cxx:4864 AliAnalysisAlien.cxx:4865 AliAnalysisAlien.cxx:4866 AliAnalysisAlien.cxx:4867 AliAnalysisAlien.cxx:4868 AliAnalysisAlien.cxx:4869 AliAnalysisAlien.cxx:4870 AliAnalysisAlien.cxx:4871 AliAnalysisAlien.cxx:4872 AliAnalysisAlien.cxx:4873 AliAnalysisAlien.cxx:4874 AliAnalysisAlien.cxx:4875 AliAnalysisAlien.cxx:4876 AliAnalysisAlien.cxx:4877 AliAnalysisAlien.cxx:4878 AliAnalysisAlien.cxx:4879 AliAnalysisAlien.cxx:4880 AliAnalysisAlien.cxx:4881 AliAnalysisAlien.cxx:4882 AliAnalysisAlien.cxx:4883 AliAnalysisAlien.cxx:4884 AliAnalysisAlien.cxx:4885 AliAnalysisAlien.cxx:4886 AliAnalysisAlien.cxx:4887 AliAnalysisAlien.cxx:4888 AliAnalysisAlien.cxx:4889 AliAnalysisAlien.cxx:4890 AliAnalysisAlien.cxx:4891 AliAnalysisAlien.cxx:4892 AliAnalysisAlien.cxx:4893 AliAnalysisAlien.cxx:4894 AliAnalysisAlien.cxx:4895 AliAnalysisAlien.cxx:4896 AliAnalysisAlien.cxx:4897 AliAnalysisAlien.cxx:4898 AliAnalysisAlien.cxx:4899 AliAnalysisAlien.cxx:4900 AliAnalysisAlien.cxx:4901 AliAnalysisAlien.cxx:4902 AliAnalysisAlien.cxx:4903 AliAnalysisAlien.cxx:4904 AliAnalysisAlien.cxx:4905 AliAnalysisAlien.cxx:4906 AliAnalysisAlien.cxx:4907 AliAnalysisAlien.cxx:4908 AliAnalysisAlien.cxx:4909 AliAnalysisAlien.cxx:4910 AliAnalysisAlien.cxx:4911 AliAnalysisAlien.cxx:4912 AliAnalysisAlien.cxx:4913 AliAnalysisAlien.cxx:4914 AliAnalysisAlien.cxx:4915 AliAnalysisAlien.cxx:4916 AliAnalysisAlien.cxx:4917 AliAnalysisAlien.cxx:4918 AliAnalysisAlien.cxx:4919 AliAnalysisAlien.cxx:4920 AliAnalysisAlien.cxx:4921 AliAnalysisAlien.cxx:4922 AliAnalysisAlien.cxx:4923 AliAnalysisAlien.cxx:4924 AliAnalysisAlien.cxx:4925 AliAnalysisAlien.cxx:4926 AliAnalysisAlien.cxx:4927 AliAnalysisAlien.cxx:4928 AliAnalysisAlien.cxx:4929 AliAnalysisAlien.cxx:4930 AliAnalysisAlien.cxx:4931 AliAnalysisAlien.cxx:4932 AliAnalysisAlien.cxx:4933 AliAnalysisAlien.cxx:4934 AliAnalysisAlien.cxx:4935 AliAnalysisAlien.cxx:4936 AliAnalysisAlien.cxx:4937 AliAnalysisAlien.cxx:4938 AliAnalysisAlien.cxx:4939 AliAnalysisAlien.cxx:4940 AliAnalysisAlien.cxx:4941 AliAnalysisAlien.cxx:4942 AliAnalysisAlien.cxx:4943 AliAnalysisAlien.cxx:4944 AliAnalysisAlien.cxx:4945 AliAnalysisAlien.cxx:4946 AliAnalysisAlien.cxx:4947 AliAnalysisAlien.cxx:4948 AliAnalysisAlien.cxx:4949 AliAnalysisAlien.cxx:4950 AliAnalysisAlien.cxx:4951 AliAnalysisAlien.cxx:4952 AliAnalysisAlien.cxx:4953 AliAnalysisAlien.cxx:4954 AliAnalysisAlien.cxx:4955 AliAnalysisAlien.cxx:4956 AliAnalysisAlien.cxx:4957 AliAnalysisAlien.cxx:4958 AliAnalysisAlien.cxx:4959 AliAnalysisAlien.cxx:4960 AliAnalysisAlien.cxx:4961 AliAnalysisAlien.cxx:4962 AliAnalysisAlien.cxx:4963 AliAnalysisAlien.cxx:4964 AliAnalysisAlien.cxx:4965 AliAnalysisAlien.cxx:4966 AliAnalysisAlien.cxx:4967 AliAnalysisAlien.cxx:4968 AliAnalysisAlien.cxx:4969 AliAnalysisAlien.cxx:4970 AliAnalysisAlien.cxx:4971 AliAnalysisAlien.cxx:4972 AliAnalysisAlien.cxx:4973 AliAnalysisAlien.cxx:4974 AliAnalysisAlien.cxx:4975 AliAnalysisAlien.cxx:4976 AliAnalysisAlien.cxx:4977 AliAnalysisAlien.cxx:4978 AliAnalysisAlien.cxx:4979 AliAnalysisAlien.cxx:4980 AliAnalysisAlien.cxx:4981 AliAnalysisAlien.cxx:4982 AliAnalysisAlien.cxx:4983 AliAnalysisAlien.cxx:4984 AliAnalysisAlien.cxx:4985 AliAnalysisAlien.cxx:4986 AliAnalysisAlien.cxx:4987 AliAnalysisAlien.cxx:4988 AliAnalysisAlien.cxx:4989 AliAnalysisAlien.cxx:4990 AliAnalysisAlien.cxx:4991 AliAnalysisAlien.cxx:4992 AliAnalysisAlien.cxx:4993 AliAnalysisAlien.cxx:4994 AliAnalysisAlien.cxx:4995 AliAnalysisAlien.cxx:4996 AliAnalysisAlien.cxx:4997 AliAnalysisAlien.cxx:4998 AliAnalysisAlien.cxx:4999 AliAnalysisAlien.cxx:5000 AliAnalysisAlien.cxx:5001 AliAnalysisAlien.cxx:5002 AliAnalysisAlien.cxx:5003 AliAnalysisAlien.cxx:5004 AliAnalysisAlien.cxx:5005 AliAnalysisAlien.cxx:5006 AliAnalysisAlien.cxx:5007 AliAnalysisAlien.cxx:5008 AliAnalysisAlien.cxx:5009 AliAnalysisAlien.cxx:5010 AliAnalysisAlien.cxx:5011 AliAnalysisAlien.cxx:5012 AliAnalysisAlien.cxx:5013 AliAnalysisAlien.cxx:5014 AliAnalysisAlien.cxx:5015 AliAnalysisAlien.cxx:5016 AliAnalysisAlien.cxx:5017 AliAnalysisAlien.cxx:5018 AliAnalysisAlien.cxx:5019 AliAnalysisAlien.cxx:5020 AliAnalysisAlien.cxx:5021 AliAnalysisAlien.cxx:5022 AliAnalysisAlien.cxx:5023 AliAnalysisAlien.cxx:5024 AliAnalysisAlien.cxx:5025 AliAnalysisAlien.cxx:5026 AliAnalysisAlien.cxx:5027 AliAnalysisAlien.cxx:5028 AliAnalysisAlien.cxx:5029 AliAnalysisAlien.cxx:5030 AliAnalysisAlien.cxx:5031 AliAnalysisAlien.cxx:5032 AliAnalysisAlien.cxx:5033 AliAnalysisAlien.cxx:5034 AliAnalysisAlien.cxx:5035 AliAnalysisAlien.cxx:5036 AliAnalysisAlien.cxx:5037 AliAnalysisAlien.cxx:5038 AliAnalysisAlien.cxx:5039 AliAnalysisAlien.cxx:5040 AliAnalysisAlien.cxx:5041 AliAnalysisAlien.cxx:5042 AliAnalysisAlien.cxx:5043 AliAnalysisAlien.cxx:5044 AliAnalysisAlien.cxx:5045 AliAnalysisAlien.cxx:5046 AliAnalysisAlien.cxx:5047 AliAnalysisAlien.cxx:5048 AliAnalysisAlien.cxx:5049 AliAnalysisAlien.cxx:5050 AliAnalysisAlien.cxx:5051 AliAnalysisAlien.cxx:5052 AliAnalysisAlien.cxx:5053 AliAnalysisAlien.cxx:5054 AliAnalysisAlien.cxx:5055 AliAnalysisAlien.cxx:5056 AliAnalysisAlien.cxx:5057 AliAnalysisAlien.cxx:5058 AliAnalysisAlien.cxx:5059 AliAnalysisAlien.cxx:5060 AliAnalysisAlien.cxx:5061 AliAnalysisAlien.cxx:5062 AliAnalysisAlien.cxx:5063 AliAnalysisAlien.cxx:5064 AliAnalysisAlien.cxx:5065 AliAnalysisAlien.cxx:5066 AliAnalysisAlien.cxx:5067 AliAnalysisAlien.cxx:5068 AliAnalysisAlien.cxx:5069 AliAnalysisAlien.cxx:5070 AliAnalysisAlien.cxx:5071 AliAnalysisAlien.cxx:5072 AliAnalysisAlien.cxx:5073 AliAnalysisAlien.cxx:5074 AliAnalysisAlien.cxx:5075 AliAnalysisAlien.cxx:5076 AliAnalysisAlien.cxx:5077 AliAnalysisAlien.cxx:5078 AliAnalysisAlien.cxx:5079 AliAnalysisAlien.cxx:5080 AliAnalysisAlien.cxx:5081 AliAnalysisAlien.cxx:5082 AliAnalysisAlien.cxx:5083 AliAnalysisAlien.cxx:5084 AliAnalysisAlien.cxx:5085 AliAnalysisAlien.cxx:5086 AliAnalysisAlien.cxx:5087 AliAnalysisAlien.cxx:5088 AliAnalysisAlien.cxx:5089 AliAnalysisAlien.cxx:5090 AliAnalysisAlien.cxx:5091 AliAnalysisAlien.cxx:5092 AliAnalysisAlien.cxx:5093 AliAnalysisAlien.cxx:5094 AliAnalysisAlien.cxx:5095 AliAnalysisAlien.cxx:5096 AliAnalysisAlien.cxx:5097 AliAnalysisAlien.cxx:5098 AliAnalysisAlien.cxx:5099 AliAnalysisAlien.cxx:5100 AliAnalysisAlien.cxx:5101 AliAnalysisAlien.cxx:5102 AliAnalysisAlien.cxx:5103 AliAnalysisAlien.cxx:5104 AliAnalysisAlien.cxx:5105 AliAnalysisAlien.cxx:5106 AliAnalysisAlien.cxx:5107 AliAnalysisAlien.cxx:5108 AliAnalysisAlien.cxx:5109 AliAnalysisAlien.cxx:5110 AliAnalysisAlien.cxx:5111 AliAnalysisAlien.cxx:5112 AliAnalysisAlien.cxx:5113 AliAnalysisAlien.cxx:5114 AliAnalysisAlien.cxx:5115 AliAnalysisAlien.cxx:5116 AliAnalysisAlien.cxx:5117 AliAnalysisAlien.cxx:5118 AliAnalysisAlien.cxx:5119 AliAnalysisAlien.cxx:5120 AliAnalysisAlien.cxx:5121 AliAnalysisAlien.cxx:5122 AliAnalysisAlien.cxx:5123 AliAnalysisAlien.cxx:5124 AliAnalysisAlien.cxx:5125 AliAnalysisAlien.cxx:5126 AliAnalysisAlien.cxx:5127 AliAnalysisAlien.cxx:5128 AliAnalysisAlien.cxx:5129 AliAnalysisAlien.cxx:5130 AliAnalysisAlien.cxx:5131 AliAnalysisAlien.cxx:5132 AliAnalysisAlien.cxx:5133 AliAnalysisAlien.cxx:5134 AliAnalysisAlien.cxx:5135 AliAnalysisAlien.cxx:5136 AliAnalysisAlien.cxx:5137 AliAnalysisAlien.cxx:5138 AliAnalysisAlien.cxx:5139 AliAnalysisAlien.cxx:5140 AliAnalysisAlien.cxx:5141 AliAnalysisAlien.cxx:5142 AliAnalysisAlien.cxx:5143 AliAnalysisAlien.cxx:5144 AliAnalysisAlien.cxx:5145 AliAnalysisAlien.cxx:5146 AliAnalysisAlien.cxx:5147 AliAnalysisAlien.cxx:5148