ROOT logo
const char *anatype = "ESD";

void AnalysisStrange()
{
// Analysis using ESD data
// Automatically generated analysis steering macro executed in grid subjobs

   TStopwatch timer;
   timer.Start();

// Set temporary merging directory to current one
   gSystem->Setenv("TMPDIR", gSystem->pwd());

// Set temporary compilation directory to current one
   gSystem->SetBuildDir(gSystem->pwd(), kTRUE);

// Reset existing include path and add current directory first in the search
   gSystem->SetIncludePath("-I.");
// load base root libraries
   gSystem->Load("libTree");
   gSystem->Load("libGeom");
   gSystem->Load("libVMC");
   gSystem->Load("libPhysics");

   gSystem->Load("libMinuit");

// Load analysis framework libraries
   gSystem->Load("libSTEERBase");
   gSystem->Load("libESD");
   gSystem->Load("libAOD");
   gSystem->Load("libANALYSIS");
   gSystem->Load("libOADB");
   gSystem->Load("libANALYSISalice");
   gSystem->Load("libCORRFW");

// include path
   TString intPath = gInterpreter->GetIncludePath();
   TObjArray *listpaths = intPath.Tokenize(" ");
   TIter nextpath(listpaths);
   TObjString *pname;
   while ((pname=(TObjString*)nextpath())) {
      TString current = pname->GetName();
      if (current.Contains("AliRoot") || current.Contains("ALICE_ROOT")) continue;
      gSystem->AddIncludePath(current);
   }
   if (listpaths) delete listpaths;
   gROOT->ProcessLine(".include $ALICE_ROOT/include");
   printf("Include path: %s\n", gSystem->GetIncludePath());

// Add aditional AliRoot libraries

// analysis source to be compiled at runtime (if any)
   gROOT->ProcessLine(".L AliAnalysisCentralitySelector.cxx+g");
   gROOT->ProcessLine(".L AliAnalysisTaskPerformanceStrange.cxx+g");

// connect to AliEn and make the chain
   if (!TGrid::Connect("alien://")) return;
// read the analysis manager from file
   AliAnalysisManager *mgr = AliAnalysisAlien::LoadAnalysisManager("analysis.root");
   if (!mgr) return;
   mgr->PrintStatus();
   AliLog::SetGlobalLogLevel(AliLog::kError);
   TChain *chain = CreateChain("wn.xml", anatype);

   mgr->StartAnalysis("localfile", chain);
   timer.Stop();
   timer.Print();
}

//________________________________________________________________________________
TChain* CreateChain(const char *xmlfile, const char *type="ESD")
{
// Create a chain using url's from xml file
   TString filename;
   Int_t run = 0;
   TString treename = type;
   treename.ToLower();
   treename += "Tree";
   printf("***************************************\n");
   printf("    Getting chain of trees %s\n", treename.Data());
   printf("***************************************\n");
   TAlienCollection *coll = TAlienCollection::Open(xmlfile);
   if (!coll) {
      ::Error("CreateChain", "Cannot create an AliEn collection from %s", xmlfile);
      return NULL;
   }
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   TChain *chain = new TChain(treename);
   coll->Reset();
   while (coll->Next()) {
      filename = coll->GetTURL();
      if (mgr) {
         Int_t nrun = AliAnalysisManager::GetRunFromAlienPath(filename);
         if (nrun && nrun != run) {
            printf("### Run number detected from chain: %d\n", nrun);
            mgr->SetRunFromPath(nrun);
            run = nrun;
         }
      }
      chain->Add(filename);
   }
   if (!chain->GetNtrees()) {
      ::Error("CreateChain", "No tree found from collection %s", xmlfile);
      return NULL;
   }
   return chain;
}

 AnalysisStrange.C:1
 AnalysisStrange.C:2
 AnalysisStrange.C:3
 AnalysisStrange.C:4
 AnalysisStrange.C:5
 AnalysisStrange.C:6
 AnalysisStrange.C:7
 AnalysisStrange.C:8
 AnalysisStrange.C:9
 AnalysisStrange.C:10
 AnalysisStrange.C:11
 AnalysisStrange.C:12
 AnalysisStrange.C:13
 AnalysisStrange.C:14
 AnalysisStrange.C:15
 AnalysisStrange.C:16
 AnalysisStrange.C:17
 AnalysisStrange.C:18
 AnalysisStrange.C:19
 AnalysisStrange.C:20
 AnalysisStrange.C:21
 AnalysisStrange.C:22
 AnalysisStrange.C:23
 AnalysisStrange.C:24
 AnalysisStrange.C:25
 AnalysisStrange.C:26
 AnalysisStrange.C:27
 AnalysisStrange.C:28
 AnalysisStrange.C:29
 AnalysisStrange.C:30
 AnalysisStrange.C:31
 AnalysisStrange.C:32
 AnalysisStrange.C:33
 AnalysisStrange.C:34
 AnalysisStrange.C:35
 AnalysisStrange.C:36
 AnalysisStrange.C:37
 AnalysisStrange.C:38
 AnalysisStrange.C:39
 AnalysisStrange.C:40
 AnalysisStrange.C:41
 AnalysisStrange.C:42
 AnalysisStrange.C:43
 AnalysisStrange.C:44
 AnalysisStrange.C:45
 AnalysisStrange.C:46
 AnalysisStrange.C:47
 AnalysisStrange.C:48
 AnalysisStrange.C:49
 AnalysisStrange.C:50
 AnalysisStrange.C:51
 AnalysisStrange.C:52
 AnalysisStrange.C:53
 AnalysisStrange.C:54
 AnalysisStrange.C:55
 AnalysisStrange.C:56
 AnalysisStrange.C:57
 AnalysisStrange.C:58
 AnalysisStrange.C:59
 AnalysisStrange.C:60
 AnalysisStrange.C:61
 AnalysisStrange.C:62
 AnalysisStrange.C:63
 AnalysisStrange.C:64
 AnalysisStrange.C:65
 AnalysisStrange.C:66
 AnalysisStrange.C:67
 AnalysisStrange.C:68
 AnalysisStrange.C:69
 AnalysisStrange.C:70
 AnalysisStrange.C:71
 AnalysisStrange.C:72
 AnalysisStrange.C:73
 AnalysisStrange.C:74
 AnalysisStrange.C:75
 AnalysisStrange.C:76
 AnalysisStrange.C:77
 AnalysisStrange.C:78
 AnalysisStrange.C:79
 AnalysisStrange.C:80
 AnalysisStrange.C:81
 AnalysisStrange.C:82
 AnalysisStrange.C:83
 AnalysisStrange.C:84
 AnalysisStrange.C:85
 AnalysisStrange.C:86
 AnalysisStrange.C:87
 AnalysisStrange.C:88
 AnalysisStrange.C:89
 AnalysisStrange.C:90
 AnalysisStrange.C:91
 AnalysisStrange.C:92
 AnalysisStrange.C:93
 AnalysisStrange.C:94
 AnalysisStrange.C:95
 AnalysisStrange.C:96
 AnalysisStrange.C:97
 AnalysisStrange.C:98
 AnalysisStrange.C:99
 AnalysisStrange.C:100
 AnalysisStrange.C:101
 AnalysisStrange.C:102
 AnalysisStrange.C:103
 AnalysisStrange.C:104
 AnalysisStrange.C:105
 AnalysisStrange.C:106
 AnalysisStrange.C:107
 AnalysisStrange.C:108
 AnalysisStrange.C:109