]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/macros/AddTaskBalanceFunctionInppMultiplicityTrain.C
CMakeLists.txt are generated for the moment
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / AddTaskBalanceFunctionInppMultiplicityTrain.C
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
32   gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/configBalanceFunctionAnalysis.C");\r
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