]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/AnalysisTrainPWG4Jets.C
Added new background scheeme, did some cleanup. added new bethe block parameters...
[u/mrichter/AliRoot.git] / PWG4 / macros / AnalysisTrainPWG4Jets.C
index fbde09963a49644b507db330e6db3556f9f441ca..29471c1ba4ad2c129e42a231bc8c40448531071b 100644 (file)
@@ -3,7 +3,7 @@
 // your needs, then run root.
 //    root[0] .L AnalysisTrain.C
 // Grid full mode as below (other modes: test, offline, submit, terminate)
-//    root[1] AnalysisTrainPWG4Jets("grid", "full")
+//    root[1] AnalysisTrainPWG-244Jets("grid", "full")
 // CAF mode (requires root v5-23-02 + aliroot v4-16-Rev08)
 //    root[2] AnalysisTrainPWG4Jets("proof")
 // Local mode requires AliESds.root or AliAOD.root in ./data directory
@@ -37,6 +37,7 @@ Bool_t      kFillAOD = kFALSE;  // switch of AOD filling for on the fly analysis
 Int_t       iAODanalysis       = 1;      // Analysis on input AOD's
 Int_t       iAODhandler        = 1;      // Analysis produces an AOD or dAOD's
 Int_t       iESDfilter         = 0;      // ESD to AOD filter (barrel + muon tracks)
+Int_t       iPhysicsSelection  = 1;      // ESD to AOD filter (barrel + muon tracks)
 Bool_t      kUseKinefilter     = kFALSE; // use Kinematics filter
 Bool_t      kUseMuonfilter     = kFALSE; // use Kinematics filter
 TString     kCommonOutputFileName = "PWG4_JetTasksOutput.root";
@@ -66,11 +67,13 @@ Int_t       iPWG4JetTasks      = 0;      // all jet tasks flag for lib laoding
 Int_t       iPWG4JetServices   = 0;      // jet spectrum analysis
 Int_t       iPWG4JetSpectrum   = 0;      // jet spectrum analysis
 Int_t       iPWG4UE            = 0;      // Underlying Event analysis
+Int_t       iPWG4TmpSourceSara = 0;      // Underlying Event analysis
 Int_t       iPWG4PtQAMC        = 0;      // Marta's QA tasks 
 Int_t       iPWG4PtSpectra     = 0;      // Marta's QA tasks 
 Int_t       iPWG4PtQATPC       = 0;      // Marta's QA tasks 
 Int_t       iPWG4ThreeJets     = 0;      // Sona's thrust task
 Int_t       iPWG4PartCorr      = 0;      // Gustavo's part corr analysis
+Int_t       iPWG4omega3pi      = 0;      // Omega to 3 pi analysis (PWG4) 
 Int_t       iPWG4GammaConv     = 0;      // Gamma Conversio
 Int_t       kHighPtFilterMask  = 16;     // change depending on the used AOD Filter
 TString     kDeltaAODJetName   = "AliAOD.Jet.root";     
@@ -100,8 +103,8 @@ Int_t       kProofOffset = 0;
 //== grid plugin setup variables
 Bool_t      kPluginUse         = kTRUE;   // do not change
 Bool_t      kPluginUseProductionMode  = kFALSE;   // use the plugin in production mode
-TString     kPluginRootVersion       = "v5-25-04-1";  // *CHANGE ME IF MORE RECENT IN GRID*
-TString     kPluginAliRootVersion    = "v4-18-14-AN";  // *CHANGE ME IF MORE RECENT IN GRID*                                          
+TString     kPluginRootVersion       = "v5-25-04-3";  // *CHANGE ME IF MORE RECENT IN GRID*
+TString     kPluginAliRootVersion    = "v4-18-15-AN";  // *CHANGE ME IF MORE RECENT IN GRID*                                          
 // TString kPluginExecutableCommand = "root -b -q";
 TString     kPluginExecutableCommand = "source /Users/kleinb/setup_32bit_aliroot_trunk_clean_root_trunk.sh; alienroot -b -q ";
 // == grid plugin input and output variables
