]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/EBYE/LRC/AliLRCProcess.cxx
Fixes for coverity
[u/mrichter/AliRoot.git] / PWG2 / EBYE / LRC / AliLRCProcess.cxx
CommitLineData
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
15ClassImp(AliLRCProcess)\r
16\r
17AliLRCProcess::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
20fEventCount=0;\r
21\r
22SetETAWindows( _StartForwardETA, _EndForwardETA,_StartBakwardETA,_EndBakwardETA);\r
23SetPtRange(0.0,4.0,160);\r
24SetMultRange(0,100); \r
25}\r
26\r
c8ffda94 27AliLRCProcess::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
66AliLRCProcess& 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 108Bool_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
112cout<<" # Init for "<<fShortDef<<" this="<<this<<"\n";\r
113if(fIsOnline)\r
114{\r
115Printf("Can't init data members more then one time! \n");\r
116return kFALSE;\r
117}\r
118fEventCount=0;\r
119fOutList = new TList();\r
120fOutList->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
222fIsOnline=kTRUE;\r
223return kTRUE;\r
224}\r
225AliLRCProcess::~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
295TList* AliLRCProcess::CreateOutput()\r
296{\r
297// Creates a link to output data TList\r
298return fOutList;\r
299}\r
300\r
301TString AliLRCProcess::GetShortDef()\r
302{\r
303return fShortDef;\r
304}\r
305\r
306void AliLRCProcess::StartEvent()\r
307{\r
308// Open new Event for track by track event import\r
309if(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
317fNchFw=0;\r
318fSumPtFw=0;\r
319fNchBw=0;\r
320fSumPtBw=0;\r
321\r
322fIsEventOpend=kTRUE;\r
323}\r
324void 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
328if(!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
369void AliLRCProcess::FinishEvent()\r
370{\r
371// Track by track event import : Close opened event and fill event summary histos\r
372\r
373if(!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
399fEventCount++;\r
400fIsEventOpend=kFALSE;\r
401//cout<<fShortDef<<": event count = "<<fEventCount<<" ";\r
402// Printf("NchF = %i,NchB = %i",fNchFw,fNchBw);\r
403}\r
404\r