AddTask macros for all tasks, to run on CAF with with old root5-22-00 version, added...
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 20 Apr 2009 08:59:38 +0000 (08:59 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 20 Apr 2009 08:59:38 +0000 (08:59 +0000)
PWG4/macros/AddTaskDiJets.C [new file with mode: 0644]
PWG4/macros/AddTaskESDfilter.C [new file with mode: 0644]
PWG4/macros/AddTaskJetSpectrum.C [new file with mode: 0644]
PWG4/macros/AddTaskJets.C
PWG4/macros/AddTaskPWG4PidDetEx.C [new file with mode: 0644]
PWG4/macros/AddTaskUE.C [new file with mode: 0644]
PWG4/macros/AnalysisTrainCAF.C

diff --git a/PWG4/macros/AddTaskDiJets.C b/PWG4/macros/AddTaskDiJets.C
new file mode 100644 (file)
index 0000000..1e2788d
--- /dev/null
@@ -0,0 +1,69 @@
+AliAnalysisTaskDiJets *AddTaskDiJets()\r
+{\r
+// Creates a jet fider task, configures it and adds it to the analysis manager.\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskJets", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskDiJets", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   \r
+   AliAnalysisTaskDiJets *dijetana = new AliAnalysisTaskDiJets("DiJetAnalysis");\r
+   \r
+   mgr->AddTask(dijetana);\r
+      \r
+   // Create ONLY the output containers for the data produced by the task.\r
+   // Get and connect other common input/output containers via the manager as below\r
+   //==============================================================================\r
+   mgr->ConnectInput  (dijetana, 0, mgr->GetCommonInputContainer());\r
+   mgr->ConnectOutput (dijetana, 0, mgr->GetCommonOutputContainer());\r
+   \r
+   return dijetana;\r
+}\r
+\r
+AliAnalysisTaskDiJets *AddTaskDiJets(AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput)\r
+{\r
+  // This is only for running on PROOF with the old root version 5-22-00 \r
+  // and the older version of the AF\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskJets", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskDiJets", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   AliAnalysisTaskDiJets *dijetana = new AliAnalysisTaskDiJets("DiJetAnalysis");\r
+   mgr->AddTask(dijetana);\r
+\r
+   //\r
+   // Create containers for input/output\r
+   AliAnalysisDataContainer *c_aod_dijet = mgr->CreateContainer("cAODdijet", TTree::Class(),AliAnalysisManager::kExchangeContainer);\r
+   mgr->ConnectInput  (dijetana,  0, cinput  );\r
+   mgr->ConnectOutput (dijetana,  0, c_aod_dijet);\r
+\r
+   return dijetana;\r
+\r
+}  \r
diff --git a/PWG4/macros/AddTaskESDfilter.C b/PWG4/macros/AddTaskESDfilter.C
new file mode 100644 (file)
index 0000000..9eb4445
--- /dev/null
@@ -0,0 +1,97 @@
+AliESDtrackCuts *CreateCuts(Int_t iCut = 0); // create the standard cuts\r
+AliAnalysisTaskESDfilter *AddTaskESDfilter();\r
+AliAnalysisTaskESDfilter *AddTaskESDfilter(AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput);\r
+\r
+AliAnalysisTaskESDfilter *AddTaskESDfilter()\r
+{\r
+// Creates a jet fider task, configures it and adds it to the analysis manager.\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskESDFilter", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskESDFilter", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+\r
+   AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
+   trackFilter->AddCuts(CreateCuts(0));\r
+   \r
+   AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");\r
+   esdfilter->SetTrackFilter(trackFilter);\r
+   mgr->AddTask(esdfilter);\r
+      \r
+   // Create ONLY the output containers for the data produced by the task.\r
+   // Get and connect other common input/output containers via the manager as below\r
+   //==============================================================================\r
+   mgr->ConnectInput  (esdfilter, 0, mgr->GetCommonInputContainer());\r
+   mgr->ConnectOutput (esdfilter, 0, mgr->GetCommonOutputContainer());\r
+   return esdfilter;\r
+}\r
+\r
+AliAnalysisTaskESDfilter *AddTaskESDfilter(AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput)\r
+{\r
+  // This is only for running on PROOF with the old root version 5-22-00 \r
+  // and the older version of the AF\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskESDFilter", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskESDFilter", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
+   trackFilter->AddCuts(CreateCuts(0));\r
+   //\r
+   // ESD filter task putting standard info to output AOD (with cuts)\r
+   AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");\r
+   esdfilter->SetTrackFilter(trackFilter);\r
+   mgr->AddTask(esdfilter);\r
+\r
+   AliAnalysisDataContainer *c_aod_filter = mgr->CreateContainer("cAODfilter", TTree::Class(),\r
+                                                               AliAnalysisManager::kExchangeContainer);\r
+   // Connect to data containers\r
+   mgr->ConnectInput  (esdfilter,  0, cinput  );\r
+   mgr->ConnectOutput (esdfilter,  0, c_aod_filter );\r
+\r
+   return esdfilter;\r
+\r
+}  \r
+\r
+AliESDtrackCuts *CreateCuts(Int_t iCut){\r
+  AliESDtrackCuts* esdTrackCuts = 0;  \r
+  if(iCut == 0){\r
+    esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts", "Loose");\r
+    esdTrackCuts->SetMinNClustersTPC(50);   \r
+    esdTrackCuts->SetMaxChi2PerClusterTPC(3.5);\r
+    esdTrackCuts->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);\r
+    esdTrackCuts->SetRequireTPCRefit(kTRUE);\r
+    esdTrackCuts->SetMinNsigmaToVertex(3);\r
+    esdTrackCuts->SetRequireSigmaToVertex(kTRUE);\r
+    esdTrackCuts->SetAcceptKingDaughters(kFALSE);\r
+  }\r
+  \r
+  return esdTrackCuts;\r
+\r
+}\r
diff --git a/PWG4/macros/AddTaskJetSpectrum.C b/PWG4/macros/AddTaskJetSpectrum.C
new file mode 100644 (file)
index 0000000..d104af2
--- /dev/null
@@ -0,0 +1,89 @@
+AliAnalysisTaskJetSpectrum *AddTaskJetSpectrum()\r
+{\r
+// Creates a jet fider task, configures it and adds it to the analysis manager.\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskJetSpectrum", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskJetSpectrum", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   \r
+   AliAnalysisTaskJetSpectrum* pwg4spec = new  AliAnalysisTaskJetSpectrum("Jet Spectrum");\r
+      \r
+   // or a config file\r
+   pwg4spec->SetAnalysisType(AliAnalysisTaskJetSpectrum::kAnaMC);\r
+   //      if(iAODanalysis)pwg4spec->SetAODInput(kTRUE);\r
+   // pwg4spec->SetDebugLevel(11); \r
+   //      pwg4spec->SetBranchRec("jetsMC"); \r
+   //      pwg4spec->SetBranchGen("jetsMC"); \r
+   mgr->AddTask(pwg4spec);\r
+\r
+\r
+\r
+      \r
+   // Create ONLY the output containers for the data produced by the task.\r
+   // Get and connect other common input/output containers via the manager as below\r
+   //==============================================================================\r
+   AliAnalysisDataContainer *coutput1_Spec = mgr->CreateContainer("pwg4spec", TList::Class(),AliAnalysisManager::kOutputContainer,"pwg4spec.root");\r
+\r
+   mgr->ConnectInput  (pwg4spec, 0, mgr->GetCommonInputContainer());\r
+   mgr->ConnectOutput (pwg4spec, 0, mgr->GetCommonOutputContainer());\r
+   mgr->ConnectOutput (pwg4spec,  1, coutput1_Spec );\r
+   \r
+   return pwg4spec;\r
+}\r
+\r
+AliAnalysisTaskJetSpectrum *AddTaskJetSpectrum(AliAnalysisManager* mgr = 0,AliAnalysisDataContainer *cinput = 0)\r
+{\r
+  // This is only for running on PROOF with the old root version 5-22-00 \r
+  // and the older version of the AF\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskJetSpectrum", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskJetSpectrum", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   AliAnalysisTaskJetSpectrum* pwg4spec = new  AliAnalysisTaskJetSpectrum("Jet Spectrum");\r
+   pwg4spec->SetAnalysisType(AliAnalysisTaskJetSpectrum::kAnaMC);\r
+   //      if(iAODanalysis)pwg4spec->SetAODInput(kTRUE);\r
+   //       pwg4spec->SetDebugLevel(11); \r
+   //      pwg4spec->SetBranchRec("jetsMC"); \r
+   //      pwg4spec->SetBranchGen("jetsMC"); \r
+   mgr->AddTask(pwg4spec);\r
+\r
+   AliAnalysisDataContainer *coutput1_Spec = mgr->CreateContainer("pwg4spec", TList::Class(),AliAnalysisManager::kOutputContainer,"pwg4spec.root");\r
+\r
+   // Dummy AOD output container for jet analysis (no client yet)\r
+   c_aodSpec = mgr->CreateContainer("cAODjetSpec", TTree::Class(),\r
+                                   AliAnalysisManager::kExchangeContainer);\r
+   mgr->ConnectInput  (pwg4spec,  0, cinput);    \r
+   mgr->ConnectOutput (pwg4spec,  0, c_aodSpec );\r
+   mgr->ConnectOutput (pwg4spec,  1, coutput1_Spec );\r
+\r
+   return pwg4spec;\r
+\r
+}  \r
index 8751b9cb9970394ef2f0bd2cd6caf49a1a6c1cf8..c61c38ecc1efd989c07c9fe34f1054c5173d593d 100644 (file)
@@ -1,6 +1,12 @@
+AliJetReader *CreateJetReader(Char_t *jr); // Common config\r
+AliJetFinder *CreateJetFinder(Char_t *jf);\r
+\r
+AliAnalysisTaskJets *AddTaskJets(Char_t *jr, Char_t *jf); // for the new AF\r
+AliAnalysisTaskJets *AddTaskJets(Char_t *jr, Char_t *jf,AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput); // for the old AF\r
+\r
 AliAnalysisTaskJets *AddTaskJets(Char_t *jr, Char_t *jf)\r
 {\r
-// Creates a jet fider task, configures it and adds it to the analysis manager.\r
+  // Creates a jet finder task, configures it and adds it to the analysis manager.\r
 \r
    // Get the pointer to the existing analysis manager via the static access method.\r
    //==============================================================================\r
@@ -20,99 +26,11 @@ AliAnalysisTaskJets *AddTaskJets(Char_t *jr, Char_t *jf)
    // Create the task and configure it.\r
    //===========================================================================\r
    AliAnalysisTaskJets *jetana;\r
-   AliJetReader *er = 0;\r
-\r
-   switch (jr) {\r
-     case "MC":\r
-       AliJetKineReaderHeader *jrh = new AliJetKineReaderHeader();\r
-       jrh->SetComment("MC full Kinematics");\r
-       jrh->SetFastSimTPC(kFALSE);\r
-       jrh->SetFastSimEMCAL(kFALSE);\r
-       jrh->SetPtCut(0.);\r
-       jrh->SetFiducialEta(-2.1,2.1); // to take all MC particles default is 0.9\r
-       // Define reader and set its header\r
-       er = new AliJetKineReader();\r
-       er->SetReaderHeader(jrh);\r
-       break;\r
-\r
-     case "ESD":\r
-       AliJetESDReaderHeader *jrh = new AliJetESDReaderHeader();\r
-       jrh->SetComment("Testing");\r
-       jrh->SetFirstEvent(0);\r
-       jrh->SetLastEvent(1000);\r
-       jrh->SetPtCut(0.);\r
-       jrh->SetReadSignalOnly(kFALSE);\r
-       // Define reader and set its header\r
-       er = new AliJetESDReader();\r
-       er->SetReaderHeader(jrh);\r
-       break;\r
-\r
-     case "AOD":\r
-       AliJetAODReaderHeader *jrh = new AliJetAODReaderHeader();\r
-       jrh->SetComment("AOD Reader");\r
-       jrh->SetPtCut(0.);\r
-       jrh->SetTestFilterMask(1<<0);\r
-       // Define reader and set its header\r
-       er = new AliJetAODReader();\r
-       er->SetReaderHeader(jrh);\r
-       break;\r
-\r
-        default:\r
-       ::Error("AddTaskJets", "Wrong jet reader selected\n");\r
-       return 0;\r
-   }\r
-\r
+   AliJetReader *er = CreateJetReader(jr);\r
     // Define jet header and jet finder\r
-   AliJetFinder *jetFinder = 0;\r
-   switch (jf) {\r
-     case "CDF":\r
-       AliCdfJetHeader *jh = new AliCdfJetHeader();\r
-       jh->SetRadius(0.7);\r
\r
-       jetFinder = new AliCdfJetFinder();\r
-       jetFinder->SetOutputFile("jets.root");\r
-      break;\r
-\r
-     case "DA":\r
-       AliDAJetHeader *jh=new AliDAJetHeader();\r
-       jh->SetComment("DA jet code with default parameters");\r
-       jh->SelectJets(kTRUE);\r
-       jh->SetNclust(10);\r
-\r
-       jetFinder = new AliDAJetFinder();\r
-       break;\r
-\r
-     case "Fastjet":\r
-       AliFastJetHeader *jh = new AliFastJetHeader();\r
-       jh->SetRparam(0.7); // setup parameters\r
-\r
-       jetFinder = new AliFastJetFinder();\r
-       jetFinder->SetOutputFile("jets.root");\r
-       break;\r
-\r
-     case "UA1":\r
-       AliUA1JetHeaderV1 *jh=new AliUA1JetHeaderV1();\r
-       jh->SetComment("UA1 jet code with default parameters");\r
-       jh->BackgMode(2);\r
-       jh->SetRadius(1.0);\r
-       jh->SetEtSeed(4.);\r
-       jh->SetLegoNbinPhi(432);\r
-       jh->SetLegoNbinEta(274);\r
-       jh->SetLegoEtaMin(-2);\r
-       jh->SetLegoEtaMax(+2);\r
-       jh->SetJetEtaMax(0.5);\r
-       jh->SetJetEtaMin(-0.5);\r
-       jh->SetMinJetEt(10.);\r
-\r
-       jetFinder = new AliUA1JetFinderV1();\r
-       break;\r
-\r
-     case default:\r
-       ::Error("AddTaskJets", "Wrong jet finder selected\n");\r
-       return 0;\r
-   }\r
+   AliJetFinder *jetFinder = CreateJetFinder(jf);\r
+\r
    if (jetFinder){\r
-       if (jh) jetFinder->SetJetHeader(jh);\r
        if (er) jetFinder->SetJetReader(er);\r
    }\r
 \r
@@ -135,3 +53,164 @@ AliAnalysisTaskJets *AddTaskJets(Char_t *jr, Char_t *jf)
    \r
    return jetana;\r
 }\r
