AliAnalysisTaskEffContBF *AddTaskBalanceEffCont( TString centralityEstimator="V0M",
Double_t centrMin=0.,
Double_t centrMax=80.,
Double_t vertexZ=10.,
Int_t AODfilterBit = 128,
Bool_t bUseElectronRejection = kFALSE,
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("%.0f-%.0f_%.0f",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.
//===========================================================================
AliAnalysisTaskEffContBF *taskEffContBF = new AliAnalysisTaskEffContBF("TaskEffContBF");
// centrality
if(centralityEstimator) {
taskEffContBF->UseCentrality();
taskEffContBF->SetCentralityEstimator(centralityEstimator);
taskEffContBF->SetCentralityPercentileRange(centrMin,centrMax);
}
taskEffContBF->SelectCollisionCandidates(AliVEvent::kMB);
// vertex
taskEffContBF->SetVertexDiamond(.3,.3,vertexZ);
//analysis kinematic cuts
taskEffContBF->SetMinPt(0.0);
taskEffContBF->SetMaxPt(20.0); //5.0
//taskEffContBF->SetEtaRange(-0.8,0.8,100,0.0,1.6, 64); //acceptance cuts
//taskEffContBF->SetPtRange(0.1, 20.0, 100); //acceptance cuts //5.0,49
taskEffContBF->SetEtaRange(-0.8,0.8,100,0.0,1.6, 64); //acceptance cuts
taskEffContBF->SetPtRange(0.0, 20.0, 100); //acceptance cuts //5.0,49
// electron rejection
if(bUseElectronRejection){
taskEffContBF->SetElectronOnlyRejection(3.); // no other particle in nsigma (this is what we use standard in BF code)
}
//AODs
taskEffContBF->SetAODtrackCutBit(AODfilterBit);
mgr->AddTask(taskEffContBF);
// 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.outputBalanceFunctionEffContAnalysis";
AliAnalysisDataContainer *coutQA = mgr->CreateContainer(Form("listQA_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
AliAnalysisDataContainer *coutEffContBF = mgr->CreateContainer(Form("listEffContBF_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
mgr->ConnectInput(taskEffContBF, 0, mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskEffContBF, 1, coutQA);
mgr->ConnectOutput(taskEffContBF, 2, coutEffContBF);
return taskEffContBF;
}
AddTaskBalanceEffCont.C:1 AddTaskBalanceEffCont.C:2 AddTaskBalanceEffCont.C:3 AddTaskBalanceEffCont.C:4 AddTaskBalanceEffCont.C:5 AddTaskBalanceEffCont.C:6 AddTaskBalanceEffCont.C:7 AddTaskBalanceEffCont.C:8 AddTaskBalanceEffCont.C:9 AddTaskBalanceEffCont.C:10 AddTaskBalanceEffCont.C:11 AddTaskBalanceEffCont.C:12 AddTaskBalanceEffCont.C:13 AddTaskBalanceEffCont.C:14 AddTaskBalanceEffCont.C:15 AddTaskBalanceEffCont.C:16 AddTaskBalanceEffCont.C:17 AddTaskBalanceEffCont.C:18 AddTaskBalanceEffCont.C:19 AddTaskBalanceEffCont.C:20 AddTaskBalanceEffCont.C:21 AddTaskBalanceEffCont.C:22 AddTaskBalanceEffCont.C:23 AddTaskBalanceEffCont.C:24 AddTaskBalanceEffCont.C:25 AddTaskBalanceEffCont.C:26 AddTaskBalanceEffCont.C:27 AddTaskBalanceEffCont.C:28 AddTaskBalanceEffCont.C:29 AddTaskBalanceEffCont.C:30 AddTaskBalanceEffCont.C:31 AddTaskBalanceEffCont.C:32 AddTaskBalanceEffCont.C:33 AddTaskBalanceEffCont.C:34 AddTaskBalanceEffCont.C:35 AddTaskBalanceEffCont.C:36 AddTaskBalanceEffCont.C:37 AddTaskBalanceEffCont.C:38 AddTaskBalanceEffCont.C:39 AddTaskBalanceEffCont.C:40 AddTaskBalanceEffCont.C:41 AddTaskBalanceEffCont.C:42 AddTaskBalanceEffCont.C:43 AddTaskBalanceEffCont.C:44 AddTaskBalanceEffCont.C:45 AddTaskBalanceEffCont.C:46 AddTaskBalanceEffCont.C:47 AddTaskBalanceEffCont.C:48 AddTaskBalanceEffCont.C:49 AddTaskBalanceEffCont.C:50 AddTaskBalanceEffCont.C:51 AddTaskBalanceEffCont.C:52 AddTaskBalanceEffCont.C:53 AddTaskBalanceEffCont.C:54 AddTaskBalanceEffCont.C:55 AddTaskBalanceEffCont.C:56 AddTaskBalanceEffCont.C:57 AddTaskBalanceEffCont.C:58 AddTaskBalanceEffCont.C:59 AddTaskBalanceEffCont.C:60 AddTaskBalanceEffCont.C:61 AddTaskBalanceEffCont.C:62 AddTaskBalanceEffCont.C:63 AddTaskBalanceEffCont.C:64 AddTaskBalanceEffCont.C:65 AddTaskBalanceEffCont.C:66 AddTaskBalanceEffCont.C:67 AddTaskBalanceEffCont.C:68 AddTaskBalanceEffCont.C:69 AddTaskBalanceEffCont.C:70 AddTaskBalanceEffCont.C:71 AddTaskBalanceEffCont.C:72 AddTaskBalanceEffCont.C:73 AddTaskBalanceEffCont.C:74 AddTaskBalanceEffCont.C:75 AddTaskBalanceEffCont.C:76 AddTaskBalanceEffCont.C:77 AddTaskBalanceEffCont.C:78 AddTaskBalanceEffCont.C:79 AddTaskBalanceEffCont.C:80 AddTaskBalanceEffCont.C:81 AddTaskBalanceEffCont.C:82 AddTaskBalanceEffCont.C:83