ROOT logo
//_________________________________________________________//
AliAnalysisTaskEfficiencyBFPsi *AddTaskBalancePsiEfficiency(TString centralityEstimator="V0M", Double_t centrMin=0., Double_t centrMax=80., Double_t vertexZ=10., TString fileNameBase="AnalysisResults") {
  // Create a balance function analysis task and add 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("AddTaskBalancePsiEfficiency", "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("AddTaskBalancePsiEfficiency", "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.
  //===========================================================================
  AliAnalysisTaskEfficiencyBFPsi *taskEfficiencyBFPsi = new AliAnalysisTaskEfficiencyBFPsi("TaskEfficiencyBFPsi");

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

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

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

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

  //analysis kinematic cuts
  taskEfficiencyBFPsi->SetMinPt(0.2);
  taskEfficiencyBFPsi->SetMaxPt(20.0);
  taskEfficiencyBFPsi->SetMaxEta(0.8);
  taskEfficiencyBFPsi->SetEtaRangeMax(0.8); //acceptance cuts
  taskEfficiencyBFPsi->SetPtRangeMin(0.1);  //acceptance cuts
  taskEfficiencyBFPsi->SetPtRangeMax(5.0);  //acceptance cuts
  taskEfficiencyBFPsi->SetPhiRangeMin(0.);  //acceptance cuts
  taskEfficiencyBFPsi->SetPhiRangeMax(6.28);//acceptance cuts
  
  // ADD the task
  //===========================================================================
  //bf->PrintAnalysisSettings();
  mgr->AddTask(taskEfficiencyBFPsi);

  // 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.outputBalanceFunctionPsiEfficiencyAnalysis";
  AliAnalysisDataContainer *coutQAPsi = mgr->CreateContainer(Form("listQAPsi_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
  AliAnalysisDataContainer *coutEfficiencyBFPsi = mgr->CreateContainer(Form("listEfficiencyBFPsi_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
 
  mgr->ConnectInput(taskEfficiencyBFPsi, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(taskEfficiencyBFPsi, 1, coutQAPsi);
  mgr->ConnectOutput(taskEfficiencyBFPsi, 2, coutEfficiencyBFPsi);

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