+\r
+AliAnalysisTaskJets *AddTaskJets(Char_t *jr, Char_t *jf,AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput)\r
+{\r
+  // This is only for running on PROOF with the old root version 5-22-00 \r
+  // and the older version of the AF\r
+\r
+  // Creates a jet fider task, configures it and adds it to the analysis manager.\r
+  // Get the pointer to the existing analysis manager via the static access method.\r
+  //==============================================================================\r
+\r
+  if (!mgr) {\r
+    ::Error("AddTaskJets", "No analysis manager to connect to.");\r
+    return NULL;\r
+  }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskJets", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   AliAnalysisTaskJets *jetana;\r
+   AliJetReader *er = CreateJetReader(jr);\r
+\r
+    // Define jet header and jet finder\r
+   AliJetFinder *jetFinder = CreateJetFinder(jf);\r
+\r
+   if (jetFinder){\r
+       if (er) jetFinder->SetJetReader(er);\r
+   }\r
+\r
+   jetana = new AliAnalysisTaskJets(Form("JetAnalysis%s%s",jr,jf));\r
+   AliAnalysisDataContainer *cout_jet = mgr->CreateContainer(Form("jethist%s%s",jr,jf), TList::Class(),AliAnalysisManager::kOutputContainer, Form("jethist%s_%s.root",jr,jf));\r
+   // Connect jet finder to task.\r
+   jetana->SetJetFinder(jetFinder);\r
+   jetana->SetConfigFile("");\r
+   jetana->SetDebugLevel(10);\r
+   mgr->AddTask(jetana);\r
+\r
+   // Create the output containers for the data produced by the task.\r
+   //==============================================================================\r
+   // AOD output slot will be used in a different way in future\r
+   // we need to have different names for each usage\r
+   c_aodjet = mgr->CreateContainer(Form("cAODjet%s%s",jr,jf), TTree::Class(),\r
+                                  AliAnalysisManager::kExchangeContainer);\r
+   // Connect to data containers\r
+   mgr->ConnectInput (jetana,0, cinput );\r
+   mgr->ConnectOutput (jetana,0, c_aodjet );\r
+   mgr->ConnectOutput (jetana, 1, cout_jet);\r
+   \r
+   return jetana;\r
+}\r
+\r
+AliJetFinder *CreateJetFinder(Char_t *jf){\r
+\r
+  switch (jf) {\r
+  case "CDF":\r
+    AliCdfJetHeader *jh = new AliCdfJetHeader();\r
+    jh->SetRadius(0.7);\r
+    \r
+    jetFinder = new AliCdfJetFinder();\r
+    jetFinder->SetOutputFile("jets.root");\r
+    if (jh) jetFinder->SetJetHeader(jh);\r
+    break;\r
+\r
+  case "DA":\r
+    AliDAJetHeader *jh=new AliDAJetHeader();\r
+    jh->SetComment("DA jet code with default parameters");\r
+    jh->SelectJets(kTRUE);\r
+    jh->SetNclust(10);\r
+    \r
+    jetFinder = new AliDAJetFinder();\r
+    if (jh) jetFinder->SetJetHeader(jh);\r
+    break;\r
+\r
+\r
+  case "Fastjet":\r
+    AliFastJetHeader *jh = new AliFastJetHeader();\r
+    jh->SetRparam(0.7); // setup parameters                                  \r
+\r
+    jetFinder = new AliFastJetFinder();\r
+    jetFinder->SetOutputFile("jets.root");\r
+    if (jh) jetFinder->SetJetHeader(jh);\r
+    break;\r
+\r
+  case "UA1":\r
+    AliUA1JetHeaderV1 *jh=new AliUA1JetHeaderV1();\r
+    jh->SetComment("UA1 jet code with default parameters");\r
+    jh->BackgMode(2);\r
+    jh->SetRadius(1.0);\r
+    jh->SetEtSeed(4.);\r
+    jh->SetLegoNbinPhi(432);\r
+    jh->SetLegoNbinEta(274);\r
+    jh->SetLegoEtaMin(-2);\r
+    jh->SetLegoEtaMax(+2);\r
+    jh->SetJetEtaMax(0.5);\r
+    jh->SetJetEtaMin(-0.5);\r
+    jh->SetMinJetEt(10.);\r
+\r
+    jetFinder = new AliUA1JetFinderV1();\r
+    if (jh) jetFinder->SetJetHeader(jh);\r
+    break;\r
+\r
+  case default:\r
+    ::Error("AddTaskJets", "Wrong jet finder selected\n");\r
+    return 0;\r
+  }\r
+\r
+  return jetFinder;\r
+\r
+}\r
+\r
+AliJetReader *CreateJetReader(Char_t *jr){\r
+  AliJetReader *er = 0;\r
+\r
+  switch (jr) {\r
+  case "MC":\r
+    AliJetKineReaderHeader *jrh = new AliJetKineReaderHeader();\r
+    jrh->SetComment("MC full Kinematics");\r
+    jrh->SetFastSimTPC(kFALSE);\r
+    jrh->SetFastSimEMCAL(kFALSE);\r
+    jrh->SetPtCut(0.);\r
+    jrh->SetFiducialEta(-2.1,2.1); // to take all MC particles default is 0 .9                                                                             \r
+    // Define reader and set its header                                     \r
+    er = new AliJetKineReader();\r
+    er->SetReaderHeader(jrh);\r
+    break;\r
+\r
+  case "ESD":\r
+    AliJetESDReaderHeader *jrh = new AliJetESDReaderHeader();\r
+    jrh->SetComment("Testing");\r
+    jrh->SetFirstEvent(0);\r
+    jrh->SetLastEvent(1000);\r
+    jrh->SetPtCut(0.);\r
+    jrh->SetReadSignalOnly(kFALSE);\r
+    // Define reader and set its header                                     \r
+    er = new AliJetESDReader();\r
+    er->SetReaderHeader(jrh);\r
+    break;\r
+\r
+  case "AOD":\r
+    AliJetAODReaderHeader *jrh = new AliJetAODReaderHeader();\r
+    jrh->SetComment("AOD Reader");\r
+    jrh->SetPtCut(0.);\r
+    jrh->SetTestFilterMask(1<<0);\r
+    // Define reader and set its header\r
+    er = new AliJetAODReader();\r
+    er->SetReaderHeader(jrh);\r
+    break;\r
+\r
+  default:\r
+    ::Error("AddTaskJets", "Wrong jet reader selected\n");\r
+    return 0;\r
+  }\r
+\r
+  return er;\r
+\r
+}\r
diff --git a/PWG4/macros/AddTaskPWG4PidDetEx.C b/PWG4/macros/AddTaskPWG4PidDetEx.C
new file mode 100644 (file)
index 0000000..5e6ec13
--- /dev/null
@@ -0,0 +1,91 @@
+AliAnalysisTaskPWG4PidDetEx *AddTaskPWG4PidDetEx()\r
+{\r
+// Creates a jet fider task, configures it and adds it to the analysis manager.\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskJets", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskPWG4PidDetEx", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   \r
+   AliAnalysisTaskPWG4PidDetEx* taskPid = new AliAnalysisTaskPWG4PidDetEx("TaskPID");\r
+   if(mgr->GetInputEventHandler()->InheritsFrom("AliAODInputHandler"))taskPid->SetAnalysisType("AOD");\r
+   else {\r
+     // Either we assume taht w have the cuts already loaded or we just do it again\r
+     // this can be done more elegant when also accepting AOD filtered output\r
+     gROOT->LoadMacro("AddTaskESDfilter.C");\r
+     AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
+     trackFilter->AddCuts(CreateCuts(0));\r
+     taskPid->SetTrackFilter(trackFilter);\r
+   }\r
+   mgr->AddTask(taskPid);\r
+\r
+   // Create ONLY the output containers for the data produced by the task.\r
+   // Get and connect other common input/output containers via the manager as below\r
+   //==============================================================================\r
+   AliAnalysisDataContainer *coutput1_PID = mgr->CreateContainer("histosPID", TList::Class(),AliAnalysisManager::kOutputContainer,"pwg4pid.root");\r
+\r
+   mgr->ConnectInput  (taskPid, 0, mgr->GetCommonInputContainer());\r
+   mgr->ConnectOutput (taskPid, 0, mgr->GetCommonOutputContainer());\r
+   mgr->ConnectOutput (taskPid, 1, coutput1_PID);\r
+   return taskPid;\r
+}\r
+\r
+AliAnalysisTaskPWG4PidDetEx *AddTaskPWG4PidDetEx(AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput)\r
+{\r
+  // This is only for running on PROOF with the old root version 5-22-00 \r
+  // and the older version of the AF\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskJets", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskPWG4PidDetEx", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   AliAnalysisTaskPWG4PidDetEx* taskPid = new AliAnalysisTaskPWG4PidDetEx("TaskPID");\r
+   if(mgr->GetInputEventHandler()->InheritsFrom("AliAODInputHandler"))taskPid->SetAnalysisType("AOD");\r
+   else {\r
+     // Either we assume taht w have the cuts already loaded or we just do it again\r
+     // this can be done more elegant when also accepting AOD filtered output\r
+     gROOT->LoadMacro("AddTaskESDfilter.C");\r
+     AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
+     trackFilter->AddCuts(CreateCuts(0));\r
+     taskPid->SetTrackFilter(trackFilter);\r
+   }\r
+   mgr->AddTask(taskPid);\r
+\r
+\r
+   //\r
+   // Create containers for input/output\r
+   AliAnalysisDataContainer *c_aod_pid = mgr->CreateContainer("cAODpid", TTree::Class(),AliAnalysisManager::kExchangeContainer);\r
+   AliAnalysisDataContainer *coutput1_PID = mgr->CreateContainer("histosPID", TList::Class(),AliAnalysisManager::kOutputContainer,"pwg4pid.root");\r
+   mgr->ConnectInput  (taskPid,  0, cinput  );\r
+   mgr->ConnectOutput (taskPid,  0, c_aod_pid);\r
+   mgr->ConnectOutput (taskPid,  1, coutput1_PID);\r
+\r
+   return taskPid;\r
+\r
+}  \r
diff --git a/PWG4/macros/AddTaskUE.C b/PWG4/macros/AddTaskUE.C
new file mode 100644 (file)
index 0000000..c623f40
--- /dev/null
@@ -0,0 +1,97 @@
+\r
+void ConfigTaskUE(AliAnalysisTaskUE * ueana); // common config, extend with different cases\r
+                  \r
+AliAnalysisTaskUE *AddTaskUE()\r
+{\r
+// Creates a jet fider task, configures it and adds it to the analysis manager.\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskUE", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskUE", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
+   \r
+   AliAnalysisTaskUE* ueana = new  AliAnalysisTaskUE("Underlying Event");\r
+   ConfigTaskUE(ueana);\r
+   mgr->AddTask(ueana);\r
+   \r
+   // Create ONLY the output containers for the data produced by the task.\r
+   // Get and connect other common input/output containers via the manager as below\r
+   //==============================================================================\r
+   AliAnalysisDataContainer *coutput1_UE = mgr->CreateContainer("histosUE", TList::Class(),AliAnalysisManager::kOutputContainer,"pwg4UE.root");\r
+   \r
+   mgr->ConnectInput  (ueana, 0, mgr->GetCommonInputContainer());\r
+   mgr->ConnectOutput (ueana,     0, coutput1_UE );\r
+   \r
+   return ueana;\r
+}\r
+\r
+AliAnalysisTaskUE *AddTaskUE(AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput)\r
+{\r
+  // This is only for running on PROOF with the old root version 5-22-00 \r
+  // and the older version of the AF\r
+\r
+   // Get the pointer to the existing analysis manager via the static access method.\r
+   //==============================================================================\r
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+   if (!mgr) {\r
+      ::Error("AddTaskJets", "No analysis manager to connect to.");\r
+      return NULL;\r
+   }  \r
+   \r
+   // Check the analysis type using the event handlers connected to the analysis manager.\r
+   //==============================================================================\r
+   if (!mgr->GetInputEventHandler()) {\r
+      ::Error("AddTaskUE", "This task requires an input event handler");\r
+      return NULL;\r
+   }\r
+\r
+   // Create the task and configure it.\r
+   //===========================================================================\r
\r
+   AliAnalysisTaskUE* ueana = new  AliAnalysisTaskUE("Underlying Event");\r
+   ConfigTaskUE(ueana);\r
+   \r
+   AliAnalysisDataContainer *coutput1_UE = mgr->CreateContainer("histosUE", TList::Class(),AliAnalysisManager::kOutputContainer,"pwg4UE.root");\r
+   \r
+\r
+   mgr->ConnectInput  (ueana,  0, cinput);    \r
+   mgr->ConnectOutput (ueana,     0, coutput1_UE );\r
+   \r
+   return ueana;\r
+\r
+}  \r
+\r
+void ConfigTaskUE(AliAnalysisTaskUE * ueana){\r
+  // common config, extend with different cases\r
+  Int_t anaType =1; \r
+  Int_t regType =1;\r
+  Double_t jetEtaCut=0.2;\r
+  Double_t trackPtCut=0.5; \r
+  Double_t trackEtaCut= 0.9; \r
+  Double_t rad=0.7; \r
+  Double_t deltaPhiCut = 2.616;\r
+  \r
+  ueana->SetDebugLevel(10); \r
+  ueana->SetPtRangeInHist(25, 0., 250.);\r
+  ueana->SetAnaTopology(anaType);      \r
+  ueana->SetRegionType(regType);        \r
+  ueana->SetJet1EtaCut(jetEtaCut);     \r
+  ueana->SetTrackPtCut(trackPtCut); \r
+  ueana->SetPtSumOrdering(2);\r
+  ueana->SetConeRadius(rad);   \r
+  ueana->SetTrackEtaCut(trackEtaCut);\r
+  ueana->SetJet2DeltaPhiCut(deltaPhiCut);\r
+}\r
index 89e2cb5c1eef1dc0a6b0d2d1746ebb2c662d2255..ceb98040a135927ac321306d8d5a9f8e8f0c3eca 100644 (file)
 //______________________________________________________________________________\r
 void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG4/kleinb/LHC08r_jetjet50")\r
 {\r
-// Example of running analysis train in CAF. To run in debug mode:\r
-//  - export ROOTSYS=debug  on your local client\r
-//  - un-comment gProof->ClearPackages()\r
-//  - un-comment lines with debugging info\r
+  // Example of running analysis train in CAF. To run in debug mode:\r
+  //  - export ROOTSYS=debug  on your local client\r
+  //  - un-comment gProof->ClearPackages()\r
+  //  - un-comment lines with debugging info\r
 \r
-// WHY AOD is not a exchange container when running from ESD->AOD\r
 \r
-    Bool_t debug         = kTRUE;\r
-    Bool_t useMC         = kTRUE;\r
-    Bool_t readTR        = kFALSE;\r
-    Bool_t bPROOF        = kTRUE;\r
+  Bool_t debug         = kTRUE;\r
+  Bool_t useMC         = kTRUE;\r
+  Bool_t readTR        = kFALSE;\r
+  Bool_t bPROOF        = kFALSE;\r
+  Bool_t bOLD          = kFALSE;  // a flag to be compatible with the older AF, to be removed ASA grid and proof are updated\r
 \r
 \r
     \r
-    Int_t iAODanalysis   = 0;\r
-    Int_t iAODhandler    = 1;\r
-    Int_t iESDfilter     = 1;  // Only active if iAODanalysis=0\r
-    Int_t iJETAN         = 1;\r
-    Int_t iJETANESD      = 0;\r
-    Int_t iJETANMC       = 0;\r
-    Int_t iDIJETAN       = 0;\r
-    Int_t iPWG4SPECTRUM  = 1;\r
-    Int_t iPWG4UE        = 0;\r
-\r
-    if (iAODanalysis) {\r
-       useMC = kFALSE;\r
-       readTR = kFALSE;\r
-       iESDfilter = 0;\r
-       iMUONfilter = 0;\r
-    }    \r
-    if (iJETAN) iESDfilter=1;\r
-    if (iESDfilter) iAODhandler=1;\r
-\r
-    // Dataset from CAF\r
-    TString dataset(ds);\r
-    // CKB quick hack for local analysis\r
-    //    gROOT->LoadMacro("CreateESDChain.C");\r
-    // TChain *chain = CreateESDChain("jetjet15-50.txt",1000);\r
-    TChain *chain = 0;\r
-\r
-    printf("==================================================================\n");\r
-    printf("===========    RUNNING ANALYSIS TRAIN IN CAF MODE    =============\n");\r
-    printf("==================================================================\n");\r
-    if (iAODanalysis) printf("=  AOD analysis on dataset: %s\n", dataset.Data());\r
-    else              printf("=  ESD analysis on dataset: %s\n", dataset.Data());\r
-    if (iESDfilter)   printf("=  ESD filter                                                    =\n");\r
-    if (iJETAN)       printf("=  Jet analysis from AOD                                         =\n");\r
-    if (iJETANESD)    printf("=  Jet analysis from ESD                                         =\n");\r
-    if (iJETANMC)     printf("=  Jet analysis from Kinematics                                  =\n");\r
-    if (iDIJETAN)     printf("=  DiJet analysis                                                =\n");\r
-    if (iPWG4SPECTRUM)printf("=  PWG4 Jet spectrum analysis                                    =\n");\r
-    if (iPWG4UE)      printf("=  PWG4 UE                                                       =\n");\r
-    printf("==================================================================\n");\r
-    if (useMC) printf(":: use MC    TRUE\n");\r
-    else       printf(":: use MC    FALSE\n");\r
-    if (readTR) printf(":: read TR   TRUE\n");\r
-    else        printf(":: read TR   FALSE\n");\r
-    if (debug) printf(":: debugging TRUE\n");\r
-    else       printf(":: debugging FALSE\n");\r
+  Int_t iAODanalysis   = 0;\r
+  Int_t iAODhandler    = 1;\r
+  Int_t iESDfilter     = 1;  // Only active if iAODanalysis=0\r
+  Int_t iJETAN         = 1;\r
+  Int_t iJETANESD      = 1;\r
+  Int_t iJETANMC       = 1;\r
+  Int_t iDIJETAN       = 1;\r
+  Int_t iPWG4SPECTRUM  = 1;\r
+  Int_t iPWG4UE        = 1;\r
+  Int_t iPWG4PID        = 1;\r
+\r
+  if (iAODanalysis) {\r
+    useMC = kFALSE;\r
+    readTR = kFALSE;\r
+    iESDfilter = 0;\r
+    iMUONfilter = 0;\r
+  }    \r
+  if (iJETAN) iESDfilter=1;\r
+  if (iESDfilter) iAODhandler=1;\r
+  \r
+  // Dataset from CAF\r
+  TString dataset(ds);\r
+  TChain *chain = 0;\r
+  // CKB quick hack for local analysis\r
+  gROOT->LoadMacro("CreateESDChain.C");\r
+  TChain *chain = CreateESDChain("tmp.txt",1000);\r
+\r
\r
+  printf("==================================================================\n");\r
+  printf("===========    RUNNING ANALYSIS TRAIN IN CAF MODE    =============\n");\r
+  printf("==================================================================\n");\r
+  if (iAODanalysis) printf("=  AOD analysis on dataset: %s\n", dataset.Data());\r
+  else              printf("=  ESD analysis on dataset: %s\n", dataset.Data());\r
+  if (iESDfilter)   printf("=  ESD filter                                                    =\n");\r
+  if (iJETAN)       printf("=  Jet analysis from AOD                                         =\n");\r
+  if (iJETANESD)    printf("=  Jet analysis from ESD                                         =\n");\r
+  if (iJETANMC)     printf("=  Jet analysis from Kinematics                                  =\n");\r
+  if (iDIJETAN)     printf("=  DiJet analysis                                                =\n");\r
+  if (iPWG4SPECTRUM)printf("=  PWG4 Jet spectrum analysis                                    =\n");\r
+  if (iPWG4UE)      printf("=  PWG4 UE                                                       =\n");\r
+  printf("==================================================================\n");\r
+  if (useMC) printf(":: use MC    TRUE\n");\r
+  else       printf(":: use MC    FALSE\n");\r
+  if (readTR) printf(":: read TR   TRUE\n");\r
+  else        printf(":: read TR   FALSE\n");\r
+  if (debug) printf(":: debugging TRUE\n");\r
+  else       printf(":: debugging FALSE\n");\r
     \r
-    // Load common libraries\r
-    gSystem->Load("libTree.so");\r
-    gSystem->Load("libGeom.so");\r
-    gSystem->Load("libVMC.so");\r
-    gSystem->Load("libPhysics.so");\r
-\r
-\r
-    // Reset user processes if CAF if not responding anymore\r
-    // TProof::Reset("alicecaf"); \r
-    // One may enable a different ROOT version on CAF\r
-\r
-    const char* proofNode = "alicecaf";\r
-\r
-\r
-\r
-\r
-    // Connect to proof\r
-    if(bPROOF){\r
-      TProof::Mgr(proofNode)->ShowROOTVersions();\r
-      //      TProof::Mgr(proofNode)->SetROOTVersion("v5-21-01-alice_dbg");\r
-      TProof::Open(proofNode); \r
-\r
-      // Clear packages if changing ROOT version on CAF or local\r
-      //      gProof->ClearPackages();\r
-      // Enable proof debugging if needed\r
-      //    gProof->SetLogLevel(5);\r
-      // To debug the train in PROOF mode, type in a root session:\r
-      // root[0] TProof::Mgr("lxb6064")->GetSessionLogs()->Display("*",0,10000);\r
-      // Common packages\r
-      // --- Enable the STEERBase Package\r
-      gProof->UploadPackage("${ALICE_ROOT}/STEERBase.par");\r
-      gProof->EnablePackage("STEERBase");\r
-      // --- Enable the ESD Package\r
-      gProof->UploadPackage("${ALICE_ROOT}/ESD.par");\r
-      gProof->EnablePackage("ESD");\r
-      // --- Enable the AOD Package\r
-      gProof->UploadPackage("${ALICE_ROOT}/AOD.par");\r
-      gProof->EnablePackage("AOD");\r
-      // --- Enable the ANALYSIS Package\r
-      gProof->UploadPackage("${ALICE_ROOT}/ANALYSIS.par");\r
-      gProof->EnablePackage("ANALYSIS");\r
-      // --- Enable the ANALYSISalice Package\r
-      gProof->UploadPackage("${ALICE_ROOT}/ANALYSISalice.par");\r
-      gProof->EnablePackage("ANALYSISalice");\r
-\r
+  // Load common libraries\r
+  gSystem->Load("libTree.so");\r
+  gSystem->Load("libGeom.so");\r
+  gSystem->Load("libVMC.so");\r
+  gSystem->Load("libPhysics.so");\r
+  \r
+\r
+  // Reset user processes if CAF if not responding anymore\r
+  // TProof::Reset("alicecaf"); \r
+  // One may enable a different ROOT version on CAF\r
+  \r
+  const char* proofNode = "localhost";\r
+  \r
+  // Connect to proof\r
+  if(bPROOF){\r
+    TProof::Mgr(proofNode)->ShowROOTVersions();\r
+    // TProof::Mgr(proofNode)->SetROOTVersion("v5-21-01-alice_dbg");\r
+    TProof::Open(proofNode); \r
+    \r
+    // Clear packages if changing ROOT version on CAF or local\r
+    // gProof->ClearPackages();\r
+    // Enable proof debugging if needed\r
+    //    gProof->SetLogLevel(5);\r
+    // To debug the train in PROOF mode, type in a root session:\r
+    // root[0] TProof::Mgr("lxb6064")->GetSessionLogs()->Display("*",0,10000);\r
+    // Common packages\r
+    // --- Enable the STEERBase Package\r
+    gProof->UploadPackage("${ALICE_ROOT}/STEERBase.par");\r
+    gProof->EnablePackage("STEERBase");\r
+    // --- Enable the ESD Package\r
+    gProof->UploadPackage("${ALICE_ROOT}/ESD.par");\r
+    gProof->EnablePackage("ESD");\r
+    // --- Enable the AOD Package\r
+    gProof->UploadPackage("${ALICE_ROOT}/AOD.par");\r
+    gProof->EnablePackage("AOD");\r
+    // --- Enable the ANALYSIS Package\r
+    gProof->UploadPackage("${ALICE_ROOT}/ANALYSIS.par");\r
+    gProof->EnablePackage("ANALYSIS");\r
+    // --- Enable the ANALYSISalice Package\r
+    gProof->UploadPackage("${ALICE_ROOT}/ANALYSISalice.par");\r
+    gProof->EnablePackage("ANALYSISalice");\r
+    \r
+      \r
+    // --- Enable the JETAN Package\r
+    if (iJETAN||iJETANESD||iJETANMC) {\r
+      gProof->UploadPackage("${ALICE_ROOT}/JETAN.par");\r
+      gProof->EnablePackage("JETAN");\r
+    }   \r
+    // --- Enable particle correlation analysis\r
+    if (iPWG4UE||iPWG4SPECTRUM) {\r
+      gProof->UploadPackage("${ALICE_ROOT}/PWG4JetTasks.par");\r
+      gProof->EnablePackage("PWG4JetTasks");\r
+    }   \r
+    \r
+  }\r
+  else{\r
 \r
-      // --- Enable the JETAN Package\r
-      if (iJETAN||iJETANESD||iJETANMC) {\r
-       gProof->UploadPackage("${ALICE_ROOT}/JETAN.par");\r
-       gProof->EnablePackage("JETAN");\r
-      }   \r
-      // --- Enable particle correlation analysis\r
-      if (iPWG4UE||iPWG4SPECTRUM) {\r
-       gProof->UploadPackage("${ALICE_ROOT}/PWG4JetTasks.par");\r
-       gProof->EnablePackage("PWG4JetTasks");\r
-      }   \r
+    //  \r
+    // We are local or on grid\r
+    // access remote files in lcoal case as well so open alien conection\r
 \r
-    }\r
-    else{\r
-      gSystem->Load("libSTEERBase");\r
-      gSystem->Load("libESD");\r
-      gSystem->Load("libAOD");\r
-      gSystem->Load("libANALYSIS");\r
-      gSystem->Load("libANALYSISalice");\r
+    /*\r
+    printf("*** Connect to AliEn ***\n");\r
+    TGrid::Connect("alien://");\r
 \r
+    chain = CreateChainFromCollection("wn.xml","esdTree",2); \r
+    */\r
 \r
-      // --- Enable the JETAN Package\r
-      if (iJETAN||iJETANESD||iJETANMC) gSystem->Load("libJETAN");\r
-      // --- Enable particle correlation analysis\r
-      if (iPWG4UE||iPWG4SPECTRUM)gSystem->Load("libPWG4JetTasks");  \r
-    }\r
+    gSystem->Load("libSTEERBase");\r
+    gSystem->Load("libESD");\r
+    gSystem->Load("libAOD");\r
+    gSystem->Load("libANALYSIS");\r
+    gSystem->Load("libANALYSISalice");\r
+    \r
+    \r
+    // --- Enable the JETAN Package\r
+    if (iJETAN||iJETANESD||iJETANMC) gSystem->Load("libJETAN");\r
+    // --- Enable particle correlation analysis\r
+    if (iPWG4UE||iPWG4SPECTRUM)gSystem->Load("libPWG4JetTasks"); \r
+  }\r
 \r
 \r
     // Make the analysis manager\r
@@ -153,8 +164,14 @@ void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG
        mcHandler->SetReadTR(readTR); \r
     }   \r
     // Top container for input \r
