ROOT logo
//=============================================================================
void runAsTask(int grid=0) {
  gSystem->Load("libPhysics.so");
  gSystem->Load("libEG.so");
  gSystem->Load("libTree.so");
  gSystem->Load("libVMC.so"); 
  gSystem->Load("libSTEERBase.so");
  gSystem->Load("libESD.so");
  gSystem->Load("libAOD.so");
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libPWG2unicor");
  
  if (grid) {
    if (!TGrid::Connect("alien://")) return;
    TChain *tr = CreateChainFromTags("wn.xml", "ESD");
  } else {
    gROOT->LoadMacro("makechain.C");
    tr = makechain("esdTree","filelist.txt");
  }

  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
  AliVEventHandler* esdH = new AliESDInputHandler;
  mgr->SetInputEventHandler(esdH);  
  gROOT->LoadMacro("$ALICE_ROOT/PWG2/UNICOR/AddTaskUnicor.C");
  AliAnalysisTaskUnicor *mytask = AddTaskUnicor();

  mgr->InitAnalysis();
  mgr->PrintStatus(); 
  mgr->StartAnalysis("local",tr);

  TFile::Open("AnalysisResults.root","read");
  gDirectory->Cd("PWG2UNICOR");
  TList *list = (TList *) gDirectory->Get("unilis");
  char *outfil = "unicor-result-as-anal.root";
  for (int i=0; i<list->GetEntries(); i++) {
    AliUnicorAnal *an = (AliUnicorAnal *) list->At(i);
    if (i==0) an->Save(outfil,"recreate");
    else an->Save(outfil);
    delete an;
  }
}
//=============================================================================
TChain* CreateChainFromTags(const char *xmlfile, const char *type="ESD")
{
  // Create a chain using tags from the xml file.
  TAlienCollection* coll = TAlienCollection::Open(xmlfile);
  if (!coll) {
    ::Error("CreateChainFromTags", "Cannot create an AliEn collection from %s", xmlfile);
    return NULL;
  }
  TGridResult* tagResult = coll->GetGridResult("",kFALSE,kFALSE);
  AliTagAnalysis *tagAna = new AliTagAnalysis(type);
  tagAna->ChainGridTags(tagResult);
  
  AliRunTagCuts      *runCuts = new AliRunTagCuts();
  AliLHCTagCuts      *lhcCuts = new AliLHCTagCuts();
  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
  AliEventTagCuts    *evCuts  = new AliEventTagCuts();
  // Check if the cuts configuration file was provided
  if (!gSystem->AccessPathName("ConfigureCuts.C")) {
    gROOT->LoadMacro("ConfigureCuts.C");
    ConfigureCuts(runCuts, lhcCuts, detCuts, evCuts);
  }
  TChain *chain = tagAna->QueryTags(runCuts, lhcCuts, detCuts, evCuts);
  if (!chain || !chain->GetNtrees()) return NULL;
  chain->ls();
  return chain;
}
//=============================================================================
 runAsTask.C:1
 runAsTask.C:2
 runAsTask.C:3
 runAsTask.C:4
 runAsTask.C:5
 runAsTask.C:6
 runAsTask.C:7
 runAsTask.C:8
 runAsTask.C:9
 runAsTask.C:10
 runAsTask.C:11
 runAsTask.C:12
 runAsTask.C:13
 runAsTask.C:14
 runAsTask.C:15
 runAsTask.C:16
 runAsTask.C:17
 runAsTask.C:18
 runAsTask.C:19
 runAsTask.C:20
 runAsTask.C:21
 runAsTask.C:22
 runAsTask.C:23
 runAsTask.C:24
 runAsTask.C:25
 runAsTask.C:26
 runAsTask.C:27
 runAsTask.C:28
 runAsTask.C:29
 runAsTask.C:30
 runAsTask.C:31
 runAsTask.C:32
 runAsTask.C:33
 runAsTask.C:34
 runAsTask.C:35
 runAsTask.C:36
 runAsTask.C:37
 runAsTask.C:38
 runAsTask.C:39
 runAsTask.C:40
 runAsTask.C:41
 runAsTask.C:42
 runAsTask.C:43
 runAsTask.C:44
 runAsTask.C:45
 runAsTask.C:46
 runAsTask.C:47
 runAsTask.C:48
 runAsTask.C:49
 runAsTask.C:50
 runAsTask.C:51
 runAsTask.C:52
 runAsTask.C:53
 runAsTask.C:54
 runAsTask.C:55
 runAsTask.C:56
 runAsTask.C:57
 runAsTask.C:58
 runAsTask.C:59
 runAsTask.C:60
 runAsTask.C:61
 runAsTask.C:62
 runAsTask.C:63
 runAsTask.C:64
 runAsTask.C:65
 runAsTask.C:66
 runAsTask.C:67
 runAsTask.C:68
 runAsTask.C:69
 runAsTask.C:70
 runAsTask.C:71