ROOT logo
AliAnalysisTaskBF *AddTaskBalanceFunction() {
  // 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("AddTaskBalanceFunction", "This task requires an input event handler");
    return NULL;
  }
  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/configBalanceFunctionAnalysis.C");
  AliBalance *bf = 0;
  if (type=="ESD") bf = GetBalanceFunctionObject("ESD");
  else if (type=="AOD") bf = GetBalanceFunctionObject("AOD");
  else bf = GetBalanceFunctionObject("MC");

  // Create the task, add it to manager and configure it.
  //===========================================================================
  AliAnalysisTaskBF *taskBF = new AliAnalysisTaskBF("TaskBF");
  mgr->AddTask(taskBF);
  taskBF->SetAnalysisObject(bf);
  taskBF->SetVertexDiamond(0.3,0.3,10.);

  if (type=="ESD") {
    AliESDtrackCuts *trackCuts = GetTrackCutsObject();
    taskBF->SetAnalysisCutObject(trackCuts);
  }

  // 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 += ":PWGCFEbyE.outputBalanceFunctionAnalysis.root";
  AliAnalysisDataContainer *coutBF = mgr->CreateContainer("bfOutput", AliBalance::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
  AliAnalysisDataContainer *coutQA = mgr->CreateContainer("listQA", TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
  mgr->ConnectInput(taskBF, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(taskBF, 1, coutBF);
  mgr->ConnectOutput(taskBF, 2, coutQA);

  // Return task pointer at the end
  return taskBF;
}
 AddTaskBalanceFunction.C:1
 AddTaskBalanceFunction.C:2
 AddTaskBalanceFunction.C:3
 AddTaskBalanceFunction.C:4
 AddTaskBalanceFunction.C:5
 AddTaskBalanceFunction.C:6
 AddTaskBalanceFunction.C:7
 AddTaskBalanceFunction.C:8
 AddTaskBalanceFunction.C:9
 AddTaskBalanceFunction.C:10
 AddTaskBalanceFunction.C:11
 AddTaskBalanceFunction.C:12
 AddTaskBalanceFunction.C:13
 AddTaskBalanceFunction.C:14
 AddTaskBalanceFunction.C:15
 AddTaskBalanceFunction.C:16
 AddTaskBalanceFunction.C:17
 AddTaskBalanceFunction.C:18
 AddTaskBalanceFunction.C:19
 AddTaskBalanceFunction.C:20
 AddTaskBalanceFunction.C:21
 AddTaskBalanceFunction.C:22
 AddTaskBalanceFunction.C:23
 AddTaskBalanceFunction.C:24
 AddTaskBalanceFunction.C:25
 AddTaskBalanceFunction.C:26
 AddTaskBalanceFunction.C:27
 AddTaskBalanceFunction.C:28
 AddTaskBalanceFunction.C:29
 AddTaskBalanceFunction.C:30
 AddTaskBalanceFunction.C:31
 AddTaskBalanceFunction.C:32
 AddTaskBalanceFunction.C:33
 AddTaskBalanceFunction.C:34
 AddTaskBalanceFunction.C:35
 AddTaskBalanceFunction.C:36
 AddTaskBalanceFunction.C:37
 AddTaskBalanceFunction.C:38
 AddTaskBalanceFunction.C:39
 AddTaskBalanceFunction.C:40
 AddTaskBalanceFunction.C:41
 AddTaskBalanceFunction.C:42
 AddTaskBalanceFunction.C:43
 AddTaskBalanceFunction.C:44
 AddTaskBalanceFunction.C:45
 AddTaskBalanceFunction.C:46
 AddTaskBalanceFunction.C:47
 AddTaskBalanceFunction.C:48
 AddTaskBalanceFunction.C:49
 AddTaskBalanceFunction.C:50