-    AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();\r
+    AliAnalysisDataContainer *cinput = 0;\r
     \r
+    if(bOLD){\r
+      cinput = mgr->CreateContainer("cInput",TChain::Class(),AliAnalysisManager::kInputContainer);\r
+    } \r
+    else { \r
+     cinput = mgr->GetCommonInputContainer();\r
+    }\r
     // This container is managed by the AOD handler\r
     AliAnalysisDataContainer *cout_aod = 0;\r
     if (iAODhandler) {\r
@@ -163,137 +180,78 @@ void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG
        aodHandler->SetFillAOD(kFALSE);\r
        mgr->SetOutputEventHandler(aodHandler);       \r
        aodHandler->SetOutputFileName(Form("AliAODs_pwg4_%07d-%07d.root",nOffset,nOffset+nEvents));\r
-       cout_aod = mgr->GetCommonOutputContainer();\r
+       if(bOLD){\r
+        cout_aod = mgr->CreateContainer("cAOD", TTree::Class(),AliAnalysisManager::kOutputContainer, "default");\r
+       }\r
+       else{\r
+        cout_aod = mgr->GetCommonOutputContainer();\r
+       }\r
        cout_aod->SetSpecialOutput();\r
     }   \r
 \r
     // Debugging if needed\r
     if (debug) mgr->SetDebugLevel(0);\r
