]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/EBYE/macros/AddTaskBalanceTriggered.C
end-of-line normalization
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / AddTaskBalanceTriggered.C
CommitLineData
a65a7e70 1// now in options
2
3//PID config
4Bool_t kUseNSigmaPID = kFALSE;
5Double_t nSigmaMax = 3.0;
6Bool_t kUseBayesianPID = kTRUE;
7Double_t gMinAcceptedProbability = 0.7;
8
9//_________________________________________________________//
10AliAnalysisTaskTriggeredBF *AddTaskBalanceTriggered(Double_t centrMin=0.,
11 Double_t centrMax=80.,
12 Bool_t gRunShuffling=kFALSE,
13 Bool_t gRunMixing=kFALSE,
14 Bool_t gRunV0=kFALSE,
15 TString centralityEstimator="V0M",
16 Double_t vertexZ=10.,
17 Double_t DCAxy=-1,
18 Double_t DCAz=-1,
19 Double_t ptMin=0.15,
20 Double_t ptMax=20,
21 Double_t etaMin=-0.8,
22 Double_t etaMax=0.8,
23 Double_t maxTPCchi2 = -1,
24 Int_t minNClustersTPC = -1,
25 Bool_t kUsePID = kFALSE,
26 Int_t AODfilterBit = 128,
27 Bool_t bCentralTrigger = kFALSE,
28 TString fileNameBase="AnalysisResults") {
29
30 // Creates a balance function analysis task and adds it to the analysis manager.
31 // Get the pointer to the existing analysis manager via the static access method.
32 TString centralityName("");
33 centralityName+=Form("%.0f",centrMin);
34 centralityName+="-";
35 centralityName+=Form("%.0f",centrMax);
36 centralityName+="_";
37 centralityName+=Form("%s",centralityEstimator.Data());
38 centralityName+="_";
39 centralityName+=Form("vZ%.1f",vertexZ);
40 centralityName+="_";
41 centralityName+=Form("DCAxy%.1f",DCAxy);
42 centralityName+="_";
43 centralityName+=Form("DCAz%.1f",DCAz);
44 centralityName+="_Pt";
45 centralityName+=Form("%.1f",ptMin);
46 centralityName+="-";
47 centralityName+=Form("%.1f",ptMax);
48 centralityName+="_Eta";
49 centralityName+=Form("%.1f",etaMin);
50 centralityName+="-";
51 centralityName+=Form("%.1f",etaMax);
52 centralityName+="_Chi";
53 centralityName+=Form("%.1f",maxTPCchi2);
54 centralityName+="_nClus";
55 centralityName+=Form("%d",minNClustersTPC);
56 centralityName+="_Bit";
57 centralityName+=Form("%d",AODfilterBit);
58 if(bCentralTrigger) centralityName+="_withCentralTrigger";
59 if(gRunV0) centralityName+="_V0";
60
61
62
63 TString outputFileName(fileNameBase);
64 outputFileName.Append(".root");
65
66 //===========================================================================
67 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
68 if (!mgr) {
69 ::Error("AddTaskTriggeredBF", "No analysis manager to connect to.");
70 return NULL;
71 }
72
73 // Check the analysis type using the event handlers connected to the analysis manager.
74 //===========================================================================
75 if (!mgr->GetInputEventHandler()) {
76 ::Error("AddTaskTriggeredBF", "This task requires an input event handler");
77 return NULL;
78 }
79 TString analysisType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
80 if(dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler())) analysisType = "MC";
81
82 // setup the balance function objects
83 AliBalanceTriggered *bf = 0; // Balance Function object
84 AliBalanceTriggered *bfs = 0; // shuffled Balance function object
85 AliBalanceTriggered *bfm = 0; // mixing Balance function object
86
87 if (analysisType=="AOD"){
88
89 bf = new AliBalanceTriggered();
90 bf->SetAnalysisLevel(analysisType);
91 bf->InitHistograms();
92
93 if(gRunShuffling){
94 bfs = new AliBalanceTriggered();
95 bfs->SetAnalysisLevel(analysisType);
96 bfs->InitHistograms();
97 }
98 if(gRunMixing){
99 bfm = new AliBalanceTriggered();
100 bfm->SetAnalysisLevel(analysisType);
101 bfm->InitHistograms();
102 }
103 }
104 else{
105 ::Error("AddTaskTriggeredBF", "analysis type NOT supported.");
106 return NULL;
107 }
108
109 // Create the task, add it to manager and configure it.
110 //===========================================================================
111 AliAnalysisTaskTriggeredBF *taskTriggeredBF = new AliAnalysisTaskTriggeredBF("TaskTriggeredBF");
112 taskTriggeredBF->SetAnalysisObject(bf);
113 if(gRunShuffling) taskTriggeredBF->SetShufflingObject(bfs);
114 if(gRunMixing){
115 taskTriggeredBF->SetMixingObject(bfm);
116 taskTriggeredBF->SetMixingTracks(50000);
117 }
118 if(gRunV0){
119 taskTriggeredBF->SetRunV0(kTRUE);
120 }
121
122 taskTriggeredBF->SetCentralityPercentileRange(centrMin,centrMax);
123 if(analysisType == "AOD") {
124 // pt and eta cut (pt_min, pt_max, eta_min, eta_max)
125 taskTriggeredBF->SetAODtrackCutBit(AODfilterBit);
126 taskTriggeredBF->SetKinematicsCutsAOD(ptMin,ptMax,etaMin,etaMax);
127
128 // set extra DCA cuts (-1 no extra cut)
129 taskTriggeredBF->SetExtraDCACutsAOD(DCAxy,DCAz);
130
131 // set extra TPC chi2 / nr of clusters cut
132 taskTriggeredBF->SetExtraTPCCutsAOD(maxTPCchi2, minNClustersTPC);
133
134 }
135
136 // offline trigger selection (AliVEvent.h)
137 // taskTriggeredBF->UseOfflineTrigger(); // NOT used (selection is done with the AliAnalysisTaskSE::SelectCollisionCandidates())
138 // with this only selected events are analyzed (first 2 bins in event QA histogram are the same))
139 // documentation in https://twiki.cern.ch/twiki/bin/viewauth/ALICE/PWG1EvSelDocumentation
140 if(bCentralTrigger) taskTriggeredBF->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral);
141 else taskTriggeredBF->SelectCollisionCandidates(AliVEvent::kMB);
142
143 // centrality estimator (default = V0M)
144 taskTriggeredBF->SetCentralityEstimator(centralityEstimator);
145
146 // vertex cut (x,y,z)
147 taskTriggeredBF->SetVertexDiamond(.3,.3,vertexZ);
148
149 //bf->PrintAnalysisSettings();
150 mgr->AddTask(taskTriggeredBF);
151
152 // Create ONLY the output containers for the data produced by the task.
153 // Get and connect other common input/output containers via the manager as below
154 //==============================================================================
155 TString outputFileName = AliAnalysisManager::GetCommonFileName();
156 outputFileName += ":PWGCFEbyE.outputBalanceFunctionTriggeredAnalysis";
157 AliAnalysisDataContainer *coutQA = mgr->CreateContainer(Form("listQA_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
158 AliAnalysisDataContainer *coutTriggeredBF = mgr->CreateContainer(Form("listTriggeredBF_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
159 if(gRunShuffling) AliAnalysisDataContainer *coutTriggeredBFS = mgr->CreateContainer(Form("listTriggeredBFShuffled_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
160 if(gRunMixing) AliAnalysisDataContainer *coutTriggeredBFM = mgr->CreateContainer(Form("listTriggeredBFMixed_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
161 if(gRunV0) AliAnalysisDataContainer *coutQAV0 = mgr->CreateContainer(Form("listQAV0_%s",centralityName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputFileName.Data());
162
163 mgr->ConnectInput(taskTriggeredBF, 0, mgr->GetCommonInputContainer());
164 mgr->ConnectOutput(taskTriggeredBF, 1, coutQA);
165 mgr->ConnectOutput(taskTriggeredBF, 2, coutTriggeredBF);
166 if(gRunShuffling) mgr->ConnectOutput(taskTriggeredBF, 3, coutTriggeredBFS);
167 if(gRunMixing) mgr->ConnectOutput(taskTriggeredBF, 4, coutTriggeredBFM);
168 if(gRunV0) mgr->ConnectOutput(taskTriggeredBF, 5, coutQAV0);
169
170 return taskTriggeredBF;
171}