ROOT logo
//_________________________________________________________//
AliAnalysisTaskEfficiencyBF *AddTaskBalanceEfficiency(
						      TString  centralityEstimator="V0M",
						      Double_t centrMin=0.,
						      Double_t centrMax=90.,
						      Double_t vertexZ=10.,
						      TString fileNameBase="AnalysisResults"
						     ) {

  // Creates a balance function analysis task and adds it to the analysis manager.
  // Get the pointer to the existing analysis manager via the static access method.
  TString centralityName("");

  centralityName+=Form("%s_%.0f-%.0f_%.0f",centralityEstimator.Data(),centrMin,centrMax,vertexZ);
  TString outputFileName(fileNameBase);
  outputFileName.Append(".root");
  
  //===========================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskTriggeredBF", "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("AddTaskTriggeredBF", "This task requires an input event handler");
    return NULL;
  }
  TString analysisType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
  if(dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler())) analysisType = "MC";

 
  // Create the task, add it to manager and configure it.
  //===========================================================================


  AliAnalysisTaskEfficiencyBF *taskEfficiencyBF = new AliAnalysisTaskEfficiencyBF("TaskEfficiencyBF");

  // analysis mode
  taskEfficiencyBF->SetAnalysisMode("TPC");

  // centrality
  taskEfficiencyBF->SetCentralityEstimator(centralityEstimator);
  taskEfficiencyBF->SetCentralityPercentileRange(centrMin,centrMax);
  taskEfficiencyBF->SelectCollisionCandidates(AliVEvent::kMB);

  // vertex
  taskEfficiencyBF->SetVertexDiamond(.3,.3,vertexZ);

  // track cuts
  AliESDtrackCuts *cuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
  cuts->SetRequireTPCStandAlone(kTRUE); // TPC only cuts!  
  taskEfficiencyBF->SetAnalysisCutObject(cuts);

  //analysis kinematic cuts
  taskEfficiencyBF->SetMinPt(0.3);
  taskEfficiencyBF->SetMaxPt(1.5);
  // taskEfficiencyBF->SetMinEta(-0.8);
  //taskEfficiencyBF->SetMaxEta(0.8);
  taskEfficiencyBF->SetEtaRange(-0.8,0.8,100,0.0,1.6, 64); //acceptance cuts
  taskEfficiencyBF->SetPtRange(0.1, 5.0, 49);  //acceptance cuts
  taskEfficiencyBF->SetPhiRange(0.0,360.,100, 180., 90);  //acceptance cuts
    
  // ADD the task
  //===========================================================================
  //bf->PrintAnalysisSettings();
  mgr->AddTask(taskEfficiencyBF);

  
  // 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.outputBalanceFunctionEfficiencyAnalysis";
  AliAnalysisDataContainer *coutQA = mgr->CreateContainer(Form("listQA_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
  AliAnalysisDataContainer *coutEfficiencyBF = mgr->CreateContainer(Form("listEfficiencyBF_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
 
  mgr->ConnectInput(taskEfficiencyBF, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(taskEfficiencyBF, 1, coutQA);
  mgr->ConnectOutput(taskEfficiencyBF, 2, coutEfficiencyBF);

  return taskEfficiencyBF;
}
 AddTaskBalanceEfficiency.C:1
 AddTaskBalanceEfficiency.C:2
 AddTaskBalanceEfficiency.C:3
 AddTaskBalanceEfficiency.C:4
 AddTaskBalanceEfficiency.C:5
 AddTaskBalanceEfficiency.C:6
 AddTaskBalanceEfficiency.C:7
 AddTaskBalanceEfficiency.C:8
 AddTaskBalanceEfficiency.C:9
 AddTaskBalanceEfficiency.C:10
 AddTaskBalanceEfficiency.C:11
 AddTaskBalanceEfficiency.C:12
 AddTaskBalanceEfficiency.C:13
 AddTaskBalanceEfficiency.C:14
 AddTaskBalanceEfficiency.C:15
 AddTaskBalanceEfficiency.C:16
 AddTaskBalanceEfficiency.C:17
 AddTaskBalanceEfficiency.C:18
 AddTaskBalanceEfficiency.C:19
 AddTaskBalanceEfficiency.C:20
 AddTaskBalanceEfficiency.C:21
 AddTaskBalanceEfficiency.C:22
 AddTaskBalanceEfficiency.C:23
 AddTaskBalanceEfficiency.C:24
 AddTaskBalanceEfficiency.C:25
 AddTaskBalanceEfficiency.C:26
 AddTaskBalanceEfficiency.C:27
 AddTaskBalanceEfficiency.C:28
 AddTaskBalanceEfficiency.C:29
 AddTaskBalanceEfficiency.C:30
 AddTaskBalanceEfficiency.C:31
 AddTaskBalanceEfficiency.C:32
 AddTaskBalanceEfficiency.C:33
 AddTaskBalanceEfficiency.C:34
 AddTaskBalanceEfficiency.C:35
 AddTaskBalanceEfficiency.C:36
 AddTaskBalanceEfficiency.C:37
 AddTaskBalanceEfficiency.C:38
 AddTaskBalanceEfficiency.C:39
 AddTaskBalanceEfficiency.C:40
 AddTaskBalanceEfficiency.C:41
 AddTaskBalanceEfficiency.C:42
 AddTaskBalanceEfficiency.C:43
 AddTaskBalanceEfficiency.C:44
 AddTaskBalanceEfficiency.C:45
 AddTaskBalanceEfficiency.C:46
 AddTaskBalanceEfficiency.C:47
 AddTaskBalanceEfficiency.C:48
 AddTaskBalanceEfficiency.C:49
 AddTaskBalanceEfficiency.C:50
 AddTaskBalanceEfficiency.C:51
 AddTaskBalanceEfficiency.C:52
 AddTaskBalanceEfficiency.C:53
 AddTaskBalanceEfficiency.C:54
 AddTaskBalanceEfficiency.C:55
 AddTaskBalanceEfficiency.C:56
 AddTaskBalanceEfficiency.C:57
 AddTaskBalanceEfficiency.C:58
 AddTaskBalanceEfficiency.C:59
 AddTaskBalanceEfficiency.C:60
 AddTaskBalanceEfficiency.C:61
 AddTaskBalanceEfficiency.C:62
 AddTaskBalanceEfficiency.C:63
 AddTaskBalanceEfficiency.C:64
 AddTaskBalanceEfficiency.C:65
 AddTaskBalanceEfficiency.C:66
 AddTaskBalanceEfficiency.C:67
 AddTaskBalanceEfficiency.C:68
 AddTaskBalanceEfficiency.C:69
 AddTaskBalanceEfficiency.C:70
 AddTaskBalanceEfficiency.C:71
 AddTaskBalanceEfficiency.C:72
 AddTaskBalanceEfficiency.C:73
 AddTaskBalanceEfficiency.C:74
 AddTaskBalanceEfficiency.C:75
 AddTaskBalanceEfficiency.C:76
 AddTaskBalanceEfficiency.C:77
 AddTaskBalanceEfficiency.C:78
 AddTaskBalanceEfficiency.C:79
 AddTaskBalanceEfficiency.C:80
 AddTaskBalanceEfficiency.C:81
 AddTaskBalanceEfficiency.C:82
 AddTaskBalanceEfficiency.C:83
 AddTaskBalanceEfficiency.C:84
 AddTaskBalanceEfficiency.C:85
 AddTaskBalanceEfficiency.C:86