-//    AliLog::EnableDebug(kTRUE);\r
+    //    AliLog::EnableDebug(kTRUE);\r
     AliLog::SetGlobalLogLevel(0);\r
 \r
 \r
     if (iESDfilter && !iAODanalysis) {\r
-       // Set of cuts plugged into the ESD filter\r
-       // \r
-       // standard\r
-       AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose");\r
-       esdTrackCutsL->SetMinNClustersTPC(50);   \r
-       esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);\r
-       esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);\r
-       esdTrackCutsL->SetRequireTPCRefit(kTRUE);\r
-       esdTrackCutsL->SetMinNsigmaToVertex(3);\r
-       esdTrackCutsL->SetRequireSigmaToVertex(kTRUE);\r
-       esdTrackCutsL->SetAcceptKingDaughters(kFALSE);\r
-       //\r
-       AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
-       trackFilter->AddCuts(esdTrackCutsL);\r
-       //\r
-       // ESD filter task putting standard info to output AOD (with cuts)\r
-       AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");\r
-       esdfilter->SetTrackFilter(trackFilter);\r
-       esdfilter->SetDebugLevel(10);\r
-       mgr->AddTask(esdfilter);\r
-       // Connect to data containers\r
-       mgr->ConnectInput  (esdfilter,  0, cinput  );\r
-       mgr->ConnectOutput (esdfilter,  0, cout_aod );\r
+      gROOT->LoadMacro("AddTaskESDfilter.C");\r
+      AliAnalysisTaskESDfilter *esdfilter = 0;\r
+      if(bOLD)esdfilter = AddTaskESDfilter(mgr,cinput);\r
+      else esdfilter = AddTaskESDfilter();\r
     }   \r
     // Jet analysis from the AOD\r
