ROOT logo
AliAnalysisTaskProtons *AddTaskProtons(Bool_t kAnalyzeMC = kFALSE,
				       const char *analysisType="Hybrid",
				       const char *pidMode="Bayesian")
{
  // Creates a proton analysis task and adds it to the analysis manager.
  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskProtons", "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("AddTaskProtons", "This task requires an input event handler");
    return NULL;
  }   
  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  gROOT->LoadMacro("$ALICE_ROOT/PWG2/SPECTRA/macros/configProtonAnalysis.C");
  AliProtonAnalysis *pa = 0;
  if (type=="ESD") pa = GetProtonAnalysisObject("ESD", kAnalyzeMC, 
						analysisType, pidMode);
  else if (type=="AOD") pa = GetProtonAnalysisObject("AOD", kAnalyzeMC, 
						     analysisType, pidMode);
  else pa = GetProtonAnalysisObject("MC", analysisType, kAnalyzeMC, pidMode);

  // Create the task, add it to manager and configure it.
  //===========================================================================
  AliAnalysisTaskProtons *taskproton = new AliAnalysisTaskProtons("TaskProtons");
  mgr->AddTask(taskproton);
  taskproton->SetAnalysisObject(pa);

  // 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 += ":PWG2BaryonRatioAnalysis";
  AliAnalysisDataContainer *cout_proton = mgr->CreateContainer("outputList", TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
  AliAnalysisDataContainer *cout_proton_QA = mgr->CreateContainer("outputQAList", TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());

  mgr->ConnectInput(taskproton, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(taskproton, 0, cout_proton);
  mgr->ConnectOutput(taskproton, 1, cout_proton_QA);
  
  // Return task pointer at the end
  return taskproton;
}
 AddTaskProtons.C:1
 AddTaskProtons.C:2
 AddTaskProtons.C:3
 AddTaskProtons.C:4
 AddTaskProtons.C:5
 AddTaskProtons.C:6
 AddTaskProtons.C:7
 AddTaskProtons.C:8
 AddTaskProtons.C:9
 AddTaskProtons.C:10
 AddTaskProtons.C:11
 AddTaskProtons.C:12
 AddTaskProtons.C:13
 AddTaskProtons.C:14
 AddTaskProtons.C:15
 AddTaskProtons.C:16
 AddTaskProtons.C:17
 AddTaskProtons.C:18
 AddTaskProtons.C:19
 AddTaskProtons.C:20
 AddTaskProtons.C:21
 AddTaskProtons.C:22
 AddTaskProtons.C:23
 AddTaskProtons.C:24
 AddTaskProtons.C:25
 AddTaskProtons.C:26
 AddTaskProtons.C:27
 AddTaskProtons.C:28
 AddTaskProtons.C:29
 AddTaskProtons.C:30
 AddTaskProtons.C:31
 AddTaskProtons.C:32
 AddTaskProtons.C:33
 AddTaskProtons.C:34
 AddTaskProtons.C:35
 AddTaskProtons.C:36
 AddTaskProtons.C:37
 AddTaskProtons.C:38
 AddTaskProtons.C:39
 AddTaskProtons.C:40
 AddTaskProtons.C:41
 AddTaskProtons.C:42
 AddTaskProtons.C:43
 AddTaskProtons.C:44
 AddTaskProtons.C:45
 AddTaskProtons.C:46
 AddTaskProtons.C:47
 AddTaskProtons.C:48
 AddTaskProtons.C:49
 AddTaskProtons.C:50
 AddTaskProtons.C:51