Removing obsolete directory
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Feb 2012 12:11:31 +0000 (12:11 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Feb 2012 12:11:31 +0000 (12:11 +0000)
40 files changed:
PWG2/AnalysisMacros/Batch/analysisESD.jdl [deleted file]
PWG2/AnalysisMacros/Batch/global.xml [deleted file]
PWG2/AnalysisMacros/Batch/root.sh [deleted file]
PWG2/AnalysisMacros/Batch/runBatch.C [deleted file]
PWG2/AnalysisMacros/Batch/validation.sh [deleted file]
PWG2/AnalysisMacros/Interactive/alienroot [deleted file]
PWG2/AnalysisMacros/Interactive/runInteractive.C [deleted file]
PWG2/AnalysisMacros/Interactive/tag.xml [deleted file]
PWG2/AnalysisMacros/Kine/AliAnalysisTaskPtMC.cxx [deleted file]
PWG2/AnalysisMacros/Kine/AliAnalysisTaskPtMC.h [deleted file]
PWG2/AnalysisMacros/Kine/runKine.C [deleted file]
PWG2/AnalysisMacros/Local/Tags/CreateTags.C [deleted file]
PWG2/AnalysisMacros/Local/Tags/runTagCreator.C [deleted file]
PWG2/AnalysisMacros/Local/runLocal.C [deleted file]
PWG2/AnalysisMacros/Proof/runProof.C [deleted file]
PWG2/AnalysisMacros/README [deleted file]
PWG2/AnalysisMacros/setenv.sh [deleted file]
PWG2/CreateChain.C [deleted file]
PWG2/Makefile [deleted file]
PWG2/PROOF-INF.PWG2AOD/BUILD.sh [deleted file]
PWG2/PROOF-INF.PWG2AOD/SETUP.C [deleted file]
PWG2/PROOF-INF.PWG2kink/BUILD.sh [deleted file]
PWG2/PROOF-INF.PWG2kink/SETUP.C [deleted file]
PWG2/PWG2LinkDef.h [deleted file]
PWG2/SPECTRA/AliAnalysisTaskCheckV0.cxx [deleted file]
PWG2/SPECTRA/AliAnalysisTaskCheckV0.h [deleted file]
PWG2/SPECTRA/AliAnalysisTaskPerformanceStrange.cxx [deleted file]
PWG2/SPECTRA/AliAnalysisTaskPerformanceStrange.h [deleted file]
PWG2/SPECTRA/AliAnalysisTaskStrange.cxx [deleted file]
PWG2/SPECTRA/AliAnalysisTaskStrange.h [deleted file]
PWG2/SPECTRA/macros/AddTaskCheckV0.C [deleted file]
PWG2/SPECTRA/macros/AddTaskPerformanceStrange.C [deleted file]
PWG2/SPECTRA/macros/AddTaskStrange.C [deleted file]
PWG2/centraltrain/AnalysisTrainPWG2.C [deleted file]
PWG2/data/AliAnalysisCentralEfficiency.root [deleted file]
PWG2/data/PriorProbabilities.root [deleted file]
PWG2/data/README [deleted file]
PWG2/data/protonsdEdxInfo.dat [deleted file]
PWG2/macros/Train2/runBatch.C [deleted file]
PWG2/runAODAnalysisExample.C [deleted file]

diff --git a/PWG2/AnalysisMacros/Batch/analysisESD.jdl b/PWG2/AnalysisMacros/Batch/analysisESD.jdl
deleted file mode 100644 (file)
index 511c965..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# this is the startup process for root
-Executable="root.sh";
-Jobtag={"comment:AliEn tutorial batch example - ESD"};
-
-# we split per storage element
-Split="se";
-
-# we want each job to read 100 input files
-SplitMaxInputFileNumber="5";
-
-# this job has to run in the ANALYSIS partition
-Requirements=( member(other.GridPartitions,"Analysis") );
-
-# validation command
-Validationcommand ="/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/validation.sh";
-
-# we need ROOT and the API service configuration package
-Packages={"APISCONFIG::V2.4","VO_ALICE@ROOT::v5-16-00"};
-
-# Time to live
-TTL = "30000";
-
-# Automatic merging
-Merge={"Pt.ESD.root:/alice/jdl/mergerootfile.jdl:Pt.ESD.Merged.root"};
-
-# Output dir of the automatic merging
-MergeOutputDir="/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/output/";
-
-#ROOT will read this collection file to know, which files to analyze
-InputDataList="wn.xml";
-
-#ROOT requires the collection file in the xml-single format
-InputDataListFormat="merge:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/global.xml";
-
-# this is our collection file containing the files to be analyzed
-InputDataCollection="LF:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/global.xml,nodownload";
-
-InputFile= {"LF:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/runBatch.C",
-            "LF:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/STEERBase.par",
-            "LF:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/ESD.par",
-            "LF:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/AOD.par",
-            "LF:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/ANALYSIS.par",
-            "LF:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/AliAnalysisTaskPt.h",
-            "LF:/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/AliAnalysisTaskPt.cxx"};
-
-# Output archive           
-OutputArchive={"log_archive:stdout,stderr,*.log@Alice::CERN::se","root_archive.zip:*.root@Alice::CERN::se"};
-
-# Output directory
-OutputDir="/alice/cern.ch/user/p/pchrist/Tutorial/BATCH/output/#alien_counter#";
-
-# email
-Email="Panos.Christakoglou@cern.ch";
diff --git a/PWG2/AnalysisMacros/Batch/global.xml b/PWG2/AnalysisMacros/Batch/global.xml
deleted file mode 100644 (file)
index 548c8eb..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<alien>
-  <collection name="global">
-    <event name="1">
-      <file name="AliESDs.root" guid="00529d2e-33c5-16dd-8001-89ab9e86beef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/001/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/001/AliESDs.root" evlist="0,4,21,38,47,50,57,79,86,88" />
-    </event>
-    <event name="2">
-      <file name="AliESDs.root" guid="007ac006-639b-16d8-8001-b0c88e80beef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/010/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/010/AliESDs.root" evlist="19,23,35,36,41,51,58,60,76" />
-    </event>
-    <event name="3">
-      <file name="AliESDs.root" guid="00751cd2-a3ee-16d8-8001-2101a8c0beef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/002/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/002/AliESDs.root" evlist="16,20,45,52,84" />
-    </event>
-    <event name="4">
-      <file name="AliESDs.root" guid="0075f1a2-a063-16d8-8001-3301a8c0beef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/003/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/003/AliESDs.root" evlist="42,54,55,63,93" />
-    </event>
-    <event name="5">
-      <file name="AliESDs.root" guid="004ff182-b048-16d8-8001-7f65010abeef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/004/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/004/AliESDs.root" evlist="0,6,10,35,47,74" />
-    </event>
-    <event name="6">
-      <file name="AliESDs.root" guid="003471dc-ec6f-16d8-8001-2301a8c0beef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/005/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/005/AliESDs.root" evlist="16,18,24,32,43,52,64,72,82,86,98" />
-    </event>
-    <event name="7">
-      <file name="AliESDs.root" guid="002f608e-68d1-16d8-8001-1d858e80beef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/006/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/006/AliESDs.root" evlist="6,19,22,51,52" />
-    </event>
-    <event name="8">
-      <file name="AliESDs.root" guid="000e3634-2eea-16dd-8001-f6ffff0abeef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/007/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/007/AliESDs.root" evlist="37,50,73,82,91,92" />
-    </event>
-    <event name="9">
-      <file name="AliESDs.root" guid="001a5b08-a411-16d8-9717-7064a8c0beef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/008/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/008/AliESDs.root" evlist="41,42,62,80" />
-    </event>
-    <event name="10">
-      <file name="AliESDs.root" guid="00025fee-6023-16d8-8001-b7275d9fbeef" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/009/AliESDs.root" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/009/AliESDs.root" evlist="19,20,21,45,47,60,65,77,81" />
-    </event>
-  </collection>
-</alien>
diff --git a/PWG2/AnalysisMacros/Batch/root.sh b/PWG2/AnalysisMacros/Batch/root.sh
deleted file mode 100644 (file)
index f834eac..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-export GCLIENT_SERVER_LIST="pcapiserv04.cern.ch:10000|pcapiserv05.cern.ch:10000|pcapiserv06.cern.ch:10000|pcapiserv07.cern.ch:10000"
-echo ===========================
-echo $PATH 
-echo $ROOTSYS
-echo $LD_LIBRARY_PATH
-echo ==========================
-
-root -b -x runBatch.C;
-
diff --git a/PWG2/AnalysisMacros/Batch/runBatch.C b/PWG2/AnalysisMacros/Batch/runBatch.C
deleted file mode 100644 (file)
index 0717106..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-void runBatch() {
-  TStopwatch timer;
-  timer.Start();
-
-  printf("*** Connect to AliEn ***\n");
-  TGrid::Connect("alien://");
-  gSystem->Load("libProofPlayer.so");
-
-  //____________________________________________________//
-  //_____________Setting up STEERBase.par_______________//
-  //____________________________________________________//
-  setupPar("STEERBase");
-  gSystem->Load("libSTEERBase.so");
-
-  //____________________________________________________//
-  //_____________Setting up ESD.par_____________________//
-  //____________________________________________________//
-  setupPar("ESD");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libESD.so");
-
-  //____________________________________________________//
-  //_____________Setting up AOD.par_____________________//
-  //____________________________________________________//
-  setupPar("AOD");
-  gSystem->Load("libAOD.so");
-
-  //_____________________________________________________________//
-  //_____________Setting up ANALYSIS_NEW.par_____________________//
-  //_____________________________________________________________//
-  setupPar("ANALYSIS");
-  gSystem->Load("libANALYSIS.so");
-
-  //CreateXML();
-  
-  //ANALYSIS PART
-  gROOT->LoadMacro("AliAnalysisTaskPt.cxx+");
-  const char *collectionfile = "wn.xml";
-
-  //____________________________________________//
-  //Usage of event tags
-  AliTagAnalysis *analysis = new AliTagAnalysis();
-  TChain *chain = 0x0;
-  chain = analysis->GetChainFromCollection(collectionfile,"esdTree");
-  chain->SetBranchStatus("*Calo*",0);
-   
-  //____________________________________________//
-  // Make the analysis manager
-  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
-  AliVEventHandler* esdH = new AliESDInputHandler;
-  mgr->SetInputEventHandler(esdH);  
-  //____________________________________________//
-  // 1st Pt task
-  AliAnalysisTaskPt *task1 = new AliAnalysisTaskPt("TaskPt");
-  mgr->AddTask(task1);
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist1", TH1::Class(),AliAnalysisManager::kOutputContainer,"Pt.ESD.root");
-  
-  //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
-  if (!mgr->InitAnalysis()) return;
-  mgr->PrintStatus();
-  mgr->StartAnalysis("local",chain);
-
-  timer.Stop();
-  timer.Print();
-}
-
-void CreateXML() {
-  // Create A tag analysis object and impose some selection criteria
-  AliTagAnalysis *tagAna = new AliTagAnalysis(); 
-
-  //Case where the tag files are stored locally
-  //TagAna->ChainLocalTags(".");
-
-  //Case where the tag files are stored in the file catalog
-  //pp.xml is the xml collection of tag files that was produced 
-  //by querying the file catalog.
-  TAlienCollection* coll = TAlienCollection::Open("tag.xml");
-  TGridResult* tagResult = coll->GetGridResult("",0,0);
-  tagAna->ChainGridTags(tagResult);
-
-  //__________________________//
-  //Usage of string statements//
-  //__________________________//
-  /*const char* fRunCuts = "fAliceRunId == 340";
-  const char* fEventCuts = "(fEventTag.fTopPtMin >= 1.0)&&(fEventTag.fNumberOfTracks >= 11)&&(fEven
-tTag.fNumberOfTracks <= 12)";
-  tagAna->CreateXMLCollection("global",fRunCuts,fEventCuts);*/
-
-  //________________________________________________//
-  //          Usage of Ali*TagCuts classes          //
-  //________________________________________________//
-  // create a RunTagCut object
-  AliRunTagCuts *runCuts = new AliRunTagCuts();
-  // create a LHCTagCut object
-  AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
-  // create a DetectorTagCut object
-  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
-  // create an EventTagCut object
-  AliEventTagCuts *evCuts = new AliEventTagCuts();
-  evCuts->SetMultiplicityRange(11,12);
-  tagAna->CreateXMLCollection("global",runCuts,lhcCuts,detCuts,evCuts);
-}  
-
-Int_t setupPar(const char* pararchivename) {
-  ///////////////////
-  // Setup PAR File//
-  ///////////////////
-  if (pararchivename) {
-    char processline[1024];
-    sprintf(processline,".! tar xvzf %s.par",pararchivename);
-    gROOT->ProcessLine(processline);
-    const char* 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");
-      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");
-      printf("*******************************\n");
-      gROOT->Macro("PROOF-INF/SETUP.C");
-    }
-    
-    gSystem->ChangeDirectory("../");
-  }
-
-  return 1;
-}
diff --git a/PWG2/AnalysisMacros/Batch/validation.sh b/PWG2/AnalysisMacros/Batch/validation.sh
deleted file mode 100644 (file)
index 4086b27..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-##################################################
-validateout=`dirname $0`
-validatetime=`date`
-validated="0";
-error=1
-if [ -z $validateout ]
-then
-    validateout="."
-fi
-
-cd $validateout;
-validateworkdir=`pwd`;
-
-echo "*******************************************************" >> stdout;
-echo "* AliRoot Validation Script V1.0                      *" >> stdout;
-echo "* Time:    $validatetime " >> stdout;
-echo "* Dir:     $validateout" >> stdout;
-echo "* Workdir: $validateworkdir" >> stdout;
-echo "* ----------------------------------------------------*" >> stdout;
-ls -la ./ >> stdout;
-echo "* ----------------------------------------------------*" >> stdout;
-
-##################################################
-if [ -f job.log ] 
-then 
-sv=`grep -i  "Segmentation violation" *.log`
-if [ "$sv" = "" ]
-    then
-    sf=`grep -i  "Segmentation fault" *.log`
-    if [ "$sf" = "" ]
-       then
-       be=`grep -i  "Bus error" *.log`
-       if [ "$be" = "" ]
-           then
-           ab=`grep -i "Abort" *.log`
-           if [ "$ab" = "" ]
-               then
-               fp=`grep -i  "Floating point exception" *.log`
-               if [ "$fp" = "" ]
-                   then
-                   kl=`grep -i  "Killed" *.log`
-                   if [ "$kl" = "" ]
-                       then
-                       bf=`grep -i "busy flag cleared" *.log`
-                       if [ "$bf" = "" ]
-                           then
-                           echo "* ----------------   Job Validated  ------------------*" >> stdout;
-                           error="0";
-                           else
-                           echo "* ----------------   Job Not Validated  ------------------*" >> stdout;                           
-                       fi
-                   fi;
-               fi
-           fi
-       fi
-    fi
-fi
-else
-    echo "* ########## Job not validated - no job.log  ###" >> stdout;
-fi
-if [ "$error" = "1" ] 
-    then
-    echo "* ################   Job not validated ################" >> stdout;
-fi
-echo "* ----------------------------------------------------*" >> stdout;
-echo "*******************************************************" >> stdout;
-sleep 15;
-cd -
-echo $error
-exit $error
diff --git a/PWG2/AnalysisMacros/Interactive/alienroot b/PWG2/AnalysisMacros/Interactive/alienroot
deleted file mode 100644 (file)
index cb0cd39..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Put this file under your $HOME/bin (or wherever you want)
-# and place the corresponding directory in your $PATH
-#!/bin/bash
-
-export ALIEN=/home/trn2301/alien
-export ROOTSYS=/home/trn2301/root
-export PATH=$ROOTSYS/bin:$PATH
-export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH:$ALIEN/api/lib
-
-if [ -e /tmp/gclient_env_$UID ]; then
-   source /tmp/gclient_env_$UID;
-  root.exe $*
-fi
diff --git a/PWG2/AnalysisMacros/Interactive/runInteractive.C b/PWG2/AnalysisMacros/Interactive/runInteractive.C
deleted file mode 100644 (file)
index 491ae75..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-void runInteractive() {
-  TStopwatch timer;
-  timer.Start();
-  gSystem->Load("libProofPlayer.so");
-
-  printf("*** Connect to AliEn ***\n");
-  TGrid::Connect("alien://");
-  //____________________________________________________//
-  //_____________Setting up STEERBase.par_______________//
-  //____________________________________________________//
-  setupPar("STEERBase");
-  gSystem->Load("libSTEERBase.so");
-
-  //____________________________________________________//
-  //_____________Setting up ESD.par_____________________//
-  //____________________________________________________//
-  setupPar("ESD");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libESD.so");
-
-  //____________________________________________________//
-  //_____________Setting up AOD.par_____________________//
-  //____________________________________________________//
-  setupPar("AOD");
-  gSystem->Load("libAOD.so");
-
-  //_____________________________________________________________//
-  //_____________Setting up ANALYSIS_NEW.par_____________________//
-  //_____________________________________________________________//
-  setupPar("ANALYSIS");
-  gSystem->Load("libANALYSIS.so");
-
-  gROOT->LoadMacro("AliAnalysisTaskPt.cxx+");
-  
-  //____________________________________________//
-  AliTagAnalysis *TagAna = new AliTagAnalysis("ESD");
-  AliRunTagCuts *runCuts = new AliRunTagCuts();
-  AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
-  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
-  AliEventTagCuts *evCuts = new AliEventTagCuts();
-  evCuts->SetMultiplicityRange(11,12);
-
-  //grid tags
-  TAlienCollection* coll = TAlienCollection::Open("tag.xml");
-  TGridResult* TagResult = coll->GetGridResult("",0,0);
-  TagAna->ChainGridTags(TagResult);
-  TChain* chain = 0x0;
-  chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
-  chain->SetBranchStatus("*Calo*",0);
-
-  //____________________________________________//
-  // Make the analysis manager
-  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
-  AliVEventHandler* esdH = new AliESDInputHandler;
-  mgr->SetInputEventHandler(esdH);  
-  //____________________________________________//
-  // 1st Pt task
-  AliAnalysisTaskPt *task1 = new AliAnalysisTaskPt("TaskPt");
-  mgr->AddTask(task1);
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist1", TH1::Class(),AliAnalysisManager::kOutputContainer,"Pt.ESD.root");
-  
-  //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
-  if (!mgr->InitAnalysis()) return;
-  mgr->PrintStatus();
-  mgr->StartAnalysis("local",chain);
-
-  timer.Stop();
-  timer.Print();
-}
-
-Int_t setupPar(const char* pararchivename) {
-  ///////////////////
-  // Setup PAR File//
-  ///////////////////
-  if (pararchivename) {
-    char processline[1024];
-    sprintf(processline,".! tar xvzf %s.par",pararchivename);
-    gROOT->ProcessLine(processline);
-    const char* 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");
-      printf("*******************************\n");
-
-      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
-        Error("runAnalysis","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");
-      printf("*******************************\n");
-      gROOT->Macro("PROOF-INF/SETUP.C");
-    }
-    
-    gSystem->ChangeDirectory("../");
-  }
-
-  return 1;
-}
diff --git a/PWG2/AnalysisMacros/Interactive/tag.xml b/PWG2/AnalysisMacros/Interactive/tag.xml
deleted file mode 100644 (file)
index 3b385f2..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<alien>
-  <collection name="tag">
-    <event name="1">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-09-04 12:42:49" dir="4443499" entryId="4443508" expiretime="" gowner="aliprod" guid="62FE4A2A-5AD3-11DC-A677-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/001/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23318" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/001/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="10">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-08-31 21:23:23" dir="4376483" entryId="4376492" expiretime="" gowner="aliprod" guid="981764F6-57F6-11DC-A546-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/010/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23559" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/010/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="2">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-09-01 01:41:05" dir="4397616" entryId="4397625" expiretime="" gowner="aliprod" guid="473620AC-581B-11DC-8F8F-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/002/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23386" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/002/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="3">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-09-01 01:40:24" dir="4397463" entryId="4397472" expiretime="" gowner="aliprod" guid="3ACFED58-581A-11DC-AAA7-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/003/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23377" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/003/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="4">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-09-01 02:46:20" dir="4407340" entryId="4407349" expiretime="" gowner="aliprod" guid="62B1F4F6-5824-11DC-AC01-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/004/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23535" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/004/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="5">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-09-01 06:54:05" dir="4430698" entryId="4430707" expiretime="" gowner="aliprod" guid="862CF3A0-5846-11DC-96C1-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/005/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23466" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/005/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="6">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-08-31 21:45:06" dir="4379238" entryId="4379247" expiretime="" gowner="aliprod" guid="38A1BA32-57F9-11DC-A3D4-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/006/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23477" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/006/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="7">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-09-04 12:35:07" dir="4442428" entryId="4442437" expiretime="" gowner="aliprod" guid="562DD348-5AD2-11DC-A649-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/007/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23411" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/007/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="8">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-09-01 03:06:58" dir="4410621" entryId="4410630" expiretime="" gowner="aliprod" guid="A79C7E90-5826-11DC-9133-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/008/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23302" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/008/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <event name="9">
-      <file name="Run8268.Event0_100.ESD.tag.root" aclId="" ctime="2007-08-31 21:01:48" dir="4374477" entryId="4374486" expiretime="" gowner="aliprod" guid="AA12A254-57F3-11DC-BD72-000423B5AB42" lfn="/alice/sim/2007/LHC07c/pp_minbias/8268/009/Run8268.Event0_100.ESD.tag.root" md5="" owner="aliprod" perm="755" replicated="0" size="23397" turl="alien:///alice/sim/2007/LHC07c/pp_minbias/8268/009/Run8268.Event0_100.ESD.tag.root" type="f" />
-    </event>
-    <info command="[/alice/cern.ch/user/p/pchrist/]: find -z -x tag -l 10 /alice/sim/2007/LHC07c/pp_minbias/8268/* *tag.root" creator="admin" date="Mon Oct 22 12:18:19 CEST 2007" timestamp="1193048299" />
-  </collection>
-</alien>
diff --git a/PWG2/AnalysisMacros/Kine/AliAnalysisTaskPtMC.cxx b/PWG2/AnalysisMacros/Kine/AliAnalysisTaskPtMC.cxx
deleted file mode 100644 (file)
index d9bbef6..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-#include "TChain.h"
-#include "TTree.h"
-#include "TH1F.h"
-#include "TCanvas.h"
-
-#include "AliAnalysisTask.h"
-#include "AliAnalysisManager.h"
-
-#include "AliESDEvent.h"
-#include "AliESDInputHandler.h"
-
-#include "AliMCEventHandler.h"
-#include "AliMCEvent.h"
-
-#include "AliAnalysisTaskPtMC.h"
-
-// example of an analysis task creating a p_t spectrum
-// Authors: Panos Cristakoglou, Jan Fiete Grosse-Oetringhaus, Christian Klein-Boesing
-
-ClassImp(AliAnalysisTaskPtMC)
-
-//________________________________________________________________________
-AliAnalysisTaskPtMC::AliAnalysisTaskPtMC(const char *name) 
-  : AliAnalysisTask(name, ""), fESD(0), fHistPt(0)
-{
-  // Constructor
-
-  // Define input and output slots here
-  // Input slot #0 works with a TChain
-  DefineInput(0, TChain::Class());
-  // Output slot #0 writes into a TH1 container
-  DefineOutput(0, TH1F::Class());
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskPtMC::ConnectInputData(Option_t *) 
-{
-  // Connect ESD or AOD here
-  // Called once
-
-  TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
-  if (!tree) {
-    Printf("ERROR: Could not read chain from input slot 0");
-  } else {
-    // Disable all branches, we want to process only MC
-    tree->SetBranchStatus("*", kFALSE);
-
-    AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
-
-    if (!esdH) {
-      Printf("ERROR: Could not get ESDInputHandler");
-    } else
-      fESD = esdH->GetEvent();
-  }
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskPtMC::CreateOutputObjects() 
-{
-  // Create histograms
-  // Called once
-
-  fHistPt = new TH1F("fHistPt", "P_{T} distribution", 15, 0.1, 3.1);
-  fHistPt->GetXaxis()->SetTitle("P_{T} (GeV/c)");
-  fHistPt->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");
-  fHistPt->SetMarkerStyle(kFullCircle);
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskPtMC::Exec(Option_t *) 
-{
-  // Main loop
-  // Called for each event
-
-  // Process MC truth, therefore we receive the AliAnalysisManager and ask it for the AliMCEventHandler
-  // This handler can return the current MC event
-
-  AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
-  if (!eventHandler) {
-    Printf("ERROR: Could not retrieve MC event handler");
-    return;
-  }
-
-  AliMCEvent* mcEvent = eventHandler->MCEvent();
-  if (!mcEvent) {
-     Printf("ERROR: Could not retrieve MC event");
-     return;
-  }
-
-  Printf("MC particles: %d", mcEvent->GetNumberOfTracks());
-
-  for (Int_t iTracks = 0; iTracks < mcEvent->GetNumberOfTracks(); iTracks++) {
-    AliMCParticle* track = mcEvent->GetTrack(iTracks);
-    if (!track) {
-      Printf("ERROR: Could not receive track %d (mc loop)", iTracks);
-      continue;
-    }
-      
-    fHistPt->Fill(track->Pt());
-  } //track loop 
-
-  // Post output data.
-  PostData(0, fHistPt);
-}      
-
-//________________________________________________________________________
-void AliAnalysisTaskPtMC::Terminate(Option_t *) 
-{
-  // Draw result to the screen
-  // Called once at the end of the query
-
-  fHistPt = dynamic_cast<TH1F*> (GetOutputData(0));
-  if (!fHistPt) {
-    Printf("ERROR: fHistPt not available");
-    return;
-  }
-   
-  TCanvas *c1 = new TCanvas("AliAnalysisTaskPtMC","Pt MC",10,10,510,510);
-  c1->cd(1)->SetLogy();
-  fHistPt->DrawCopy("E");
-}
diff --git a/PWG2/AnalysisMacros/Kine/AliAnalysisTaskPtMC.h b/PWG2/AnalysisMacros/Kine/AliAnalysisTaskPtMC.h
deleted file mode 100644 (file)
index d0c35eb..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef AliAnalysisTaskPtMC_cxx
-#define AliAnalysisTaskPtMC_cxx
-
-// example of an analysis task creating a p_t spectrum
-// Authors: Panos Cristakoglou, Jan Fiete Grosse-Oetringhaus, Christian Klein-Boesing
-
-class TH1F;
-class AliESDEvent;
-
-#include "AliAnalysisTask.h"
-
-class AliAnalysisTaskPtMC : public AliAnalysisTask {
- public:
-  AliAnalysisTaskPtMC(const char *name = "AliAnalysisTaskPtMC");
-  virtual ~AliAnalysisTaskPtMC() {}
-  
-  virtual void   ConnectInputData(Option_t *);
-  virtual void   CreateOutputObjects();
-  virtual void   Exec(Option_t *option);
-  virtual void   Terminate(Option_t *);
-  
- private:
-  AliESDEvent *fESD;    //ESD object
-  TH1F        *fHistPt; //Pt spectrum
-   
-  AliAnalysisTaskPtMC(const AliAnalysisTaskPtMC&); // not implemented
-  AliAnalysisTaskPtMC& operator=(const AliAnalysisTaskPtMC&); // not implemented
-
-  ClassDef(AliAnalysisTaskPtMC, 1); // example of analysis
-};
-
-#endif
diff --git a/PWG2/AnalysisMacros/Kine/runKine.C b/PWG2/AnalysisMacros/Kine/runKine.C
deleted file mode 100644 (file)
index af9c69a..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-void runKine() {
-  TStopwatch timer;
-  timer.Start();
-  gSystem->Load("libTree.so");
-  //____________________________________________________//
-  //_____________Setting up STEERBase.par_______________//
-  //____________________________________________________//
-  setupPar("STEERBase");
-  gSystem->Load("libSTEERBase.so");
-
-  //____________________________________________________//
-  //_____________Setting up ESD.par_____________________//
-  //____________________________________________________//
-  setupPar("ESD");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libESD.so");
-                                                                                 //____________________________________________________//
-  //_____________Setting up AOD.par_____________________//
-  //____________________________________________________//
-  setupPar("AOD");
-  gSystem->Load("libAOD.so");
-                                                                
-  //_____________________________________________________________//
-  //_____________Setting up ANALYSIS_NEW.par_____________________//
-  //_____________________________________________________________//
-  setupPar("ANALYSIS");
-  gSystem->Load("libANALYSIS.so");
-                                                                                                                                               
-  gROOT->LoadMacro("AliAnalysisTaskPtMC.cxx+");
-
-  //____________________________________________//
-  AliTagAnalysis *TagAna = new AliTagAnalysis("ESD"); 
-  TagAna->ChainLocalTags("../Tags");
-
-  AliRunTagCuts *runCuts = new AliRunTagCuts();
-  AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
-  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
-  AliEventTagCuts *evCuts = new AliEventTagCuts();
-  evCuts->SetMultiplicityRange(11,12);  
-  
-  TChain* chain = 0x0;
-  chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
-  chain->SetBranchStatus("*Calo*",0);
-
-  //____________________________________________//
-  // Make the analysis manager
-  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
-  AliVEventHandler* esdH = new AliESDInputHandler;
-  mgr->SetInputEventHandler(esdH);  
-  AliMCEventHandler *mc = new AliMCEventHandler();
-  mgr->SetMCtruthEventHandler(mc);
-  //____________________________________________//
-  // 1st Pt task
-  AliAnalysisTaskPtMC *task1 = new AliAnalysisTaskPtMC("TaskPtMC");
-  mgr->AddTask(task1);
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist1", TH1::Class(),AliAnalysisManager::kOutputContainer,"Pt.MC.root");
-  
-  //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
-  if (!mgr->InitAnalysis()) return;
-  mgr->PrintStatus();
-  mgr->StartAnalysis("local",chain);
-
-  timer.Stop();
-  timer.Print();
-}
-
-Int_t setupPar(const char* pararchivename) {
-  ///////////////////
-  // Setup PAR File//
-  ///////////////////
-  if (pararchivename) {
-    char processline[1024];
-    sprintf(processline,".! tar xvzf %s.par",pararchivename);
-    gROOT->ProcessLine(processline);
-    const char* 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");
-      printf("*******************************\n");
-                                                                                                                                               
-      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
-        Error("runAnalysis","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");
-      printf("*******************************\n");
-      gROOT->Macro("PROOF-INF/SETUP.C");
-    }
-                                                                                                                                               
-    gSystem->ChangeDirectory("../");
-  }                                                                                                                                               
-  return 1;
-}
diff --git a/PWG2/AnalysisMacros/Local/Tags/CreateTags.C b/PWG2/AnalysisMacros/Local/Tags/CreateTags.C
deleted file mode 100644 (file)
index 253c874..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//_________________________________________________________________________
-// Macro to create the tag files from:
-// i)  AliESDs that are stored locally.
-// ii) AliESDs that are stored in the CAF.
-// iii)AliESDs that are stored in alien.
-// The tag files are stored according to the value set in the SetStorage method
-// Use Case : 
-//          SetStorage(0) --> store the tags locally
-//          SetStorage(1) --> store the tags in the grid
-//          else the program will abort!!!                                    
-//                                             
-// As a final step the user can create a single merged tag file.         
-//_________________________________________________________________________
-void CreateTags() {
-  //___________________________________//
-  //create an AliTagCreator object
-  AliESDTagCreator *t = new AliESDTagCreator(); 
-    
-  //___________________________________//
-  //_____ Storage of the tag files:____//
-  //________0-->local, 1-->alien_______//
-  //___________________________________//
-  t->SetStorage(0);
-  //Define the grid's path where the tag files will be stored
-  //t->SetGridPath("Tags/output");
-  //Define the SE where the tag files will be stored
-  //t->SetSE("ALICE::CERN::se01");
-
-  //___________________________________//
-  //________Locally stored ESDs________//
-  //___________________________________//
-  //create the tag files for the locally stored ESDs
-  t->ReadLocalCollection("../PDC07");
-
-  //___________________________________//
-  //___________Merge the tags__________//
-  //___________________________________//
-  //Merge the tags and store the merged file
-  t->MergeTags("ESD");
-}
-
diff --git a/PWG2/AnalysisMacros/Local/Tags/runTagCreator.C b/PWG2/AnalysisMacros/Local/Tags/runTagCreator.C
deleted file mode 100644 (file)
index 913d3e9..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-void runTagCreator() {
-  TStopwatch timer;
-  timer.Start();
-  gSystem->Load("libTree.so");
-  //____________________________________________________//
-  //_____________Setting up par files___________________//
-  //____________________________________________________//
-  setupPar("STEERBase");
-  gSystem->Load("libSTEERBase.so");
-  setupPar("ESD");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libESD.so");
-                                                                                                                                               
-  gROOT->LoadMacro("CreateTags.C");
-  CreateTags();
-
-  timer.Stop();
-  timer.Print();
-}
-
-Int_t setupPar(const char* pararchivename) {
-  ///////////////////
-  // Setup PAR File//
-  ///////////////////
-  if (pararchivename) {
-    char processline[1024];
-    sprintf(processline,".! tar xvzf %s.par",pararchivename);
-    gROOT->ProcessLine(processline);
-    const char* 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");
-      printf("*******************************\n");
-                                                                                                                                               
-      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
-        Error("runAnalysis","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");
-      printf("*******************************\n");
-      gROOT->Macro("PROOF-INF/SETUP.C");
-    }
-                                                                                                                                               
-    gSystem->ChangeDirectory("../");
-  }                                                                                                                                               
-  return 1;
-}
diff --git a/PWG2/AnalysisMacros/Local/runLocal.C b/PWG2/AnalysisMacros/Local/runLocal.C
deleted file mode 100644 (file)
index bcc3d1c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-void runLocal() {
-  TStopwatch timer;
-  timer.Start();
-  gSystem->Load("libTree.so");
-  //____________________________________________________//
-  //_____________Setting up STEERBase.par_______________//
-  //____________________________________________________//
-  setupPar("STEERBase");
-  gSystem->Load("libSTEERBase.so");
-
-  //____________________________________________________//
-  //_____________Setting up ESD.par_____________________//
-  //____________________________________________________//
-  setupPar("ESD");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libESD.so");
-                                                                                 //____________________________________________________//
-  //_____________Setting up AOD.par_____________________//
-  //____________________________________________________//
-  setupPar("AOD");
-  gSystem->Load("libAOD.so");
-                                                                
-  //_____________________________________________________________//
-  //_____________Setting up ANALYSIS_NEW.par_____________________//
-  //_____________________________________________________________//
-  setupPar("ANALYSIS");
-  gSystem->Load("libANALYSIS.so");
-                                                                                                                                               
-  gROOT->LoadMacro("AliAnalysisTaskPt.cxx+");
-
-  //____________________________________________//
-  AliTagAnalysis *TagAna = new AliTagAnalysis("ESD"); 
-  TagAna->ChainLocalTags("../Tags");
-
-  AliRunTagCuts *runCuts = new AliRunTagCuts();
-  AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
-  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
-  AliEventTagCuts *evCuts = new AliEventTagCuts();
-  evCuts->SetMultiplicityRange(11,12);  
-  
-  TChain* chain = 0x0;
-  chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
-  chain->SetBranchStatus("*Calo*",0);
-
-  //____________________________________________//
-  // Make the analysis manager
-  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
-  AliVEventHandler* esdH = new AliESDInputHandler;
-  mgr->SetInputEventHandler(esdH);  
-  //____________________________________________//
-  // 1st Pt task
-  AliAnalysisTaskPt *task1 = new AliAnalysisTaskPt("TaskPt");
-  mgr->AddTask(task1);
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist1", TH1::Class(),AliAnalysisManager::kOutputContainer,"Pt.ESD.root");
-  
-  //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
-  if (!mgr->InitAnalysis()) return;
-  mgr->PrintStatus();
-  mgr->StartAnalysis("local",chain);
-
-  timer.Stop();
-  timer.Print();
-}
-
-Int_t setupPar(const char* pararchivename) {
-  ///////////////////
-  // Setup PAR File//
-  ///////////////////
-  if (pararchivename) {
-    char processline[1024];
-    sprintf(processline,".! tar xvzf %s.par",pararchivename);
-    gROOT->ProcessLine(processline);
-    const char* 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");
-      printf("*******************************\n");
-                                                                                                                                               
-      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
-        Error("runAnalysis","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");
-      printf("*******************************\n");
-      gROOT->Macro("PROOF-INF/SETUP.C");
-    }
-                                                                                                                                               
-    gSystem->ChangeDirectory("../");
-  }                                                                                                                                               
-  return 1;
-}
diff --git a/PWG2/AnalysisMacros/Proof/runProof.C b/PWG2/AnalysisMacros/Proof/runProof.C
deleted file mode 100644 (file)
index dcde338..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-void runProof() {
-  TStopwatch timer;
-  timer.Start();
-  
-  runProofESD("AliAnalysisTaskPt.cxx++");
-
-  timer.Stop();
-  timer.Print();
-}
-
-//==========================================//
-void runProofESD(const char *file) {
-  //the next line should point to the local $ALICE_ROOT
-  //that contains the latest ANALYSIS developments
-  printf("****** Connect to PROOF *******\n");
-  TProof::Open("proof://lxb6046.cern.ch"); 
-  gProof->SetParallel(1);
-
-  // Enable the Analysis Package
-  gProof->UploadPackage("STEERBase.par");
-  gProof->EnablePackage("STEERBase");
-  gProof->UploadPackage("ESD.par");
-  gProof->EnablePackage("ESD");
-  gProof->UploadPackage("AOD.par");
-  gProof->EnablePackage("AOD");
-  gProof->UploadPackage("ANALYSIS.par");
-  gProof->EnablePackage("ANALYSIS");
-  
-  // You should get this macro and the txt file from:
-  // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
-  gROOT->LoadMacro("CreateESDChain.C");
-  TChain* chain = 0x0;
-  chain = CreateESDChain("ESD82XX_30K.txt",10);
-  chain->SetBranchStatus("*Calo*",0);
-
-  gProof->Load(file);
-  //____________________________________________//
-  // Make the analysis manager
-  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
-  AliVEventHandler* esdH = new AliESDInputHandler;
-  mgr->SetInputEventHandler(esdH);  
-  //____________________________________________//
-  // 1st Pt task
-  AliAnalysisTaskPt *task1 = new AliAnalysisTaskPt("TaskPt");
-  mgr->AddTask(task1);
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist1", TH1::Class(),AliAnalysisManager::kOutputContainer,"Pt.ESD.root");
-  //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
-  if (!mgr->InitAnalysis()) return;
-  mgr->PrintStatus();
-  mgr->SetDebugLevel(2);
-  mgr->StartAnalysis("proof",chain);
-}
diff --git a/PWG2/AnalysisMacros/README b/PWG2/AnalysisMacros/README
deleted file mode 100644 (file)
index 83e0e77..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-===========================================================
-===========================================================
-===========================================================
-The AnalysisMacros is divided into six sub-directories:
-
-o) Local
-   Inside this directory you can find the files you need to run the following processes:
-    i)  (Sub-dir Tags)Creation tag files for the locally stored ESDs - The two files are stored under the Tags directory. Run it by typing "root runTagCreator.C". One should pay attention that the CreateTags.C macro needs to be modified in the line where you call the ReadLocalCollection function of the tag creator object.
-    ii) Analysis of the locally stored ESDs using the previously created tag files - Run the example by typing "root runLocal.C"
-
-o) Interactive
-   You can find the runInteractive.C file that uses the root api to access the grid as well as a collection of tag files to be querried (tag.xml). You should also use the AliAnalysisTaskPt.* from the Local directory. Run the example by typing "alienroot runInteractive.C" (you can find the alienroot executable in this directory - open it and change it accordingly - place it in a directory which is defined in your $PATH).
-
-o) Batch
-   You can find the executable (that you should store under your $HOME/bin  AliEn directory), the jdl file (you must change it accordingly), as well as the macro runBatch.C. You should also use the AliAnalysisTaskPt.* from the Local directory and the global.xml file (information on how to create this file can be found in the tutorial slides - CreateXML function). Everybody who wants to use these files should change them accordingly!!!
-
-o) Proof
-   You can find the runProof.C macro to be used for CAF. The CreateESDChain.C & the txt file containing the ESDs' location in the cluster can be found in the CAF web page.
-
-o) Kine
-   You can find the runKine.C along with the AliAnalysisTaskPtMC class. Use the example to access the MC information. You have to run it with root. If you follow the instructions indicated in the Local - Interactive - Batch - Proof directories you will be able to access the MC information on all kinds of sessions.
-
-===========================================================
-For any questions send mails to: Panos.Christakoglou@cern.ch
-===========================================================
diff --git a/PWG2/AnalysisMacros/setenv.sh b/PWG2/AnalysisMacros/setenv.sh
deleted file mode 100644 (file)
index 19c3171..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-export ALICE_OLD=/afs/cern.ch/alice/library
-#AliEn
-export ALIEN=$ALICE_OLD/alien/pro
-export GSHELL_ROOT=$ALIEN/api
-export X509_CERT_DIR=$ALIEN/globus/share/certificates
-
-#ROOT
-source /afs/cern.ch/user/a/alisoft/.alien/packages/pchrist/ROOT/v5.15.04/.alienEnvironment /afs/cern.ch/user/a/alisoft/.alien/packages/pchrist/ROOT/v5.15.04
-
-#AliRoot
-source /afs/cern.ch/user/a/alisoft/.alien/packages/pchrist/AliRoot/v4-04-Release-a/.alienEnvironment  /afs/cern.ch/user/a/alisoft/.alien/packages/pchrist/AliRoot/v4-04-Release-a
-
-export PATH=$PATH:$ALIEN/api/bin:$ALIEN/globus/bin
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ALIEN/api/lib:$ALIEN/globus/lib
diff --git a/PWG2/CreateChain.C b/PWG2/CreateChain.C
deleted file mode 100644 (file)
index fc3ef72..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//_________________________________________________________________________
-// Macro to create an esd chain and process it with a selector.
-// The macro takes as an argument the top directory where the 
-// ESDs are stored. Then does the following:
-// o) Setup of the par file and load the library libESD.so.
-// o) Checks the directories that are one level down
-// o) If an AliESDs.root is found it adds it to the esd chain.
-// o) Then th chain is processed by the selector esdV0.C
-//_________________________________________________________________________
-void CreateChain(const char* fDataDir = "/home/pchrist/ALICE/PDC06/pp/data") {
-  TStopwatch timer;
-  timer.Start();
-  
-  Char_t fWorkDir[256] = gSystem->pwd();
-  const char* pararchivename = "ESD";
-  //////////////////////////////////////////
-  // Libraries required to load
-  //////////////////////////////////////////
-
-  //////////////////////////////////////////////////////////////////
-  // Setup PAR File
-  if (pararchivename) {
-    char processline[1024];
-    sprintf(processline,".! tar xvzf %s.par",pararchivename);
-    gROOT->ProcessLine(processline);
-    gSystem->ChangeDirectory(pararchivename);
-
-    // check for BUILD.sh and execute
-    if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
-      printf("*******************************\n");
-      printf("*** Building PAR archive    ***\n");
-      printf("*******************************\n");
-
-      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
-        Error("batchSelector","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");
-      printf("*******************************\n");
-      gROOT->Macro("PROOF-INF/SETUP.C");
-    }
-    
-    gSystem->ChangeDirectory("../");
-  }
-
-  // Create a Chain
-  TChain* fESDChain = new TChain("esdTree");
-  void *dirp =  gSystem->OpenDirectory(fDataDir);
-
-  Char_t fPath[256];
-  const char * name = 0x0;
-  const char * dirname = 0x0;
-  const char * pattern = "AliESDs"; 
-
-  while(dirname = gSystem->GetDirEntry(dirp)) {
-    sprintf(fPath,"%s/%s",fDataDir,dirname);
-    TSystemDirectory* fSystemDir = new TSystemDirectory(".", fPath);
-    TList* dirList = fSystemDir->GetListOfFiles();
-    //loop over the dir entries - files
-    for(Int_t i = 0; i < dirList->GetEntries(); i++) {
-      TSystemFile* fFile = (TSystemFile*) dirList->At(i);
-      if(strstr(fFile->GetName(),pattern)) {
-       Char_t fESDFileName[256];
-       sprintf(fESDFileName,"%s/%s.root",fPath,pattern);
-       fESDChain->Add(fESDFileName);
-      }
-    }//loop over files
-    delete dirList;
-    delete fSystemDir;
-  }//loop over dirs
-  
-  gSystem->ChangeDirectory(fWorkDir);
-  fESDChain->Process("esdV0.C"); 
-
-  timer.Stop();
-  timer.Print();
-}
diff --git a/PWG2/Makefile b/PWG2/Makefile
deleted file mode 100644 (file)
index f57b7c8..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-# $Id$
-
-include $(ROOTSYS)/test/Makefile.arch
-
-PACKAGE = PWG2resonances
-
-default-target: lib$(PACKAGE).so 
-
-ALICEINC      = -I. -I$(ALICE_ROOT)/TOF -I$(ALICE_ROOT)/ANALYSIS/EventMixing
-
-### define include dir for local case and par case
-ifneq ($(ESD_INCLUDE),)
-   ALICEINC += -I../$(ESD_INCLUDE)
-   ALICEINC += -I../$(AOD_INCLUDE)
-   ALICEINC += -I../$(STEERBase_INCLUDE)
-   ALICEINC += -I../$(ANALYSIS_INCLUDE)
-   ALICEINC += -I../$(ANALYSISalice_INCLUDE)
- else
-    ifneq ($(ALICE_ROOT),)
-       ALICEINC += -I$(ALICE_ROOT)/include -I$(ALICE_ROOT)/PWG2
-     endif
-endif
-
-ifneq ($(CORRFW_INCLUDE),)
-  ALICEINC += -I../$(CORRFW_INCLUDE)
-endif
-
-ifneq ($(PWG2AOD_INCLUDE),)
-  ALICEINC += -I../$(PWG2AOD_INCLUDE)
-endif
-
-ifneq ($(PWG2femtoscopy_INCLUDE),)
-  ALICEINC += -I../$(PWG2femtoscopy_INCLUDE)
- else
-    ifneq ($(ALICE_ROOT),)
-       ALICEINC += -I$(ALICE_ROOT)/PWG2/AOD
-     endif
-endif
-
-ifneq ($(PWG2femtoscopyUser_INCLUDE),)
-  ALICEINC += -I../$(PWG2femtoscopyUser_INCLUDE)
- else
-    ifneq ($(ALICE_ROOT),)
-       ALICEINC += -I$(ALICE_ROOT)/PWG2/AOD -I$(ALICE_ROOT)/PWG2/FEMTOSCOPY/AliFemto
-     endif
-endif
-
-ifneq ($(PWG2resonances_INCLUDE),)
-  ALICEINC += -I../$(PWG2resonances_INCLUDE)
- else
-    ifneq ($(ALICE_ROOT),)
-       ALICEINC += -I$(ALICE_ROOT)/PWG2/RESONANCES
-     endif
-endif
-
-ifneq ($(PWG2unicor_INCLUDE),)
-  ALICEINC += -I../$(PWG2unicor_INCLUDE)
-endif
-
-ifneq ($(PWG2evchar_INCLUDE),)
-  ALICEINC += -I../$(PWG2evchar_INCLUDE)
-endif
-
-ifneq ($(PWG2kink_INCLUDE),)
-  ALICEINC += -I../$(PWG2kink_INCLUDE)
-endif
-
-ifneq ($(PWG2forward_INCLUDE),)
-  ALICEINC += -I../$(PWG2forward_INCLUDE)
- else
-    ifneq ($(ALICE_ROOT),)
-       ALICEINC += -I$(ALICE_ROOT)/FMD
-     endif
-endif
-
-ifneq ($(OADB_INCLUDE), )
-  ALICEINC += -I../$(OADB_INCLUDE)
-else
-  ifneq ($(ALICE_ROOT),)
-    ALICEINC += -I$(ALICE_ROOT)/OADB
-  endif
-endif
-
-# only if no par file was loaded before
-ifeq ($(ALICEINC),-I.)
-  ifneq ($(ALICE_ROOT),)
-    ALICEINC += -I$(ALICE_ROOT)/include
-  endif
-endif
-
-# for building of PWG0dep.par
-#ifneq ($(PWG0base_INCLUDE),)
-#  ALICEINC += -I../$(PWG0base_INCLUDE)
-#endif
-
-#ALICEINC += -IFEMTOSCOPY/AliFemto -IANALYSIS -IFEMTOSCOPY/AliFemtoUser
-
-# include lib$(PACKAGE).pkg
-
-ifneq ($(EINCLUDE),)
-  ALICEINC += $(EINCLUDE:%=-I$(ALICE_ROOT)/%)
-endif
-
-CXXFLAGS     += $(ALICEINC) -g
-F77FLAGS     += $(ALICEINC) -g -fPIC
-
-DHDR =
-HDRS =
-SRCS =
-FSRCS =
-
-DHDR_PWG2 := $(DHDR)
-HDRS_PWG2 := $(HDRS)
-SRCS_PWG2 := $(SRCS) G__$(PACKAGE).cxx
-FSCRS_PWG2 := $(FSRCS)
-OBJS_PWG2 := $(SRCS_PWG2:.cxx=.o) $(FSRCS:.F=.o)
-
-PARFILE       = $(PACKAGE).par
-
-lib$(PACKAGE).so: $(OBJS_PWG2)
-       @echo "Linking" $@ ...
-       @/bin/rm -f $@
-ifeq ($(PLATFORM),macosx)
-# We need to make both the .dylib and the .so
-               $(LD) $(SOFLAGS)$@ $(LDFLAGS) $^ $(OutPutOpt) $@
-ifneq ($(subst $(MACOSX_MINOR),,1234),1234)
-ifeq ($(MACOSX_MINOR),4)
-               ln -sf $@ $(subst .$(DllSuf),.so,$@)
-else
-               $(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ \
-                  $(OutPutOpt) $(subst .$(DllSuf),.so,$@)
-endif
-endif
-else
-ifeq ($(PLATFORM),win32)
-               bindexplib $* $^ > $*.def
-               lib -nologo -MACHINE:IX86 $^ -def:$*.def \
-                  $(OutPutOpt)$(EVENTLIB)
-               $(LD) $(SOFLAGS) $(LDFLAGS) $^ $*.exp $(LIBS) \
-                  $(OutPutOpt)$@
-else
-               $(LD) $(SOFLAGS) $(LDFLAGS) $^ $(OutPutOpt) $@ $(EXPLLINKLIBS)
-endif
-endif
-       @chmod a+x $@
-       @echo "done"
-
-%.o:    %.cxx %.h
-       $(CXX) $(CXXFLAGS) -c $< -o $@
-
-%.o:    %.F
-       $(F77) $(F77FLAGS) -c $< -o $@
-
-G__$(PACKAGE).h:G__$(PACKAGE).cxx
-       @if test -f $@ ; then : ; else rm -f $< ; $(MAKE) $@ ; fi
-
-G__$(PACKAGE).cxx: $(HDRS_PWG2) $(DHDR_PWG2)
-       @echo "Generating dictionary ..."
-       rootcint -f $@ -c $(CINTFLAGS) $(ALICEINC) $^
-
-clean:
-       @rm -f $(OBJS_PWG2) *.so G__$(PACKAGE).* $(PARFILE)
-
-### CREATE PAR FILE
-
-$(PARFILE): $(patsubst %,$(PACKAGE)/%,$(filter-out G__%, $(HDRS_PWG2) $(SRCS_PWG2) $(DHDR_PWG2) Makefile Makefile.arch lib$(PACKAGE).pkg PROOF-INF))
-       @echo "Creating archive" $@ ...
-       @tar cfzh $@ $(PACKAGE)
-       @rm -rf $(PACKAGE)
-       @echo "done"
-
-$(PACKAGE)/Makefile: Makefile #.$(PACKAGE)
-       @echo Copying $< to $@ with transformations
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       @sed 's/include \$$(ROOTSYS)\/test\/Makefile.arch/include Makefile.arch/' < $^ > $@
-
-$(PACKAGE)/Makefile.arch: $(ROOTSYS)/test/Makefile.arch
-       @echo Copying $< to $@
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       @cp -a $^ $@
-
-$(PACKAGE)/PROOF-INF: PROOF-INF.$(PACKAGE)
-       @echo Copying $< to $@
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       @cp -a -r $^ $@
-
-$(PACKAGE)/%: %
-       @echo Copying $< to $@
-       @[ -d $(dir $@) ] || mkdir -p $(dir $@)
-       @cp -a $< $@
-
-test-%.par: %.par
-       @echo "INFO: The file $< is now tested, in case of an error check in par-tmp."
-       @mkdir -p par-tmp
-       @cd par-tmp; tar xfz ../$<;     cd $(subst .par,,$<); PROOF-INF/BUILD.sh
-       @rm -rf par-tmp
-       @echo "INFO: Testing succeeded (already cleaned up)"
diff --git a/PWG2/PROOF-INF.PWG2AOD/BUILD.sh b/PWG2/PROOF-INF.PWG2AOD/BUILD.sh
deleted file mode 100755 (executable)
index 7b58c15..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/sh
-
-make libPWG2AOD.so
diff --git a/PWG2/PROOF-INF.PWG2AOD/SETUP.C b/PWG2/PROOF-INF.PWG2AOD/SETUP.C
deleted file mode 100644 (file)
index db0820b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-void SETUP() {
-  // Load some ROOT libraries
-  CheckLoadLibrary("libEG");
-  CheckLoadLibrary("libGeom");
-  
-  // Load the ESD library
-  CheckLoadLibrary("libESD");
-
-  // Load the ESD library
-  CheckLoadLibrary("libAOD");
-
-  // Load the ESD library
-  CheckLoadLibrary("libANALYSIS");
-
-  // Load the PWG2 library
-  CheckLoadLibrary("libPWG2AOD");
-
-  // Set the include paths
-  gROOT->ProcessLine(".include PWG2AOD/AOD");
-
-  // Set our location, so that other packages can find us
-  gSystem->Setenv("PWG2AOD_INCLUDE", "PWG2AOD/AOD");
-}
-
-Int_t CheckLoadLibrary(const char* library) {
-  // checks if a library is already loaded, if not loads the library
-  
-  if (strlen(gSystem->GetLibraries(Form("%s.so", library), "", kFALSE)) > 0)
-    return 1;
-  
-  return gSystem->Load(library);
-}
diff --git a/PWG2/PROOF-INF.PWG2kink/BUILD.sh b/PWG2/PROOF-INF.PWG2kink/BUILD.sh
deleted file mode 100755 (executable)
index b14c0ce..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/sh
-
-make libPWG2kink.so
diff --git a/PWG2/PROOF-INF.PWG2kink/SETUP.C b/PWG2/PROOF-INF.PWG2kink/SETUP.C
deleted file mode 100644 (file)
index e356707..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-void SETUP() {
-  CheckLoadLibrary("libPWG2kink");
-
-  // Set the include paths
-  gROOT->ProcessLine(".include PWG2/KINK");
-
-  // Set our location, so that other packages can find us
-  gSystem->Setenv("PWG2kink_INCLUDE", "PWG2/KINK");
-}
-
-Int_t CheckLoadLibrary(const char* library) {
-  // checks if a library is already loaded, if not loads the library
-
-  if (strlen(gSystem->GetLibraries(Form("%s.so", library), "", kFALSE)) > 0)
-    return 1;
-  
-  return gSystem->Load(library);
-}
diff --git a/PWG2/PWG2LinkDef.h b/PWG2/PWG2LinkDef.h
deleted file mode 100644 (file)
index d67e595..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-
-#endif
-
-
diff --git a/PWG2/SPECTRA/AliAnalysisTaskCheckV0.cxx b/PWG2/SPECTRA/AliAnalysisTaskCheckV0.cxx
deleted file mode 100644 (file)
index bf0f727..0000000
+++ /dev/null
@@ -1,679 +0,0 @@
-/**************************************************************************
- * Author: Boris Hippolyte.                                               *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-//-----------------------------------------------------------------
-//                 AliAnalysisTaskCheckV0 class
-//            This task is for QAing the V0s from ESD/AOD
-//              Origin: B.H. Nov2007, hippolyt@in2p3.fr
-//-----------------------------------------------------------------
-#include "TList.h"
-#include "TH1F.h"
-#include "TH2F.h"
-
-#include "TStyle.h"
-#include "TCanvas.h"
-#include "TLegend.h"
-
-#include "AliAnalysisTaskSE.h"
-#include "AliAnalysisManager.h"
-#include "AliInputEventHandler.h"
-
-#include "AliESDEvent.h"
-#include "AliESDVertex.h"
-#include "AliAODEvent.h"
-
-#include "AliESDv0.h"
-
-#include "AliAnalysisTaskCheckV0.h"
-
-ClassImp(AliAnalysisTaskCheckV0)
-
-//________________________________________________________________________
-AliAnalysisTaskCheckV0::AliAnalysisTaskCheckV0() 
-  : AliAnalysisTaskSE(), fAnalysisType("ESD"), fCollidingSystems(0), fUsePhysicsSelection(0),
-    fMaxPrimaryVtxPosZ(100.), fMinV0Pt(0.), fMaxV0Pt(100.), fMaxV0Rapidity(1.), fMinDaughterTpcClusters(80),
-    fListHist(), 
-    fHistPrimaryVertexPosX(0), fHistPrimaryVertexPosY(0), fHistPrimaryVertexPosZ(0),
-    fHistKeptPrimaryVertexPosX(0), fHistKeptPrimaryVertexPosY(0), fHistKeptPrimaryVertexPosZ(0),
-    fHistTrackMultiplicity(0), fHistV0Multiplicity(0), fHistV0OnFlyStatus(0),
-    fHistV0MultiplicityOff(0),
-    fHistV0Chi2Off(0),
-    fHistDcaV0DaughtersOff(0), fHistV0CosineOfPointingAngleOff(0),
-    fHistV0RadiusOff(0),fHistDcaV0ToPrimVertexOff(0),
-    fHistDcaPosToPrimVertexOff(0),fHistDcaNegToPrimVertexOff(0),
-    fHistMassK0sOff(0),fHistMassLambdaOff(0),fHistMassAntiLambdaOff(0),
-    fHistMassK0sOffVsPt(0),fHistMassLambdaOffVsPt(0),fHistMassAntiLambdaOffVsPt(0),
-    fHistArmenterosPodolanskiOff(0),
-    fHistV0MultiplicityOn(0),
-    fHistV0Chi2On(0),
-    fHistDcaV0DaughtersOn(0), fHistV0CosineOfPointingAngleOn(0),
-    fHistV0RadiusOn(0),fHistDcaV0ToPrimVertexOn(0),
-    fHistDcaPosToPrimVertexOn(0),fHistDcaNegToPrimVertexOn(0),
-    fHistMassK0sOn(0),fHistMassLambdaOn(0),fHistMassAntiLambdaOn(0),
-    fHistMassK0sOnVsPt(0),fHistMassLambdaOnVsPt(0),fHistMassAntiLambdaOnVsPt(0),
-    fHistArmenterosPodolanskiOn(0)
-{
-  // Dummy constructor
-}
-//________________________________________________________________________
-AliAnalysisTaskCheckV0::AliAnalysisTaskCheckV0(const char *name) 
-  : AliAnalysisTaskSE(name), fAnalysisType("ESD"), fCollidingSystems(0), fUsePhysicsSelection(0),
-    fMaxPrimaryVtxPosZ(100.), fMinV0Pt(0.), fMaxV0Pt(100.), fMaxV0Rapidity(1.), fMinDaughterTpcClusters(80),
-    fListHist(), 
-    fHistPrimaryVertexPosX(0), fHistPrimaryVertexPosY(0), fHistPrimaryVertexPosZ(0),
-    fHistKeptPrimaryVertexPosX(0), fHistKeptPrimaryVertexPosY(0), fHistKeptPrimaryVertexPosZ(0),
-    fHistTrackMultiplicity(0), fHistV0Multiplicity(0), fHistV0OnFlyStatus(0),
-    fHistV0MultiplicityOff(0),
-    fHistV0Chi2Off(0),
-    fHistDcaV0DaughtersOff(0), fHistV0CosineOfPointingAngleOff(0),
-    fHistV0RadiusOff(0),fHistDcaV0ToPrimVertexOff(0),
-    fHistDcaPosToPrimVertexOff(0),fHistDcaNegToPrimVertexOff(0),
-    fHistMassK0sOff(0),fHistMassLambdaOff(0),fHistMassAntiLambdaOff(0),
-    fHistMassK0sOffVsPt(0),fHistMassLambdaOffVsPt(0),fHistMassAntiLambdaOffVsPt(0),
-    fHistArmenterosPodolanskiOff(0),
-    fHistV0MultiplicityOn(0),
-    fHistV0Chi2On(0),
-    fHistDcaV0DaughtersOn(0), fHistV0CosineOfPointingAngleOn(0),
-    fHistV0RadiusOn(0),fHistDcaV0ToPrimVertexOn(0),
-    fHistDcaPosToPrimVertexOn(0),fHistDcaNegToPrimVertexOn(0),
-    fHistMassK0sOn(0),fHistMassLambdaOn(0),fHistMassAntiLambdaOn(0),
-    fHistMassK0sOnVsPt(0),fHistMassLambdaOnVsPt(0),fHistMassAntiLambdaOnVsPt(0),
-    fHistArmenterosPodolanskiOn(0)
-{
-  // Constructor
-  // Define output slots only here
-  // Output slot #1 writes into a TList container
-  DefineOutput(1, TList::Class());
-}
-//________________________________________________________________________
-AliAnalysisTaskCheckV0::~AliAnalysisTaskCheckV0(){
-  // Destructor
-  if (fListHist) { delete fListHist; fListHist = 0x0; }
-}
-//________________________________________________________________________
-void AliAnalysisTaskCheckV0::UserCreateOutputObjects()
-{
-  // Create histograms
-  // Called once
-
-  // Distinguish Track and V0 Multiplicity !
-
-  fListHist = new TList();
-  fListHist->SetOwner();
-  if (!fHistPrimaryVertexPosX) {
-    fHistPrimaryVertexPosX = new TH1F("fHistPrimaryVertexPosX", "Primary vertex position in x;Position in x (cm);Events;",100,-1,1);
-    fListHist->Add(fHistPrimaryVertexPosX);
-  }
-  if (!fHistPrimaryVertexPosY) {
-    fHistPrimaryVertexPosY = new TH1F("fHistPrimaryVertexPosY", "Primary vertex position in y;Position in y (cm);Events;",100,-1,1);
-    fListHist->Add(fHistPrimaryVertexPosY);
-  }
-  if (!fHistPrimaryVertexPosZ) {
-    fHistPrimaryVertexPosZ = new TH1F("fHistPrimaryVertexPosZ", "Primary vertex position in z;Position in z (cm);Events;",100,-1,1);
-    fListHist->Add(fHistPrimaryVertexPosZ);
-  }
-  if (!fHistKeptPrimaryVertexPosX) {
-    fHistKeptPrimaryVertexPosX = new TH1F("fHistKeptPrimaryVertexPosX", "Kept Primary vertex position in x;Position in x (cm);Events;",100,-1,1);
-    fListHist->Add(fHistKeptPrimaryVertexPosX);
-  }
-  if (!fHistKeptPrimaryVertexPosY) {
-    fHistKeptPrimaryVertexPosY = new TH1F("fHistKeptPrimaryVertexPosY", "Kept Primary vertex position in y;Position in y (cm);Events;",100,-1,1);
-    fListHist->Add(fHistKeptPrimaryVertexPosY);
-  }
-  if (!fHistKeptPrimaryVertexPosZ) {
-    fHistKeptPrimaryVertexPosZ = new TH1F("fHistKeptPrimaryVertexPosZ", "Kept Primary vertex position in z;Position in z (cm);Events;",100,-1,1);
-    fListHist->Add(fHistKeptPrimaryVertexPosZ);
-  }
-
-  if (!fHistTrackMultiplicity) {
-    if (fCollidingSystems)
-      fHistTrackMultiplicity = new TH1F("fHistTrackMultiplicity", "Multiplicity distribution;Number of tracks;Events", 200, 0, 40000);
-    else
-      fHistTrackMultiplicity = new TH1F("fHistTrackMultiplicity", "Multiplicity distribution;Number of tracks;Events", 250, 0, 250);
-    fListHist->Add(fHistTrackMultiplicity);
-  }
-  if (!fHistV0Multiplicity) {
-    if (fCollidingSystems)
-      fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of V0s;Events", 200, 0, 40000);
-    else
-      fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of V0s;Events", 50, 0, 50);
-    fListHist->Add(fHistV0Multiplicity);
-  }
-  if (!fHistV0OnFlyStatus) {
-    fHistV0OnFlyStatus = new TH1F("fHistV0OnFlyStatus", "V0 On fly status;status;Number of V0s", 3, 0, 3);
-    fListHist->Add(fHistV0OnFlyStatus);
-  }
-
-  // V0 offline distributions
-  if (!fHistV0MultiplicityOff) {
-    if (fCollidingSystems)
-      fHistV0MultiplicityOff = new TH1F("fHistV0MultiplicityOff", "Multiplicity distribution;Number of V0s;Events", 200, 0, 40000);
-    else
-      fHistV0MultiplicityOff = new TH1F("fHistV0MultiplicityOff", "Multiplicity distribution;Number of V0s;Events", 50, 0, 50); 
-    fListHist->Add(fHistV0MultiplicityOff);
-  }
-  if (!fHistV0Chi2Off) {
-    fHistV0Chi2Off = new TH1F("fHistV0Chi2Off", "V0 chi2;chi2;Number of V0s", 33, 0, 33);
-    fListHist->Add(fHistV0Chi2Off);
-  }
-  if (!fHistDcaV0DaughtersOff) {
-    fHistDcaV0DaughtersOff = new TH1F("fHistDcaV0DaughtersOff", "DCA between V0 daughters;DCA (cm);Number of V0s", 300, 0, 3);
-    fListHist->Add(fHistDcaV0DaughtersOff);
-  }
-  if (!fHistV0CosineOfPointingAngleOff) {
-    fHistV0CosineOfPointingAngleOff = new TH1F("fHistV0CosineOfPointingAngleOff", "V0 Cosine of Pointing Angle;Number of V0s", 200, 0, 1);
-    fListHist->Add(fHistV0CosineOfPointingAngleOff);
-  }
-  if (!fHistV0RadiusOff) {
-    fHistV0RadiusOff = new TH1F("fHistV0RadiusOff", "V0 decay radius;Radius (cm);Number of V0s", 33, 0, 33);
-    fListHist->Add(fHistV0RadiusOff);
-  }
-  if (!fHistDcaV0ToPrimVertexOff) {
-    fHistDcaV0ToPrimVertexOff = new TH1F("fHistDcaV0ToPrimVertexOff", "DCA of V0 to Prim. Vertex;DCA (cm);Number of V0s", 300, 0, 3);
-    fListHist->Add(fHistDcaV0ToPrimVertexOff);
-  }
-  if (!fHistDcaPosToPrimVertexOff) {
-    fHistDcaPosToPrimVertexOff = new TH1F("fHistDcaPosToPrimVertexOff", "DCA of V0 neg daughter to Prim. Vertex;DCA (cm);Number of V0s", 300, 0, 3);
-    fListHist->Add(fHistDcaPosToPrimVertexOff);
-  }
-  if (!fHistDcaNegToPrimVertexOff) {
-    fHistDcaNegToPrimVertexOff = new TH1F("fHistDcaNegToPrimVertexOff", "DCA of V0 pos daughter to Prim. Vertex;DCA (cm);Number of V0s", 300, 0, 3);
-    fListHist->Add(fHistDcaNegToPrimVertexOff);
-  }
-
-  if (!fHistMassK0sOff) {
-    fHistMassK0sOff = new TH1F("fHistMassK0sOff","K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts",100,0.4,0.6);
-    fListHist->Add(fHistMassK0sOff);
-  }
-  if (!fHistMassLambdaOff) {
-    fHistMassLambdaOff = new TH1F("fHistMassLambdaOff","#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts",75,1.05,1.2);
-    fListHist->Add(fHistMassLambdaOff);
-  }
-  if (!fHistMassAntiLambdaOff) {
-    fHistMassAntiLambdaOff = new TH1F("fHistMassAntiLambdaOff","#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts",75,1.05,1.2);
-    fListHist->Add(fHistMassAntiLambdaOff);
-  }
-  if (!fHistMassK0sOffVsPt) {
-    fHistMassK0sOffVsPt = new TH2F("fHistMassK0sOffVsPt","K^{0} candidates;p_{T} (GeV/c);M(#pi^{+}#pi^{-}) (GeV/c^{2})",200,0,10,100,0.4,0.6);
-    fListHist->Add(fHistMassK0sOffVsPt);
-  }
-  if (!fHistMassLambdaOffVsPt) {
-    fHistMassLambdaOffVsPt = new TH2F("fHistMassLambdaOffVsPt","#Lambda^{0} candidates;p_{T} (GeV/c);M(p#pi^{-}) (GeV/c^{2})",200,0,10,75,1.05,1.2);
-    fListHist->Add(fHistMassLambdaOffVsPt);
-  }
-  if (!fHistMassAntiLambdaOffVsPt) {
-    fHistMassAntiLambdaOffVsPt = new TH2F("fHistMassAntiLambdaOffVsPt","#bar{#Lambda}^{0} candidates;p_{T} (GeV/c);M(#bar{p}#pi^{+}) (GeV/c^{2})",200,0,10,75,1.05,1.2);
-    fListHist->Add(fHistMassAntiLambdaOffVsPt);
-  }
-  if (!fHistArmenterosPodolanskiOff) {
-    fHistArmenterosPodolanskiOff   = new TH2F("fHistArmenterosPodolanskiOff","Armenteros-Podolanski Offline phase space;#alpha;p_{t} arm",200,-1.0,1.0,150,0,0.3);
-    fListHist->Add(fHistArmenterosPodolanskiOff);
-  }
-
-  // V0 on-the-fly distributions
-  if (!fHistV0MultiplicityOn) {
-    if (fCollidingSystems)
-      fHistV0MultiplicityOn = new TH1F("fHistV0MultiplicityOn", "Multiplicity distribution;Number of V0s;Events", 200, 0, 40000);
-    else
-      fHistV0MultiplicityOn = new TH1F("fHistV0MultiplicityOn", "Multiplicity distribution;Number of V0s;Events", 50, 0, 50);
-    fListHist->Add(fHistV0MultiplicityOn);
-  }
-  if (!fHistV0Chi2On) {
-    fHistV0Chi2On = new TH1F("fHistV0Chi2On", "V0 chi2;chi2;Number of V0s", 33, 0, 33);
-    fListHist->Add(fHistV0Chi2On);
-  }
-  if (!fHistDcaV0DaughtersOn) {
-    fHistDcaV0DaughtersOn = new TH1F("fHistDcaV0DaughtersOn", "DCA between V0 daughters;DCA (cm);Number of V0s", 300, 0, 3);
-    fListHist->Add(fHistDcaV0DaughtersOn);
-  }
-  if (!fHistV0CosineOfPointingAngleOn) {
-    fHistV0CosineOfPointingAngleOn = new TH1F("fHistV0CosineOfPointingAngleOn", "V0 Cosine of Pointing Angle;Number of V0s", 200, 0, 1);
-    fListHist->Add(fHistV0CosineOfPointingAngleOn);
-  }
-  if (!fHistV0RadiusOn) {
-    fHistV0RadiusOn = new TH1F("fHistV0RadiusOn", "V0 decay radius;Radius (cm);Number of V0s", 33, 0, 33);
-    fListHist->Add(fHistV0RadiusOn);
-  }
-  if (!fHistDcaV0ToPrimVertexOn) {
-    fHistDcaV0ToPrimVertexOn = new TH1F("fHistDcaV0ToPrimVertexOn", "DCA of V0 to Prim. Vertex;DCA (cm);Number of V0s", 300, 0, 3);
-    fListHist->Add(fHistDcaV0ToPrimVertexOn);
-  }
-  if (!fHistDcaPosToPrimVertexOn) {
-    fHistDcaPosToPrimVertexOn = new TH1F("fHistDcaPosToPrimVertexOn", "DCA of V0 neg daughter to Prim. Vertex;DCA (cm);Number of V0s", 300, 0, 3);
-    fListHist->Add(fHistDcaPosToPrimVertexOn);
-  }
-  if (!fHistDcaNegToPrimVertexOn) {
-    fHistDcaNegToPrimVertexOn = new TH1F("fHistDcaNegToPrimVertexOn", "DCA of V0 pos daughter to Prim. Vertex;DCA (cm);Number of V0s", 300, 0, 3);
-    fListHist->Add(fHistDcaNegToPrimVertexOn);
-  }
-
-  if (!fHistMassK0sOn) {
-    fHistMassK0sOn = new TH1F("fHistMassK0sOn","K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts",100,0.4,0.6);
-    fListHist->Add(fHistMassK0sOn);
-  }
-  if (!fHistMassLambdaOn) {
-    fHistMassLambdaOn = new TH1F("fHistMassLambdaOn","#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts",75,1.05,1.2);
-    fListHist->Add(fHistMassLambdaOn);
-  }
-  if (!fHistMassAntiLambdaOn) {
-    fHistMassAntiLambdaOn = new TH1F("fHistMassAntiLambdaOn","#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts",75,1.05,1.2);
-    fListHist->Add(fHistMassAntiLambdaOn);
-  }
-  if (!fHistMassK0sOnVsPt) {
-    fHistMassK0sOnVsPt = new TH2F("fHistMassK0sOnVsPt","K^{0} candidates;p_{T} (GeV/c);M(#pi^{+}#pi^{-}) (GeV/c^{2})",200,0,10,100,0.4,0.6);
-    fListHist->Add(fHistMassK0sOnVsPt);
-  }
-  if (!fHistMassLambdaOnVsPt) {
-    fHistMassLambdaOnVsPt = new TH2F("fHistMassLambdaOnVsPt","#Lambda^{0} candidates;p_{T} (GeV/c);M(p#pi^{-}) (GeV/c^{2})",200,0,10,75,1.05,1.2);
-    fListHist->Add(fHistMassLambdaOnVsPt);
-  }
-  if (!fHistMassAntiLambdaOnVsPt) {
-    fHistMassAntiLambdaOnVsPt = new TH2F("fHistMassAntiLambdaOnVsPt","#bar{#Lambda}^{0} candidates;p_{T} (GeV/c);M(#bar{p}#pi^{+}) (GeV/c^{2})",200,0,10,75,1.05,1.2);
-    fListHist->Add(fHistMassAntiLambdaOnVsPt);
-  }
-  if (!fHistArmenterosPodolanskiOn) {
-    fHistArmenterosPodolanskiOn    = new TH2F("fHistArmenterosPodolanskiOn","Armenteros-Podolanski Onthefly phase space;#alpha;p_{t} arm",200,-1.0,1.0,150,0,0.3);
-    fListHist->Add(fHistArmenterosPodolanskiOn);
-  }
-  // Post output data.
-  PostData(1, fListHist);
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskCheckV0::UserExec(Option_t *) 
-{
-  // Main loop
-  // Called for each event
-  AliVEvent* lEvent = InputEvent();
-  if (!lEvent) {
-    Printf("ERROR: Event not available");
-    return;
-  }
-
-  Bool_t isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
-  if ((fUsePhysicsSelection)&&(!isSelected)) return;
-
-  fHistTrackMultiplicity->Fill(lEvent->GetNumberOfTracks());
-  
-  Double_t tPrimaryVtxPosition[3];
-  Int_t nv0s = 0;
-  nv0s = lEvent->GetNumberOfV0s();
-  //  Printf("CheckV0 analysis task: There are %d v0s in this event",nv0s);
-
-  Int_t    lOnFlyStatus = 0, nv0sOn = 0, nv0sOff = 0;
-  Double_t lChi2V0 = 0;
-  Double_t lDcaV0Daughters = 0, lDcaV0ToPrimVertex = 0;
-  Double_t lDcaPosToPrimVertex = 0, lDcaNegToPrimVertex = 0;
-  Double_t lV0CosineOfPointingAngle = 0;
-  Double_t lV0Radius = 0, lPt = 0;
-  Double_t lRapK0Short = 0, lRapLambda = 0;
-  Double_t lInvMassK0s = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
-  Double_t lAlphaV0 = 0, lPtArmV0 = 0;
-
-  const AliVVertex *primaryVtx = lEvent->GetPrimaryVertex();
-  tPrimaryVtxPosition[0] = primaryVtx->GetX();
-  tPrimaryVtxPosition[1] = primaryVtx->GetY();
-  tPrimaryVtxPosition[2] = primaryVtx->GetZ();
-  fHistPrimaryVertexPosX->Fill(tPrimaryVtxPosition[0]);
-  fHistPrimaryVertexPosY->Fill(tPrimaryVtxPosition[1]);
-  fHistPrimaryVertexPosZ->Fill(tPrimaryVtxPosition[2]);
-
-  if (TMath::Abs(tPrimaryVtxPosition[2])<fMaxPrimaryVtxPosZ){// event selections
-
-    fHistKeptPrimaryVertexPosX->Fill(tPrimaryVtxPosition[0]);
-    fHistKeptPrimaryVertexPosY->Fill(tPrimaryVtxPosition[1]);
-    fHistKeptPrimaryVertexPosZ->Fill(tPrimaryVtxPosition[2]);
-
-    if(fAnalysisType == "ESD") {
-
-      Double_t lMagneticField = ((AliESDEvent*)lEvent)->GetMagneticField();
-
-      for (Int_t iV0 = 0; iV0 < nv0s; iV0++) 
-       {// This is the begining of the V0 loop
-         AliESDv0 *v0 = ((AliESDEvent*)lEvent)->GetV0(iV0);
-         if (!v0) continue;
-
-         Double_t tDecayVertexV0[3]; v0->GetXYZ(tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]); 
-
-         lV0Radius = TMath::Sqrt(tDecayVertexV0[0]*tDecayVertexV0[0]+tDecayVertexV0[1]*tDecayVertexV0[1]);
-         lPt = v0->Pt();
-         lRapK0Short = v0->RapK0Short();
-         lRapLambda  = v0->RapLambda();
-         if ((lPt<fMinV0Pt)||(fMaxV0Pt<lPt)) continue;
-
-         UInt_t lKeyPos = (UInt_t)TMath::Abs(v0->GetPindex());
-         UInt_t lKeyNeg = (UInt_t)TMath::Abs(v0->GetNindex());
-
-         Double_t lMomPos[3]; v0->GetPPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
-         Double_t lMomNeg[3]; v0->GetNPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
-
-         AliESDtrack *pTrack=((AliESDEvent*)lEvent)->GetTrack(lKeyPos);
-         AliESDtrack *nTrack=((AliESDEvent*)lEvent)->GetTrack(lKeyNeg);
-         if (!pTrack || !nTrack) {
-           Printf("ERROR: Could not retreive one of the daughter track");
-           continue;
-         }
-
-         // Filter like-sign V0 (next: add counter and distribution)
-         if ( pTrack->GetSign() == nTrack->GetSign()){
-           continue;
-         } 
-
-         // WARNING: the following selections cannot be done for AOD yet...
-
-         // Tracks quality cuts 
-         if ( ( (pTrack->GetTPCNcls()) < fMinDaughterTpcClusters ) || ( (nTrack->GetTPCNcls()) < fMinDaughterTpcClusters ) ) continue;
-       
-         // TPC refit condition (done during reconstruction for Offline but not for On-the-fly)
-         if( !(pTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;      
-         if( !(nTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
-
-
-         lDcaPosToPrimVertex = TMath::Abs(pTrack->GetD(tPrimaryVtxPosition[0],
-                                                       tPrimaryVtxPosition[1],
-                                                       lMagneticField) );
-
-         lDcaNegToPrimVertex = TMath::Abs(nTrack->GetD(tPrimaryVtxPosition[0],
-                                                       tPrimaryVtxPosition[1],
-                                                       lMagneticField) );
-
-         lOnFlyStatus = v0->GetOnFlyStatus();
-         lChi2V0 = v0->GetChi2V0();
-         lDcaV0Daughters = v0->GetDcaV0Daughters();
-         lDcaV0ToPrimVertex = v0->GetD(tPrimaryVtxPosition[0],tPrimaryVtxPosition[1],tPrimaryVtxPosition[2]);
-         lV0CosineOfPointingAngle = v0->GetV0CosineOfPointingAngle(tPrimaryVtxPosition[0],tPrimaryVtxPosition[1],tPrimaryVtxPosition[2]);
-
-         // Getting invariant mass infos directly from ESD
-         v0->ChangeMassHypothesis(310);
-         lInvMassK0s = v0->GetEffMass();
-         v0->ChangeMassHypothesis(3122);
-         lInvMassLambda = v0->GetEffMass();
-         v0->ChangeMassHypothesis(-3122);
-         lInvMassAntiLambda = v0->GetEffMass();
-         lAlphaV0 = v0->AlphaV0();
-         lPtArmV0 = v0->PtArmV0();
-
-         fHistV0OnFlyStatus->Fill(lOnFlyStatus);
-         if(!lOnFlyStatus){
-           nv0sOff++;
-           fHistV0Chi2Off->Fill(lChi2V0);
-           fHistDcaV0ToPrimVertexOff->Fill(lDcaV0ToPrimVertex);
-           fHistDcaV0DaughtersOff->Fill(lDcaV0Daughters);
-           fHistV0CosineOfPointingAngleOff->Fill(lV0CosineOfPointingAngle);
-
-           fHistV0RadiusOff->Fill(lV0Radius);
-           fHistDcaPosToPrimVertexOff->Fill(lDcaPosToPrimVertex);
-           fHistDcaNegToPrimVertexOff->Fill(lDcaNegToPrimVertex);
-
-           // Filling invariant mass histos for all candidates
-           fHistMassK0sOff->Fill(lInvMassK0s);
-           fHistMassLambdaOff->Fill(lInvMassLambda);
-           fHistMassAntiLambdaOff->Fill(lInvMassAntiLambda);
-           if (TMath::Abs(lRapK0Short)<fMaxV0Rapidity)
-             fHistMassK0sOffVsPt->Fill(lPt,lInvMassK0s);
-           if (TMath::Abs(lRapLambda)<fMaxV0Rapidity){
-             fHistMassLambdaOffVsPt->Fill(lPt,lInvMassLambda);
-             fHistMassAntiLambdaOffVsPt->Fill(lPt,lInvMassAntiLambda);
-           }
-           fHistArmenterosPodolanskiOff->Fill(lAlphaV0,lPtArmV0);
-         }
-         else {
-           nv0sOn++;
-           fHistV0Chi2On->Fill(lChi2V0);
-           fHistDcaV0ToPrimVertexOn->Fill(lDcaV0ToPrimVertex);
-           fHistDcaV0DaughtersOn->Fill(lDcaV0Daughters);
-           fHistV0CosineOfPointingAngleOn->Fill(lV0CosineOfPointingAngle);
-
-           fHistV0RadiusOn->Fill(lV0Radius);
-           fHistDcaPosToPrimVertexOn->Fill(lDcaPosToPrimVertex);
-           fHistDcaNegToPrimVertexOn->Fill(lDcaNegToPrimVertex);
-
-           // Filling invariant mass histos for all candidates
-           fHistMassK0sOn->Fill(lInvMassK0s);
-           fHistMassLambdaOn->Fill(lInvMassLambda);
-           fHistMassAntiLambdaOn->Fill(lInvMassAntiLambda);
-           if (TMath::Abs(lRapK0Short)<fMaxV0Rapidity)
-             fHistMassK0sOnVsPt->Fill(lPt,lInvMassK0s);
-           if (TMath::Abs(lRapLambda)<fMaxV0Rapidity){
-             fHistMassLambdaOnVsPt->Fill(lPt,lInvMassLambda);
-             fHistMassAntiLambdaOnVsPt->Fill(lPt,lInvMassAntiLambda);
-           }
-           fHistArmenterosPodolanskiOn->Fill(lAlphaV0,lPtArmV0);
-         }
-       }// This is the end of the V0 loop
-    } // end of "ESD" analysis
-
-    else if(fAnalysisType == "AOD") {
-
-      for (Int_t iV0 = 0; iV0 < nv0s; iV0++) 
-       {// This is the begining of the V0 loop
-         AliAODv0 *v0 = ((AliAODEvent*)lEvent)->GetV0(iV0);
-         if (!v0) continue;
-
-         lV0Radius = v0->RadiusV0();
-         lPt = v0->Pt();
-         lRapK0Short = v0->RapK0Short();
-         lRapLambda  = v0->RapLambda();
-         if ((lPt<fMinV0Pt)||(fMaxV0Pt<lPt)) continue;
-         lDcaPosToPrimVertex = v0->DcaPosToPrimVertex();
-         lDcaNegToPrimVertex = v0->DcaNegToPrimVertex();
-
-         // propose getOnFlyStatus() = -1 for like-sign
-
-         lOnFlyStatus = v0->GetOnFlyStatus();
-         lChi2V0 = v0->Chi2V0();
-         lDcaV0Daughters = v0->DcaV0Daughters();
-         lDcaV0ToPrimVertex = v0->DcaV0ToPrimVertex();
-         lV0CosineOfPointingAngle = v0->CosPointingAngle(tPrimaryVtxPosition);
-
-         lInvMassK0s = v0->MassK0Short();
-         lInvMassLambda = v0->MassLambda();
-         lInvMassAntiLambda = v0->MassAntiLambda();
-         lAlphaV0 = v0->AlphaV0();
-         lPtArmV0 = v0->PtArmV0();
-
-         fHistV0OnFlyStatus->Fill(lOnFlyStatus);
-         if(!lOnFlyStatus){
-           nv0sOff++;
-           fHistV0Chi2Off->Fill(lChi2V0);
-           fHistDcaV0ToPrimVertexOff->Fill(lDcaV0ToPrimVertex);
-           fHistDcaV0DaughtersOff->Fill(lDcaV0Daughters);
-           fHistV0CosineOfPointingAngleOff->Fill(lV0CosineOfPointingAngle);
-
-           fHistV0RadiusOff->Fill(lV0Radius);
-           fHistDcaPosToPrimVertexOff->Fill(lDcaPosToPrimVertex);
-           fHistDcaNegToPrimVertexOff->Fill(lDcaNegToPrimVertex);
-
-           // Filling invariant mass histos for all candidates
-           fHistMassK0sOff->Fill(lInvMassK0s);
-           fHistMassLambdaOff->Fill(lInvMassLambda);
-           fHistMassAntiLambdaOff->Fill(lInvMassAntiLambda);
-           if (TMath::Abs(lRapK0Short)<fMaxV0Rapidity)
-             fHistMassK0sOffVsPt->Fill(lPt,lInvMassK0s);
-           if (TMath::Abs(lRapLambda)<fMaxV0Rapidity){
-             fHistMassLambdaOffVsPt->Fill(lPt,lInvMassLambda);
-             fHistMassAntiLambdaOffVsPt->Fill(lPt,lInvMassAntiLambda);
-           }
-           fHistArmenterosPodolanskiOff->Fill(lAlphaV0,lPtArmV0);
-         }
-         else {
-           nv0sOn++;
-           fHistV0Chi2On->Fill(lChi2V0);
-           fHistDcaV0ToPrimVertexOn->Fill(lDcaV0ToPrimVertex);
-           fHistDcaV0DaughtersOn->Fill(lDcaV0Daughters);
-           fHistV0CosineOfPointingAngleOn->Fill(lV0CosineOfPointingAngle);
-
-           fHistV0RadiusOn->Fill(lV0Radius);
-           fHistDcaPosToPrimVertexOn->Fill(lDcaPosToPrimVertex);
-           fHistDcaNegToPrimVertexOn->Fill(lDcaNegToPrimVertex);
-
-           // Filling invariant mass histos for all candidates
-           fHistMassK0sOn->Fill(lInvMassK0s);
-           fHistMassLambdaOn->Fill(lInvMassLambda);
-           fHistMassAntiLambdaOn->Fill(lInvMassAntiLambda);
-           if (TMath::Abs(lRapK0Short)<fMaxV0Rapidity)
-             fHistMassK0sOnVsPt->Fill(lPt,lInvMassK0s);
-           if (TMath::Abs(lRapLambda)<fMaxV0Rapidity){
-             fHistMassLambdaOnVsPt->Fill(lPt,lInvMassLambda);
-             fHistMassAntiLambdaOnVsPt->Fill(lPt,lInvMassAntiLambda);
-           }
-           fHistArmenterosPodolanskiOn->Fill(lAlphaV0,lPtArmV0);
-         }
-       }// This is the end of the V0 loop
-    } // end of "AOD" analysis
-
-    fHistV0Multiplicity->Fill(nv0s);
-    fHistV0MultiplicityOff->Fill(nv0sOff);
-    fHistV0MultiplicityOn->Fill(nv0sOn);
-
-  }// end of event selection
-
-  // Post output data.
-  PostData(1, fListHist);
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskCheckV0::Terminate(Option_t *) 
-{
-  // Draw result to the screen
-  // Called once at the end of the query
-
-  TList *cRetrievedList = 0x0;
-  cRetrievedList = (TList*)GetOutputData(1);
-
-  if(!cRetrievedList){
-    AliWarning("ERROR - AliAnalysisTaskCheckV0: output data container list not available\n"); return;
-  }
-
-  // Implement a decent style
-  TStyle *myStyle = new TStyle("myStyle","my style");
-  Int_t font = 42;
-  myStyle->SetCanvasColor(10);
-  myStyle->SetStatColor(10);
-  myStyle->SetPadColor(10);
-  myStyle->SetDrawBorder(0);
-  myStyle->SetCanvasBorderMode(0);
-  myStyle->SetPadBorderMode(0);
-  myStyle->SetTextFont(font);
-  myStyle->SetStatFont(font);
-  myStyle->SetLabelFont(font,"xyz"); 
-  myStyle->SetTitleFont(font);  
-  myStyle->SetPalette(1,0); 
-  myStyle->cd();
-
-  fHistTrackMultiplicity = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistTrackMultiplicity"));
-  if (!fHistTrackMultiplicity) {
-    Printf("ERROR: fHistTrackMultiplicity not available");
-    return;
-  }
-  fHistV0Multiplicity = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistV0Multiplicity"));
-  if (!fHistV0Multiplicity) {
-    Printf("ERROR: fHistV0Multiplicity not available");
-    return;
-  }
-  fHistV0MultiplicityOff = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistV0MultiplicityOff"));
-  if (!fHistV0MultiplicityOff) {
-    Printf("ERROR: fHistV0MultiplicityOff not available");
-    return;
-  }
-  fHistV0MultiplicityOn = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistV0MultiplicityOn"));
-  if (!fHistV0MultiplicityOn) {
-    Printf("ERROR: fHistV0MultiplicityOn not available");
-    return;
-  }
-
-  TCanvas *canCheckV0 = new TCanvas("AliAnalysisTaskCheckV0","Check V0",10,10,510,700);
-  canCheckV0->Divide(2,3);
-  if (fHistTrackMultiplicity->GetMaximum() > 0.) canCheckV0->cd(1)->SetLogy();
-  fHistTrackMultiplicity->SetMarkerStyle(26);
-  fHistTrackMultiplicity->DrawCopy("E");
-  fHistV0Multiplicity->SetMarkerStyle(25);
-  fHistV0Multiplicity->DrawCopy("ESAME");
-  fHistV0MultiplicityOff->SetMarkerStyle(24);
-  fHistV0MultiplicityOff->DrawCopy("ESAME");
-  fHistV0MultiplicityOn->SetMarkerStyle(20);
-  fHistV0MultiplicityOn->DrawCopy("ESAME");
-
-  TLegend *legendMultiplicity = new TLegend(0.5,0.5,0.75,0.75);
-  legendMultiplicity->AddEntry(fHistTrackMultiplicity,"tracks");
-  legendMultiplicity->AddEntry(fHistV0Multiplicity,"all V^{0}");
-  legendMultiplicity->AddEntry(fHistV0MultiplicityOff,"offline V^{0}");
-  legendMultiplicity->AddEntry(fHistV0MultiplicityOn,"onthefly V^{0}");
-  legendMultiplicity->Draw();
-
-  fHistMassK0sOff = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistMassK0sOff"));
-  if (!fHistMassK0sOff) {
-    Printf("ERROR: fHistMassK0sOff not available");
-    return;
-  }
-  fHistMassK0sOn = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistMassK0sOn"));
-  if (!fHistMassK0sOn) {
-    Printf("ERROR: fHistMassK0sOn not available");
-    return;
-  }
-  fHistMassLambdaOff = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistMassLambdaOff"));
-  if (!fHistMassLambdaOff) {
-    Printf("ERROR: fHistMassLambdaOff not available");
-    return;
-  }
-  fHistMassLambdaOn = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistMassLambdaOn"));
-  if (!fHistMassLambdaOn) {
-    Printf("ERROR: fHistMassLambdaOn not available");
-    return;
-  }
-  fHistMassAntiLambdaOff = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistMassAntiLambdaOff"));
-  if (!fHistMassAntiLambdaOff) {
-    Printf("ERROR: fHistMassAntiLambdaOff not available");
-    return;
-  }
-  fHistMassAntiLambdaOn = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistMassAntiLambdaOn"));
-  if (!fHistMassAntiLambdaOn) {
-    Printf("ERROR: fHistMassAntiLambdaOn not available");
-    return;
-  }
-  fHistArmenterosPodolanskiOff = dynamic_cast<TH2F*> (cRetrievedList->FindObject("fHistArmenterosPodolanskiOff"));
-  if (!fHistArmenterosPodolanskiOff) {
-    Printf("ERROR: fHistArmenterosPodolanskiOff not available");
-    return;
-  }
-  fHistArmenterosPodolanskiOn = dynamic_cast<TH2F*> (cRetrievedList->FindObject("fHistArmenterosPodolanskiOn"));
-  if (!fHistArmenterosPodolanskiOn) {
-    Printf("ERROR: fHistArmenterosPodolanskiOn not available");
-    return;
-  }
-
-  canCheckV0->cd(2);
-  fHistMassK0sOn->SetMarkerStyle(20);
-  fHistMassK0sOn->DrawCopy("E");
-  fHistMassK0sOff->SetMarkerStyle(24);
-  fHistMassK0sOff->DrawCopy("ESAME");
-
-  canCheckV0->cd(3);
-  fHistMassLambdaOn->SetMarkerStyle(20);
-  fHistMassLambdaOn->DrawCopy("E");
-  fHistMassLambdaOff->SetMarkerStyle(24);
-  fHistMassLambdaOff->DrawCopy("ESAME");
-
-  canCheckV0->cd(4);
-  fHistMassAntiLambdaOn->SetMarkerStyle(20);
-  fHistMassAntiLambdaOn->DrawCopy("E");
-  fHistMassAntiLambdaOff->SetMarkerStyle(24);
-  fHistMassAntiLambdaOff->DrawCopy("ESAME");
-
-  canCheckV0->cd(5);
-  fHistArmenterosPodolanskiOff->DrawCopy("COL2Z");
-  canCheckV0->cd(6);
-  fHistArmenterosPodolanskiOn->DrawCopy("COL2Z");
-
-}
diff --git a/PWG2/SPECTRA/AliAnalysisTaskCheckV0.h b/PWG2/SPECTRA/AliAnalysisTaskCheckV0.h
deleted file mode 100644 (file)
index 90ee9fa..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#ifndef ALIANALYSISTASKCHECKV0_H
-#define ALIANALYSISTASKCHECKV0_H
-
-/*  See cxx source for full Copyright notice */
-
-//-----------------------------------------------------------------
-//                 AliAnalysisTaskCheckV0 class
-//            This task is for QAing the V0s from ESD/AOD
-//              Origin: B.H. Nov2007, hippolyt@in2p3.fr
-//-----------------------------------------------------------------
-
-class TString;
-class TList;
-class TH1F;
-class TH2F;
-
-#include "AliAnalysisTaskSE.h"
-
-class AliESDEvent;
-class AliESDVertex;
-class AliAODEvent;
-
-class AliAnalysisTaskCheckV0 : public AliAnalysisTaskSE {
- public:
-  AliAnalysisTaskCheckV0();
-  AliAnalysisTaskCheckV0(const char *name);
- ~AliAnalysisTaskCheckV0();
-  
-  virtual void   UserCreateOutputObjects();
-  virtual void   UserExec(Option_t *option);
-  virtual void   Terminate(Option_t *);
-
-  void   SetCollidingSystems(Short_t collidingSystems = 0) {fCollidingSystems = collidingSystems;}
-  void   SetUsePhysicsSelection(Bool_t usePhysicsSelection = 0) {fUsePhysicsSelection = usePhysicsSelection;}
-  void   SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
-  void   SetMaxPrimaryVtxPosZ(const Float_t maxPrimaryVtxPosZ = 100.) {fMaxPrimaryVtxPosZ = maxPrimaryVtxPosZ;}
-  void   SetMinV0Pt(const Float_t minV0Pt =   0.) {fMinV0Pt = minV0Pt;}
-  void   SetMaxV0Pt(const Float_t maxV0Pt = 100.) {fMaxV0Pt = maxV0Pt;}
-  void   SetMaxV0Rapidity(const Float_t maxV0Rapidity = 1.) {fMaxV0Rapidity = maxV0Rapidity;}
-  void   SetMinDaughterTpcClusters(const Int_t minDaughterTpcClusters = 80) {fMinDaughterTpcClusters = minDaughterTpcClusters;}
-  
- private:
-  TString      fAnalysisType;                   //  ESD or AOD
-  Short_t      fCollidingSystems;               //  Colliding systems 0/1 for pp/PbPb
-  Bool_t       fUsePhysicsSelection;            //  Delegate event selection to AliPhysicsSelectionTask
-  Float_t      fMaxPrimaryVtxPosZ;              //  Primary vertex selection in Z
-  Float_t      fMinV0Pt;                        //  Minimum pt selection for the V0
-  Float_t      fMaxV0Pt;                        //  Maximum pt selection for the V0
-  Float_t      fMaxV0Rapidity;                  //  Maximum rapidity selection for the V0
-  Int_t        fMinDaughterTpcClusters;         //  Minimum number of TPC clusters for the both daughter tracks of the V0
-  TList       *fListHist;                       //! List of histograms
-  TH1F        *fHistPrimaryVertexPosX;          //! Primary vertex position in X
-  TH1F        *fHistPrimaryVertexPosY;          //! Primary vertex position in Y
-  TH1F        *fHistPrimaryVertexPosZ;          //! Primary vertex position in Z
-  TH1F        *fHistKeptPrimaryVertexPosX;      //! Primary vertex position in X after event selection
-  TH1F        *fHistKeptPrimaryVertexPosY;      //! Primary vertex position in Y after event selection
-  TH1F        *fHistKeptPrimaryVertexPosZ;      //! Primary vertex position in Z after event selection
-  TH1F        *fHistTrackMultiplicity;          //! Track multiplicity distribution
-  TH1F        *fHistV0Multiplicity;             //! V0 multiplicity distribution
-  TH1F        *fHistV0OnFlyStatus;              //! V0 on fly status distribution
-
-              // V0 offline distributions
-  TH1F        *fHistV0MultiplicityOff;          //! V0 multiplicity distribution offline
-  TH1F        *fHistV0Chi2Off;                  //! V0 chi2 distribution
-  TH1F        *fHistDcaV0DaughtersOff;          //! Dca between V0 daughters
-  TH1F        *fHistV0CosineOfPointingAngleOff; //! Cosine of V0 pointing angle
-  TH1F        *fHistV0RadiusOff;                //! V0 radial distance distribution
-  TH1F        *fHistDcaV0ToPrimVertexOff;       //! Dca of V0 to primary vertex
-  TH1F        *fHistDcaPosToPrimVertexOff;      //! Dca of V0 positive daughter to primary vertex
-  TH1F        *fHistDcaNegToPrimVertexOff;      //! Dca of V0 negative daughter to primary vertex
-
-  TH1F        *fHistMassK0sOff;                 //! Invariant mass of K0s
-  TH1F        *fHistMassLambdaOff;              //! Invariant mass of Lambda
-  TH1F        *fHistMassAntiLambdaOff;          //! Invariant mass of Anti-Lambda
-  TH2F        *fHistMassK0sOffVsPt;             //! Invariant mass of K0s
-  TH2F        *fHistMassLambdaOffVsPt;          //! Invariant mass of Lambda
-  TH2F        *fHistMassAntiLambdaOffVsPt;      //! Invariant mass of Anti-Lambda
-  TH2F        *fHistArmenterosPodolanskiOff;    //! Armenteros-Podolanski distribution       
-
-              // V0 on-the-fly distributions
-  TH1F        *fHistV0MultiplicityOn;           //! V0 multiplicity distribution on-the-fly
-  TH1F        *fHistV0Chi2On;                   //! V0 chi2 distribution
-  TH1F        *fHistDcaV0DaughtersOn;           //! Dca between V0 daughters
-  TH1F        *fHistV0CosineOfPointingAngleOn;  //! Cosine of V0 pointing angle
-  TH1F        *fHistV0RadiusOn;                 //! V0 radial distance distribution
-  TH1F        *fHistDcaV0ToPrimVertexOn;        //! Dca of V0 to primary vertex
-  TH1F        *fHistDcaPosToPrimVertexOn;       //! Dca of V0 positive daughter to primary vertex
-  TH1F        *fHistDcaNegToPrimVertexOn;       //! Dca of V0 negative daughter to primary vertex
-
-  TH1F        *fHistMassK0sOn;                  //! Invariant mass of K0s
-  TH1F        *fHistMassLambdaOn;               //! Invariant mass of Lambda
-  TH1F        *fHistMassAntiLambdaOn;           //! Invariant mass of Anti-Lambda
-  TH2F        *fHistMassK0sOnVsPt;              //! Invariant mass of K0s
-  TH2F        *fHistMassLambdaOnVsPt;           //! Invariant mass of Lambda
-  TH2F        *fHistMassAntiLambdaOnVsPt;       //! Invariant mass of Anti-Lambda
-  TH2F        *fHistArmenterosPodolanskiOn;     //! Armenteros-Podolanski distribution       
-   
-  AliAnalysisTaskCheckV0(const AliAnalysisTaskCheckV0&);            // not implemented
-  AliAnalysisTaskCheckV0& operator=(const AliAnalysisTaskCheckV0&); // not implemented
-  
-  ClassDef(AliAnalysisTaskCheckV0, 1);
-};
-
-#endif
diff --git a/PWG2/SPECTRA/AliAnalysisTaskPerformanceStrange.cxx b/PWG2/SPECTRA/AliAnalysisTaskPerformanceStrange.cxx
deleted file mode 100644 (file)
index c026b21..0000000
+++ /dev/null
@@ -1,2817 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-//-----------------------------------------------------------------
-//             AliAnalysisTaskPerformanceSrange class
-//    This task is for a performance study of V0 identification.
-//                It works with MC info and ESD tree.
-//                 Author: H.Ricaud, H.Ricaud@gsi.de
-//-----------------------------------------------------------------
-
-#include <Riostream.h>
-
-#include <stdio.h>
-#include <iostream>
-#include "TChain.h"
-#include "TTree.h"
-#include "TH1F.h"
-#include "TH2F.h"
-#include "TF1.h"
-#include "TList.h"
-#include "TMath.h"
-#include "TCanvas.h"
-
-#include "AliAnalysisManager.h"
-
-#include "AliPhysicsSelection.h"
-
-#include "AliESDVertex.h"
-#include "AliESDEvent.h"
-#include "AliESDInputHandler.h"
-#include "AliESDtrack.h"
-#include "AliESDv0.h"
-#include "AliESDtrackCuts.h"
-
-#include "AliAODEvent.h"
-#include "AliAODVertex.h"
-#include "AliAODTrack.h"
-#include "AliAODv0.h"
-#include "AliAODMCHeader.h"
-#include "AliAODInputHandler.h"
-//#include "AliV0vertexer.h"
-
-#include "AliAODMCParticle.h"
-
-#include "AliMCEventHandler.h"
-#include "AliMCEvent.h"
-#include "AliStack.h"
-#include "AliGenEventHeader.h"
-
-#include "AliLog.h"
-
-#include "AliKFVertex.h"
-#include "AliVertexerTracks.h"
-
-#include "AliAnalysisTaskPerformanceStrange.h"
-
-
-ClassImp(AliAnalysisTaskPerformanceStrange)
-
-
-//________________________________________________________________________
-AliAnalysisTaskPerformanceStrange::AliAnalysisTaskPerformanceStrange()
-  : AliAnalysisTaskSE(), fAnalysisMC(999), fAnalysisType("infoType"),  fCollidingSystems(0), fUsePID("infoPID"), fUseCut("infoCut"), fPhysTrigSel(0), fListHist(0),
-    fHistMCPrimaryVertexX(0),
-    fHistMCPrimaryVertexY(0),
-    fHistMCPrimaryVertexZ(0),
-    fHistMCMultiplicityPrimary(0),
-    fHistMCMultiplicityTracks(0),
-    fHistMCtracksProdRadiusK0s(0),
-    fHistMCtracksProdRadiusLambda(0),
-    fHistMCtracksProdRadiusAntiLambda(0),
-    fHistMCtracksDecayRadiusK0s(0),
-    fHistMCtracksDecayRadiusLambda(0),
-    fHistMCtracksDecayRadiusAntiLambda(0),
-    fHistMCPtAllK0s(0),
-    fHistMCPtAllLambda(0),
-    fHistMCPtAllAntiLambda(0),
-    fHistMCProdRadiusK0s(0),
-    fHistMCProdRadiusLambda(0),
-    fHistMCProdRadiusAntiLambda(0),
-    fHistMCPtK0s(0),
-    fHistMCPtLambda(0),
-    fHistMCPtAntiLambda(0),
-    fHistMCPtLambdaFromSigma(0),
-    fHistMCPtAntiLambdaFromSigma(0),
-    fHistNTimesRecK0s(0),
-    fHistNTimesRecK0sMI(0),
-    fHistNTimesRecLambda(0),
-    fHistNTimesRecLambdaMI(0),
-    fHistNTimesRecAntiLambda(0),
-    fHistNTimesRecAntiLambdaMI(0),
-    fHistNTimesRecK0sVsPt(0),
-    fHistNTimesRecK0sVsPtMI(0),
-    fHistNTimesRecLambdaVsPt(0),
-    fHistNTimesRecLambdaVsPtMI(0),
-    fHistNTimesRecAntiLambdaVsPt(0),
-    fHistNTimesRecAntiLambdaVsPtMI(0),
-    fHistTrackPerEvent(0),
-    fHistMCDaughterTrack(0),
-    fHistPrimaryVertexX(0),
-    fHistPrimaryVertexY(0),
-    fHistPrimaryVertexZ(0),
-    fHistPrimaryVertexPosXV0events(0), 
-    fHistPrimaryVertexPosYV0events(0), 
-    fHistPrimaryVertexPosZV0events(0),
-    fHistDcaPosToPrimVertex(0),
-    fHistDcaNegToPrimVertex(0),
-    fHistDcaPosToPrimVertexZoom(0),
-    fHistDcaNegToPrimVertexZoom(0),
-    fHistRadiusV0(0),
-    fHistDecayLengthV0(0),
-    fHistDcaV0Daughters(0),
-    fHistChi2(0),
-    fHistCosPointAngle(0),
-    fHistCosPointAngleZoom(0),
-    fHistProdRadius(0),
-    fHistProdRadiusMI(0),
-    fHistV0Multiplicity(0),
-    fHistV0MultiplicityMI(0),
-    fHistChi2KFBeforeCutK0s(0), 
-    fHistChi2KFBeforeCutLambda(0), 
-    fHistChi2KFBeforeCutAntiLambda(0),
-    fHistChi2KFAfterCutK0s(0), 
-    fHistChi2KFAfterCutLambda(0), 
-    fHistChi2KFAfterCutAntiLambda(0),
-    fHistMassK0(0),
-    fHistMassK0MI(0),
-    fHistMassLambda(0),
-    fHistMassLambdaMI(0),
-    fHistMassAntiLambda(0),
-    fHistMassAntiLambdaMI(0),
-    fHistMassVsRadiusK0(0),
-    fHistMassVsRadiusK0MI(0),
-    fHistMassVsRadiusLambda(0),
-    fHistMassVsRadiusLambdaMI(0),
-    fHistMassVsRadiusAntiLambda(0),
-    fHistMassVsRadiusAntiLambdaMI(0),
-    fHistPtVsMassK0(0),
-    fHistPtVsMassK0MI(0),
-    fHistPtVsMassLambda(0),
-    fHistPtVsMassLambdaMI(0),
-    fHistPtVsMassAntiLambda(0),
-    fHistPtVsMassAntiLambdaMI(0),
-    fHistArmenterosPodolanski(0),
-    fHistArmenterosPodolanskiMI(0),
-    fHistNsigmaPosPionAntiLambda(0),
-    fHistNsigmaNegProtonAntiLambda(0),
-    fHistNsigmaPosProtonLambda(0),
-    fHistNsigmaNegPionLambda(0),
-    fHistNsigmaPosPionK0(0),
-    fHistNsigmaNegPionK0(0),
-    fHistAsMcRapK0(0),
-    fHistAsMcRapK0MI(0),
-    fHistAsMcRapLambda(0),
-    fHistAsMcRapLambdaMI(0),
-    fHistAsMcRapAntiLambda(0),
-    fHistAsMcRapAntiLambdaMI(0),
-    fHistAsMcPtK0(0),
-    fHistAsMcPtK0MI(0),
-    fHistAsMcPtLambda(0),
-    fHistAsMcPtLambdaMI(0),
-    fHistAsMcPtAntiLambda(0),
-    fHistAsMcPtAntiLambdaMI(0),
-    fHistAsMcPtZoomK0(0),
-    fHistAsMcPtZoomK0MI(0),
-    fHistAsMcPtZoomLambda(0),
-    fHistAsMcPtZoomLambdaMI(0),
-    fHistAsMcProdRadiusK0(0),
-    fHistAsMcProdRadiusK0MI(0),
-    fHistAsMcProdRadiusLambda(0),
-    fHistAsMcProdRadiusLambdaMI(0),
-    fHistAsMcProdRadiusAntiLambda(0),
-    fHistAsMcProdRadiusAntiLambdaMI(0),
-    fHistAsMcProdRadiusXvsYK0s(0),
-    fHistAsMcProdRadiusXvsYK0sMI(0),
-    fHistAsMcProdRadiusXvsYLambda(0),
-    fHistAsMcProdRadiusXvsYLambdaMI(0),
-    fHistAsMcProdRadiusXvsYAntiLambda(0),
-    fHistAsMcProdRadiusXvsYAntiLambdaMI(0),
-    fHistPidMcMassK0(0),
-    fHistPidMcMassK0MI(0),
-    fHistPidMcMassLambda(0),
-    fHistPidMcMassLambdaMI(0),
-    fHistPidMcMassAntiLambda(0),
-    fHistPidMcMassAntiLambdaMI(0),
-    fHistAsMcMassK0(0),
-    fHistAsMcMassK0MI(0),
-    fHistAsMcMassLambda(0),
-    fHistAsMcMassLambdaMI(0),
-    fHistAsMcMassAntiLambda(0),
-    fHistAsMcMassAntiLambdaMI(0),
-    fHistAsMcPtVsMassK0(0),
-    fHistAsMcPtVsMassK0MI(0),
-    fHistAsMcPtVsMassLambda(0),
-    fHistAsMcPtVsMassLambdaMI(0),
-    fHistAsMcPtVsMassAntiLambda(0),
-    fHistAsMcPtVsMassAntiLambdaMI(0),
-    fHistAsMcMassVsRadiusK0(0),
-    fHistAsMcMassVsRadiusK0MI(0),
-    fHistAsMcMassVsRadiusLambda(0),
-    fHistAsMcMassVsRadiusLambdaMI(0),
-    fHistAsMcMassVsRadiusAntiLambda(0),
-    fHistAsMcMassVsRadiusAntiLambdaMI(0),
-    fHistAsMcResxK0(0),
-    fHistAsMcResyK0(0),
-    fHistAsMcReszK0(0),
-    fHistAsMcResrVsRadiusK0(0),
-    fHistAsMcReszVsRadiusK0(0),
-    fHistAsMcResxK0MI(0),
-    fHistAsMcResyK0MI(0),
-    fHistAsMcReszK0MI(0),
-    fHistAsMcResrVsRadiusK0MI(0),
-    fHistAsMcReszVsRadiusK0MI(0),
-    fHistAsMcResxLambda(0),
-    fHistAsMcResyLambda(0),
-    fHistAsMcReszLambda(0),
-    fHistAsMcResrVsRadiusLambda(0),
-    fHistAsMcReszVsRadiusLambda(0),
-    fHistAsMcResxLambdaMI(0),
-    fHistAsMcResyLambdaMI(0),
-    fHistAsMcReszLambdaMI(0),
-    fHistAsMcResrVsRadiusLambdaMI(0),
-    fHistAsMcReszVsRadiusLambdaMI(0),
-    fHistAsMcResxAntiLambda(0),
-    fHistAsMcResyAntiLambda(0),
-    fHistAsMcReszAntiLambda(0),
-    fHistAsMcResrVsRadiusAntiLambda(0),
-    fHistAsMcReszVsRadiusAntiLambda(0),
-    fHistAsMcResxAntiLambdaMI(0),
-    fHistAsMcResyAntiLambdaMI(0),
-    fHistAsMcReszAntiLambdaMI(0),
-    fHistAsMcResrVsRadiusAntiLambdaMI(0),
-    fHistAsMcReszVsRadiusAntiLambdaMI(0),
-    fHistAsMcResPtK0(0),
-    fHistAsMcResPtK0MI(0),
-    fHistAsMcResPtLambda(0),
-    fHistAsMcResPtLambdaMI(0),
-    fHistAsMcResPtAntiLambda(0),
-    fHistAsMcResPtAntiLambdaMI(0),
-    fHistAsMcResPtVsRapK0(0),
-    fHistAsMcResPtVsRapK0MI(0),
-    fHistAsMcResPtVsRapLambda(0),
-    fHistAsMcResPtVsRapLambdaMI(0),
-    fHistAsMcResPtVsRapAntiLambda(0),
-    fHistAsMcResPtVsRapAntiLambdaMI(0),
-    fHistAsMcResPtVsPtK0(0),
-    fHistAsMcResPtVsPtK0MI(0),
-    fHistAsMcResPtVsPtLambda(0),
-    fHistAsMcResPtVsPtLambdaMI(0),
-    fHistAsMcResPtVsPtAntiLambda(0),
-    fHistAsMcResPtVsPtAntiLambdaMI(0),
-    fHistAsMcMotherPdgCodeK0s(0),
-    fHistAsMcMotherPdgCodeK0sMI(0),
-    fHistAsMcMotherPdgCodeLambda(0),
-    fHistAsMcMotherPdgCodeLambdaMI(0),
-    fHistAsMcMotherPdgCodeAntiLambda(0),
-    fHistAsMcMotherPdgCodeAntiLambdaMI(0),
-    fHistAsMcPtLambdaFromSigma(0),
-    fHistAsMcPtLambdaFromSigmaMI(0),
-    fHistAsMcPtAntiLambdaFromSigma(0),
-    fHistAsMcPtAntiLambdaFromSigmaMI(0),
-    fHistAsMcSecondaryPtVsRapK0s(0),
-    fHistAsMcSecondaryPtVsRapK0sMI(0),
-    fHistAsMcSecondaryPtVsRapLambda(0),
-    fHistAsMcSecondaryPtVsRapLambdaMI(0),
-    fHistAsMcSecondaryPtVsRapAntiLambda(0),
-    fHistAsMcSecondaryPtVsRapAntiLambdaMI(0),
-    fHistAsMcSecondaryProdRadiusK0s(0),
-    fHistAsMcSecondaryProdRadiusK0sMI(0),
-    fHistAsMcSecondaryProdRadiusLambda(0),
-    fHistAsMcSecondaryProdRadiusLambdaMI(0),
-    fHistAsMcSecondaryProdRadiusAntiLambda(0),
-    fHistAsMcSecondaryProdRadiusAntiLambdaMI(0),
-    fHistAsMcSecondaryProdRadiusXvsYK0s(0),
-    fHistAsMcSecondaryProdRadiusXvsYK0sMI(0),
-    fHistAsMcSecondaryProdRadiusXvsYLambda(0),
-    fHistAsMcSecondaryProdRadiusXvsYLambdaMI(0),
-    fHistAsMcSecondaryProdRadiusXvsYAntiLambda(0),
-    fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI(0),
-    fHistAsMcSecondaryMotherPdgCodeK0s(0),
-    fHistAsMcSecondaryMotherPdgCodeK0sMI(0),
-    fHistAsMcSecondaryMotherPdgCodeLambda(0),
-    fHistAsMcSecondaryMotherPdgCodeLambdaMI(0),
-    fHistAsMcSecondaryMotherPdgCodeAntiLambda(0),
-    fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI(0),
-    fHistAsMcSecondaryPtLambdaFromSigma(0),
-    fHistAsMcSecondaryPtLambdaFromSigmaMI(0),
-    fHistAsMcSecondaryPtAntiLambdaFromSigma(0),
-    fHistAsMcSecondaryPtAntiLambdaFromSigmaMI(0)
-    
-{
-  // dummy Constructor
-}
-
-
-
-
-
-//________________________________________________________________________
-AliAnalysisTaskPerformanceStrange::AliAnalysisTaskPerformanceStrange(const char *name)
-  : AliAnalysisTaskSE(name), fAnalysisMC(999), fAnalysisType("infoType"), fCollidingSystems(0), fUsePID("infoPID"), fUseCut("infocut"), fPhysTrigSel(0), fListHist(0),
-    fHistMCPrimaryVertexX(0),
-    fHistMCPrimaryVertexY(0),
-    fHistMCPrimaryVertexZ(0),
-    fHistMCMultiplicityPrimary(0),
-    fHistMCMultiplicityTracks(0),
-    fHistMCtracksProdRadiusK0s(0),
-    fHistMCtracksProdRadiusLambda(0),
-    fHistMCtracksProdRadiusAntiLambda(0),
-    fHistMCtracksDecayRadiusK0s(0),
-    fHistMCtracksDecayRadiusLambda(0),
-    fHistMCtracksDecayRadiusAntiLambda(0),
-    fHistMCPtAllK0s(0),
-    fHistMCPtAllLambda(0),
-    fHistMCPtAllAntiLambda(0),
-    fHistMCProdRadiusK0s(0),
-    fHistMCProdRadiusLambda(0),
-    fHistMCProdRadiusAntiLambda(0),
-    fHistMCPtK0s(0),
-    fHistMCPtLambda(0),
-    fHistMCPtAntiLambda(0),
-    fHistMCPtLambdaFromSigma(0),
-    fHistMCPtAntiLambdaFromSigma(0),
-    fHistNTimesRecK0s(0),
-    fHistNTimesRecK0sMI(0),
-    fHistNTimesRecLambda(0),
-    fHistNTimesRecLambdaMI(0),
-    fHistNTimesRecAntiLambda(0),
-    fHistNTimesRecAntiLambdaMI(0),
-    fHistNTimesRecK0sVsPt(0),
-    fHistNTimesRecK0sVsPtMI(0),
-    fHistNTimesRecLambdaVsPt(0),
-    fHistNTimesRecLambdaVsPtMI(0),
-    fHistNTimesRecAntiLambdaVsPt(0),
-    fHistNTimesRecAntiLambdaVsPtMI(0),
-    fHistTrackPerEvent(0),
-    fHistMCDaughterTrack(0),
-    fHistPrimaryVertexX(0),
-    fHistPrimaryVertexY(0),
-    fHistPrimaryVertexZ(0),
-    fHistPrimaryVertexPosXV0events(0), 
-    fHistPrimaryVertexPosYV0events(0), 
-    fHistPrimaryVertexPosZV0events(0),
-    fHistDcaPosToPrimVertex(0),
-    fHistDcaNegToPrimVertex(0),
-    fHistDcaPosToPrimVertexZoom(0),
-    fHistDcaNegToPrimVertexZoom(0),
-    fHistRadiusV0(0),
-    fHistDecayLengthV0(0),
-    fHistDcaV0Daughters(0),
-    fHistChi2(0),
-    fHistCosPointAngle(0),
-    fHistCosPointAngleZoom(0),
-    fHistProdRadius(0),
-    fHistProdRadiusMI(0),
-    fHistV0Multiplicity(0),
-    fHistV0MultiplicityMI(0),
-    fHistChi2KFBeforeCutK0s(0), 
-    fHistChi2KFBeforeCutLambda(0), 
-    fHistChi2KFBeforeCutAntiLambda(0),
-    fHistChi2KFAfterCutK0s(0), 
-    fHistChi2KFAfterCutLambda(0), 
-    fHistChi2KFAfterCutAntiLambda(0),
-    fHistMassK0(0),
-    fHistMassK0MI(0),
-    fHistMassLambda(0),
-    fHistMassLambdaMI(0),
-    fHistMassAntiLambda(0),
-    fHistMassAntiLambdaMI(0),
-    fHistMassVsRadiusK0(0),
-    fHistMassVsRadiusK0MI(0),
-    fHistMassVsRadiusLambda(0),
-    fHistMassVsRadiusLambdaMI(0),
-    fHistMassVsRadiusAntiLambda(0),
-    fHistMassVsRadiusAntiLambdaMI(0),
-    fHistPtVsMassK0(0),
-    fHistPtVsMassK0MI(0),
-    fHistPtVsMassLambda(0),
-    fHistPtVsMassLambdaMI(0),
-    fHistPtVsMassAntiLambda(0),
-    fHistPtVsMassAntiLambdaMI(0),
-    fHistArmenterosPodolanski(0),
-    fHistArmenterosPodolanskiMI(0),
-    fHistNsigmaPosPionAntiLambda(0),
-    fHistNsigmaNegProtonAntiLambda(0),
-    fHistNsigmaPosProtonLambda(0),
-    fHistNsigmaNegPionLambda(0),
-    fHistNsigmaPosPionK0(0),
-    fHistNsigmaNegPionK0(0),
-    fHistAsMcRapK0(0),
-    fHistAsMcRapK0MI(0),
-    fHistAsMcRapLambda(0),
-    fHistAsMcRapLambdaMI(0),
-    fHistAsMcRapAntiLambda(0),
-    fHistAsMcRapAntiLambdaMI(0),
-    fHistAsMcPtK0(0),
-    fHistAsMcPtK0MI(0),
-    fHistAsMcPtLambda(0),
-    fHistAsMcPtLambdaMI(0),
-    fHistAsMcPtAntiLambda(0),
-    fHistAsMcPtAntiLambdaMI(0),
-    fHistAsMcPtZoomK0(0),
-    fHistAsMcPtZoomK0MI(0),
-    fHistAsMcPtZoomLambda(0),
-    fHistAsMcPtZoomLambdaMI(0),
-    fHistAsMcProdRadiusK0(0),
-    fHistAsMcProdRadiusK0MI(0),
-    fHistAsMcProdRadiusLambda(0),
-    fHistAsMcProdRadiusLambdaMI(0),
-    fHistAsMcProdRadiusAntiLambda(0),
-    fHistAsMcProdRadiusAntiLambdaMI(0),
-    fHistAsMcProdRadiusXvsYK0s(0),
-    fHistAsMcProdRadiusXvsYK0sMI(0),
-    fHistAsMcProdRadiusXvsYLambda(0),
-    fHistAsMcProdRadiusXvsYLambdaMI(0),
-    fHistAsMcProdRadiusXvsYAntiLambda(0),
-    fHistAsMcProdRadiusXvsYAntiLambdaMI(0),
-    fHistPidMcMassK0(0),
-    fHistPidMcMassK0MI(0),
-    fHistPidMcMassLambda(0),
-    fHistPidMcMassLambdaMI(0),
-    fHistPidMcMassAntiLambda(0),
-    fHistPidMcMassAntiLambdaMI(0),
-    fHistAsMcMassK0(0),
-    fHistAsMcMassK0MI(0),
-    fHistAsMcMassLambda(0),
-    fHistAsMcMassLambdaMI(0),
-    fHistAsMcMassAntiLambda(0),
-    fHistAsMcMassAntiLambdaMI(0),
-    fHistAsMcPtVsMassK0(0),
-    fHistAsMcPtVsMassK0MI(0),
-    fHistAsMcPtVsMassLambda(0),
-    fHistAsMcPtVsMassLambdaMI(0),
-    fHistAsMcPtVsMassAntiLambda(0),
-    fHistAsMcPtVsMassAntiLambdaMI(0),
-    fHistAsMcMassVsRadiusK0(0),
-    fHistAsMcMassVsRadiusK0MI(0),
-    fHistAsMcMassVsRadiusLambda(0),
-    fHistAsMcMassVsRadiusLambdaMI(0),
-    fHistAsMcMassVsRadiusAntiLambda(0),
-    fHistAsMcMassVsRadiusAntiLambdaMI(0),
-    fHistAsMcResxK0(0),
-    fHistAsMcResyK0(0),
-    fHistAsMcReszK0(0),
-    fHistAsMcResrVsRadiusK0(0),
-    fHistAsMcReszVsRadiusK0(0),
-    fHistAsMcResxK0MI(0),
-    fHistAsMcResyK0MI(0),
-    fHistAsMcReszK0MI(0),
-    fHistAsMcResrVsRadiusK0MI(0),
-    fHistAsMcReszVsRadiusK0MI(0),
-    fHistAsMcResxLambda(0),
-    fHistAsMcResyLambda(0),
-    fHistAsMcReszLambda(0),
-    fHistAsMcResrVsRadiusLambda(0),
-    fHistAsMcReszVsRadiusLambda(0),
-    fHistAsMcResxLambdaMI(0),
-    fHistAsMcResyLambdaMI(0),
-    fHistAsMcReszLambdaMI(0),
-    fHistAsMcResrVsRadiusLambdaMI(0),
-    fHistAsMcReszVsRadiusLambdaMI(0),
-    fHistAsMcResxAntiLambda(0),
-    fHistAsMcResyAntiLambda(0),
-    fHistAsMcReszAntiLambda(0),
-    fHistAsMcResrVsRadiusAntiLambda(0),
-    fHistAsMcReszVsRadiusAntiLambda(0),
-    fHistAsMcResxAntiLambdaMI(0),
-    fHistAsMcResyAntiLambdaMI(0),
-    fHistAsMcReszAntiLambdaMI(0),
-    fHistAsMcResrVsRadiusAntiLambdaMI(0),
-    fHistAsMcReszVsRadiusAntiLambdaMI(0),
-    fHistAsMcResPtK0(0),
-    fHistAsMcResPtK0MI(0),
-    fHistAsMcResPtLambda(0),
-    fHistAsMcResPtLambdaMI(0),
-    fHistAsMcResPtAntiLambda(0),
-    fHistAsMcResPtAntiLambdaMI(0),
-    fHistAsMcResPtVsRapK0(0),
-    fHistAsMcResPtVsRapK0MI(0),
-    fHistAsMcResPtVsRapLambda(0),
-    fHistAsMcResPtVsRapLambdaMI(0),
-    fHistAsMcResPtVsRapAntiLambda(0),
-    fHistAsMcResPtVsRapAntiLambdaMI(0),
-    fHistAsMcResPtVsPtK0(0),
-    fHistAsMcResPtVsPtK0MI(0),
-    fHistAsMcResPtVsPtLambda(0),
-    fHistAsMcResPtVsPtLambdaMI(0),
-    fHistAsMcResPtVsPtAntiLambda(0),
-    fHistAsMcResPtVsPtAntiLambdaMI(0),
-    fHistAsMcMotherPdgCodeK0s(0),
-    fHistAsMcMotherPdgCodeK0sMI(0),
-    fHistAsMcMotherPdgCodeLambda(0),
-    fHistAsMcMotherPdgCodeLambdaMI(0),
-    fHistAsMcMotherPdgCodeAntiLambda(0),
-    fHistAsMcMotherPdgCodeAntiLambdaMI(0),
-    fHistAsMcPtLambdaFromSigma(0),
-    fHistAsMcPtLambdaFromSigmaMI(0),
-    fHistAsMcPtAntiLambdaFromSigma(0),
-    fHistAsMcPtAntiLambdaFromSigmaMI(0),
-    fHistAsMcSecondaryPtVsRapK0s(0),
-    fHistAsMcSecondaryPtVsRapK0sMI(0),
-    fHistAsMcSecondaryPtVsRapLambda(0),
-    fHistAsMcSecondaryPtVsRapLambdaMI(0),
-    fHistAsMcSecondaryPtVsRapAntiLambda(0),
-    fHistAsMcSecondaryPtVsRapAntiLambdaMI(0),
-    fHistAsMcSecondaryProdRadiusK0s(0),
-    fHistAsMcSecondaryProdRadiusK0sMI(0),
-    fHistAsMcSecondaryProdRadiusLambda(0),
-    fHistAsMcSecondaryProdRadiusLambdaMI(0),
-    fHistAsMcSecondaryProdRadiusAntiLambda(0),
-    fHistAsMcSecondaryProdRadiusAntiLambdaMI(0),
-    fHistAsMcSecondaryProdRadiusXvsYK0s(0),
-    fHistAsMcSecondaryProdRadiusXvsYK0sMI(0),
-    fHistAsMcSecondaryProdRadiusXvsYLambda(0),
-    fHistAsMcSecondaryProdRadiusXvsYLambdaMI(0),
-    fHistAsMcSecondaryProdRadiusXvsYAntiLambda(0),
-    fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI(0),
-    fHistAsMcSecondaryMotherPdgCodeK0s(0),
-    fHistAsMcSecondaryMotherPdgCodeK0sMI(0),
-    fHistAsMcSecondaryMotherPdgCodeLambda(0),
-    fHistAsMcSecondaryMotherPdgCodeLambdaMI(0),
-    fHistAsMcSecondaryMotherPdgCodeAntiLambda(0),
-    fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI(0),
-    fHistAsMcSecondaryPtLambdaFromSigma(0),
-    fHistAsMcSecondaryPtLambdaFromSigmaMI(0),
-    fHistAsMcSecondaryPtAntiLambdaFromSigma(0),
-    fHistAsMcSecondaryPtAntiLambdaFromSigmaMI(0)
-    
-{
-  // Constructor
-  // Define output slots only here
-  // Output slot #1 writes into a TList container
-  DefineOutput(1, TList::Class());
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskPerformanceStrange::UserCreateOutputObjects() 
-{
-  // Events selection and trigger
-  fPhysTrigSel =  new AliPhysicsSelection();
-
-  // Create histograms
-  fListHist = new TList();
-  //AliLog::SetGlobalLogLevel(AliLog::kError);
-
-  // Bo: tbd: condition before allocation (i.e. if (!fHistMCMultiplicityPrimary){...} for each histo...
-
-
-
-  //***************
-  // MC histograms
-  //***************
-  // Primary Vertex:
-  fHistMCPrimaryVertexX          = new TH1F("h1MCPrimaryVertexX", "MC Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
-  fListHist->Add(fHistMCPrimaryVertexX);
-
-  fHistMCPrimaryVertexY          = new TH1F("h1MCPrimaryVertexY", "MC Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
-  fListHist->Add(fHistMCPrimaryVertexY);
-
-  fHistMCPrimaryVertexZ          = new TH1F("h1MCPrimaryVertexZ", "MC Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
-  fListHist->Add(fHistMCPrimaryVertexZ);
-  
-  // Multiplicity
-  fHistMCMultiplicityPrimary           = new TH1F("h1MCMultiplicityPrimary", "MC Primary Particles;NPrimary;Count", 201, -0.5, 200.5);
-  fListHist->Add(fHistMCMultiplicityPrimary);
-
-  fHistMCMultiplicityTracks            = new TH1F("h1MCMultiplicityTracks", "MC Tracks;Ntracks;Count", 201, -0.5, 200.5);
-  fListHist->Add(fHistMCMultiplicityTracks);
-
-  // Production Radius of non-primary particles:
-  fHistMCtracksProdRadiusK0s           = new TH2F("h2MCtracksProdRadiusK0s","Non-primary MC K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistMCtracksProdRadiusK0s);
-
-  fHistMCtracksProdRadiusLambda        = new TH2F("h2MCtracksProdRadiusLambda","Non-primary MC #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistMCtracksProdRadiusLambda);
-
-  fHistMCtracksProdRadiusAntiLambda    = new TH2F("h2MCtracksProdRadiusAntiLambda","Non-primary MC #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistMCtracksProdRadiusAntiLambda);
-
-  // Decay Radius of non-primary particles:
-  fHistMCtracksDecayRadiusK0s          = new TH1F("h1MCtracksDecayRadiusK0s","Non-primary MC K^{0} Decay Radius;r (cm)",101,-1,100);
-  fListHist->Add(fHistMCtracksDecayRadiusK0s);
-
-  fHistMCtracksDecayRadiusLambda       = new TH1F("h1MCtracksDecayRadiusLambda","Non-primary MC #Lambda^{0} Decay Radius;r (cm)",101,-1,100);
-  fListHist->Add(fHistMCtracksDecayRadiusLambda);
-
-  fHistMCtracksDecayRadiusAntiLambda   = new TH1F("h1MCtracksDecayRadiusAntiLambda","Non-primary #bar{#Lambda}^{0} Decay Radius;r (cm)",100,1,101);
-  fListHist->Add(fHistMCtracksDecayRadiusAntiLambda);
-
-  // Pt Distribution of non-primary particles:
-  fHistMCPtAllK0s                      = new TH1F("h1MCPtAllK0s", "Non-primary MC K^{0};p_{t} (GeV/c);Counts",200,0,10);
-  fListHist->Add(fHistMCPtAllK0s);
-
-  fHistMCPtAllLambda                   = new TH1F("h1MCPtAllLambda", "Non-primary MC #Lambda^{0};p_{t} (GeV/c);Counts",200,0,10);
-  fListHist->Add(fHistMCPtAllLambda);
-
-  fHistMCPtAllAntiLambda               = new TH1F("h1MCPtAllAntiLambda", "Non-primary MC #bar{#Lambda}^{0};p_{t} (GeV/c);Counts",200,0,10);
-  fListHist->Add(fHistMCPtAllAntiLambda);
-
-  // Production Radius
-  fHistMCProdRadiusK0s                 = new TH1F("h1MCProdRadiusK0s", "MC K^{0} Production Radius;r (cm);Count", 400, -2, 2);
-  fListHist->Add(fHistMCProdRadiusK0s);
-
-  fHistMCProdRadiusLambda              = new TH1F("h1MCProdRadiusLambda", "MC #Lambda^{0} Production Radius;r (cm);Count", 400, -2, 2);
-  fListHist->Add(fHistMCProdRadiusLambda);
-
-   fHistMCProdRadiusAntiLambda         = new TH1F("h1MCProdRadiusAntiLambda", "MC #bar{#Lambda}^{0} Production Radius;r (cm);Count", 400, -2, 2);
-  fListHist->Add(fHistMCProdRadiusAntiLambda);
-
-
-  // Pt and rapidity distribution:
-  fHistMCPtK0s               = new TH1F("h1MCPtK0s", "K^{0};p_{t} (GeV/c)",200,0,10);
-  fListHist->Add(fHistMCPtK0s);
-
-  fHistMCPtLambda            = new TH1F("h1MCPtLambda", "#Lambda^{0};p_{t} (GeV/c)",200,0,10);
-  fListHist->Add(fHistMCPtLambda);
-
-  fHistMCPtAntiLambda        = new TH1F("h1MCPtAntiLambda", "#bar{#Lambda}^{0};p_{t} (GeV/c)",200,0,10);
-  fListHist->Add(fHistMCPtAntiLambda);
-
-  // Pt distribution of Lambda coming from Sigma decay
-  fHistMCPtLambdaFromSigma      = new TH1F("h1MCPtLambdaFromSigma", "#Lambda^{0};p_{t} (GeV/c)",200,0,10);
-  fListHist->Add(fHistMCPtLambdaFromSigma);
-
-  fHistMCPtAntiLambdaFromSigma  = new TH1F("h1MCPtAntiLambdaFromSigma", "#Lambda^{0};p_{t} (GeV/c)",200,0,10);
-  fListHist->Add(fHistMCPtAntiLambdaFromSigma);
-  // Multiple reconstruction studies
-  fHistNTimesRecK0s             = new TH1F("h1NTimesRecK0s","number of times a K0s is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecK0s);
-  fHistNTimesRecK0sMI           = new TH1F("h1NTimesRecK0sMI","number of times a K0s MI is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecK0sMI);
-
-  fHistNTimesRecLambda          = new TH1F("h1NTimesRecLambda","number of times a Lambda is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecLambda);
-  fHistNTimesRecLambdaMI        = new TH1F("h1NTimesRecLambdaMI","number of times a Lambda MI is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecLambdaMI);
-
-  fHistNTimesRecAntiLambda      = new TH1F("h1NTimesRecAntiLambda","number of times an AntiLambda is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecAntiLambda);
-  fHistNTimesRecAntiLambdaMI    = new TH1F("h1NTimesRecAntiLambdaMI","number of times an AntiLambda  MI is reconstructed in -1<y<1;number of times;counts",500,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecAntiLambdaMI);
-
-  fHistNTimesRecK0sVsPt         = new TH2F("h2NTimesRecK0sVsPt","NTimes versus Pt, K^{0} in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecK0sVsPt);
-  fHistNTimesRecK0sVsPtMI       = new TH2F("h2NTimesRecK0sVsPtMI","NTimes versus Pt, K^{0}, on-the-fly finder, in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecK0sVsPtMI);
-
-  fHistNTimesRecLambdaVsPt      = new TH2F("h2NTimesRecLambdaVsPt","NTimes versus Pt, #Lambda^{0} in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecLambdaVsPt);
-  fHistNTimesRecLambdaVsPtMI    = new TH2F("h2NTimesRecLambdaVsPtMI","NTimes versus Pt, #Lambda^{0} on-the-fly finder in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecLambdaVsPtMI);
-
-  fHistNTimesRecAntiLambdaVsPt  = new TH2F("h2NTimesRecAntiLambdaVsPt","NTimes versus Pt, #bar{#Lambda}^{0} in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecAntiLambdaVsPt);
-  fHistNTimesRecAntiLambdaVsPtMI= new TH2F("h2NTimesRecAntiLambdaVsPtMI","NTimes versus Pt, #bar{#Lambda}^{0}, on-the-fly finder in -1<y<1;p_{t} (GeV/c);number of times",75,0,15,5,-0.5,4.5);
-  fListHist->Add(fHistNTimesRecAntiLambdaVsPtMI);
-
-  
-
-  //***********************************
-  // Reconstructed particles histograms
-  //***********************************
-
-  // multiplicity
-  fHistTrackPerEvent           = new TH1F("h1TrackPerEvent", "Tracks per event;Number of Tracks;Number of Events",50,0,50);
-  fListHist->Add(fHistTrackPerEvent);
-
-  fHistMCDaughterTrack         = new TH1F("h1MCDaughterTrack","Distribution of mc id for daughters;id tags;Counts",15,0,15);
-  fListHist->Add(fHistMCDaughterTrack);
-
-  // Primary Vertex:
-  fHistPrimaryVertexX          = new TH1F("h1PrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
-  fListHist->Add(fHistPrimaryVertexX);
-
-  fHistPrimaryVertexY          = new TH1F("h1PrimaryVertexY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
-  fListHist->Add(fHistPrimaryVertexY);
-
-  fHistPrimaryVertexZ          = new TH1F("h1PrimaryVertexZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
-  fListHist->Add(fHistPrimaryVertexZ);
-
-  // Primary Vertex in events with V0 candidates:
-  fHistPrimaryVertexPosXV0events       = new TH1F("h1PrimaryVertexPosXV0events", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
-  fListHist->Add(fHistPrimaryVertexPosXV0events);
-  fHistPrimaryVertexPosYV0events       = new TH1F("h1PrimaryVertexPosYV0events", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
-  fListHist->Add(fHistPrimaryVertexPosYV0events);
-  fHistPrimaryVertexPosZV0events       = new TH1F("h1PrimaryVertexPosZV0events", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20.0,20.0);
-  fListHist->Add(fHistPrimaryVertexPosZV0events);
-
-  // Cut checks:
-  fHistDcaPosToPrimVertex      = new TH2F("h2DcaPosToPrimVertex", "Positive V0 daughter;dca(cm);Status",500,0,5,2,-0.5,1.5);
-  fListHist->Add(fHistDcaPosToPrimVertex);
-
-  fHistDcaNegToPrimVertex      = new TH2F("h2DcaNegToPrimVertex", "Negative V0 daughter;dca(cm);Status",500,0,5,2,-0.5,1.5);
-  fListHist->Add(fHistDcaNegToPrimVertex);
-
-  fHistDcaPosToPrimVertexZoom  = new TH2F("h2DcaPosToPrimVertexZoom", "Positive V0 daughter;dca(cm);Status",100,0,0.1,2,-0.5,1.5);
-  fListHist->Add(fHistDcaPosToPrimVertexZoom);
-
-  fHistDcaNegToPrimVertexZoom  = new TH2F("h2DcaNegToPrimVertexZoom", "Negative V0 daughter;dca(cm);Status",100,0,0.1,2,-0.5,1.5);
-  fListHist->Add(fHistDcaNegToPrimVertexZoom);
-
-  fHistRadiusV0                = new TH2F("h2RadiusV0", "Radius;Radius(cm);Status",1200,0,120,2,-0.5,1.5);
-  fListHist->Add(fHistRadiusV0);
-
-  fHistDecayLengthV0           = new TH2F("h2DecayLengthV0", "V0s decay Length;decay length(cm);Status", 240, 0, 120,2,-0.5,1.5);
-  fListHist->Add(fHistDecayLengthV0);
-
-  fHistDcaV0Daughters          = new TH2F("h2DcaV0Daughters", "DCA between daughters;dca(cm);Status", 160, 0, 4,2,-0.5,1.5);
-  fListHist->Add(fHistDcaV0Daughters);
-
-  fHistChi2                    = new TH2F("h2Chi2", "V0s chi2;chi2;Status", 33, 0, 33,2,-0.5,1.5);
-  fListHist->Add(fHistChi2);
-
-  fHistCosPointAngle           = new TH2F("h2CosPointAngle", "Cosine of V0's pointing angle", 100,0,1,2,-0.5,1.5);
-  fListHist->Add(fHistCosPointAngle);
-
-  fHistCosPointAngleZoom       = new TH2F("h2CosPointAngleZoom", "Cosine of V0's pointing angle", 100,0.9,1,2,-0.5,1.5);
-  fListHist->Add(fHistCosPointAngleZoom);
-
-  fHistProdRadius              = new TH2F("h2ProdRadius", "Production position;x (cm);y (cm)", 100,-50,50,100,-50,50);
-  fListHist->Add(fHistProdRadius);
-
-  fHistProdRadiusMI            = new TH2F("h2ProdRadiusMI", "Production position, V0s MI;x (cm);y (cm)", 100,-50,50,100,-50,50);
-  fListHist->Add(fHistProdRadiusMI);
-
-  // V0 Multiplicity
-  if (!fHistV0Multiplicity) {
-    if (fCollidingSystems)
-      fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of Offline V0s;Events", 200, 0, 40000);
-    else
-      fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of Offline V0s;Events", 10, 0, 10); 
-    fListHist->Add(fHistV0Multiplicity);
-  }
-
-  if (!fHistV0MultiplicityMI) {
-    if (fCollidingSystems)
-      fHistV0MultiplicityMI = new TH1F("fHistV0MultiplicityMI", "Multiplicity distribution;Number of On-the-fly V0s;Events", 200, 0, 40000);
-    else
-      fHistV0MultiplicityMI = new TH1F("fHistV0MultiplicityMI", "Multiplicity distribution;Number of On-the-fly V0s;Events", 10, 0, 10); 
-    fListHist->Add(fHistV0MultiplicityMI);
-  }
-
-  // AliKF Chi2
-  fHistChi2KFBeforeCutK0s               = new TH2F("h1Chi2KFBeforeCutK0s", "K^{0}  candidates;#Chi^{2});Counts", 250, 0, 50, 2,-0.5,1.5);
-  fListHist->Add(fHistChi2KFBeforeCutK0s);
-  fHistChi2KFBeforeCutLambda            = new TH2F("h1Chi2KFBeforeCutLambda", "#Lambda^{0}  candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
-  fListHist->Add(fHistChi2KFBeforeCutLambda);
-  fHistChi2KFBeforeCutAntiLambda        = new TH2F("h1Chi2KFBeforeCutAntiLambda", "#bar{#Lambda}^{0}  candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
-  fListHist->Add(fHistChi2KFBeforeCutAntiLambda);
-
-  fHistChi2KFAfterCutK0s               = new TH2F("h1Chi2KFAfterCutK0s", "K^{0}  candidates;#Chi^{2});Counts", 250, 0, 50, 2,-0.5,1.5);
-  fListHist->Add(fHistChi2KFAfterCutK0s);
-  fHistChi2KFAfterCutLambda            = new TH2F("h1Chi2KFAfterCutLambda", "#Lambda^{0}  candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
-  fListHist->Add(fHistChi2KFAfterCutLambda);
-  fHistChi2KFAfterCutAntiLambda        = new TH2F("h1Chi2KFAfterCutAntiLambda", "#bar{#Lambda}^{0} candidates;#Chi^{2};Counts", 250, 0, 50, 2,-0.5,1.5);
-  fListHist->Add(fHistChi2KFAfterCutAntiLambda);
-
-  // Mass:
-  fHistMassK0                   = new TH1F("h1MassK0", "K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
-  fListHist->Add(fHistMassK0);
-  fHistMassK0MI                 = new TH1F("h1MassK0MI", "K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
-  fListHist->Add(fHistMassK0MI);
-
-  fHistMassLambda               = new TH1F("h1MassLambda", "#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistMassLambda);
-  fHistMassLambdaMI             = new TH1F("h1MassLambdaMI", "#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistMassLambdaMI);
-
-  fHistMassAntiLambda           = new TH1F("h1MassAntiLambda", "#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistMassAntiLambda);
-  fHistMassAntiLambdaMI         = new TH1F("h1MassAntiLambdaMI", "#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistMassAntiLambdaMI);
-
-  // invariant mass vs radius
-  const Double_t radius[10] = {0.0,2.5,2.9,3.9,7.6,15.0,23.9,37.8,42.8,100.0};
-  Int_t lNbinRadius        = 9;
-  Int_t lNbinInvMassLambda = 300;
-
-  fHistMassVsRadiusK0           = new TH2F("h2MassVsRadiusK0", "K^{0} candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 200, 0.4, 0.6);
-  fListHist->Add(fHistMassVsRadiusK0);
-
-  fHistMassVsRadiusK0MI         = new TH2F("h2MassVsRadiusK0MI", "K^{0} MI candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 200, 0.4, 0.6);
-  fListHist->Add(fHistMassVsRadiusK0MI);
-  
-  fHistMassVsRadiusLambda       = new TH2F("h2MassVsRadiusLambda", "#Lambda candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
-  fListHist->Add(fHistMassVsRadiusLambda);
-
-  fHistMassVsRadiusLambdaMI     = new TH2F("h2MassVsRadiusLambdaMI", "#Lambda MI candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
-  fListHist->Add(fHistMassVsRadiusLambdaMI);
-
-  fHistMassVsRadiusAntiLambda   = new TH2F("h2MassVsRadiusAntiLambda", "#bar{#Lambda} candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
-  fListHist->Add(fHistMassVsRadiusAntiLambda);
-
-  fHistMassVsRadiusAntiLambdaMI = new TH2F("h2MassVsRadiusAntiLambdaMI", "#bar{#Lambda} candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius, 140, 1.06, 1.2);
-  fListHist->Add(fHistMassVsRadiusAntiLambdaMI);
-
-  // Pt Vs Mass
-  fHistPtVsMassK0               = new TH2F("h2PtVsMassK0","K^{0} candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,200,0,10);
-  fListHist->Add(fHistPtVsMassK0);
-  fHistPtVsMassK0MI             = new TH2F("h2PtVsMassK0MI","K^{0} MIcandidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,200,0,10);
-  fListHist->Add(fHistPtVsMassK0MI);
-
-  fHistPtVsMassLambda           = new TH2F("h2PtVsMassLambda","#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,200,0,10);
-  fListHist->Add(fHistPtVsMassLambda);
-  fHistPtVsMassLambdaMI         = new TH2F("h2PtVsMassLambdaMI","#Lambda^{0} candidates;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,200,0,10);
-  fListHist->Add(fHistPtVsMassLambdaMI);
-
-  fHistPtVsMassAntiLambda       = new TH2F("h2PtVsMassAntiLambda","#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,200,0,10);
-  fListHist->Add(fHistPtVsMassAntiLambda);
-  fHistPtVsMassAntiLambdaMI     = new TH2F("h2PtVsMassAntiLambdaMI","#bar{#Lambda}^{0} candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,200,0,10);
-  fListHist->Add(fHistPtVsMassAntiLambdaMI);
-
-
-  fHistArmenterosPodolanski     = new TH2F("h2ArmenterosPodolanski","Armenteros-Podolanski phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
-  fHistArmenterosPodolanskiMI   = new TH2F("h2ArmenterosPodolanskiMI","Armenteros-Podolanski phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
-
-
-  //PID
-  fHistNsigmaPosPionAntiLambda   = new TH1F("h1NsigmaPosPionAntiLambda", "Positive daughter of Antilambda;NsigmaPion;Counts",25,0,5);
-  fListHist->Add(fHistNsigmaPosPionAntiLambda);
-
-  fHistNsigmaNegProtonAntiLambda = new TH1F("h1NsigmaNegProtonAntiLambda", "Negative daughter of Antilambda;NsigmaProton;Counts",25,0,5);
-  fListHist->Add(fHistNsigmaNegProtonAntiLambda);
-  
-  fHistNsigmaPosProtonLambda     = new TH1F("h1NsigmaPosProtonLambda", "Positive daughter of Lambda;NsigmaProton;Counts",25,0,5); 
-  fListHist->Add(fHistNsigmaPosProtonLambda);
-  
-  fHistNsigmaNegPionLambda       = new TH1F("h1NsigmaNegPionLambda", "Negative daughter of Lambda;NsigmaPion;Counts",25,0,5);
-  fListHist->Add(fHistNsigmaNegPionLambda);
-  
-  fHistNsigmaPosPionK0           = new TH1F("h1NsigmaPosPionK0", "Positive daughter of K0s;NsigmaPion;Counts",25,0,5);
-  fListHist->Add(fHistNsigmaPosPionK0);
-  
-  fHistNsigmaNegPionK0           = new TH1F("h1NsigmaNegPionK0", "Negative daughter of K0s;NsigmaPion;Counts",25,0,5);
-  fListHist->Add(fHistNsigmaNegPionK0);
-
-
-  //********************************
-  // Associated particles histograms
-  //********************************
-
-  // Rap distribution
-  fHistAsMcRapK0                = new TH1F("h1AsMcRapK0", "K^{0} associated;eta;Counts", 60, -1.5, 1.5);
-  fListHist->Add(fHistAsMcRapK0);
-  fHistAsMcRapK0MI              = new TH1F("h1AsMcRapK0MI", "K^{0} associated;eta;Counts", 60, -1.5, 1.5);
-  fListHist->Add(fHistAsMcRapK0MI);
-
-  fHistAsMcRapLambda            = new TH1F("h1AsMcRapLambda", "#Lambda^{0} associated;eta;Counts", 60, -1.5, 1.5);
-  fListHist->Add(fHistAsMcRapLambda);
-  fHistAsMcRapLambdaMI          = new TH1F("h1AsMcRapLambdaMI", "#Lambda^{0} associated;eta;Counts", 60, -1.5, 1.5);
-  fListHist->Add(fHistAsMcRapLambdaMI);
-
-  fHistAsMcRapAntiLambda        = new TH1F("h1AsMcRapAntiLambda", "#bar{#Lambda}^{0} associated;eta;Counts", 60, -1.5, 1.5);
-  fListHist->Add(fHistAsMcRapAntiLambda);
-  fHistAsMcRapAntiLambdaMI      = new TH1F("h1AsMcRapAntiLambdaMI", "#bar{#Lambda}^{0} associated;eta;Counts", 60, -1.5, 1.5);
-  fListHist->Add(fHistAsMcRapAntiLambdaMI);
-
-
-  //Pt distribution
-  fHistAsMcPtK0                = new TH1F("h1AsMcPtK0", "K^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
-  fListHist->Add(fHistAsMcPtK0);
-  fHistAsMcPtK0MI              = new TH1F("h1AsMcPtK0MI", "K^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
-  fListHist->Add(fHistAsMcPtK0MI);
-
-  fHistAsMcPtLambda            = new TH1F("h1AsMcPtLambda", "#Lambda^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
-  fListHist->Add(fHistAsMcPtLambda);
-  fHistAsMcPtLambdaMI          = new TH1F("h1AsMcPtLambdaMI", "#Lambda^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
-  fListHist->Add(fHistAsMcPtLambdaMI);
-
-  fHistAsMcPtAntiLambda        = new TH1F("h1AsMcPtAntiLambda", "#bar{#Lambda}^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
-  fListHist->Add(fHistAsMcPtAntiLambda);
-  fHistAsMcPtAntiLambdaMI      = new TH1F("h1AsMcPtAntiLambdaMI", "#bar{#Lambda}^{0} associated;p_{t} (GeV/c);Counts", 200, 0, 10);
-  fListHist->Add(fHistAsMcPtAntiLambdaMI);
-
-  fHistAsMcPtZoomK0            = new TH1F("h1AsMcPtZoomK0", "K^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
-  fListHist->Add(fHistAsMcPtZoomK0);
-  fHistAsMcPtZoomK0MI          = new TH1F("h1AsMcPtZoomK0MI", "K^{0} MI candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
-  fListHist->Add(fHistAsMcPtZoomK0MI);
-
-  fHistAsMcPtZoomLambda        = new TH1F("h1AsMcPtZoomLambda", "#Lambda^{0} candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
-  fListHist->Add(fHistAsMcPtZoomLambda);
-  fHistAsMcPtZoomLambdaMI      = new TH1F("h1AsMcPtZoomLambdaMI", "#Lambda^{0} MI candidates in -1 <y<1;p_{t} (GeV/c);Counts",20,0,1);
-  fListHist->Add(fHistAsMcPtZoomLambdaMI);
-
-
-  // Radius distribution
-  fHistAsMcProdRadiusK0               = new TH1F("h1AsMcProdRadiusK0", "K^{0} associated;r (cm);Counts", 500, 0, 100);
-  fListHist->Add(fHistAsMcProdRadiusK0);
-  fHistAsMcProdRadiusK0MI             = new TH1F("h1AsMcProdRadiusK0MI", "K^{0} associated;r (cm);Counts", 500, 0, 100);
-  fListHist->Add(fHistAsMcProdRadiusK0MI);
-
-  fHistAsMcProdRadiusLambda           = new TH1F("h1AsMcProdRadiusLambda", "#Lambda^{0} associated;r (cm);Counts", 500, 0, 100);
-  fListHist->Add(fHistAsMcProdRadiusLambda);
-  fHistAsMcProdRadiusLambdaMI         = new TH1F("h1AsMcProdRadiusLambdaMI", "#Lambda^{0} associated;r (cm);Counts", 500, 0, 100);
-  fListHist->Add(fHistAsMcProdRadiusLambdaMI);
-
-  fHistAsMcProdRadiusAntiLambda       = new TH1F("h1AsMcProdRadiusAntiLambda", "#bar{#Lambda}^{0} associated;r (cm);Counts", 500, 0, 100);
-  fListHist->Add(fHistAsMcProdRadiusAntiLambda);
-  fHistAsMcProdRadiusAntiLambdaMI     = new TH1F("h1AsMcProdRadiusAntiLambdaMI", "#bar{#Lambda}^{0} associated;r (cm);Counts", 500, 0, 100);
-  fListHist->Add(fHistAsMcProdRadiusAntiLambdaMI);
-
-  fHistAsMcProdRadiusXvsYK0s          = new TH2F("h2AsMcProdRadiusXvsYK0s","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistAsMcProdRadiusXvsYK0s);
-  fHistAsMcProdRadiusXvsYK0sMI        = new TH2F("h2AsMcProdRadiusXvsYK0sMI","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistAsMcProdRadiusXvsYK0sMI);
-
-  fHistAsMcProdRadiusXvsYLambda       = new TH2F("h2AsMcProdRadiusXvsYLambda","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistAsMcProdRadiusXvsYLambda);
-  fHistAsMcProdRadiusXvsYLambdaMI     = new TH2F("h2AsMcProdRadiusXvsYLambdaMI","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistAsMcProdRadiusXvsYLambdaMI);
-
-  fHistAsMcProdRadiusXvsYAntiLambda   = new TH2F("h2AsMcProdRadiusXvsYAntiLambda","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistAsMcProdRadiusXvsYAntiLambda);
-  fHistAsMcProdRadiusXvsYAntiLambdaMI = new TH2F("h2AsMcProdRadiusXvsYAntiLambdaMI","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-50,50,200,-50,50);
-  fListHist->Add(fHistAsMcProdRadiusXvsYAntiLambdaMI);
-
-
-
-  // Mass
-  fHistPidMcMassK0             = new TH1F("h1PidMcMassK0", "K^{0} MC PId checked;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
-  fListHist->Add(fHistPidMcMassK0);
-  fHistPidMcMassK0MI           = new TH1F("h1PidMcMassK0MI", "K^{0} MC PId checked;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
-  fListHist->Add(fHistPidMcMassK0MI);
-
-  fHistPidMcMassLambda         = new TH1F("h1PidMcMassLambda", "#Lambda^{0} MC PId checked;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistPidMcMassLambda);
-  fHistPidMcMassLambdaMI       = new TH1F("h1PidMcMassLambdaMI", "#Lambda^{0} MC PId checked;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistPidMcMassLambdaMI);
-  
-  fHistPidMcMassAntiLambda     = new TH1F("h1PidMcMassAntiLambda", "#bar{#Lambda}^{0} MC PId checked;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistPidMcMassAntiLambda);
-  fHistPidMcMassAntiLambdaMI   = new TH1F("h1PidMcMassAntiLambdaMI", "#bar{#Lambda}^{0} MC PId checked;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistPidMcMassAntiLambdaMI);
-
-  fHistAsMcMassK0              = new TH1F("h1AsMcMassK0", "K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
-  fListHist->Add(fHistAsMcMassK0);
-  fHistAsMcMassK0MI            = new TH1F("h1AsMcMassK0MI", "K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
-  fListHist->Add(fHistAsMcMassK0MI);
-  
-  fHistAsMcMassLambda          = new TH1F("h1AsMcMassLambda", "#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistAsMcMassLambda);
-  fHistAsMcMassLambdaMI        = new TH1F("h1AsMcMassLambdaMI", "#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistAsMcMassLambdaMI);
-
-  fHistAsMcMassAntiLambda      = new TH1F("h1AsMcMassAntiLambda", "#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistAsMcMassAntiLambda);
-  fHistAsMcMassAntiLambdaMI    = new TH1F("h1AsMcMassAntiLambdaMI", "#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistAsMcMassAntiLambdaMI);
-
-  //Pt versus Mass
-  fHistAsMcPtVsMassK0               = new TH2F("h2AsMcPtVsMassK0","K^{0} associated;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,100,0,10);
-  fListHist->Add(fHistAsMcPtVsMassK0);
-  fHistAsMcPtVsMassK0MI             = new TH2F("h2AsMcPtVsMassK0MI","K^{0} MIassociated;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,100,0,10);
-  fListHist->Add(fHistAsMcPtVsMassK0MI);
-
-  fHistAsMcPtVsMassLambda           = new TH2F("h2AsMcPtVsMassLambda","#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
-  fListHist->Add(fHistAsMcPtVsMassLambda);
-  fHistAsMcPtVsMassLambdaMI         = new TH2F("h2AsMcPtVsMassLambdaMI","#Lambda^{0} associated;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
-  fListHist->Add(fHistAsMcPtVsMassLambdaMI);
-
-  fHistAsMcPtVsMassAntiLambda       = new TH2F("h2AsMcPtVsMassAntiLambda","#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
-  fListHist->Add(fHistAsMcPtVsMassAntiLambda);
-  fHistAsMcPtVsMassAntiLambdaMI     = new TH2F("h2AsMcPtVsMassAntiLambdaMI","#bar{#Lambda}^{0} associated;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
-  fListHist->Add(fHistAsMcPtVsMassAntiLambdaMI);
-
-
-  // invariant mass vs radius
-  fHistAsMcMassVsRadiusK0             = new TH2F("h2AsMcMassVsRadiusK0", "K^{0} associated;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 500, 0.47, 0.52);
-  fListHist->Add(fHistAsMcMassVsRadiusK0);
-
-  fHistAsMcMassVsRadiusK0MI           = new TH2F("h2AsMcMassVsRadiusK0MI", "K^{0} MI associated;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, 500, 0.47, 0.52);
-  fListHist->Add(fHistAsMcMassVsRadiusK0MI);
-  
-  fHistAsMcMassVsRadiusLambda         = new TH2F("h2AsMcMassVsRadiusLambda", "#Lambda associated;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, lNbinInvMassLambda, 1.10, 1.13);
-  fListHist->Add(fHistAsMcMassVsRadiusLambda);
-
-  fHistAsMcMassVsRadiusLambdaMI       = new TH2F("h2AsMcMassVsRadiusLambdaMI", "#Lambda MI associated;radius (cm);M(p#pi^{-}) (GeV/c^{2})",lNbinRadius,radius, lNbinInvMassLambda, 1.10, 1.13);
-  fListHist->Add(fHistAsMcMassVsRadiusLambdaMI);
-
-  fHistAsMcMassVsRadiusAntiLambda     = new TH2F("h2AsMcMassVsRadiusAntiLambda", "#bar{#Lambda} associated;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius,lNbinInvMassLambda , 1.10, 1.13);
-  fListHist->Add(fHistAsMcMassVsRadiusAntiLambda);
-  
-  fHistAsMcMassVsRadiusAntiLambdaMI   = new TH2F("h2AsMcMassVsRadiusAntiLambdaMI", "#bar{#Lambda} MI associated;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",lNbinRadius,radius,lNbinInvMassLambda , 1.10, 1.13);
-  fListHist->Add(fHistAsMcMassVsRadiusAntiLambdaMI);
-    
-
-  // Position Resolution
-  fHistAsMcResxK0                     = new TH1F("h1AsMcResxK0", "K^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResxK0);
-  fHistAsMcResyK0                     = new TH1F("h1AsMcResyK0", "K^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResyK0);
-  fHistAsMcReszK0                     = new TH1F("h1AsMcReszK0", "K^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszK0);
-  fHistAsMcResrVsRadiusK0             = new TH2F("h2AsMcResrVsRadiusK0", "K^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50., 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResrVsRadiusK0);
-  fHistAsMcReszVsRadiusK0             = new TH2F("h2AsMcReszVsRadiusK0", "K^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszVsRadiusK0);
-
-  fHistAsMcResxK0MI                   = new TH1F("h1AsMcResxK0MI", "K^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResxK0MI);
-  fHistAsMcResyK0MI                   = new TH1F("h1AsMcResyK0MI", "K^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResyK0MI);
-  fHistAsMcReszK0MI                   = new TH1F("h1AsMcReszK0MI", "K^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszK0MI);
-  fHistAsMcResrVsRadiusK0MI           = new TH2F("h2AsMcResrVsRadiusK0MI", "K^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResrVsRadiusK0MI);
-  fHistAsMcReszVsRadiusK0MI           = new TH2F("h2AsMcReszVsRadiusK0MI", "K^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszVsRadiusK0MI);
-
-  fHistAsMcResxLambda                 = new TH1F("h1AsMcResxLambda", "#Lambda^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResxLambda);
-  fHistAsMcResyLambda                 = new TH1F("h1AsMcResyLambda", "#Lambda^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResyLambda);
-  fHistAsMcReszLambda                 = new TH1F("h1AsMcReszLambda", "#Lambda^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszLambda);
-  fHistAsMcResrVsRadiusLambda         = new TH2F("h2AsMcResrVsRadiusLambda", "#Lambda^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50.0, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResrVsRadiusLambda);
-  fHistAsMcReszVsRadiusLambda         = new TH2F("h2AsMcReszVsRadiusLambda", "#Lambda^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszVsRadiusLambda);
-
-  fHistAsMcResxLambdaMI               = new TH1F("h1AsMcResxLambdaMI", "#Lambda^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResxLambdaMI);
-  fHistAsMcResyLambdaMI               = new TH1F("h1AsMcResyLambdaMI", "#Lambda^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResyLambdaMI);
-  fHistAsMcReszLambdaMI               = new TH1F("h1AsMcReszLambdaMI", "#Lambda^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszLambdaMI);
-  fHistAsMcResrVsRadiusLambdaMI       = new TH2F("h2AsMcResrVsRadiusLambdaMI", "#Lambda^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResrVsRadiusLambdaMI);
-  fHistAsMcReszVsRadiusLambdaMI       = new TH2F("h2AsMcReszVsRadiusLambdaMI", "#Lambda^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszVsRadiusLambdaMI);
-
-  fHistAsMcResxAntiLambda             = new TH1F("h1AsMcResxAntiLambda", "#bar{#Lambda}^{0} associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResxAntiLambda);
-  fHistAsMcResyAntiLambda             = new TH1F("h1AsMcResyAntiLambda", "#bar{#Lambda}^{0} associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResyAntiLambda);
-  fHistAsMcReszAntiLambda             = new TH1F("h1AsMcReszAntiLambda", "#bar{#Lambda}^{0} associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszAntiLambda);
-  fHistAsMcResrVsRadiusAntiLambda     = new TH2F("h2AsMcResrVsRadiusAntiLambda", "#bar{#Lambda}^{0} associated;Radius (cm);#Delta r (cm)",200,0.0,50.0, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResrVsRadiusAntiLambda);
-  fHistAsMcReszVsRadiusAntiLambda     = new TH2F("h2AsMcReszVsRadiusAntiLambda", "#bar{#Lambda}^{0} associated;Radius (cm);#Delta z (cm)",200,0.0,50.0, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszVsRadiusAntiLambda);
-
-  fHistAsMcResxAntiLambdaMI           = new TH1F("h1AsMcResxAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta x (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResxAntiLambdaMI);
-  fHistAsMcResyAntiLambdaMI           = new TH1F("h1AsMcResyAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta y (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResyAntiLambdaMI);
-  fHistAsMcReszAntiLambdaMI           = new TH1F("h1AsMcReszAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;#Delta z (cm);Counts", 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszAntiLambdaMI);
-  fHistAsMcResrVsRadiusAntiLambdaMI   = new TH2F("h2AsMcResrVsRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;Radius (cm);#Delta r (cm)",8,radius, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcResrVsRadiusAntiLambdaMI);
-  fHistAsMcReszVsRadiusAntiLambdaMI   = new TH2F("h2AsMcReszVsRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI associated;Radius (cm);#Delta z (cm)",8,radius, 50, -0.25, 0.25);
-  fListHist->Add(fHistAsMcReszVsRadiusAntiLambdaMI);
-
-  // Pt Resolution
-  fHistAsMcResPtK0                   = new TH1F("h1AsMcResPtK0","Pt Resolution K^{0};#Delta Pt;Counts",200,-1,1);
-  fListHist->Add(fHistAsMcResPtK0);
-  fHistAsMcResPtK0MI                 = new TH1F("h1AsMcResPtK0MI","Pt Resolution K^{0} MI;#Delta Pt;Counts",200,-1,1);
-  fListHist->Add(fHistAsMcResPtK0MI);
-  
-  fHistAsMcResPtLambda               = new TH1F("h1AsMcResPtLambda","Pt Resolution #Lambda^{0};#Delta Pt;Counts",200,-1,1);
-  fListHist->Add(fHistAsMcResPtLambda);
-  fHistAsMcResPtLambdaMI             = new TH1F("h1AsMcResPtLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Counts",200,-1,1);
-  fListHist->Add(fHistAsMcResPtLambdaMI);
-
-  fHistAsMcResPtAntiLambda           = new TH1F("h1AsMcResPtAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Counts",200,-1,1);
-  fListHist->Add(fHistAsMcResPtAntiLambda);
-  fHistAsMcResPtAntiLambdaMI         = new TH1F("h1AsMcResPtAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Counts",200,-1,1);
-  fListHist->Add(fHistAsMcResPtAntiLambdaMI);
-
-
-  fHistAsMcResPtVsRapK0              = new TH2F("h2AsMcResPtVsRapK0","Pt Resolution K^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
-  fListHist->Add(fHistAsMcResPtVsRapK0);
-  fHistAsMcResPtVsRapK0MI            = new TH2F("h2AsMcResPtVsRapK0MI","Pt Resolution K^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
-  fListHist->Add(fHistAsMcResPtVsRapK0MI);
-  
-  fHistAsMcResPtVsRapLambda          = new TH2F("h2AsMcResPtVsRapLambda","Pt Resolution #Lambda^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
-  fListHist->Add(fHistAsMcResPtVsRapLambda);
-  fHistAsMcResPtVsRapLambdaMI        = new TH2F("h2AsMcResPtVsRapLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
-  fListHist->Add(fHistAsMcResPtVsRapLambdaMI);
-
-  fHistAsMcResPtVsRapAntiLambda      = new TH2F("h2AsMcResPtVsRapAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Rap",200,-1,1,20,-1,1);
-  fListHist->Add(fHistAsMcResPtVsRapAntiLambda);
-  fHistAsMcResPtVsRapAntiLambdaMI    = new TH2F("h2AsMcResPtVsRapAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Rap",200,-1,1,20,-1,1);
-  fListHist->Add(fHistAsMcResPtVsRapAntiLambdaMI);
-
-
-  fHistAsMcResPtVsPtK0               = new TH2F("h2AsMcResPtVsPtK0","Pt Resolution K^{0};#Delta Pt;Pt",600,-0.15,0.15,200,0,10);
-  fListHist->Add(fHistAsMcResPtVsPtK0);
-  fHistAsMcResPtVsPtK0MI             = new TH2F("h2AsMcResPtVsPtK0MI","Pt Resolution K^{0} MI;#Delta Pt;Pt",600,-0.15,0.15,200,0,10);
-  fListHist->Add(fHistAsMcResPtVsPtK0MI);
-    
-  fHistAsMcResPtVsPtLambda           = new TH2F("h2AsMcResPtVsPtLambda","Pt Resolution #Lambda^{0};#Delta Pt;Pt",600,-0.15,0.15,200,0,10);
-  fListHist->Add(fHistAsMcResPtVsPtLambda);
-  fHistAsMcResPtVsPtLambdaMI         = new TH2F("h2AsMcResPtVsPtLambdaMI","Pt Resolution #Lambda^{0} MI;#Delta Pt;Pt",600,-0.15,0.15,200,0,10);
-  fListHist->Add(fHistAsMcResPtVsPtLambdaMI);
-
-  fHistAsMcResPtVsPtAntiLambda       = new TH2F("h2AsMcResPtVsPtAntiLambda","Pt Resolution #bar{#Lambda}^{0};#Delta Pt;Pt",300,-0.15,0.15,200,0,10);
-  fListHist->Add(fHistAsMcResPtVsPtAntiLambda);
-  fHistAsMcResPtVsPtAntiLambdaMI     = new TH2F("h2AsMcResPtVsPtAntiLambdaMI","Pt Resolution #bar{#Lambda}^{0} MI;#Delta Pt;Pt",300,-0.15,0.15,200,0,10);
-  fListHist->Add(fHistAsMcResPtVsPtAntiLambdaMI);
-
-
-  // pdgcode of mother
-  fHistAsMcMotherPdgCodeK0s           = new TH1F("h1AsMcMotherPdgCodeK0s","Mother of Associated K^{0};mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcMotherPdgCodeK0s);
-  fHistAsMcMotherPdgCodeK0sMI         = new TH1F("h1AsMcMotherPdgCodeK0sMI","Mother of Associated K^{0} MI;mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcMotherPdgCodeK0sMI);
-
-  fHistAsMcMotherPdgCodeLambda        = new TH1F("h1AsMcMotherPdgCodeLambda","Mother of Associated #Lambda^{0};mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcMotherPdgCodeLambda);
-  fHistAsMcMotherPdgCodeLambdaMI      = new TH1F("h1AsMcMotherPdgCodeLambdaMI","Mother of Associated #Lambda^{0} MI;mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcMotherPdgCodeLambdaMI);
-
-  fHistAsMcMotherPdgCodeAntiLambda    = new TH1F("h1AsMcMotherPdgCodeAntiLambda","Mother of Associated #bar{#Lambda}^{0};mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcMotherPdgCodeAntiLambda);
-  fHistAsMcMotherPdgCodeAntiLambdaMI  = new TH1F("h1AsMcMotherPdgCodeAntiLambdaMI","Mother of Associated #bar{Lambda}^{0} MI;mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcMotherPdgCodeAntiLambdaMI);
-
-
-  // Pt distribution Lambda from Sigma
-  fHistAsMcPtLambdaFromSigma          = new TH1F("h1AsMcPtLambdaFromSigma","#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
-  fListHist->Add(fHistAsMcPtLambdaFromSigma);
-  fHistAsMcPtLambdaFromSigmaMI        = new TH1F("h1AsMcPtLambdaFromSigmaMI","#Lambda^{0} MI associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
-  fListHist->Add(fHistAsMcPtLambdaFromSigmaMI);
-
-  fHistAsMcPtAntiLambdaFromSigma      = new TH1F("h1AsMcPtAntiLambdaFromSigma","#bar{#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
-  fListHist->Add(fHistAsMcPtAntiLambdaFromSigma);
-  fHistAsMcPtAntiLambdaFromSigmaMI    = new TH1F("h1AsMcPtAntiLambdaFromSigmaMI","#bar{#Lambda}^{0} MI associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
-  fListHist->Add(fHistAsMcPtAntiLambdaFromSigmaMI);
-
-
-  // Associated secondary particles:
-  // Pt and rapidity distribution
-  fHistAsMcSecondaryPtVsRapK0s          = new TH2F("h2AsMcSecondaryPtVsRapK0s", "K^{0} associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
-  fListHist->Add(fHistAsMcSecondaryPtVsRapK0s);
-  fHistAsMcSecondaryPtVsRapK0sMI        = new TH2F("h2AsMcSecondaryPtVsRapK0sMI", "K^{0} MI associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
-  fListHist->Add(fHistAsMcSecondaryPtVsRapK0sMI);
-
-  fHistAsMcSecondaryPtVsRapLambda       = new TH2F("h2AsMcSecondaryPtVsRapLambda", "#Lambda^{0} associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
-  fListHist->Add(fHistAsMcSecondaryPtVsRapLambda);
-  fHistAsMcSecondaryPtVsRapLambdaMI     = new TH2F("h2AsMcSecondaryPtVsRapLambdaMI", "#Lambda^{0} MI associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
-  fListHist->Add(fHistAsMcSecondaryPtVsRapLambdaMI);
-
-  fHistAsMcSecondaryPtVsRapAntiLambda   = new TH2F("h2AsMcSecondaryPtVsRapAntiLambda", "#bar{#Lambda}^{0} associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
-  fListHist->Add(fHistAsMcSecondaryPtVsRapAntiLambda);
-  fHistAsMcSecondaryPtVsRapAntiLambdaMI = new TH2F("h2AsMcSecondaryPtVsRapAntiLambdaMI", "#bar{#Lambda}^{0} MI associated secondary;p_{t} (GeV/c);rapidity",200,0,10,30,-1.5,1.5);
-  fListHist->Add(fHistAsMcSecondaryPtVsRapAntiLambdaMI);
-
-  // Production radius
-  fHistAsMcSecondaryProdRadiusK0s              = new TH1F("h1AsMcSecondaryProdRadiusK0s", "K^{0} Production Radius;r (cm);Count", 170, -2, 15);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusK0s);
-  fHistAsMcSecondaryProdRadiusK0sMI            = new TH1F("h1AsMcSecondaryProdRadiusK0sMI", "K^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusK0sMI);
-
-  fHistAsMcSecondaryProdRadiusLambda           = new TH1F("h1AsMcSecondaryProdRadiusLambda", "#Lambda^{0} Production Radius;r (cm);Count", 170, -2, 15);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusLambda);
-  fHistAsMcSecondaryProdRadiusLambdaMI         = new TH1F("h1AsMcSecondaryProdRadiusLambdaMI", "#Lambda^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusLambdaMI);
-
-  fHistAsMcSecondaryProdRadiusAntiLambda       = new TH1F("h1AsMcSecondaryProdRadiusAntiLambda", "#bar{#Lambda}^{0} Production Radius;r (cm);Count", 170, -2, 15);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusAntiLambda);  
-  fHistAsMcSecondaryProdRadiusAntiLambdaMI     = new TH1F("h1AsMcSecondaryProdRadiusAntiLambdaMI", "#bar{#Lambda}^{0} MI Production Radius;r (cm);Count", 170, -2, 15);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusAntiLambdaMI);
-
-  fHistAsMcSecondaryProdRadiusXvsYK0s          = new TH2F("h2AsMcSecondaryProdRadiusXvsYK0s","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYK0s);
-  fHistAsMcSecondaryProdRadiusXvsYK0sMI        = new TH2F("h2AsMcSecondaryProdRadiusXvsYK0sMI","Associated Secondary K^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYK0sMI);
-
-  fHistAsMcSecondaryProdRadiusXvsYLambda       = new TH2F("h2AsMcSecondaryProdRadiusXvsYLambda","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYLambda);
-  fHistAsMcSecondaryProdRadiusXvsYLambdaMI     = new TH2F("h2AsMcSecondaryProdRadiusXvsYLambdaMI","Associated Secondary #Lambda^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYLambdaMI);
-
-  fHistAsMcSecondaryProdRadiusXvsYAntiLambda   = new TH2F("h2AsMcSecondaryProdRadiusXvsYAntiLambda","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYAntiLambda);
-  fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI = new TH2F("h2AsMcSecondaryProdRadiusXvsYAntiLambdaMI","Associated Secondary #bar{#Lambda}^{0} Production Radius;x (cm); y (cm)",200,-20,20,200,-20,20);
-  fListHist->Add(fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI);
-
-  fHistAsMcSecondaryMotherPdgCodeK0s           = new TH1F("h1AsMcSecondaryMotherPdgCodeK0s","Mother of Associated Secondary K^{0};mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcSecondaryMotherPdgCodeK0s);
-  fHistAsMcSecondaryMotherPdgCodeK0sMI         = new TH1F("h1AsMcSecondaryMotherPdgCodeK0sMI","Mother of Associated Secondary K^{0} MI;mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcSecondaryMotherPdgCodeK0sMI);
-
-  fHistAsMcSecondaryMotherPdgCodeLambda        = new TH1F("h1AsMcSecondaryMotherPdgCodeLambda","Mother of Associated Secondary #Lambda^{0};mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcSecondaryMotherPdgCodeLambda);
-  fHistAsMcSecondaryMotherPdgCodeLambdaMI      = new TH1F("h1AsMcSecondaryMotherPdgCodeLambdaMI","Mother of Associated Secondary #Lambda^{0} MI;mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcSecondaryMotherPdgCodeLambdaMI);
-
-  fHistAsMcSecondaryMotherPdgCodeAntiLambda    = new TH1F("h1AsMcSecondaryMotherPdgCodeAntiLambda","Mother of Associated Secondary #bar{#Lambda}^{0};mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcSecondaryMotherPdgCodeAntiLambda);
-  fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI  = new TH1F("h1AsMcSecondaryMotherPdgCodeAntiLambdaMI","Mother of Associated Secondary #bar{Lambda}^{0} MI;mother;counts",11,0,11);
-  fListHist->Add(fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI);
-
-  // Pt distribution Lambda from Sigma
-  fHistAsMcSecondaryPtLambdaFromSigma          = new TH1F("h1AsMcSecondaryPtLambdaFromSigma","#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
-  fListHist->Add(fHistAsMcSecondaryPtLambdaFromSigma);
-  fHistAsMcSecondaryPtLambdaFromSigmaMI        = new TH1F("h1AsMcSecondaryPtLambdaFromSigmaMI","#Lambda^{0} MI associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
-  fListHist->Add(fHistAsMcSecondaryPtLambdaFromSigmaMI);
-
-  fHistAsMcSecondaryPtAntiLambdaFromSigma      = new TH1F("h1AsMcSecondaryPtAntiLambdaFromSigma","#bar{#Lambda}^{0} associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
-  fListHist->Add(fHistAsMcSecondaryPtAntiLambdaFromSigma);
-  fHistAsMcSecondaryPtAntiLambdaFromSigmaMI    = new TH1F("h1AsMcSecondaryPtAntiLambdaFromSigmaMI","#bar{#Lambda}^{0} MI associated from Sigma;p_{t} (GeV/c);Count",200,0,10);
-  fListHist->Add(fHistAsMcSecondaryPtAntiLambdaFromSigmaMI);
-
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskPerformanceStrange::UserExec(Option_t *) 
-{
-  // Main loop
-  // Called for each event
-
-  AliStack* stack = NULL;
-  TClonesArray *mcArray = NULL;
-  TArrayF mcPrimaryVtx;
-
-  AliVEvent* lEvent = InputEvent();
-  
-  if (!lEvent) {
-    Printf("ERROR: Event not available");
-    return;
-  }
-
-  //******************
-  // Trigger Selection ! Warning Works only for ESD, add protection in case of AOD loop
-  //******************
-  Bool_t  isEventTriggered = kFALSE;
-  if ( !fAnalysisMC) {
-    //if (!( ((AliESDEvent*)lEvent)->IsTriggerClassFired("CINT1B-ABCE-NOPF-ALL"))) return;    
-    isEventTriggered = fPhysTrigSel->IsCollisionCandidate((AliESDEvent*)lEvent);    
-  } 
-  else {
-    fPhysTrigSel->SetAnalyzeMC(); // Bo: maybe this is not needed (should be done in AliPhysicsSelectionTask)
-    isEventTriggered = fPhysTrigSel->IsCollisionCandidate((AliESDEvent*)lEvent);
-  }
-  
-  if (!isEventTriggered) return;
-
-  //********************
-  // Track Multiplicty
-  //********************
-  fHistTrackPerEvent->Fill(lEvent->GetNumberOfTracks());
-
-  // Remove Events with no tracks
-  if (!(lEvent->GetNumberOfTracks()))  return;
-
-
-  //*************************************
-  // Cut used:
-  //*************************************
-      
-  // Cut Rapidity:
-  Double_t lCutRap  = 0.75;
-
-  // Cut AliKF Chi2 for Reconstructed particles
-  Double_t cutChi2KF  = 1E3;
-
-  // Cut to distinguish between primary and secondary associated particles
-  // Double_t lMaxMcProdRadiusPrimaries = 0.2;
-
-
-
-  //*******************
-  // Access MC:
-  //*******************
-  if (fAnalysisMC) {
-    if(fAnalysisType == "ESD") {
-      AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
-      if (!eventHandler) {
-       //Printf("ERROR: Could not retrieve MC event handler");
-       return;
-      }    
-      AliMCEvent* mcEvent = eventHandler->MCEvent();
-      if (!mcEvent) {
-       //Printf("ERROR: Could not retrieve MC event");
-       return;
-      }    
-      stack = mcEvent->Stack();
-      if (!stack) {
-       //Printf("ERROR: Could not retrieve stack");
-       return;
-      }
-      
-      AliGenEventHeader* mcHeader=mcEvent->GenEventHeader();
-      if(!mcHeader) return;
-      mcHeader->PrimaryVertex(mcPrimaryVtx);
-      
-    }
-    
-    else if(fAnalysisType == "AOD") {
-      
-      // load MC particles
-      mcArray = (TClonesArray*)lEvent->GetList()->FindObject(AliAODMCParticle::StdBranchName());
-      if(!mcArray) {
-       Printf("strange analysis::UserExec: MC particles branch not found!\n");
-       return;
-      }
-      
-      // load MC header
-      AliAODMCHeader *mcHeader = 
-       (AliAODMCHeader*)lEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
-      if(!mcHeader) {
-       Printf("strange analysis::UserExec: MC header branch not found!\n");
-       return;
-      }
-    }
-  }
-
-
-  //**********************************************
-  // MC loop
-  //**********************************************
-
-  Double_t lmcPrimVtxR      = 0;
-
-  Int_t lNbMCPrimary        = 0;
-  Int_t lNbMCPart           = 0;
-
-  Int_t lPdgcodeCurrentPart = 0;
-  Double_t lRapCurrentPart  = 0;
-  Double_t lPtCurrentPart   = 0;
-  
-  Int_t lComeFromSigma      = 0;
-
-  
-  // Production Radius
-  Double_t mcPosX     = 0.0,  mcPosY      = 0.0,  mcPosZ      = 0.0;
-  Double_t mcPosR     = 0.0;
-
-  // Decay Radius
-  Double_t mcDecayPosX = 0, mcDecayPosY = 0, mcDecayPosR = 0;
-
-  // current mc particle 's mother
-  Int_t iCurrentMother  = 0, lPdgCurrentMother    = 0;
-  Bool_t lCurrentMotherIsPrimary;
-
-  // variables for multiple reconstruction studies:
-  Int_t id0           = 0, id1          = 0;
-  //Int_t lLabelTrackN  = 0, lLabelTrackP = 0;
-  //Int_t lPartNMother  = 0, lPartPMother = 0;
-  //Int_t lPartPMotherPDGcode      = 0;
-  Int_t lNtimesReconstructedK0s   = 0, lNtimesReconstructedLambda   = 0, lNtimesReconstructedAntiLambda   = 0;
-  Int_t lNtimesReconstructedK0sMI = 0, lNtimesReconstructedLambdaMI = 0, lNtimesReconstructedAntiLambdaMI = 0;
-
-  //****************************
-  // Start loop over MC particles
-  if (fAnalysisMC) {
-
-    // Primary vertex
-    fHistMCPrimaryVertexX->Fill(mcPrimaryVtx.At(0));
-    fHistMCPrimaryVertexY->Fill(mcPrimaryVtx.At(1));
-    fHistMCPrimaryVertexZ->Fill(mcPrimaryVtx.At(2));
-    
-    lmcPrimVtxR = TMath::Sqrt(mcPrimaryVtx.At(0)*mcPrimaryVtx.At(0)+mcPrimaryVtx.At(1)*mcPrimaryVtx.At(1));
-  
-
-    if(fAnalysisType == "ESD") {
-      
-      lNbMCPrimary = stack->GetNprimary();
-      lNbMCPart    = stack->GetNtrack();
-      
-      fHistMCMultiplicityPrimary->Fill(lNbMCPrimary);
-      fHistMCMultiplicityTracks->Fill(lNbMCPart);
-      
-      
-      for (Int_t iMc = 0; iMc < (stack->GetNtrack()); iMc++) {  
-       TParticle *p0 = stack->Particle(iMc);
-       if (!p0) {
-         //Printf("ERROR: particle with label %d not found in stack (mc loop)", iMc);
-         continue;
-       }
-       lPdgcodeCurrentPart = p0->GetPdgCode();
-       
-       // Keep only K0s, Lambda and AntiLambda:
-       if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) ) continue;
-       
-       lRapCurrentPart   = MyRapidity(p0->Energy(),p0->Pz());
-       //lEtaCurrentPart   = p0->Eta();
-       lPtCurrentPart    = p0->Pt();
-       iCurrentMother    = p0->GetFirstMother();
-       lPdgCurrentMother = stack->Particle(iCurrentMother)->GetPdgCode();
-       
-       mcPosX = p0->Vx();
-       mcPosY = p0->Vy();
-       mcPosZ = p0->Vz();
-       mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
-       
-       id0  = p0->GetDaughter(0);
-       id1  = p0->GetDaughter(1);
-       
-       // Decay Radius and Production Radius
-       if ( id0 <= lNbMCPart && id0 > 0 && id1 <= lNbMCPart && id1 > 0) {
-         TParticle *pDaughter0 = stack->Particle(id0);
-         mcDecayPosX = pDaughter0->Vx();
-         mcDecayPosY = pDaughter0->Vy();
-         mcDecayPosR = TMath::Sqrt(mcDecayPosX*mcDecayPosX+mcDecayPosY*mcDecayPosY);
-       }
-       else  {
-         //Printf("ERROR: particle with label %d and/or %d not found in stack (mc loop)", id0,id1);
-         mcDecayPosR = -1.0;
-       }
-       
-       if (lPdgcodeCurrentPart==310)   {
-         fHistMCtracksProdRadiusK0s->Fill(mcPosX,mcPosY);
-         fHistMCtracksDecayRadiusK0s->Fill(mcDecayPosR);
-         if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllK0s->Fill(lPtCurrentPart);
-       }
-       else if (lPdgcodeCurrentPart==3122)  {
-         fHistMCtracksProdRadiusLambda->Fill(mcPosX,mcPosY);
-         fHistMCtracksDecayRadiusLambda->Fill(mcDecayPosR);
-         if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllLambda->Fill(lPtCurrentPart);
-       }
-       else if (lPdgcodeCurrentPart==-3122) {
-         fHistMCtracksProdRadiusAntiLambda->Fill(mcPosX,mcPosY);
-         fHistMCtracksDecayRadiusAntiLambda->Fill(mcDecayPosR);
-         if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllAntiLambda->Fill(lPtCurrentPart);
-       }
-       
-       if ( ( ( TMath::Abs(lPdgCurrentMother) == 3212)  ||
-              ( TMath::Abs(lPdgCurrentMother) == 3224)  ||
-              ( TMath::Abs(lPdgCurrentMother) == 3214)  ||
-              ( TMath::Abs(lPdgCurrentMother) == 3114) )
-            && ( iCurrentMother <= lNbMCPrimary )
-            ) lComeFromSigma = 1;
-       else lComeFromSigma = 0;
-       
-       //*********************************************
-       // Now keep only primary particles   
-       if ( ( iMc > lNbMCPrimary ) && (!lComeFromSigma) ) continue;
-
-       //********************************************
-       //check if V0 is reconstructed several times  
-     
-       lNtimesReconstructedK0s   = 0; lNtimesReconstructedLambda   = 0; lNtimesReconstructedAntiLambda   = 0;
-       lNtimesReconstructedK0sMI = 0; lNtimesReconstructedLambdaMI = 0; lNtimesReconstructedAntiLambdaMI = 0;
-
-       //for (Int_t jV0 = 0; jV0 < lEvent->GetNumberOfV0s(); jV0++) {
-       
-       //lLabelTrackN  = 0; lLabelTrackP = 0;
-       //lPartNMother  = 0; lPartPMother = 0;
-       
-       //AliESDv0    *vertexESD = ((AliESDEvent*)lEvent)->GetV0(jV0);
-       //if (!vertexESD) continue;
-       
-       //AliESDtrack *trackNESD = ((AliESDEvent*)lEvent)->GetTrack(TMath::Abs(vertexESD->GetNindex()));
-       //lLabelTrackN = (UInt_t)TMath::Abs(trackNESD->GetLabel());
-       //if (lLabelTrackN!=id0 && lLabelTrackN!=id1) continue;
-       
-       //AliESDtrack *trackPESD = ((AliESDEvent*)lEvent)->GetTrack(TMath::Abs(vertexESD->GetPindex()));
-       //lLabelTrackP = (UInt_t)TMath::Abs(trackPESD->GetLabel());
-       //if (lLabelTrackP!=id0 && lLabelTrackP!=id1) continue;
-       
-       //TParticle   *lPartNESD = stack->Particle(lLabelTrackN);
-       //TParticle   *lPartPESD = stack->Particle(lLabelTrackP);
-       //lPartNMother = lPartNESD->GetFirstMother();
-       //lPartPMother = lPartPESD->GetFirstMother();
-       
-       //lPartPMotherPDGcode = stack->Particle(lPartPMother)->GetPdgCode();
-       
-       //switch (vertexESD->GetOnFlyStatus()){
-       
-       //case 0 : 
-       //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0s++;
-       //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambda++;
-       //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambda++;
-       //break;
-       
-       //case 1 :
-       //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0sMI++;
-       //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambdaMI++;
-       //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambdaMI++;
-       //break;
-       
-       //}     
-       //} // end loop over reconstructed V0s inside MC loop
-     
-       if (TMath::Abs(lRapCurrentPart) > lCutRap) continue;
-       if (lPdgcodeCurrentPart==310) {
-         fHistMCProdRadiusK0s->Fill(mcPosR);
-         fHistMCPtK0s->Fill(lPtCurrentPart);
-         fHistNTimesRecK0s->Fill(lNtimesReconstructedK0s);
-         fHistNTimesRecK0sMI->Fill(lNtimesReconstructedK0s);
-         fHistNTimesRecK0sVsPt->Fill(lPtCurrentPart,lNtimesReconstructedK0s);
-         fHistNTimesRecK0sVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedK0sMI);
-       }
-       else if (lPdgcodeCurrentPart==3122) {
-         fHistMCProdRadiusLambda->Fill(mcPosR);
-         fHistMCPtLambda->Fill(lPtCurrentPart);          
-         fHistNTimesRecLambda->Fill(lNtimesReconstructedLambda);
-         fHistNTimesRecLambdaMI->Fill(lNtimesReconstructedLambdaMI);
-         fHistNTimesRecLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedLambda);
-         fHistNTimesRecLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedLambdaMI);
-         if (lComeFromSigma) fHistMCPtLambdaFromSigma->Fill(lPtCurrentPart);
-       }
-       else if (lPdgcodeCurrentPart==-3122) {
-         fHistMCProdRadiusAntiLambda->Fill(mcPosR);
-         fHistMCPtAntiLambda->Fill(lPtCurrentPart);
-         fHistNTimesRecAntiLambda->Fill(lNtimesReconstructedAntiLambda);
-         fHistNTimesRecAntiLambdaMI->Fill(lNtimesReconstructedAntiLambdaMI);
-         fHistNTimesRecAntiLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambda);
-         fHistNTimesRecAntiLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambdaMI);
-         if (lComeFromSigma) fHistMCPtAntiLambdaFromSigma->Fill(lPtCurrentPart);
-       }
-       
-      } // end loop ESD MC
-      
-    } // end ESD condition
-
-    else if(fAnalysisType == "AOD") {
-      lNbMCPart = mcArray->GetEntriesFast();
-      lNbMCPrimary = 0;
-      
-      fHistMCMultiplicityTracks->Fill(lNbMCPart);
-      
-      for (Int_t iMc = 0; iMc < lNbMCPart; iMc++) {  
-       
-       // Primary vertex TO DO !!
-       //
-       
-       AliAODMCParticle *mcAODPart = (AliAODMCParticle*)mcArray->At(iMc);
-       if (!mcAODPart) {
-         //Printf("Strange analysis task (mc loop): particle with label %d not found", iMc);
-         continue;
-       }
-       lPdgcodeCurrentPart = mcAODPart->GetPdgCode();
-       if (mcAODPart->IsPhysicalPrimary()) {lNbMCPrimary = lNbMCPrimary +1;}
-       
-       // Keep only K0s, Lambda and AntiLambda:
-       if ( (lPdgcodeCurrentPart != 310 ) && (lPdgcodeCurrentPart != 3122 ) && (lPdgcodeCurrentPart != -3122 ) ) continue;
-       
-       //lEtaCurrentPart   = mcAODPart->Eta();
-       lRapCurrentPart   = mcAODPart->Y();
-       lPtCurrentPart    = mcAODPart->Pt();
-       iCurrentMother    = mcAODPart->GetMother();
-       lPdgCurrentMother = ((AliAODMCParticle*)mcArray->At(iCurrentMother))->GetPdgCode();
-       lCurrentMotherIsPrimary = ((AliAODMCParticle*)mcArray->At(iCurrentMother))->IsPhysicalPrimary();
-       
-       mcPosX = mcAODPart->Xv();
-       mcPosY = mcAODPart->Yv();
-       mcPosZ = mcAODPart->Zv();
-       mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
-       
-       id0  = mcAODPart->GetDaughter(0);
-       id1  = mcAODPart->GetDaughter(1);
-       
-       // Decay Radius and Production Radius
-       if ( id0 <= lNbMCPart && id0 > 0 && id1 <= lNbMCPart && id1 > 0) {
-         AliAODMCParticle *mcAODDaughter1 = (AliAODMCParticle*)mcArray->At(id1);
-         if (!mcAODPart) {
-           //Printf("Strange analysis task (mc loop): daughter not found");
-           continue;
-         }
-         mcDecayPosX = mcAODDaughter1->Xv();
-         mcDecayPosY = mcAODDaughter1->Yv();
-         mcDecayPosR = TMath::Sqrt(mcDecayPosX*mcDecayPosX+mcDecayPosY*mcDecayPosY);
-       }
-       else  {
-         //Printf("ERROR: particle with label %d and/or %d not found in stack (mc loop)", id0,id1);
-         mcDecayPosR = -1.0;
-       }
-       
-       if (lPdgcodeCurrentPart==310)   {
-         fHistMCtracksProdRadiusK0s->Fill(mcPosX,mcPosY);
-         fHistMCtracksDecayRadiusK0s->Fill(mcDecayPosR);
-         if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllK0s->Fill(lPtCurrentPart);
-       }
-       else if (lPdgcodeCurrentPart==3122)  {
-         fHistMCtracksProdRadiusLambda->Fill(mcPosX,mcPosY);
-         fHistMCtracksDecayRadiusLambda->Fill(mcDecayPosR);
-         if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllLambda->Fill(lPtCurrentPart);
-       }
-       else if (lPdgcodeCurrentPart==-3122) {
-         fHistMCtracksProdRadiusAntiLambda->Fill(mcPosX,mcPosY);
-         fHistMCtracksDecayRadiusAntiLambda->Fill(mcDecayPosR);
-         if (TMath::Abs(lRapCurrentPart) < lCutRap) fHistMCPtAllAntiLambda->Fill(lPtCurrentPart);
-       }
-       
-       if ( ( ( TMath::Abs(lPdgCurrentMother) == 3212)  ||
-              ( TMath::Abs(lPdgCurrentMother) == 3224)  ||
-              ( TMath::Abs(lPdgCurrentMother) == 3214)  ||
-              ( TMath::Abs(lPdgCurrentMother) == 3114) )
-            && (lCurrentMotherIsPrimary)
-            ) lComeFromSigma = 1;
-       else lComeFromSigma = 0;
-      
-       //*********************************************
-        // Now keep only primary particles 
-        
-       // FIX IT !!!!    iMC is not defined !!!! FIX IT also in ESD/AOD loop !!
-       if ( ( iMc > lNbMCPrimary ) && (!lComeFromSigma) ) continue;
-
-       //********************************************
-       // check if V0 is reconstructed several times  
-       
-       //lNtimesReconstructedK0s   = 0; lNtimesReconstructedLambda   = 0; lNtimesReconstructedAntiLambda   = 0;
-        //lNtimesReconstructedK0sMI = 0; lNtimesReconstructedLambdaMI = 0; lNtimesReconstructedAntiLambdaMI = 0;
-           
-        //for (Int_t jV0 = 0; jV0 < lEvent->GetNumberOfV0s(); jV0++) {
-       
-       //lLabelTrackN  = 0; lLabelTrackP = 0;
-       //lPartNMother  = 0; lPartPMother = 0;
-
-       //AliAODv0    *vertexAOD= ((AliAODEvent*)lEvent)->GetV0(jV0);
-       //if (!vertexAOD) continue;
-       //printf("enter!!");
-       //AliVParticle  *trackP  = ((AliVEvent*)lEvent)->GetTrack(vertexAOD->GetPosID());
-       //if (!trackP) continue;
-       //lLabelTrackP = TMath::Abs(trackP->GetLabel());
-       //if (lLabelTrackP!=id0 && lLabelTrackP!=id1) continue;
-       
-       //AliVParticle  *trackN  = ((AliVEvent*)lEvent)->GetTrack(vertexAOD->GetNegID());
-       //if (!trackN) continue;
-       //lLabelTrackN = TMath::Abs(trackN->GetLabel());
-       //if (lLabelTrackN!=id0 && lLabelTrackN!=id1) continue;
-       
-       //AliAODMCParticle *lPartNAOD = (AliAODMCParticle*)mcArray->At(lLabelTrackN);
-       //if (!lPartNAOD) continue;
-       //AliAODMCParticle *lPartPAOD = (AliAODMCParticle*)mcArray->At(lLabelTrackP);
-       //if (!lPartPAOD) continue;
-       
-       //lPartNMother = lPartNAOD->GetMother();
-       //lPartPMother = lPartPAOD->GetMother();
-
-       //lPartPMotherPDGcode = ((AliAODMCParticle*)mcArray->At(lPartPMother))->GetPdgCode();
-       
-       //switch (vertexAOD->GetOnFlyStatus()){
-         
-       //case 0 : 
-         //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0s++;
-         //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambda++;
-         //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambda++;
-         //break;
-         
-       //case 1 :
-         //if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==310) ) lNtimesReconstructedK0sMI++;
-         //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==3122) ) lNtimesReconstructedLambdaMI++;
-         //else if ( (lPartPMother==lPartNMother) && (lPartPMotherPDGcode==-3122) ) lNtimesReconstructedAntiLambdaMI++;
-         //break;
-         
-       ///}    
-      //} // end loop over reconstructed V0s inside MC loop
-    
-       if (TMath::Abs(lRapCurrentPart) > lCutRap) continue;
-       if (lPdgcodeCurrentPart==310) {
-         fHistMCProdRadiusK0s->Fill(mcPosR);
-         fHistMCPtK0s->Fill(lPtCurrentPart);
-         fHistNTimesRecK0s->Fill(lNtimesReconstructedK0s);
-         fHistNTimesRecK0sMI->Fill(lNtimesReconstructedK0s);
-         fHistNTimesRecK0sVsPt->Fill(lPtCurrentPart,lNtimesReconstructedK0s);
-         fHistNTimesRecK0sVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedK0sMI);
-       }
-       else if (lPdgcodeCurrentPart==3122) {
-         fHistMCProdRadiusLambda->Fill(mcPosR);
-         fHistMCPtLambda->Fill(lPtCurrentPart);
-         fHistNTimesRecLambda->Fill(lNtimesReconstructedLambda);
-         fHistNTimesRecLambdaMI->Fill(lNtimesReconstructedLambdaMI);
-         fHistNTimesRecLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedLambda);
-         fHistNTimesRecLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedLambdaMI);
-         if (lComeFromSigma) fHistMCPtLambdaFromSigma->Fill(lPtCurrentPart);
-       }
-       else if (lPdgcodeCurrentPart==-3122) {
-         fHistMCProdRadiusAntiLambda->Fill(mcPosR);
-         fHistMCPtAntiLambda->Fill(lPtCurrentPart);
-         fHistNTimesRecAntiLambda->Fill(lNtimesReconstructedAntiLambda);
-         fHistNTimesRecAntiLambdaMI->Fill(lNtimesReconstructedAntiLambdaMI);
-         fHistNTimesRecAntiLambdaVsPt->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambda);
-         fHistNTimesRecAntiLambdaVsPtMI->Fill(lPtCurrentPart,lNtimesReconstructedAntiLambdaMI);
-         if (lComeFromSigma) fHistMCPtAntiLambdaFromSigma->Fill(lPtCurrentPart);
-       }
-
-      } // end loop over AODMC particles 
-      fHistMCMultiplicityPrimary->Fill(lNbMCPrimary);
-      
-    } // end AOD condition
-
-  } // End Loop over MC condition
-
-  
-
-
-
-  //************************************
-  // ESD or AOD loop 
-  //************************************
-
-  Double_t  lPrimaryVtxPosition[3];
-  Double_t  lPrimaryVtxCov[6];
-  Double_t  lPrimaryVtxChi2 = 999;
-
-  Double_t lMagneticField = 999;
-
-  //Multiplcity:
-  Int_t    nv0sTot= 0, nv0s = 0, nv0sMI = 0;
-  
-  // Variables:
-  Double_t  lV0Position[3];
-  Double_t lDcaPosToPrimVertex = 0;
-  Double_t lDcaNegToPrimVertex = 0;
-  Double_t lDcaV0Daughters     = 0;
-  Double_t lV0cosPointAngle    = 0;
-  Double_t lChi2V0             = 0;
-  Double_t lV0DecayLength      = 0;
-  Double_t lV0Radius           = 0;
-  Double_t lDcaV0ToPrimVertex  = 0;
-  
-  Int_t    lOnFlyStatus        = 0;
-  //Float_t   tdcaPosToPrimVertexXYZ[2], tdcaNegToPrimVertexXYZ[2]; // ..[0] = Impact parameter in XY plane and ..[1] = Impact parameter in Z            
-  //Double_t  tdcaDaughterToPrimVertex[2];                          // ..[0] = Pos and ..[1] = Neg
-
-  
-
-  Double_t lInvMassK0s = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
-  Double_t lPtK0s      = 0, lPtLambda      = 0, lPtAntiLambda      = 0;
-  Double_t lRapK0s     = 0, lRapLambda     = 0, lRapAntiLambda     = 0;
-  Double_t lEtaK0s     = 0, lEtaLambda     = 0, lEtaAntiLambda     = 0;
-  Double_t lAlphaV0      = 0, lPtArmV0       = 0;
-
-  Double_t lV0Eta = 999;
-  Float_t lTPCsignalPos = 0;
-  Float_t lTPCsignalNeg = 0;
-
-  Double_t lMomentumTrackInPos =0;
-  Double_t lMomentumTrackInNeg =0;
-  
-  // to study Associated V0s:
-  Int_t    lIndexTrackPos       = 0, lIndexTrackNeg         = 0;
-  UInt_t   lLabelTrackPos       = 0, lLabelTrackNeg         = 0;
-  Int_t    lCheckPIdK0Short     = 0, lCheckMcK0Short        = 0;
-  Int_t    lCheckPIdLambda      = 0, lCheckMcLambda         = 0;
-  Int_t    lCheckPIdAntiLambda  = 0, lCheckMcAntiLambda     = 0;
-  Int_t    lCheckSecondaryK0s   = 0, lCheckSecondaryLambda  = 0, lCheckSecondaryAntiLambda  = 0;
-  Int_t    lCheckGamma          = 0;
-  Double_t mcPosMotherX         = 0, mcPosMotherY           = 0, mcPosMotherZ  = 0;
-  Double_t mcPosMotherR         = 0;
-  Double_t mcMotherPt           = 0;
-
-  Int_t lIndexPosMother        = 0;
-  Int_t lIndexNegMother        = 0;
-  Int_t lIndexMotherOfMother   = 0;
-  Int_t lPDGCodePosDaughter    = 0;
-  Int_t lPDGCodeNegDaughter    = 0;
-  Int_t lPdgcodeMother         = 0;
-  Int_t lPdgcodeMotherOfMother = 0;
-
-  // Reconstructed position
-  Double_t rcPosXK0s        = 0,  rcPosYK0s        = 0, rcPosZK0s        = 0;
-  Double_t rcPosRK0s        = 0;
-  Double_t rcPosXLambda     = 0,  rcPosYLambda     = 0, rcPosZLambda     = 0;
-  Double_t rcPosRLambda     = 0;
-  Double_t rcPosXAntiLambda = 0,  rcPosYAntiLambda = 0, rcPosZAntiLambda = 0;
-  Double_t rcPosRAntiLambda = 0;
-
-  // Pt resolution
-  Double_t deltaPtK0s  = 0, deltaPtLambda  = 0, deltaPtAntiLambda  = 0;
-
-  // Daughters
-  AliESDtrack  *myTrackPos  = NULL;
-  AliESDtrack  *myTrackNeg  = NULL;
-  AliVParticle *lVPartPos   = NULL;
-  AliVParticle *lVPartNeg   = NULL;
-
-  // Daughters' momentum:
-  Double_t  lMomPos[3] = {999,999,999};
-  Double_t  lMomNeg[3] = {999,999,999};
-
-  // AliKF Chi2 and Armenteros variables
-  Double_t lChi2KFK0s = 0,  lChi2KFLambda = 0,  lChi2KFAntiLambda = 0;
-  Double_t lAlphaV0K0s = 0, lAlphaV0Lambda = 0,  lAlphaV0AntiLambda = 0;
-  Double_t lPtArmV0K0s = 0, lPtArmV0Lambda = 0,  lPtArmV0AntiLambda = 0;
-  Double_t lQlPos   = 0, lQlNeg   = 0;
-
-
-
-  // Bo: please use external methods for these TF1 (no TFormula like this)...
-
-  // PID - Check Parameters depending on the AliRoot version ! Method to be improved !
-  TF1 foPion("foPion", "[0]*([1]*TMath::Power(TMath::Sqrt(1 + (x/0.13957)*(x/0.13957))/(x/0.13957) , [3]) - 1 - TMath::Power(TMath::Sqrt(1 + (x/0.13957)*(x/0.13957))/(x/0.13957) , [3])*TMath::Log([2] + 1/TMath::Power((x/0.13957), [4])))",0.05,20);
-
-  // paramters extracted from calibration....
-  foPion.SetParameters(4.23232575531564326e+00,8.68482806165147636e+00,1.34000000000000005e-05,2.30445734159456084e+00,2.25624744086878559e+00);
-
-  TF1 foProton("foProton", "[0]*([1]*TMath::Power(TMath::Sqrt(1 + (x/0.93827)*(x/0.93827))/(x/0.93827) , [3]) - 1 - TMath::Power(TMath::Sqrt(1 + (x/0.93827)*(x/0.93827))/(x/0.93827) , [3])*TMath::Log([2] + 1/TMath::Power((x/0.93827), [4])))",0.05,20);
-
-  // paramters extracted from calibration....
-  foProton.SetParameters(4.23232575531564326e+00,8.68482806165147636e+00,1.34000000000000005e-05,2.30445734159456084e+00,2.25624744086878559e+00);
-
-
-  Float_t nSigmaPosPion   = 0;
-  Float_t nSigmaNegPion   = 0;
-
-  Float_t nSigmaPosProton = 0;
-  Float_t nSigmaNegProton = 0;
-
-  Float_t cutNSigma = 4.0;
-
-  //*******************************************************
-  // Primary Vertex, magnetic field and Quality tracks cuts
-     
-  AliAODVertex *myPrimaryVertex = NULL;
-  AliESDtrackCuts *myTracksCuts = NULL;
-
-  if(fAnalysisType == "ESD") {   
-
-    // Best Primary Vertex:
-    const AliESDVertex *myBestPrimaryVertex = ((AliESDEvent*)lEvent)->GetPrimaryVertex();
-    if (!myBestPrimaryVertex) return;
-    if (!(myBestPrimaryVertex->GetStatus())) return;
-    //if ( primaryVtx->GetNContributors() <3 ) return;
-    myBestPrimaryVertex->GetXYZ(lPrimaryVtxPosition);
-    myBestPrimaryVertex->GetCovMatrix(lPrimaryVtxCov);
-    lPrimaryVtxChi2 = myBestPrimaryVertex->GetChi2toNDF();
-    
-    myPrimaryVertex = new AliAODVertex(lPrimaryVtxPosition, lPrimaryVtxCov, lPrimaryVtxChi2, NULL, -1, AliAODVertex::kPrimary);
-    if (!myPrimaryVertex) return;
-
-    // TPC Primary Vertex:
-    //const AliESDVertex *myTPCPrimaryVertex = ((AliESDEvent*)lEvent)->GetPrimaryVertexTPC();
-    //if (!myTPCPrimaryVertex) return;
-
-    //const AliESDVertex *mySPDPrimaryVertex = ((AliESDEvent*)lEvent)->GetPrimaryVertexSPD();
-    //if (!mySPDPrimaryVertex) return;
-
-    lMagneticField = ((AliESDEvent*)lEvent)->GetMagneticField();
-
-    myTracksCuts = new AliESDtrackCuts();
-    // max value of diagonal covariance
-    //myTracksCuts->SetMaxCovDiagonalElements(2.0, 2.0, 0.5, 0.5, 2.0);
-    // require TPC refit
-    myTracksCuts->SetRequireTPCRefit(kTRUE);
-    // reject kink daughters
-    //myTracksCuts->SetAcceptKinkDaughters(kFALSE);
-    // minimum number of clusters in TPC
-    myTracksCuts->SetMinNClustersTPC(80);
-    // maximum normalized chi2
-    //myTracksCuts->SetMaxChi2PerClusterTPC(3.5); 
-  }
-  
-  else if(fAnalysisType == "AOD") {
-    printf("enter AOD!!");
-    myPrimaryVertex = ((AliAODEvent*)lEvent)->GetPrimaryVertex();
-    if (!myPrimaryVertex) return;
-    lPrimaryVtxPosition[0] = myPrimaryVertex->GetX();
-    lPrimaryVtxPosition[1] = myPrimaryVertex->GetY();
-    lPrimaryVtxPosition[2] = myPrimaryVertex->GetZ();
-
-    // Tracks cuts FIX IT !
-
-    // FIX it !!!
-    lMagneticField = 999;    
-  }
-
-  fHistPrimaryVertexX->Fill(lPrimaryVtxPosition[0]);
-  fHistPrimaryVertexY->Fill(lPrimaryVtxPosition[1]);
-  fHistPrimaryVertexZ->Fill(lPrimaryVtxPosition[2]);
-  Double_t lrcPrimVtxR = 0;
-  lrcPrimVtxR = TMath::Sqrt(lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]+lPrimaryVtxPosition[0]*lPrimaryVtxPosition[0]); // Bo: this is done with respect to x,y=0,0... to sure it is used anymore;
-
-  AliKFVertex primaryVtxKF( *myPrimaryVertex );
-  AliKFParticle::SetField(lMagneticField);
-
-  
-  //*************************
-  // V0 loop
-      
-  nv0sTot = lEvent->GetNumberOfV0s();
-
-  for (Int_t iV0 = 0; iV0 < nv0sTot; iV0++) {
-    
-    // ALiKF
-    AliKFParticle* negPiKF = NULL;
-    AliKFParticle* posPiKF = NULL;
-    AliKFParticle* posPKF  = NULL;
-    AliKFParticle* negAPKF = NULL;
-
-    lIndexPosMother     = 0; lIndexNegMother     = 0; lIndexMotherOfMother       = 0;
-    lCheckPIdK0Short    = 0; lCheckMcK0Short     = 0; lCheckSecondaryK0s         = 0;
-    lCheckPIdLambda     = 0; lCheckMcLambda      = 0; lCheckSecondaryLambda      = 0;
-    lCheckPIdAntiLambda = 0; lCheckMcAntiLambda  = 0; lCheckSecondaryAntiLambda  = 0;       
-    lComeFromSigma      = -1;
-    
-    
-    if(fAnalysisType == "ESD") {
-
-
-      AliESDv0 *v0 = ((AliESDEvent*)lEvent)->GetV0(iV0);
-      if (!v0) continue;
-       
-      // Primary vertex:
-      fHistPrimaryVertexPosXV0events->Fill(lPrimaryVtxPosition[0]);
-      fHistPrimaryVertexPosYV0events->Fill(lPrimaryVtxPosition[1]);
-      fHistPrimaryVertexPosZV0events->Fill(lPrimaryVtxPosition[2]);
-      
-      // V0's Daughters
-      lIndexTrackPos = TMath::Abs(v0->GetPindex());
-      lIndexTrackNeg = TMath::Abs(v0->GetNindex());
-      AliESDtrack *myTrackPosTest = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackPos);
-      AliESDtrack *myTrackNegTest = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackNeg);
-      if (!myTrackPosTest || !myTrackNegTest) {
-       Printf("strange analysis::UserExec:: Error:Could not retreive one of the daughter track\n");
-       continue;
-      }
-      // Remove like-sign
-      if ( myTrackPosTest->GetSign() == myTrackNegTest->GetSign()){
-       continue;
-      } 
-
-       //Multiplicity:
-      if(!lOnFlyStatus) nv0s++;
-      else  if(lOnFlyStatus) nv0sMI++;
-     
-      // VO's main characteristics to check the reconstruction cuts
-      lOnFlyStatus       = v0->GetOnFlyStatus();
-      lChi2V0            = v0->GetChi2V0();
-      lDcaV0Daughters    = v0->GetDcaV0Daughters();
-      lDcaV0ToPrimVertex = v0->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lPrimaryVtxPosition[2]);
-      lV0cosPointAngle   = v0->GetV0CosineOfPointingAngle(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1], lPrimaryVtxPosition[2]);
-
-      v0->GetXYZ(lV0Position[0], lV0Position[1], lV0Position[2]);
-
-      lV0Radius      = TMath::Sqrt(lV0Position[0]*lV0Position[0]+lV0Position[1]*lV0Position[1]);
-      lV0DecayLength = TMath::Sqrt(TMath::Power(lV0Position[0] - lPrimaryVtxPosition[0],2) +
-                                  TMath::Power(lV0Position[1] - lPrimaryVtxPosition[1],2) +
-                                  TMath::Power(lV0Position[2] - lPrimaryVtxPosition[2],2 ));
-
-
-      if( myTrackPosTest->GetSign() ==1){
-       
-       myTrackPos = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackPos);
-       myTrackNeg = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackNeg);
-
-       // Daughters' momentum;
-       v0->GetPPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
-       v0->GetNPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
-       
-       if (negPiKF) delete negPiKF; negPiKF=NULL;
-       if (posPiKF) delete posPiKF; posPiKF=NULL;
-       if (posPKF)  delete posPKF;  posPKF=NULL;
-       if (negAPKF) delete negAPKF; negAPKF=NULL;
-       
-       negPiKF = new AliKFParticle( *(v0->GetParamN()) ,-211);
-       posPiKF = new AliKFParticle( *(v0->GetParamP()) ,211);
-       posPKF  = new AliKFParticle( *(v0->GetParamP()) ,2212);
-       negAPKF = new AliKFParticle( *(v0->GetParamN()) ,-2212);
-       
-      }
-           
-      if( myTrackPosTest->GetSign() ==-1){
-       
-       myTrackPos = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackNeg);
-       myTrackNeg = ((AliESDEvent*)lEvent)->GetTrack(lIndexTrackPos);
-
-       // Daughters' momentum;
-       v0->GetPPxPyPz(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
-       v0->GetNPxPyPz(lMomPos[0],lMomPos[1],lMomPos[2]);
-
-       if (negPiKF) delete negPiKF; negPiKF=NULL;
-       if (posPiKF) delete posPiKF; posPiKF=NULL;
-       if (posPKF)  delete posPKF;  posPKF=NULL;
-       if (negAPKF) delete negAPKF; negAPKF=NULL;
-       
-       negPiKF = new AliKFParticle( *(v0->GetParamP()) ,-211);
-       posPiKF = new AliKFParticle( *(v0->GetParamN()) ,211);
-       posPKF  = new AliKFParticle( *(v0->GetParamN()) ,2212);
-       negAPKF = new AliKFParticle( *(v0->GetParamP()) ,-2212);
-
-      }
-
-      lLabelTrackPos = (UInt_t)TMath::Abs(myTrackPos->GetLabel());
-      lLabelTrackNeg = (UInt_t)TMath::Abs(myTrackNeg->GetLabel());
-
-      
-      // DCA between daughter and Primary Vertex:
-      if (myTrackPos) lDcaPosToPrimVertex = TMath::Abs(myTrackPos->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lMagneticField) );
-      
-      if (myTrackNeg) lDcaNegToPrimVertex = TMath::Abs(myTrackNeg->GetD(lPrimaryVtxPosition[0],lPrimaryVtxPosition[1],lMagneticField) );
-      
-      // Quality tracks cuts:
-      if ( !(myTracksCuts->IsSelected(myTrackPos)) || !(myTracksCuts->IsSelected(myTrackNeg)) ) continue;
-
-      // Armenteros variables:
-      lAlphaV0      =  v0->AlphaV0();
-      lPtArmV0      =  v0->PtArmV0();
-
-      // Pseudorapidity:
-      lV0Eta = v0->Eta();
-      
-      // PID
-      lTPCsignalPos = myTrackPos->GetTPCsignal();
-      lTPCsignalNeg = myTrackNeg->GetTPCsignal();
-
-      const AliExternalTrackParam *posInnerParam = myTrackPos->GetInnerParam();
-      if (!posInnerParam) continue;
-      
-      const AliExternalTrackParam *negInnerParam = myTrackNeg->GetInnerParam();
-      if (!negInnerParam) continue;
-    
-      AliExternalTrackParam trackInPos(*posInnerParam);
-      AliExternalTrackParam trackInNeg(*negInnerParam);
-
-      lMomentumTrackInPos = trackInPos.GetP(); // momentum for dEdx determination
-      lMomentumTrackInNeg = trackInNeg.GetP(); 
-      
-      if (fUsePID.Contains("withPID")) {
-       nSigmaPosPion = TMath::Abs((lTPCsignalPos - foPion.Eval(lMomentumTrackInPos))/foPion.Eval(lMomentumTrackInPos))/0.06;
-       
-       nSigmaNegPion = TMath::Abs((lTPCsignalNeg - foPion.Eval(lMomentumTrackInNeg))/foPion.Eval(lMomentumTrackInNeg))/0.06; // 0.06 comes from momentum resolution !
-       
-       nSigmaPosProton = TMath::Abs((lTPCsignalPos - foProton.Eval(lMomentumTrackInPos))/foProton.Eval(lMomentumTrackInPos))/0.06;
-       
-       nSigmaNegProton = TMath::Abs((lTPCsignalNeg - foProton.Eval(lMomentumTrackInNeg))/foProton.Eval(lMomentumTrackInNeg))/0.06; // 0.06 comes from momentum resolution !
-      }
-      else {
-       nSigmaPosPion = 0; nSigmaNegPion =0; nSigmaPosProton = 0; nSigmaNegProton= 0;}
-      
-      
-      
-      // Monte-Carlo particle associated to reconstructed particles: 
-      if (fAnalysisMC) {
-       //if (lLabelTrackPos < 0 || lLabelTrackNeg < 0) continue;
-       TParticle  *lMCESDPartPos  = stack->Particle(lLabelTrackPos);
-       if(!lMCESDPartPos) { 
-         Printf("no MC particle for positive and/or negative daughter\n");
-         continue;
-       }
-       TParticle  *lMCESDPartNeg  = stack->Particle(lLabelTrackNeg);
-       if (!lMCESDPartNeg) continue;
-       lPDGCodePosDaughter = lMCESDPartPos->GetPdgCode();
-       lPDGCodeNegDaughter = lMCESDPartNeg->GetPdgCode();
-       lIndexPosMother = lMCESDPartPos->GetFirstMother();
-       lIndexNegMother = lMCESDPartNeg->GetFirstMother();
-       TParticle  *lMCESDMother    = stack->Particle(lIndexPosMother);
-       if (!lMCESDMother) continue;
-       lPdgcodeMother         = lMCESDMother->GetPdgCode();
-       lIndexMotherOfMother   = lMCESDMother->GetFirstMother();
-       if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
-       else {
-         TParticle  *lMCESDMotherOfMother    = stack->Particle(lIndexMotherOfMother);
-         if (!lMCESDMotherOfMother) continue;
-         lPdgcodeMotherOfMother = lMCESDMotherOfMother->GetPdgCode();
-       }
-       
-       mcPosX = lMCESDPartPos->Vx();
-       mcPosY = lMCESDPartPos->Vy();
-       mcPosZ = lMCESDPartPos->Vz();
-       mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
-       mcPosMotherX = lMCESDMother->Vx();
-       mcPosMotherY = lMCESDMother->Vy();
-       mcPosMotherZ = lMCESDMother->Vz();
-       mcPosMotherR = TMath::Sqrt(mcPosMotherX*mcPosMotherX+mcPosMotherY*mcPosMotherY);
-       
-       mcMotherPt   = lMCESDMother->Pt();
-      }
-
-    } // end ESD condition
-
-
-    
-    else if(fAnalysisType == "AOD") { 
-
-      AliAODv0     *myAODv0 = ((AliAODEvent*)lEvent)->GetV0(iV0);
-      if (!myAODv0) continue;
-
-      // Primary vertex:
-      fHistPrimaryVertexPosXV0events->Fill(lPrimaryVtxPosition[0]);
-      fHistPrimaryVertexPosYV0events->Fill(lPrimaryVtxPosition[1]);
-      fHistPrimaryVertexPosZV0events->Fill(lPrimaryVtxPosition[2]);
-      
-
-      //Multiplicity:
-      if(!lOnFlyStatus) nv0s++;
-      else  if(lOnFlyStatus) nv0sMI++;
-
-      // V0's Daughters
-      lIndexTrackPos = TMath::Abs(myAODv0->GetPosID());
-      lIndexTrackNeg = TMath::Abs(myAODv0->GetNegID());
-      
-      AliVParticle  *lVPartPosTest  = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackPos);
-      AliVParticle  *lVPartNegTest  = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackNeg);
-      //AliAODTrack  *lVPartPos  = ((AliAODEvent*)lEvent)->GetTrack(lIndexTrackPos);
-      //AliAODTrack  *lVPartNeg  = ((AliAODEvent*)lEvent)->GetTrack(lIndexTrackNeg);
-
-      if (!lVPartPosTest ||(!lVPartNegTest )) {
-       Printf("strange analysis::UserExec:: Could not retreive one of the daughter track\n");
-       continue;
-      }
-
-      // Quality cuts:
-      // TO DO !!!!!!!
-
-      // TPC refit condition (done during reconstruction for Offline but not for On-the-fly)
-      //if( !(lVPartPosTest->GetStatus() & AliAODTrack::kTPCrefit)) continue;      
-      //if( !(lVPartNegTest->GetStatus() & AliAODTrack::kTPCrefit)) continue;
-      
-
-      lDcaPosToPrimVertex = myAODv0->DcaPosToPrimVertex();     
-      lDcaNegToPrimVertex = myAODv0->DcaNegToPrimVertex();
-      lOnFlyStatus        = myAODv0->GetOnFlyStatus();
-      lChi2V0             = myAODv0->Chi2V0();
-      lDcaV0Daughters     = myAODv0->DcaV0Daughters();
-      lDcaV0ToPrimVertex  = myAODv0->DcaV0ToPrimVertex();
-      lV0DecayLength      = myAODv0->DecayLengthV0(lPrimaryVtxPosition);
-      lV0cosPointAngle    = myAODv0->CosPointingAngle(lPrimaryVtxPosition);
-      lV0Radius           = myAODv0->RadiusV0();
-
-      if( lVPartPosTest->Charge() ==1){
-       
-       lVPartPos = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackPos);
-       lVPartNeg = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackNeg);
-       
-       
-       if (negPiKF) delete negPiKF; negPiKF=NULL;
-       if (posPiKF) delete posPiKF; posPiKF=NULL;
-       if (posPKF)  delete posPKF; posPKF=NULL;
-       if (negAPKF) delete negAPKF; negAPKF=NULL;
-       
-       //negPiKF = new AliKFParticle( *(myAODv0->GetParamN()) ,-211);
-       //posPiKF = new AliKFParticle( *(myAODv0->GetParamP()) ,211);
-       //posPKF  = new AliKFParticle( *(myAODv0->GetParamP()) ,2212);
-       //negAPKF = new AliKFParticle( *(myAODv0->GetParamN()) ,-2212);
-       // TO DO !!!!!!
-       negPiKF = NULL;
-       posPiKF = NULL;
-       posPKF  = NULL;
-       negAPKF = NULL;
-       
-      }
-           
-      if( lVPartPosTest->Charge() ==-1){
-       
-       lVPartPos = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackNeg);
-       lVPartNeg = ((AliVEvent*)lEvent)->GetTrack(lIndexTrackPos);
-       
-       if (negPiKF) delete negPiKF; negPiKF=NULL;
-       if (posPiKF) delete posPiKF; posPiKF=NULL;
-       if (posPKF)  delete posPKF; posPKF=NULL;
-       if (negAPKF) delete negAPKF; negAPKF=NULL;
-       
-       //negPiKF = new AliKFParticle( *(myAODv0->GetParamP()) ,-211);
-       //posPiKF = new AliKFParticle( *(myAODv0->GetParamN()) ,211);
-       //posPKF  = new AliKFParticle( *(myAODv0->GetParamN()) ,2212);
-       //negAPKF = new AliKFParticle( *(myAODv0->GetParamP()) ,-2212);
-       negPiKF = NULL;
-       posPiKF = NULL;
-       posPKF  = NULL;
-       negAPKF = NULL;
-      }
-
-      lLabelTrackPos  = TMath::Abs(lVPartPos->GetLabel());
-      lLabelTrackNeg  = TMath::Abs(lVPartNeg->GetLabel());
-      
-      // Armenteros variables:
-      lAlphaV0   = myAODv0->AlphaV0();
-      lPtArmV0   = myAODv0->PtArmV0();
-
-      // Pseudorapidity:
-      lV0Eta = myAODv0->PseudoRapV0();
-      
-      // PID not accessible with AOD !
-      nSigmaPosPion = 0; nSigmaNegPion =0; nSigmaPosProton = 0; nSigmaNegProton= 0;
-
-      
-      // Monte-Carlo particle associated to reconstructed particles:  
-      if (fAnalysisMC) {
-       AliAODMCParticle *lMCAODPartPos = (AliAODMCParticle*)mcArray->At(lLabelTrackPos);
-       if (!lMCAODPartPos) continue;
-       AliAODMCParticle *lMCAODPartNeg = (AliAODMCParticle*)mcArray->At(lLabelTrackNeg);
-       if(!lMCAODPartNeg) { 
-         Printf("strange analysis::UserExec:no MC particle for negative daughter\n");
-         continue;
-       }
-       lPDGCodePosDaughter = lMCAODPartPos->GetPdgCode();
-       lPDGCodeNegDaughter = lMCAODPartNeg->GetPdgCode();
-       lIndexPosMother = lMCAODPartPos->GetMother();
-       lIndexNegMother = lMCAODPartNeg->GetMother();
-       
-       AliAODMCParticle *lMCAODMother = (AliAODMCParticle*)mcArray->At(lIndexPosMother);
-       lPdgcodeMother = lMCAODMother->GetPdgCode();
-       lIndexMotherOfMother  = lMCAODMother->GetMother();
-       if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
-       else {
-         lPdgcodeMotherOfMother   = ((AliAODMCParticle*)mcArray->At(lIndexMotherOfMother))->GetPdgCode();
-       }
-       
-       mcPosX = lMCAODPartPos->Xv();
-       mcPosY = lMCAODPartPos->Yv();
-       mcPosZ = lMCAODPartPos->Zv();
-       mcPosR = TMath::Sqrt(mcPosX*mcPosX+mcPosY*mcPosY);
-       mcPosMotherX = lMCAODMother->Xv();
-       mcPosMotherY = lMCAODMother->Yv();
-       mcPosMotherZ = lMCAODMother->Zv();
-       mcPosMotherR = TMath::Sqrt(mcPosMotherX*mcPosMotherX+mcPosMotherY*mcPosMotherY);
-       mcMotherPt   = lMCAODMother->Pt();
-      }
-            
-    } // end AOD condition
-    
-    
-    AliKFParticle v0K0sKF;
-    v0K0sKF+=(*negPiKF);
-    v0K0sKF+=(*posPiKF);
-    v0K0sKF.SetProductionVertex(primaryVtxKF);
-    
-    AliKFParticle v0LambdaKF;
-    v0LambdaKF+=(*negPiKF);
-    v0LambdaKF+=(*posPKF);     
-    v0LambdaKF.SetProductionVertex(primaryVtxKF);
-    
-    AliKFParticle v0AntiLambdaKF;
-    v0AntiLambdaKF+=(*posPiKF);
-    v0AntiLambdaKF+=(*negAPKF);
-    v0AntiLambdaKF.SetProductionVertex(primaryVtxKF);
-    
-    // Invariant mass
-    lInvMassK0s        = v0K0sKF.GetMass();
-    lInvMassLambda     = v0LambdaKF.GetMass();
-    lInvMassAntiLambda = v0AntiLambdaKF.GetMass();
-    
-    // Rapidity:
-    lRapK0s        = 0.5*TMath::Log((v0K0sKF.GetE()+v0K0sKF.GetPz())/(v0K0sKF.GetE()-v0K0sKF.GetPz()+1.e-13));
-    lRapLambda     = 0.5*TMath::Log((v0LambdaKF.GetE()+v0LambdaKF.GetPz())/(v0LambdaKF.GetE()-v0LambdaKF.GetPz()+1.e-13));
-    lRapAntiLambda = 0.5*TMath::Log((v0AntiLambdaKF.GetE()+v0AntiLambdaKF.GetPz())/(v0AntiLambdaKF.GetE()-v0AntiLambdaKF.GetPz()+1.e-13));
-
-    // Pseudo-rapidity
-    lEtaK0s     = v0K0sKF.GetEta();
-    lEtaLambda  = v0LambdaKF.GetEta();
-    lEtaAntiLambda  = v0AntiLambdaKF.GetEta();
-    
-    // Pt:
-    lPtK0s        = v0K0sKF.GetPt();
-    lPtLambda     = v0LambdaKF.GetPt();
-    lPtAntiLambda = v0AntiLambdaKF.GetPt();
-
-    // Pt Resolution
-    deltaPtK0s        = lPtK0s - mcMotherPt;
-    deltaPtLambda     = lPtLambda - mcMotherPt;
-    deltaPtAntiLambda = lPtAntiLambda - mcMotherPt;
-
-    // KF Chi2
-    lChi2KFK0s        = v0K0sKF.GetChi2();
-    lChi2KFLambda     = v0LambdaKF.GetChi2();
-    lChi2KFAntiLambda = v0AntiLambdaKF.GetChi2();
-    
-    // Reconstructed Position
-    rcPosXK0s = v0K0sKF.GetX();
-    rcPosYK0s = v0K0sKF.GetY(); 
-    rcPosZK0s = v0K0sKF.GetZ();
-    rcPosRK0s = TMath::Sqrt(rcPosXK0s*rcPosXK0s+rcPosYK0s*rcPosYK0s);
-
-    rcPosXLambda = v0LambdaKF.GetX(); 
-    rcPosYLambda = v0LambdaKF.GetY(); 
-    rcPosZLambda = v0LambdaKF.GetZ();
-    rcPosRLambda = TMath::Sqrt(rcPosXLambda*rcPosXLambda+rcPosYLambda*rcPosYLambda); 
-
-    rcPosXAntiLambda = v0AntiLambdaKF.GetX();
-    rcPosYAntiLambda = v0AntiLambdaKF.GetY(); 
-    rcPosZAntiLambda = v0AntiLambdaKF.GetZ();
-    rcPosRAntiLambda = TMath::Sqrt(rcPosXAntiLambda*rcPosXAntiLambda+rcPosYAntiLambda*rcPosYAntiLambda); 
-
-    TVector3 momPos(lMomPos[0],lMomPos[1],lMomPos[2]);
-    TVector3 momNeg(lMomNeg[0],lMomNeg[1],lMomNeg[2]);
-    TVector3 momTotK0s(v0K0sKF.GetPx(),v0K0sKF.GetPy(),v0K0sKF.GetPz());
-    TVector3 momTotLambda(v0LambdaKF.GetPx(),v0LambdaKF.GetPy(),v0LambdaKF.GetPz());
-    TVector3 momTotAntiLambda(v0AntiLambdaKF.GetPx(),v0AntiLambdaKF.GetPy(),v0AntiLambdaKF.GetPz());
-    
-    lQlPos = momPos.Dot(momTotK0s)/momTotK0s.Mag();
-    lQlNeg = momNeg.Dot(momTotK0s)/momTotK0s.Mag();
-    lAlphaV0K0s = 1.-2./(1.+lQlPos/lQlNeg);
-    lQlPos = momPos.Dot(momTotLambda)/momTotLambda.Mag();
-    lQlNeg = momNeg.Dot(momTotLambda)/momTotLambda.Mag();
-    lAlphaV0Lambda = 1.-2./(1.+lQlPos/lQlNeg);
-    lQlPos = momPos.Dot(momTotAntiLambda)/momTotAntiLambda.Mag();
-    lQlNeg = momNeg.Dot(momTotAntiLambda)/momTotAntiLambda.Mag();
-    lAlphaV0AntiLambda = 1.-2./(1.+lQlPos/lQlNeg);
-    
-    lPtArmV0K0s = momPos.Perp(momTotK0s);
-    lPtArmV0Lambda = momPos.Perp(momTotLambda);
-    lPtArmV0AntiLambda = momPos.Perp(momTotAntiLambda);
-    
-    // Look for associated particles:
-    if (fAnalysisMC) {
-      if( (lIndexPosMother==-1) || (lIndexNegMother==-1) ) {
-       fHistMCDaughterTrack->Fill(1);
-      }
-      
-      else if( ( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) )    
-              ) {
-       lCheckPIdK0Short    = 1;
-       fHistMCDaughterTrack->Fill(3);
-       if ( (lIndexPosMother==lIndexNegMother) &&
-            (lPdgcodeMother==310) ) {
-         if (lIndexPosMother <= lNbMCPrimary) lCheckMcK0Short  = 1;
-         else lCheckSecondaryK0s = 1;
-       }
-      }
-      else if( ( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211)  )  
-              ) {
-       lCheckPIdLambda     = 1;
-       fHistMCDaughterTrack->Fill(5);
-       if ( (lIndexPosMother==lIndexNegMother) &&
-            (lPdgcodeMother==3122)  ){
-         if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
-              ) lComeFromSigma = 1;
-         else lComeFromSigma = 0; 
-         if ( (lIndexPosMother <= lNbMCPrimary) || 
-            ( ( lIndexPosMother > lNbMCPrimary) && (lComeFromSigma) )
-            ) lCheckMcLambda  = 1; 
-         else lCheckSecondaryLambda    = 1;
-       }
-      }
-      else if( ( (lPDGCodePosDaughter==211)   && (lPDGCodeNegDaughter==-2212) )             
-              ) {
-       lCheckPIdAntiLambda = 1;
-       fHistMCDaughterTrack->Fill(7);
-       if ( (lIndexPosMother==lIndexNegMother) &&
-            (lPdgcodeMother==-3122) ) {
-         if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
-              ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
-              ) lComeFromSigma = 1;
-         else lComeFromSigma = 0;  
-         if ( (lIndexPosMother <= lNbMCPrimary) || 
-            ( ( lIndexPosMother > lNbMCPrimary) && (lComeFromSigma) )
-            ) lCheckMcAntiLambda  = 1;
-         else lCheckSecondaryAntiLambda = 1;
-       }
-      }
-      
-      // Gamma conversion
-      else if ( (lPDGCodePosDaughter==11) &&
-               (lPDGCodeNegDaughter==-11) &&
-               (lPdgcodeMother==22 ) )
-       lCheckGamma = 1;
-    } // end "look for associated particles  
-   
-    
-    // Cuts:
-    if (fUseCut.Contains("yes")) {
-      if ( (lDcaPosToPrimVertex < 0.036 ) ||
-          (lDcaNegToPrimVertex < 0.036 ) ||
-          (lDcaV0Daughters     > 0.5   ) ||
-          (lV0cosPointAngle    < 0.99 ) 
-          )    
-       continue;
-    }
-
-    //*****************************
-    // filling histograms
-
-    fHistDcaPosToPrimVertex->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
-    fHistDcaNegToPrimVertex->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
-    fHistDcaPosToPrimVertexZoom->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
-    fHistDcaNegToPrimVertexZoom->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
-    fHistRadiusV0->Fill(lV0Radius,lOnFlyStatus);
-    fHistDecayLengthV0->Fill(lV0DecayLength,lOnFlyStatus);
-    fHistDcaV0Daughters->Fill(lDcaV0Daughters,lOnFlyStatus);
-    fHistChi2->Fill(lChi2V0,lOnFlyStatus);
-    fHistCosPointAngle->Fill(lV0cosPointAngle,lOnFlyStatus);
-    if (lV0cosPointAngle >= 0.9) fHistCosPointAngleZoom->Fill(lV0cosPointAngle,lOnFlyStatus);
-    fHistChi2KFBeforeCutK0s->Fill(lChi2KFK0s,lOnFlyStatus); 
-    fHistChi2KFBeforeCutLambda->Fill(lChi2KFLambda,lOnFlyStatus);
-    fHistChi2KFBeforeCutAntiLambda->Fill(lChi2KFAntiLambda,lOnFlyStatus);
-
-    // Histo versus Rap and armenteros plot
-    if (!lOnFlyStatus){
-      if (lCheckMcK0Short) fHistAsMcRapK0->Fill(lRapK0s);
-      if (lCheckMcLambda) fHistAsMcRapLambda->Fill(lRapLambda);
-      if (lCheckMcAntiLambda) fHistAsMcRapLambda->Fill(lRapAntiLambda);
-      fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0);
-    }
-    else {
-      if (lCheckMcK0Short) fHistAsMcRapK0MI->Fill(lRapK0s);
-      if (lCheckMcLambda) fHistAsMcRapLambdaMI->Fill(lRapLambda);
-      if (lCheckMcAntiLambda) fHistAsMcRapLambdaMI->Fill(lRapAntiLambda);
-      fHistArmenterosPodolanskiMI->Fill(lAlphaV0,lPtArmV0);
-    }
-    
-    // K0s associated histograms in |eta| < lCutRap:
-    if ( (nSigmaPosPion < cutNSigma) && (nSigmaNegPion < cutNSigma) 
-        && (lChi2KFK0s < cutChi2KF) )     {
-
-      fHistChi2KFAfterCutK0s->Fill(lChi2KFK0s,lOnFlyStatus);
-
-      if (TMath::Abs(lRapK0s) < lCutRap) {
-
-       fHistNsigmaPosPionK0->Fill(nSigmaPosPion);
-       fHistNsigmaNegPionK0->Fill(nSigmaNegPion);
-       
-       switch (lOnFlyStatus){
-       case 0 : 
-         fHistMassK0->Fill(lInvMassK0s);
-         fHistMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
-         fHistPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
-         if(lCheckPIdK0Short) fHistPidMcMassK0->Fill(lInvMassK0s);
-         if(lCheckMcK0Short) {
-           fHistAsMcMassK0->Fill(lInvMassK0s);
-           fHistAsMcPtK0->Fill(lPtK0s);
-           fHistAsMcPtVsMassK0->Fill(lInvMassK0s,lPtK0s);
-           if (lPtK0s <= 1) fHistAsMcPtZoomK0->Fill(lPtK0s);
-           fHistAsMcMassVsRadiusK0->Fill(rcPosRK0s,lInvMassK0s);
-           fHistAsMcResxK0->Fill(rcPosXK0s-mcPosX);
-           fHistAsMcResyK0->Fill(rcPosYK0s-mcPosY);
-           fHistAsMcReszK0->Fill(rcPosZK0s-mcPosZ);
-           fHistAsMcResrVsRadiusK0->Fill(rcPosRK0s,rcPosRK0s-mcPosR);
-           fHistAsMcReszVsRadiusK0->Fill(rcPosZK0s,rcPosZK0s-mcPosZ);
-           fHistAsMcProdRadiusK0->Fill(mcPosMotherR);
-           fHistAsMcProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
-           fHistAsMcResPtK0->Fill(deltaPtK0s);
-           fHistAsMcResPtVsRapK0->Fill(deltaPtK0s,lRapK0s);
-           fHistAsMcResPtVsPtK0->Fill(deltaPtK0s,lPtK0s);
-         }
-         if (lCheckSecondaryK0s) {
-           fHistAsMcSecondaryPtVsRapK0s->Fill(lPtK0s,lRapK0s);
-           fHistAsMcSecondaryProdRadiusK0s->Fill(mcPosMotherR);
-           fHistAsMcSecondaryProdRadiusXvsYK0s->Fill(mcPosMotherX,mcPosMotherY);
-           switch (lPdgcodeMotherOfMother) {
-           case 130   : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(0.5);break; // K0L
-           case 321   : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(1.5);break; // K+
-           case -321  : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(2.5);break; // K-
-           case -3122 : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(3.5);break; //AntiLambda
-           default    : fHistAsMcSecondaryMotherPdgCodeK0s->Fill(6.5);break;
-           }
-         }
-         break;
-         
-       case 1 :
-         fHistMassK0MI->Fill(lInvMassK0s);
-         fHistMassVsRadiusK0MI->Fill(rcPosRK0s,lInvMassK0s);
-         fHistPtVsMassK0MI->Fill(lInvMassK0s,lPtK0s);
-         if(lCheckPIdK0Short) fHistPidMcMassK0MI->Fill(lInvMassK0s);
-         if(lCheckMcK0Short) {
-           fHistAsMcMassK0MI->Fill(lInvMassK0s);
-           fHistAsMcPtK0MI->Fill(lPtK0s);
-           fHistAsMcPtVsMassK0MI->Fill(lInvMassK0s,lPtK0s);
-           if (lPtK0s <= 1) fHistAsMcPtZoomK0MI->Fill(lPtK0s);
-           fHistAsMcMassVsRadiusK0MI->Fill(rcPosRK0s,lInvMassK0s);
-           fHistAsMcResxK0MI->Fill(rcPosXK0s-mcPosX);
-           fHistAsMcResyK0MI->Fill(rcPosYK0s-mcPosY);
-           fHistAsMcReszK0MI->Fill(rcPosZK0s-mcPosZ);
-           fHistAsMcResrVsRadiusK0MI->Fill(rcPosRK0s,rcPosRK0s-mcPosR);
-           fHistAsMcReszVsRadiusK0MI->Fill(rcPosZK0s,rcPosZK0s-mcPosZ);
-           fHistAsMcProdRadiusK0MI->Fill(mcPosMotherR);
-           fHistAsMcProdRadiusXvsYK0sMI->Fill(mcPosMotherX,mcPosMotherY);
-           fHistAsMcResPtK0MI->Fill(deltaPtK0s);
-           fHistAsMcResPtVsRapK0MI->Fill(deltaPtK0s,lRapK0s);
-           fHistAsMcResPtVsPtK0MI->Fill(deltaPtK0s,lPtK0s);
-         }
-         else if (lCheckSecondaryK0s) {
-           fHistAsMcSecondaryPtVsRapK0sMI->Fill(lPtK0s,lRapK0s);
-           fHistAsMcSecondaryProdRadiusK0sMI->Fill(mcPosMotherR); 
-           fHistAsMcSecondaryProdRadiusXvsYK0sMI->Fill(mcPosMotherX,mcPosMotherY);
-           switch (lPdgcodeMotherOfMother) {
-           case 130   : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(0.5);break; // K0L
-           case 321   : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(1.5);break; // K+
-           case -321  : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(2.5);break; // K-
-           case -3122 : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(3.5);break; //AntiLambda
-           default    : fHistAsMcSecondaryMotherPdgCodeK0sMI->Fill(6.5);break;
-           }
-         }
-         break;        
-       }
-      } // end rapidity condition
-    } // end nsigma condition
-    
-
-    // Associated Lambda histograms in |eta| < lCutRap
-    if ( (nSigmaPosProton < cutNSigma) && (nSigmaNegPion < cutNSigma)
-        && (lChi2KFLambda < cutChi2KF) )  {
-      
-      fHistChi2KFAfterCutLambda->Fill(lChi2KFLambda,lOnFlyStatus);
-
-      if (TMath::Abs(lRapLambda) < lCutRap) {
-
-       fHistNsigmaPosProtonLambda->Fill(nSigmaPosProton);
-       fHistNsigmaNegPionLambda->Fill(nSigmaNegPion);
-       switch (lOnFlyStatus){
-       case 0 : 
-         fHistMassLambda->Fill(lInvMassLambda);
-         fHistMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
-         fHistPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
-         if(lCheckPIdLambda) fHistPidMcMassLambda->Fill(lInvMassLambda);
-         
-         if(lCheckMcLambda) {
-           fHistAsMcMassLambda->Fill(lInvMassLambda);
-           fHistAsMcPtLambda->Fill(lPtLambda);
-           fHistAsMcPtVsMassLambda->Fill(lInvMassLambda,lPtLambda);
-           if (lPtLambda <= 1) fHistAsMcPtZoomLambda->Fill(lPtLambda);
-           fHistAsMcMassVsRadiusLambda->Fill(rcPosRLambda,lInvMassLambda);
-           fHistAsMcResxLambda->Fill(rcPosXLambda-mcPosX);
-           fHistAsMcResyLambda->Fill(rcPosYLambda-mcPosY);
-           fHistAsMcReszLambda->Fill(rcPosZLambda-mcPosZ);
-           fHistAsMcResrVsRadiusLambda->Fill(rcPosRLambda,rcPosRLambda-mcPosR);
-           fHistAsMcReszVsRadiusLambda->Fill(rcPosZLambda,rcPosZLambda-mcPosZ);
-           fHistAsMcProdRadiusLambda->Fill(mcPosMotherR);
-           fHistAsMcProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
-           fHistAsMcResPtLambda->Fill(deltaPtLambda);
-           fHistAsMcResPtVsRapLambda->Fill(deltaPtLambda,lRapLambda);
-           fHistAsMcResPtVsPtLambda->Fill(deltaPtLambda,lPtLambda);
-           if (lComeFromSigma) fHistAsMcPtLambdaFromSigma->Fill(lPtLambda);
-           switch (lPdgcodeMotherOfMother) {
-           case 3222 : fHistAsMcMotherPdgCodeLambda->Fill(0.5); break; // Sigma +
-           case 3212 : fHistAsMcMotherPdgCodeLambda->Fill(1.5); break; // Sigma 0
-           case 3112 : fHistAsMcMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
-           case 3224 : fHistAsMcMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
-           case 3214 : fHistAsMcMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
-           case 3114 : fHistAsMcMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
-           case 3322 : fHistAsMcMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
-           case 3312 : fHistAsMcMotherPdgCodeLambda->Fill(7.5); break; // Xi -
-           case 3334 : fHistAsMcMotherPdgCodeLambda->Fill(8.5); break; // Omega
-           case -1   : fHistAsMcMotherPdgCodeLambda->Fill(9.5); break;
-           default   : fHistAsMcMotherPdgCodeLambda->Fill(10.5);break;
-           }
-         }
-         
-         else if (lCheckSecondaryLambda) {
-           fHistAsMcSecondaryPtVsRapLambda->Fill(lPtLambda,lRapLambda);
-           fHistAsMcSecondaryProdRadiusLambda->Fill(mcPosMotherR); 
-           fHistAsMcSecondaryProdRadiusXvsYLambda->Fill(mcPosMotherX,mcPosMotherY);
-           if (lComeFromSigma) fHistAsMcSecondaryPtLambdaFromSigma->Fill(lPtLambda);
-           printf(" lPdgcodeMotherOfMother= %d",lPdgcodeMotherOfMother);
-           switch (lPdgcodeMotherOfMother) {
-           case 3222 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(0.5); break;// Sigma +
-           case 3212 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(1.5); break;// Sigma 0
-           case 3112 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(2.5); break;// Sigma -
-           case 3224 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(3.5); break;// Sigma(1385) +
-           case 3214 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(4.5); break;// Sigma(1385) 0
-           case 3114 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(5.5); break;// Sigma(1385) -
-           case 3322 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(6.5); break; // Xi 0
-           case 3312 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(7.5); break; // Xi -
-           case 3334 : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(8.5); break; // Omega
-           case -1   : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(9.5); break;
-           default   : fHistAsMcSecondaryMotherPdgCodeLambda->Fill(10.5);break;
-           }
-         }
-         break;
-         
-       case 1 :
-         fHistMassLambdaMI->Fill(lInvMassLambda);
-         fHistMassVsRadiusLambdaMI->Fill(rcPosRLambda,lInvMassLambda);
-         fHistPtVsMassLambdaMI->Fill(lInvMassLambda,lPtLambda);
-         if(lCheckPIdLambda) fHistPidMcMassLambdaMI->Fill(lInvMassLambda);
-         
-         if(lCheckMcLambda) {
-           fHistAsMcMassLambdaMI->Fill(lInvMassLambda);
-           fHistAsMcPtLambdaMI->Fill(lPtLambda);
-           fHistAsMcPtVsMassLambdaMI->Fill(lInvMassLambda,lPtLambda);
-           fHistAsMcMassVsRadiusLambdaMI->Fill(rcPosRLambda,lInvMassLambda);
-           fHistAsMcResxLambdaMI->Fill(rcPosXLambda-mcPosX);
-           fHistAsMcResyLambdaMI->Fill(rcPosYLambda-mcPosY);
-           fHistAsMcReszLambdaMI->Fill(rcPosZLambda-mcPosZ);
-           fHistAsMcResrVsRadiusLambdaMI->Fill(rcPosRLambda,rcPosRLambda-mcPosR);
-           fHistAsMcReszVsRadiusLambdaMI->Fill(rcPosZLambda,rcPosZLambda-mcPosZ);
-           fHistAsMcProdRadiusLambdaMI->Fill(mcPosMotherR);
-           fHistAsMcProdRadiusXvsYLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
-           fHistAsMcResPtLambdaMI->Fill(deltaPtLambda);
-           fHistAsMcResPtVsRapLambdaMI->Fill(deltaPtLambda,lRapLambda);
-           fHistAsMcResPtVsPtLambdaMI->Fill(deltaPtLambda,lPtLambda);
-           if (lComeFromSigma) fHistAsMcPtLambdaFromSigmaMI->Fill(lPtLambda);
-           switch (lPdgcodeMotherOfMother) {
-           case 3222 : fHistAsMcMotherPdgCodeLambdaMI->Fill(0.5); break; // Sigma +
-           case 3212 : fHistAsMcMotherPdgCodeLambdaMI->Fill(1.5); break; // Sigma 0
-           case 3112 : fHistAsMcMotherPdgCodeLambdaMI->Fill(2.5); break;// Sigma -
-           case 3224 : fHistAsMcMotherPdgCodeLambdaMI->Fill(3.5); break;// Sigma(1385) +
-           case 3214 : fHistAsMcMotherPdgCodeLambdaMI->Fill(4.5); break;// Sigma(1385) 0
-           case 3114 : fHistAsMcMotherPdgCodeLambdaMI->Fill(5.5); break;// Sigma(1385) -
-           case 3322 : fHistAsMcMotherPdgCodeLambdaMI->Fill(6.5);break; // Xi 0
-           case 3312 : fHistAsMcMotherPdgCodeLambdaMI->Fill(7.5);break; // Xi -
-           case 3334 : fHistAsMcMotherPdgCodeLambdaMI->Fill(8.5);break; // Omega
-           case -1   : fHistAsMcMotherPdgCodeLambdaMI->Fill(9.5);break;
-           default   : fHistAsMcMotherPdgCodeLambdaMI->Fill(10.5);break;
-           }
-         }
-         else if (lCheckSecondaryLambda) {
-           fHistAsMcSecondaryPtVsRapLambdaMI->Fill(lPtLambda,lRapLambda);
-           fHistAsMcSecondaryProdRadiusLambdaMI->Fill(mcPosMotherR); 
-           fHistAsMcSecondaryProdRadiusXvsYLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
-           if (lComeFromSigma) fHistAsMcSecondaryPtLambdaFromSigmaMI->Fill(lPtLambda);
-           switch (lPdgcodeMotherOfMother) {
-           case 3222 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(0.5); break;// Sigma +
-           case 3212 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(1.5); break;// Sigma 0
-           case 3112 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(2.5); break;// Sigma -
-           case 3224 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(3.5); break;// Sigma(1385) +
-           case 3214 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(4.5); break;// Sigma(1385) 0
-           case 3114 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(5.5); break;// Sigma(1385) -
-           case 3322 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(6.5); break; // Xi 0
-           case 3312 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(7.5); break; // Xi -
-           case 3334 : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(8.5); break; // Omega
-           case -1   : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(9.5); break;
-           default   : fHistAsMcSecondaryMotherPdgCodeLambdaMI->Fill(10.5);break;
-           }
-         }
-         break;        
-       }
-      } // end rapidity condition
-    } //end nsigma condition - lambda
-
-
-
-    // AntiLambda associated histograms in |eta| < lCutRap
-    if ( (nSigmaPosPion < cutNSigma)   && (nSigmaNegProton < cutNSigma) 
-        && (lChi2KFAntiLambda < cutChi2KF) )     {
-      
-      fHistChi2KFAfterCutLambda->Fill(lChi2KFLambda,lOnFlyStatus);
-
-      if (TMath::Abs(lRapAntiLambda) < lCutRap) {
-
-
-       fHistNsigmaPosPionAntiLambda->Fill(nSigmaPosPion);
-       fHistNsigmaNegProtonAntiLambda->Fill(nSigmaNegProton);
-
-       switch (lOnFlyStatus){
-       case 0 : 
-         fHistMassAntiLambda->Fill(lInvMassAntiLambda);
-         fHistMassVsRadiusAntiLambda->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
-         fHistPtVsMassAntiLambda->Fill(lInvMassAntiLambda,lPtAntiLambda);
-         if (lCheckPIdAntiLambda) fHistPidMcMassAntiLambda->Fill(lInvMassAntiLambda);
-         
-         if(lCheckMcAntiLambda) {
-           fHistAsMcMassAntiLambda->Fill(lInvMassAntiLambda);
-           fHistAsMcPtAntiLambda->Fill(lPtAntiLambda);
-           fHistAsMcPtVsMassAntiLambda->Fill(lInvMassAntiLambda,lPtAntiLambda);
-           fHistAsMcMassVsRadiusAntiLambda->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
-           fHistAsMcResxAntiLambda->Fill(rcPosXAntiLambda-mcPosX);
-           fHistAsMcResyAntiLambda->Fill(rcPosYAntiLambda-mcPosY);
-           fHistAsMcReszAntiLambda->Fill(rcPosZAntiLambda-mcPosZ);
-           fHistAsMcResrVsRadiusAntiLambda->Fill(rcPosRAntiLambda,rcPosRAntiLambda-mcPosR);
-           fHistAsMcReszVsRadiusAntiLambda->Fill(rcPosZAntiLambda,rcPosZAntiLambda-mcPosZ);
-           fHistAsMcProdRadiusAntiLambda->Fill(mcPosMotherR);
-           fHistAsMcProdRadiusXvsYAntiLambda->Fill(mcPosMotherX,mcPosMotherY);
-           fHistAsMcResPtAntiLambda->Fill(deltaPtAntiLambda);
-           fHistAsMcResPtVsRapAntiLambda->Fill(deltaPtAntiLambda,lRapLambda);
-           fHistAsMcResPtVsPtAntiLambda->Fill(deltaPtAntiLambda,lPtAntiLambda);
-           if (lComeFromSigma) fHistAsMcPtAntiLambdaFromSigma->Fill(lPtAntiLambda);
-           switch (lPdgcodeMotherOfMother) {
-           case -3222 : fHistAsMcMotherPdgCodeAntiLambda->Fill(0.5); break;// Sigma +
-           case -3212 : fHistAsMcMotherPdgCodeAntiLambda->Fill(1.5); break;// Sigma 0
-           case -3112 : fHistAsMcMotherPdgCodeAntiLambda->Fill(2.5); break;// Sigma -
-           case -3224 : fHistAsMcMotherPdgCodeAntiLambda->Fill(3.5); break;// Sigma(1385) +
-           case -3214 : fHistAsMcMotherPdgCodeAntiLambda->Fill(4.5); break;// Sigma(1385) 0
-           case -3114 : fHistAsMcMotherPdgCodeAntiLambda->Fill(5.5); break;// Sigma(1385) -
-           case -3322 : fHistAsMcMotherPdgCodeAntiLambda->Fill(6.5); break; // Xi 0
-           case -3312 : fHistAsMcMotherPdgCodeAntiLambda->Fill(7.5); break; // Xi -
-           case -3334 : fHistAsMcMotherPdgCodeAntiLambda->Fill(8.5); break; // Omega
-           case -1    : fHistAsMcMotherPdgCodeAntiLambda->Fill(9.5); break;
-           default    : fHistAsMcMotherPdgCodeAntiLambda->Fill(10.5);break;
-           }
-         }
-         else if (lCheckSecondaryAntiLambda) {
-           fHistAsMcSecondaryPtVsRapAntiLambda->Fill(lPtAntiLambda,lRapLambda);
-           fHistAsMcSecondaryProdRadiusAntiLambda->Fill(mcPosMotherR);
-           fHistAsMcSecondaryProdRadiusXvsYAntiLambda->Fill(mcPosMotherX,mcPosMotherY);
-           if (lComeFromSigma) fHistAsMcSecondaryPtAntiLambdaFromSigma->Fill(lPtAntiLambda);
-           switch (lPdgcodeMotherOfMother) {
-           case -3222 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(0.5); break;// Sigma +
-           case -3212 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(1.5); break;// Sigma 0
-           case -3112 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(2.5); break;// Sigma -
-           case -3224 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(3.5); break;// Sigma(1385) +
-           case -3214 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(4.5); break;// Sigma(1385) 0
-           case -3114 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(5.5); break;// Sigma(1385) -
-           case -3322 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(6.5); break; // Xi 0
-           case -3312 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(7.5); break; // Xi -
-           case -3334 : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(8.5); break; // Omega
-           case -1    : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(9.5); break;
-           default    : fHistAsMcSecondaryMotherPdgCodeAntiLambda->Fill(10.5);break;
-           }
-         }
-         break;
-         
-         
-       case 1 :
-         fHistMassAntiLambdaMI->Fill(lInvMassAntiLambda);
-         fHistMassVsRadiusAntiLambdaMI->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
-         fHistPtVsMassAntiLambdaMI->Fill(lInvMassAntiLambda,lPtAntiLambda);
-         if (lCheckPIdAntiLambda) fHistPidMcMassAntiLambdaMI->Fill(lInvMassAntiLambda);
-         
-         if(lCheckMcAntiLambda) {
-           fHistAsMcMassAntiLambdaMI->Fill(lInvMassAntiLambda);
-           fHistAsMcPtAntiLambdaMI->Fill(lPtAntiLambda);
-           fHistAsMcPtVsMassAntiLambdaMI->Fill(lInvMassAntiLambda,lPtAntiLambda);
-           fHistAsMcMassVsRadiusAntiLambdaMI->Fill(rcPosRAntiLambda,lInvMassAntiLambda);
-           fHistAsMcResxAntiLambdaMI->Fill(rcPosXAntiLambda-mcPosX);
-           fHistAsMcResyAntiLambdaMI->Fill(rcPosYAntiLambda-mcPosY);
-           fHistAsMcReszAntiLambdaMI->Fill(rcPosZAntiLambda-mcPosZ);
-           fHistAsMcResrVsRadiusAntiLambdaMI->Fill(rcPosRAntiLambda,rcPosRAntiLambda-mcPosR);
-           fHistAsMcReszVsRadiusAntiLambdaMI->Fill(rcPosZAntiLambda,rcPosZAntiLambda-mcPosZ);
-           fHistAsMcProdRadiusAntiLambdaMI->Fill(mcPosMotherR);
-           fHistAsMcProdRadiusXvsYAntiLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
-           fHistAsMcResPtAntiLambdaMI->Fill(deltaPtAntiLambda);
-           fHistAsMcResPtVsRapAntiLambdaMI->Fill(deltaPtAntiLambda,lRapLambda);
-           fHistAsMcResPtVsPtAntiLambdaMI->Fill(deltaPtAntiLambda,lPtAntiLambda);
-           if (lComeFromSigma) fHistAsMcPtAntiLambdaFromSigmaMI->Fill(lPtAntiLambda);
-           switch (lPdgcodeMotherOfMother) {
-           case -3222 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(0.5); break;// Sigma +
-           case -3212 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(1.5); break;// Sigma 0
-           case -3112 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(2.5); break;// Sigma -
-           case -3224 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(3.5); break;// Sigma(1385) +
-           case -3214 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(4.5); break;// Sigma(1385) 0
-           case -3114 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(5.5); break;// Sigma(1385) -
-           case -3322 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(6.5); break; // Xi 0
-           case -3312 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(7.5); break; // Xi -
-           case -3334 : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(8.5); break; // Omega
-           case -1    : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(9.5); break;
-           default    : fHistAsMcMotherPdgCodeAntiLambdaMI->Fill(10.5);break;
-           }
-         }
-         else if (lCheckSecondaryAntiLambda) {
-           fHistAsMcSecondaryPtVsRapAntiLambdaMI->Fill(lPtAntiLambda,lRapLambda);
-           fHistAsMcSecondaryProdRadiusAntiLambdaMI->Fill(mcPosMotherR); 
-           fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI->Fill(mcPosMotherX,mcPosMotherY);
-           if (lComeFromSigma) fHistAsMcSecondaryPtAntiLambdaFromSigmaMI->Fill(lPtAntiLambda);
-           switch (lPdgcodeMotherOfMother) {
-           case -3222 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(0.5); break;// Sigma +
-           case -3212 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(1.5); break;// Sigma 0
-           case -3112 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(2.5); break;// Sigma -
-           case -3224 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(3.5); break;// Sigma(1385) +
-           case -3214 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(4.5); break;// Sigma(1385) 0
-           case -3114 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(5.5); break;// Sigma(1385) -
-           case -3322 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(6.5); break; // Xi 0
-           case -3312 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(7.5); break; // Xi -
-           case -3334 : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(8.5); break; // Omega
-           case -1    : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(9.5); break;
-           default    : fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI->Fill(10.5);break;
-           }
-         }
-         break;        
-       }
-      } // end rapidity condition
-    } // end nsigma condition - antilambda
-
-    if (negPiKF) delete negPiKF; negPiKF= NULL;
-    if (posPiKF) delete posPiKF; posPiKF= NULL;
-    if (posPKF)  delete posPKF;  posPKF = NULL;
-    if (negAPKF) delete negAPKF; negAPKF= NULL;
-    
-  } // end V0 loop
-
-  fHistV0Multiplicity->Fill(nv0s);
-  fHistV0MultiplicityMI->Fill(nv0sMI);
-
-  if (fAnalysisType == "ESD") { if(myPrimaryVertex) delete myPrimaryVertex; }
-
-  if(myTracksCuts) delete myTracksCuts;
-  
-  // Post output data
-  PostData(1, fListHist);
-}      
-
-//________________________________________________________________________
-void AliAnalysisTaskPerformanceStrange::Terminate(Option_t *) 
-{
-  // Draw result to the screen
-  // Called once at the end of the query
-
-  TList *cRetrievedList = 0x0;
-  cRetrievedList = (TList*)GetOutputData(1);
-
-  if(!cRetrievedList){
-    AliWarning("ERROR - AliAnalysisTaskPerformanceStrange: output data container list not available\n"); return;
-  }
-  
-  fHistV0Multiplicity = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistV0Multiplicity"));
-  if (!fHistV0Multiplicity) {
-    Printf("ERROR: fHistV0Multiplicity not available");
-    return;
-  }
-
-  fHistV0MultiplicityMI = dynamic_cast<TH1F*> (cRetrievedList->FindObject("fHistV0MultiplicityMI"));
-  if (!fHistV0MultiplicityMI) {
-    Printf("ERROR: fHistV0MultiplicityMI not available");
-    return;
-  }
-
-  TCanvas *canPerformanceStrange = new TCanvas("AliAnalysisTaskCheckV0","Multiplicity",10,10,510,510);
-  canPerformanceStrange->Divide(2,1);
-  if (fHistV0Multiplicity->GetMaximum() > 0.) canPerformanceStrange->cd(1)->SetLogy();
-  fHistV0Multiplicity->SetMarkerStyle(25);
-  fHistV0Multiplicity->DrawCopy("E");
-  if (fHistV0MultiplicityMI->GetMaximum() > 0.) canPerformanceStrange->cd(2)->SetLogy();
-  fHistV0MultiplicityMI->SetMarkerStyle(24);
-  fHistV0MultiplicityMI->DrawCopy("E");
-  
-
-  
-}
-
-//----------------------------------------------------------------------------
-
-Double_t AliAnalysisTaskPerformanceStrange::MyRapidity(Double_t rE, Double_t rPz) const
-{
-  // Local calculation for rapidity
-  return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
-} 
-//----------------------------------------------------------------------------
-
diff --git a/PWG2/SPECTRA/AliAnalysisTaskPerformanceStrange.h b/PWG2/SPECTRA/AliAnalysisTaskPerformanceStrange.h
deleted file mode 100644 (file)
index 09507a3..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-#ifndef ALIANALYSISTASKPERFORMANCESTRANGE_H
-#define ALIANALYSISTASKPERFORMANCESTRANGE_H
-
-/*  See cxx source for full Copyright notice */
-
-//-----------------------------------------------------------------
-//             AliAnalysisTaskPerformanceSrange class
-//    This task is for a performance study of V0 identification.
-//                It works with MC info and ESD tree.
-//                 Author: H.Ricaud, H.Ricaud@gsi.de
-//-----------------------------------------------------------------
-
-class TString;
-class TList;
-class TH1F;
-class TH2F;
-class AliPhysicsSelection;
-
-#include "AliAnalysisTaskSE.h"
-
-class AliAnalysisTaskPerformanceStrange : public AliAnalysisTaskSE {
- public:
-  AliAnalysisTaskPerformanceStrange();
-  AliAnalysisTaskPerformanceStrange(const char *name);
-  virtual ~AliAnalysisTaskPerformanceStrange() {}
-  
-  virtual void   UserCreateOutputObjects();
-  virtual void   UserExec(Option_t *option);
-  virtual void   Terminate(Option_t *);
-  void   SetCollidingSystems(Int_t collidingSystems = 0) {fCollidingSystems = collidingSystems;}
-  void   SetAnalysisMC(Int_t analysisMC) {fAnalysisMC = analysisMC;}
-  void   SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
-  void   SetUsePID(const char* usePID) {fUsePID = usePID;}
-  void   SetAnalysisCut(const char* useCut) {fUseCut = useCut;}
-  Double_t MyRapidity(Double_t rE, Double_t rPz) const;
- private:
-  Int_t        fAnalysisMC;                     //  0->No MC or 1->MC analysis
-  TString      fAnalysisType;                   //  "ESD" or "AOD"
-  Int_t        fCollidingSystems;               //  Colliding systems 0/1 for pp/PbPb  
-  TString      fUsePID;                         //  "withPID" or "noPID"
-  TString      fUseCut;                         //  "yes" or "no"
-
-  AliPhysicsSelection *fPhysTrigSel;            //  Selection of events
-  TList               *fListHist;              //! Output List
-
-  // MC histograms
-  TH1F        *fHistMCPrimaryVertexX;      //! Histo
-  TH1F        *fHistMCPrimaryVertexY;      //! Histo
-  TH1F        *fHistMCPrimaryVertexZ;      //! Histo
-
-  TH1F        *fHistMCMultiplicityPrimary;       //! Histo
-  TH1F        *fHistMCMultiplicityTracks;       //! Histo
-  
-  TH2F        *fHistMCtracksProdRadiusK0s;       //! Histo
-  TH2F        *fHistMCtracksProdRadiusLambda;       //! Histo
-  TH2F        *fHistMCtracksProdRadiusAntiLambda;       //! Histo
-
-  TH1F        *fHistMCtracksDecayRadiusK0s;       //! Histo
-  TH1F        *fHistMCtracksDecayRadiusLambda;       //! Histo
-  TH1F        *fHistMCtracksDecayRadiusAntiLambda;       //! Histo
-
-  TH1F        *fHistMCPtAllK0s;       //! Histo
-  TH1F        *fHistMCPtAllLambda;       //! Histo
-  TH1F        *fHistMCPtAllAntiLambda;       //! Histo
-
-  TH1F        *fHistMCProdRadiusK0s;       //! Histo
-  TH1F        *fHistMCProdRadiusLambda;       //! Histo
-  TH1F        *fHistMCProdRadiusAntiLambda;       //! Histo
-
-  TH1F        *fHistMCPtK0s;       //! Histo
-  TH1F        *fHistMCPtLambda;       //! Histo
-  TH1F        *fHistMCPtAntiLambda;       //! Histo
-
-  TH1F        *fHistMCPtLambdaFromSigma;       //! Histo
-  TH1F        *fHistMCPtAntiLambdaFromSigma;       //! Histo
-
-  TH1F        *fHistNTimesRecK0s;       //! Histo
-  TH1F        *fHistNTimesRecK0sMI;       //! Histo
-  TH1F        *fHistNTimesRecLambda;       //! Histo
-  TH1F        *fHistNTimesRecLambdaMI;       //! Histo
-  TH1F        *fHistNTimesRecAntiLambda;       //! Histo
-  TH1F        *fHistNTimesRecAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistNTimesRecK0sVsPt;       //! Histo
-  TH2F        *fHistNTimesRecK0sVsPtMI;       //! Histo
-  TH2F        *fHistNTimesRecLambdaVsPt;       //! Histo
-  TH2F        *fHistNTimesRecLambdaVsPtMI;       //! Histo
-  TH2F        *fHistNTimesRecAntiLambdaVsPt;       //! Histo
-  TH2F        *fHistNTimesRecAntiLambdaVsPtMI;       //! Histo
-
-  // ESD histograms
-  TH1F        *fHistTrackPerEvent;       //! Histo
-  TH1F        *fHistMCDaughterTrack;       //! Histo
-
-  TH1F        *fHistPrimaryVertexX;       //! Histo
-  TH1F        *fHistPrimaryVertexY;       //! Histo
-  TH1F        *fHistPrimaryVertexZ;       //! Histo
-
-  TH1F        *fHistPrimaryVertexPosXV0events;  //! Primary vertex position in X in events with V0 candidates
-  TH1F        *fHistPrimaryVertexPosYV0events;  //! Primary vertex position in Y in events with V0 candidates
-  TH1F        *fHistPrimaryVertexPosZV0events;  //! Primary vertex position in Z in events with V0 candidates
-
-  TH2F        *fHistDcaPosToPrimVertex;       //! Histo
-  TH2F        *fHistDcaNegToPrimVertex;       //! Histo
-  TH2F        *fHistDcaPosToPrimVertexZoom;       //! Histo
-  TH2F        *fHistDcaNegToPrimVertexZoom;       //! Histo
-  TH2F        *fHistRadiusV0;       //! Histo
-  TH2F        *fHistDecayLengthV0;       //! Histo
-  TH2F        *fHistDcaV0Daughters;       //! Histo
-  TH2F        *fHistChi2;       //! Histo
-  TH2F        *fHistCosPointAngle;       //! Histo
-  TH2F        *fHistCosPointAngleZoom;       //! Histo
-  TH2F        *fHistProdRadius;       //! Histo
-  TH2F        *fHistProdRadiusMI;       //! Histo
-
-  TH1F        *fHistV0Multiplicity;  //! Histo
-  TH1F        *fHistV0MultiplicityMI; //! Histo
-
-  TH2F        *fHistChi2KFBeforeCutK0s;   //! Histo 
-  TH2F        *fHistChi2KFBeforeCutLambda;   //! Histo 
-  TH2F        *fHistChi2KFBeforeCutAntiLambda;   //! Histo  
-  TH2F        *fHistChi2KFAfterCutK0s;   //! Histo 
-  TH2F        *fHistChi2KFAfterCutLambda;   //! Histo 
-  TH2F        *fHistChi2KFAfterCutAntiLambda;   //! Histo
-
-  TH1F        *fHistMassK0;       //! Histo
-  TH1F        *fHistMassK0MI;       //! Histo
-  TH1F        *fHistMassLambda;       //! Histo
-  TH1F        *fHistMassLambdaMI;       //! Histo
-  TH1F        *fHistMassAntiLambda;       //! Histo
-  TH1F        *fHistMassAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistMassVsRadiusK0;       //! Histo
-  TH2F        *fHistMassVsRadiusK0MI;       //! Histo
-  TH2F        *fHistMassVsRadiusLambda;       //! Histo
-  TH2F        *fHistMassVsRadiusLambdaMI;       //! Histo
-  TH2F        *fHistMassVsRadiusAntiLambda;       //! Histo
-  TH2F        *fHistMassVsRadiusAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistPtVsMassK0;       //! Histo
-  TH2F        *fHistPtVsMassK0MI;       //! Histo
-  TH2F        *fHistPtVsMassLambda;       //! Histo
-  TH2F        *fHistPtVsMassLambdaMI;       //! Histo
-  TH2F        *fHistPtVsMassAntiLambda;       //! Histo
-  TH2F        *fHistPtVsMassAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistArmenterosPodolanski;       //! Histo
-  TH2F        *fHistArmenterosPodolanskiMI;       //! Histo
-
-  //PID
-  TH1F        *fHistNsigmaPosPionAntiLambda;    //! Histo
-  TH1F        *fHistNsigmaNegProtonAntiLambda;   //! Histo
-  TH1F        *fHistNsigmaPosProtonLambda;        //! Histo
-  TH1F        *fHistNsigmaNegPionLambda;           //! Histo
-  TH1F        *fHistNsigmaPosPionK0;                //! Histo
-  TH1F        *fHistNsigmaNegPionK0;                 //! Histo
-
-  // Associated particles histograms
-  TH1F        *fHistAsMcRapK0;       //! Histo
-  TH1F        *fHistAsMcRapK0MI;       //! Histo
-  TH1F        *fHistAsMcRapLambda;       //! Histo
-  TH1F        *fHistAsMcRapLambdaMI;       //! Histo
-  TH1F        *fHistAsMcRapAntiLambda;       //! Histo
-  TH1F        *fHistAsMcRapAntiLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcPtK0;       //! Histo
-  TH1F        *fHistAsMcPtK0MI;       //! Histo
-  TH1F        *fHistAsMcPtLambda;       //! Histo
-  TH1F        *fHistAsMcPtLambdaMI;       //! Histo
-  TH1F        *fHistAsMcPtAntiLambda;       //! Histo
-  TH1F        *fHistAsMcPtAntiLambdaMI;       //! Histo
-  TH1F        *fHistAsMcPtZoomK0;       //! Histo
-  TH1F        *fHistAsMcPtZoomK0MI;       //! Histo
-  TH1F        *fHistAsMcPtZoomLambda;       //! Histo
-  TH1F        *fHistAsMcPtZoomLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcProdRadiusK0;       //! Histo
-  TH1F        *fHistAsMcProdRadiusK0MI;       //! Histo
-  TH1F        *fHistAsMcProdRadiusLambda;       //! Histo
-  TH1F        *fHistAsMcProdRadiusLambdaMI;       //! Histo
-  TH1F        *fHistAsMcProdRadiusAntiLambda;       //! Histo
-  TH1F        *fHistAsMcProdRadiusAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistAsMcProdRadiusXvsYK0s;       //! Histo
-  TH2F        *fHistAsMcProdRadiusXvsYK0sMI;       //! Histo
-  TH2F        *fHistAsMcProdRadiusXvsYLambda;       //! Histo
-  TH2F        *fHistAsMcProdRadiusXvsYLambdaMI;       //! Histo
-  TH2F        *fHistAsMcProdRadiusXvsYAntiLambda;       //! Histo
-  TH2F        *fHistAsMcProdRadiusXvsYAntiLambdaMI;       //! Histo
-
-  TH1F        *fHistPidMcMassK0;       //! Histo
-  TH1F        *fHistPidMcMassK0MI;       //! Histo
-  TH1F        *fHistPidMcMassLambda;       //! Histo
-  TH1F        *fHistPidMcMassLambdaMI;       //! Histo
-  TH1F        *fHistPidMcMassAntiLambda;       //! Histo
-  TH1F        *fHistPidMcMassAntiLambdaMI;       //! Histo
-  TH1F        *fHistAsMcMassK0;       //! Histo
-  TH1F        *fHistAsMcMassK0MI;       //! Histo
-  TH1F        *fHistAsMcMassLambda;       //! Histo
-  TH1F        *fHistAsMcMassLambdaMI;       //! Histo
-  TH1F        *fHistAsMcMassAntiLambda;       //! Histo
-  TH1F        *fHistAsMcMassAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistAsMcPtVsMassK0;       //! Histo
-  TH2F        *fHistAsMcPtVsMassK0MI;       //! Histo
-  TH2F        *fHistAsMcPtVsMassLambda;       //! Histo
-  TH2F        *fHistAsMcPtVsMassLambdaMI;       //! Histo
-  TH2F        *fHistAsMcPtVsMassAntiLambda;       //! Histo
-  TH2F        *fHistAsMcPtVsMassAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistAsMcMassVsRadiusK0;       //! Histo
-  TH2F        *fHistAsMcMassVsRadiusK0MI;       //! Histo
-  TH2F        *fHistAsMcMassVsRadiusLambda;       //! Histo
-  TH2F        *fHistAsMcMassVsRadiusLambdaMI;       //! Histo
-  TH2F        *fHistAsMcMassVsRadiusAntiLambda;       //! Histo
-  TH2F        *fHistAsMcMassVsRadiusAntiLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcResxK0;       //! Histo
-  TH1F        *fHistAsMcResyK0;       //! Histo
-  TH1F        *fHistAsMcReszK0;       //! Histo
-
-  TH2F        *fHistAsMcResrVsRadiusK0;       //! Histo
-  TH2F        *fHistAsMcReszVsRadiusK0;       //! Histo
-
-  TH1F        *fHistAsMcResxK0MI;       //! Histo
-  TH1F        *fHistAsMcResyK0MI;       //! Histo
-  TH1F        *fHistAsMcReszK0MI;       //! Histo
-
-  TH2F        *fHistAsMcResrVsRadiusK0MI;       //! Histo
-  TH2F        *fHistAsMcReszVsRadiusK0MI;       //! Histo
-
-  TH1F        *fHistAsMcResxLambda;       //! Histo
-  TH1F        *fHistAsMcResyLambda;       //! Histo
-  TH1F        *fHistAsMcReszLambda;       //! Histo
-
-  TH2F        *fHistAsMcResrVsRadiusLambda;       //! Histo
-  TH2F        *fHistAsMcReszVsRadiusLambda;       //! Histo
-    
-  TH1F        *fHistAsMcResxLambdaMI;       //! Histo
-  TH1F        *fHistAsMcResyLambdaMI;       //! Histo
-  TH1F        *fHistAsMcReszLambdaMI;       //! Histo
-
-  TH2F        *fHistAsMcResrVsRadiusLambdaMI;       //! Histo
-  TH2F        *fHistAsMcReszVsRadiusLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcResxAntiLambda;       //! Histo
-  TH1F        *fHistAsMcResyAntiLambda;       //! Histo
-  TH1F        *fHistAsMcReszAntiLambda;       //! Histo
-
-  TH2F        *fHistAsMcResrVsRadiusAntiLambda;       //! Histo
-  TH2F        *fHistAsMcReszVsRadiusAntiLambda;       //! Histo
-    
-  TH1F        *fHistAsMcResxAntiLambdaMI;       //! Histo
-  TH1F        *fHistAsMcResyAntiLambdaMI;       //! Histo
-  TH1F        *fHistAsMcReszAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistAsMcResrVsRadiusAntiLambdaMI;       //! Histo
-  TH2F        *fHistAsMcReszVsRadiusAntiLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcResPtK0;       //! Histo
-  TH1F        *fHistAsMcResPtK0MI;       //! Histo
-  TH1F        *fHistAsMcResPtLambda;       //! Histo
-  TH1F        *fHistAsMcResPtLambdaMI;       //! Histo
-  TH1F        *fHistAsMcResPtAntiLambda;       //! Histo
-  TH1F        *fHistAsMcResPtAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistAsMcResPtVsRapK0;       //! Histo
-  TH2F        *fHistAsMcResPtVsRapK0MI;       //! Histo
-  TH2F        *fHistAsMcResPtVsRapLambda;       //! Histo
-  TH2F        *fHistAsMcResPtVsRapLambdaMI;       //! Histo
-  TH2F        *fHistAsMcResPtVsRapAntiLambda;       //! Histo
-  TH2F        *fHistAsMcResPtVsRapAntiLambdaMI;       //! Histo
-  TH2F        *fHistAsMcResPtVsPtK0;       //! Histo
-  TH2F        *fHistAsMcResPtVsPtK0MI;       //! Histo
-  TH2F        *fHistAsMcResPtVsPtLambda;       //! Histo
-  TH2F        *fHistAsMcResPtVsPtLambdaMI;       //! Histo
-  TH2F        *fHistAsMcResPtVsPtAntiLambda;       //! Histo
-  TH2F        *fHistAsMcResPtVsPtAntiLambdaMI;       //! Histo
-  
-
-  TH1F        *fHistAsMcMotherPdgCodeK0s;       //! Histo
-  TH1F        *fHistAsMcMotherPdgCodeK0sMI;       //! Histo
-  TH1F        *fHistAsMcMotherPdgCodeLambda;       //! Histo
-  TH1F        *fHistAsMcMotherPdgCodeLambdaMI;       //! Histo
-  TH1F        *fHistAsMcMotherPdgCodeAntiLambda;       //! Histo
-  TH1F        *fHistAsMcMotherPdgCodeAntiLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcPtLambdaFromSigma;       //! Histo
-  TH1F        *fHistAsMcPtLambdaFromSigmaMI;       //! Histo
-  TH1F        *fHistAsMcPtAntiLambdaFromSigma;       //! Histo
-  TH1F        *fHistAsMcPtAntiLambdaFromSigmaMI;       //! Histo
-
-  // Associated secondary particles:
-  TH2F        *fHistAsMcSecondaryPtVsRapK0s;       //! Histo
-  TH2F        *fHistAsMcSecondaryPtVsRapK0sMI;       //! Histo
-  TH2F        *fHistAsMcSecondaryPtVsRapLambda;       //! Histo
-  TH2F        *fHistAsMcSecondaryPtVsRapLambdaMI;       //! Histo
-  TH2F        *fHistAsMcSecondaryPtVsRapAntiLambda;       //! Histo
-  TH2F        *fHistAsMcSecondaryPtVsRapAntiLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcSecondaryProdRadiusK0s;       //! Histo
-  TH1F        *fHistAsMcSecondaryProdRadiusK0sMI;       //! Histo
-  TH1F        *fHistAsMcSecondaryProdRadiusLambda;       //! Histo
-  TH1F        *fHistAsMcSecondaryProdRadiusLambdaMI;       //! Histo
-  TH1F        *fHistAsMcSecondaryProdRadiusAntiLambda;       //! Histo
-  TH1F        *fHistAsMcSecondaryProdRadiusAntiLambdaMI;       //! Histo
-
-  TH2F        *fHistAsMcSecondaryProdRadiusXvsYK0s;       //! Histo
-  TH2F        *fHistAsMcSecondaryProdRadiusXvsYK0sMI;       //! Histo
-  TH2F        *fHistAsMcSecondaryProdRadiusXvsYLambda;       //! Histo
-  TH2F        *fHistAsMcSecondaryProdRadiusXvsYLambdaMI;       //! Histo
-  TH2F        *fHistAsMcSecondaryProdRadiusXvsYAntiLambda;       //! Histo
-  TH2F        *fHistAsMcSecondaryProdRadiusXvsYAntiLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcSecondaryMotherPdgCodeK0s;       //! Histo
-  TH1F        *fHistAsMcSecondaryMotherPdgCodeK0sMI;       //! Histo
-  TH1F        *fHistAsMcSecondaryMotherPdgCodeLambda;       //! Histo
-  TH1F        *fHistAsMcSecondaryMotherPdgCodeLambdaMI;       //! Histo
-  TH1F        *fHistAsMcSecondaryMotherPdgCodeAntiLambda;       //! Histo
-  TH1F        *fHistAsMcSecondaryMotherPdgCodeAntiLambdaMI;       //! Histo
-
-  TH1F        *fHistAsMcSecondaryPtLambdaFromSigma;       //! Histo
-  TH1F        *fHistAsMcSecondaryPtLambdaFromSigmaMI;       //! Histo
-  TH1F        *fHistAsMcSecondaryPtAntiLambdaFromSigma;       //! Histo
-  TH1F        *fHistAsMcSecondaryPtAntiLambdaFromSigmaMI;       //! Histo
-
-  AliAnalysisTaskPerformanceStrange(const AliAnalysisTaskPerformanceStrange&); 
-  AliAnalysisTaskPerformanceStrange& operator=(const AliAnalysisTaskPerformanceStrange&); 
-
-  ClassDef(AliAnalysisTaskPerformanceStrange, 1); 
-};
-
-#endif
diff --git a/PWG2/SPECTRA/AliAnalysisTaskStrange.cxx b/PWG2/SPECTRA/AliAnalysisTaskStrange.cxx
deleted file mode 100644 (file)
index 43abe79..0000000
+++ /dev/null
@@ -1,561 +0,0 @@
-
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-//-----------------------------------------------------------------
-//                 AliAnalysisTaskStrange class
-//       This task is for single strange study from ESD/AOD
-//          Origin: H.Ricaud, Helene.Ricaud@IReS.in2p3.fr
-//-----------------------------------------------------------------
-#include "TList.h"
-#include "TH1F.h"
-#include "TH2F.h"
-#include "TCanvas.h"
-#include "TMath.h"
-
-#include "AliAnalysisTaskSE.h"
-
-#include "AliESDVertex.h"
-#include "AliESDEvent.h"
-#include "AliAODEvent.h"
-
-#include "AliESDv0.h"
-#include "AliESDtrack.h"
-#include "AliAODv0.h"
-#include "AliAODTrack.h"
-
-#include "AliLog.h"
-
-#include "AliAnalysisTaskStrange.h"
-
-ClassImp(AliAnalysisTaskStrange)
-
-//________________________________________________________________________
-AliAnalysisTaskStrange::AliAnalysisTaskStrange() 
-  : AliAnalysisTaskSE(), fAnalysisType("ESD"), fCollidingSystems(0), fUseCut("infoCut"), fListHist(),
-    fHistPrimaryVertexPosX(0), fHistPrimaryVertexPosY(0), fHistPrimaryVertexPosZ(0),
-    fHistTrackMultiplicity(0), fHistV0Multiplicity(0),
-    fHistDcaPosToPrimVertex(0), fHistDcaNegToPrimVertex(0),
-    fHistDcaPosToPrimVertexZoom(0), fHistDcaNegToPrimVertexZoom(0),
-    fHistRadiusV0(0), fHistDecayLengthV0(0), fHistDcaV0Daughters(0), fHistChi2(0),
-    fHistCosPointAngle(0), fHistCosPointAngleZoom(0),
-    fHistV0MultiplicityOff(0),
-    fHistPtVsYK0sOff(0), fHistPtVsYLambdaOff(0), fHistPtVsYAntiLambdaOff(0),
-    fHistMassK0sOff(0), fHistMassLambdaOff(0), fHistMassAntiLambdaOff(0),
-    fHistMassVsRadiusK0sOff(0), fHistMassVsRadiusLambdaOff(0), fHistMassVsRadiusAntiLambdaOff(0),
-    fHistPtVsMassK0sOff(0), fHistPtVsMassLambdaOff(0), fHistPtVsMassAntiLambdaOff(0),
-    fHistArmenterosPodolanskiOff(0),
-    fHistV0MultiplicityOn(0),
-    fHistPtVsYK0sOn(0), fHistPtVsYLambdaOn(0), fHistPtVsYAntiLambdaOn(0),
-    fHistMassK0sOn(0), fHistMassLambdaOn(0), fHistMassAntiLambdaOn(0),
-    fHistMassVsRadiusK0sOn(0), fHistMassVsRadiusLambdaOn(0), fHistMassVsRadiusAntiLambdaOn(0),
-    fHistPtVsMassK0sOn(0), fHistPtVsMassLambdaOn(0), fHistPtVsMassAntiLambdaOn(0),
-    fHistArmenterosPodolanskiOn(0)
-{
-  // Dummy constructor
-}
-//________________________________________________________________________
-AliAnalysisTaskStrange::AliAnalysisTaskStrange(const char *name) 
-  : AliAnalysisTaskSE(name), fAnalysisType("ESD"), fCollidingSystems(0), fUseCut("infocut"), fListHist(),
-    fHistPrimaryVertexPosX(0), fHistPrimaryVertexPosY(0), fHistPrimaryVertexPosZ(0),
-    fHistTrackMultiplicity(0), fHistV0Multiplicity(0),
-    fHistDcaPosToPrimVertex(0), fHistDcaNegToPrimVertex(0),
-    fHistDcaPosToPrimVertexZoom(0), fHistDcaNegToPrimVertexZoom(0),
-    fHistRadiusV0(0), fHistDecayLengthV0(0), fHistDcaV0Daughters(0), fHistChi2(0),
-    fHistCosPointAngle(0), fHistCosPointAngleZoom(0),
-    fHistV0MultiplicityOff(0),
-    fHistPtVsYK0sOff(0), fHistPtVsYLambdaOff(0), fHistPtVsYAntiLambdaOff(0),
-    fHistMassK0sOff(0), fHistMassLambdaOff(0), fHistMassAntiLambdaOff(0),
-    fHistMassVsRadiusK0sOff(0), fHistMassVsRadiusLambdaOff(0), fHistMassVsRadiusAntiLambdaOff(0),
-    fHistPtVsMassK0sOff(0), fHistPtVsMassLambdaOff(0), fHistPtVsMassAntiLambdaOff(0),
-    fHistArmenterosPodolanskiOff(0),
-    fHistV0MultiplicityOn(0),
-    fHistPtVsYK0sOn(0), fHistPtVsYLambdaOn(0), fHistPtVsYAntiLambdaOn(0),
-    fHistMassK0sOn(0), fHistMassLambdaOn(0), fHistMassAntiLambdaOn(0),
-    fHistMassVsRadiusK0sOn(0), fHistMassVsRadiusLambdaOn(0), fHistMassVsRadiusAntiLambdaOn(0),
-    fHistPtVsMassK0sOn(0), fHistPtVsMassLambdaOn(0), fHistPtVsMassAntiLambdaOn(0),
-    fHistArmenterosPodolanskiOn(0)
-{
-  // Constructor
-  // Define output slots only here
-  // Output slot #1 writes into a TList container
-  DefineOutput(1, TList::Class());
-}
-//________________________________________________________________________
-AliAnalysisTaskStrange::~AliAnalysisTaskStrange(){
-  // Destructor
-  if (fListHist) { delete fListHist; fListHist = 0x0; }
-}
-//________________________________________________________________________
-void AliAnalysisTaskStrange::UserCreateOutputObjects() 
-{
-  // Create histograms
-  // Called once
-
-  fListHist = new TList();
-  fListHist->SetOwner();
-
-  // Primary Vertex:
-  fHistPrimaryVertexPosX       = new TH1F("h1PrimaryVertexPosX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
-  fListHist->Add(fHistPrimaryVertexPosX);
-  fHistPrimaryVertexPosY       = new TH1F("h1PrimaryVertexPosY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
-  fListHist->Add(fHistPrimaryVertexPosY);
-  fHistPrimaryVertexPosZ       = new TH1F("h1PrimaryVertexPosZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-2.0,2.0);
-  fListHist->Add(fHistPrimaryVertexPosZ);
-
-  // Multiplicity:
-  if (!fHistTrackMultiplicity) {
-    if (fCollidingSystems)
-      fHistTrackMultiplicity = new TH1F("fHistTrackMultiplicity", "Multiplicity distribution;Number of tracks;Events", 200, 0, 40000);
-    else
-      fHistTrackMultiplicity = new TH1F("fHistTrackMultiplicity", "Multiplicity distribution;Number of tracks;Events", 250, 0, 250);
-    fListHist->Add(fHistTrackMultiplicity);
-  }
-  if (!fHistV0Multiplicity) {
-    if (fCollidingSystems)
-      fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of V0s;Events", 200, 0, 40000);
-    else
-      fHistV0Multiplicity = new TH1F("fHistV0Multiplicity", "Multiplicity distribution;Number of V0s;Events", 50, 0, 50);
-    fListHist->Add(fHistV0Multiplicity);
-  }
-
-  // Selection checks:
-  fHistDcaPosToPrimVertex      = new TH2F("h2DcaPosToPrimVertex", "Positive V0 daughter;dca(cm);Status",500,0,5,2,-0.5,1.5);
-  fListHist->Add(fHistDcaPosToPrimVertex);
-  fHistDcaNegToPrimVertex      = new TH2F("h2DcaNegToPrimVertex", "Negative V0 daughter;dca(cm);Status",500,0,5,2,-0.5,1.5);
-  fListHist->Add(fHistDcaNegToPrimVertex);
-  fHistDcaPosToPrimVertexZoom  = new TH2F("h2DcaPosToPrimVertexZoom", "Positive V0 daughter;dca(cm);Status",100,0,0.1,2,-0.5,1.5);
-  fListHist->Add(fHistDcaPosToPrimVertexZoom);
-  fHistDcaNegToPrimVertexZoom  = new TH2F("h2DcaNegToPrimVertexZoom", "Negative V0 daughter;dca(cm);Status",100,0,0.1,2,-0.5,1.5);
-  fListHist->Add(fHistDcaNegToPrimVertexZoom);
-  fHistRadiusV0                = new TH2F("h2RadiusV0", "Radius;Radius(cm);Status",1000,0,100,2,-0.5,1.5);
-  fListHist->Add(fHistRadiusV0);
-  fHistDecayLengthV0           = new TH2F("h2DecayLengthV0", "V0s decay Length;decay length(cm);Status", 200, 0, 100,2,-0.5,1.5);
-  fListHist->Add(fHistDecayLengthV0);
-  fHistDcaV0Daughters          = new TH2F("h2DcaV0Daughters", "DCA between daughters;dca(cm);Status", 160, 0, 4,2,-0.5,1.5);
-  fListHist->Add(fHistDcaV0Daughters);
-  fHistChi2                    = new TH2F("h2Chi2", "V0s chi2;chi2;Status", 33, 0, 33,2,-0.5,1.5);
-  fListHist->Add(fHistChi2);
-  fHistCosPointAngle           = new TH2F("h2CosPointAngle", "Cosine of V0's pointing angle", 100,0,1,2,-0.5,1.5);
-  fListHist->Add(fHistCosPointAngle);
-  fHistCosPointAngleZoom       = new TH2F("h2CosPointAngleZoom", "Cosine of V0's pointing angle", 100,0.9,1,2,-0.5,1.5);
-  fListHist->Add(fHistCosPointAngleZoom);
-
-  // bounds of histograms:
-  // Radius
-  const Double_t radius[10] = {0.0,2.5,2.9,3.9,7.6,15.0,23.9,37.8,42.8,100.0};
-  Int_t nBinRadius        = 9;
-
-  // V0 offline distributions
-  if (!fHistV0MultiplicityOff) {
-    if (fCollidingSystems)
-      fHistV0MultiplicityOff = new TH1F("fHistV0MultiplicityOff", "Multiplicity distribution;Number of V0s;Events", 200, 0, 40000);
-    else
-      fHistV0MultiplicityOff = new TH1F("fHistV0MultiplicityOff", "Multiplicity distribution;Number of V0s;Events", 50, 0, 50); 
-    fListHist->Add(fHistV0MultiplicityOff);
-  }
-  // Pt vs rapidity:
-  fHistPtVsYK0sOff             = new TH2F("h2PtVsYK0sOff", "K^{0} Offline candidates;p_{t} (GeV/c);rapidity",30,0,15,30,-1.5,1.5);
-  fListHist->Add(fHistPtVsYK0sOff);
-  fHistPtVsYLambdaOff          = new TH2F("h2PtVsYLambdaOff", "#Lambda^{0} Offline candidates;p_{t} (GeV/c);rapidity",30,0,15,30,-1.5,1.5);
-  fListHist->Add(fHistPtVsYLambdaOff);
-  fHistPtVsYAntiLambdaOff      = new TH2F("h2PtVsYAntiLambdaOff", "#bar{#Lambda}^{0} Offline candidates;p_{t} (GeV/c);rapidity",30,0,15,30,-1.5,1.5);
-  fListHist->Add(fHistPtVsYAntiLambdaOff);
-  // Mass:
-  fHistMassK0sOff               = new TH1F("h1MassK0sOff", "K^{0} Offline candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
-  fListHist->Add(fHistMassK0sOff);
-  fHistMassLambdaOff            = new TH1F("h1MassLambdaOff", "#Lambda^{0} Offline candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistMassLambdaOff);
-  fHistMassAntiLambdaOff          = new TH1F("h1MassAntiLambdaOff", "#bar{#Lambda}^{0} Offline candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistMassAntiLambdaOff);
-  // Mass vs radius:
-  fHistMassVsRadiusK0sOff           = new TH2F("h2MassVsRadiusK0sOff", "K^{0} Offline candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",nBinRadius,radius, 200, 0.4, 0.6);
-  fListHist->Add(fHistMassVsRadiusK0sOff);
-  fHistMassVsRadiusLambdaOff       = new TH2F("h2MassVsRadiusLambdaOff", "#Lambda Offline candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",nBinRadius,radius, 140, 1.06, 1.2);
-  fListHist->Add(fHistMassVsRadiusLambdaOff);
-  fHistMassVsRadiusAntiLambdaOff = new TH2F("h2MassVsRadiusAntiLambdaOff", "#bar{#Lambda} Offline candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",nBinRadius,radius, 140, 1.06, 1.2);
-  fListHist->Add(fHistMassVsRadiusAntiLambdaOff);
-  // Pt Vs Mass:
-  fHistPtVsMassK0sOff             = new TH2F("h2PtVsMassK0sOff","K^{0} Offline candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,100,0,10);
-  fListHist->Add(fHistPtVsMassK0sOff);
-  fHistPtVsMassLambdaOff         = new TH2F("h2PtVsMassLambdaOff","#Lambda^{0} Offline candidates;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
-  fListHist->Add(fHistPtVsMassLambdaOff);
-  fHistPtVsMassAntiLambdaOff     = new TH2F("h2PtVsMassAntiLambdaOff","#bar{#Lambda}^{0} Offline candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
-  fListHist->Add(fHistPtVsMassAntiLambdaOff);
-  //ArmenterosPodolanski:
-  fHistArmenterosPodolanskiOff   = new TH2F("h2ArmenterosPodolanskiOff","Armenteros-Podolanski Offline phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
-  fListHist->Add(fHistArmenterosPodolanskiOff);
-
-  // V0 on-the-fly distributions
-  if (!fHistV0MultiplicityOn) {
-    if (fCollidingSystems)
-      fHistV0MultiplicityOn = new TH1F("fHistV0MultiplicityOn", "Multiplicity distribution;Number of V0s;Events", 200, 0, 40000);
-    else
-      fHistV0MultiplicityOn = new TH1F("fHistV0MultiplicityOn", "Multiplicity distribution;Number of V0s;Events", 50, 0, 50);
-    fListHist->Add(fHistV0MultiplicityOn);
-  }
-  // Pt vs rapidity:
-  fHistPtVsYK0sOn              = new TH2F("h2PtVsYK0sOn", "K^{0} Onthefly candidates;p_{t} (GeV/c);rapidity",30,0,15,30,-1.5,1.5);
-  fListHist->Add(fHistPtVsYK0sOn);
-  fHistPtVsYLambdaOn           = new TH2F("h2PtVsYLambdaOn", "#Lambda^{0} Onthefly candidates;p_{t} (GeV/c);rapidity",30,0,15,30,-1.5,1.5);
-  fListHist->Add(fHistPtVsYLambdaOn);
-  fHistPtVsYAntiLambdaOn       = new TH2F("h2PtVsYAntiLambdaOn", "#bar{#Lambda}^{0} Onthefly candidates;p_{t} (GeV/c);rapidity",30,0,15,30,-1.5,1.5);
-  fListHist->Add(fHistPtVsYAntiLambdaOn);
-  // Mass:
-  fHistMassK0sOn                = new TH1F("h1MassK0sOn", "K^{0} Onthefly candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});Counts", 100, 0.4, 0.6);
-  fListHist->Add(fHistMassK0sOn);
-  fHistMassLambdaOn            = new TH1F("h1MassLambdaOn", "#Lambda^{0} Onthefly candidates;M(p#pi^{-}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistMassLambdaOn);
-  fHistMassAntiLambdaOn        = new TH1F("h1MassAntiLambdaOn", "#bar{#Lambda}^{0} Onthefly candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});Counts", 75, 1.05, 1.2);
-  fListHist->Add(fHistMassAntiLambdaOn);
-  // Mass vs radius:
-  fHistMassVsRadiusK0sOn         = new TH2F("h2MassVsRadiusK0sOn", "K^{0} Onthefly candidates;radius (cm);M(#pi^{+}#pi^{-}) (GeV/c^{2})",nBinRadius,radius, 200, 0.4, 0.6);
-  fListHist->Add(fHistMassVsRadiusK0sOn);
-  fHistMassVsRadiusLambdaOn     = new TH2F("h2MassVsRadiusLambdaOn", "#Lambda Onthefly candidates;radius (cm);M(p#pi^{-}) (GeV/c^{2})",nBinRadius,radius, 140, 1.06, 1.2);
-  fListHist->Add(fHistMassVsRadiusLambdaOn);
-  fHistMassVsRadiusAntiLambdaOn  = new TH2F("h2MassVsRadiusAntiLambdaOn", "#bar{#Lambda} Onthefly candidates;radius (cm);M(#bar{p}#pi^{+}) (GeV/c^{2})",nBinRadius,radius, 140, 1.06, 1.2);
-  fListHist->Add(fHistMassVsRadiusAntiLambdaOn);
-  // Pt Vs Mass:
-  fHistPtVsMassK0sOn              = new TH2F("h2PtVsMassK0sOn","K^{0} Onthefly candidates;M(#pi^{+}#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",200, 0.4, 0.6,100,0,10);
-  fListHist->Add(fHistPtVsMassK0sOn);
-  fHistPtVsMassLambdaOn          = new TH2F("h2PtVsMassLambdaOn","#Lambda^{0} Onthefly candidates;M(p#pi^{-}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
-  fListHist->Add(fHistPtVsMassLambdaOn);
-  fHistPtVsMassAntiLambdaOn      = new TH2F("h2PtVsMassAntiLambdaOn","#bar{#Lambda}^{0} Onthefly candidates;M(#bar{p}#pi^{+}) (GeV/c^{2});p_{t} (GeV/c)",140, 1.06, 1.2,100,0,10);
-  fListHist->Add(fHistPtVsMassAntiLambdaOn);
-  //ArmenterosPodolanski:
-  fHistArmenterosPodolanskiOn    = new TH2F("h2ArmenterosPodolanskiOn","Armenteros-Podolanski Onthefly phase space;#alpha;p_{t} arm",100,-1.0,1.0,50,0,0.5);
-  fListHist->Add(fHistArmenterosPodolanskiOn);
-
-  // Post output data.
-  PostData(1, fListHist);
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskStrange::UserExec(Option_t *) 
-{
-  // Main loop
-  // Called for each event
-  AliVEvent* lEvent = InputEvent();
-  if (!lEvent) {
-    Printf("ERROR: Event not available");
-    return;
-  }
-
-  if (!(lEvent->GetNumberOfTracks())) {
-    //Printf("Strange analysis task: There is no track in this event");
-    return;
-  }
-  fHistTrackMultiplicity->Fill(lEvent->GetNumberOfTracks());
-
-  Double_t tPrimaryVtxPosition[3];
-
-  Int_t nv0s = 0;
-  nv0s = lEvent->GetNumberOfV0s();
-  //Printf("Strange analysis task: There are %d v0s in this event",nv0s);
-
-  Int_t    lOnFlyStatus = 0, nv0sOn = 0, nv0sOff = 0;
-  Double_t lChi2V0 = 0;
-  Double_t lDcaV0Daughters = 0, lDcaV0ToPrimVertex = 0;
-  Double_t lDcaPosToPrimVertex = 0, lDcaNegToPrimVertex = 0;
-  Double_t lV0CosineOfPointingAngle = 0;
-  Double_t lV0Radius = 0;
-  Double_t lV0DecayLength = 0;
-  Double_t lInvMassK0s = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
-  Double_t lPt       = 0, lRapK0s = 0, lRapLambda = 0;
-  Double_t lAlphaV0  = 0, lPtArmV0 = 0;
-
-  Double_t  tV0Position[3];
-
-  Double_t lMagneticField      = 999;
-
-
-  //***********************
-  // ESD loop
-  //***********************
-
-  if(fAnalysisType == "ESD") {
-
-    const AliESDVertex *primaryVtx = ((AliESDEvent*)lEvent)->GetPrimaryVertex();
-    tPrimaryVtxPosition[0] = primaryVtx->GetXv();
-    tPrimaryVtxPosition[1] = primaryVtx->GetYv();
-    tPrimaryVtxPosition[2] = primaryVtx->GetZv();
-
-    fHistPrimaryVertexPosX->Fill(tPrimaryVtxPosition[0]);
-    fHistPrimaryVertexPosY->Fill(tPrimaryVtxPosition[1]);
-    fHistPrimaryVertexPosZ->Fill(tPrimaryVtxPosition[2]);
-
-    lMagneticField = ((AliESDEvent*)lEvent)->GetMagneticField();
-  
-
-    for (Int_t iV0 = 0; iV0 < nv0s; iV0++)
-      {// This is the begining of the V0 loop  
-       AliESDv0 *v0 = ((AliESDEvent*)lEvent)->GetV0(iV0);
-       if (!v0) continue;
-
-       // AliAODtrack (V0 Daughters)
-       UInt_t lKeyPos = (UInt_t)TMath::Abs(v0->GetPindex());
-       UInt_t lKeyNeg = (UInt_t)TMath::Abs(v0->GetNindex());
-
-       AliESDtrack *pTrack = ((AliESDEvent*)lEvent)->GetTrack(lKeyPos);
-       AliESDtrack *nTrack = ((AliESDEvent*)lEvent)->GetTrack(lKeyNeg);
-       if (!pTrack || !nTrack) {
-         Printf("ERROR: Could not retreive one of the daughter track");
-         continue;
-       }
-
-       // Remove like-sign
-       if ( pTrack->GetSign() == nTrack->GetSign()){
-         //cout<< "like sign, continue"<< endl;
-         continue;
-       } 
-
-       // Tracks quality cuts 
-       if ( ( (pTrack->GetTPCNcls()) < 80 ) || ( (nTrack->GetTPCNcls()) < 80 ) ) continue;
-       
-       // TPC refit condition (done during reconstruction for Offline but not for On-the-fly)
-       if( !(pTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;      
-       if( !(nTrack->GetStatus() & AliESDtrack::kTPCrefit)) continue;
-
-       // DCA between daughter and Primary Vertex:
-       if (pTrack) lDcaPosToPrimVertex = TMath::Abs(pTrack->GetD(tPrimaryVtxPosition[0],tPrimaryVtxPosition[1],lMagneticField) );
-
-       if (nTrack) lDcaNegToPrimVertex = TMath::Abs(nTrack->GetD(tPrimaryVtxPosition[0],tPrimaryVtxPosition[1],lMagneticField) );
-
-       // VO's main characteristics:
-       lOnFlyStatus             = v0->GetOnFlyStatus();
-       lChi2V0                  = v0->GetChi2V0();
-       lDcaV0Daughters          = v0->GetDcaV0Daughters();
-       lDcaV0ToPrimVertex       = v0->GetD(tPrimaryVtxPosition[0],tPrimaryVtxPosition[1],tPrimaryVtxPosition[2]);
-       lV0CosineOfPointingAngle = v0->GetV0CosineOfPointingAngle(tPrimaryVtxPosition[0],tPrimaryVtxPosition[1], tPrimaryVtxPosition[2]);
-       v0->GetXYZ(tV0Position[0], tV0Position[1], tV0Position[2]);
-       lV0Radius      = TMath::Sqrt(tV0Position[0]*tV0Position[0]+tV0Position[1]*tV0Position[1]);
-       lV0DecayLength = TMath::Sqrt(TMath::Power(tV0Position[0] - tPrimaryVtxPosition[0],2) +
-                                    TMath::Power(tV0Position[1] - tPrimaryVtxPosition[1],2) +
-                                    TMath::Power(tV0Position[2] - tPrimaryVtxPosition[2],2 ));
-
-       // Invariant mass
-       v0->ChangeMassHypothesis(310);
-       lInvMassK0s = v0->GetEffMass();
-       v0->ChangeMassHypothesis(3122);
-       lInvMassLambda = v0->GetEffMass();
-       v0->ChangeMassHypothesis(-3122);
-       lInvMassAntiLambda = v0->GetEffMass();
-
-       // Rapidity:
-       lRapK0s    = v0->Y(310);
-       lRapLambda = v0->Y(3122);
-       
-       // Pt:
-       lPt = v0->Pt();
-       
-       // Armenteros variables: !!
-       lAlphaV0      = v0->AlphaV0();
-       lPtArmV0      = v0->PtArmV0();
-       
-       // Selections:
-       if (fUseCut.Contains("yes")) {
-         if ( (lDcaPosToPrimVertex      < 0.036 )||
-              (lDcaNegToPrimVertex      < 0.036 )||
-              (lDcaV0Daughters          > 0.5 )  ||
-              (lV0CosineOfPointingAngle < 0.99)     
-              ) continue;
-       }
-    
-       // Filling histograms
-       fHistDcaPosToPrimVertex->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
-       fHistDcaNegToPrimVertex->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
-       fHistDcaPosToPrimVertexZoom->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
-       fHistDcaNegToPrimVertexZoom->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
-       fHistRadiusV0->Fill(lV0Radius,lOnFlyStatus);
-       fHistDecayLengthV0->Fill(lV0DecayLength,lOnFlyStatus);
-       fHistDcaV0Daughters->Fill(lDcaV0Daughters,lOnFlyStatus);
-       fHistChi2->Fill(lChi2V0,lOnFlyStatus);
-       fHistCosPointAngle->Fill(lV0CosineOfPointingAngle,lOnFlyStatus);
-       if (lV0CosineOfPointingAngle >= 0.9) fHistCosPointAngleZoom->Fill(lV0CosineOfPointingAngle,lOnFlyStatus);
-       if(!lOnFlyStatus){
-         nv0sOff++;
-         fHistPtVsYK0sOff->Fill(lPt,lRapK0s);
-         fHistPtVsYLambdaOff->Fill(lPt,lRapLambda);
-         fHistPtVsYAntiLambdaOff->Fill(lPt,lRapLambda);
-         fHistArmenterosPodolanskiOff->Fill(lAlphaV0,lPtArmV0);
-       }
-       else {
-         nv0sOn++;
-         fHistPtVsYK0sOn->Fill(lPt,lRapK0s);
-         fHistPtVsYLambdaOn->Fill(lPt,lRapLambda);
-         fHistPtVsYAntiLambdaOn->Fill(lPt,lRapLambda);
-         fHistArmenterosPodolanskiOn->Fill(lAlphaV0,lPtArmV0);
-       }
-       // K0s invariant mass histograms:
-       if (TMath::Abs(lRapK0s) < 1) {  
-         if(!lOnFlyStatus){
-           fHistMassK0sOff->Fill(lInvMassK0s);
-           fHistMassVsRadiusK0sOff->Fill(lV0Radius,lInvMassK0s);
-           fHistPtVsMassK0sOff->Fill(lInvMassK0s,lPt);
-         }
-         else {
-           fHistMassK0sOn->Fill(lInvMassK0s);
-           fHistMassVsRadiusK0sOn->Fill(lV0Radius,lInvMassK0s);
-           fHistPtVsMassK0sOn->Fill(lInvMassK0s,lPt);
-         }
-       }
-       // Lambda and AntiLambda invariant mass histograms:
-       if (TMath::Abs(lRapLambda) < 1) {
-         if(!lOnFlyStatus){
-           fHistMassLambdaOff->Fill(lInvMassLambda);
-           fHistMassAntiLambdaOff->Fill(lInvMassAntiLambda);
-           fHistMassVsRadiusLambdaOff->Fill(lV0Radius,lInvMassLambda);
-           fHistMassVsRadiusAntiLambdaOff->Fill(lV0Radius,lInvMassAntiLambda);
-           fHistPtVsMassLambdaOff->Fill(lInvMassLambda,lPt);
-           fHistPtVsMassAntiLambdaOff->Fill(lInvMassAntiLambda,lPt);
-         }
-         else {
-           fHistMassLambdaOn->Fill(lInvMassLambda);
-           fHistMassAntiLambdaOn->Fill(lInvMassAntiLambda);
-           fHistMassVsRadiusLambdaOn->Fill(lV0Radius,lInvMassLambda);
-           fHistMassVsRadiusAntiLambdaOn->Fill(lV0Radius,lInvMassAntiLambda);
-           fHistPtVsMassLambdaOn->Fill(lInvMassLambda,lPt);
-           fHistPtVsMassAntiLambdaOn->Fill(lInvMassAntiLambda,lPt);
-         }
-       }
-      } // end V0 loop
-
-  }
-
-  //***********************
-  // AOD loop
-  //***********************
-
-  else if(fAnalysisType == "AOD") {
-
-    const AliAODVertex *primaryVtx = ((AliAODEvent*)lEvent)->GetPrimaryVertex();
-    tPrimaryVtxPosition[0] = primaryVtx->GetX();
-    tPrimaryVtxPosition[1] = primaryVtx->GetY();
-    tPrimaryVtxPosition[2] = primaryVtx->GetZ();
-
-    fHistPrimaryVertexPosX->Fill(tPrimaryVtxPosition[0]);
-    fHistPrimaryVertexPosY->Fill(tPrimaryVtxPosition[1]);
-    fHistPrimaryVertexPosZ->Fill(tPrimaryVtxPosition[2]);
-  
-    for (Int_t iV0 = 0; iV0 < nv0s; iV0++) 
-      {// This is the begining of the V0 loop
-       AliAODv0 *myAODv0 = ((AliAODEvent*)lEvent)->GetV0(iV0);
-       if (!myAODv0) continue;
-
-       // common part
-       lV0Radius                = myAODv0->RadiusV0();
-       lDcaPosToPrimVertex      = myAODv0->DcaPosToPrimVertex();
-       lDcaNegToPrimVertex      = myAODv0->DcaNegToPrimVertex();
-       lOnFlyStatus             = myAODv0->GetOnFlyStatus();
-       lChi2V0                  = myAODv0->Chi2V0();
-       lDcaV0Daughters          = myAODv0->DcaV0Daughters();
-       lDcaV0ToPrimVertex       = myAODv0->DcaV0ToPrimVertex();
-       lV0DecayLength           = myAODv0->DecayLengthV0(tPrimaryVtxPosition);
-       lV0CosineOfPointingAngle = myAODv0->CosPointingAngle(tPrimaryVtxPosition);
-
-       lInvMassK0s        = myAODv0->MassK0Short();
-       lInvMassLambda     = myAODv0->MassLambda();
-       lInvMassAntiLambda = myAODv0->MassAntiLambda();
-
-       lPt        = TMath::Sqrt(myAODv0->Pt2V0());
-       lRapK0s    = myAODv0->RapK0Short();
-       lRapLambda = myAODv0->RapLambda();
-       lAlphaV0   = myAODv0->AlphaV0();
-       lPtArmV0   = myAODv0->PtArmV0();
-
-
-       // Selections:
-       if (fUseCut.Contains("yes")) {
-         if ( (lDcaPosToPrimVertex      < 0.036 )||
-              (lDcaNegToPrimVertex      < 0.036 )||
-              (lDcaV0Daughters          > 0.5 )  ||
-              (lV0CosineOfPointingAngle < 0.99)     
-              ) continue;
-       }
-    
-       // Filling histograms
-       fHistDcaPosToPrimVertex->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
-       fHistDcaNegToPrimVertex->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
-       fHistDcaPosToPrimVertexZoom->Fill(lDcaPosToPrimVertex,lOnFlyStatus);
-       fHistDcaNegToPrimVertexZoom->Fill(lDcaNegToPrimVertex,lOnFlyStatus);
-       fHistRadiusV0->Fill(lV0Radius,lOnFlyStatus);
-       fHistDecayLengthV0->Fill(lV0DecayLength,lOnFlyStatus);
-       fHistDcaV0Daughters->Fill(lDcaV0Daughters,lOnFlyStatus);
-       fHistChi2->Fill(lChi2V0,lOnFlyStatus);
-       fHistCosPointAngle->Fill(lV0CosineOfPointingAngle,lOnFlyStatus);
-       if (lV0CosineOfPointingAngle >= 0.9) fHistCosPointAngleZoom->Fill(lV0CosineOfPointingAngle,lOnFlyStatus);
-       if(!lOnFlyStatus){
-         nv0sOff++;
-         fHistPtVsYK0sOff->Fill(lPt,lRapK0s);
-         fHistPtVsYLambdaOff->Fill(lPt,lRapLambda);
-         fHistPtVsYAntiLambdaOff->Fill(lPt,lRapLambda);
-         fHistArmenterosPodolanskiOff->Fill(lAlphaV0,lPtArmV0);
-       }
-       else {
-         nv0sOn++;
-         fHistPtVsYK0sOn->Fill(lPt,lRapK0s);
-         fHistPtVsYLambdaOn->Fill(lPt,lRapLambda);
-         fHistPtVsYAntiLambdaOn->Fill(lPt,lRapLambda);
-         fHistArmenterosPodolanskiOn->Fill(lAlphaV0,lPtArmV0);
-       }
-       // K0s invariant mass histograms:
-       if (TMath::Abs(lRapK0s) < 1) {  
-         if(!lOnFlyStatus){
-           fHistMassK0sOff->Fill(lInvMassK0s);
-           fHistMassVsRadiusK0sOff->Fill(lV0Radius,lInvMassK0s);
-           fHistPtVsMassK0sOff->Fill(lInvMassK0s,lPt);
-         }
-         else {
-           fHistMassK0sOn->Fill(lInvMassK0s);
-           fHistMassVsRadiusK0sOn->Fill(lV0Radius,lInvMassK0s);
-           fHistPtVsMassK0sOn->Fill(lInvMassK0s,lPt);
-         }
-       }
-       // Lambda and AntiLambda invariant mass histograms:
-       if (TMath::Abs(lRapLambda) < 1) {
-         if(!lOnFlyStatus){
-           fHistMassLambdaOff->Fill(lInvMassLambda);
-           fHistMassAntiLambdaOff->Fill(lInvMassAntiLambda);
-           fHistMassVsRadiusLambdaOff->Fill(lV0Radius,lInvMassLambda);
-           fHistMassVsRadiusAntiLambdaOff->Fill(lV0Radius,lInvMassAntiLambda);
-           fHistPtVsMassLambdaOff->Fill(lInvMassLambda,lPt);
-           fHistPtVsMassAntiLambdaOff->Fill(lInvMassAntiLambda,lPt);
-         }
-         else {
-           fHistMassLambdaOn->Fill(lInvMassLambda);
-           fHistMassAntiLambdaOn->Fill(lInvMassAntiLambda);
-           fHistMassVsRadiusLambdaOn->Fill(lV0Radius,lInvMassLambda);
-           fHistMassVsRadiusAntiLambdaOn->Fill(lV0Radius,lInvMassAntiLambda);
-           fHistPtVsMassLambdaOn->Fill(lInvMassLambda,lPt);
-           fHistPtVsMassAntiLambdaOn->Fill(lInvMassAntiLambda,lPt);
-         }
-       }
-      } // end V0 loop
-  }
-
-  fHistV0Multiplicity->Fill(nv0s);
-  fHistV0MultiplicityOff->Fill(nv0sOff);
-  fHistV0MultiplicityOn->Fill(nv0sOn);
-
-  // Post output data.
-  PostData(1, fListHist);
-}    
-
-//________________________________________________________________________
-void AliAnalysisTaskStrange::Terminate(Option_t *) 
-{
-  // Draw result to the screen
-  // Called once at the end of the query
-}
diff --git a/PWG2/SPECTRA/AliAnalysisTaskStrange.h b/PWG2/SPECTRA/AliAnalysisTaskStrange.h
deleted file mode 100644 (file)
index b4626aa..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-#ifndef ALIANALYSISTASKSTRANGE_H
-#define ALIANALYSISTASKSTRANGE_H
-
-/*  See cxx source for full Copyright notice */
-
-//-----------------------------------------------------------------
-//                 AliAnalysisTaskStrange class
-//       This task is for single strange study from ESD/AOD
-//          Origin: H.Ricaud, Helene.Ricaud@IReS.in2p3.fr
-//-----------------------------------------------------------------
-
-class TString;
-class TList;
-class TH1F;
-class TH2F;
-
-#include "AliAnalysisTaskSE.h"
-
-class AliESDEvent;
-class AliESDVertex;
-class AliAODEvent;
-
-class AliAnalysisTaskStrange : public AliAnalysisTaskSE {
- public:
-  AliAnalysisTaskStrange();
-  AliAnalysisTaskStrange(const char *name);
- ~AliAnalysisTaskStrange();
-  
-  virtual void   UserCreateOutputObjects();
-  virtual void   UserExec(Option_t *option);
-  virtual void   Terminate(Option_t *);
-
-  void   SetCollidingSystems(Int_t collidingSystems = 0) {fCollidingSystems = collidingSystems;}
-  void   SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
-  void   SetAnalysisCut(const char* useCut) {fUseCut = useCut;}
-   
- private:
-  TString      fAnalysisType;                   //  ESD or AOD
-  Int_t        fCollidingSystems;               //  Colliding systems 0/1 for pp/PbPb  
-  TString      fUseCut;                         //  "yes" or "no"
-
-  TList       *fListHist;                       //! List of histograms
-
-  TH1F        *fHistPrimaryVertexPosX;          //! Primary vertex position in X
-  TH1F        *fHistPrimaryVertexPosY;          //! Primary vertex position in Y
-  TH1F        *fHistPrimaryVertexPosZ;          //! Primary vertex position in Z
-  TH1F        *fHistTrackMultiplicity;          //! Track multiplicity distribution
-  TH1F        *fHistV0Multiplicity;             //! V0 multiplicity distribution
-
-  TH2F        *fHistDcaPosToPrimVertex;         //! Dca of V0 positive daughter to primary vertex
-  TH2F        *fHistDcaNegToPrimVertex;         //! Dca of V0 negative daughter to primary vertex
-  TH2F        *fHistDcaPosToPrimVertexZoom;     //! Zoom
-  TH2F        *fHistDcaNegToPrimVertexZoom;     //! Zoom
-  TH2F        *fHistRadiusV0;                   //! V0 radial distance distribution
-  TH2F        *fHistDecayLengthV0;              //! V0 decay length distribution
-  TH2F        *fHistDcaV0Daughters;             //! Dca between V0 daughters
-  TH2F        *fHistChi2;                       //! V0 chi2 distribution
-  TH2F        *fHistCosPointAngle;              //! Cosine of V0 pointing angle
-  TH2F        *fHistCosPointAngleZoom;          //! Zoom
-
-              // V0 offline distributions
-  TH1F        *fHistV0MultiplicityOff;          //! V0 multiplicity distribution offline
-  TH2F        *fHistPtVsYK0sOff;                //! Pt vs.Y with K0s assumption
-  TH2F        *fHistPtVsYLambdaOff;             //! Pt vs.Y with Lambda assumption
-  TH2F        *fHistPtVsYAntiLambdaOff;         //! Pt vs.Y with Anti-Lambda assumption
-  TH1F        *fHistMassK0sOff;                 //! Invariant mass of K0s
-  TH1F        *fHistMassLambdaOff;             //! Invariant mass of Lambda
-  TH1F        *fHistMassAntiLambdaOff;         //! Invariant mass of Anti-Lambda
-  TH2F        *fHistMassVsRadiusK0sOff;         //! Invariant mass vs. radius of K0s    
-  TH2F        *fHistMassVsRadiusLambdaOff;     //! Invariant mass vs. radius of Lambda  
-  TH2F        *fHistMassVsRadiusAntiLambdaOff; //! Invariant mass vs. radius of Anti-Lambda
-  TH2F        *fHistPtVsMassK0sOff;             //! Pt vs. invariant mass of K0s           
-  TH2F        *fHistPtVsMassLambdaOff;         //! Pt vs. invariant mass of Lambda         
-  TH2F        *fHistPtVsMassAntiLambdaOff;     //! Pt vs. invariant mass of Anti-Lambda
-  TH2F        *fHistArmenterosPodolanskiOff;    //! Armenteros-Podolanski distribution       
-
-              // V0 on-the-fly distributions
-  TH1F        *fHistV0MultiplicityOn;          //! V0 multiplicity distribution on-the-fly
-  TH2F        *fHistPtVsYK0sOn;                //! Pt vs.Y with K0s assumption             
-  TH2F        *fHistPtVsYLambdaOn;            //! Pt vs.Y with Lambda assumption           
-  TH2F        *fHistPtVsYAntiLambdaOn;        //! Pt vs.Y with Anti-Lambda assumption      
-  TH1F        *fHistMassK0sOn;                 //! Invariant mass of K0s                   
-  TH1F        *fHistMassLambdaOn;             //! Invariant mass of Lambda                  
-  TH1F        *fHistMassAntiLambdaOn;         //! Invariant mass of Anti-Lambda            
-  TH2F        *fHistMassVsRadiusK0sOn;        //! Invariant mass vs. radius of K0s         
-  TH2F        *fHistMassVsRadiusLambdaOn;      //! Invariant mass vs. radius of Lambda     
-  TH2F        *fHistMassVsRadiusAntiLambdaOn;  //! Invariant mass vs. radius of Anti-Lambda
-  TH2F        *fHistPtVsMassK0sOn;            //! Pt vs. invariant mass of K0s     
-  TH2F        *fHistPtVsMassLambdaOn;         //! Pt vs. invariant mass of Lambda          
-  TH2F        *fHistPtVsMassAntiLambdaOn;      //! Pt vs. invariant mass of Anti-Lambda    
-  TH2F        *fHistArmenterosPodolanskiOn;    //! Armenteros-Podolanski distribution
-   
-  AliAnalysisTaskStrange(const AliAnalysisTaskStrange&);            // not implemented 
-  AliAnalysisTaskStrange& operator=(const AliAnalysisTaskStrange&); // not implemented 
-
-  ClassDef(AliAnalysisTaskStrange, 1); 
-};
-
-#endif
diff --git a/PWG2/SPECTRA/macros/AddTaskCheckV0.C b/PWG2/SPECTRA/macros/AddTaskCheckV0.C
deleted file mode 100644 (file)
index b9f082b..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-AliAnalysisTaskCheckV0 *AddTaskCheckV0(Short_t lCollidingSystems  =0,  /*0 = pp, 1 = AA*/
-                                      Bool_t  lDelegateSelection =1)  /*1 to AliPhysicsSelection */
-{
-// Creates, configures and attaches to the train a V0 check task.
-   // Get the pointer to the existing analysis manager via the static access method.
-   //==============================================================================
-   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-   if (!mgr) {
-      ::Error("AddTaskCheckV0", "No analysis manager to connect to.");
-      return NULL;
-   }   
-
-   // Check the analysis type using the event handlers connected to the analysis manager.
-   //==============================================================================
-   if (!mgr->GetInputEventHandler()) {
-      ::Error("AddTaskCheckV0", "This task requires an input event handler");
-      return NULL;
-   }   
-   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
-
-   // Create and configure the task
-       AliAnalysisTaskCheckV0 *taskcheckv0 = new AliAnalysisTaskCheckV0("TaskCheckV0");
-   taskcheckv0->SetCollidingSystems(lCollidingSystems);
-   taskcheckv0->SetAnalysisType(type);
-   taskcheckv0->SetUsePhysicsSelection(lDelegateSelection); // Delegate event selection or not
-   taskcheckv0->SetMaxPrimaryVtxPosZ(10.);                  // select |primvtx_z|<10
-   taskcheckv0->SetMaxV0Rapidity(0.75);                     // select |y|<0.75
-   taskcheckv0->SetMinV0Pt(0.2);                            // select pt>0.2
-   taskcheckv0->SetMaxV0Pt(10.0);                           // select pt<10.0
-   taskcheckv0->SetMinDaughterTpcClusters(80);              // select TPC clusters>80
-   mgr->AddTask(taskcheckv0);
-
-   // Create ONLY the output containers for the data produced by the task.
-   // Get and connect other common input/output containers via the manager as below
-   //==============================================================================
-   TString outputFileName = AliAnalysisManager::GetCommonFileName();
-   outputFileName += ":PWG2CheckV0";
-   if (lCollidingSystems) outputFileName += "_AA";
-   else outputFileName += "_PP";
-   if (mgr->GetMCtruthEventHandler()) outputFileName += "_MC";
-
-   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clistV0",
-                                                            TList::Class(),
-                                                            AliAnalysisManager::kOutputContainer,
-                                                            outputFileName );
-                           
-   mgr->ConnectInput(taskcheckv0, 0, mgr->GetCommonInputContainer());
-   mgr->ConnectOutput(taskcheckv0, 1, coutput1);
-   return taskcheckv0;
-}   
diff --git a/PWG2/SPECTRA/macros/AddTaskPerformanceStrange.C b/PWG2/SPECTRA/macros/AddTaskPerformanceStrange.C
deleted file mode 100644 (file)
index 45aa02e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-AliAnalysisTaskPerformanceStrange *AddTaskPerformanceStrange(Short_t lCollidingSystems = 0,   // 0->pp,   1->AA
-                                                            Short_t lAnalysisMC       = 1,   // 0->No MC or 1->MC analysis
-                                                            TString lAnalysisCut      = "no",
-                                                            TString lAnalysisPidMode  = "withoutPID" )
-{
-// Creates, configures and attaches to the train a strangeness task.
-   // Get the pointer to the existing analysis manager via the static access method.
-   //==============================================================================
-   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-   if (!mgr) {
-      ::Error("AddTaskPerformanceStrange", "No analysis manager to connect to.");
-      return NULL;
-   }   
-
-   // Check the analysis type using the event handlers connected to the analysis manager.
-   //==============================================================================
-   if (!mgr->GetInputEventHandler()) {
-      ::Error("AddTaskPerformanceStrange", "This task requires an input event handler");
-      return NULL;
-   }   
-   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
-
-   // Create and configure the task
-       AliAnalysisTaskPerformanceStrange *taskperformancestrange = new AliAnalysisTaskPerformanceStrange("TaskPerformanceStrange");
-   taskperformancestrange->SetCollidingSystems(lCollidingSystems);
-   taskperformancestrange->SetAnalysisType(type);
-   taskperformancestrange->SetAnalysisMC(lAnalysisMC);
-   taskperformancestrange->SetAnalysisCut(lAnalysisCut);
-   taskperformancestrange->SetUsePID(lAnalysisPidMode);
-   mgr->AddTask(taskperformancestrange);
-
-   // Create ONLY the output containers for the data produced by the task.
-   // Get and connect other common input/output containers via the manager as below
-   //==============================================================================
-   TString outputFileName = AliAnalysisManager::GetCommonFileName();
-   outputFileName += ":PWG2Strange";
-   if (lCollidingSystems) outputFileName += "_AA";
-   else outputFileName += "_PP";
-   if (mgr->GetMCtruthEventHandler()) outputFileName += "_MC";
-
-   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clistPerformanceStrange",
-                                                            TList::Class(),
-                                                            AliAnalysisManager::kOutputContainer,
-                                                            outputFileName );
-                           
-   mgr->ConnectInput(taskperformancestrange, 0, mgr->GetCommonInputContainer());
-   mgr->ConnectOutput(taskperformancestrange, 1, coutput1);
-   return taskperformancestrange;
-}
-
diff --git a/PWG2/SPECTRA/macros/AddTaskStrange.C b/PWG2/SPECTRA/macros/AddTaskStrange.C
deleted file mode 100644 (file)
index b8fa996..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-AliAnalysisTaskStrange *AddTaskStrange(Short_t lCollidingSystems=0,  /*0 = pp, 1 = AA*/
-                                      TString lAnalysisCut="no" )
-{
-// Creates, configures and attaches to the train a strangeness task.
-   // Get the pointer to the existing analysis manager via the static access method.
-   //==============================================================================
-   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-   if (!mgr) {
-      ::Error("AddTaskStrange", "No analysis manager to connect to.");
-      return NULL;
-   }   
-
-   // Check the analysis type using the event handlers connected to the analysis manager.
-   //==============================================================================
-   if (!mgr->GetInputEventHandler()) {
-      ::Error("AddTaskStrange", "This task requires an input event handler");
-      return NULL;
-   }   
-   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
-
-   // Create and configure the task
-       AliAnalysisTaskStrange *taskstrange = new AliAnalysisTaskStrange("TaskStrange");
-   taskstrange->SetCollidingSystems(lCollidingSystems);
-   taskstrange->SetAnalysisType(type);
-   taskstrange->SetAnalysisCut(lAnalysisCut);
-   mgr->AddTask(taskstrange);
-
-   // Create ONLY the output containers for the data produced by the task.
-   // Get and connect other common input/output containers via the manager as below
-   //==============================================================================
-   TString outputFileName = AliAnalysisManager::GetCommonFileName();
-   outputFileName += ":PWG2Strange";
-   if (lCollidingSystems) outputFileName += "_AA";
-   else outputFileName += "_PP";
-   if (mgr->GetMCtruthEventHandler()) outputFileName += "_MC";
-
-   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clistStrange",
-                                                            TList::Class(),
-                                                            AliAnalysisManager::kOutputContainer,
-                                                            outputFileName );
-                           
-   mgr->ConnectInput(taskstrange, 0, mgr->GetCommonInputContainer());
-   mgr->ConnectOutput(taskstrange, 1, coutput1);
-   return taskstrange;
-}   
diff --git a/PWG2/centraltrain/AnalysisTrainPWG2.C b/PWG2/centraltrain/AnalysisTrainPWG2.C
deleted file mode 100644 (file)
index be449df..0000000
+++ /dev/null
@@ -1,1135 +0,0 @@
-//===================== ANALYSIS TRAIN ==============================
-// To use: copy this macro to your work directory, modify the global
-// part to match your needs, then run root.
-// 
-//    root[0] .L AnalysisTrain.C
-// Grid full mode as below (other modes: test, offline, submit, terminate)
-//    root[1] AnalysisTrainNew("grid", "full")
-// CAF mode (requires root v5-23-02 + aliroot v4-16-Rev08)
-//    root[2] AnalysisTrainNew("proof")
-// Local mode requires AliESds.root or AliAOD.root in ./data directory
-//    root[3] AnalysisTrainNew("local")
-// 
-// In proof and grid modes, a token is needed and sourcing the
-// produced environment file.
-//
-// If 'saveTrain' flag is set, the train will generate a directory
-// name and run in this directory. A configuration file
-// 'ConfigTrain.C' will be generated.  One can replay at any time the
-// train via:
-// 
-//    root[1] AnalysisTrainNew(ana_mode, plugin_mode, "train_default_<date>/ConfigTrain.C")
-
-//==================   TRAIN NAME   ==================================
-TString     train_name         = "PWG2";    // local folder name
-TString     train_tag          = "_Pb-Pb_"; // Train special tag
-                                           // appended to visible
-                                           // name. ("data", "sim",
-                                           // "pp", "highmult", ...) 
-// Name in train page (DON'T CHANGE)
-TString     visible_name       = Form("PWG2%s$2_$3", train_tag.Data()); //# FIXED #
-// Add train composition and other comments
-TString     job_comment        = "PWG2 tasks on ESDs";
-TString     job_tag            = Form("%s: %s", visible_name.Data(), 
-                                     job_comment.Data());
-//====================================================================
-
-// ### Settings that make sense in PROOF only
-//====================================================================
-TString     proof_cluster      = "alice-caf.cern.ch";
-Bool_t      useAFPAR           = kFALSE;  // use AF special par file
-TString     AFversion          = "AF-v4-17";
-// Change CAF dataset here
-TString     proof_dataset      = "/COMMON/COMMON/LHC09a4_run8100X#/esdTree";
-TString     proof_outdir       = "";
-
-// ### Settings that make sense when using the Alien plugin
-//====================================================================
-Int_t       runOnData          = 1;       // Set to 1 if processing real data
-Int_t       iCollision         = 1;       // 0=pp, 1=Pb-Pb
-Bool_t      usePLUGIN          = kTRUE;   // do not change
-Bool_t      useProductionMode  = kTRUE;   // use the plugin in production mode
-
-// Usage of par files ONLY in grid mode and ONLY if the code is not
-// available in the deployed AliRoot versions. Par file search path:
-// local dir, if not there $ALICE_ROOT.  To refresh par files, remove
-// the ones in the workdir, then do "make <target.par>" in AliRoot.
-Bool_t      usePAR             = kFALSE;  // use par files for extra libs
-Bool_t      useCPAR            = kFALSE;  // use par files for common libs
-TString     root_version       = "v5-27-06c";  // *CHANGE ME IF MORE
-                                              // *RECENT IN GRID* 
-TString     aliroot_version    = "v4-21-15-AN";  // *CHANGE ME IF MORE
-                                                // *RECENT IN GRID* 
-// Change production base directory here (test mode)
-TString     alien_datadir      = "/alice/data/2010/LHC10h";
-// Work directory in GRID (DON'T CHANGE)
-TString     grid_workdir       = "/alice/cern.ch/user/a/alidaq/PWG2/PWG2_$2";
-// Data pattern - change as needed for test mode
-// TString     data_pattern       = "*ESDs/pass1/AOD033/*AOD.root";
-TString     data_pattern       = "*ESDs/pass1/*ESDs.root";
-// Set the run range
-Int_t run_numbers[10] = {137844}; // **********************!!!!!!!
-// AliEn output directory. If blank will become output_<train_name>
-// Output directory (DON'T CHANGE)
-TString     alien_outdir       = "$1/PWG2OUT$2";
-// Input collection (production mode)
-TString     data_collection    = "$1/input.xml";
-// Output folder to write delta AOD's. Considered if not null.
-TString     outputSingleFolder = "";
-//TString     outputSingleFolder = "deltas";
-// Number of files merged in a chunk
-Int_t       maxMergeFiles      = 20;
-// Files that should not be merged
-TString     mergeExclude       = ("AliAOD.root "
-                                 "AliAOD.VertexingHF.root "
-                                 "AliAOD.Jets.root "
-                                 "deltaAODPartCorr.root "
-                                 "AliAOD.Muons.root "
-                                 "AliAOD.Dimuons.root "
-                                 "AliAOD.Dielectron.root "
-                                 "AliAODCentrality.root");
-TString     mergeDirName       = "PWG2OUT$2";
-// Make replicas on the storages below
-TString     outputStorages      = "disk=4";
-// Number of runs per master job
-Int_t       nRunsPerMaster     = 10;
-// Maximum number of files per job (gives size of AOD)
-Int_t       nFilesPerJob       = 5;
-// Int_t       nFilesPerJob       = 1; (AOD->delta AOD production case)
-// ### Settings that make sense only for local analysis
-//==============================================================================
-// Change local xml dataset for local interactive analysis
-TString     local_xmldataset   = "";
-
-// ### Other flags to steer the analysis
-//==============================================================================
-Bool_t      usePhysicsSelection = kTRUE;  // use physics selection
-Bool_t      useBKrejection      = kFALSE; // use BK rejection
-Bool_t      useCentrality       = kTRUE;  // centrality delta AOD
-Bool_t      useTender           = kFALSE; // use tender wagon
-Bool_t      useV0tender         = kFALSE; // use V0 correction in tender
-Bool_t      useMergeViaJDL      = kTRUE;  // merge via JDL
-Bool_t      useFastReadOption   = kFALSE; // use xrootd tweaks
-Bool_t      useOverwriteMode    = kTRUE;  // overwrite existing collections
-Bool_t      useDATE             = kFALSE; // use date in train name
-Bool_t      useDBG              = kTRUE;  // activate debugging
-Bool_t      useMC               = kFALSE; // use MC info
-Bool_t      useTAGS             = kFALSE; // use ESD tags for selection
-Bool_t      useKFILTER          = kFALSE; // use Kinematics filter
-Bool_t      useTR               = kFALSE; // use track references
-Bool_t      useCORRFW           = kTRUE;  // do not change
-Bool_t      useAODTAGS          = kFALSE; // use AOD tags
-Bool_t      saveTrain           = kTRUE;  // save train configuration as:
-Bool_t      saveCanvases        = kFALSE; // save canvases created in Terminate
-Bool_t      saveProofToAlien    = kFALSE; // save proof outputs in AliEn
-
-// ### Analysis modules to be included. Some may not be yet fully implemented.
-//==============================================================================
-Int_t       iAODanalysis       = 0;      // Analysis on input AOD's
-Int_t       iAODhandler        = 1;      // Analysis produces an AOD or dAOD's
-
-Int_t       iPWG2fmd           = 1;      // FMD forward analysis (PWG2)
-Int_t       iPWG2femto         = 1;      // Femtoscopy two-track analysis (PWG2)
-Int_t       iPWG2spectra       = 1;      // Charge hadron spectra (PWG2)
-
-// Temporaries.
-TString anaPars = "";
-TString anaLibs = "";
-// Function signatures
-class AliAnalysisAlien;
-
-//______________________________________________________________________________
-void AnalysisTrainPWG2(const char *analysis_mode="local",
-                      const char *plugin_mode="full",
-                      const char *config_file="")
-{
-  // Main analysis train macro. If a configuration file is provided,
-  // all parameters are taken from there but may be altered by
-  // CheckModuleFlags.
-  if (strlen(config_file) && !LoadConfig(config_file)) return;
-  TString smode(analysis_mode);
-  smode.ToUpper();
-  TString spmode(plugin_mode);
-  spmode.ToLower();
-  if (spmode == "test") useProductionMode = kFALSE;
-  // Check compatibility of selected modules
-  CheckModuleFlags(smode);
-  if (saveTrain)              WriteConfig();
-
-  printf("=================================================================\n");
-  printf("===========    RUNNING ANALYSIS TRAIN %s IN %s MODE   ==========\n", 
-        train_name.Data(),smode.Data());
-  printf("=================================================================\n");
-  printf("=  Configuring analysis train for:                              =\n");
-  if (iAODanalysis)        printf("=  %-60s  =\n", "AOD analysis");
-  else                     printf("=  %-60s  =\n", "ESD analysis");
-  if (usePhysicsSelection) printf("=  %-60s  =\n", "Physics selection");
-  if (useTender)           printf("=  %-60s  =\n", "TENDER");
-  if (iPWG2fmd)            printf("=  %-60s  =\n", "PWG2 FMD");
-  if (iPWG2femto)          printf("=  %-60s  =\n", "PWG2 Femtoscopy");
-  if (iPWG2spectra)        printf("=  %-60s  =\n", "PWG2 Charged Spectra");
-  printf("=================================================================\n");
-  printf(":: use physics selection: %d\n", (UInt_t)usePhysicsSelection);
-  printf(":: use xrootd tweaks:     %d\n", (UInt_t)useFastReadOption);
-  printf(":: use overwrite xml    : %d\n", (UInt_t)useOverwriteMode);
-  printf(":: use merge via JDL:     %d\n", (UInt_t)useMergeViaJDL);
-  printf(":: use MC truth:          %d\n", (UInt_t)useMC);
-  printf(":: use KINE filter:       %d\n", (UInt_t)useKFILTER);
-  printf(":: use track references:  %d\n", (UInt_t)useTR);
-  printf(":: use tags:              %d\n", (UInt_t)useTAGS);
-  printf(":: use AOD tags:          %d\n", (UInt_t)useAODTAGS);
-  printf(":: use debugging:         %d\n", (UInt_t)useDBG);
-  printf(":: use PAR files:         %d\n", (UInt_t)usePAR);
-  printf(":: use AliEn plugin:      %d\n", (UInt_t)usePLUGIN);
-
-  //==================================================================
-  // Connect to back-end system
-  // if (!Connect(smode)) {
-  //   ::Error("AnalysisTrain", "Could not connect to %s back-end", 
-  //           analysis_mode);
-  //   return;
-  // }
-
-  // Load common libraries and set include path
-  if (!LoadCommonLibraries(smode)) {
-    ::Error("AnalysisTrain", "Could not load common libraries");
-    return;
-  }
-
-  // Make the analysis manager and connect event handlers
-  AliAnalysisManager *mgr  = 
-    new AliAnalysisManager("Analysis Train", "Production train");
-  if (saveProofToAlien) mgr->SetSpecialOutputLocation(proof_outdir);
-  if (!strcmp(plugin_mode, "test")) mgr->SetNSysInfo(1);
-  // Load analysis specific libraries
-  if (!LoadAnalysisLibraries(smode)) {
-    ::Error("AnalysisTrain", "Could not load analysis libraries");
-    return;
-  }
-
-  // Create input handler (input container created automatically)
-  if (iAODanalysis) {
-    // AOD input handler
-    AliAODInputHandler *aodH = new AliAODInputHandler();
-    mgr->SetInputEventHandler(aodH);
-  } else {
-    // ESD input handler
-    AliESDInputHandler *esdHandler = new AliESDInputHandler();
-    if (useTAGS) esdHandler->SetReadTags();
-    mgr->SetInputEventHandler(esdHandler);
-  }
-  // Monte Carlo handler
-  if (useMC && !iAODanalysis) {
-    AliMCEventHandler* mcHandler = new AliMCEventHandler();
-    mgr->SetMCtruthEventHandler(mcHandler);
-    mcHandler->SetReadTR(useTR);
-  }
-  // AOD output container, created automatically when setting an AOD handler
-  if (iAODhandler) {
-    // AOD output handler
-    AliAODHandler* aodHandler   = new AliAODHandler();
-    aodHandler->SetOutputFileName("AliAOD.root");
-    mgr->SetOutputEventHandler(aodHandler);
-    if (iAODanalysis) {
-      aodHandler->SetFillAOD(kFALSE);
-      aodHandler->SetCreateNonStandardAOD();
-      // if (iPWG3vertexing) 
-      //   aodHandler->SetOutputFileName("AliAOD.VertexingHF.root");
-    }
-  }
-  // Debugging if needed
-  if (useDBG) mgr->SetDebugLevel(3);
-  if (saveCanvases) mgr->SetSaveCanvases(kTRUE);
-
-  //==========================================================================
-  // Create the chain. In this example it is created only from ALIEN
-  // files but can be done to work in batch or grid mode as well.
-  TChain *chain = CreateChain(smode, plugin_mode);
-
-  //==========================================================================
-  // Load the tasks configuration macros for all wagons. These files
-  // are supposed now to be in the current workdir, but in AliEn they
-  // will be in the file catalog, mapped from AliRoot and pecified in
-  // the jdl input list.
-  // 
-  // For now connection to top input container and common AOD output
-  // container is done in this macro, but in future these containers
-  // will be connected from each task configuration macro.
-  AddAnalysisTasks();
-
-  // Run the analysis
-  //
-  if (usePLUGIN) {
-    AliAnalysisGrid *alienHandler = CreateAlienHandler(plugin_mode);
-    AliAnalysisManager::GetAnalysisManager()->SetGridHandler(alienHandler);
-  }
-
-  if (mgr->InitAnalysis()) {
-    mgr->PrintStatus();
-    if (saveTrain || strlen(config_file)) gSystem->ChangeDirectory(train_name);
-    StartAnalysis(smode, chain);
-  }
-}
-
-//____________________________________________________________________
-void AddToMacroPath(const char* path)
-{
-  TString macroPath(gROOT->GetMacroPath());
-  TString tgt(gSystem->ExpandPathName(path));
-  if (macroPath.Contains(tgt)) return;
-  macroPath.Append(":");
-  macroPath.Append(tgt);
-  gROOT->SetMacroPath(macroPath.Data());
-}
-
-//____________________________________________________________________
-void AddAnalysisTasks()
-{
-  // Add all analysis task wagons to the train
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  //
-  // Tender and supplies. Needs to be called for every event.
-  //
-  if (useTender) {
-    AddToMacroPath("$ALICE_ROOT/ANALYSIS/TenderSupplies/");
-    gROOT->LoadMacro("AddTaskTender.C");
-    // IF V0 tender needed, put kTRUE below
-    AliAnalysisTaskSE *tender = AddTaskTender(useV0tender);
-    // tender->SetDebugLevel(2);
-  }
-  
-  if (usePhysicsSelection) {
-    // Physics selection task
-    AddToMacroPath("$ALICE_ROOT/ANALYSIS/macros/");
-    gROOT->LoadMacro("AddTaskPhysicsSelection.C");
-    mgr->RegisterExtraFile("event_stat.root");
-    AliPhysicsSelectionTask *physSelTask =
-      AddTaskPhysicsSelection(useMC,useBKrejection);
-    mgr->AddStatisticsTask(AliVEvent::kMB);
-  }
-  
-  if (useCentrality) {
-    // Common Centrality task
-    AddToMacroPath("$ALICE_ROOT/ANALYSIS/macros/");
-    gROOT->LoadMacro("AddTaskCentrality.C");
-    AliCentralitySelectionTask* ctask = AddTaskCentrality();
-    if (ctask) {
-      Int_t pass = 0;
-      if      (data_pattern.Contains("pass1")) pass = 1;
-      else if (data_pattern.Contains("pass2")) pass = 2;
-      else if (data_pattern.Contains("pass3")) pass = 3;
-      ctask->SetPass(pass);
-      if (useMC) ctask->SetMCInput();
-    }
-    else
-      ::Warning("AnalysisTrainNew", "AliCentralitySelectionTask cannot "
-               "run for this train conditions - EXCLUDED");
-  }
-  
-  // AOD tags
-  if (useAODTAGS) {
-    AliAnalysisTaskTagCreator* tagTask =
-      new AliAnalysisTaskTagCreator("AOD Tag Creator");
-    mgr->AddTask(tagTask);
-    AliAnalysisDataContainer *coutTags =
-      mgr->CreateContainer("cTag",  TTree::Class(),
-                          AliAnalysisManager::kOutputContainer,
-                          "AOD.tag.root");
-    mgr->ConnectInput (tagTask, 0, mgr->GetCommonInputContainer());
-    mgr->ConnectOutput(tagTask, 1, coutTags);
-  }
-
-
-  // ********** PWG2 wagons *****************************************
-  AliAnalysisManager::SetCommonFileName("PWG2histograms.root");
-  
-  // PWG2 FMD
-  if (iPWG2fmd) {
-    AddToMacroPath("$ALICE_ROOT/PWG2/FORWARD/analysis2/");
-    
-    gROOT->LoadMacro("AddTaskForwardMult.C");
-    gROOT->LoadMacro("AddTaskCentralMult.C");
-    /* Input parameters for the analysis task.
-     *
-     * - sys, collision system 0: get from data, 1: pp, 2: AA
-     * - sNN, Center of mass energy (per nucleon pair) 0: get from
-     *        data, otherwise sqrt(sNN) in GeV
-     * - fld, L3 magnetic field. if sNN=0: get from data, otherwise
-     *        magnetic field in kG
-     */
-    UShort_t sys = iCollision+1;
-    UShort_t sNN = 0;
-    Short_t  fld = 0.5;
-    AliAnalysisTask *taskForward = AddTaskForwardMult(useMC, sys, sNN, fld);
-    if (!taskForward)
-      ::Warning("AnalysisTrainNew", "AliForwardMultiplicityTask cannot "
-               "run for this train conditions - EXCLUDED");
-    AliAnalysisTask *taskCentral = AddTaskCentralMult(useMC, sys, sNN, fld);
-    if (!taskCentral)
-      ::Warning("AnalysisTrainNew", "AliCentralMultiplicityTask cannot "
-               "run for this train conditions - EXCLUDED");
-  }
-  
-  // PWG2 Femtoscopy
-  if (iPWG2femto) {
-    AddToMacroPath("$ALICE_ROOT/PWG2/FEMTOSCOPY/macros");
-    // AddToMacroPath("$ALICE_ROOT/PWG2/FEMTOSCOPY/macros/Train/TwoTrackQA");
-    gROOT->LoadMacro("AddTaskFemto.C");
-    AliAnalysisTask *taskFemto = 
-      AddTaskFemto("$ALICE_ROOT/PWG2/FEMTOSCOPY/macros/Train/TwoTrackQA/ConfigFemtoAnalysisCentral.C",
-                  Form("%i, %i, %i", iAODanalysis?0:1, iCollision, 0));
-    if (!taskFemto) 
-      ::Warning("AnalysisTrainNew", "AliAnalysisTaskFemto cannot run for "
-               "this train conditions - EXCLUDED");
-  }
-
-  // PWG2 Spectra
-  if (iPWG2spectra) {
-    AddToMacroPath("$ALICE_ROOT/PWG2/SPECTRA/macros");
-    gROOT->LoadMacro("AddTaskITSsaSpectra.C");
-    AliAnalysisTask *taskSpectraITSsa = 
-      AddTaskITSsaSpectra(0,useMC,-1,-1,iCollision);
-    if (!taskSpectraITSsa) 
-      ::Warning("AnalysisTrainNew", "AliAnalysisTaskSpectraITSsa cannot "
-               "run for this train conditions - EXCLUDED");
-
-    gROOT->LoadMacro("AddTaskChargedHadronSpectraITSTruncatedMean.C");
-    AliAnalysisTask *taskSpectraITSTPC = 
-      AddTaskChargedHadronSpectraITSTruncatedMean(-1,-1,useMC,iCollision,
-                                                 "configChargedHadronSpectraITSTruncatedMeanTask.C");
-    if (!taskSpectraITSTPC) 
-      ::Warning("AnalysisTrainNew", "AliAnalysisTaskSpectraITSTPC "
-               "cannot run for this train conditions - EXCLUDED");
-  }
-}
-
-//______________________________________________________________________________
-void StartAnalysis(const char *mode, TChain *chain) {
-  // Start analysis.
-  Int_t imode = -1;
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  if (!strcmp(mode, "LOCAL")) imode = 0;
-  if (!strcmp(mode, "PROOF")) imode = 1;
-  if (!strcmp(mode, "GRID"))  imode = 2;
-  switch (imode) {
-  case 0:
-    if (!chain) {
-      ::Error("AnalysisTrainNew.C::StartAnalysis", "Cannot create the chain");
-      return;
-    }
-    mgr->StartAnalysis(mode, chain);
-    return;
-  case 1:
-    if (!proof_dataset.Length()) {
-      ::Error("AnalysisTrainNew.C::StartAnalysis", "proof_dataset is empty");
-      return;
-    }
-    mgr->StartAnalysis(mode, proof_dataset, 1000);
-    return;
-  case 2:
-    if (usePLUGIN) {
-      if (!mgr->GetGridHandler()) {
-       ::Error("AnalysisTrainNew.C::StartAnalysis", 
-               "Grid plugin not initialized");
-       return;
-      }
-      mgr->StartAnalysis("grid");
-    } else {
-      if (!chain) {
-       ::Error("AnalysisTrainNew.C::StartAnalysis", "Cannot create the chain");
-       return;
-      }
-      mgr->StartAnalysis(mode, chain);
-    }
-    return;
-  }
-}
-
-//______________________________________________________________________________
-void CheckModuleFlags(const char *mode) 
-{
-  // Checks selected modules and insure compatibility
-  Int_t imode = -1;
-  if (!strcmp(mode, "LOCAL")) imode = 0;
-  if (!strcmp(mode, "PROOF")) imode = 1;
-  if (!strcmp(mode, "GRID"))  imode = 2;
-  if (imode==1) {
-    if (!usePAR) {
-      ::Info("AnalysisTrainNew.C::CheckModuleFlags", 
-            "PAR files enabled due to PROOF analysis");
-      usePAR = kTRUE;
-    }
-  }
-  if (imode != 2) {
-    ::Info("AnalysisTrainNew.C::CheckModuleFlags", 
-          "AliEn plugin disabled since not in GRID mode");
-    usePLUGIN = kFALSE;
-  }
-  if (iAODanalysis) {
-    // AOD analysis
-    if (useMC)
-      ::Info("AnalysisTrainNew.C::CheckModuleFlags", 
-            "MC usage disabled in analysis on AOD's");
-    if (useAODTAGS)
-      ::Info("AnalysisTrainNew.C::CheckModuleFlags", 
-            "AOD tags usage disabled in analysis on AOD's");
-    useMC = kFALSE;
-    useTR = kFALSE;
-    useAODTAGS = kFALSE;
-  } else {
-    // ESD analysis
-    if (!useMC) useTR = kFALSE;
-    if (!useTR) {
-      ::Info("AnalysisTrainNew.C::CheckModuleFlags", 
-            "iPWG2evchar disabled if not reading track references");
-      iPWG2evchar = 0;
-    }
-  }
-  if (useKFILTER && !useMC) useKFILTER = kFALSE;
-  if (useAODTAGS && !iAODhandler) useAODTAGS = kFALSE;
-}
-
-//______________________________________________________________________________
-Bool_t Connect(const char *mode) 
-{
-  // Connect <username> to the back-end system.
-  Int_t imode = -1;
-  if (!strcmp(mode, "LOCAL")) imode = 0;
-  if (!strcmp(mode, "PROOF")) imode = 1;
-  if (!strcmp(mode, "GRID"))  imode = 2;
-  TString username = gSystem->Getenv("alien_API_USER");
-  switch (imode) {
-  case 0:
-    break;
-  case 1:
-    if  (!username.Length()) {
-      ::Error(Form("AnalysisTrainNew.C::Connect <%s>", mode), 
-             "Make sure you:\n "
-             "\t1. Have called: alien-token-init <username>\n"
-             "\t2. Have called: >source /tmp/gclient_env_$UID");
-      return kFALSE;
-    }
-    ::Info("AnalysisTrainNew.C::Connect", 
-          "Connecting user <%s> to PROOF cluster <%s>",
-          username.Data(), proof_cluster.Data());
-    gEnv->SetValue("XSec.GSI.DelegProxy", "2");
-    //  TProof::Open(Form("%s@%s:31093", username.Data(), 
-    //               proof_cluster.Data()));
-    TProof::Open(Form("%s@%s", username.Data(), proof_cluster.Data()));
-    if (!gProof) {
-      if (strcmp(gSystem->Getenv("XrdSecGSISRVNAMES"), "lxfsrd0506.cern.ch"))
-       ::Error(Form("AnalysisTrainNew.C::Connect <%s>", mode), 
-               "Environment XrdSecGSISRVNAMES different from "
-               "lxfsrd0506.cern.ch");
-      return kFALSE;
-    }
-    TGrid::Connect("alien://");
-    if (gGrid) {
-      TString homedir = gGrid->GetHomeDirectory();
-      TString workdir = homedir + train_name;
-      if (!gGrid->Cd(workdir)) {
-       gGrid->Cd(homedir);
-       if (gGrid->Mkdir(workdir)) {
-         gGrid->Cd(train_name);
-         ::Info("AnalysisTrainNew::Connect()", "Directory %s created", 
-                gGrid->Pwd());
-       }
-      }
-      gGrid->Mkdir("proof_output");
-      gGrid->Cd("proof_output");
-      proof_outdir = Form("alien://%s", gGrid->Pwd());
-    }
-    break;
-  case 2:
-    if (usePLUGIN && !gSystem->Getenv("alien_CLOSE_SE")) {
-      ::Error(Form("AnalysisTrainNew.C::Connect <%s>", mode),
-             "When using the AliEn plugin it is preferable to define the "
-             "variable alien_CLOSE_SE in your environment.");
-      return kFALSE;
-    }
-    ::Info("AnalysisTrainNew.C::Connect", "Connecting user <%s> to AliEn ...",
-          username.Data());
-    TGrid::Connect("alien://");
-    if (!gGrid || !gGrid->IsConnected()) return kFALSE;
-    break;
-  default:
-    ::Error("AnalysisTrainNew.C::Connect", "Unknown run mode: %s", mode);
-    return kFALSE;
-  }
-  ::Info("AnalysisTrainNew.C::Connect","Connected in %s mode", mode);
-  return kTRUE;
-}
-
-//______________________________________________________________________________
-Bool_t LoadCommonLibraries(const char *mode)
-{
-  // Load common analysis libraries.
-  Int_t imode = -1;
-  if (!strcmp(mode, "LOCAL")) imode = 0;
-  if (!strcmp(mode, "PROOF")) imode = 1;
-  if (!strcmp(mode, "GRID"))  imode = 2;
-  if (!gSystem->Getenv("ALICE_ROOT")) {
-    ::Error("AnalysisTrainNew.C::LoadCommonLibraries", 
-           "Analysis train requires that analysis libraries are "
-           "compiled with a local AliRoot");
-    return kFALSE;
-  }
-  Bool_t success = kTRUE;
-  // ROOT libraries
-  gSystem->Load("libTree.so");
-  gSystem->Load("libGeom.so");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libPhysics.so");
-  gSystem->Load("libMinuit.so");
-
-  // Load framework classes. Par option ignored here.
-  switch (imode) {
-  case 0:
-  case 2:
-    if (useCPAR) {
-      success &= LoadLibrary("STEERBase", mode, kTRUE);
-      success &= LoadLibrary("ESD", mode, kTRUE);
-      success &= LoadLibrary("AOD", mode, kTRUE);
-      success &= LoadLibrary("ANALYSIS", mode, kTRUE);
-      success &= LoadLibrary("ANALYSISalice", mode, kTRUE);
-      if (useCORRFW) success &= LoadLibrary("CORRFW", mode, kTRUE);
-    } else {
-      success &= LoadLibrary("libSTEERBase.so", mode);
-      success &= LoadLibrary("libESD.so", mode);
-      success &= LoadLibrary("libAOD.so", mode);
-      success &= LoadLibrary("libANALYSIS.so", mode);
-      success &= LoadLibrary("libANALYSISalice.so", mode);
-      if (useCORRFW) success &= LoadLibrary("libCORRFW.so", mode);
-      gROOT->ProcessLine(".include $ALICE_ROOT/include");
-    }
-    break;
-  case 1:
-    Int_t ires = -1;
-    if (useAFPAR && !gSystem->AccessPathName(AFversion)) 
-      ires = gProof->UploadPackage(AFversion);
-    if (ires < 0) {
-      success &= LoadLibrary("STEERBase", mode);
-      success &= LoadLibrary("ESD", mode);
-      success &= LoadLibrary("AOD", mode);
-      success &= LoadLibrary("ANALYSIS", mode);
-      success &= LoadLibrary("ANALYSISalice", mode);
-      if (useCORRFW) success &= LoadLibrary("CORRFW", mode);
-    } else {
-      ires = gProof->EnablePackage(AFversion);
-      if (ires<0) success = kFALSE;
-      if (useCORRFW) success &= LoadLibrary("CORRFW", mode);
-    }
-    break;
-  default:
-    ::Error("AnalysisTrainNew.C::LoadCommonLibraries", 
-           "Unknown run mode: %s", mode);
-    return kFALSE;
-  }
-  if (success) {
-    ::Info("AnalysisTrainNew.C::LoadCommodLibraries", 
-          "Load common libraries:    SUCCESS");
-    ::Info("AnalysisTrainNew.C::LoadCommodLibraries", 
-          "Include path for Aclic compilation:\n%s",
-          gSystem->GetIncludePath());
-  } else {
-    ::Info("AnalysisTrainNew.C::LoadCommodLibraries", 
-          "Load common libraries:    FAILED");
-  }
-
-  return success;
-}
-
-//______________________________________________________________________________
-Bool_t LoadAnalysisLibraries(const char *mode)
-{
-  // Load common analysis libraries.
-  Bool_t success = kTRUE;
-  if (useTender) {
-    if (!LoadLibrary("TENDER", mode, kTRUE) ||
-       !LoadLibrary("TENDERSupplies", mode, kTRUE)) return kFALSE;
-  }
-  // PWG2 fmd
-  if (iPWG2fmd) {
-    if (!LoadLibrary("PWG2forward2", mode, kTRUE)) return kFALSE;
-  }
-  // PWG2 femtoscopy
-  if (iPWG2femto) {
-    if (!LoadLibrary("PWG2AOD", mode, kTRUE) ||
-       !LoadLibrary("PWG2femtoscopy", mode, kTRUE) ||
-       !LoadLibrary("PWG2femtoscopyUser", mode, kTRUE)) return kFALSE;
-  }
-  // PWG2 spectra
-  if (iPWG2spectra) {
-    if (!LoadLibrary("PWG2spectra", mode, kTRUE)) return kFALSE;
-  }
-  ::Info("AnalysisTrainNew.C::LoadAnalysisLibraries", 
-        "Load other libraries:   SUCCESS");
-  return kTRUE;
-}
-
-//______________________________________________________________________________
-Bool_t LoadLibrary(const char *module, const char *mode, Bool_t rec=kFALSE)
-{
-  // Load a module library in a given mode. Reports success.
-  Int_t imode = -1;
-  Int_t result;
-  TString smodule(module);
-  if (!strcmp(mode, "LOCAL")) imode = 0;
-  if (!strcmp(mode, "PROOF")) imode = 1;
-  if (!strcmp(mode, "GRID"))  imode = 2;
-  TString mod(module);
-  if (!mod.Length()) {
-    ::Error("AnalysisTrainNew.C::LoadLibrary", "Empty module name");
-    return kFALSE;
-  }
-  // If a library is specified, just load it
-  if (smodule.EndsWith(".so")) {
-    mod.Remove(mod.Index(".so"));
-    result = gSystem->Load(mod);
-    if (result < 0) {
-      ::Error("AnalysisTrainNew.C::LoadLibrary", 
-             "Could not load library %s", module);
-      return kFALSE;
-    }
-    if (rec) anaLibs += Form("%s.so ",mod.Data());
-    return kTRUE;
-  }
-  // Check if the library is already loaded
-  if (strlen(gSystem->GetLibraries(Form("%s.so", module), "", kFALSE)) > 0)
-    return kTRUE;
-  switch (imode) {
-  case 0:
-  case 2:
-    if (usePAR) {
-      result = SetupPar(module);
-      if (rec) anaPars += Form("%s.par ", module);
-    } else {
-      result = gSystem->Load(Form("lib%s.so", module));
-      if (rec) anaLibs += Form("lib%s.so ", module);
-    }
-    break;
-  case 1:
-    result = gProof->UploadPackage(module);
-    if (result<0) {
-      result = 
-       gProof->UploadPackage(gSystem->ExpandPathName(Form("$ALICE_ROOT/%s.par",
-                                                          module)));
-      if (result<0) {
-       ::Error("AnalysisTrainNew.C::LoadLibrary", 
-               "Could not find module %s.par in current directory "
-               "nor in $ALICE_ROOT", module);
-       return kFALSE;
-      }
-    }
-    result = gProof->EnablePackage(module);
-    break;
-  default:
-    return kFALSE;
-  }
-  if (result < 0) {
-    ::Error("AnalysisTrainNew.C::LoadLibrary", 
-           "Could not load module %s", module);
-    return kFALSE;
-  }
-  return kTRUE;
-}
-
-
-//______________________________________________________________________________
-TChain *CreateChain(const char *mode, const char *plugin_mode)
-{
-  // Create the input chain
-  Int_t imode = -1;
-  if (!strcmp(mode, "LOCAL")) imode = 0;
-  if (!strcmp(mode, "PROOF")) imode = 1;
-  if (!strcmp(mode, "GRID"))  imode = 2;
-  TChain *chain = NULL;
-  // Local chain
-  switch (imode) {
-  case 0:
-    if (iAODanalysis) {
-      if (!local_xmldataset.Length()) {
-       // Local AOD
-       chain = new TChain("aodTree");
-       if (gSystem->AccessPathName("data/AliAOD.root"))
-         ::Error("AnalysisTrainNew.C::CreateChain", 
-                 "File: AliAOD.root not in ./data dir");
-       else {
-         if (!saveTrain) chain->Add("data/AliAOD.root");
-         else            chain->Add("../data/AliAOD.root");
-       }
-      } else {
-       // Interactive AOD
-       chain = CreateChainSingle(local_xmldataset, "aodTree");
-      }
-    } else {
-      if (!local_xmldataset.Length()) {
-       // Local ESD
-       chain = new TChain("esdTree");
-       if (gSystem->AccessPathName("data/AliESDs.root"))
-         ::Error("AnalysisTrainNew.C::CreateChain", 
-                 "File: AliESDs.root not in ./data dir");
-       else {
-         if (!saveTrain) chain->Add("data/AliESDs.root");
-         else            chain->Add("../data/AliESDs.root");
-       }
-      } else {
-       // Interactive ESD
-       chain = CreateChainSingle(local_xmldataset, "esdTree");
-      }
-    }
-    break;
-  case 1:
-    break;
-  case 2:
-    if (usePLUGIN) {
-      // AliAnalysisGrid *alienHandler = CreateAlienHandler(plugin_mode);
-      // AliAnalysisManager::GetAnalysisManager()->SetGridHandler(alienHandler);
-    } else {
-      TString           treeName = "esdTree";
-      if (iAODanalysis) treeName = "aodTree";
-      chain = CreateChainSingle("wn.xml", treeName);
-    }
-    break;
-  default:
-  }
-  if (chain && chain->GetNtrees()) return chain;
-  return NULL;
-}
-
-//______________________________________________________________________________
-TChain* CreateChainSingle(const char* xmlfile, const char *treeName)
-{
-  printf("*******************************\n");
-  printf("*** Getting the ESD Chain   ***\n");
-  printf("*******************************\n");
-  TAlienCollection * myCollection  = TAlienCollection::Open(xmlfile);
-
-  if (!myCollection) {
-    ::Error("AnalysisTrainNew.C::CreateChainSingle", 
-           "Cannot create an AliEn collection from %s", xmlfile) ;
-    return NULL ;
-  }
-
-  TChain* chain = new TChain(treeName);
-  myCollection->Reset() ;
-  while ( myCollection->Next() ) chain->Add(myCollection->GetTURL("")) ;
-  chain->ls();
-  return chain;
-}
-
-//______________________________________________________________________________
-Int_t SetupPar(char* pararchivename)
-{
-  if (!pararchivename || !strlen(pararchivename)) return -1;
-  char processline[1024];
-  if (gSystem->AccessPathName(Form("%s.par", pararchivename))) {
-    if (!gSystem->AccessPathName(Form("%s/%s.par", 
-                                     gSystem->Getenv("ALICE_ROOT"),
-                                     pararchivename))) {
-      ::Info("AnalysisTrainNew.C::SetupPar", 
-            "Getting %s.par from $ALICE_ROOT", pararchivename);
-      TFile::Cp(gSystem->ExpandPathName(Form("$ALICE_ROOT/%s.par", 
-                                            pararchivename)),
-               Form("%s.par",pararchivename));
-    } else {
-      ::Error("AnalysisTrainNew.C::SetupPar", "Cannot find %s.par", 
-             pararchivename);
-      return -1;
-    }
-  }
-  if (usePLUGIN && saveTrain) 
-    gSystem->Exec(Form("ln -s ../%s.par %s",pararchivename, train_name.Data()));
-  gSystem->Exec(Form("tar xvzf %s.par", pararchivename));
-
-  TString ocwd = gSystem->WorkingDirectory();
-  if (!gSystem->ChangeDirectory(pararchivename)) return -1;
-
-  // check for BUILD.sh and execute
-  if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
-    printf("*******************************\n");
-    printf("*** Building PAR archive    ***\n");
-    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");
-    printf("*******************************\n");
-    gROOT->Macro("PROOF-INF/SETUP.C");
-  }
-  if (!gSystem->ChangeDirectory(ocwd.Data())) return -1;
-  return 0;
-}
-
-//______________________________________________________________________________
-AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
-{
-  // Check if user has a valid token, otherwise make one. This has
-  // limitations.  One can always follow the standard procedure of
-  // calling alien-token-init then
-  AliAnalysisAlien *plugin = new AliAnalysisAlien();
-  // Set the run mode (can be "full", "test", "offline", "submit" or
-  // "terminate")
-  plugin->SetRunMode(plugin_mode);
-  if (useProductionMode) {
-    plugin->SetProductionMode();
-    plugin->AddDataFile(data_collection);
-  }
-
-  if (!outputSingleFolder.IsNull()) {
-    plugin->SetOutputSingleFolder(outputSingleFolder);
-    plugin->SetOutputToRunNo();
-  }
-  plugin->SetJobTag(job_tag);
-  plugin->SetNtestFiles(5);
-  plugin->SetCheckCopy(kFALSE);
-  plugin->SetMergeDirName(mergeDirName);
-  // Set versions of used packages
-  plugin->SetAPIVersion("V1.1x");
-  plugin->SetROOTVersion(root_version);
-  plugin->SetAliROOTVersion(aliroot_version);
-  // Declare input data to be processed.
-  // Method 1: Create automatically XML collections using alien 'find' command.
-  // Define production directory LFN
-  plugin->SetGridDataDir(alien_datadir);
-  // Set data search pattern
-  plugin->SetDataPattern(data_pattern);
-  if (!useProductionMode) {
-    if (runOnData) {
-      plugin->SetRunPrefix("%09d");
-    }
-    //   if (!iAODanalysis) plugin->SetRunRange(run_range[0], run_range[1]);
-    for (Int_t i=0; i<10; i++) {
-      if (run_numbers[i]==0) break;
-      plugin->AddRunNumber(run_numbers[i]);
-    }
-  }
-  // Define alien work directory where all files will be
-  // copied. Relative to alien $HOME.
-  plugin->SetGridWorkingDir(grid_workdir);
-  // Declare alien output directory. Relative to working directory.
-  if (alien_outdir.IsNull()) alien_outdir = Form("output_%s",train_name.Data());
-  plugin->SetGridOutputDir(alien_outdir);
-
-  TString ana_sources = "";
-  TString ana_add = "";
-  if (usePAR && anaPars.Length()) {
-    printf("%s\n", anaPars.Data());
-    TObjArray *arr;
-    TObjString *objstr;
-    arr = anaPars.Tokenize(" ");
-    TIter next(arr);
-    while ((objstr=(TObjString*)next())) plugin->EnablePackage(objstr->GetString());
-    delete arr;
-  }
-
-  // Declare the analysis source files names separated by blancs. To
-  // be compiled runtime using ACLiC on the worker nodes.
-  ana_sources = ana_sources.Strip();
-  // Declare all libraries (other than the default ones for the
-  // framework. These will be loaded by the generated analysis
-  // macro. Add all extra files (task .cxx/.h) here.
-  anaLibs     = anaLibs.Strip();
-  if (ana_sources.Length()) plugin->SetAnalysisSource(ana_sources);
-  if (anaLibs.Length())     plugin->SetAdditionalLibs(anaLibs);
-
-  // Declare the output file names separated by blancs.  (can be like:
-  // file.root or file.root@ALICE::Niham::File)
-  plugin->SetDefaultOutputs();
-  plugin->SetMergeExcludes(mergeExclude);
-  plugin->SetMaxMergeFiles(maxMergeFiles);
-  plugin->SetNrunsPerMaster(nRunsPerMaster);
-  // Optionally define the files to be archived.
-  //   plugin->SetOutputArchive("log_archive.zip:stdout,stderr@ALICE::NIHAM::File root_archive.zip:AliAOD.root,AOD.tag.root@ALICE::NIHAM::File");
-
-
-  // Put default output files to archive
-  TString listhists = "";
-  TString listaods  = "";
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  TIter next(mgr->GetOutputs());
-  AliAnalysisDataContainer *output;
-  while ((output=(AliAnalysisDataContainer*)next())) {
-    const char *filename = output->GetFileName();
-    if (!(strcmp(filename, "default"))) {
-      if (!mgr->GetOutputEventHandler()) continue;
-      filename = mgr->GetOutputEventHandler()->GetOutputFileName();
-      if (listaods.Length()) listaods += ",";
-      listaods += filename;
-      listaods += ",";
-      listaods += "pyxsec_hists.root";
-    } else {
-      if (!strcmp(filename, "pyxsec_hists.root")) continue;
-      if (listhists.Contains(filename)) continue;
-      if (listhists.Length()) listhists += ",";
-      listhists += filename;
-    }
-  }
-  if (mgr->GetExtraFiles().Length()) {
-    if (listaods.Length()) listaods += ",";
-    listaods += mgr->GetExtraFiles();
-    listaods.ReplaceAll(" ", ",");
-  }
-  if (listhists.Length()) listhists = Form("hist_archive.zip:%s@%s", 
-                                          listhists.Data(), 
-                                          outputStorages.Data());
-  if (listaods.Length())  listaods  = Form("aod_archive.zip:%s@%s", 
-                                          listaods.Data(), 
-                                          outputStorages.Data());
-  if (!listhists.Length() && !listaods.Length()) {
-    ::Fatal("AnalysisTrainNew", "No task output !");
-  }
-  TString outputArchive = Form("log_archive.zip:stderr@%s", 
-                              outputStorages.Data());
-  if (listaods.Length()) {
-    outputArchive += " ";
-    outputArchive += listaods;
-  }
-  if (listhists.Length()) {
-    outputArchive += " ";
-    outputArchive += listhists;
-  }
-  // Set friends
-  //   if (iAODanalysis && iPWG3d2h)
-  //      plugin->SetFriendChainName("AliAOD.VertexingHF.root");
-  //   plugin->SetOutputArchive(outputArchive);
-  
-  // Optionally set a name for the generated analysis macro (default
-  // MyAnalysis.C)
-  plugin->SetAnalysisMacro(Form("%s.C", train_name.Data()));
-  // Optionally set a name for the generated validation script
-  plugin->SetValidationScript("PWG2validation.sh");
-  // Optionally set maximum number of input files/subjob (default 100,
-  // put 0 to ignore)
-  plugin->SetSplitMaxInputFileNumber(nFilesPerJob);
-  // Optionally set number of failed jobs that will trigger killing
-  // waiting sub-jobs.
-  //   plugin->SetMaxInitFailed(5);
-  // Optionally modify the number of replicas
-  plugin->SetNumberOfReplicas(4);
-  // Optionally resubmit threshold.
-  //   plugin->SetMasterResubmitThreshold(90);
-  // Optionally set time to live (default 30000 sec)
-  plugin->SetTTL(70000);
-  // Optionally set input format (default xml-single)
-  plugin->SetInputFormat("xml-single");
-  // Optionally modify the name of the generated JDL (default analysis.jdl)
-  plugin->SetJDLName(Form("%s.jdl", train_name.Data()));
-  // Optionally modify the executable name (default analysis.sh)
-  plugin->SetExecutable(Form("%s.sh", train_name.Data()));
-  // Optionally modify job price (default 1)
-  plugin->SetPrice(1);
-  // Merge via JDL
-  plugin->SetMergeViaJDL(useMergeViaJDL);
-  // Use fastread option
-  plugin->SetFastReadOption(useFastReadOption);
-  // UseOverwrite mode
-  plugin->SetOverwriteMode(useOverwriteMode);
-  plugin->SetExecutableCommand("aliroot -b -q");
-  // Optionally modify split mode (default 'se')
-  plugin->SetSplitMode("se");
-  return plugin;
-}
-
-//______________________________________________________________________________
-void WriteConfig()
-{
-  // Write train configuration in a file. The file name has the
-  // format: train_[trainName]_ddMonthyyyy_time.C
-  if (useDATE) {
-    gSystem->Exec("date +%d%b%Y_%Hh%M > date.tmp");
-    ifstream fdate("date.tmp");
-    if (!fdate.is_open()) {
-      ::Error("AnalysisTrainNew.C::Export","Could not generate file name");
-      return;
-    }
-    const char date[64];
-    fdate.getline(date,64);
-    fdate.close();
-    gSystem->Exec("rm date.tmp");
-    train_name = Form("%s_%s", train_name.Data(), date);
-  }
-  TString cdir = gSystem->WorkingDirectory();
-  gSystem->MakeDirectory(train_name);
-  gSystem->ChangeDirectory(train_name);
-  ofstream out;
-  TString outName(Form("%sConfig.C",train_name.Data()));
-  out.open(outName.Data(), ios::out);
-  if (out.bad()) {
-    ::Error("AnalysisTrainNew.C::Export", 
-           "Cannot open %s for writing", outName.Data());
-    return;
-  }
-  out << "{" << endl;
-  out << "   train_name      = " << "\"" << train_name.Data() << "\";" << endl;
-  out << "   proof_cluster   = " << "\"" << proof_cluster.Data() << "\";" << endl;
-  out << "   useAFPAR        = " << useAFPAR << ";" << endl;
-  if (useAFPAR)
-    out << "   AFversion       = " << AFversion.Data() << ";" << endl;
-  out << "   proof_dataset   = " << "\"" << proof_dataset.Data() << "\";" << endl;
-  out << "   usePLUGIN       = " << usePLUGIN << ";" << endl;
-  out << "   usePAR          = " << usePAR << ";" << endl;
-  out << "   useCPAR         = " << useCPAR << ";" << endl;
-  out << "   root_version    = " << "\"" << root_version.Data() << "\";" << endl;
-  out << "   aliroot_version = " << "\"" << aliroot_version.Data() << "\";" << endl;
-  out << "   alien_datadir   = " << "\"" << alien_datadir.Data() << "\";" << endl;
-  if (!alien_outdir.Length()) alien_outdir = Form("output_%s",train_name.Data());
-  out << "   alien_outdir    = " << "\"" << alien_outdir.Data() << "\";" << endl;
-  out << "   maxMergeFiles   = " << maxMergeFiles << ";" << endl;
-  out << "   mergeExclude    = " << "\"" << mergeExclude.Data() << "\";" << endl;
-  out << "   nRunsPerMaster  = " << nRunsPerMaster << ";" << endl;
-  out << "   nFilesPerJob    = " << nFilesPerJob << ";" << endl;
-  //   for (Int_t i=0; i<10; i++) {
-  //      if (run_numbers[i])
-  //         out << "   run_numbers[" << i << "]  = " << run_numbers[i] << ";" << endl;
-  //   }
-  //   out << "   run_range[0]    = " << run_range[0] << ";" << endl;
-  //   out << "   run_range[1]    = " << run_range[1] << ";" << endl;
-  out << "   usePhysicsSelection = " << usePhysicsSelection << ";" << endl;
-  out << "   useTender       = " << useTender << ";" << endl;
-  out << "   useMergeViaJDL  = " << useMergeViaJDL << ";" << endl;
-  out << "   useOverwriteMode  = " << useOverwriteMode << ";" << endl;
-  out << "   useFastReadOption = " << useFastReadOption << ";" << endl;
-  out << "   useDBG          = " << useDBG << ";" << endl;
-  out << "   useMC           = " << useMC << ";" << endl;
-  out << "   useTAGS         = " << useTAGS << ";" << endl;
-  out << "   useKFILTER      = " << useKFILTER << ";" << endl;
-  out << "   useTR           = " << useTR << ";" << endl;
-  out << "   useCORRFW       = " << useCORRFW << ";" << endl;
-  out << "   useAODTAGS      = " << useAODTAGS << ";" << endl;
-  out << "   saveTrain       = " << "kFALSE;" << endl << endl;
-  out << "   // Analysis modules" << endl;
-  out << "   iAODanalysis    = " << iAODanalysis << ";" << endl;
-  out << "   iAODhandler     = " << iAODhandler << ";" << endl;
-  out << "   iPWG2fmd        = " << iPWG2fmd << ";" << endl;
-  out << "   iPWG2femto      = " << iPWG2femto << ";" << endl;
-  out << "   iPWG2spectra    = " << iPWG2spectra << ";" << endl;
-  out << "}" << endl;
-  ::Info("AnalysisTrainNew.C::WriteConfig", 
-        "Train configuration wrote to file %s", outName.Data());
-  gSystem->ChangeDirectory(cdir);
-}
-
-//____________________________________________________________________
-Bool_t LoadConfig(const char *filename)
-{
-  // Read train configuration from file
-  if (gSystem->AccessPathName(filename)) {
-    ::Error("AnalysisTrainNew.C::LoadConfig", "Config file name not found");
-    return kFALSE;
-  }
-  gROOT->ProcessLine(Form(".x %s", filename));
-  ::Info("AnalysisTrainNew.C::LoadConfig", 
-        "Train configuration loaded from file %s", filename);
-  return kTRUE;
-}
-//____________________________________________________________________
-//
-// EOF
-//
diff --git a/PWG2/data/AliAnalysisCentralEfficiency.root b/PWG2/data/AliAnalysisCentralEfficiency.root
deleted file mode 100644 (file)
index 9700d8d..0000000
Binary files a/PWG2/data/AliAnalysisCentralEfficiency.root and /dev/null differ
diff --git a/PWG2/data/PriorProbabilities.root b/PWG2/data/PriorProbabilities.root
deleted file mode 100644 (file)
index 0a0e880..0000000
Binary files a/PWG2/data/PriorProbabilities.root and /dev/null differ
diff --git a/PWG2/data/README b/PWG2/data/README
deleted file mode 100644 (file)
index 169b9d2..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-===========================================================
-=          Author: Panos.Christakoglou@cern.ch            =
-===========================================================
-
-
-PriorPropabilities.root
-_______________________
-
-The file contains 5 TF1 objects namely: 
-fitElectrons
-fitMuons
-fitPions
-fitKaons
-fitProtons
-
-These objects represent the functions (pol9) used to fit the the momentum spectra of electrons, muons, pions, kaons and protons. The spectra were generated by looping over the primaries of the kine trees (generator PYTHIA - production PDC07).
-
-This file can be used as input for any PID related study if one needs to have a momentum dependence of the a priori particle concentrations. This method gives better results (higher efficiency) with increasing momenta.
-
-To get the momentum dependent particle concentrations one has to do on the client side:
-
-TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
-TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
-TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
-TF1 *fitPions = (TF1 *)f->Get("fitPions");
-TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
-TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
-
-If you want to pass these function in your task then you have to implement a function/setter that will do this. Then inside your task you do:
-
-fElectronFunction->Eval(p);
-fMuonFunction->Eval(p);
-fPionFunction->Eval(p);
-fKaonFunction->Eval(p);
-fProtonFunction->Eval(p);
-
-where p is the momentum of the track/particle.
-
-A complete aexample of the implementation of the usage of these functions can be found in:
-o) $ALICE_ROOT/PWG2/runProtonAnalysis.C
-o) $ALICE_ROOT/PWG2/SPECTRA/AliProtonAnalysis.cxx (.h)
\ No newline at end of file
diff --git a/PWG2/data/protonsdEdxInfo.dat b/PWG2/data/protonsdEdxInfo.dat
deleted file mode 100644 (file)
index 6fb21ce..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-0.3 527.971 50
-0.35 395.285 50
-0.4 284.372 30.1442
-0.45 218.005 18.7777
-0.5 178.494 14.0241
-0.55 150.933 11.0463
-0.6 131.577 9.51759
-0.65 116.687 8.57666
-0.7 105.609 7.81611
-0.75 96.8363 7.27042
-0.8 89.8205 6.85817
-0.85 84.0146 6.47699
-0.9 79.2782 6.00261
-0.95 75.0956 5.94471
-1 71.5834 5.93415
-1.05 68.5135 5.63282
-1.1 66.2381 5.49914
-1.15 64.1309 5.36648
-1.2 62.496 5.41895
-1.25 60.766 5.45505
-1.3 59.5276 5.56985
-1.35 58.2395 5.24936
-1.4 57.1332 5.37075
-1.45 56.3237 4.91815
\ No newline at end of file
diff --git a/PWG2/macros/Train2/runBatch.C b/PWG2/macros/Train2/runBatch.C
deleted file mode 100644 (file)
index a850fcd..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-void runBatch() {
-  TStopwatch timer;
-  timer.Start();
-
-  printf("*** Connect to AliEn ***\n");
-  TGrid::Connect("alien://");
-  gSystem->Load("libProofPlayer.so");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libTree.so");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libXMLIO.so");
-  gSystem->Load("libPhysics.so");
-
-  int runFemto = 1;
-  int runSpectraProtons = 1;
-  int runSpectraV0 = 1;
-  int runFlow = 1;
-  int runResonances = 1;
-  int runEvChar = 1;
-  int runKink = 1;
-  int runUnicor = 1;
-  int runFMDanalysis = 0;
-  int runLRC = 1;
-
-  int useGeneralParFiles = 0;
-  int usePWG2ParFiles = 0;
-  
-  //____________________________________________________//
-  //_____________Setting up STEERBase.par_______________//
-  //____________________________________________________//
-  if (useGeneralParFiles) {
-    setupPar("STEERBase");
-  }
-  gSystem->Load("libSTEERBase.so");
-
-  //____________________________________________________//
-  //_____________Setting up ESD.par_____________________//
-  //____________________________________________________//
-  if (useGeneralParFiles) {
-    setupPar("ESD");
-  }
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libESD.so");
-
-  //____________________________________________________//
-  //_____________Setting up AOD.par_____________________//
-  //____________________________________________________//
-  if (useGeneralParFiles) {
-    setupPar("AOD");
-  }
-  gSystem->Load("libAOD.so");
-
-  //_________________________________________________________//
-  //_____________Setting up ANALYSIS.par_____________________//
-  //_________________________________________________________//
-  if (useGeneralParFiles) {
-    setupPar("ANALYSIS");
-  }
-  gSystem->Load("libANALYSIS.so");
-
-  //_________________________________________________________//
-  //_____________Setting up ANALYSISalice.par________________//
-  //_________________________________________________________//
-  if (useGeneralParFiles) {
-    setupPar("ANALYSISalice");
-  }
-  gSystem->Load("libANALYSISalice.so");
-
-  //____________________________________________________//
-  //_____________Setting up CORRFW library______________//
-  //____________________________________________________//
-  if (useGeneralParFiles) {
-    setupPar("CORRFW");
-  }
-  gSystem->Load("libCORRFW.so");
-  
-  //____________________________________________________//
-  //_____________Setting up PWG2AOD.par_________________//
-  //____________________________________________________//
-  if (usePWG2ParFiles) {
-    setupPar("PWG2AOD");
-  }
-  gSystem->Load("libPWG2AOD.so");
-  
-  if (runFemto) {
-    //____________________________________________________//
-    //_____________Setting up PWG2femtoscopy.par__________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2femtoscopy");
-    }
-    gSystem->Load("libPWG2femtoscopy.so");
-    
-    //____________________________________________________//
-    //_____________Setting up PWG2femtoscopyUser.par______//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2femtoscopyUser");
-    }
-    gSystem->Load("libPWG2femtoscopyUser.so");
-  }
-  
-  if (runSpectraProtons) {
-    //____________________________________________________//
-    //_____________Setting up PWG2spectra library ________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2spectra");
-    }
-    gSystem->Load("libPWG2spectra.so");
-  }
-
-  if (runSpectraV0) {
-    //____________________________________________________//
-    //_____________Setting up PWG2spectra library ________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2spectra");
-    }
-    gSystem->Load("libPWG2spectra.so");
-  }
-
-  if (runFlow) {
-    //____________________________________________________//
-    //_____________Setting up PWG2flowCommon.par__________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2flowCommon");
-    }
-    gSystem->Load("libPWG2flowCommon.so");
-
-    //____________________________________________________//
-    //_____________Setting up PWG2flowTasks.par___________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2flowTasks");
-    }
-    gSystem->Load("libPWG2flowTasks.so");
-  }
-
-  if (runResonances) {
-    //____________________________________________________//
-    //_____________Setting up PWG2resonances.par__________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2resonances");
-    }
-    gSystem->Load("libPWG2resonances.so");
-  }
-  
-  if (runEvChar) {
-    //____________________________________________________//
-    //_____________Setting up PWG2evchar library__________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2evchar");
-    }
-    gSystem->Load("libPWG2evchar.so");
-  }
-  
-  if (runKink) {
-    //____________________________________________________//
-    //_____________Setting up PWG2kink library____________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2kink");
-    }
-    gSystem->Load("libPWG2kink.so");
-  }
-  
-  if (runUnicor) {
-    //____________________________________________________//
-    //_____________Setting up PWG2unicor library__________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2unicor");
-    }
-    gSystem->Load("libPWG2unicor.so");
-  }
-  
-  if (runFMDanalysis) {
-    //____________________________________________________//
-    //_____________Setting up FMD analysis library________//
-    //____________________________________________________//
-    //    setupPar("FMDanalysis");
-    gSystem->Load("libFMDanalysis.so");
-  }
-  
-  if (runLRC) {
-    //____________________________________________________//
-    //_____________Setting up PWG2ebye library____________//
-    //____________________________________________________//
-    if (usePWG2ParFiles) {
-      setupPar("PWG2ebye");
-    }
-    gSystem->Load("libPWG2ebye.so");
-  }
-  
-  //ANALYSIS PART
-  const char *collectionfile="wn.xml";
-  //____________________________________________//
-  //Usage of event tags
-  AliTagAnalysis *analysis = new AliTagAnalysis();
-  TChain *chain = 0x0;
-  chain = analysis->GetChainFromCollection(collectionfile,"esdTree");
-  
-  //  const char *collectionfile="../../LHC09a4/esd.LHC09a4.81305.mini.list";
-  //  gROOT->LoadMacro("CreateESDChain.C");
-  //  chain = CreateESDChain(collectionfile);
-  
-  //____________________________________________//
-  // Make the analysis manager
-  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
-  AliESDInputHandler* esdH = new AliESDInputHandler;
-  //  esdH->SetInactiveBranches("FMD CaloCluster");
-  mgr->SetInputEventHandler(esdH);  
-
-  AliMCEventHandler *mcH = new AliMCEventHandler;
-  mgr->SetMCtruthEventHandler(mcH);
-  if (runFemto) {
-    //____________________________________________//
-    // 1st task - FEMTOSCOPY
-    
-    gROOT->LoadMacro("AddTaskFemto.C");
-    AliAnalysisTaskFemto *taskfemto = AddTaskFemto();
-  }
-
-  if (runSpectraProtons) {
-    //____________________________________________//
-    // 2nd task - SPECTRA protons
-    
-    gROOT->LoadMacro("AddTaskProtons.C");
-    AliAnalysisTaskProtons *taskprotons = AddTaskProtons();
-  }
-
-  if (runFlow) {
-    //____________________________________________//
-    // 3rd task - FLOW
-
-    // Flow analysis method can be:(set to kTRUE or kFALSE)
-    Bool_t SP       = kTRUE;
-    Bool_t LYZ1SUM  = kTRUE;
-    Bool_t LYZ1PROD = kTRUE;
-    Bool_t LYZ2SUM  = kFALSE;
-    Bool_t LYZ2PROD = kFALSE;
-    Bool_t LYZEP    = kFALSE;
-    Bool_t GFC      = kTRUE;
-    Bool_t QC       = kTRUE;
-    Bool_t FQD      = kTRUE;
-    Bool_t MCEP     = kTRUE; //not for pp 
-    
-    Bool_t METHODS[] = {SP,LYZ1SUM,LYZ1PROD,LYZ2SUM,LYZ2PROD,LYZEP,GFC,QC,FQD,MCEP};
-    
-    // Analysis type can be ESD, AOD, MC, ESDMC0, ESDMC1
-    const TString type = "ESD";
-    
-    // Boolean to fill/not fill the QA histograms
-    Bool_t QA = kTRUE;   
-    
-    // Boolean to use/not use weights for the Q vector
-    Bool_t WEIGHTS[] = {kFALSE,kFALSE,kFALSE}; //Phi, v'(pt), v'(eta)
-    
-    gROOT->LoadMacro("AddTaskFlow.C");
-    AliAnalysisTaskFlowEvent* taskFE = AddTaskFlow(type,METHODS,QA,WEIGHTS);
-  }
-
-  if (runResonances) {
-    //____________________________________________//
-    // 4th task - RESONANCES
-    
-    int useMC = 1;
-
-    gROOT->LoadMacro("AddAnalysisTaskRsn.C");
-    //    AliAnalysisTaskFemto *taskfemto = AddTaskFemto();
-    //    AddAnalysisTaskRsn(AliLog::kInfo, kFALSE, "rsn.root", useMC);
-    AddAnalysisTaskRsn();
-  }
-
-  if (runEvChar) {
-    //____________________________________________//
-    // 5th task - EVENT CHARACTERIZARION
-    
-    gROOT->LoadMacro("AddTaskSPDdNdEta.C");
-    AliAnalysisTaskSPDdNdEta *taskspddndeta = AddTaskSPDdNdEta();
-  }
-
-  if (runSpectraV0) {
-    //____________________________________________//
-    // 6th, 7th, 8th tasks - SPECTRA V0
-
-    // cascades
-    gROOT->LoadMacro("AddTaskCheckCascade.C");
-    AliAnalysisTaskCheckCascade *taskcheckcascade = AddTaskCheckCascade(0);      
-
-    // v0's
-    gROOT->LoadMacro("AddTaskCheckV0.C");
-    AliAnalysisTaskCheckV0 *taskcheckV0 = AddTaskCheckV0();
-
-    // strangeness
-    gROOT->LoadMacro("AddTaskStrange.C");
-    AliAnalysisTaskStrange *taskstrange = AddTaskStrange();
-  }
-
-  if (runKink) {
-    //____________________________________________//
-    // 9th, 10th, 11th tasks - KINK
-    gROOT->LoadMacro("AddTaskKink.C");
-    AliAnalysisKinkESDMC *taskkink = AddTaskKink();
-
-    gROOT->LoadMacro("AddTaskKinkResonance.C");
-    AliAnalysisTaskKinkResonance *taskkinkres = AddTaskKinkResonance();
-
-    gROOT->LoadMacro("AddTaskKinkResonanceLikeSign.C");
-    AliResonanceKinkLikeSign *taskkinklikesign = AddTaskKinkResonanceLikeSign();
-  }
-
-  if (runUnicor) {
-    //____________________________________________//
-    // 12th task - UNICOR
-    gROOT->LoadMacro("AddTaskUnicor.C");
-    AliAnalysisTaskUnicor *taskunicor = AddTaskUnicor();
-  }
-
-  if (runFMDanalysis) {
-    //____________________________________________//
-    // 13th task - FMD
-    gROOT->LoadMacro("AddTaskFMD.C");
-    AliFMDAnalysisTaskSE *taskfmd = AddTaskFMD();
-  }
-
-  if (runLRC) {
-    //____________________________________________//
-    // 13th task - FMD
-    gROOT->LoadMacro("AddTaskLRC.C");
-    //    AliFMDAnalysisTaskSE *taskfmd = AddTaskFMD();
-    TList *lrcasks = AddLRCTaskSet();
-  }
-
-  //____________________________________________//
-  // Running the train
-
-  if (!mgr->InitAnalysis()) return;
-  mgr->PrintStatus();
-  mgr->StartAnalysis("local",chain);
-
-  timer.Stop();
-  timer.Print();
-}
-
-Int_t setupPar(const char* pararchivename) {
-  ///////////////////
-  // Setup PAR File//
-  ///////////////////
-  if (pararchivename) {
-    char processline[1024];
-    sprintf(processline,".! tar xvzf %s.par",pararchivename);
-    gROOT->ProcessLine(processline);
-    const char* 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");
-      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");
-      printf("*******************************\n");
-      gROOT->Macro("PROOF-INF/SETUP.C");
-    }
-    
-    gSystem->ChangeDirectory("../");
-  }
-
-  return 1;
-}
diff --git a/PWG2/runAODAnalysisExample.C b/PWG2/runAODAnalysisExample.C
deleted file mode 100644 (file)
index e6172b4..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-void produceAOD()
-{
-    gSystem->Load("libTree.so");
-    gSystem->Load("libGeom.so");
-    gSystem->Load("libVMC.so");
-    gSystem->Load("libXMLIO.so");
-    SetupPar("STEERBase");
-//    gSystem->Load("STEERBase/libSTEERBase.so");
-    SetupPar("ESD");
-//    gSystem->Load("ESD/libESD.so");
-    SetupPar("AOD");
-//    gSystem->Load("AOD/libAOD.so");
-    SetupPar("ANALYSIS");
-//    gSystem->Load("ANALYSIS/libANALYSIS.so");
-    SetupPar("PWG0base");
-    // Make the analysis manager
-    //
-    // Chain from CAF
-    gROOT->LoadMacro("CreateESDChain.C");
-//     TChain* chain = CreateESDChain("ESD1503X_v1.txt", 10);
-    TChain* chain = CreateESDChain("/mnt/data/alice/pbpb_therminator/central.2/", 885);
-
-    AliAODHandler* aodHandler   = new AliAODHandler();
-    aodHandler->SetOutputFileName("aod.root");
-    AliESDInputHandler *esdHandler = new AliESDInputHandler();
-    esdHandler->SetInactiveBranches("FMD CaloCluster");
-    
-    AliMCEventHandler* mcHandler = new AliMCEventHandler();
-
-    AliAnalysisManager *mgr  = new AliAnalysisManager("esd to aod to histos", "testing aod analysis");
-    mgr->SetInputEventHandler(esdHandler);
-    mgr->SetOutputEventHandler(aodHandler);
-    mgr->SetMCtruthEventHandler(mcHandler);
-    mgr->SetDebugLevel(10);
-    AliLog::EnableDebug(kTRUE);
-    AliLog::SetGlobalLogLevel(2);
-
-
-    // Set of cuts
-    // 
-    // 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);
-    //
-    // hard
-    AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard");
-    esdTrackCutsH->SetMinNClustersTPC(100);
-    esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0);
-    esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
-    esdTrackCutsH->SetRequireTPCRefit(kTRUE);
-    esdTrackCutsH->SetMinNsigmaToVertex(2);
-    esdTrackCutsH->SetRequireSigmaToVertex(kTRUE);
-    esdTrackCutsH->SetAcceptKingDaughters(kFALSE);
-    //
-    AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
-    trackFilter->AddCuts(esdTrackCutsL);
-    trackFilter->AddCuts(esdTrackCutsH);
-    //
-    AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
-    esdfilter->SetTrackFilter(trackFilter);
-    esdfilter->SetDebugLevel(10);
-    mgr->AddTask(esdfilter);
-
-    // Create containers for input/output
-    // Top ESD container
-    AliAnalysisDataContainer *cin_esd = mgr->GetCommonInputContainer();
-
-    // Output AOD container
-    AliAnalysisDataContainer *cout_aod = mgr->GetCommonOutputContainer();
-
-    mgr->ConnectInput  (esdfilter,  0, cin_esd  );
-    mgr->ConnectOutput (esdfilter,  0, cout_aod );
-   //
-    // Run the analysis
-    //    
-    mgr->InitAnalysis();
-    mgr->PrintStatus();
-    mgr->StartAnalysis("local",chain);
-    delete mgr;
-}
-
-void runPWG2()
-{
-    gSystem->Load("libTree.so");
-    gSystem->Load("libGeom.so");
-    gSystem->Load("libVMC.so");
-    gSystem->Load("libXMLIO.so");
-    SetupPar("STEERBase");
-//    gSystem->Load("STEERBase/libSTEERBase.so");
-    SetupPar("ESD");
-//    gSystem->Load("ESD/libESD.so");
-    SetupPar("AOD");
-//    gSystem->Load("AOD/libAOD.so");
-    SetupPar("ANALYSIS");
-//    gSystem->Load("ANALYSIS/libANALYSIS.so");
-    SetupPar("PWG0base");
-//    gSystem->Load("PWG0base/libPWG0base.so");
-//    SetupPar("TASKFILTER");
-//    gSystem->Load("TASKFILTER/libTASKFILTER.so");
-//    gSystem->Load("JETAN/libJETAN.so");
-  SetupPar("PWG2spectra");
-  gROOT->ProcessLine(".L $ALICE_ROOT/PWG2/AliAnalysisTaskProtons.cxx++g");
-   //
-//    if (gApplication) gApplication->InitializeGraphics();
-    // Create the chain
-    //
-    // Chain from aod.root
-     TChain* chain = new TChain("aodTree");
-     chain->Add("aod.root");
- //   TChain* chain = CreateESDChain("ESD12001.txt", 2);  
-    // Chain from local files
-//    gROOT->LoadMacro("CreateLocalChain.C");
-//    TChain* chain = CreateLocalChain();  
-    // Chain from ALIEN files
-//    TGrid::Connect("alien://"); 
-//    gROOT->LoadMacro("CreateChain.C");
-//    TChain* chain = CreateChain("global.xml");  
-
-    //
-    // Make the analysis manager
-    //
-    AliAODInputHandler *aodHandler = new AliAODInputHandler();
-
-    AliAnalysisManager *mgr  = new AliAnalysisManager("esd to aod to histos", "testing aod analysis");
-    mgr->SetInputEventHandler(aodHandler);
-    mgr->SetDebugLevel(10);
-    AliLog::EnableDebug(kTRUE);
-    AliLog::SetGlobalLogLevel(2);
-
-
-   //
-  //____________________________________________//
-  // 1st Proton task
-  AliAnalysisTaskProtons *taskproton = new AliAnalysisTaskProtons("TaskProtons");
-  taskproton->SetType("AOD");
-  TFile *f = TFile::Open("$ALICE_ROOT/PWG2/data/PriorProbabilities.root ");
-  TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
-  TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
-  TF1 *fitPions = (TF1 *)f->Get("fitPions");
-  TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
-  TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
-  taskproton->SetPriorProbabilityFunctions(fitElectrons,
-                                     fitMuons,
-                                     fitPions,
-                                     fitKaons,
-                                     fitProtons);
-  mgr->AddTask(taskproton);
-    // Create containers for input/output
-    // Top AOD container
-    AliAnalysisDataContainer *cin_aod = mgr->GetCommonInputContainer();
-
-    // Output histogram container
-    AliAnalysisDataContainer *cout_hist = mgr->CreateContainer("protonhistos", TList::Class(),AliAnalysisManager::kOutputContainer,"protonhistos.root");
-
-    mgr->ConnectInput(taskproton,0,cin_aod);
-    mgr->ConnectOutput(taskproton,0,cout_hist);
-   //
-    // Run the analysis
-    //    
-    mgr->InitAnalysis();
-    mgr->PrintStatus();
-    mgr->StartAnalysis("local",chain);
-}
-
-void SetupPar(char* pararchivename)
-{
-    if (pararchivename) {
-       char processline[1024];
-       sprintf(processline,".! tar xvzf %s.par",pararchivename);
-       gROOT->ProcessLine(processline);
-       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");
-           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");
-           printf("*******************************\n");
-           gROOT->Macro("PROOF-INF/SETUP.C");
-       }
-       
-       gSystem->ChangeDirectory(ocwd.Data());
-   printf("Current dir: %s\n", ocwd.Data());
-    } 
-}