]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/EBYE/macros/AddTaskBalanceMCCentralityTrain.C
end-of-line normalization
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / AddTaskBalanceMCCentralityTrain.C
CommitLineData
a65a7e70 1// now in options
2//=============================================//
3//const char* centralityEstimator = "V0M";
4//const char* centralityEstimator = "CL1";
5//const char* centralityEstimator = "TRK";
6//=============================================//
7//Bool_t gRunShuffling = kFALSE;
8//Bool_t gRunShuffling = kTRUE;
9//=============================================//
10//_________________________________________________________//
11AliAnalysisTaskBF *AddTaskBalanceMCCentralityTrain(Double_t centrMin=0.,
12 Double_t centrMax=100.,
13 Double_t impactParameterMin=0.,
14 Double_t impactParameterMax=20.,
15 Bool_t gRunShuffling=kFALSE,
16 Double_t vertexZ=10.,
17 Double_t ptMin=0.3,
18 Double_t ptMax=1.5,
19 Double_t etaMin=-0.8,
20 Double_t etaMax=0.8,
21 TF1* gAcceptanceParameterization = 0x0,
22 Int_t gPdgCode = -1,
23 TString fileNameBase="AnalysisResults") {
24
25 // Creates a balance function analysis task and adds it to the analysis manager.
26 // Get the pointer to the existing analysis manager via the static access method.
27 TString centralityName("");
28 centralityName+=Form("%.0f",centrMin);
29 centralityName+="-";
30 centralityName+=Form("%.0f",centrMax);
31
32 TString outputFileName(fileNameBase);
33 outputFileName.Append(".root");
34
35 //===========================================================================
36 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
37 if (!mgr) {
38 ::Error("AddTaskBF", "No analysis manager to connect to.");
39 return NULL;
40 }
41
42 // Check the analysis type using the event handlers connected to the analysis manager.
43 //===========================================================================
44 if (!mgr->GetInputEventHandler()) {
45 ::Error("AddTaskBF", "This task requires an input event handler");
46 return NULL;
47 }
48 TString analysisType = "MC";
49
50 // for local changed BF configuration
51 gROOT->LoadMacro("./configBalanceFunctionAnalysis.C");
52 //gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/configBalanceFunctionAnalysis.C");
53 AliBalance *bf = 0; // Balance Function object
54 AliBalance *bfs = 0; // shuffled Balance function object
55
56 if (analysisType=="ESD"){
57 bf = GetBalanceFunctionObject("ESD",centralityName.Data());
58 if(gRunShuffling) bfs = GetBalanceFunctionObject("ESD",centralityName.Data(),kTRUE);
59 }
60 else if (analysisType=="AOD"){
61 bf = GetBalanceFunctionObject("AOD",centralityName.Data());
62 if(gRunShuffling) bfs = GetBalanceFunctionObject("AOD",centralityName.Data(),kTRUE);
63 }
64 else if (analysisType=="MC"){
65 bf = GetBalanceFunctionObject("MC",centralityName.Data());
66 if(gRunShuffling) bfs = GetBalanceFunctionObject("MC",centralityName.Data(),kTRUE);
67 }
68 else{
69 ::Error("AddTaskBF", "analysis type NOT known.");
70 return NULL;
71 }
72
73 // Create the task, add it to manager and configure it.
74 //===========================================================================
75 AliAnalysisTaskBF *taskBF = new AliAnalysisTaskBF("TaskBF");
76 taskBF->SetAnalysisObject(bf);
77 if(gRunShuffling) taskBF->SetShufflingObject(bfs);
78
79 if(analysisType == "ESD") {
80 AliESDtrackCuts *trackCuts = GetTrackCutsObject(ptMin,ptMax,etaMin,etaMax,maxTPCchi2,DCAxy,DCAz,minNClustersTPC);
81 taskBF->SetAnalysisCutObject(trackCuts);
82 // centrality estimator (default = V0M)
83 taskBF->SetCentralityEstimator(centralityEstimator);
84 taskBF->SetCentralityPercentileRange(impactParameterMin,
85 impactParameterMax);
86 }
87 else if(analysisType == "AOD") {
88 // pt and eta cut (pt_min, pt_max, eta_min, eta_max)
89 taskBF->SetAODtrackCutBit(128);
90 taskBF->SetKinematicsCutsAOD(ptMin,ptMax,etaMin,etaMax);
91 taskBF->SetCentralityEstimator(centralityEstimator);
92 taskBF->SetCentralityPercentileRange(impactParameterMin,
93 impactParameterMax);
94
95 // set extra DCA cuts (-1 no extra cut)
96 taskBF->SetExtraDCACutsAOD(DCAxy,DCAz);
97
98 // set extra TPC chi2 / nr of clusters cut
99 taskBF->SetExtraTPCCutsAOD(maxTPCchi2, minNClustersTPC);
100 taskBF->SetCentralityEstimator(centralityEstimator);
101 }
102 else if(analysisType == "MC") {
103 Printf("********************ANALYSIS TYPE MC********************************");
104 if(gAcceptanceParameterization)
105 taskBF->SetAcceptanceParameterization(gAcceptanceParameterization);
106 if(gPdgCode != -1)
107 taskBF->SetPDGCode(gPdgCode);
108 taskBF->SetKinematicsCutsAOD(ptMin,ptMax,etaMin,etaMax);
109 taskBF->SetImpactParameterRange(impactParameterMin,
110 impactParameterMax);
111 }
112
113 // offline trigger selection (AliVEvent.h)
114 // taskBF->UseOfflineTrigger(); // NOT used (selection is done with the AliAnalysisTaskSE::SelectCollisionCandidates())
115 // with this only selected events are analyzed (first 2 bins in event QA histogram are the same))
116 // documentation in https://twiki.cern.ch/twiki/bin/viewauth/ALICE/PWG1EvSelDocumentation
117 //taskBF->SelectCollisionCandidates(AliVEvent::kMB);
118
119 // vertex cut (x,y,z)
120 taskBF->SetVertexDiamond(.3,.3,vertexZ);
121
122
123
124 //bf->PrintAnalysisSettings();
125 mgr->AddTask(taskBF);
126
127 // Create ONLY the output containers for the data produced by the task.
128 // Get and connect other common input/output containers via the manager as below
129 //==============================================================================
130 TString outputFileName = AliAnalysisManager::GetCommonFileName();
131 outputFileName += ":PWGCFEbyE.outputBalanceFunctionAnalysis";
132 AliAnalysisDataContainer *coutQA = mgr->CreateContainer(Form("listQA_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
133 AliAnalysisDataContainer *coutBF = mgr->CreateContainer(Form("listBF_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
134 if(gRunShuffling) AliAnalysisDataContainer *coutBFS= mgr->CreateContainer(Form("listBFShuffled_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
135 mgr->ConnectInput(taskBF, 0, mgr->GetCommonInputContainer());
136 mgr->ConnectOutput(taskBF, 1, coutQA);
137 mgr->ConnectOutput(taskBF, 2, coutBF);
138 if(gRunShuffling) mgr->ConnectOutput(taskBF, 3, coutBFS);
139
140 return taskBF;
141}