-    AliAnalysisDataContainer *c_aodjet = 0;\r
     if (iJETAN) {\r
-       gROOT->LoadMacro("AddTaskJets.C");\r
-       AliAnalysisTaskJets *jetanaAOD = AddTaskJets("AOD","UA1");\r
+      gROOT->LoadMacro("AddTaskJets.C");\r
+      AliAnalysisTaskJets *jetanaAOD = 0;\r
+      if(bOLD)jetanaAOD = AddTaskJets("AOD","UA1",mgr,cinput);\r
+      else AliAnalysisTaskJets *jetanaAOD = AddTaskJets("AOD","UA1");\r
     }   \r
     // JETANALYSIS from the ESD\r
     if (iJETANESD && !iAODanalysis) {\r
-       gROOT->LoadMacro("AddTaskJets.C");\r
-       AliAnalysisTaskJets *jetanaESD = AddTaskJets("ESD","UA1");\r
-       jetanaESD->SetDebugLevel(10);\r
-       jetanaESD->SetNonStdBranch("jetsESD");    \r
+      gROOT->LoadMacro("AddTaskJets.C");\r
+      AliAnalysisTaskJets *jetanaESD = 0;\r
+      if(bOLD)jetanaESD = AddTaskJets("ESD","UA1",mgr,cinput);\r
+      else jetanaESD = AddTaskJets("ESD","UA1");\r
+      jetanaESD->SetDebugLevel(10);\r
+      jetanaESD->SetNonStdBranch("jetsESD");    \r
     }   \r
     // Jet analysisMC\r
