1 //_________________________________________________________//
\r
2 AliAnalysisTaskEfficiencyBF *AddTaskBalanceEfficiency(
\r
3 TString centralityEstimator="V0M",
\r
4 Double_t centrMin=0.,
\r
5 Double_t centrMax=80.,
\r
6 Double_t vertexZ=10.,
\r
7 TString fileNameBase="AnalysisResults"
\r
10 // Creates a balance function analysis task and adds it to the analysis manager.
\r
11 // Get the pointer to the existing analysis manager via the static access method.
\r
12 TString centralityName("");
\r
14 centralityName+=Form("%s_%.0f-%.0f_%.0f",centralityEstimator.Data(),centrMin,centrMax,vertexZ);
\r
15 TString outputFileName(fileNameBase);
\r
16 outputFileName.Append(".root");
\r
18 //===========================================================================
\r
19 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
\r
21 ::Error("AddTaskTriggeredBF", "No analysis manager to connect to.");
\r
25 // Check the analysis type using the event handlers connected to the analysis manager.
\r
26 //===========================================================================
\r
27 if (!mgr->GetInputEventHandler()) {
\r
28 ::Error("AddTaskTriggeredBF", "This task requires an input event handler");
\r
31 TString analysisType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
\r
32 if(dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler())) analysisType = "MC";
\r
35 // Create the task, add it to manager and configure it.
\r
36 //===========================================================================
\r
39 AliAnalysisTaskEfficiencyBF *taskEfficiencyBF = new AliAnalysisTaskEfficiencyBF("TaskEfficiencyBF");
\r
42 taskEfficiencyBF->SetAnalysisMode("TPC");
\r
45 taskEfficiencyBF->SetCentralityEstimator(centralityEstimator);
\r
46 taskEfficiencyBF->SetCentralityPercentileRange(centrMin,centrMax);
\r
47 taskEfficiencyBF->SelectCollisionCandidates(AliVEvent::kMB);
\r
50 taskEfficiencyBF->SetVertexDiamond(.3,.3,vertexZ);
\r
53 AliESDtrackCuts *cuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
\r
54 cuts->SetRequireTPCStandAlone(kTRUE); // TPC only cuts!
\r
55 taskEfficiencyBF->SetAnalysisCutObject(cuts);
\r
57 // analysis kinematic cuts
\r
58 taskEfficiencyBF->SetMinPt(0.3);
\r
59 taskEfficiencyBF->SetMaxPt(1.5);
\r
60 taskEfficiencyBF->SetMaxEta(0.8);
\r
64 //===========================================================================
\r
65 //bf->PrintAnalysisSettings();
\r
66 mgr->AddTask(taskEfficiencyBF);
\r
69 // Create ONLY the output containers for the data produced by the task.
\r
70 // Get and connect other common input/output containers via the manager as below
\r
71 //==============================================================================
\r
72 TString outputFileName = AliAnalysisManager::GetCommonFileName();
\r
73 outputFileName += ":PWGCFEbyE.outputBalanceFunctionEfficiencyAnalysis";
\r
74 AliAnalysisDataContainer *coutQA = mgr->CreateContainer(Form("listQA_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
\r
75 AliAnalysisDataContainer *coutEfficiencyBF = mgr->CreateContainer(Form("listEfficiencyBF_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
\r
77 mgr->ConnectInput(taskEfficiencyBF, 0, mgr->GetCommonInputContainer());
\r
78 mgr->ConnectOutput(taskEfficiencyBF, 1, coutQA);
\r
79 mgr->ConnectOutput(taskEfficiencyBF, 2, coutEfficiencyBF);
\r
81 return taskEfficiencyBF;
\r