@@ -117,7 +120,7 @@ TString     kGridMergeExclude       = "AliAOD.root"; // Files that should not be
 TString     kGridOutputStorages      = "ALICE::NIHAM::File,ALICE::CNAF::SE,ALICE::FZK::SE,ALICE::GSI::SE,ALICE::Legnaro::SE"; // Make replicas on the storages
 // == grid process variables
 Int_t       kGridRunsPerMaster     = 100; // Number of runs per master job
-Int_t       kGridFilesPerJob       = 200; // Maximum number of files per job (gives size of AOD)
+Int_t       kGridFilesPerJob       = 100; // Maximum number of files per job (gives size of AOD)
 
 //==============================================================================
 // ### Local Steering variables
@@ -133,6 +136,7 @@ TString     kLocalDataList   = "local_deltaaod.txt"; // Change local xml dataset
 // Temporaries.
 TString anaPars = "";
 TString anaLibs = "";
+TString anaLibsExtra = "";
 TString anaSources = "";
 // Function signatures
 class AliAnalysisAlien;
@@ -151,6 +155,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
    if (kSaveTrain)WriteConfig();
    // Check compatibility of selected modules
    CheckModuleFlags(smode);
+   //   gROOT->ProcessLine(".trace");
 
    printf("==================================================================\n");
    printf("===========    RUNNING ANALYSIS TRAIN %s IN %s MODE   ==========\n", kTrainName.Data(),smode.Data());
@@ -158,6 +163,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
    printf("=  Configuring analysis train for:                               =\n");
    if (iAODanalysis) printf("=  AOD analysis                                                  =\n");
    else              printf("=  ESD analysis                                                  =\n");
+   if (iPhysicsSelection)   printf("=  Physics selection                                                    =\n");
    if (iESDfilter)   printf("=  ESD filter                                                    =\n");
    if (iJETAN)       printf("=  Jet analysis                                                  =\n");
    printf("==================================================================\n");
@@ -170,6 +176,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
    printf(":: use PAR files     %d\n", (UInt_t)kUsePAR);
    printf(":: use AliEn plugin  %d\n", (UInt_t)kPluginUse);
    printf(":: use PWG1 QA sym       %d\n", iPWG1QASym);
+   printf(":: use PWG4 Source Sara  %d\n",iPWG4TmpSourceSara);
    printf(":: use PWG4 Jet tasks    %d\n",iPWG4JetTasks);
    printf(":: use PWG4 Jet Services %d\n",iPWG4JetServices);     
    printf(":: use PWG4 Jet Spectrum %d\n",iPWG4JetSpectrum);
@@ -179,6 +186,8 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
    printf(":: use PWG4 Pt QA TPC    %d\n",iPWG4PtQATPC);     
    printf(":: use PWG4 Three Jets   %d\n",iPWG4ThreeJets);
    printf(":: use PWG4 Part Corr    %d\n",iPWG4PartCorr);
+   printf(":: use PWG4 omega to 3 pions %d\n",iPWG4omega3pi);
+
    printf(":: use PWG4 Gamma Conv   %d\n",iPWG4GammaConv);
    printf(":: use HighPt FilterMask %d\n",kHighPtFilterMask);    
 
@@ -197,7 +206,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
    }
     
    // Make the analysis manager and connect event handlers
-   AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "Production train");
+   AliAnalysisManager *mgr  = new AliAnalysisManager("PWG4Train", "pwg4 mini train");
    if (kCommonOutputFileName.Length()>0)mgr->SetCommonFileName(kCommonOutputFileName.Data());
    if (kProofSaveToAlien) mgr->SetSpecialOutputLocation(kProofOutdir);
    if (!strcmp(plugin_mode, "test")) mgr->SetNSysInfo(1);
@@ -233,7 +242,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
       aodHandler->SetFillAOD(kFillAOD);
       
       mgr->SetOutputEventHandler(aodHandler);
