simplify macro
authorgconesab <gustavo.conesa.balbastre@cern.ch>
Thu, 15 Jan 2015 10:46:30 +0000 (11:46 +0100)
committergconesab <gustavo.conesa.balbastre@cern.ch>
Thu, 15 Jan 2015 15:06:40 +0000 (16:06 +0100)
PWGGA/CaloTrackCorrelations/macros/anaGenKine.C

index f136ea7..9d45952 100644 (file)
 /* $Id:  $ */
 //--------------------------------------------------
-// Example macro to do analysis with the 
-// analysis classes in CaloTrackCorrelations
-// Can be executed with Root and AliRoot
-//
-// Pay attention to the options and definitions
-// set in the lines below
-//
-//  Author : Gustavo Conesa Balbastre (INFN-LNF)
-//
+// Example of simple analysis of a single file
+// accessing directly the MC kinematics information
+// nothing else.
+// Execute the analysis in AliAnaGenKine
 //-------------------------------------------------
-enum anaModes {mLocal=0, mPROOF=1, mPlugin=2, mGRID=3};
-//mLocal    = 0: Analyze locally files in your computer
-//mPROOF    = 1: Analyze files on GRID with Plugin
-//mPlugin   = 2: Analyze files on GRID with Plugin
-//mGRID     = 3: Analyze files on GRID, jobs launched from aliensh
-
-//---------------------------------------------------------------------------
-// Settings to read locally several files, only for "mLocal" mode
-// The different values are default, they can be set with environmental 
-// variables: INDIR, PATTERN, NFILES, respectivelly
-
-char * kInDir   = "/user/data/files/"; 
-char * kPattern = ""; // Data are in files kInDir/kPattern+i 
-Int_t  kFile    = 6; 
-
-//---------------------------------------------------------------------------
-// Dataset for proof analysis, mode=mPROOF
-// char * kDataset = "/alice/vernet/PbPb_LHC10h_ESD";
-
-char *  kDatasetPROOF     = "/alice/vernet/LHC11b_149646";
-Int_t   kDatasetNMaxFiles = 20;
-TString ccin2p3UserName   = "arbor" ;
-TString alienUserName     = "narbor" ;
-
-//---------------------------------------------------------------------------
-// Collection file for grid analysis
-
-char * kXML = "collection.xml";
-
-//---------------------------------------------------------------------------
-//Scale histograms from file. Change to kTRUE when xsection file exists
-//Put name of file containing xsection 
-//Put number of events per ESD file
-//This is an specific case for normalization of Pythia files.
-const char * kXSFileName = "pyxsec.root";
-
-//---------------------------------------------------------------------------
-
-//Set some default values, but used values are set in the code!
-
-Bool_t  kMC        = kFALSE; //With real data kMC = kFALSE
-TString kInputData = "ESD"; //ESD, AOD, MC, deltaAOD
-Int_t   kYear      = 2011;
-TString kCollision = "pp";
-Bool_t  outAOD     = kFALSE; //Some tasks doesnt need it.
-TString kTreeName;
-TString kPass      = "";
-char    kTrigger[1024];
-Int_t   kRun       = 0;
 
 //________________________
