]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_GammaConvdPhi_PbPb.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvdPhi_PbPb.C
1 AliAnalysisTask *AddTask_GammaConvdPhi_PbPb(TString v0Cut = "1090002002092970023220000000",
2                                          TString pionCut = "01522045009000",
3                                          TString photoncut = "",
4                                          Bool_t pbpb = kTRUE) {
5
6         ////////////////////CURRENTLY NOT WORKING ///////////////////////////////
7         
8   // standard with task
9   printf("========================================================================================\n");
10   printf("dPhiAnalysis: Initialising AliAnalysisTaskdPhi\n");
11   printf("========================================================================================\n");
12   
13   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
14   if (!mgr) {
15     Error("AddTask_slindal_dPhi", "No analysis manager found.");
16     return 0;
17   }
18
19   AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
20   Bool_t isAOD=man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
21   
22   AliAnalysisTaskdPhi *task = new AliAnalysisTaskdPhi((TString("slindalTask_dPhi")+"_" + v0Cut));
23
24   ///Axes for histrograms
25   Double_t cptbins[6] = {0.5, 1.0, 1.5, 3.0, 5.0, 10};
26   task->GetAxiscPt().Set(5, cptbins);
27
28   Double_t tptbins[3] = {3.0, 5.0, 10.0};
29   task->GetAxistPt().Set(2, tptbins);
30
31   if(pbpb) {
32     Double_t centBins[7] = {0, 5, 10, 30, 50, 60, 90};
33     task->GetAxisCent().Set(6, centBins);
34   } else {
35     Double_t centBins[2] = {-9999, 9999};
36     task->GetAxisCent().Set(1, centBins);
37   }
38
39   Double_t zbins[6] = { -10, -5, -1.5, 1.5, 5, 10};
40   task->GetAxisZ().Set(5, zbins);
41
42   Double_t mbins[17] = {0.07, 0.09, 0.1, 0.11, 0.12, 0.125, 0.1275, 0.13, 0.14, 0.1425, 0.145, 0.15, 0.16, 0.18, 0.2, 0.24, 0.26};
43   task->GetAxisPiMass().Set(16, mbins);
44
45   AliESDtrackCuts * trackCuts = new AliESDtrackCuts();
46   TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
47   trackCuts->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
48   trackCuts->SetMaxChi2PerClusterTPC(4);
49   trackCuts->SetRequireTPCStandAlone(kTRUE);
50   trackCuts->SetAcceptKinkDaughters(kFALSE);
51   trackCuts->SetRequireTPCRefit(kTRUE);
52   trackCuts->SetMaxFractionSharedTPCClusters(0.4);
53
54   trackCuts->SetMaxDCAToVertexXY(2.4);
55   trackCuts->SetMaxDCAToVertexZ(3.2);
56   trackCuts->SetDCAToVertex2D(kTRUE);
57
58   trackCuts->SetMaxChi2PerClusterITS(36);
59   trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
60
61   trackCuts->SetRequireSigmaToVertex(kFALSE);
62
63   trackCuts->SetEtaRange(-0.9, 0.9);
64   trackCuts->SetPtRange(cptbins[0], 1000000.0);
65
66   trackCuts->SetRequireITSRefit(kFALSE);
67   task->SetTrackFilter(trackCuts);
68
69   ///open side nclusters graph
70   AliESDtrackCuts * trackCuts2 = new AliESDtrackCuts();
71   TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","65.+30./20.*x");
72   trackCuts2->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
73   trackCuts2->SetMaxChi2PerClusterTPC(4);
74   trackCuts2->SetRequireTPCStandAlone(kTRUE);
75   trackCuts2->SetAcceptKinkDaughters(kFALSE);
76   trackCuts2->SetRequireTPCRefit(kTRUE);
77   trackCuts2->SetMaxFractionSharedTPCClusters(0.4);
78
79   trackCuts2->SetMaxDCAToVertexXY(2.4);
80   trackCuts2->SetMaxDCAToVertexZ(3.2);
81   trackCuts2->SetDCAToVertex2D(kTRUE);
82
83   trackCuts2->SetMaxChi2PerClusterITS(36);
84   trackCuts2->SetMaxChi2TPCConstrainedGlobal(36);
85
86   trackCuts2->SetRequireSigmaToVertex(kFALSE);
87
88   trackCuts2->SetEtaRange(-0.9, 0.9);
89   trackCuts2->SetPtRange(cptbins[0], 1000000.0);
90
91   trackCuts2->SetRequireITSRefit(kFALSE);
92   task->AddTrackFilter(trackCuts2, kTRUE);
93
94   ///Tight side nclusters graphs
95   AliESDtrackCuts * trackCuts3 = new AliESDtrackCuts();
96   TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","75.+30./20.*x");
97   trackCuts3->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
98   trackCuts3->SetMaxChi2PerClusterTPC(4);
99   trackCuts3->SetRequireTPCStandAlone(kTRUE);
100   trackCuts3->SetAcceptKinkDaughters(kFALSE);
101   trackCuts3->SetRequireTPCRefit(kTRUE);
102   trackCuts3->SetMaxFractionSharedTPCClusters(0.4);
103
104   trackCuts3->SetMaxDCAToVertexXY(2.4);
105   trackCuts3->SetMaxDCAToVertexZ(3.2);
106   trackCuts3->SetDCAToVertex2D(kTRUE);
107
108   trackCuts3->SetMaxChi2PerClusterITS(36);
109   trackCuts3->SetMaxChi2TPCConstrainedGlobal(36);
110
111   trackCuts3->SetRequireSigmaToVertex(kFALSE);
112
113   trackCuts3->SetEtaRange(-0.9, 0.9);
114   trackCuts3->SetPtRange(cptbins[0], 1000000.0);
115
116   trackCuts3->SetRequireITSRefit(kFALSE);
117   task->AddTrackFilter(trackCuts3, kFALSE);
118
119
120   ////Tight xyz track cuts
121   AliESDtrackCuts4 * trackCuts4 = new AliESDtrackCuts();
122   TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
123   trackCuts4->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
124   trackCuts4->SetMaxChi2PerClusterTPC(4);
125   trackCuts4->SetRequireTPCStandAlone(kTRUE);
126   trackCuts4->SetAcceptKinkDaughters(kFALSE);
127   trackCuts4->SetRequireTPCRefit(kTRUE);
128   trackCuts4->SetMaxFractionSharedTPCClusters(0.4);
129
130   trackCuts4->SetMaxDCAToVertexXY(2.2);
131   trackCuts4->SetMaxDCAToVertexZ(3.0);
132   trackCuts4->SetDCAToVertex2D(kTRUE);
133
134   trackCuts4->SetMaxChi2PerClusterITS(36);
135   trackCuts4->SetMaxChi2TPCConstrainedGlobal(36);
136
137   trackCuts4->SetRequireSigmaToVertex(kFALSE);
138
139   trackCuts4->SetEtaRange(-0.9, 0.9);
140   trackCuts4->SetPtRange(cptbins[0], 1000000.0);
141
142   trackCuts4->SetRequireITSRefit(kFALSE);
143   task->AddTrackFilter(trackCuts4, kFALSE);
144
145
146   ////lose xyz track cuts
147   AliESDtrackCuts5 * trackCuts5 = new AliESDtrackCuts();
148   TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
149   trackCuts5->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
150   trackCuts5->SetMaxChi2PerClusterTPC(4);
151   trackCuts5->SetRequireTPCStandAlone(kTRUE);
152   trackCuts5->SetAcceptKinkDaughters(kFALSE);
153   trackCuts5->SetRequireTPCRefit(kTRUE);
154   trackCuts5->SetMaxFractionSharedTPCClusters(0.4);
155
156   trackCuts5->SetMaxDCAToVertexXY(2.6);
157   trackCuts5->SetMaxDCAToVertexZ(3.6);
158   trackCuts5->SetDCAToVertex2D(kTRUE);
159
160   trackCuts5->SetMaxChi2PerClusterITS(36);
161   trackCuts5->SetMaxChi2TPCConstrainedGlobal(36);
162
163   trackCuts5->SetRequireSigmaToVertex(kFALSE);
164
165   trackCuts5->SetEtaRange(-0.9, 0.9);
166   trackCuts5->SetPtRange(cptbins[0], 1000000.0);
167
168   trackCuts5->SetRequireITSRefit(kFALSE);
169   task->AddTrackFilter(trackCuts5);
170
171
172
173   ///open side shared tpt clusters
174   AliESDtrackCuts * trackCuts2 = new AliESDtrackCuts();
175   TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
176   trackCuts2->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
177   trackCuts2->SetMaxChi2PerClusterTPC(4);
178   trackCuts2->SetRequireTPCStandAlone(kTRUE);
179   trackCuts2->SetAcceptKinkDaughters(kFALSE);
180   trackCuts2->SetRequireTPCRefit(kTRUE);
181   trackCuts2->SetMaxFractionSharedTPCClusters(0.44);
182
183   trackCuts2->SetMaxDCAToVertexXY(2.4);
184   trackCuts2->SetMaxDCAToVertexZ(3.2);
185   trackCuts2->SetDCAToVertex2D(kTRUE);
186
187   trackCuts2->SetMaxChi2PerClusterITS(36);
188   trackCuts2->SetMaxChi2TPCConstrainedGlobal(36);
189
190   trackCuts2->SetRequireSigmaToVertex(kFALSE);
191
192   trackCuts2->SetEtaRange(-0.9, 0.9);
193   trackCuts2->SetPtRange(cptbins[0], 1000000.0);
194
195   trackCuts2->SetRequireITSRefit(kFALSE);
196   task->AddTrackFilter(trackCuts2, kTRUE);
197
198
199   ///tight side shared tpt clusters
200   AliESDtrackCuts * trackCuts2 = new AliESDtrackCuts();
201   TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
202   trackCuts2->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
203   trackCuts2->SetMaxChi2PerClusterTPC(4);
204   trackCuts2->SetRequireTPCStandAlone(kTRUE);
205   trackCuts2->SetAcceptKinkDaughters(kFALSE);
206   trackCuts2->SetRequireTPCRefit(kTRUE);
207   trackCuts2->SetMaxFractionSharedTPCClusters(0.36);
208
209   trackCuts2->SetMaxDCAToVertexXY(2.4);
210   trackCuts2->SetMaxDCAToVertexZ(3.2);
211   trackCuts2->SetDCAToVertex2D(kTRUE);
212
213   trackCuts2->SetMaxChi2PerClusterITS(36);
214   trackCuts2->SetMaxChi2TPCConstrainedGlobal(36);
215
216   trackCuts2->SetRequireSigmaToVertex(kFALSE);
217
218   trackCuts2->SetEtaRange(-0.9, 0.9);
219   trackCuts2->SetPtRange(cptbins[0], 1000000.0);
220
221   trackCuts2->SetRequireITSRefit(kFALSE);
222   task->AddTrackFilter(trackCuts2, kTRUE);
223
224
225
226   ///Pizero cuts
227   pionString =    "01630031009000";
228   TString * picutarr[2][4];
229   
230   picutarr[0][
231
232   
233   
234
235
236   AliConversionMesonCuts * picuts = new AliConversionMesonCuts();
237   picuts->InitializeCutsFromCutString(pionString);
238   task->SetMesonFilter(picuts);
239
240
241   AliConversionMesonCuts * picuts2 = new AliConversionMesonCuts();
242   picuts2->InitializeCutsFromCutString(pionString2);
243   task->AddMesonFilter(picuts2, kFALSE);
244
245
246   AliConversionMesonCuts * picuts3 = new AliConversionMesonCuts();
247   picuts3->InitializeCutsFromCutString(pionString3);
248   task->AddMesonFilter(picuts3);
249
250
251
252  
253   ///Pion cuts
254   AliConversionMesonCuts * picuts = new AliConversionMesonCuts("dphi_pioncuts");
255   picuts->InitializeCutsFromCutString(pionCut);
256   task->SetMesonFilter(picuts);
257
258   if(photoncut.Length() > 0) {
259     ///V0 analysis cuts (applied before pion analysis)
260     AliConversionCuts * gcuts = new AliConversionCuts();
261     gcuts->InitializeCutsFromCutString(photoncut);
262     task->SetPhotonFilter(gcuts);
263   }
264
265   //================================================
266   //              data containers
267   //================================================
268   //            find input container
269   //below the trunk version
270   AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
271   TString baseString("slindal_dPhi_");
272   baseString += v0Cut + "_" + pionCut;
273
274   //dumm output container
275   AliAnalysisDataContainer *coutput0 =
276         mgr->CreateContainer(baseString+"tree",
277                                                  TTree::Class(),
278                                                  AliAnalysisManager::kExchangeContainer,
279                                                  "slindal_default");
280   
281   //define output containers, please use 'username'_'somename'
282   AliAnalysisDataContainer *coutput1 = 
283         mgr->CreateContainer(baseString+"me", TList::Class(),
284                                                  AliAnalysisManager::kOutputContainer,baseString+".root");
285
286   //define output containers, please use 'username'_'somename'
287   
288   
289   //========= Add PID Reponse to ANALYSIS manager ====
290   Bool_t isMC = kFALSE;
291   if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
292     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
293     AddTaskPIDResponse(isMC);
294   }
295    
296   //=========  Set Cutnumber for V0Reader ================================
297   //  TString cutnumber = "100000000008400100150000000"; 
298   //========= Add V0 Reader to  ANALYSIS manager if not yet existent =====
299   AliV0ReaderV1 * fV0ReaderV1 = (AliV0ReaderV1*)mgr->GetTask("V0ReaderV1");
300   if( !fV0reader ){
301     AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
302       
303     fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
304     fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
305     fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
306
307     if (!mgr) {
308       Error("AddTask_V0ReaderV1", "No analysis manager found.");
309       return;
310     }
311
312     // Set AnalysisCut Number
313     AliConversionCuts *fCuts=NULL;
314     if(v0Cut!=""){
315       fCuts= new AliConversionCuts(v0Cut.Data(),v0Cut.Data());
316       if(pbpb) {
317         fCuts->SetPreSelectionCutFlag(kFALSE);
318       } else {
319         fCuts->SetPreSelectionCutFlag(kTRUE);
320       }
321       if(fCuts->InitializeCutsFromCutString(v0Cut)){
322         fV0ReaderV1->SetConversionCuts(fCuts);
323         //fCuts->SetFillCutHistograms("",kTRUE);
324       }
325
326
327     }
328       
329     fV0ReaderV1->Init();
330     mgr->AddTask(fV0ReaderV1);
331     mgr->ConnectInput(fV0ReaderV1,0,cinput);
332     task->SetV0Reader(fV0ReaderV1);
333     task->SaveReaderHists();
334   } else {
335     ///V0 analysis cuts (applied before pion analysis)
336     AliConversionCuts * v0cuts = new AliConversionCuts();
337     v0cuts->InitializeCutsFromCutString(v0Cut);
338     task->SetV0Reader(fV0ReaderV1);
339     task->SetV0Filter(v0cuts);
340   }
341
342   task->SelectCollisionCandidates(AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral);
343
344   mgr->AddTask(task);
345   mgr->ConnectInput  (task,  0, cinput );
346   mgr->ConnectOutput (task,  0, coutput0);
347   mgr->ConnectOutput (task,  1, coutput1);
348   
349   return task;
350 }
351
352