]>
Commit | Line | Data |
---|---|---|
1 | #include <exception> | |
2 | ||
3 | class AliAnalysisTaskPi0v2; | |
4 | class AliV0ReaderV1; | |
5 | ||
6 | ////////////////////CURRENTLY NOT WORKING /////////////////////////////// | |
7 | ||
8 | ||
9 | // Settings | |
10 | Int_t nBinsPhi=6; | |
11 | Int_t epselectionmask[4]={1,1,1,1};// TPC,TPCEtaGap,V0A,V0C | |
12 | const Int_t nCentralityBins=5; | |
13 | Double_t fCentralityBins[nCentralityBins+1]={0,5,10,20,30,40}; | |
14 | Double_t fInvMassRange[2]={0.0,0.3}; | |
15 | //const Int_t fNRadialBins=9; | |
16 | //Float_t fRadialBins[fNRadialBins+1]={0,13,20,26,35,40,55,70,90,200}; | |
17 | ||
18 | Bool_t fFillQA=kTRUE; | |
19 | ||
20 | //Bool_t fWeightMult=kFALSE; // cut number for mult =9 | |
21 | ||
22 | AliV0ReaderV1 *fV0Reader=NULL; | |
23 | AliAnalysisManager *mgr=NULL; | |
24 | ||
25 | const Int_t numberOfCuts=24; | |
26 | TString cutarray[numberOfCuts]; | |
27 | TString mesoncutarray[numberOfCuts]; | |
28 | ||
29 | ||
30 | // Standard Cuts | |
31 | 01525065009000 | |
32 | cutarray[0] = "1080000042092970023220000000"; mesoncutarray[0] = "01522045000000"; //standard cut Pi0 PbPb 00-100 | |
33 | ||
34 | // TPC PID | |
35 | cutarray[1] = "1080001042093970023220000000"; mesoncutarray[1] = "01522045000000"; | |
36 | cutarray[2] = "1080001042096970023220000000"; mesoncutarray[2] = "01522045000000"; | |
37 | cutarray[3] = "1080001042092470023220000000"; mesoncutarray[3] = "01522045000000"; | |
38 | cutarray[4] = "1080001042092770023220000000"; mesoncutarray[4] = "01522045000000"; | |
39 | cutarray[5] = "1080001042092950023220000000"; mesoncutarray[5] = "01522045000000"; | |
40 | ||
41 | // TOF PID | |
42 | cutarray[6] = "1080001042092970033220000000"; mesoncutarray[6] = "01522045000000"; | |
43 | cutarray[7] = "1080001042092970043220000000"; mesoncutarray[7] = "01522045000000"; | |
44 | ||
45 | // Qt max | |
46 | cutarray[8] = "1080001042092970024220000000"; mesoncutarray[8] = "01522045000000"; | |
47 | cutarray[9] = "1080001042092970022220000000"; mesoncutarray[9] = "01522045000000"; | |
48 | ||
49 | // Chi2 Gamma | |
50 | cutarray[10] = "1080001042092970023120000000"; mesoncutarray[10] = "01522045000000"; | |
51 | cutarray[11] = "1080001042092970023820000000"; mesoncutarray[11] = "01522045000000"; | |
52 | // Psi Pair | |
53 | cutarray[12] = "1080001042092970023210000000"; mesoncutarray[12] = "01522045000000"; | |
54 | cutarray[13] = "1080001042092970023230000000"; mesoncutarray[13] = "01522045000000"; | |
55 | ||
56 | // R Cut | |
57 | cutarray[14] = "1080001044092970023220000000"; mesoncutarray[14] = "01522045000000"; //5-70 | |
58 | cutarray[15] = "1080001045092970023220000000"; mesoncutarray[15] = "01522045000000"; //10-180 | |
59 | cutarray[16] = "1080001046092970023220000000"; mesoncutarray[16] = "01522045000000"; //20 | |
60 | cutarray[17] = "1080001047092970023220000000"; mesoncutarray[17] = "01522045000000"; //26 | |
61 | cutarray[18] = "1080001048092970023220000000"; mesoncutarray[18] = "01522045000000"; //35 | |
62 | cutarray[19] = "1080001045092970023220000000"; mesoncutarray[19] = "01522045000000"; //60 | |
63 | ||
64 | // Single Pt | |
65 | cutarray[20] = "1080001042492970023220000000"; mesoncutarray[20] = "01522045000000"; | |
66 | cutarray[21] = "1080001042192970023220000000"; mesoncutarray[21] = "01522045000000"; | |
67 | ||
68 | // Alpha | |
69 | cutarray[22] = "1080001042092970023220000000"; mesoncutarray[22] = "01022085000000"; | |
70 | cutarray[23] = "1080001042092970023220000000"; mesoncutarray[23] = "01022005000000"; | |
71 | ||
72 | AliAnalysisTask *AddTask_Pi0v2(Int_t harmonic=2,Bool_t IsHeavyIon=kTRUE,Bool_t doSys=kTRUE){ | |
73 | ||
74 | // standard with task | |
75 | printf("========================================================================================\n"); | |
76 | printf("Pi0v2Analysis: Initialising AliAnalysisTaskPi0v2\n"); | |
77 | printf("========================================================================================\n"); | |
78 | ||
79 | //get the current analysis manager | |
80 | ||
81 | mgr = AliAnalysisManager::GetAnalysisManager(); | |
82 | if (!mgr) { | |
83 | Error("AddTask_dlohner_Pi0v2", "No analysis manager found."); | |
84 | return 0; | |
85 | } | |
86 | ||
87 | Bool_t isMC=kFALSE; | |
88 | AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*>(mgr->GetMCtruthEventHandler()); | |
89 | if(mcH){ | |
90 | isMC=kTRUE; | |
91 | } | |
92 | ||
93 | // For 2011 data | |
94 | /* | |
95 | gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskVZEROEPSelection.C"); | |
96 | AddTaskVZEROEPSelection(); | |
97 | gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C"); | |
98 | AddTaskEventplane(); | |
99 | */ | |
100 | ||
101 | TString fV0ReaderCut=""; | |
102 | ||
103 | if(IsHeavyIon){ | |
104 | fV0ReaderCut = "1080000002084001001500000000"; | |
105 | } | |
106 | else{ | |
107 | fV0ReaderCut = "0000000002084001001500000000"; | |
108 | } | |
109 | fV0Reader=new AliV0ReaderV1(Form("PhotonPi0v%d",harmonic)); | |
110 | mgr->AddTask(fV0Reader); | |
111 | ConfigV0Reader(fV0Reader,fV0ReaderCut.Data(),IsHeavyIon); | |
112 | mgr->ConnectInput(fV0Reader, 0, mgr->GetCommonInputContainer()); | |
113 | fV0Reader->GetConversionCuts()->SetFillCutHistograms("V0ReaderCuts"); | |
114 | ||
115 | // Setup Task | |
116 | ||
117 | //========= Add task to the ANALYSIS manager ===== | |
118 | ||
119 | AliAnalysisTaskPi0v2 *task = new AliAnalysisTaskPi0v2(Form("dlohnerTask_Pi0v%d",harmonic),harmonic); | |
120 | if(doSys)SetupPi0v2(task,IsHeavyIon,isMC,Form("dlohner_Pi0v%d",harmonic),numberOfCuts); | |
121 | else SetupPi0v2(task,IsHeavyIon,isMC,Form("dlohner_Pi0v%d",harmonic),1); | |
122 | ||
123 | return task; | |
124 | } | |
125 | ||
126 | void ConfigV0Reader(AliV0ReaderV1 *fV0Reader,TString analysiscut="",Bool_t IsHeavyIon=kTRUE){ | |
127 | ||
128 | fV0Reader->SetUseOwnXYZCalculation(kTRUE); | |
129 | ||
130 | // Set AnalysisCut Number | |
131 | AliConversionCuts *fCuts=NULL; | |
132 | if(analysiscut!=""){ | |
133 | fCuts= new AliConversionCuts(analysiscut.Data(),analysiscut.Data()); | |
134 | if(fCuts->InitializeCutsFromCutString(analysiscut.Data())){ | |
135 | fV0Reader->SetConversionCuts(fCuts); | |
136 | } | |
137 | } | |
138 | else{ | |
139 | // Init standard cuts | |
140 | if(IsHeavyIon){fCuts=AliConversionCuts::GetStandardCuts2010PbPb();} | |
141 | else{fCuts=AliConversionCuts::GetStandardCuts2010pp();} | |
142 | fV0Reader->SetConversionCuts(fCuts); | |
143 | } | |
144 | // Initialize | |
145 | fV0Reader->Init(); | |
146 | } | |
147 | ||
148 | ||
149 | void SetupPi0v2(AliAnalysisTaskPi0v2 *task,Bool_t IsHeavyIon,Bool_t IsMC=kFALSE,TString outputname,Int_t ncuts=0){ | |
150 | ||
151 | cout<<"Settings for Task : "<<outputname.Data()<<endl; | |
152 | ||
153 | task->SetV0Reader(fV0Reader); | |
154 | task->SetInvMassRange(fInvMassRange); | |
155 | task->SetNBinsPhi(nBinsPhi); | |
156 | task->SetFillQA(fFillQA); | |
157 | //task->SetEPSelectionMask(epselectionmask); | |
158 | ||
159 | if(IsHeavyIon){ | |
160 | task->SetCentralityBins(fCentralityBins,nCentralityBins); | |
161 | // task->SetWeightMultiplicity(fWeightMult); | |
162 | ||
163 | // Set Cuts | |
164 | if(ncuts==0)ncuts=numberOfCuts; | |
165 | if(IsMC)ncuts=1; | |
166 | ||
167 | AliConversionSelection **selection=new AliConversionSelection*[ncuts]; | |
168 | for(Int_t ii=0;ii<ncuts;ii++){ | |
169 | cout<<"AddingCut: "<<cutarray[ii]<<" "<<mesoncutarray[ii]<<endl; | |
170 | selection[ii]=new AliConversionSelection(cutarray[ii],mesoncutarray[ii]); | |
171 | selection[ii]->SetInvMassRange(fInvMassRange); | |
172 | } | |
173 | task->SetCuts(selection,ncuts); | |
174 | task->SetEtaGap(1); | |
175 | } | |
176 | else{ | |
177 | // no cuts defined | |
178 | } | |
179 | ||
180 | //SetFlattening(task,"LHC10h"); | |
181 | ||
182 | mgr->AddTask(task); | |
183 | ||
184 | AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer(); | |
185 | ||
186 | AliAnalysisDataContainer *coutput0 = | |
187 | mgr->CreateContainer("dlohner_tree",TTree::Class(),AliAnalysisManager::kExchangeContainer,"dlohner_default"); | |
188 | ||
189 | AliAnalysisDataContainer *coutput1 = | |
190 | mgr->CreateContainer(outputname.Data(), TList::Class(), | |
191 | AliAnalysisManager::kOutputContainer,Form("%s.root",outputname.Data())); | |
192 | //connect containers | |
193 | mgr->ConnectInput (task, 0, cinput ); | |
194 | // mgr->ConnectOutput (task, 0, coutput0); | |
195 | mgr->ConnectOutput (task, 1, coutput1); | |
196 | } | |
197 | ||
198 | void SetFlattening(AliAnalysisTaskPi0v2 *task,TString period){ | |
199 | ||
200 | const Int_t nCent=5; | |
201 | ||
202 | Int_t harmonic=task->GetHarmonic(); | |
203 | ||
204 | Int_t periodindex=task->GetPeriodIndex(period); | |
205 | ||
206 | if(periodindex==0){ | |
207 | // TPC EP | |
208 | if(harmonic==2){ | |
209 | Double_t cc2[nCent]={0.00904396,0.00472483,0.00306154,0.00218462,0.00167447}; | |
210 | Double_t cs2[nCent]={0.00885519,0.00516223,0.00411065,0.00380145,0.00324424}; | |
211 | Double_t cc4[nCent]={-0.00110933,-0.00110521,-0.00124342,0.00104131,0.000651779}; | |
212 | Double_t cs4[nCent]={0.00163869,-0.00053565,0.000878745,-0.000563657,-0.000604021}; | |
213 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPTPC,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
214 | } | |
215 | ||
216 | if(harmonic==3){ | |
217 | Double_t cc2[5]={0.0116542,0.0103631,0.00897965,0.00707409,0.00605151}; | |
218 | Double_t cs2[5]={-0.0171191,-0.013024,-0.0114752,-0.0086613,-0.00706863}; | |
219 | Double_t cc4[5]={-0.000602948,0.00144836,-0.000193641,0.000108773,-0.000518333}; | |
220 | Double_t cs4[5]={-0.00164769,0.00134327,-0.00106369,7.96546e-06,-0.000261517}; | |
221 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPTPC,0,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
222 | } | |
223 | ||
224 | //TPC ETA A | |
225 | if(harmonic==2){ | |
226 | Double_t cc2[5]={0.00529447,0.00278029,0.00315325,0.00173634,0.000763168}; | |
227 | Double_t cs2[5]={0.00314285,0.00170173,0.00263333,0.0018509,0.00223784}; | |
228 | Double_t cc4[5]={-0.000737254,-0.00037845,-0.000492715,0.000775897,0.000768656}; | |
229 | Double_t cs4[5]={0.000347583,3.79872e-05,0.000387037,-0.000186129,0.000432698}; | |
230 | ||
231 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPTPCEtaA,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
232 | } | |
233 | if(harmonic==3){ | |
234 | Double_t cc2[5]={0.000386277,0.000119225,0.00111969,0.000534801,0.000642703}; | |
235 | Double_t cs2[5]={-0.00581604,-0.00607255,-0.00443819,-0.00268834,-0.00299961}; | |
236 | Double_t cc4[5]={0.00051635,0.00036326,-0.000221272,4.66775e-05,-3.05784e-06}; | |
237 | Double_t cs4[5]={1.43285e-05,0.000514099,0.000619339,0.00106466,0.000344196}; | |
238 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPTPCEtaA,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
239 | } | |
240 | ||
241 | //TPC ETA C | |
242 | ||
243 | if(harmonic==2){ | |
244 | Double_t cc2[5]={-0.00562282,-0.00456735,-0.00306068,-0.0027173,-0.00172432}; | |
245 | Double_t cs2[5]={0.0101804,0.00430782,0.00394715,0.00350156,0.00302749}; | |
246 | Double_t cc4[5]={0.00150831,-0.00159271,-0.000964157,0.000525894,9.93172e-05}; | |
247 | Double_t cs4[5]={0.00119279,-4.74629e-05,0.000118845,0.000278554,3.20868e-05}; | |
248 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPTPCEtaC,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
249 | } | |
250 | if(harmonic==3){ | |
251 | Double_t cc2[5]={0.0116475,0.0102385,0.00801121,0.00552336,0.00423273}; | |
252 | Double_t cs2[5]={-0.0112722,-0.00796059,-0.00683678,-0.00531097,-0.00430716}; | |
253 | Double_t cc4[5]={-0.000609051,1.36573e-08,-0.000464961,-0.000387943,-2.28363e-05}; | |
254 | Double_t cs4[5]={0.00125449,0.00168484,-0.000390491,-0.000219447,8.11997e-07}; | |
255 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPTPCEtaC,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
256 | } | |
257 | ||
258 | //V0A | |
259 | ||
260 | if(harmonic==2){ | |
261 | Double_t cc2[5]={0.046427,0.0105401,-0.000152992,-0.00578274,-0.0108038}; | |
262 | Double_t cs2[5]={0.00551503,0.0158159,0.00965148,0.00135414,-0.00548846}; | |
263 | Double_t cc4[5]={0.00362833,0.00170777,0.000152998,0.00223823,0.00215164}; | |
264 | Double_t cs4[5]={0.00349056,0.00142802,0.00123298,0.00207995,0.00145625}; | |
265 | ||
266 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPV0A,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
267 | } | |
268 | if(harmonic==3){ | |
269 | Double_t cc2[5]={-0.0057427,-0.00482728,-0.00565919,-0.000717094,-0.00933233}; | |
270 | Double_t cs2[5]={0.0306554,-0.0144675,-0.0159243,-0.0120465,-0.00814124}; | |
271 | Double_t cc4[5]={-0.002868,0.00159533,0.00754171,0.00683898,0.00689441}; | |
272 | Double_t cs4[5]={0.00083196,0.00198133,4.68307e-05,-0.00018187,-0.0014258}; | |
273 | ||
274 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPV0A,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
275 | } | |
276 | ||
277 | // V0 C | |
278 | if(harmonic==2){ | |
279 | Double_t cc2[5]={-0.00473277,-0.000371313,0.000857122,-1.54263e-05,-0.000686139}; | |
280 | Double_t cs2[5]={0.00408304,-0.00208615,-0.00149018,-0.000853616,-2.78855e-05}; | |
281 | Double_t cc4[5]={-0.00451741,-0.00399036,-0.00318784,-0.00186472,-0.00106299}; | |
282 | Double_t cs4[5]={0.00188045,-0.00713956,-0.00484254,-0.00448149,-0.00482164}; | |
283 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPV0C,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
284 | } | |
285 | if(harmonic==3){ | |
286 | Double_t cc2[5]={-0.00259141,-0.00115826,-0.000738658,-4.96667e-05,-0.000346694}; | |
287 | Double_t cs2[5]={-0.0111001,0.00258109,0.00110959,-0.000147296,-0.000199817}; | |
288 | Double_t cc4[5]={0.000968742,0.00157903,0.000206157,0.000444206,-0.00046573}; | |
289 | Double_t cs4[5]={-0.00307319,-0.0047952,-0.00412117,-0.00320344,-0.00386629}; | |
290 | ||
291 | task->SetFlatteningCoeff(AliAnalysisTaskPi0v2::kEPV0C,periodindex,nCent,&cc2[0],&cs2[0],&cc4[0],&cs4[0]); | |
292 | } | |
293 | } | |
294 | ||
295 | } | |
296 | ||
297 |