-void anaGenKine(Int_t mode=mGRID)
+void anaGenKine(Int_t mode)
 {
   // Main
   
   //--------------------------------------------------------------------
   // Load analysis libraries
   // Look at the method below, 
-  // change whatever you need for your analysis case
   // ------------------------------------------------------------------
   
-  LoadLibraries(mode) ;
+  LoadLibraries() ;
   //gSystem->ListLibraries();
   
-  //-------------------------------------------------------------------------------------------------
-  //Create chain from ESD and from cross sections files, look below for options.
-  //-------------------------------------------------------------------------------------------------
-  
-  // Set kInputData and kTreeName looking to the kINDIR
-  
-  //CheckInputData(mode);
-  
-  // Check global analysis settings  
-  
-  //CheckEnvironmentVariables();
-  
-  //printf("*********************************************\n");
-  //printf("*** Input data < %s >, pass %s, tree < %s >, MC?  < %d > ***\n",kInputData.Data(),kPass.Data(),kTreeName.Data(),kMC);
-  
-  //printf("*********************************************\n");
-  kTreeName  = "TE";
-  kInputData = "MC";
-  TChain * chain   = new TChain(kTreeName) ;
+  TChain * chain   = new TChain("TE") ;
   TChain * chainxs = new TChain("Xsection") ;
   
   chain  ->AddFile("galice.root");
   chainxs->AddFile("pyxsec.root");
 
-  //CreateChain(mode, chain, chainxs); 
   
   Double_t scale = -1;
-  printf("===== kMC %d, chainxs %p\n",kMC,chainxs);
   if(chainxs && chainxs->GetEntries() > 0)
   {
     Int_t nfiles = chainxs->GetEntries();
@@ -135,85 +60,24 @@ void anaGenKine(Int_t mode=mGRID)
   
   AliLog::SetGlobalLogLevel(AliLog::kError);//Minimum prints on screen
   
-  //------------------------------------------
-  //  Alien handler part
-  //------------------------------------------
-  AliAnalysisGrid *alienHandler=0x0;
-  if(mode==mPlugin)
-  {
-    // Create and configure the alien handler plugin
-    gROOT->LoadMacro("CreateAlienHandler.C");
-    alienHandler = CreateAlienHandler();
-    if (!alienHandler) return;
-  }  
-  
   //--------------------------------------
   // Make the analysis manager
   //-------------------------------------
   AliAnalysisManager *mgr  = new AliAnalysisManager("Manager", "Manager");
-  //AliAnalysisManager::SetUseProgressBar(kTRUE);
-  //mgr->SetSkipTerminate(kTRUE);
-  //mgr->SetNSysInfo(1);
-  
-//  if(mode==mPlugin)
-//  {
-//    // Connect plugin to the analysis manager
-//    mgr->SetGridHandler(alienHandler);
-//  }
   
   // MC handler
-  if((kMC || kInputData == "MC") && !kInputData.Contains("AOD"))
-  {
-    AliMCEventHandler* mcHandler = new AliMCEventHandler();
-    mcHandler->SetReadTR(kFALSE);//Do not search TrackRef file
-    mgr->SetMCtruthEventHandler(mcHandler);
-    if( kInputData == "MC") 
-    {
-      cout<<"MC INPUT EVENT HANDLER"<<endl;
-      mgr->SetInputEventHandler(NULL);
-    }
-  }
-  
-  
-//  // AOD output handler
-//  if(kInputData!="deltaAOD" && outAOD)
-//  {
-//    cout<<"Init output handler"<<endl;
-//    AliAODHandler* aodoutHandler   = new AliAODHandler();
-//    aodoutHandler->SetOutputFileName("aod.root");
-//    ////aodoutHandler->SetCreateNonStandardAOD();
-//    mgr->SetOutputEventHandler(aodoutHandler);
-//  }
-//  
-//  //input
-//  
-//  if(kInputData == "ESD")
-//  {
-//    // ESD handler
-//    AliESDInputHandler *esdHandler = new AliESDInputHandler();
-//    esdHandler->SetReadFriends(kFALSE);
-//    mgr->SetInputEventHandler(esdHandler);
-//    cout<<"ESD handler "<<mgr->GetInputEventHandler()<<endl;
-//  }
-//  else if(kInputData.Contains("AOD"))
-//  {
-//    // AOD handler
-//    AliAODInputHandler *aodHandler = new AliAODInputHandler();
-//    mgr->SetInputEventHandler(aodHandler);
-//    if(kInputData == "deltaAOD") aodHandler->AddFriend("deltaAODCaloTrackCorr.root");
-//    cout<<"AOD handler "<<mgr->GetInputEventHandler()<<endl;
-//  }
-  
-  //mgr->RegisterExternalFile("deltaAODCaloTrackCorr.root");
-  mgr->SetDebugLevel(1); // For debugging, do not uncomment if you want no messages.
+  AliMCEventHandler* mcHandler = new AliMCEventHandler();
+  mcHandler->SetReadTR(kFALSE);//Do not search TrackRef file
+  mgr->SetMCtruthEventHandler(mcHandler);
+  mgr->SetInputEventHandler(NULL);
+
+  //mgr->SetDebugLevel(1); // For debugging, do not uncomment if you want no messages.
   
   TString outputFile = AliAnalysisManager::GetCommonFileName(); 
    
   gROOT->LoadMacro("AddTaskGenKine.C");  
   
   AliAnalysisTaskCaloTrackCorrelation *ana   = AddTaskGenKine(outputFile, scale);
-    
   
   //-----------------------
   // Run the analysis
@@ -221,55 +85,16 @@ void anaGenKine(Int_t mode=mGRID)
   mgr->InitAnalysis();
   mgr->PrintStatus();
   
-  if      (mode == mPlugin) mgr->StartAnalysis("grid");
-  else if (mode == mPROOF ) mgr->StartAnalysis("proof",chain);
-  else                      mgr->StartAnalysis("local",chain);
+  mgr->StartAnalysis("local",chain);
   
   cout <<" Analysis ended sucessfully "<< endl ;
   
 }
 
 //_____________________________
-void  LoadLibraries(Int_t mode)
+void  LoadLibraries()
 {
   
-  if (mode == mPROOF) {
-    //TProof::Mgr("ccalpmaster")->SetROOTVersion("ALICE_v5-27-06b");
-    gROOT->LoadMacro("/afs/in2p3.fr/group/alice/laf/EnableAliRootForLAF.C");
-    TProof* proof = EnableAliRootForLAF("ccaplmaster",nPROOFWorkers.Data(),ccin2p3UserName.Data(),alienUserName.Data(),"",kFALSE,kTRUE,kTRUE,"OADB:ANALYSIS:ANALYSISalice:AOD:ESD:CORRFW:STEERBase:EMCALUtils:PHOSUtils:PWGCaloTrackCorrBase:PWGGACaloTrackCorrelations");
-    
-    //  TProof* proof = TProof::Open("ccaplmaster",Form("workers=%s",nPROOFWorkers.Data()));
-    
-    //     //proof->ClearPackages();
-    //     proof->UploadPackage("STEERBase");
-    //     proof->UploadPackage("ESD");
-    //     proof->UploadPackage("AOD");
-    //     proof->UploadPackage("ANALYSIS");
-    //     proof->UploadPackage("OADB");
-    //     proof->UploadPackage("ANALYSISalice");
-    //     proof->UploadPackage("CORRFW");
-    //     //proof->UploadPackage("JETAN");
-    //     proof->UploadPackage("PHOSUtils");
-    //     proof->UploadPackage("EMCALUtils");
-    //     proof->UploadPackage("PWGCaloTrackCorrBase");
-    //     proof->UploadPackage("PWGGACaloTrackCorrelations");
-
-    //     proof->EnablePackage("STEERBase");
-    //     proof->EnablePackage("ESD");
-    //     proof->EnablePackage("AOD");
-    //     proof->EnablePackage("ANALYSIS");
-    //     proof->EnablePackage("OADB");
-    //     proof->EnablePackage("ANALYSISalice");
-    //     proof->EnablePackage("CORRFW");
-    //     //proof->EnablePackage("JETAN");
-    //     proof->EnablePackage("PHOSUtils");
-    //     proof->EnablePackage("EMCALUtils");
-    //     proof->EnablePackage("PWGCaloTrackCorrBase");
-    //     proof->EnablePackage("PWGGACaloTrackCorrelations");
-
-    return;
-  }  
-  
   //--------------------------------------
   // Load the needed libraries most of them already loaded by aliroot
   //--------------------------------------
@@ -297,20 +122,7 @@ void  LoadLibraries(Int_t mode)
   gSystem->Load("libVZERObase");  // Root + libraries to if reclusterization is done
   gSystem->Load("libVZEROrec");   // Root + libraries to if reclusterization is done
   
-  gSystem->Load("libEMCALUtils");
-  //SetupPar("EMCALUtils");
-  gSystem->Load("libEMCALraw");  // Root + libraries to if reclusterization is done
-  gSystem->Load("libEMCALbase"); // Root + libraries to if reclusterization is done
-  gSystem->Load("libEMCALsim");  // Root + libraries to if reclusterization is done
-  gSystem->Load("libEMCALrec");  // Root + libraries to if reclusterization is done
-  //SetupPar("EMCALraw");
-  //SetupPar("EMCALbase");
-  //SetupPar("EMCALsim");
-  //SetupPar("EMCALrec");
-  
   gSystem->Load("libANALYSISalice");
-  //gSystem->Load("libTender"); 
-  //gSystem->Load("libTenderSupplies");
   
   gSystem->Load("libPHOSUtils");
   gSystem->Load("libEMCALUtils");
@@ -319,14 +131,6 @@ void  LoadLibraries(Int_t mode)
   //SetupPar("PWGCaloTrackCorrBase");
   //SetupPar("PWGGACaloTrackCorrelations");
   
-  //gSystem->Load("libJETAN");
-  //gSystem->Load("FASTJETAN");
-  //gSystem->Load("PWGJE");
-
-  //gSystem->Load("libCORRFW");
-  //gSystem->Load("libPWGGAGammaConv"); 
-  //SetupPar("PWGGAGammaConv"); 
   
   // needed for plugin?
   gSystem->AddIncludePath("-I$ALICE_ROOT");
@@ -377,452 +181,6 @@ void SetupPar(char* pararchivename)
   printf("Current dir: %s\n", ocwd.Data());
 }
 
-//______________________________________
-void CheckInputData(const anaModes mode)
-{
-  //Sets input data and tree
-  
-  TString ocwd = gSystem->WorkingDirectory();
-  
-  //---------------------------------------
-  //Local files analysis
-  //---------------------------------------
-  if(mode == mLocal){    
-    //If you want to add several ESD files sitting in a common directory INDIR
-    //Specify as environmental variables the directory (INDIR), the number of files 
-    //to analyze (NFILES) and the pattern name of the directories with files (PATTERN)
-    
-    if(gSystem->Getenv("INDIR"))  
-      kInDir = gSystem->Getenv("INDIR") ; 
-    else cout<<"INDIR not set, use default: "<<kInDir<<endl;   
-    
-    TString sindir(kInDir);
-    if     (sindir.Contains("pass1")) kPass = "pass1";
-    else if(sindir.Contains("pass2")) kPass = "pass2";
-    else if(sindir.Contains("pass3")) kPass = "pass3";
-    
-    if(gSystem->Getenv("PATTERN"))   
-      kPattern = gSystem->Getenv("PATTERN") ; 
-    else  cout<<"PATTERN not set, use default: "<<kPattern<<endl;
-    
-    cout<<"INDIR   : "<<kInDir<<endl;
-    cout<<"NFILES  : "<<kFile<<endl;
-    
-    char fileE[120] ;   
-    char fileA[120] ;   
-    char fileG[120] ;
-    char fileEm[120] ;   
-    for (Int_t event = 0 ; event < kFile ; event++) {
-      sprintf(fileE,  "%s/%s%d/AliESDs.root",    kInDir,kPattern,event) ; 
-      sprintf(fileA,  "%s/%s%d/AliAOD.root",     kInDir,kPattern,event) ; 
-      sprintf(fileG,  "%s/%s%d/galice.root",     kInDir,kPattern,event) ; 
-      sprintf(fileEm, "%s/%s%d/embededAOD.root", kInDir,kPattern,event) ; 
-      
-      TFile * fESD = TFile::Open(fileE) ; 
-      TFile * fAOD = TFile::Open(fileA) ; 
-      
-      //Check if file exists and add it, if not skip it
-      if (fESD) 
-      {
-        kTreeName  = "esdTree";
-        kInputData = "ESD";
-        TFile * fG = TFile::Open(fileG);
-        if(fG) { kMC = kTRUE; fG->Close();}
-        else     kMC = kFALSE;
-        
-        // Get run number
-        TTree* esdTree = (TTree*)fESD->Get("esdTree");
-        AliESDEvent* esd = new AliESDEvent();
-        esd->ReadFromTree(esdTree);
-        esdTree->GetEvent(0);
-        kRun = esd->GetRunNumber();
-        
-        return;
-      }
-      else if(fAOD)
-      {
-        kTreeName  = "aodTree";
-        kInputData = "AOD";
-        if(((TTree*) fAOD->Get("aodTree"))->GetBranch("mcparticles")) kMC=kTRUE;
-        else kMC = kFALSE;
-        
-        // Get run number
-        TTree* aodTree = (TTree*)fAOD->Get("aodTree");
-        AliAODEvent* aod = new AliAODEvent();
-        aod->ReadFromTree(aodTree);
-        aodTree->GetEvent(0);
-        kRun = aod->GetRunNumber();
-        return;
-      }
-      else if(TFile::Open(fileEm))
-      {
-        kTreeName  = "aodTree";
-        kInputData = "AOD";
-        kMC        = kTRUE;
-        
-        return;
-      }
-      else if(TFile::Open(fileG))
-      {
-        kTreeName  = "TE";
-        kInputData = "MC";
-        kMC        = kTRUE;
-        return;
-      }
-    }
-    
-    if(fESD) fESD->Close();
-    if(fAOD) fAOD->Close();
-    
-  }// local files analysis
-  
-  //------------------------------
-  //GRID xml files
-  //-----------------------------
-  else if(mode == mGRID){
-    //Get colection file. It is specified by the environmental
-    //variable XML
-    
-    if(gSystem->Getenv("XML") )
-      kXML = gSystem->Getenv("XML");
-    else
-      sprintf(kXML, "collection.xml") ; 
-    
-    if (!TFile::Open(kXML)) {
-      printf("No collection file with name -- %s -- was found\n",kXML);
-      return ;
-    }
-    else cout<<"XML file "<<kXML<<endl;
-    
-    //Load necessary libraries and connect to the GRID
-    gSystem->Load("libNetx") ; 
-    gSystem->Load("libRAliEn"); 
-    TGrid::Connect("alien://") ;
-    
-    //Feed Grid with collection file
-    TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(kXML);
-    if (! collection) {
-      AliError(Form("%s not found", kXML)) ; 
-      return kFALSE ; 
-    }
-    TGridResult* result = collection->GetGridResult("",0 ,0);
-    
-    for (Int_t index = 0; index < result->GetEntries(); index++) {
-      TString alienURL = result->GetKey(index, "turl") ; 
-      cout << "================== " << alienURL << endl ; 
-      
-      if     (alienURL.Contains("pass1")) kPass = "pass1";
-      else if(alienURL.Contains("pass2")) kPass = "pass2";
-      else if(alienURL.Contains("pass3")) kPass = "pass3";
-      
-      kRun = AliAnalysisManager::GetRunFromAlienPath(alienURL.Data());
-      printf("Run number from alien path = %d\n",kRun);
-      
-      TFile * fAOD = 0 ; 
-      //Check if file exists and add it, if not skip it
-      if (alienURL.Contains("AliESDs.root"))  
-      {
-        kTreeName  = "esdTree";
-        kInputData = "ESD";
-        alienURL.ReplaceAll("AliESDs.root","galice.root");
-        if(TFile::Open(alienURL)) kMC=kTRUE;
-        else kMC = kFALSE;
-        return;
-      }
-      else if(alienURL.Contains("AliAOD.root"))
-      {
-        kTreeName  = "aodTree";
-        kInputData = "AOD";
-        fAOD = TFile::Open(alienURL);
-        if(((TTree*) fAOD->Get("aodTree"))->GetBranch("mcparticles")) kMC=kTRUE;
-        else kMC = kFALSE;
-        return;
-      }
-      else if(alienURL.Contains("embededAOD.root"))
-      {
-        kTreeName  = "aodTree";
-        kInputData = "AOD";
-        kMC=kTRUE;
-        return;
-      }
-      else if(alienURL.Contains("galice.root"))
-      {
-        kTreeName  = "TE";
-        kInputData = "MC";
-        kMC=kTRUE;
-        return;
-      } 
-    }
-  }// xml analysis
-  //------------------------------
-  //PROOF files
-  //-----------------------------
-  else if(mode == mPROOF){
-    
-    TFileCollection* coll  = gProof->GetDataSet(kDatasetPROOF)->GetStagedSubset();
-    
-    TIter iter(coll->GetList());
-    
-    TFileInfo* fileInfo = 0;
-    while ((fileInfo = dynamic_cast<TFileInfo*> (iter())))
-    {
-      if (fileInfo->GetFirstUrl()) {
-        TString ProofURL = fileInfo->GetFirstUrl()->GetUrl();
-        cout << "================== " << ProofURL << endl ; 
-        
-        if     (ProofURL.Contains("pass1")) kPass = "pass1";
-        else if(ProofURL.Contains("pass2")) kPass = "pass2";
-        else if(ProofURL.Contains("pass3")) kPass = "pass3";
-        
-        kRun = AliAnalysisManager::GetRunFromAlienPath(ProofURL.Data());
-        printf("Run number from alien path = %d\n",kRun);
-        
-        TFile * fAOD = 0 ; 
-        //Check if file exists and add it, if not skip it
-        if (ProofURL.Contains("AliESDs.root"))  
-        {
-          kTreeName  = "esdTree";
-          kInputData = "ESD";
-          alienURL.ReplaceAll("AliESDs.root","galice.root");
-          if(TFile::Open(ProofURL)) kMC=kTRUE;
-          else kMC = kFALSE;
-          
-          return;
-        }
-        else if(ProofURL.Contains("AliAOD.root"))
-        {
-          kTreeName  = "aodTree";
-          kInputData = "AOD";
-          fAOD = TFile::Open(ProofURL);
-          if(((TTree*) fAOD->Get("aodTree"))->GetBranch("mcparticles")) kMC=kTRUE;
-          else kMC = kFALSE;
-          return;
-        }
-        else if(ProofURL.Contains("embededAOD.root"))
-        {
-          kTreeName  = "aodTree";
-          kInputData = "AOD";
-          kMC=kTRUE;
-          return;
-        }
-        else if(ProofURL.Contains("galice.root"))
-        {
-          kTreeName  = "TE";
-          kInputData = "MC";
-          kMC=kTRUE;
-          return;
-        } 
-      }
-    }
-  }// proof analysis
-  
-  gSystem->ChangeDirectory(ocwd.Data());
-  
-}
-
-//_____________________________________________________________________
-void CreateChain(const anaModes mode, TChain * chain, TChain * chainxs)
-{
-  //Fills chain with data
-  TString ocwd = gSystem->WorkingDirectory();
-  
-  //---------------------------------------
-  // Local files analysis
-  //---------------------------------------
-  if(mode == mLocal){    
-    //If you want to add several ESD files sitting in a common directory INDIR
-    //Specify as environmental variables the directory (INDIR), the number of files 
-    //to analyze (NFILES) and the pattern name of the directories with files (PATTERN)
-    
-    if(gSystem->Getenv("INDIR"))  
-      kInDir = gSystem->Getenv("INDIR") ; 
-    else cout<<"INDIR not set, use default: "<<kInDir<<endl;   
-    
-    if(gSystem->Getenv("PATTERN"))   
-      kPattern = gSystem->Getenv("PATTERN") ; 
-    else  cout<<"PATTERN not set, use default: "<<kPattern<<endl;
-    
-    if(gSystem->Getenv("NFILES"))
-      kFile = atoi(gSystem->Getenv("NFILES")) ;
-    else cout<<"NFILES not set, use default: "<<kFile<<endl;
-    
-    //Check if env variables are set and are correct
-    if ( kInDir  && kFile) {
-      printf("Get %d files from directory %s\n",kFile,kInDir);
-      if ( ! gSystem->cd(kInDir) ) {//check if ESDs directory exist
-        printf("%s does not exist\n", kInDir) ;
-        return ;
-      }
-      
-      //if(gSystem->Getenv("XSFILE"))  
-      //kXSFileName = gSystem->Getenv("XSFILE") ; 
-      //else cout<<" XS file name not set, use default: "<<kXSFileName<<endl;  
-      char * kGener = gSystem->Getenv("GENER");
-      if(kGener) {
-        cout<<"GENER "<<kGener<<endl;
-        if     (!strcmp(kGener,"PYTHIA")) kXSFileName = "pyxsec.root";
-        else if(!strcmp(kGener,"HERWIG")) kXSFileName = "hexsec.root";
-        else cout<<" UNKNOWN GENER, use default: "<<kXSFileName<<endl;
-      }
-      else cout<<" GENER not set, use default xs file name: "<<kXSFileName<<endl;
-      
-      cout<<"INDIR   : "<<kInDir     <<endl;
-      cout<<"NFILES  : "<<kFile      <<endl;
-      cout<<"PATTERN : "<<kPattern   <<endl;
-      cout<<"XSFILE  : "<<kXSFileName<<endl;
-      
-      TString datafile="";
-      if     (kInputData == "ESD")        datafile = "AliESDs.root" ;
-      else if(kInputData.Contains("AOD")) datafile = "AliAOD.root"  ;
-      else if(kInputData == "MC")         datafile = "galice.root"  ;
-      
-      //Loop on ESD/AOD/MC files, add them to chain
-      Int_t event =0;
-      Int_t skipped=0 ; 
-      char file[120] ;
-      char filexs[120] ;
-      
-      for (event = 0 ; event < kFile ; event++) {
-        sprintf(file,   "%s/%s%d/%s", kInDir,kPattern,event,datafile.Data()) ; 
-        sprintf(filexs, "%s/%s%d/%s", kInDir,kPattern,event,kXSFileName) ; 
-        TFile * fData = 0 ; 
-        //Check if file exists and add it, if not skip it
-        if ( fData = TFile::Open(file)) {
-          if ( fData->Get(kTreeName) ) { 
-            printf("++++ Adding %s\n", file) ;
-            chain->AddFile(file);
-            chainxs->Add(filexs) ; 
-          }
-        }
-        else { 
-          printf("---- Skipping %s\n", file) ;
-          skipped++ ;
-        }
-      }
-    }
-    else {
-      TString input = "AliESDs.root" ;
-      cout<<">>>>>> No list added, take a single file <<<<<<<<< "<<input<<endl;
-      chain->AddFile(input);
-    }
-    
-  }// local files analysis
-  
-  //------------------------------
-  // GRID xml files
-  //------------------------------
-  else if(mode == mGRID){
-    //Get colection file. It is specified by the environmental
-    //variable XML
-    
-    //Feed Grid with collection file
-    TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(kXML);
-    if (! collection) {
-      AliError(Form("%s not found", kXML)) ; 
-      return kFALSE ; 
-    }
-    
-    TGridResult* result = collection->GetGridResult("",0 ,0);
-    
-    // Makes the ESD chain 
-    printf("*** Getting the Chain       ***\n");
-    for (Int_t index = 0; index < result->GetEntries(); index++) {
-      TString alienURL = result->GetKey(index, "turl") ; 
-      cout << "================== " << alienURL << endl ; 
-      chain->Add(alienURL) ; 
-      alienURL.ReplaceAll("AliESDs.root",kXSFileName);
-      chainxs->Add(alienURL) ; 
-    }
-  }// xml analysis
-  
-  //------------------------------
-  // PROOF
-  //------------------------------
-  else if (mode == mPROOF) {
-    
-    TFileCollection* ds= gProof->GetDataSet(kDatasetPROOF)->GetStagedSubset();
-    
-    gROOT->LoadMacro("/afs/in2p3.fr/group/alice/laf/dataset_management/CreateChainFromDataSet.C");
-    chain = CreateChainFromDataSet(ds, kTreeName , kDatasetNMaxFiles);
-    printf("chain has %d entries\n",chain->GetEntries());
-  }
-  
-  gSystem->ChangeDirectory(ocwd.Data());
-  
-}
-
-//______________________________
-void CheckEnvironmentVariables()
-{
-  
-  sprintf(kTrigger,"");
-  
-  Bool_t bRecalibrate = kFALSE;
-  Bool_t bBadChannel = kFALSE;
-  
-  for (int i=0; i< gApplication->Argc();i++){
-    
-#ifdef VERBOSEARGS
-    
-    printf("Arg  %d:  %s\n",i,gApplication->Argv(i));
-    
-#endif
-    
-    TString sRun = "";
-    
-    if (!(strcmp(gApplication->Argv(i),"--trigger")))
-      sprintf(trigger,gApplication->Argv(i+1));
-    
-    if (!(strcmp(gApplication->Argv(i),"--recalibrate")))
-      bRecalibrate = atoi(gApplication->Argv(i+1));
-    
-    if (!(strcmp(gApplication->Argv(i),"--badchannel")))
-      bBadChannel = atoi(gApplication->Argv(i+1));
-    
-    if (!(strcmp(gApplication->Argv(i),"--run"))){
-      sRun = gApplication->Argv(i+1);
-      if(sRun.Contains("LHC10")) {
-        kYear = 2010;
-      }
-      else {
-        if(kRun <=0){
-          kRun = atoi(gApplication->Argv(i+1));
-        }
-        else printf("** Run number already set  to %d, do not set to %d\n",kRun,atoi(gApplication->Argv(i+1)));
-      }//numeric run
-    }//--run available
-    
-  }// args loop
-  
-  if(!sRun.Contains("LHC10")){
-    if     ( kRun < 140000) 
-    {
-      kYear = 2010;
-      if( kRun >= 136851 ) kCollision = "PbPb";
-    }
-    else if( kRun < 170600)
-    {
-      kYear = 2011;
-      if( kRun >= 166500 ) kCollision = "PbPb";
-    }
-    else 
-    {
-      kYear = 2012;
-
-    }
-  }
-  
-  if(kMC) sprintf(kTrigger,"");
-  
-  printf("*********************************************\n");
-  //printf("*** Settings trigger %s, recalibrate %d, remove bad channels %d, year %d, collision %s, run %d ***\n",
-  //       kTrigger,bRecalibrate,bBadChannel, kYear,kCollision.Data(), kRun);
-  printf("*** Settings year %d, collision %s, run %d ***\n",kYear,kCollision.Data(), kRun);
-  printf("*********************************************\n");
-  
-}
-
-
 //_________________________________________________________________
 void GetAverageXsection(TTree * tree, Double_t & xs, Float_t & ntr)
 {