-
+      //
       if (iAODanalysis) {
 
        //         aodHandler->SetCreateNonStandardAOD();
@@ -259,6 +268,13 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
    // is done in this macro, but in future these containers will be connected
    // from each task configuration macro.
 
+   if(iPhysicsSelection && !iAODanalysis){
+     gROOT->LoadMacro("$ALICE_ROOT/PWG1/PilotTrain/AddTaskPhysicsSelection.C");
+     AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kTRUE);
+     if(kIsMC)physSelTask->GetPhysicsSelection()->SetAnalyzeMC();
+     physSelTask->GetPhysicsSelection()->AddBackgroundIdentification(new AliBackgroundSelection());
+   }
+
    if (iESDfilter && !iAODanalysis) {
       //  ESD filter task configuration.
       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");
@@ -280,7 +296,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
       gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/AddTaskJets.C");
       AliAnalysisTaskJets *taskjets = 0;
       if(iJETAN&1)taskjets = AddTaskJets(kHighPtFilterMask); 
-      if(iJETAN&2)AddTaskJetsDelta(kDeltaAODJetName.Data(),kHighPtFilterMask,kUseAODMC); 
+      if(iJETAN&2)AddTaskJetsDelta(kDeltaAODJetName.Data(),kHighPtFilterMask,kUseAODMC,0xfffffff); 
       if (!taskjets) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJets cannot run for this train conditions - EXCLUDED");
    }
 
@@ -296,9 +312,17 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
      gROOT->LoadMacro("$ALICE_ROOT/prod/acrcaf/qa_pp/AddTaskQAsym.C");
      AliAnalysisTaskQASym *taskQASym = AddTaskQAsym(-1);
      if (!taskQASym) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskQASym cannot run for this train conditions - EXCLUDED");
+   }
+
 
+
+   if(iPWG4TmpSourceSara){
+     gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/AddTaskEta.C");
+     AliAnalysisTaskEta *taskEta = AddTaskEta();
+     if (!taskEta) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskEta cannot run for this train conditions - EXCLUDED");
    }
 
+
    if(iPWG4JetServices){
      gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/AddTaskJetServices.C");
      AliAnalysisTaskJetServices *taskjetServ = 0;
@@ -325,8 +349,12 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
      AliAnalysisTaskUE *taskUE = 0;
      if(iPWG4UE&1)taskUE = AddTaskUE(); 
      if(iPWG4UE&2){
-       taskUE = AddTaskUE("jetsAOD_CDF07"); 
-       taskUE = AddTaskUE("jetsAOD_UA1LO07"); 
+       taskUE = AddTaskUE("jetsAOD_CDF07","ALICE","LJ","TRANSV"); 
+       taskUE = AddTaskUE("jetsAOD_UA1LO07","ALICE","LJ","TRANSV");
+       taskUE = AddTaskUE("jetsAOD_UA1LO07","ALICE","BB","TRANSV");
+       taskUE = AddTaskUE("jetsAOD_FASTKT04","ALICE","LJ","TRANSV");
+       taskUE = AddTaskUE("jetsAOD_FASTJET04","ALICE","LJ","TRANSV");
+       taskUE = AddTaskUE("jetsAOD_SISCONE04","ALICE","LJ","TRANSV");
      }
      if (!taskUE) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskUE cannot run for this train conditions - EXCLUDED");
    }
@@ -362,7 +390,15 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
      AliAnalysisTaskParticleCorrelation *taskpartcorrEMCAL = AddTaskPartCorr("AOD", "EMCAL",kUseMC,kFALSE,kIsMC);
      if (!taskpartcorrEMCAL) ::Warning("AnalysisTrainNew", "AliAnalysisTaskParticleCorrelation EMCAL cannot run for this train conditions - EXCLUDED");
      if(kDeltaAODPartCorrName.Length()>0)mgr->RegisterExtraFile(kDeltaAODPartCorrName.Data()); // hmm this is written anyway.... but at least we do not register it...
