]>
Commit | Line | Data |
---|---|---|
b5e8b66e | 1 | //_________________________________________________________//\r |
2 | AliAnalysisTaskBF *AddTaskBalanceFunctionInppMultiplicityTrain(Int_t nMultMin = 0,\r | |
3 | Int_t nMultMax = 100,\r | |
4 | Double_t vertexZ=10.,\r | |
5 | Double_t DCAxy=-1,\r | |
6 | Double_t DCAz=-1,\r | |
7 | Double_t ptMin=0.3,\r | |
8 | Double_t ptMax=1.5,\r | |
9 | Double_t etaMin=-0.8,\r | |
10 | Double_t etaMax=0.8,\r | |
11 | TString fileNameBase="AnalysisResults") {\r | |
12 | // Creates a balance function analysis task and adds it to the analysis manager.\r | |
13 | // Get the pointer to the existing analysis manager via the static access method.\r | |
14 | TString outputFileName(fileNameBase);\r | |
15 | outputFileName.Append(".root");\r | |
16 | \r | |
17 | \r | |
18 | //===========================================================================\r | |
19 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r | |
20 | if (!mgr) {\r | |
21 | ::Error("AddTaskBF", "No analysis manager to connect to.");\r | |
22 | return NULL;\r | |
23 | }\r | |
24 | \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("AddTaskBF", "This task requires an input event handler");\r | |
29 | return NULL;\r | |
30 | }\r | |
31 | TString analysisType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"\r | |
a022cbd0 | 32 | gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/configBalanceFunctionAnalysis.C");\r |
b5e8b66e | 33 | AliBalance *bf = 0; // Balance Function object\r |
34 | AliBalance *bfs = 0; // shuffled Balance function object\r | |
35 | \r | |
36 | if (analysisType=="ESD"){\r | |
37 | bf = GetBalanceFunctionObject("ESD",0,nMultMin,nMultMax);\r | |
38 | bfs = GetBalanceFunctionObject("ESD",0,nMultMin,nMultMax,kTRUE);\r | |
39 | }\r | |
40 | else if (analysisType=="AOD"){\r | |
41 | bf = GetBalanceFunctionObject("AOD",0,nMultMin,nMultMax);\r | |
42 | bfs = GetBalanceFunctionObject("AOD",0,nMultMin,nMultMax,kTRUE);\r | |
43 | }\r | |
44 | else{\r | |
45 | bf = GetBalanceFunctionObject("MC",0,nMultMin,nMultMax);\r | |
46 | bfs = GetBalanceFunctionObject("MC",0,nMultMin,nMultMax,kTRUE);\r | |
47 | }\r | |
48 | \r | |
49 | // Create the task, add it to manager and configure it.\r | |
50 | //===========================================================================\r | |
51 | AliAnalysisTaskBF *taskBF = new AliAnalysisTaskBF("TaskBF");\r | |
52 | taskBF->SetAnalysisObject(bf);\r | |
53 | taskBF->SetShufflingObject(bfs);\r | |
54 | if(analysisType == "ESD") {\r | |
55 | AliESDtrackCuts *trackCuts = GetTrackCutsObject();\r | |
56 | taskBF->SetAnalysisCutObject(trackCuts);\r | |
57 | \r | |
58 | // offline trigger selection (AliVEvent.h)\r | |
59 | // taskBF->UseOfflineTrigger(); // NOT used (selection is done with the AliAnalysisTaskSE::SelectCollisionCandidates()) \r | |
60 | // with this only selected events are analyzed (first 2 bins in event QA histogram are the same))\r | |
61 | taskBF->SelectCollisionCandidates(AliVEvent::kMB);\r | |
62 | }\r | |
63 | else if(analysisType == "AOD") {\r | |
64 | // pt and eta cut (pt_min, pt_max, eta_min, eta_max)\r | |
65 | taskBF->SetAODtrackCutBit(128);\r | |
66 | taskBF->SetKinematicsCutsAOD(ptMin,ptMax,etaMin,etaMax);\r | |
67 | //taskBF->SetExtraDCACutsAOD(DCAxy,DCAz);\r | |
68 | taskBF->SetMultiplicityRange(nMultMin,nMultMax);\r | |
69 | }\r | |
70 | \r | |
71 | // vertex cut (x,y,z)\r | |
72 | taskBF->SetVertexDiamond(.3,.3,vertexZ);\r | |
73 | \r | |
74 | //bf->PrintAnalysisSettings();\r | |
75 | mgr->AddTask(taskBF);\r | |
76 | \r | |
77 | // Create ONLY the output containers for the data produced by the task.\r | |
78 | // Get and connect other common input/output containers via the manager as below\r | |
79 | //======================================================================\r | |
80 | TString listQAName = "listQA"; listQAName += (Int_t) (nMultMin);\r | |
81 | listQAName += "-"; listQAName += (Int_t) (nMultMax);\r | |
82 | AliAnalysisDataContainer *coutQA = mgr->CreateContainer(listQAName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());\r | |
83 | \r | |
84 | TString listBFName = "listBF"; listBFName += (Int_t) (nMultMin);\r | |
85 | listBFName += "-"; listBFName += (Int_t) (nMultMax);\r | |
86 | AliAnalysisDataContainer *coutBF = mgr->CreateContainer(listBFName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());\r | |
87 | \r | |
88 | TString listBFshuffledName = "listBFshuffled"; listBFshuffledName += (Int_t) (nMultMin);\r | |
89 | listBFshuffledName += "-"; listBFshuffledName += (Int_t) (nMultMax);\r | |
90 | AliAnalysisDataContainer *coutBFS= mgr->CreateContainer(listBFshuffledName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());\r | |
91 | mgr->ConnectInput(taskBF, 0, mgr->GetCommonInputContainer());\r | |
92 | mgr->ConnectOutput(taskBF, 1, coutQA);\r | |
93 | mgr->ConnectOutput(taskBF, 2, coutBF);\r | |
94 | mgr->ConnectOutput(taskBF, 3, coutBFS);\r | |
95 | \r | |
96 | return taskBF;\r | |
97 | }\r |