1 //=============================================//
\r
2 const char* centralityEstimator = "V0M";
\r
3 //const char* centralityEstimator = "CL1";
\r
4 //const char* centralityEstimator = "TRK";
\r
5 //=============================================//
\r
7 //_________________________________________________________//
\r
8 AliAnalysisTaskBF *AddTaskBalanceCentralityTrain(Double_t centrMin=0.,
\r
9 Double_t centrMax=100.,
\r
10 Double_t vertexZ=10.,
\r
15 Double_t etaMin=-0.8,
\r
16 Double_t etaMax=0.8,
\r
17 TString fileNameBase="AnalysisResults") {
\r
19 // Creates a balance function analysis task and adds it to the analysis manager.
\r
20 // Get the pointer to the existing analysis manager via the static access method.
\r
21 TString centralityName("");
\r
22 centralityName+=Form("%.0f",centrMin);
\r
23 centralityName+="-";
\r
24 centralityName+=Form("%.0f",centrMax);
\r
25 centralityName+="_";
\r
26 centralityName+=Form("vZ%.1f",vertexZ);
\r
27 centralityName+="_";
\r
28 centralityName+=Form("DCAxy%.1f",DCAxy);
\r
29 centralityName+="_";
\r
30 centralityName+=Form("DCAz%.1f",DCAz);
\r
31 centralityName+="_Pt";
\r
32 centralityName+=Form("%.1f",ptMin);
\r
33 centralityName+="-";
\r
34 centralityName+=Form("%.1f",ptMax);
\r
35 centralityName+="_Eta";
\r
36 centralityName+=Form("%.1f",etaMin);
\r
37 centralityName+="-";
\r
38 centralityName+=Form("%.1f",etaMax);
\r
40 TString outputFileName(fileNameBase);
\r
41 outputFileName.Append(".root");
\r
43 //===========================================================================
\r
44 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
\r
46 ::Error("AddTaskBF", "No analysis manager to connect to.");
\r
50 // Check the analysis type using the event handlers connected to the analysis manager.
\r
51 //===========================================================================
\r
52 if (!mgr->GetInputEventHandler()) {
\r
53 ::Error("AddTaskBF", "This task requires an input event handler");
\r
56 TString analysisType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
\r
57 gROOT->LoadMacro("./configBalanceFunctionAnalysis.C");
\r
58 AliBalance *bf = 0; // Balance Function object
\r
59 AliBalance *bfs = 0; // shuffled Balance function object
\r
61 if (analysisType=="ESD"){
\r
62 bf = GetBalanceFunctionObject("ESD");
\r
63 bfs = GetBalanceFunctionObject("ESD",kTRUE);
\r
65 else if (analysisType=="AOD"){
\r
66 bf = GetBalanceFunctionObject("AOD");
\r
67 bfs = GetBalanceFunctionObject("AOD",kTRUE);
\r
70 bf = GetBalanceFunctionObject("MC");
\r
71 bfs = GetBalanceFunctionObject("MC",kTRUE);
\r
74 // Create the task, add it to manager and configure it.
\r
75 //===========================================================================
\r
76 AliAnalysisTaskBF *taskBF = new AliAnalysisTaskBF("TaskBF");
\r
77 taskBF->SetAnalysisObject(bf,bfs);
\r
78 taskBF->SetCentralityPercentileRange(centrMin,centrMax);
\r
79 if(analysisType == "ESD") {
\r
80 AliESDtrackCuts *trackCuts = GetTrackCutsObject();
\r
81 taskBF->SetAnalysisCutObject(trackCuts);
\r
83 // offline trigger selection (AliVEvent.h)
\r
84 // taskBF->UseOfflineTrigger(); // NOT used (selection is done with the AliAnalysisTaskSE::SelectCollisionCandidates())
\r
85 // with this only selected events are analyzed (first 2 bins in event QA histogram are the same))
\r
86 taskBF->SelectCollisionCandidates(AliVEvent::kMB);
\r
88 else if(analysisType == "AOD") {
\r
89 // pt and eta cut (pt_min, pt_max, eta_min, eta_max)
\r
90 taskBF->SetAODtrackCutBit(128);
\r
91 taskBF->SetKinematicsCutsAOD(ptMin,ptMax,etaMin,etaMax);
\r
92 taskBF->SetExtraDCACutsAOD(DCAxy,DCAz);
\r
95 // centrality estimator (default = V0M)
\r
96 taskBF->SetCentralityEstimator(centralityEstimator);
\r
99 // vertex cut (x,y,z)
\r
100 taskBF->SetVertexDiamond(.3,.3,vertexZ);
\r
102 //bf->PrintAnalysisSettings();
\r
103 mgr->AddTask(taskBF);
\r
105 // Create ONLY the output containers for the data produced by the task.
\r
106 // Get and connect other common input/output containers via the manager as below
\r
107 //==============================================================================
\r
108 TString outputFileName = AliAnalysisManager::GetCommonFileName();
\r
109 outputFileName += ":PWG2EbyE.outputBalanceFunctionAnalysis";
\r
110 AliAnalysisDataContainer *coutQA = mgr->CreateContainer(Form("listQA_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
\r
111 AliAnalysisDataContainer *coutBF = mgr->CreateContainer(Form("listBF_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
\r
112 AliAnalysisDataContainer *coutBFS= mgr->CreateContainer(Form("listBFShuffled_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
\r
113 mgr->ConnectInput(taskBF, 0, mgr->GetCommonInputContainer());
\r
114 mgr->ConnectOutput(taskBF, 1, coutQA);
\r
115 mgr->ConnectOutput(taskBF, 2, coutBF);
\r
116 mgr->ConnectOutput(taskBF, 3, coutBFS);
\r