ROOT logo
#include <iostream>
#include "TSystem.h"
#include "TFileMerger.h"
#include "TGrid.h"
#include "TAlienCollection.h"
#include "TFile.h"
#include "TH1F.h"
#include "TList.h"
#include "TH1I.h"
#include "TMath.h"
#include "TGraphErrors.h"
#include "AliAnalysisTaskdNdetaMC.h"
#include "TROOT.h"

using namespace std;



void MergeCollectionFromGrid(const char * incollection = "test.xml", const char * outputfile= "dndeta_merged.root")
{
  // for running with root only
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libSTEERBase.so");
  gSystem->Load("libESD.so");
  gSystem->Load("libAOD.so"); 

  // load analysis framework
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");

  // load dndeta task
  gROOT->LoadMacro("AliAnalysisTaskdNdetaMC.cxx+");


  TFileMerger * fileMerger  = new TFileMerger(0); // dont merge local files

  TGrid::Connect("alien://");
  TGridCollection * coll = TAlienCollection::Open (incollection);
  Int_t  ifile=0;
  while(coll->Next()){
    fileMerger->AddFile(TString("alien://")+coll->GetLFN());
    ifile++;
    //    if(ifile>2) break;
  }
  fileMerger->OutputFile("tmp.root");
  fileMerger->Merge();

  // Reopen the merged file, normalize histos and save them back.
  // SOME DUPLICATED CODE... SOME CLEAN UP WOULD BE GOOD
  AliAnalysisTaskdNdetaMC * localTask  = new AliAnalysisTaskdNdetaMC("merger", "tmp.root");
  localTask->Finalize();
  
  TFile * fout = new TFile (outputfile, "recreate");
  localTask->GetList()->Write();
  fout->Close();
}
 MergeCollectionFromGrid.C:1
 MergeCollectionFromGrid.C:2
 MergeCollectionFromGrid.C:3
 MergeCollectionFromGrid.C:4
 MergeCollectionFromGrid.C:5
 MergeCollectionFromGrid.C:6
 MergeCollectionFromGrid.C:7
 MergeCollectionFromGrid.C:8
 MergeCollectionFromGrid.C:9
 MergeCollectionFromGrid.C:10
 MergeCollectionFromGrid.C:11
 MergeCollectionFromGrid.C:12
 MergeCollectionFromGrid.C:13
 MergeCollectionFromGrid.C:14
 MergeCollectionFromGrid.C:15
 MergeCollectionFromGrid.C:16
 MergeCollectionFromGrid.C:17
 MergeCollectionFromGrid.C:18
 MergeCollectionFromGrid.C:19
 MergeCollectionFromGrid.C:20
 MergeCollectionFromGrid.C:21
 MergeCollectionFromGrid.C:22
 MergeCollectionFromGrid.C:23
 MergeCollectionFromGrid.C:24
 MergeCollectionFromGrid.C:25
 MergeCollectionFromGrid.C:26
 MergeCollectionFromGrid.C:27
 MergeCollectionFromGrid.C:28
 MergeCollectionFromGrid.C:29
 MergeCollectionFromGrid.C:30
 MergeCollectionFromGrid.C:31
 MergeCollectionFromGrid.C:32
 MergeCollectionFromGrid.C:33
 MergeCollectionFromGrid.C:34
 MergeCollectionFromGrid.C:35
 MergeCollectionFromGrid.C:36
 MergeCollectionFromGrid.C:37
 MergeCollectionFromGrid.C:38
 MergeCollectionFromGrid.C:39
 MergeCollectionFromGrid.C:40
 MergeCollectionFromGrid.C:41
 MergeCollectionFromGrid.C:42
 MergeCollectionFromGrid.C:43
 MergeCollectionFromGrid.C:44
 MergeCollectionFromGrid.C:45
 MergeCollectionFromGrid.C:46
 MergeCollectionFromGrid.C:47
 MergeCollectionFromGrid.C:48
 MergeCollectionFromGrid.C:49
 MergeCollectionFromGrid.C:50
 MergeCollectionFromGrid.C:51
 MergeCollectionFromGrid.C:52
 MergeCollectionFromGrid.C:53
 MergeCollectionFromGrid.C:54
 MergeCollectionFromGrid.C:55
 MergeCollectionFromGrid.C:56
 MergeCollectionFromGrid.C:57
 MergeCollectionFromGrid.C:58
 MergeCollectionFromGrid.C:59