-   }   
+   } 
+
+   if (iPWG4omega3pi) {
+     gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/AddTaskomega3pi.C");
+     AliAnalysisTaskOmegaPi0PiPi *taskomega3pi = AddTaskomega3pi();
+     if (!taskomega3pi) ::Warning("AnalysisTrainNew", "AliAnalysisTaskomega3pi cannot run\
+ for these train conditions - EXCLUDED");
+   }
+
 
    // PWG4 gamma conversion analysis
    if (iPWG4GammaConv) {
@@ -370,10 +406,11 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
       TString cdir = gSystem->WorkingDirectory();
       gSystem->ChangeDirectory(gSystem->ExpandPathName("$ALICE_ROOT/PWG4/macros/"));
       //      TString gcArguments = "-run-on-train -run-jet -run-chic -run-neutralmeson -run-cf";
-      TString gcArguments = "-run-on-train -run-jet -run-neutralmeson -run-cf";
+      TString gcArguments = "-run-on-train -run-jet -run-neutralmeson -run-cf -use-own-xyz";
       if(!kIsMC)gcArguments += " -mc-off";
       AliAnalysisTaskGammaConversion * taskGammaConversion = AddTaskGammaConversion(gcArguments,mgr->GetCommonInputContainer());
       gSystem->ChangeDirectory(cdir);
+      taskGammaConversion->SelectCollisionCandidates();
       if (!taskGammaConversion) ::Warning("AnalysisTrainNew", "AliAnalysisTaskGammaConversion cannot run for these train conditions - EXCLUDED");
    }   
 