-    AliAnalysisDataContainer *c_aodjetMC = 0;\r
     if (iJETANMC && useMC) {\r
-       gROOT->LoadMacro("AddTaskJets.C");\r
-       AliAnalysisTaskJets *jetanaMC = AddTaskJets("MC","UA1");\r
-       jetanaMC->SetDebugLevel(10);\r
-       jetanaMC->SetNonStdBranch("jetsMC");\r
+      gROOT->LoadMacro("AddTaskJets.C");\r
+      AliAnalysisTaskJets *jetanaMC = 0;\r
+      if(bOLD)jetanaMC = AddTaskJets("MC","UA1",mgr,cinput);\r
+      else jetanaMC = AddTaskJets("MC","UA1");\r
+      jetanaMC->SetDebugLevel(10);\r
+      jetanaMC->SetNonStdBranch("jetsMC");\r
     }   \r
     // Dijet analysis\r
     if(iDIJETAN){\r
-      AliAnalysisTaskDiJets *dijetana = new AliAnalysisTaskDiJets("DiJetAnalysis");\r
-      dijetana->SetDebugLevel(2);\r
-      \r
-      mgr->AddTask(dijetana);\r
-\r
-      //\r
-      // Create containers for input/output\r
-      AliAnalysisDataContainer *c_aod_dijet = mgr->CreateContainer("cAODdijet", TTree::Class(),\r
-                                                                  AliAnalysisManager::kExchangeContainer);\r
-      mgr->ConnectInput  (dijetana,  0, cinput  );\r
-      mgr->ConnectOutput (dijetana,  0, c_aod_dijet);\r
+      gROOT->LoadMacro("AddTaskDiJets.C");\r
+      AliAnalysisTaskDiJets *dijetana = 0;\r
+      if(bOLD) dijetana = AddTaskDiJets(mgr,cinput);\r
+      else dijetana = AddTaskDiJets();\r
     }\r
