]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/macros/AnalysisTrainCAF.C
end-of-line normalization
[u/mrichter/AliRoot.git] / PWGJE / macros / AnalysisTrainCAF.C
index 7730853e3f25097cb584763ddcd905422cf59bad..016602a5f2eea0647676113b53d1d251fbc19ef5 100644 (file)
-//______________________________________________________________________________\r
-void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG4/kleinb/LHC09a1_test500")\r
-{\r
-  // Example of running analysis train in CAF. To run in debug mode:\r
-  //  - export ROOTSYS=debug  on your local client\r
-  //  - un-comment gProof->ClearPackages()\r
-  //  - un-comment lines with debugging info\r
-\r
-\r
-  Bool_t debug         = kTRUE;\r
-  Bool_t useMC         = kTRUE;\r
-  Bool_t readTR        = kFALSE;\r
-  Bool_t bPROOF        = kFALSE;\r
-  Bool_t bLOCALPAR     = kFALSE;  // flag that swtiches on loading of local par files insead of loading libs, needed for grid and local testing\r
-\r
-    \r
-  Int_t iAODanalysis   = 1;\r
-  Int_t iAODhandler    = 1;\r
-  Int_t iESDfilter     = 1;  // Only active if iAODanalysis=0\r
-  Int_t iJETAN         = 1;\r
-  Int_t iJETANESD      = 0;\r
-  Int_t iJETANMC       = 0;\r
-  Int_t iJETANMC2       = 0;\r
-  Int_t iFASTJET     = 1;\r
-  Int_t iDIJETAN       = 0;\r
-  Int_t iPWG4SPECTRUM  = 0;\r
-  Int_t iPWG4JFSYSTEMATICS  = 0;\r
-  Int_t iPWG4JETCORRECTION  = 0;\r
-  Int_t iPWG4THREEJETS  = 0;\r
-  Int_t iPWG4UE        = 0;\r
-  Int_t iPWG4PID        = 0;\r
-\r
-  if (iAODanalysis) {\r
-    useMC = kFALSE;\r
-    readTR = kFALSE;\r
-    iESDfilter = 0;\r
-  }    \r
-  if (iJETAN) iESDfilter=1;\r
-  if (iESDfilter) iAODhandler=1;\r
-  \r
-  // Dataset from CAF\r
-  TString dataset(ds);\r
-  TChain *chain = 0;\r
-  // CKB quick hack for local analysis\r
-  gROOT->LoadMacro("CreateESDChain.C");\r
-  TChain *chain = CreateChain("aodTree",ds,1);\r
-  //  TChain *chain = CreateChain("esdTree",ds,100);\r
-  //  chain = new TChain("aodTree");\r
-  //  chain->Add("/Users/kleinb/bigdisk/1/LHC09a3/001/AliAOD.root");\r
-\r
\r
-  printf("==================================================================\n");\r
-  printf("===========    RUNNING ANALYSIS TRAIN IN CAF MODE    =============\n");\r
-  printf("==================================================================\n");\r
-  if (iAODanalysis) printf("=  AOD analysis on dataset: %s\n", dataset.Data());\r
-  else              printf("=  ESD analysis on dataset: %s\n", dataset.Data());\r
-  if (iESDfilter)   printf("=  ESD filter                                                     =\n");\r
-  if (iJETAN)       printf("=  Jet analysis from AOD                                         =\n");\r
-  if (iJETANESD)    printf("=  Jet analysis from ESD                                         =\n");\r
-  if (iJETANMC)     printf("=  Jet analysis from Kinematics                                  =\n");\r
-  if (iJETANMC2)     printf("=  Jet analysis 2 from Kinematics                               =\n");\r
-  if (iFASTJET)     printf("=  Loading FastJet                               =\n");\r
-  if (iDIJETAN)     printf("=  DiJet analysis                                                 =\n");\r
-  if (iPWG4SPECTRUM)printf("=  PWG4 Jet spectrum analysis                                    =\n");\r
-  if (iPWG4JFSYSTEMATICS)printf("=  PWG4 Jet Finder systematics                                   =\n");\r
-  if (iPWG4JETCORRECTION)printf("=  PWG4 Jet Correction                                   =\n");\r
-  if (iPWG4THREEJETS)printf("=  PWG4 Three Jets                                   =\n");\r
-\r
-  if (iPWG4UE)      printf("=  PWG4 UE                                                        =\n");\r
-  printf("==================================================================\n");\r
-  if (useMC) printf(":: use MC    TRUE\n");\r
-  else       printf(":: use MC    FALSE\n");\r
-  if (readTR) printf(":: read TR   TRUE\n");\r
-  else        printf(":: read TR   FALSE\n");\r
-  if (debug) printf(":: debugging TRUE\n");\r
-  else       printf(":: debugging FALSE\n");\r
-    \r
-  // Load common libraries\r
-  gSystem->Load("libTree.so");\r
-  gSystem->Load("libGeom.so");\r
-  gSystem->Load("libVMC.so");\r
-  gSystem->Load("libPhysics.so");\r
-  if(iFASTJET){\r
-    gSystem->Load("libCGAL.so");\r
-    gSystem->Load("libfastjet.so");\r
-    gSystem->Load("libsiscone.so");\r
-    gSystem->Load("libSISConePlugin.so");  \r
-  }\r
-\r
-\r
-  // Reset user processes if CAF if not responding anymore\r
-  // TProof::Reset("alicecaf"); \r
-  // One may enable a different ROOT version on CAF\r
-  \r
-  //  const char* proofNode = "localhost";\r
-  const char* proofNode = "alicecaf";\r
-  \r
-  // Connect to proof\r
-  if(bPROOF){\r
-    TProof::Mgr(proofNode)->ShowROOTVersions();\r
-    // TProof::Mgr(proofNode)->SetROOTVersion("v5-21-01-alice_dbg");\r
-    TProof::Open(proofNode); \r
-    \r
-    // Clear packages if changing ROOT version on CAF or local\r
-     gProof->ClearPackages();\r
-    // Enable proof debugging if needed\r
-    //    gProof->SetLogLevel(5);\r
-    // To debug the train in PROOF mode, type in a root session:\r
-    // root[0] TProof::Mgr("lxb6064")->GetSessionLogs()->Display("*",0,10000);\r
-    // Common packages\r
-    // --- Enable the STEERBase Package\r
-    gProof->UploadPackage("STEERBase.par");\r
-    gProof->EnablePackage("STEERBase");           \r
-    // --- Enable the ESD Package         \r
-    gProof->UploadPackage("ESD.par");     \r
-    gProof->EnablePackage("ESD");         \r
-    // --- Enable the AOD Package         \r
-    gProof->UploadPackage("AOD.par");     \r
-    gProof->EnablePackage("AOD");         \r
-    // --- Enable the ANALYSIS Package    \r
-    gProof->UploadPackage("ANALYSIS.par"); \r
-    gProof->EnablePackage("ANALYSIS");    \r
-    // --- Enable the ANALYSISalice Package\r
-    gProof->UploadPackage("ANALYSISalice.par");\r
-    gProof->EnablePackage("ANALYSISalice");\r
-    \r
-      \r
-    // --- Enable the JETAN Package\r
-    if (iJETAN||iJETANESD||iJETANMC||iJETANMC2) {\r
-      gProof->UploadPackage("JETAN.par");\r
-      gProof->EnablePackage("JETAN");\r
-      if(iFASTJET){\r
-       gProof->UploadPackage("FASTJETAN.par");\r
-       gProof->EnablePackage("FASTJETAN"); \r
-      }\r
-    }   \r
-    // --- Enable particle correlation analysis\r
-    if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4JETCORRECTION||iPWG4THREEJETS) {\r
-      gProof->UploadPackage("JETAN.par");\r
-      gProof->EnablePackage("JETAN");\r
-      gProof->UploadPackage("PWG4JetTasks.par");\r
-      gProof->EnablePackage("PWG4JetTasks");\r
-    }   \r
-    \r
-  }\r
-  else{\r
-\r
-    //  \r
-    // We are local or on grid\r
-    // access remote files in lcoal case as well so open alien connection\r
-\r
-    /*\r
-    printf("*** Connect to AliEn ***\n");\r
-    TGrid::Connect("alien://");\r
-\r
-    chain = CreateChainFromCollection("wn.xml","esdTree",2); \r
-    */\r
-\r
-    if(bLOCALPAR){\r
-      SetupPar("STEERBase");\r
-      SetupPar("ESD");  \r
-      SetupPar("AOD");    \r
-      SetupPar("ANALYSIS"); \r
-      SetupPar("ANALYSISalice");\r
-      if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){\r
-       SetupPar("JETAN");         \r
-       if(iFASTJET)    SetupPar("FASTJETAN");     \r
-      }\r
-      if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS){\r
-       SetupPar("JETAN");         \r
-       SetupPar("PWG4JetTasks");\r
-      }\r
-    }\r
-    else{\r
-      Printf("Loading Local libs");\r
-      gSystem->Load("libSTEERBase");\r
-      gSystem->Load("libESD");\r
-      gSystem->Load("libAOD");\r
-      gSystem->Load("libANALYSIS");\r
-      gSystem->Load("libANALYSISalice");  \r
-      // --- Enable the JETAN Package\r
-      if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){\r
-       gSystem->Load("libJETAN");\r
-       if(iFASTJET)gSystem->Load("libFASTJETAN");\r
-      }\r
-      // --- Enable particle correlation analysis\r
-      if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4THREEJETS){\r
-       gSystem->Load("libJETAN");\r
-       gSystem->Load("libPWG4JetTasks"); \r
-      }\r
-    }\r
-\r
-  }\r
-\r
-\r
-    // Make the analysis manager\r
-    AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "A test setup for the analysis train");\r
-    if (iAODanalysis) {\r
-    // AOD input handler\r
-       AliAODInputHandler *aodH = new AliAODInputHandler();\r
-       mgr->SetInputEventHandler(aodH);\r
-    } else {   \r
-    // ESD input handler\r
-       AliESDInputHandler *esdHandler = new AliESDInputHandler();\r
-       mgr->SetInputEventHandler(esdHandler);\r
-//       esdHandler->SetInactiveBranches("FMD CaloCluster");\r
-    }\r
-    // Monte Carlo handler\r
-    if (useMC && !iAODanalysis) {\r
-       AliMCEventHandler* mcHandler = new AliMCEventHandler();\r
-       mgr->SetMCtruthEventHandler(mcHandler);\r
-       mcHandler->SetReadTR(readTR); \r
-    }   \r
-    // Top container for input \r
-    AliAnalysisDataContainer *cinput = 0;\r
-    \r
-    cinput = mgr->GetCommonInputContainer();\r
-\r
-    // This container is managed by the AOD handler\r
-    AliAnalysisDataContainer *cout_aod = 0;\r
-    if (iAODhandler) {\r
-       // AOD output handler\r
-       AliAODHandler* aodHandler   = new AliAODHandler();\r
-       //      aodHandler->SetFillAOD(kFALSE);\r
-       mgr->SetOutputEventHandler(aodHandler);       \r
-       aodHandler->SetOutputFileName(Form("AliAODs_pwg4_%07d-%07d.root",nOffset,nOffset+nEvents));\r
-       cout_aod = mgr->GetCommonOutputContainer();\r
-       cout_aod->SetSpecialOutput();\r
-    }   \r
-\r
-    // Debugging if needed\r
-    if (debug) mgr->SetDebugLevel(10);\r
-    //    AliLog::EnableDebug(kTRUE);\r
-    AliLog::SetGlobalLogLevel(1);\r
-\r
-\r
-    if (iESDfilter && !iAODanalysis) {\r
-      gSystem->Load("libCORRFW.so");\r
-      gSystem->Load("libPWGmuon.so");\r
-\r
-      gROOT->LoadMacro(Form("%s/ANALYSIS/macros/AddTaskESDFilter.C",gSystem->ExpandPathName("${ALICE_ROOT}")));\r
-      //      gROOT->LoadMacro("AddTaskESDfilter.C");\r
-      AliAnalysisTaskESDfilter *esdfilter = AddTaskESDFilter();\r
-      Printf("esdFilter %p",esdfilter); \r
-    }   \r
-    // Jet analysis from the AOD\r
-    if (iJETAN) {\r
-      gROOT->LoadMacro("AddTaskJets.C");\r
-      //      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets("AOD","UA1",0.4);\r
-      //      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets("AOD","UA1",0.4);\r
-      //      jetanaAOD->SetNonStdBranch("jetsAOD_UA1");    \r
-      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets();\r
-      Int_t i = AddTaskJetsDelta();\r
-    }   \r
-    // JETANALYSIS from the ESD\r
-    if (iJETANESD && !iAODanalysis) {\r
-      gROOT->LoadMacro("AddTaskJets.C");\r
-      AliAnalysisTaskJets *jetanaESD = AddTaskJets("ESD","UA1");\r
-      jetanaESD->SetDebugLevel(0);\r
-      jetanaESD->SetNonStdBranch("jetsESD");    \r
-    }   \r
-    // Jet analysisMC\r
-    if (iJETANMC ){ \r
-      gROOT->LoadMacro("AddTaskJets.C");\r
-      //      AliAnalysisTaskJets *jetanaMC =  AddTaskJets("AODMC","UA1",0.4);\r
-      AliAnalysisTaskJets *jetanaMC =  AddTaskJets("AODMC","UA1",0.4);\r
-      jetanaMC->SetDebugLevel(0);\r
-      jetanaMC->SetNonStdBranch("jetsMC_UA1");\r
-    }   \r
-    if (iJETANMC2 ){ \r
-      gROOT->LoadMacro("AddTaskJets.C");\r
-      //      AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);\r
-      AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);\r
-      jetanaMC2->SetDebugLevel(0);\r
-      jetanaMC2->SetNonStdBranch("jetsMC2_UA1");\r
-    }   \r
-    // Dijet analysis\r
-    if(iDIJETAN){\r
-      gROOT->LoadMacro("AddTaskDiJets.C");\r
-      AliAnalysisTaskDiJets *dijetana  = AddTaskDiJets();\r
-    }\r
-    if (iPWG4SPECTRUM) {\r
-      gROOT->LoadMacro("AddTaskJetSpectrum2.C");\r
-      AliAnalysisTaskJetSpectrum2* pwg4spec = AddTaskJetSpectrum2();\r
-      pwg4spec->SetAODInput(kTRUE);\r
-      pwg4spec->SetBranchRec("jets");\r
-      pwg4spec->SetAnalysisType(0);\r
-      pwg4spec->SetDebugLevel(0);\r
-    }   \r
-    if (iPWG4JFSYSTEMATICS) {\r
-      gROOT->LoadMacro("AddTaskJFSystematics.C");\r
-      AliAnalysisTaskJFSystematics* pwg4jfs = AddTaskJFSystematics("jetsMC","jets");\r
-      pwg4jfs->SetAODInput(kTRUE);\r
-      pwg4jfs->SetDebugLevel(0);\r
-    }   \r
-    if (iPWG4JETCORRECTION) {\r
-      gROOT->LoadMacro("AddTaskJetCorrections.C");\r
-      AliAnalysisTaskJetCorrections* pwg4jc = AddTaskJetCorrections();\r
-      pwg4jc->SetDebugLevel(11);\r
-    }   \r
-    if (iPWG4THREEJETS) {\r
-      gROOT->LoadMacro("AddTaskThreeJets.C");\r
-      AliAnalysisTaskThreeJets* pwg4jjj = AddTaskThreeJets();\r
-      pwg4jjj->SetDebugLevel(11);\r
-    }   \r
-    if (iPWG4UE) {\r
-      gROOT->LoadMacro("AddTaskUE.C");\r
-      AliAnalysisTaskUE* ueana = AddTaskUE();\r
-    }   \r
-    if(iPWG4PID){\r
-      gROOT->LoadMacro("AddTaskPWG4PidDetEx.C");\r
-      AliAnalysisTaskPWG4PidDetEx *taskPid = AddTaskPWG4PidDetEx();\r
-      taskPid->SetDebugLevel(0);\r
-  }\r
-    // Run the analysis\r
-    //    \r
-    if (mgr->InitAnalysis()) {\r
-      mgr->PrintStatus();\r
-      Printf("Chain with %d entries",chain->GetEntries()); \r
-       if(bPROOF)mgr->StartAnalysis("proof",dataset.Data(), nEvents,nOffset);\r
-       else mgr->StartAnalysis("local",chain,nEvents);\r
-    }   \r
-}\r
-TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName="esdTree",Int_t nFiles = 0)\r
-{\r
-// Create a chain from an alien collection.                                                                          \r
-   TAlienCollection * myCollection  = TAlienCollection::Open(xmlfile);\r
-\r
-   if (!myCollection) {\r
-      ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;\r
-     return NULL ;\r
-   }\r
-\r
-  TChain* chain = new TChain(treeName);\r
-  myCollection->Reset() ;\r
-  Int_t iCount = 0;\r
-  while ( myCollection->Next() ){\r
-    if(nFiles!=0)iCount++;\r
-    if(iCount > nFiles)break;\r
-    chain->Add(myCollection->GetTURL("")) ;\r
-    Printf("Adding %s",myCollection->GetTURL(""));\r
-  }\r
-  chain->ls();\r
-  return chain;\r
-}\r
-\r
-\r
-void SetupPar(char* pararchivename)\r
-{\r
-  //Load par files, create analysis libraries                                                         \r
-  //For testing, if par file already decompressed and modified                                        \r
-  //classes then do not decompress.                                                                   \r
-\r
-  TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;\r
-  TString parpar(Form("%s.par", pararchivename)) ;\r
-  /*\r
-  if ( gSystem->AccessPathName(parpar.Data()) ) {\r
-    gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;\r
-    TString processline(Form(".! make %s", parpar.Data())) ;\r
-    gROOT->ProcessLine(processline.Data()) ;\r
-    gSystem->ChangeDirectory(cdir) ;\r
-    processline = Form(".! mv /tmp/%s .", parpar.Data()) ;\r
-    gROOT->ProcessLine(processline.Data()) ;\r
-  }\r
-  */\r
-\r
-  if (!gSystem->AccessPathName(pararchivename) ) {\r
-    TString processline = Form(".! tar xvzf %s",parpar.Data()) ;\r
-    gROOT->ProcessLine(processline.Data());\r
-  }\r
-\r
-  TString ocwd = gSystem->WorkingDirectory();\r
-  gSystem->ChangeDirectory(pararchivename);\r
-\r
-  // check for BUILD.sh and execute                                                                   \r
-  if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {\r
-    printf("*******************************\n");\r
-    printf("*** Building PAR archive    ***\n");\r
-    cout<<pararchivename<<endl;\r
-    printf("*******************************\n");\r
-\r
-    if (gSystem->Exec("PROOF-INF/BUILD.sh")) {\r
-      Error("runProcess","Cannot Build the PAR Archive! - Abort!");\r
-      return -1;\r
-    }\r
-  }\r
-  // check for SETUP.C and execute                                                                    \r
-  if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {\r
-    printf("*******************************\n");\r
-    printf("*** Setup PAR archive       ***\n");\r
-    cout<<pararchivename<<endl;\r
-    printf("*******************************\n");\r
-    gROOT->Macro("PROOF-INF/SETUP.C");\r
-  }\r
-\r
-  gSystem->ChangeDirectory(ocwd.Data());\r
-  printf("Current dir: %s\n", ocwd.Data());\r
-}\r
+//______________________________________________________________________________
+void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG4/kleinb/LHC09a1_test500")
+{
+  // Example of running analysis train in CAF. To run in debug mode:
+  //  - export ROOTSYS=debug  on your local client
+  //  - un-comment gProof->ClearPackages()
+  //  - un-comment lines with debugging info
+
+
+  Bool_t debug         = kTRUE;
+  Bool_t useMC         = kTRUE;
+  Bool_t readTR        = kFALSE;
+  Bool_t bPROOF        = kFALSE;
+  Bool_t bLOCALPAR     = kFALSE;  // flag that swtiches on loading of local par files insead of loading libs, needed for grid and local testing
+
+    
+  Int_t iAODanalysis   = 1;
+  Int_t iAODhandler    = 1;
+  Int_t iESDfilter     = 1;  // Only active if iAODanalysis=0
+  Int_t iJETAN         = 1;
+  Int_t iJETANESD      = 0;
+  Int_t iJETANMC       = 0;
+  Int_t iJETANMC2       = 0;
+  Int_t iFASTJET     = 1;
+  Int_t iDIJETAN       = 0;
+  Int_t iPWG4SPECTRUM  = 0;
+  Int_t iPWG4JFSYSTEMATICS  = 0;
+  Int_t iPWG4JETCORRECTION  = 0;
+  Int_t iPWG4THREEJETS  = 0;
+  Int_t iPWG4UE        = 0;
+  Int_t iPWG4PID        = 0;
+
+  if (iAODanalysis) {
+    useMC = kFALSE;
+    readTR = kFALSE;
+    iESDfilter = 0;
+  }    
+  if (iJETAN) iESDfilter=1;
+  if (iESDfilter) iAODhandler=1;
+  
+  // Dataset from CAF
+  TString dataset(ds);
+  TChain *chain = 0;
+  // CKB quick hack for local analysis
+  gROOT->LoadMacro("CreateESDChain.C");
+  TChain *chain = CreateChain("aodTree",ds,1);
+  //  TChain *chain = CreateChain("esdTree",ds,100);
+  //  chain = new TChain("aodTree");
+  //  chain->Add("/Users/kleinb/bigdisk/1/LHC09a3/001/AliAOD.root");
+
+  printf("==================================================================\n");
+  printf("===========    RUNNING ANALYSIS TRAIN IN CAF MODE    =============\n");
+  printf("==================================================================\n");
+  if (iAODanalysis) printf("=  AOD analysis on dataset: %s\n", dataset.Data());
+  else              printf("=  ESD analysis on dataset: %s\n", dataset.Data());
+  if (iESDfilter)   printf("=  ESD filter                                                     =\n");
+  if (iJETAN)       printf("=  Jet analysis from AOD                                         =\n");
+  if (iJETANESD)    printf("=  Jet analysis from ESD                                         =\n");
+  if (iJETANMC)     printf("=  Jet analysis from Kinematics                                  =\n");
+  if (iJETANMC2)     printf("=  Jet analysis 2 from Kinematics                               =\n");
+  if (iFASTJET)     printf("=  Loading FastJet                               =\n");
+  if (iDIJETAN)     printf("=  DiJet analysis                                                 =\n");
+  if (iPWG4SPECTRUM)printf("=  PWG4 Jet spectrum analysis                                    =\n");
+  if (iPWG4JFSYSTEMATICS)printf("=  PWG4 Jet Finder systematics                                   =\n");
+  if (iPWG4JETCORRECTION)printf("=  PWG4 Jet Correction                                   =\n");
+  if (iPWG4THREEJETS)printf("=  PWG4 Three Jets                                   =\n");
+
+  if (iPWG4UE)      printf("=  PWG4 UE                                                        =\n");
+  printf("==================================================================\n");
+  if (useMC) printf(":: use MC    TRUE\n");
+  else       printf(":: use MC    FALSE\n");
+  if (readTR) printf(":: read TR   TRUE\n");
+  else        printf(":: read TR   FALSE\n");
+  if (debug) printf(":: debugging TRUE\n");
+  else       printf(":: debugging FALSE\n");
+    
+  // Load common libraries
+  gSystem->Load("libTree.so");
+  gSystem->Load("libGeom.so");
+  gSystem->Load("libVMC.so");
+  gSystem->Load("libPhysics.so");
+  if(iFASTJET){
+    gSystem->Load("libCGAL.so");
+    gSystem->Load("libfastjet.so");
+    gSystem->Load("libsiscone.so");
+    gSystem->Load("libSISConePlugin.so");  
+  }
+
+
+  // Reset user processes if CAF if not responding anymore
+  // TProof::Reset("alicecaf"); 
+  // One may enable a different ROOT version on CAF
+  
+  //  const char* proofNode = "localhost";
+  const char* proofNode = "alicecaf";
+  
+  // Connect to proof
+  if(bPROOF){
+    TProof::Mgr(proofNode)->ShowROOTVersions();
+    // TProof::Mgr(proofNode)->SetROOTVersion("v5-21-01-alice_dbg");
+    TProof::Open(proofNode); 
+    
+    // Clear packages if changing ROOT version on CAF or local
+     gProof->ClearPackages();
+    // Enable proof debugging if needed
+    //    gProof->SetLogLevel(5);
+    // To debug the train in PROOF mode, type in a root session:
+    // root[0] TProof::Mgr("lxb6064")->GetSessionLogs()->Display("*",0,10000);
+    // Common packages
+    // --- Enable the STEERBase Package
+    gProof->UploadPackage("STEERBase.par");
+    gProof->EnablePackage("STEERBase");           
+    // --- Enable the ESD Package         
+    gProof->UploadPackage("ESD.par");     
+    gProof->EnablePackage("ESD");         
+    // --- Enable the AOD Package         
+    gProof->UploadPackage("AOD.par");     
+    gProof->EnablePackage("AOD");         
+    // --- Enable the ANALYSIS Package    
+    gProof->UploadPackage("ANALYSIS.par"); 
+    gProof->EnablePackage("ANALYSIS");    
+    // --- Enable the ANALYSISalice Package
+    gProof->UploadPackage("ANALYSISalice.par");
+    gProof->EnablePackage("ANALYSISalice");
+    
+      
+    // --- Enable the JETAN Package
+    if (iJETAN||iJETANESD||iJETANMC||iJETANMC2) {
+      gProof->UploadPackage("JETAN.par");
+      gProof->EnablePackage("JETAN");
+      if(iFASTJET){
+       gProof->UploadPackage("FASTJETAN.par");
+       gProof->EnablePackage("FASTJETAN"); 
+      }
+    }   
+    // --- Enable particle correlation analysis
+    if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4JETCORRECTION||iPWG4THREEJETS) {
+      gProof->UploadPackage("JETAN.par");
+      gProof->EnablePackage("JETAN");
+      gProof->UploadPackage("PWG4JetTasks.par");
+      gProof->EnablePackage("PWG4JetTasks");
+    }   
+    
+  }
+  else{
+
+    //  
+    // We are local or on grid
+    // access remote files in lcoal case as well so open alien connection
+
+    /*
+    printf("*** Connect to AliEn ***\n");
+    TGrid::Connect("alien://");
+
+    chain = CreateChainFromCollection("wn.xml","esdTree",2); 
+    */
+
+    if(bLOCALPAR){
+      SetupPar("STEERBase");
+      SetupPar("ESD");  
+      SetupPar("AOD");    
+      SetupPar("ANALYSIS"); 
+      SetupPar("ANALYSISalice");
+      if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){
+       SetupPar("JETAN");         
+       if(iFASTJET)    SetupPar("FASTJETAN");     
+      }
+      if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS){
+       SetupPar("JETAN");         
+       SetupPar("PWG4JetTasks");
+      }
+    }
+    else{
+      Printf("Loading Local libs");
+      gSystem->Load("libSTEERBase");
+      gSystem->Load("libESD");
+      gSystem->Load("libAOD");
+      gSystem->Load("libANALYSIS");
+      gSystem->Load("libANALYSISalice");  
+      // --- Enable the JETAN Package
+      if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){
+       gSystem->Load("libJETAN");
+       if(iFASTJET)gSystem->Load("libFASTJETAN");
+      }
+      // --- Enable particle correlation analysis
+      if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4THREEJETS){
+       gSystem->Load("libJETAN");
+       gSystem->Load("libPWG4JetTasks"); 
+      }
+    }
+
+  }
+
+
+    // Make the analysis manager
+    AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "A test setup for the analysis train");
+    if (iAODanalysis) {
+    // AOD input handler
+       AliAODInputHandler *aodH = new AliAODInputHandler();
+       mgr->SetInputEventHandler(aodH);
+    } else {   
+    // ESD input handler
+       AliESDInputHandler *esdHandler = new AliESDInputHandler();
+       mgr->SetInputEventHandler(esdHandler);
+//       esdHandler->SetInactiveBranches("FMD CaloCluster");
+    }
+    // Monte Carlo handler
+    if (useMC && !iAODanalysis) {
+       AliMCEventHandler* mcHandler = new AliMCEventHandler();
+       mgr->SetMCtruthEventHandler(mcHandler);
+       mcHandler->SetReadTR(readTR); 
+    }   
+    // Top container for input 
+    AliAnalysisDataContainer *cinput = 0;
+    
+    cinput = mgr->GetCommonInputContainer();
+
+    // This container is managed by the AOD handler
+    AliAnalysisDataContainer *cout_aod = 0;
+    if (iAODhandler) {
+       // AOD output handler
+       AliAODHandler* aodHandler   = new AliAODHandler();
+       //      aodHandler->SetFillAOD(kFALSE);
+       mgr->SetOutputEventHandler(aodHandler);       
+       aodHandler->SetOutputFileName(Form("AliAODs_pwg4_%07d-%07d.root",nOffset,nOffset+nEvents));
+       cout_aod = mgr->GetCommonOutputContainer();
+       cout_aod->SetSpecialOutput();
+    }   
+
+    // Debugging if needed
+    if (debug) mgr->SetDebugLevel(10);
+    //    AliLog::EnableDebug(kTRUE);
+    AliLog::SetGlobalLogLevel(1);
+
+
+    if (iESDfilter && !iAODanalysis) {
+      gSystem->Load("libCORRFW.so");
+      gSystem->Load("libPWGmuon.so");
+
+      gROOT->LoadMacro(Form("%s/ANALYSIS/macros/AddTaskESDFilter.C",gSystem->ExpandPathName("${ALICE_ROOT}")));
+      //      gROOT->LoadMacro("AddTaskESDfilter.C");
+      AliAnalysisTaskESDfilter *esdfilter = AddTaskESDFilter();
+      Printf("esdFilter %p",esdfilter); 
+    }   
+    // Jet analysis from the AOD
+    if (iJETAN) {
+      gROOT->LoadMacro("AddTaskJets.C");
+      //      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets("AOD","UA1",0.4);
+      //      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets("AOD","UA1",0.4);
+      //      jetanaAOD->SetNonStdBranch("jetsAOD_UA1");    
+      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets();
+      Int_t i = AddTaskJetsDelta();
+    }   
+    // JETANALYSIS from the ESD
+    if (iJETANESD && !iAODanalysis) {
+      gROOT->LoadMacro("AddTaskJets.C");
+      AliAnalysisTaskJets *jetanaESD = AddTaskJets("ESD","UA1");
+      jetanaESD->SetDebugLevel(0);
+      jetanaESD->SetNonStdBranch("jetsESD");    
+    }   
+    // Jet analysisMC
+    if (iJETANMC ){ 
+      gROOT->LoadMacro("AddTaskJets.C");
+      //      AliAnalysisTaskJets *jetanaMC =  AddTaskJets("AODMC","UA1",0.4);
+      AliAnalysisTaskJets *jetanaMC =  AddTaskJets("AODMC","UA1",0.4);
+      jetanaMC->SetDebugLevel(0);
+      jetanaMC->SetNonStdBranch("jetsMC_UA1");
+    }   
+    if (iJETANMC2 ){ 
+      gROOT->LoadMacro("AddTaskJets.C");
+      //      AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);
+      AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);
+      jetanaMC2->SetDebugLevel(0);
+      jetanaMC2->SetNonStdBranch("jetsMC2_UA1");
+    }   
+    // Dijet analysis
+    if(iDIJETAN){
+      gROOT->LoadMacro("AddTaskDiJets.C");
+      AliAnalysisTaskDiJets *dijetana  = AddTaskDiJets();
+    }
+    if (iPWG4SPECTRUM) {
+      gROOT->LoadMacro("AddTaskJetSpectrum2.C");
+      AliAnalysisTaskJetSpectrum2* pwg4spec = AddTaskJetSpectrum2();
+      pwg4spec->SetAODInput(kTRUE);
+      pwg4spec->SetBranchRec("jets");
+      pwg4spec->SetAnalysisType(0);
+      pwg4spec->SetDebugLevel(0);
+    }   
+    if (iPWG4JFSYSTEMATICS) {
+      gROOT->LoadMacro("AddTaskJFSystematics.C");
+      AliAnalysisTaskJFSystematics* pwg4jfs = AddTaskJFSystematics("jetsMC","jets");
+      pwg4jfs->SetAODInput(kTRUE);
+      pwg4jfs->SetDebugLevel(0);
+    }   
+    if (iPWG4JETCORRECTION) {
+      gROOT->LoadMacro("AddTaskJetCorrections.C");
+      AliAnalysisTaskJetCorrections* pwg4jc = AddTaskJetCorrections();
+      pwg4jc->SetDebugLevel(11);
+    }   
+    if (iPWG4THREEJETS) {
+      gROOT->LoadMacro("AddTaskThreeJets.C");
+      AliAnalysisTaskThreeJets* pwg4jjj = AddTaskThreeJets();
+      pwg4jjj->SetDebugLevel(11);
+    }   
+    if (iPWG4UE) {
+      gROOT->LoadMacro("AddTaskUE.C");
+      AliAnalysisTaskUE* ueana = AddTaskUE();
+    }   
+    if(iPWG4PID){
+      gROOT->LoadMacro("AddTaskPWG4PidDetEx.C");
+      AliAnalysisTaskPWG4PidDetEx *taskPid = AddTaskPWG4PidDetEx();
+      taskPid->SetDebugLevel(0);
+  }
+    // Run the analysis
+    //    
+    if (mgr->InitAnalysis()) {
+      mgr->PrintStatus();
+      Printf("Chain with %d entries",chain->GetEntries()); 
+       if(bPROOF)mgr->StartAnalysis("proof",dataset.Data(), nEvents,nOffset);
+       else mgr->StartAnalysis("local",chain,nEvents);
+    }   
+}
+TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName="esdTree",Int_t nFiles = 0)
+{
+// Create a chain from an alien collection.                                                                          
+   TAlienCollection * myCollection  = TAlienCollection::Open(xmlfile);
+
+   if (!myCollection) {
+      ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;
+     return NULL ;
+   }
+
+  TChain* chain = new TChain(treeName);
+  myCollection->Reset() ;
+  Int_t iCount = 0;
+  while ( myCollection->Next() ){
+    if(nFiles!=0)iCount++;
+    if(iCount > nFiles)break;
+    chain->Add(myCollection->GetTURL("")) ;
+    Printf("Adding %s",myCollection->GetTURL(""));
+  }
+  chain->ls();
+  return chain;
+}
+
+
+void SetupPar(char* pararchivename)
+{
+  //Load par files, create analysis libraries                                                         
+  //For testing, if par file already decompressed and modified                                        
+  //classes then do not decompress.                                                                   
+
+  TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;
+  TString parpar(Form("%s.par", pararchivename)) ;
+  /*
+  if ( gSystem->AccessPathName(parpar.Data()) ) {
+    gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;
+    TString processline(Form(".! make %s", parpar.Data())) ;
+    gROOT->ProcessLine(processline.Data()) ;
+    gSystem->ChangeDirectory(cdir) ;
+    processline = Form(".! mv /tmp/%s .", parpar.Data()) ;
+    gROOT->ProcessLine(processline.Data()) ;
+  }
+  */
+
+  if (!gSystem->AccessPathName(pararchivename) ) {
+    TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
+    gROOT->ProcessLine(processline.Data());
+  }
+
+  TString ocwd = gSystem->WorkingDirectory();
+  gSystem->ChangeDirectory(pararchivename);
+
+  // check for BUILD.sh and execute                                                                   
+  if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
+    printf("*******************************\n");
+    printf("*** Building PAR archive    ***\n");
+    cout<<pararchivename<<endl;
+    printf("*******************************\n");
+
+    if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
+      Error("runProcess","Cannot Build the PAR Archive! - Abort!");
+      return -1;
+    }
+  }
+  // check for SETUP.C and execute                                                                    
+  if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
+    printf("*******************************\n");
+    printf("*** Setup PAR archive       ***\n");
+    cout<<pararchivename<<endl;
+    printf("*******************************\n");
+    gROOT->Macro("PROOF-INF/SETUP.C");
+  }
+
+  gSystem->ChangeDirectory(ocwd.Data());
+  printf("Current dir: %s\n", ocwd.Data());
+}