@@ -389,12 +426,12 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
    if (mgr->InitAnalysis()) {
      mgr->PrintStatus();
      // if (kSaveTrain || strlen(config_file)) gSystem->ChangeDirectory(kTrainName);
-     if (!strcmp(plugin_mode, "submit")&&smode=="GRID"){
+     if (!strcmp(plugin_mode,"submit")&&smode=="GRID"){
        TString alien_workdir = gGrid->GetHomeDirectory();
        if (iAODanalysis) alien_workdir += "analysisAOD";
        else              alien_workdir += "analysisESD";
        AliAnalysisAlien *gridhandler = (AliAnalysisAlien*)mgr->GetGridHandler();
-       printf("=== Registering jdl in the work directory alien://%s/%s, should be done by the manager! ===\n",
+       printf("=== AnalysisTrainPWG4Jets:: Registering jdl in the work directory alien://%s/%s, should be done by the manager! ===\n",
              alien_workdir.Data(),gridhandler->GetGridOutputDir());
        TFile::Cp(Form("file:%s.jdl",kTrainName.Data()), Form("alien://%s/%s/%s.jdl",alien_workdir.Data(),
                                                             gridhandler->GetGridOutputDir(),kTrainName.Data()));
@@ -402,25 +439,25 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
     
      StartAnalysis(smode, chain);
      if (!strcmp(plugin_mode, "offline")&&smode=="GRID"){
-     // Offline mode path files
-     //        PatchJDL();
-     PatchAnalysisMacro();
-      }
+       // Offline mode path files
+       //      PatchJDL();
+       PatchAnalysisMacro();
+     }
 
-      if (kSaveTrain && smode=="GRID") {
-         AliAnalysisAlien *gridhandler = (AliAnalysisAlien*)mgr->GetGridHandler();
-         TString alien_workdir = gGrid->GetHomeDirectory();
-         if (iAODanalysis) alien_workdir += "analysisAOD";
+     if (kSaveTrain && smode=="GRID") {
+       AliAnalysisAlien *gridhandler = (AliAnalysisAlien*)mgr->GetGridHandler();
+       TString alien_workdir = gGrid->GetHomeDirectory();
+       if (iAODanalysis) alien_workdir += "analysisAOD";
          else              alien_workdir += "analysisESD";
-        //     kGridOutdir = gridhandler->GetGridOutputDir();
-         printf("=== Registering ConfigTrain.C in the work directory <%s> ===\n",
+       //     kGridOutdir = gridhandler->GetGridOutputDir();
+       printf("=== Registering ConfigTrain.C in the work directory <%s> ===\n",
                 alien_workdir.Data());
-         if (AliAnalysisAlien::FileExists(Form("%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data())))
-            gGrid->Rm(Form("%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data()));
-         if (strcmp(plugin_mode, "test"))
-            TFile::Cp(Form("file:%sConfig.C",kTrainName.Data()), Form("alien://%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data()));
-      }
-}
+       if (AliAnalysisAlien::FileExists(Form("%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data())))
+        gGrid->Rm(Form("%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data()));
+       if (strcmp(plugin_mode, "test"))
+        TFile::Cp(Form("file:%sConfig.C",kTrainName.Data()), Form("alien://%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data()));
+     }
+   }
 }
 
 //______________________________________________________________________________
@@ -473,7 +510,9 @@ void CheckModuleFlags(const char *mode) {
    if (!strcmp(mode, "GRID"))  imode = 2;
 
 
-
+   if (kUseCPAR) {
+     kPluginAliRootVersion    = ""; // NO aliroot if we use CPAR
+   }
 
    if (imode==1) {
       if (!kUsePAR) {
@@ -506,6 +545,9 @@ void CheckModuleFlags(const char *mode) {
       if (iESDfilter)
          ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "ESD filter disabled in analysis on AOD's");
       iESDfilter   = 0;
+      if (iPhysicsSelection)
+         ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "Physics Selection disabled in analysis on AOD's");
+      iPhysicsSelection   = 0;
       if (!iAODhandler) {
          if (iJETAN) 
             ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "JETAN disabled in analysis on AOD's without AOD handler");
@@ -521,6 +563,9 @@ void CheckModuleFlags(const char *mode) {
       iPWG4PtSpectra     = 0;
       if (iPWG4PartCorr)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4partcorr disabled on AOD's");
       iPWG4PartCorr = 0;
+      if (iPWG4omega3pi)
+       ::Info("AnalysisTrainNew.C::CheckModuleFlags", "PWG4omega3pi disabled on AOD's");
+      iPWG4omega3pi = 0;
       if(iPWG1QASym)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG1 QA Sym disabled in analysis on AOD's");
       if (iPWG4GammaConv)::Info("AnalysisPWG4Jets.C::CheckModuleFlags", "PWG4gammaconv disabled on AOD's");
       iPWG4GammaConv = 0;   
@@ -540,7 +585,9 @@ void CheckModuleFlags(const char *mode) {
      if (!kUseTR) {
        //         ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "iPWG2evchar disabled if not reading track references");
      }   
-      if (iJETAN) iESDfilter=1;
+     if (iJETAN){
+       iESDfilter=1;
+     }
       if (!iESDfilter){
        kUseKinefilter = kFALSE;
        kUseMuonfilter = kFALSE;
@@ -716,17 +763,27 @@ Bool_t LoadAnalysisLibraries(const char *mode)
    // JETAN
    if (iJETAN||iDIJETAN) {
      if (!strcmp(mode, "PROOF")){
-       gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libCGALso\"\)", kTRUE); 
+       gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libCGAL.so\"\)", kTRUE); 
        gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libfastjet.so\"\)", kTRUE); 
        // problem when loading siscone copiled with different gcc version??
        // gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libsiscone.so\"\)", kTRUE); 
        gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libSISConePlugin.so\"\)", kTRUE);      
      }
-     if (!LoadLibrary("libCGAL.so", mode, kTRUE)) return kFALSE;
-     if (!LoadLibrary("libfastjet.so", mode, kTRUE)) return kFALSE;
-     if (!LoadLibrary("libsiscone.so", mode, kTRUE)) return kFALSE;
-     if (!LoadLibrary("libSISConePlugin.so", mode, kTRUE)) return kFALSE;
      if (!LoadLibrary("JETAN", mode, kTRUE)) return kFALSE;
+     if(!kUsePAR){
+       if (!LoadLibrary("CGAL", mode, kTRUE)) return kFALSE;
+       if (!LoadLibrary("fastjet", mode, kTRUE)) return kFALSE;
+       if (!LoadLibrary("siscone", mode, kTRUE)) return kFALSE;
+       if (!LoadLibrary("SISConePlugin", mode, kTRUE)) return kFALSE;
+     }
+     else{
+       // par files plus FASTJET needs some extra work... need to change
+       // the loading sequence in the auto generated .C file
+       if (!LoadLibrary("libCGAL.so", mode, kTRUE)) return kFALSE;
+       if (!LoadLibrary("libfastjet.so", mode, kTRUE)) return kFALSE;
+       if (!LoadLibrary("libsiscone.so", mode, kTRUE)) return kFALSE;
+       if (!LoadLibrary("libSISConePlugin.so", mode, kTRUE)) return kFALSE;
+     }
      if (!LoadLibrary("FASTJETAN", mode, kTRUE)) return kFALSE;
    }
    if(iPWG4JetTasks){
@@ -736,12 +793,19 @@ Bool_t LoadAnalysisLibraries(const char *mode)
    if(iPWG1QASym){
      if (!LoadSource(Form("%s/PWG1/AliAnalysisTaskQASym.cxx",gSystem->ExpandPathName("$ALICE_ROOT")), mode, kTRUE))return kFALSE;
    }
+   if(iPWG4TmpSourceSara){
+     gSystem->AddIncludePath("-I$ALICE_ROOT/include/JetTasks"); // ugly hack!!
+     if(!LoadSource(Form("%s/PWG4/JetTasks/AliAnalysisTaskEta.cxx",gSystem->ExpandPathName("$ALICE_ROOT")), mode, kTRUE))return kFALSE;
+   }
    if (iPWG4PartCorr) {   
       if (!LoadLibrary("EMCALUtils", mode, kTRUE) ||
           !LoadLibrary("PHOSUtils", mode, kTRUE) ||
           !LoadLibrary("PWG4PartCorrBase", mode, kTRUE) ||
           !LoadLibrary("PWG4PartCorrDep", mode, kTRUE)) return kFALSE;
    }
+   if (iPWG4omega3pi) {
+     if (!LoadLibrary("PWG4omega3pi", mode, kTRUE)) return kFALSE;
+   }
    if (iPWG4GammaConv) {
       if (!LoadLibrary("PWG4GammaConv", mode, kTRUE)) return kFALSE;
    }      
@@ -774,6 +838,7 @@ Bool_t LoadLibrary(const char *module, const char *mode, Bool_t rec=kFALSE)
          return kFALSE;
       }
       if (rec) anaLibs += Form("%s.so ",mod.Data()); 
+      if (rec) anaLibsExtra += Form("%s.so ",mod.Data()); 
       return kTRUE;
    } 
    // Check if the library is already loaded
@@ -1019,7 +1084,9 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
    plugin->SetNtestFiles(2);
 //   plugin->SetPreferedSE("ALICE::NIHAM::File");
 // Set versions of used packages
-   plugin->SetAPIVersion("V1.0x");
+   plugin->SetAPIVersion("V1.1x");
+   //   plugin->SetAPIVersion("V1.0x");
+//   plugin->SetAPIVersion("V2.4");
    plugin->SetROOTVersion(kPluginRootVersion);
    plugin->SetAliROOTVersion(kPluginAliRootVersion);
 // Declare input data to be processed.
@@ -1040,9 +1107,23 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
      ifstream in1;
      in1.open(kGridLocalRunList.Data());
      int iRun;
-     while(in1>>iRun){
-       Printf("AnalysisTrainPWG4Jets Adding run number from File %s", Form(kGridRunPattern.Data(),iRun));
-       plugin->AddRunNumber(Form(kGridRunPattern.Data(),iRun));
+     char c;
+     char cLine[250];
+     while(!in1.eof()){
+       c = in1.get();
+       if ( (c >= '0') && (c <= '9') )
+        {
+          in1.putback (c);
+          in1>>iRun;
+          Printf("AnalysisTrainPWG4Jets Adding run number from File %s", Form(kGridRunPattern.Data(),iRun));
+          plugin->AddRunNumber(Form(kGridRunPattern.Data(),iRun));
+       }
+     else
+       {
+        in1.putback (c);
+        in1.getline(cLine,250);
+        Printf("AnalysisTrainPWG4Jets Skipping run number from File %s", cLine);
+       }
      }
    }
 
@@ -1070,8 +1151,11 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
    // set extra libs before par file compilation
    anaLibs += kGridExtraFiles;
    anaLibs     = anaLibs.Strip();   
-   Printf("%s",anaLibs.Data());
-   if (anaLibs.Length())     plugin->SetAdditionalLibs(anaLibs.Data());
+   Printf("anaLibs %s",anaLibs.Data());
+   Printf("anaLibsExtra %s",anaLibsExtra.Data());
+
+   if (anaLibs.Length())          plugin->SetAdditionalLibs(anaLibs.Data());
+   if (anaLibsExtra.Length())     plugin->SetAdditionalRootLibs(anaLibsExtra.Data());
 
    TString ana_sources = "";
    TString ana_add = "";
@@ -1114,34 +1198,44 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
       if (!(strcmp(filename, "default"))) {
        if (!mgr->GetOutputEventHandler()) continue;
          filename = mgr->GetOutputEventHandler()->GetOutputFileName();
-         if (listaods.Length()) listaods += ",";
+         if (listaods.Length()) listaods += " ";
         listaods += filename;
-        if(kIsMC){
-          listaods += ",";
-          listaods += "pyxsec_hists.root";
-        }
       } else {
-       if(!listhists->Contains(filename)){
-         if (listhists.Length()) listhists += ",";
+       if(!listhists.Contains(filename)){
+         if (listhists.Length()) listhists += " ";
          listhists += filename;
        }
       }
    }
 
    if(kUseSysInfo>0){
-     if (listhists.Length()) listhists += ",";
+     if (listhists.Length()) listhists += " ";
      listhists += "syswatch.root";
    }
 
+   if(kIsMC){
+     if (listaods.Length()) listaods += " ";
+     listaods += "pyxsec_hists.root";
+   }
+
+
    if (mgr->GetExtraFiles().Length()) {
-     if (listaods.Length()) listaods += ",";
+     if (listaods.Length()) listaods += " ";
      listaods += mgr->GetExtraFiles();
-     listaods.ReplaceAll(" ", ",");
    }
 
    // if we do not fill the aod we do not need to store it
-   if(!kFillAOD)listaods="";
+   kGridMergeExclude = listaods;
+   
+   if(!kFillAOD){
+     listaods="";
+     plugin->SetDefaultOutputs(kFALSE);
+     plugin->SetOutputFiles(listhists.Data());
+   }
+
 
+   listaods.ReplaceAll(" ", ",");
+   listhists.ReplaceAll(" ", ",");
    if (listhists.Length()) listhists = Form("hist_archive.zip:%s@%s", listhists.Data(), kGridOutputStorages.Data());;
    if (listaods.Length())  listaods  = Form("aod_archive.zip:%s@%s", listaods.Data(), kGridOutputStorages.Data());;
 
@@ -1149,10 +1243,10 @@ AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
       ::Fatal("AnalysisTrainPWG4Jets", "No task output !");
    }
 
-   kGridMergeExclude = listaods;
 
-   TString outputArchive = "log_archive.zip:stdout,stderr@ALICE::CERN::SE";
-   if(kUseSysInfo>0)outputArchive = "log_archive.zip:stdout,stderr,syswatch.log@ALICE::CERN::SE";
+
+   TString outputArchive = "log_archive.zip:stdout,stderr@ALICE::FZK::SE,ALICE::GSI::SE";
+   if(kUseSysInfo>0)outputArchive = "log_archive.zip:stdout,stderr,syswatch.log@ALICE::FZK::SE,ALICE::GSI::SE";
    if (listaods.Length()) {
       outputArchive += " ";
       outputArchive += listaods;
@@ -1292,7 +1386,7 @@ Bool_t PatchAnalysisMacro(){
   Int_t index;
   index = st.Index("gSystem->Load(\"libPhysics\");");
   index += strlen("gSystem->Load(\"libPhysics\");");
-  if(iJETAN){
+  if(iJETAN&&kUsePAR){
     TObjArray *arr;
     TObjString *objstr;
     arr = anaLibs.Tokenize(" ");
@@ -1300,12 +1394,18 @@ Bool_t PatchAnalysisMacro(){
     TString add = "";
     add += "\n\n // added by CKB \n";
     while ((objstr=(TObjString*)next())){
+      if(objstr->GetString().Contains("PWG3"))continue;
       if(objstr->GetString().EndsWith(".so"))add += Form("gSystem->Load(\"%s\");\n",objstr->GetString().Data());
     }
     delete arr; 
     add += "// BKC \n\n";
     st.Insert(index,add.Data());
   }
+
+  if(kUseDebug){
+    st.Insert(index,"\n gROOT->ProcessLine(\".trace\"); // CKB \n");
+  }
+
   ofstream out;
   out.open(Form("%s.C", kTrainName.Data()));
   if (out.bad()) {