-\r
-\r
     if (iPWG4SPECTRUM) {\r
-      AliAnalysisTaskJetSpectrum* pwg4spec = new  AliAnalysisTaskJetSpectrum("Jet Spectrum");\r
-      \r
-      // default parameters use a switch via iPWGSPECTRUM\r
-      // or a config file\r
-      pwg4spec->SetAnalysisType(AliAnalysisTaskJetSpectrum::kAnaMC);\r
-      //      if(iAODanalysis)pwg4spec->SetAODInput(kTRUE);\r
-      pwg4spec->SetDebugLevel(11); \r
-      //      pwg4spec->SetBranchRec("jetsMC"); \r
-      //      pwg4spec->SetBranchGen("jetsMC"); \r
-      mgr->AddTask(pwg4spec);\r
-\r
-      AliAnalysisDataContainer *coutput1_Spec = mgr->CreateContainer("pwg4spec", TList::Class(),AliAnalysisManager::kOutputContainer,Form( "pwg4spec_%07d-%07d.root",nOffset,nOffset+nEvents));\r
-      // coutput1_Spec->SetSpecialOutput();\r
-      // Dummy AOD output container for jet analysis (no client yet)\r
-      c_aodSpec = mgr->CreateContainer("cAODjetSpec", TTree::Class(),\r
-                                       AliAnalysisManager::kExchangeContainer);\r
-      mgr->ConnectInput  (pwg4spec,  0, cinput);    \r
-      // mgr->ConnectInput  (pwg4spec,  0, c_aodjet);    \r
-      mgr->ConnectOutput (pwg4spec,  0, c_aodSpec );\r
-      mgr->ConnectOutput (pwg4spec,  1, coutput1_Spec );\r
+      gROOT->LoadMacro("AddTaskJetSpectrum.C");\r
+      AliAnalysisTaskJetSpectrum* pwg4spec = 0;\r
+      if(bOLD)pwg4spec = AddTaskJetSpectrum(mgr,cinput);\r
+      else pwg4spec = AddTaskJetSpectrum();\r
     }   \r
