]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/AnalysisTrainCAF.C
Add the connected pad info to the simulation (Raphaelle)
[u/mrichter/AliRoot.git] / PWG4 / macros / AnalysisTrainCAF.C
index 772e082763f228e5190177069515ae4cb92827ab..493cff40c23f2bdf5a7a632c0e1f7ddcd49b05d3 100644 (file)
-//______________________________________________________________________________
-void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG4/kleinb/LHC08v_jetjet15-50")
-{
-// 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
-
-// WHY AOD is not a exchange container when running from ESD->AOD
-
-    Bool_t debug         = kTRUE;
-    Bool_t useMC         = kTRUE;
-    Bool_t readTR        = kFALSE;
-    Bool_t bPROOF        = kTRUE;
-
-
-    
-    Int_t iAODanalysis   = 0;
-    Int_t iAODhandler    = 1;
-    Int_t iESDfilter     = 1;  // Only active if iAODanalysis=0
-    Int_t iJETAN         = 1;
-    Int_t iJETANAOD      = 0;
-    Int_t iJETANMC       = 1;
-    Int_t iDIJETAN       = 0;
-    Int_t iPWG4SPECTRUM  = 1;
-    Int_t iPWG4UE        = 0;
-
-    if (iAODanalysis) {
-       useMC = kFALSE;
-       readTR = kFALSE;
-       iESDfilter = 0;
-       iMUONfilter = 0;
-    }    
-    if (iJETANAOD) iESDfilter=1;
-    if (iESDfilter) iAODhandler=1;
-
-    // Dataset from CAF
-    TString dataset(ds);
-    // CKB quick hack for local analysis
-    //    gROOT->LoadMacro("CreateESDChain.C");
-    // TChain *chain = CreateESDChain("jetjet15-50.txt",1000);
-    TChain *chain = 0;
-
-    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                                                  =\n");
-    if (iJETANAOD)    printf("=  Jet analysis from AOD                                        =\n");
-    if (iJETANMC)     printf("=  Jet analysis from Kinematics                                  =\n");
-    if (iDIJETAN)     printf("=  DiJet analysis                                                =\n");
-    if (iPWG4SPECTRUM)printf("=  PWG4 Jet spectrum analysis                                    =\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");
-
-
-    // Reset user processes if CAF if not responding anymore
-    // TProof::Reset("alicecaf"); 
-    // One may enable a different ROOT version on CAF
-
-    //    const char* proofNode = "alicecaf";
-    const char* proofNode = "localhost";
-
-
-
-
-    // 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("${ALICE_ROOT}/STEERBase.par");
-      gProof->EnablePackage("STEERBase");
-      // --- Enable the ESD Package
-      gProof->UploadPackage("${ALICE_ROOT}/ESD.par");
-      gProof->EnablePackage("ESD");
-      // --- Enable the AOD Package
-      gProof->UploadPackage("${ALICE_ROOT}/AOD.par");
-      gProof->EnablePackage("AOD");
-      // --- Enable the ANALYSIS Package
-      gProof->UploadPackage("${ALICE_ROOT}/ANALYSIS.par");
-      gProof->EnablePackage("ANALYSIS");
-      // --- Enable the ANALYSISalice Package
-      gProof->UploadPackage("${ALICE_ROOT}/ANALYSISalice.par");
-      gProof->EnablePackage("ANALYSISalice");
-
-
-      // --- Enable the JETAN Package
-      if (iJETAN||iJETANMC) {
-       gProof->UploadPackage("${ALICE_ROOT}/JETAN.par");
-       gProof->EnablePackage("JETAN");
-      }   
-      // --- Enable particle correlation analysis
-      if (iPWG4UE||iPWG4SPECTRUM) {
-       gProof->UploadPackage("${ALICE_ROOT}/PWG4JetTasks.par");
-       gProof->EnablePackage("PWG4JetTasks");
-      }   
-
-    }
-    else{
-      gSystem->Load("libSTEERBase");
-      gSystem->Load("libESD");
-      gSystem->Load("libAOD");
-      gSystem->Load("libANALYSIS");
-      gSystem->Load("libANALYSISalice");
-
-
-      // --- Enable the JETAN Package
-      if (iJETAN||iJETANMC||iJETANAOD) gSystem->Load("libJETAN");
-      // --- Enable particle correlation analysis
-      if (iPWG4UE||iPWG4SPECTRUM)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 = 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(0);
-//    AliLog::EnableDebug(kTRUE);
-    AliLog::SetGlobalLogLevel(0);
-
-
-    if (iESDfilter && !iAODanalysis) {
-       // Set of cuts plugged into the ESD filter
-       // 
-       // standard
-       AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose");
-       esdTrackCutsL->SetMinNClustersTPC(50);   
-       esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);
-       esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
-       esdTrackCutsL->SetRequireTPCRefit(kTRUE);
-       esdTrackCutsL->SetMinNsigmaToVertex(3);
-       esdTrackCutsL->SetRequireSigmaToVertex(kTRUE);
-       esdTrackCutsL->SetAcceptKingDaughters(kFALSE);
-       //
-       AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
-       trackFilter->AddCuts(esdTrackCutsL);
-       //
-       // ESD filter task putting standard info to output AOD (with cuts)
-       AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
-       esdfilter->SetTrackFilter(trackFilter);
-       esdfilter->SetDebugLevel(10);
-       mgr->AddTask(esdfilter);
-       // Connect to data containers
-       mgr->ConnectInput  (esdfilter,  0, cinput  );
-       mgr->ConnectOutput (esdfilter,  0, cout_aod );
-    }   
-    // Jet analysis
-    AliAnalysisDataContainer *c_aodjet = 0;
-    if (iJETAN && !iAODanalysis) {
-       AliAnalysisTaskJets *jetana = new AliAnalysisTaskJets("JetAnalysis");
-       jetana->SetDebugLevel(10);
-       jetana->SetConfigFile("${ALICE_ROOT}/JETAN/ConfigJetAnalysis.C");
-       mgr->AddTask(jetana);
-       // Output histograms list for jet analysis                       
-       AliAnalysisDataContainer *cout_jet = mgr->CreateContainer("jethist", TList::Class(),
-                                                                AliAnalysisManager::kOutputContainer,Form("jethist_%07d-%07d.root",nOffset,nOffset+nEvents));
-       // Dummy AOD output container for jet analysis (no client yet)
-       c_aodjet = mgr->CreateContainer("cAODjet", TTree::Class(),
-                           AliAnalysisManager::kExchangeContainer);
-       // Connect to data containers
-       mgr->ConnectInput  (jetana,     0, cinput  );
-       mgr->ConnectOutput (jetana,     0, c_aodjet );
-       // mgr->ConnectOutput (jetana,     0, cout_aod );
-       mgr->ConnectOutput (jetana,     1, cout_jet );
-    }   
-    // JETANALYSIS from the AOD
-    if (iJETANAOD) {
-       AliAnalysisTaskJets *jetanaAOD = new AliAnalysisTaskJets("AODJetAnalysis");
-       jetanaAOD->SetDebugLevel(10);
-       jetanaAOD->SetNonStdBranch("jetsAOD");    
-       jetanaAOD->SetConfigFile("${ALICE_ROOT}/JETAN/ConfigJetAnalysisAOD.C");
-       mgr->AddTask(jetanaAOD);
-       // Output histograms list for jet analysis                       
-       AliAnalysisDataContainer *cout_jetAOD = mgr->CreateContainer("jethistAOD", TList::Class(),
-                                                                   AliAnalysisManager::kOutputContainer, Form("jethistAOD_%07d-%07d.root",nOffset,nOffset+nEvents));
-       // Dummy AOD output container for jet analysis (no client yet)
-       c_aodjet0 = mgr->CreateContainer("cAODjet0", TTree::Class(),
-                           AliAnalysisManager::kExchangeContainer);
-       // Connect to data containers
-       mgr->ConnectInput  (jetanaAOD,     0, cout_aod  );
-       mgr->ConnectOutput (jetanaAOD,     0, c_aodjet0 );
-       // mgr->ConnectOutput (jetana,     0, cout_aod );
-       mgr->ConnectOutput (jetanaAOD,     1, cout_jetAOD );
-    }   
-    // Jet analysisMC
-    AliAnalysisDataContainer *c_aodjetMC = 0;
-    if (iJETANMC && useMC) {
-       AliAnalysisTaskJets *jetanaMC = new AliAnalysisTaskJets("JetAnalysisMC");
-       jetanaMC->SetDebugLevel(10);
-       jetanaMC->SetConfigFile("${ALICE_ROOT}/JETAN/ConfigJetAnalysisMC.C");
-       jetanaMC->SetNonStdBranch("jetsMC");
-       mgr->AddTask(jetanaMC);
-       // Output histograms list for jet analysis                       
-       AliAnalysisDataContainer *cout_jetMC = mgr->CreateContainer("jethistMC", TList::Class(),
-                                                                  AliAnalysisManager::kOutputContainer,Form("jethistMC_%07d-%07d.root",nOffset,nOffset+nEvents));
-       // Dummy AOD output container for jet analysis (no client yet)
-       c_aodjetMC = mgr->CreateContainer("cAODjetMC", TTree::Class(),
-                           AliAnalysisManager::kExchangeContainer);
-       // Connect to data containers
-       mgr->ConnectInput  (jetanaMC,     0, cinput  );
-       mgr->ConnectOutput (jetanaMC,     0, c_aodjetMC );
-       // mgr->ConnectOutput (jetanaMC,     0, cout_aod );
-       mgr->ConnectOutput (jetanaMC,     1, cout_jetMC );
-    }   
-    // Dijet analysis
-    if(iDIJETAN){
-      AliAnalysisTaskDiJets *dijetana = new AliAnalysisTaskDiJets("DiJetAnalysis");
-      dijetana->SetDebugLevel(2);
-      
-      mgr->AddTask(dijetana);
-
-      //
-      // Create containers for input/output
-      AliAnalysisDataContainer *c_aod_dijet = mgr->CreateContainer("cAODdijet", TTree::Class(),
-                                                                  AliAnalysisManager::kExchangeContainer);
-      mgr->ConnectInput  (dijetana,  0, cinput  );
-      mgr->ConnectOutput (dijetana,  0, c_aod_dijet);
-    }
-
-
-    if (iPWG4SPECTRUM) {
-      AliAnalysisTaskJetSpectrum* pwg4spec = new  AliAnalysisTaskJetSpectrum("Jet Spectrum");
-      
-      // default parameters use a switch via iPWGSPECTRUM
-      // or a config file
-      pwg4spec->SetAnalysisType(AliAnalysisTaskJetSpectrum::kAnaMC);
-      //      if(iAODanalysis)pwg4spec->SetAODInput(kTRUE);
-      pwg4spec->SetDebugLevel(11); 
-      //      pwg4spec->SetBranchRec("jetsMC"); 
-      //      pwg4spec->SetBranchGen("jetsMC"); 
-      mgr->AddTask(pwg4spec);
-
-      AliAnalysisDataContainer *coutput1_Spec = mgr->CreateContainer("pwg4spec", TList::Class(),AliAnalysisManager::kOutputContainer,Form( "pwg4spec_%07d-%07d.root",nOffset,nOffset+nEvents));
-      // coutput1_Spec->SetSpecialOutput();
-      // Dummy AOD output container for jet analysis (no client yet)
-      c_aodSpec = mgr->CreateContainer("cAODjetSpec", TTree::Class(),
-                                       AliAnalysisManager::kExchangeContainer);
-      mgr->ConnectInput  (pwg4spec,  0, cinput);    
-      // mgr->ConnectInput  (pwg4spec,  0, c_aodjet);    
-      mgr->ConnectOutput (pwg4spec,  0, c_aodSpec );
-      mgr->ConnectOutput (pwg4spec,  1, coutput1_Spec );
-    }   
-
-    
-    // Particle correlation analysis
-    if (iPWG4UE) {
-      AliAnalysisTaskUE* ueana = new  AliAnalysisTaskUE("Underlying Event");
-      
-
-      // default parameters use a switch via iPWGUE
-      // or a config file
-      Int_t anaType =1; 
-      Int_t regType =1;
-      Double_t jetEtaCut=0.2;
-      Double_t trackPtCut=0.5; 
-      Double_t trackEtaCut= 0.9; 
-      Double_t rad=0.7; 
-      Double_t deltaPhiCut = 2.616;
-
-      ueana->SetDebugLevel(10); 
-      ueana->SetPtRangeInHist(25, 0., 250.);
-      ueana->SetAnaTopology(anaType);      
-      ueana->SetRegionType(regType);        
-      ueana->SetJet1EtaCut(jetEtaCut);     
-      ueana->SetTrackPtCut(trackPtCut); 
-      ueana->SetPtSumOrdering(2);
-      ueana->SetConeRadius(rad);   
-      ueana->SetTrackEtaCut(trackEtaCut);
-      ueana->SetJet2DeltaPhiCut(deltaPhiCut);
-      mgr->AddTask(ueana);
-
-
-      AliAnalysisDataContainer *coutput1_UE = mgr->CreateContainer("histosUE", TList::Class(),AliAnalysisManager::kOutputContainer, Form("pwg4UE_%07d-%07d.root",nOffset,nOffset+nEvents));
-
-      mgr->ConnectInput  (ueana,  0, cinput);    
-      //      mgr->ConnectInput  (ueana,  0, c_aodjet);    
-      mgr->ConnectOutput (ueana,     0, coutput1_UE );
-    }   
-
-    // Run the analysis
-    //    
-    if (mgr->InitAnalysis()) {
-       mgr->PrintStatus();
-       if(bPROOF)mgr->StartAnalysis("proof",dataset.Data(), nEvents,nOffset);
-       else mgr->StartAnalysis("local",chain);
-    }   
-}
+//______________________________________________________________________________\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("libPWG3muon.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