]>
Commit | Line | Data |
---|---|---|
d96e5666 | 1 | // This class is creatig TH2D histogramms for Nch - Nch , Nch - Pt , Pt - Pt \r |
2 | // dirtributions for given ETA windows and some supplementary data for Long Range Correlation (LRC) analysis . \r | |
3 | // Class is designid to work with AliAnalysisTaskLRC\r | |
4 | \r | |
5 | // Author : Andrey Ivanov , St.Peterburg State University\r | |
6 | // Email: Andrey.Ivanov@cern.ch\r | |
7 | \r | |
8 | // Version line : 3.5\r | |
9 | // Version 3.5.5\r | |
10 | \r | |
11 | \r | |
12 | #include "Riostream.h"\r | |
13 | #include "AliLRCProcess.h"\r | |
14 | #include "iostream"\r | |
15 | ClassImp(AliLRCProcess)\r | |
16 | \r | |
17 | AliLRCProcess::AliLRCProcess(Double_t _StartForwardETA,Double_t _EndForwardETA,Double_t _StartBakwardETA,Double_t _EndBakwardETA): fIsEventOpend(kFALSE), fIsOnline(kFALSE), fDisplayInitOnDemandWarning(kTRUE), fEventCount(0),fStartForwardETA(0), fEndForwardETA(0), fStartBakwardETA(0), fEndBakwardETA(0),fHiPt(0),fLoPt(0),fHiMult(0),fLoMult(0),fMultBins(0),fPtBins(0),fSumPtFw(0), fSumPtBw(0),fNchFw(0), fNchBw(0),fOutList(0), fShortDef(0), fHistPt(0),fHistEta(0),fHistNN(0),fHistPtN(0),fHistPtPt(0),fProfNberr(0),fProfdPtB(0),fProfTestLRC(0),fHistPtForward(0),fHistEtaForward(0),fHistNchForward(0),fHistPtBakward(0),fHistEtaBakward(0),fHistNchBakward(0)\r | |
18 | {\r | |
19 | // Constructor with window setup makes ready-to-run processor\r | |
20 | fEventCount=0;\r | |
21 | \r | |
22 | SetETAWindows( _StartForwardETA, _EndForwardETA,_StartBakwardETA,_EndBakwardETA);\r | |
23 | SetPtRange(0.0,4.0,160);\r | |
24 | SetMultRange(0,100); \r | |
25 | }\r | |
26 | \r | |
c8ffda94 | 27 | AliLRCProcess::AliLRCProcess(const AliLRCProcess& lrc):\r |
28 | TObject(),\r | |
29 | fIsEventOpend(lrc.fIsEventOpend),\r | |
30 | fIsOnline(lrc.fIsOnline),\r | |
31 | fDisplayInitOnDemandWarning(lrc.fDisplayInitOnDemandWarning),\r | |
32 | fEventCount(lrc.fEventCount),\r | |
33 | fStartForwardETA(lrc.fStartForwardETA),\r | |
34 | fEndForwardETA(lrc.fEndForwardETA),\r | |
35 | fStartBakwardETA(lrc.fStartBakwardETA),\r | |
36 | fEndBakwardETA(lrc.fEndBakwardETA),\r | |
37 | fHiPt(lrc.fHiPt),\r | |
38 | fLoPt(lrc.fLoPt),\r | |
39 | fHiMult(lrc.fHiMult),\r | |
40 | fLoMult(lrc.fLoMult),\r | |
41 | fMultBins(lrc.fMultBins),\r | |
42 | fPtBins(lrc.fPtBins),\r | |
43 | fSumPtFw(lrc.fSumPtFw),\r | |
44 | fSumPtBw(lrc.fSumPtBw),\r | |
45 | fNchFw(lrc.fNchFw),\r | |
46 | fNchBw(lrc.fNchBw),\r | |
47 | fOutList(lrc.fOutList),\r | |
48 | fShortDef(lrc.fShortDef),\r | |
49 | fHistPt(lrc.fHistPt),\r | |
50 | fHistEta(lrc.fHistEta),\r | |
51 | fHistNN(lrc.fHistNN),\r | |
52 | fHistPtN(lrc.fHistPtN),\r | |
53 | fHistPtPt(lrc.fHistPtPt),\r | |
54 | fProfNberr(lrc.fProfNberr),\r | |
55 | fProfdPtB(lrc.fProfdPtB),\r | |
56 | fProfTestLRC(lrc.fProfTestLRC),\r | |
57 | fHistPtForward(lrc.fHistPtForward),\r | |
58 | fHistEtaForward(lrc.fHistEtaForward),\r | |
59 | fHistNchForward(lrc.fHistNchForward),\r | |
60 | fHistPtBakward(lrc.fHistPtBakward),\r | |
61 | fHistEtaBakward(lrc.fHistEtaBakward),\r | |
62 | fHistNchBakward(lrc.fHistNchBakward) {\r | |
63 | //copy constructor\r | |
64 | }\r | |
65 | \r | |
66 | AliLRCProcess& AliLRCProcess::operator = (const AliLRCProcess& lrc) {\r | |
67 | //assignment operator\r | |
eedcd663 | 68 | if(this != &lrc) {\r |
69 | TObject::operator=(lrc);\r | |
70 | fIsEventOpend = lrc.fIsEventOpend;\r | |
71 | fIsOnline = lrc.fIsOnline;\r | |
72 | fDisplayInitOnDemandWarning = lrc.fDisplayInitOnDemandWarning;\r | |
73 | fEventCount = lrc.fEventCount;\r | |
74 | fStartForwardETA = lrc.fStartForwardETA;\r | |
75 | fEndForwardETA = lrc.fEndForwardETA;\r | |
76 | fStartBakwardETA = lrc.fStartBakwardETA;\r | |
77 | fEndBakwardETA = lrc.fEndBakwardETA;\r | |
78 | fHiPt = lrc.fHiPt;\r | |
79 | fLoPt = lrc.fLoPt;\r | |
80 | fHiMult = lrc.fHiMult;\r | |
81 | fLoMult = lrc.fLoMult;\r | |
82 | fMultBins = lrc.fMultBins;\r | |
83 | fPtBins = lrc.fPtBins;\r | |
84 | fSumPtFw = lrc.fSumPtFw;\r | |
85 | fSumPtBw = lrc.fSumPtBw;\r | |
86 | fNchFw = lrc.fNchFw;\r | |
87 | fNchBw = lrc.fNchBw;\r | |
88 | fOutList = lrc.fOutList;\r | |
89 | fShortDef = lrc.fShortDef;\r | |
90 | fHistPt = lrc.fHistPt;\r | |
91 | fHistEta = lrc.fHistEta;\r | |
92 | fHistNN = lrc.fHistNN;\r | |
93 | fHistPtN = lrc.fHistPtN;\r | |
94 | fHistPtPt = lrc.fHistPtPt;\r | |
95 | fProfNberr = lrc.fProfNberr;\r | |
96 | fProfdPtB = lrc.fProfdPtB;\r | |
97 | fProfTestLRC = lrc.fProfTestLRC;\r | |
98 | fHistPtForward = lrc.fHistPtForward;\r | |
99 | fHistEtaForward = lrc.fHistEtaForward;\r | |
100 | fHistNchForward = lrc.fHistNchForward;\r | |
101 | fHistPtBakward = lrc.fHistPtBakward;\r | |
102 | fHistEtaBakward = lrc.fHistEtaBakward;\r | |
103 | fHistNchBakward = lrc.fHistNchBakward;\r | |
104 | }\r | |
105 | return *this;\r | |
c8ffda94 | 106 | }\r |
107 | \r | |
d96e5666 | 108 | Bool_t AliLRCProcess::InitDataMembers()\r |
109 | {\r | |
110 | // This method is actualy creating output histogramms\r | |
111 | // Thist method is to be called in CreateOutputObjects method of AliAnalysisTask\r | |
112 | cout<<" # Init for "<<fShortDef<<" this="<<this<<"\n";\r | |
113 | if(fIsOnline)\r | |
114 | {\r | |
115 | Printf("Can't init data members more then one time! \n");\r | |
116 | return kFALSE;\r | |
117 | }\r | |
118 | fEventCount=0;\r | |
119 | fOutList = new TList();\r | |
120 | fOutList->SetName(fShortDef);\r | |
121 | \r | |
122 | Double_t LoMult,HiMult;\r | |
123 | \r | |
124 | LoMult=fLoMult-0.5;\r | |
125 | HiMult=fHiMult+0.5;\r | |
126 | \r | |
127 | // Window statistics histograms\r | |
128 | \r | |
129 | // Forward\r | |
130 | \r | |
131 | fHistPtForward = new TH1D("fHistPtForward", "P_{T} distribution in Forward window", 100, 0.0, 5);\r | |
132 | fHistPtForward->GetXaxis()->SetTitle("P_{T} (GeV/c)");\r | |
133 | fHistPtForward->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");\r | |
134 | fHistPtForward->SetMarkerStyle(kFullCircle);\r | |
135 | \r | |
136 | \r | |
137 | fHistEtaForward = new TH1D("fEtaForward", "#eta distribution in Forward window", 200, -2, 2);\r | |
138 | fHistEtaForward->GetXaxis()->SetTitle("ETA");\r | |
139 | fHistEtaForward->GetYaxis()->SetTitle("dN/ETA");\r | |
140 | fHistEtaForward->SetMarkerStyle(kFullCircle);\r | |
141 | \r | |
142 | \r | |
143 | fHistNchForward = new TH1D("fHistNchForward", "N_{ch} distribution in Forward window", fMultBins, LoMult, HiMult);\r | |
144 | fHistNchForward->GetXaxis()->SetTitle("N_{ch}");\r | |
145 | fHistNchForward->GetYaxis()->SetTitle("dN/dN_{ch}");\r | |
146 | fHistNchForward->SetMarkerStyle(kFullCircle);\r | |
147 | \r | |
148 | // Bakward\r | |
149 | \r | |
150 | fHistPtBakward = new TH1D("fHistPtBakward", "P_{T} distribution in Bakward window", 100, 0.0, 5);\r | |
151 | fHistPtBakward->GetXaxis()->SetTitle("P_{T} (GeV/c)");\r | |
152 | fHistPtBakward->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");\r | |
153 | fHistPtBakward->SetMarkerStyle(kFullCircle);\r | |
154 | \r | |
155 | \r | |
156 | fHistEtaBakward = new TH1D("fEtaBakward", "#eta distribution in Bakward window", 200, -2, 2);\r | |
157 | fHistEtaBakward->GetXaxis()->SetTitle("ETA");\r | |
158 | fHistEtaBakward->GetYaxis()->SetTitle("dN/ETA");\r | |
159 | fHistEtaBakward->SetMarkerStyle(kFullCircle);\r | |
160 | \r | |
161 | \r | |
162 | fHistNchBakward = new TH1D("fHistNchBakward", "N_{ch} distribution in Bakward window", fMultBins, LoMult, HiMult);\r | |
163 | fHistNchBakward->GetXaxis()->SetTitle("P_{T} (GeV/c)");\r | |
164 | fHistNchBakward->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");\r | |
165 | fHistNchBakward->SetMarkerStyle(kFullCircle);\r | |
166 | \r | |
167 | \r | |
168 | //Overal statistics histograms\r | |
169 | \r | |
170 | fHistPt = new TH1F("fHistPt", "P_{T} distribution", 100, 0.0, 5.0);\r | |
171 | fHistPt->GetXaxis()->SetTitle("P_{T} (GeV/c)");\r | |
172 | fHistPt->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");\r | |
173 | fHistPt->SetMarkerStyle(kFullCircle);\r | |
174 | \r | |
175 | \r | |
176 | fHistEta = new TH1F("fHistEta", "#eta distribution", 200, -2, 2);\r | |
177 | fHistEta->GetXaxis()->SetTitle("ETA");\r | |
178 | fHistEta->GetYaxis()->SetTitle("dN/ETA");\r | |
179 | fHistEta->SetMarkerStyle(kFullCircle);\r | |
180 | \r | |
181 | \r | |
182 | \r | |
183 | // -------- LRC histograms\r | |
184 | \r | |
185 | fHistNN = new TH2D("NN","NN",fMultBins, LoMult, HiMult,fMultBins, LoMult, HiMult);\r | |
186 | fHistPtN = new TH2D("PtN","PtN",fMultBins, LoMult, HiMult,fPtBins,fLoPt,fHiPt);\r | |
187 | fHistPtPt = new TH2D("PtPt","PtPt",fPtBins,fLoPt,fHiPt,fPtBins,fLoPt,fHiPt);\r | |
188 | fProfNberr = new TProfile("nber","nber",fMultBins, LoMult, HiMult);\r | |
189 | fProfdPtB = new TProfile("dPtB","Overal multievent Pt_Backward (first bin) Pt_Backward^2 (sec. bin) ",2,0.5,2.5); \r | |
190 | fProfTestLRC = new TProfile("TestLRC","Test LRC calculaion via TProfile",fMultBins, LoMult, HiMult); \r | |
191 | \r | |
192 | \r | |
193 | // ---------- Adding data members to output list\r | |
194 | \r | |
195 | // Adding overal statistics\r | |
196 | \r | |
197 | fOutList->Add(fHistPt);\r | |
198 | fOutList->Add(fHistEta);\r | |
199 | \r | |
200 | //Adding LRC hists\r | |
201 | \r | |
202 | fOutList->Add(fHistNN);\r | |
203 | fOutList->Add(fHistPtN);\r | |
204 | fOutList->Add(fHistPtPt);\r | |
205 | fOutList->Add(fProfNberr);\r | |
206 | fOutList->Add(fProfdPtB);\r | |
207 | fOutList->Add(fProfTestLRC);\r | |
208 | \r | |
209 | \r | |
210 | //Adding window statistics\r | |
211 | \r | |
212 | fOutList->Add(fHistPtForward);\r | |
213 | fOutList->Add(fHistEtaForward);\r | |
214 | fOutList->Add(fHistNchForward);\r | |
215 | fOutList->Add(fHistPtBakward);\r | |
216 | fOutList->Add(fHistEtaBakward);\r | |
217 | fOutList->Add(fHistNchBakward);\r | |
218 | \r | |
219 | \r | |
220 | \r | |
221 | \r | |
222 | fIsOnline=kTRUE;\r | |
223 | return kTRUE;\r | |
224 | }\r | |
225 | AliLRCProcess::~AliLRCProcess()\r | |
226 | {\r | |
227 | //Destructor\r | |
228 | \r | |
229 | }\r | |
230 | \r | |
231 | // --------------------------------------- Setters ------------------\r | |
232 | void AliLRCProcess::SetShortDef()\r | |
233 | {\r | |
234 | // Creating task and output container name \r | |
235 | TString lF,hF,lB,hB;\r | |
236 | lF+=fStartForwardETA; lF.Remove(TString::kBoth,' ');\r | |
237 | hF+=fEndForwardETA; hF.Remove(TString::kBoth,' ');\r | |
238 | lB+=fStartBakwardETA; lB.Remove(TString::kBoth,' ');\r | |
239 | hB+=fEndBakwardETA; hB.Remove(TString::kBoth,' ');\r | |
240 | \r | |
241 | fShortDef= "TaskLRCw"+lF+"to"+hF+"vs"+lB+"to"+hB;\r | |
242 | \r | |
243 | }\r | |
244 | \r | |
245 | void AliLRCProcess::SetForwardWindow(Double_t StartETA,Double_t EndETA)\r | |
246 | {\r | |
247 | //setter for the forward eta window\r | |
248 | fStartForwardETA=StartETA;\r | |
249 | fEndForwardETA=EndETA;\r | |
250 | SetShortDef();\r | |
251 | }\r | |
252 | void AliLRCProcess::SetBackwardWindow(Double_t StartETA,Double_t EndETA)\r | |
253 | {\r | |
254 | //setter for the backward eta window\r | |
255 | fStartBakwardETA=StartETA;\r | |
256 | fEndBakwardETA=EndETA;\r | |
257 | SetShortDef();\r | |
258 | }\r | |
259 | void AliLRCProcess::SetETAWindows(Double_t _StartForwardETA,Double_t _EndForwardETA,Double_t _StartBakwardETA,Double_t _EndBakwardETA)\r | |
260 | {\r | |
261 | //setter for the eta windows\r | |
262 | fStartForwardETA=_StartForwardETA;\r | |
263 | fEndForwardETA=_EndForwardETA;\r | |
264 | fStartBakwardETA=_StartBakwardETA;\r | |
265 | fEndBakwardETA=_EndBakwardETA;\r | |
266 | SetShortDef();\r | |
267 | }\r | |
268 | \r | |
269 | void AliLRCProcess::SetPtRange(Double_t LoPt,Double_t HiPt,Int_t PtBins)\r | |
270 | {\r | |
271 | // Setter for Pt range and N bins in histos\r | |
272 | fLoPt=LoPt;\r | |
273 | fHiPt=HiPt;\r | |
274 | fPtBins=PtBins; \r | |
275 | }\r | |
276 | void AliLRCProcess::SetMultRange(Int_t LoMult,Int_t HiMult,Int_t MultBins)\r | |
277 | {\r | |
278 | // Setter for multiplicity range and N bins in histos\r | |
279 | fLoMult=LoMult;\r | |
280 | fHiMult=HiMult;\r | |
281 | if(!MultBins)\r | |
282 | {\r | |
283 | fMultBins=fHiMult-fLoMult+1;\r | |
284 | }else\r | |
285 | {\r | |
286 | fMultBins=MultBins; \r | |
287 | }\r | |
288 | }\r | |
289 | \r | |
290 | \r | |
291 | //________________________________________________________________________\r | |
292 | \r | |
293 | \r | |
294 | \r | |
295 | TList* AliLRCProcess::CreateOutput()\r | |
296 | {\r | |
297 | // Creates a link to output data TList\r | |
298 | return fOutList;\r | |
299 | }\r | |
300 | \r | |
301 | TString AliLRCProcess::GetShortDef()\r | |
302 | {\r | |
303 | return fShortDef;\r | |
304 | }\r | |
305 | \r | |
306 | void AliLRCProcess::StartEvent()\r | |
307 | {\r | |
308 | // Open new Event for track by track event import\r | |
309 | if(fIsEventOpend)\r | |
310 | {Printf("Event is already opened! Auto finishing ! \n");\r | |
311 | cout<<fShortDef<<": event count = "<<fEventCount<<" ";\r | |
312 | Printf("NchF = %i,NchB = %i \n",fNchFw,fNchBw);\r | |
313 | \r | |
314 | FinishEvent();\r | |
315 | }\r | |
316 | \r | |
317 | fNchFw=0;\r | |
318 | fSumPtFw=0;\r | |
319 | fNchBw=0;\r | |
320 | fSumPtBw=0;\r | |
321 | \r | |
322 | fIsEventOpend=kTRUE;\r | |
323 | }\r | |
324 | void AliLRCProcess::AddTrackPtEta(Double_t Pt, Double_t Eta )\r | |
325 | {\r | |
326 | //Track by track event import : Imports track to the event \r | |
327 | \r | |
328 | if(!fIsEventOpend)\r | |
329 | {Printf("Event is not opened!\n");\r | |
330 | return;}\r | |
331 | \r | |
332 | Double_t lPt=Pt;\r | |
333 | Double_t lEta=Eta;\r | |
334 | \r | |
335 | // Glabal trak data\r | |
336 | fHistPt->Fill(lPt);\r | |
337 | fHistEta->Fill(lEta);\r | |
338 | \r | |
339 | \r | |
340 | //Forward window\r | |
341 | if( (fStartForwardETA<lEta)&&(lEta<fEndForwardETA))\r | |
342 | {\r | |
343 | fNchFw++;\r | |
344 | fSumPtFw+=lPt;\r | |
345 | fHistPtForward->Fill(lPt);\r | |
346 | fHistEtaForward->Fill(lEta);\r | |
347 | \r | |
348 | }\r | |
349 | \r | |
350 | //Backward window\r | |
351 | if((fStartBakwardETA<lEta)&&(lEta<fEndBakwardETA))\r | |
352 | {\r | |
353 | fNchBw++;\r | |
354 | fSumPtBw+=lPt; \r | |
355 | if(lPt<4.0)\r | |
356 | {\r | |
357 | fProfdPtB->Fill(1,lPt); \r | |
358 | fProfdPtB->Fill(2,lPt*lPt);\r | |
359 | }\r | |
360 | \r | |
361 | fHistPtBakward->Fill(lPt);\r | |
362 | fHistEtaBakward->Fill(lEta);\r | |
363 | \r | |
364 | }\r | |
365 | \r | |
366 | \r | |
367 | \r | |
368 | }\r | |
369 | void AliLRCProcess::FinishEvent()\r | |
370 | {\r | |
371 | // Track by track event import : Close opened event and fill event summary histos\r | |
372 | \r | |
373 | if(!fIsEventOpend)\r | |
374 | {Printf("Event is not opened!\n");\r | |
375 | return;}\r | |
376 | \r | |
377 | //Filling even-total data\r | |
378 | \r | |
379 | fHistNN->Fill(fNchFw,fNchBw);\r | |
380 | \r | |
381 | if(fNchBw!=0)\r | |
382 | {\r | |
383 | fSumPtBw=fSumPtBw/fNchBw;\r | |
384 | fProfTestLRC->Fill(fNchFw,fSumPtBw);\r | |
385 | fHistPtN->Fill(fNchFw,fSumPtBw);\r | |
386 | fProfNberr->Fill(fNchFw,1.0/fNchBw);\r | |
387 | \r | |
388 | if(fNchFw!=0)\r | |
389 | {\r | |
390 | fSumPtFw=fSumPtFw/fNchFw;\r | |
391 | fHistPtPt->Fill(fSumPtFw,fSumPtBw);\r | |
392 | }\r | |
393 | }\r | |
394 | \r | |
395 | \r | |
396 | fHistNchForward->Fill(fNchFw);\r | |
397 | fHistNchBakward->Fill(fNchBw);\r | |
398 | \r | |
399 | fEventCount++;\r | |
400 | fIsEventOpend=kFALSE;\r | |
401 | //cout<<fShortDef<<": event count = "<<fEventCount<<" ";\r | |
402 | // Printf("NchF = %i,NchB = %i",fNchFw,fNchBw);\r | |
403 | }\r | |
404 | \r |