-\r
-    \r
-    // Particle correlation analysis\r
     if (iPWG4UE) {\r
-      AliAnalysisTaskUE* ueana = new  AliAnalysisTaskUE("Underlying Event");\r
-      \r
-\r
-      // default parameters use a switch via iPWGUE\r
-      // or a config file\r
-      Int_t anaType =1; \r
-      Int_t regType =1;\r
-      Double_t jetEtaCut=0.2;\r
-      Double_t trackPtCut=0.5; \r
-      Double_t trackEtaCut= 0.9; \r
-      Double_t rad=0.7; \r
-      Double_t deltaPhiCut = 2.616;\r
-\r
-      ueana->SetDebugLevel(10); \r
-      ueana->SetPtRangeInHist(25, 0., 250.);\r
-      ueana->SetAnaTopology(anaType);      \r
-      ueana->SetRegionType(regType);        \r
-      ueana->SetJet1EtaCut(jetEtaCut);     \r
-      ueana->SetTrackPtCut(trackPtCut); \r
-      ueana->SetPtSumOrdering(2);\r
-      ueana->SetConeRadius(rad);   \r
-      ueana->SetTrackEtaCut(trackEtaCut);\r
-      ueana->SetJet2DeltaPhiCut(deltaPhiCut);\r
-      mgr->AddTask(ueana);\r
-\r
-\r
-      AliAnalysisDataContainer *coutput1_UE = mgr->CreateContainer("histosUE", TList::Class(),AliAnalysisManager::kOutputContainer, Form("pwg4UE_%07d-%07d.root",nOffset,nOffset+nEvents));\r
-\r
-      mgr->ConnectInput  (ueana,  0, cinput);    \r
-      //      mgr->ConnectInput  (ueana,  0, c_aodjet);    \r
-      mgr->ConnectOutput (ueana,     0, coutput1_UE );\r
+      gROOT->LoadMacro("AddTaskUE.C");\r
+      AliAnalysisTaskUE* ueana = 0;\r
+      if(bOLD)ueana = AddTaskUE(mgr,cinput);\r
+      else ueana = AddTaskUE();\r
     }   \r
-\r
+    if(iPWG4PID){\r
+      gROOT->LoadMacro("AddTaskPWG4PidDetEx.C");\r
+      AliAnalysisTaskPWG4PidDetEx *taskPid = 0;\r
+      if(bOLD)taskPid = AddTaskPWG4PidDetEx(mgr,cinput);\r
+      else taskPid = AddTaskPWG4PidDetEx();\r
+      taskPid->SetDebugLevel(10);\r
+  }\r
     // Run the analysis\r
     //    \r
     if (mgr->InitAnalysis()) {\r
@@ -302,3 +260,25 @@ void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG
        else mgr->StartAnalysis("local",chain);\r
     }   \r
 }\r
+TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName="esdTree",Int_t nFiles = 0)\r
+{\r
+// Create a chain from an alien collection.                                                                          \r
+   TAlienCollection * myCollection  = TAlienCollection::Open(xmlfile);\r
+\r
+   if (!myCollection) {\r
+      ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;\r
+     return NULL ;\r
+   }\r
+\r
+  TChain* chain = new TChain(treeName);\r
+  myCollection->Reset() ;\r
+  Int_t iCount = 0;\r
+  while ( myCollection->Next() ){\r
+    if(nFiles!=0)iCount++;\r
+    if(iCount > nFiles)break;\r
+    chain->Add(myCollection->GetTURL("")) ;\r
+    Printf("Adding %s",myCollection->GetTURL(""));\r
+  }\r
+  chain->ls();\r
+  return chain;\r
+}\r