]>
Commit | Line | Data |
---|---|---|
d7d7e825 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: Ana Marin, Kathrin Koch, Kenneth Aamodt * | |
5 | * Version 1.1 * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | //////////////////////////////////////////////// | |
17 | //--------------------------------------------- | |
18 | // Class used to do analysis on conversion pairs | |
19 | //--------------------------------------------- | |
20 | //////////////////////////////////////////////// | |
21 | ||
22 | #include "AliGammaConversionHistograms.h" | |
23 | #include "TMath.h" | |
24 | #include "TObjString.h" | |
25 | #include "TMap.h" | |
26 | #include "TList.h" | |
27 | #include "TH1F.h" | |
28 | #include "TH2F.h" | |
9c1cb6f7 | 29 | #include "AliLog.h" |
d7d7e825 | 30 | |
31 | using namespace std; | |
32 | ||
33 | ClassImp(AliGammaConversionHistograms) | |
34 | ||
35 | ||
36 | AliGammaConversionHistograms::AliGammaConversionHistograms() : | |
37 | fHistogramMap(new TMap()), | |
38 | fNPhiIndex(0), | |
39 | fNRIndex(0), | |
9640a3d1 | 40 | fNZIndex(0), |
81686db1 | 41 | // fRBinLimits(0), |
42 | // fZBinLimits(0), | |
d7d7e825 | 43 | fMinRadius(0.), |
44 | fMaxRadius(0.), | |
45 | fDeltaR(0.), | |
46 | fMinPhi(0.), | |
47 | fMaxPhi(0.), | |
48 | fDeltaPhi(0.), | |
49 | fMappingContainer(NULL), | |
50 | fBackgroundContainer(NULL), | |
51 | fDebugContainer(NULL), | |
52 | fResolutionContainer(NULL), | |
53 | fMatchContainer(NULL), | |
54 | fESDContainer(NULL), | |
55 | fMCContainer(NULL), | |
56 | fTableContainer(NULL), | |
57 | fOtherContainer(NULL) | |
58 | { | |
59 | // see header file for documenation | |
6272370b | 60 | for(Int_t i=0;i<14;i++){ |
81686db1 | 61 | fRBinLimits[i]=0.; |
62 | } | |
6272370b | 63 | for(Int_t i=0;i<12;i++){ |
81686db1 | 64 | fZBinLimits[i]=0.; |
65 | } | |
d7d7e825 | 66 | } |
67 | ||
68 | ||
69 | AliGammaConversionHistograms::AliGammaConversionHistograms(const AliGammaConversionHistograms & original) : | |
70 | fHistogramMap(original.fHistogramMap), | |
71 | fNPhiIndex(original.fNPhiIndex), | |
72 | fNRIndex(original.fNRIndex), | |
9640a3d1 | 73 | fNZIndex(original.fNZIndex), |
81686db1 | 74 | // fRBinLimits(original.fRBinLimits), |
75 | // fZBinLimits(original.fZBinLimits), | |
d7d7e825 | 76 | fMinRadius(original.fMinRadius), |
77 | fMaxRadius(original.fMaxRadius), | |
78 | fDeltaR(original.fDeltaR), | |
79 | fMinPhi(original.fMinPhi), | |
80 | fMaxPhi(original.fMaxPhi), | |
81 | fDeltaPhi(original.fDeltaPhi), | |
82 | fMappingContainer(original.fMappingContainer), | |
83 | fBackgroundContainer(original.fBackgroundContainer), | |
84 | fDebugContainer(original.fDebugContainer), | |
85 | fResolutionContainer(original.fResolutionContainer), | |
86 | fMatchContainer(original.fMatchContainer), | |
87 | fESDContainer(original.fESDContainer), | |
88 | fMCContainer(original.fMCContainer), | |
89 | fTableContainer(original.fTableContainer), | |
90 | fOtherContainer(original.fOtherContainer) | |
91 | { | |
92 | //see header file for documentation | |
6272370b | 93 | for(Int_t i=0;i<14;i++){ |
81686db1 | 94 | fRBinLimits[i]= original.fRBinLimits[i]; |
95 | } | |
6272370b | 96 | for(Int_t i=0;i<12;i++){ |
81686db1 | 97 | fZBinLimits[i]=original.fZBinLimits[i]; |
98 | } | |
d7d7e825 | 99 | } |
100 | ||
101 | ||
102 | AliGammaConversionHistograms & AliGammaConversionHistograms::operator = (const AliGammaConversionHistograms & /*original*/) | |
103 | { | |
104 | // assignment operator | |
105 | return *this; | |
106 | } | |
107 | ||
108 | ||
109 | AliGammaConversionHistograms::~AliGammaConversionHistograms() { | |
110 | //destructor | |
111 | ||
112 | ||
113 | } | |
114 | ||
115 | void AliGammaConversionHistograms::AddHistogram(TString histogramName, TString histogramTitle, Int_t nXBins, Double_t firstX,Double_t lastX,TString xAxisTitle, TString yAxisTitle){ | |
116 | // see header file for documentation | |
037dc2db | 117 | if( fHistogramMap->Contains(histogramName.Data()) == kFALSE ){ |
118 | TH1F *tmp = new TH1F(histogramName, histogramTitle,nXBins,firstX,lastX); | |
119 | tmp->GetXaxis()->SetTitle(xAxisTitle); | |
120 | tmp->GetYaxis()->SetTitle(yAxisTitle); | |
121 | TObjString* tobjstring = new TObjString(histogramName.Data()); | |
122 | fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp); | |
123 | } | |
124 | else{ | |
125 | cout << "Warning: Histogram ( "<<histogramName.Data()<<" ) already exists " << endl; | |
126 | } | |
d7d7e825 | 127 | } |
128 | ||
9c1cb6f7 | 129 | void AliGammaConversionHistograms::AddHistogram(TString histogramName, TString histogramTitle, Int_t nXBins, Double_t firstX, Double_t lastX, Int_t nYBins, Double_t firstY, Double_t lastY, TString xAxisTitle, TString yAxisTitle, Int_t logAxis){ |
d7d7e825 | 130 | // see header file for documentation |
037dc2db | 131 | if( fHistogramMap->Contains(histogramName.Data()) == kFALSE ){ |
132 | TH2F *tmp = new TH2F(histogramName, histogramTitle,nXBins,firstX,lastX,nYBins,firstY,lastY); | |
133 | tmp->GetXaxis()->SetTitle(xAxisTitle); | |
134 | tmp->GetYaxis()->SetTitle(yAxisTitle); | |
135 | TObjString *tobjstring = new TObjString(histogramName.Data()); | |
136 | fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp); | |
9c1cb6f7 | 137 | |
138 | if(logAxis >= 0){ | |
139 | BinLogAxis(histogramName.Data(), logAxis); | |
140 | } | |
037dc2db | 141 | } |
142 | else{ | |
143 | cout << "Warning: Histogram ( "<<histogramName.Data()<<" ) already exists " << endl; | |
144 | } | |
d7d7e825 | 145 | } |
146 | ||
9c1cb6f7 | 147 | Bool_t AliGammaConversionHistograms::BinLogAxis(const char* name, Int_t dim){ |
148 | ||
149 | // | |
150 | // converts the axis (defined by the dimension) of THx or THnSparse | |
151 | // object to Log scale. Number of bins and bin min and bin max are preserved | |
152 | ||
153 | ||
154 | TObject *o = fHistogramMap->GetValue(name); | |
155 | TAxis *axis = 0x0; | |
156 | if(o->InheritsFrom("TH1")){ | |
157 | axis = (dynamic_cast<TH1F*>(o))->GetXaxis(); | |
158 | } | |
159 | if(o->InheritsFrom("TH2")){ | |
160 | if(0 == dim){ | |
161 | axis = (dynamic_cast<TH2F*>(o))->GetXaxis(); | |
162 | } | |
163 | else if(1 == dim){ | |
164 | axis = (dynamic_cast<TH2F*>(o))->GetYaxis(); | |
165 | } | |
166 | else{ | |
167 | // AliError("Only dim = 0 or 1 possible for TH2F"); | |
168 | } | |
169 | } | |
170 | // if(o->InheritsFrom("THnSparse")){ | |
171 | // axis = (dynamic_cast<THnSparse*>(o))->GetAxis(dim); | |
172 | //} | |
173 | ||
174 | if(!axis){ | |
175 | //AliError(Form("Axis '%d' could not be identified in the object '%s'\n", dim, name)); | |
176 | return kFALSE; | |
177 | } | |
178 | ||
179 | Int_t bins = axis->GetNbins(); | |
180 | ||
181 | Double_t from = axis->GetXmin(); | |
182 | if(from <= 0){ | |
183 | // AliError(Form(" Log binning not possible for object '%s'because the '%d' axis starts from '%f\n'", name, dim, from)); | |
184 | return kFALSE; | |
185 | } | |
186 | Double_t to = axis->GetXmax(); | |
187 | Double_t *newBins = new Double_t[bins+1]; | |
188 | newBins[0] = from; | |
189 | Double_t factor = TMath::Power(to/from, 1./bins); | |
190 | for(Int_t i=1; i<=bins; ++i){ | |
191 | newBins[i] = factor * newBins[i-1]; | |
192 | } | |
193 | axis->Set(bins, newBins); | |
194 | delete newBins; | |
195 | ||
196 | return kTRUE; | |
197 | ||
198 | ||
199 | } | |
200 | ||
d7d7e825 | 201 | void AliGammaConversionHistograms::AddTable(TString tableName,TString tableTitle,Int_t nXBins,const char * axesLabel[]){ |
4a6157dc | 202 | //see header file for documentation |
d7d7e825 | 203 | |
037dc2db | 204 | if( fHistogramMap->Contains(tableName.Data()) == kFALSE ){ |
205 | TH1F *tmp = new TH1F(tableName,tableTitle,nXBins,0,nXBins); | |
206 | for(Int_t xbin=1; xbin<=nXBins; xbin++){ | |
207 | tmp->GetXaxis()->SetBinLabel(xbin,axesLabel[xbin-1]); | |
208 | } | |
209 | tmp->SetStats(0); | |
210 | ||
211 | TObjString *tobjstring = new TObjString(tableName.Data()); | |
212 | fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp); | |
213 | } | |
214 | else{ | |
215 | cout << "Warning: Table ( "<<tableName.Data()<<" ) already exists " << endl; | |
4a6157dc | 216 | } |
d7d7e825 | 217 | } |
218 | ||
219 | void AliGammaConversionHistograms::FillTable(TString tableName,Double_t xValue) const { | |
4a6157dc | 220 | //see header file for documentation |
221 | TH1 *tmp = (TH1*)fHistogramMap->GetValue(tableName.Data()); | |
222 | if(tmp){ | |
223 | tmp->Fill(xValue); | |
224 | } | |
d7d7e825 | 225 | } |
226 | ||
227 | void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue) const{ | |
228 | //see header file for documentation | |
229 | TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data()); | |
230 | if(tmp){ | |
231 | tmp->Fill(xValue); | |
232 | } | |
233 | } | |
234 | ||
235 | void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue, Double_t yValue) const{ | |
236 | //see header file for documentation | |
237 | TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data()); | |
238 | if(tmp){ | |
239 | tmp->Fill(xValue, yValue); | |
240 | } | |
241 | } | |
242 | ||
243 | void AliGammaConversionHistograms::GetOutputContainer(TList *fOutputContainer){ | |
244 | //checking if the container is alrerady created | |
245 | ||
246 | if(fOutputContainer == NULL){ | |
247 | cout<<"WARNING: GetOutputContainer: output container object is NULL"<<endl; | |
248 | return; | |
249 | } | |
250 | ||
251 | if(fHistogramMap != NULL){ | |
252 | TIter iter(fHistogramMap); | |
253 | TObjString *histogramName; | |
254 | while ((histogramName = (TObjString*) iter.Next())) { | |
255 | TString histogramString = histogramName->GetString(); | |
256 | if(histogramString.Contains("Mapping")){// means it should be put in the mapping folder | |
257 | if(fMappingContainer == NULL){ | |
258 | fMappingContainer = new TList(); | |
b58d3c74 | 259 | fMappingContainer->SetOwner(kTRUE); |
d7d7e825 | 260 | fMappingContainer->SetName("Mapping histograms"); |
261 | } | |
262 | if(fMappingContainer != NULL){ | |
263 | fMappingContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
264 | } | |
265 | } | |
266 | else if(histogramString.Contains("Background")){// means it should be put in the background folder | |
267 | if(fBackgroundContainer == NULL){ | |
268 | fBackgroundContainer = new TList(); | |
b58d3c74 | 269 | fBackgroundContainer->SetOwner(kTRUE); |
d7d7e825 | 270 | fBackgroundContainer->SetName("Background histograms"); |
271 | } | |
272 | if(fBackgroundContainer != NULL){ | |
273 | fBackgroundContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
274 | } | |
275 | } | |
276 | else if(histogramString.Contains("Debug")){// means it should be put in the debug folder | |
277 | if(fDebugContainer == NULL){ | |
278 | fDebugContainer = new TList(); | |
b58d3c74 | 279 | fDebugContainer->SetOwner(kTRUE); |
d7d7e825 | 280 | fDebugContainer->SetName("Debug histograms"); |
281 | } | |
282 | if(fDebugContainer != NULL){ | |
283 | fDebugContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
284 | } | |
285 | } | |
286 | else if(histogramString.Contains("Resolution")){// means it should be put in the resolution folder | |
287 | if(fResolutionContainer == NULL){ | |
288 | fResolutionContainer = new TList(); | |
b58d3c74 | 289 | fResolutionContainer->SetOwner(kTRUE); |
d7d7e825 | 290 | fResolutionContainer->SetName("Resolution histograms"); |
291 | } | |
292 | if(fResolutionContainer != NULL){ | |
293 | fResolutionContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
294 | } | |
295 | } | |
296 | else if(histogramString.Contains("TrueConv")){// means it should be put in the true conv folder | |
297 | if(fMatchContainer == NULL){ | |
298 | fMatchContainer = new TList(); | |
b58d3c74 | 299 | fMatchContainer->SetOwner(kTRUE); |
d7d7e825 | 300 | fMatchContainer->SetName("True conversion histograms"); |
301 | } | |
302 | if(fMatchContainer != NULL){ | |
303 | fMatchContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
304 | } | |
305 | } | |
306 | else if(histogramString.Contains("ESD")){// means it should be put in the ESD folder | |
307 | if(fESDContainer == NULL){ | |
308 | fESDContainer = new TList(); | |
b58d3c74 | 309 | fESDContainer->SetOwner(kTRUE); |
d7d7e825 | 310 | fESDContainer->SetName("ESD histograms"); |
311 | } | |
312 | if(fESDContainer != NULL){ | |
313 | fESDContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
314 | } | |
315 | } | |
316 | else if(histogramString.Contains("MC")){// means it should be put in the MC folder | |
317 | if(fMCContainer == NULL){ | |
318 | fMCContainer = new TList(); | |
b58d3c74 | 319 | fMCContainer->SetOwner(kTRUE); |
d7d7e825 | 320 | fMCContainer->SetName("MC histograms"); |
321 | } | |
322 | if(fMCContainer != NULL){ | |
323 | fMCContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
324 | } | |
325 | } | |
326 | else if(histogramString.Contains("Table")){// means it should be put in the Table Folder | |
327 | if(fTableContainer == NULL){ | |
328 | fTableContainer = new TList(); | |
b58d3c74 | 329 | fTableContainer->SetOwner(kTRUE); |
d7d7e825 | 330 | fTableContainer->SetName("Tables"); |
331 | } | |
332 | if(fTableContainer != NULL){ | |
333 | fTableContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
334 | } | |
335 | } | |
336 | else{ | |
337 | if(fOtherContainer == NULL){ | |
338 | fOtherContainer = new TList(); | |
b58d3c74 | 339 | fOtherContainer->SetOwner(kTRUE); |
d7d7e825 | 340 | fOtherContainer->SetName("Other histograms"); |
341 | } | |
342 | if(fOtherContainer != NULL){ | |
343 | fOtherContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data())); | |
344 | } | |
345 | } | |
346 | histogramName = NULL; | |
347 | } // end while | |
348 | if(fMappingContainer != NULL){ | |
349 | fOutputContainer->Add(fMappingContainer); | |
350 | } | |
351 | if(fBackgroundContainer != NULL){ | |
352 | fOutputContainer->Add(fBackgroundContainer); | |
353 | } | |
354 | if(fDebugContainer != NULL){ | |
355 | fOutputContainer->Add(fDebugContainer); | |
356 | } | |
357 | if(fResolutionContainer != NULL){ | |
358 | fOutputContainer->Add(fResolutionContainer); | |
359 | } | |
360 | if(fMatchContainer != NULL){ | |
361 | fOutputContainer->Add(fMatchContainer); | |
362 | } | |
363 | if(fESDContainer != NULL){ | |
364 | fOutputContainer->Add(fESDContainer); | |
365 | } | |
366 | if(fMCContainer != NULL){ | |
367 | fOutputContainer->Add(fMCContainer); | |
368 | } | |
369 | if(fTableContainer != NULL){ | |
370 | fOutputContainer->Add(fTableContainer); | |
371 | } | |
372 | if(fOtherContainer != NULL){ | |
a68437fb | 373 | fOutputContainer->Add(fOtherContainer); |
d7d7e825 | 374 | } |
375 | } | |
376 | } | |
377 | ||
378 | Int_t AliGammaConversionHistograms::GetRBin(Double_t radius) const{ | |
379 | // see header file for documentation | |
380 | Int_t iResult=0; | |
9640a3d1 | 381 | // if(fDeltaR>0){ |
382 | // iResult = (Int_t)((radius - fMinRadius)/fDeltaR); | |
383 | // } | |
384 | for(Int_t i=0;i<fNRIndex;i++){ | |
385 | // cout<<"Test-limits::"<< fRBinLimits[i]<<endl; | |
386 | if( radius>=fRBinLimits[i] && radius<fRBinLimits[i+1] ){ | |
387 | iResult=i; | |
388 | } | |
d7d7e825 | 389 | } |
390 | return iResult; | |
391 | } | |
392 | ||
9640a3d1 | 393 | Int_t AliGammaConversionHistograms::GetZBin(Double_t zPos) const{ |
394 | // see header file for documentation | |
395 | Int_t iResult=0; | |
396 | ||
397 | for(Int_t i=0;i<fNZIndex;i++){ | |
398 | // cout<<"Test-limits::"<< fZBinLimits[i]<<endl; | |
6272370b | 399 | if( zPos>=fZBinLimits[i] && zPos<fZBinLimits[i+1] ){ |
9640a3d1 | 400 | iResult=i; |
401 | } | |
402 | } | |
403 | return iResult; | |
404 | } | |
405 | ||
406 | ||
407 | ||
d7d7e825 | 408 | Int_t AliGammaConversionHistograms::GetPhiBin(Double_t phi) const{ |
409 | // see header file for documentation | |
410 | Int_t iResult=0; | |
411 | if(fDeltaPhi>0){ | |
412 | if(phi>TMath::Pi()){ | |
413 | phi-=2*TMath::Pi(); | |
414 | } | |
415 | iResult = (Int_t)((phi - fMinPhi)/fDeltaPhi); | |
416 | } | |
417 | return iResult; | |
418 | } | |
419 | ||
420 | ||
421 | ||
422 | void AliGammaConversionHistograms::InitializeMappingValues(Int_t nPhiIndex, Int_t nRIndex, Int_t nBinsR, Double_t minRadius, Double_t maxRadius,Int_t nBinsPhi, Double_t minPhi, Double_t maxPhi){ | |
423 | // Initializing the valuse for the mapping | |
424 | ||
425 | fNPhiIndex = nPhiIndex; | |
48682642 | 426 | if(nRIndex<=14){ |
427 | fNRIndex = nRIndex; | |
428 | }else{ | |
429 | fNRIndex=14; | |
430 | } | |
431 | ||
6272370b | 432 | fNZIndex = 13; |
9640a3d1 | 433 | |
81686db1 | 434 | // fRBinLimits= new Double_t[8]; Kenneth: moved from pointer to fixed array |
ebcfaa7e | 435 | /* |
9640a3d1 | 436 | fRBinLimits[0]=0.; |
ebcfaa7e | 437 | fRBinLimits[1]=13.; //changed from 12 to 13: A. Marin 01.03.10 |
438 | fRBinLimits[2]=21.; //changed from 22 to 21: A. Marin 01.03.10 | |
9640a3d1 | 439 | fRBinLimits[3]=35.; |
440 | fRBinLimits[4]=55.; | |
441 | fRBinLimits[5]=72.; | |
442 | fRBinLimits[6]=90.; | |
443 | fRBinLimits[7]=500.; | |
ebcfaa7e | 444 | */ |
445 | ||
446 | fRBinLimits[0]=0.; | |
6272370b | 447 | fRBinLimits[1]=3.5; |
448 | fRBinLimits[2]=5.75; | |
449 | fRBinLimits[3]=9.5; | |
450 | fRBinLimits[4]=13.; | |
451 | fRBinLimits[5]=21.; | |
452 | fRBinLimits[6]=27.5; | |
453 | fRBinLimits[7]=35.; | |
454 | fRBinLimits[8]=42.; | |
455 | fRBinLimits[9]=55.; | |
456 | fRBinLimits[10]=72.; | |
9c1cb6f7 | 457 | fRBinLimits[11]=79.5; // change from 81.5 to 79.5 to have CE in 1 r bin 81.05 |
6272370b | 458 | fRBinLimits[12]=90.; |
459 | fRBinLimits[13]=500.; | |
ebcfaa7e | 460 | |
461 | ||
9640a3d1 | 462 | |
81686db1 | 463 | // fZBinLimits= new Double_t[7]; Kenneth: moved from pointer to fixed array |
6272370b | 464 | fZBinLimits[0]=-500.; |
465 | fZBinLimits[1]=-200.; | |
466 | fZBinLimits[2]=-100.; | |
467 | fZBinLimits[3]=-50.; | |
468 | fZBinLimits[4]=-30.; | |
469 | fZBinLimits[5]=-15.; | |
470 | fZBinLimits[6]= 0.; | |
471 | fZBinLimits[7]= 15.; | |
472 | fZBinLimits[8]= 30.; | |
473 | fZBinLimits[9]= 50.; | |
474 | fZBinLimits[10]=100.; | |
475 | fZBinLimits[11]=200.; | |
476 | fZBinLimits[12]=500.; | |
9640a3d1 | 477 | |
478 | ||
d7d7e825 | 479 | fMinRadius = minRadius; |
480 | fMaxRadius = maxRadius; | |
481 | if(nBinsR>0 && nRIndex!=0){ | |
482 | fDeltaR = (fMaxRadius - fMinRadius)/nRIndex; | |
483 | } | |
484 | fMinPhi = minPhi; | |
485 | fMaxPhi = maxPhi; | |
486 | if(nBinsPhi>0 && nPhiIndex!=0){ | |
487 | fDeltaPhi = (fMaxPhi-fMinPhi)/nPhiIndex; | |
488 | } | |
489 | } | |
490 | ||
491 | ||
492 | //mapping | |
493 | void AliGammaConversionHistograms::AddMappingHistograms(Int_t nPhiIndex, Int_t nRIndex,Int_t nXBins, Double_t firstX, Double_t lastX, Int_t nYBins, Double_t firstY, Double_t lastY, TString xAxisTitle, TString yAxisTitle){ | |
494 | // see header file for documentation | |
ebcfaa7e | 495 | |
496 | Double_t tmptogetridofwarning = firstX + lastX + nYBins + firstY + lastY; | |
497 | if(tmptogetridofwarning < 0){ | |
498 | cout<<"Less than zero"<<endl; | |
499 | } | |
d7d7e825 | 500 | |
9640a3d1 | 501 | for(Int_t phi =0; phi<fNPhiIndex;phi++){ |
d7d7e825 | 502 | |
503 | for(Int_t r =0; r<fNRIndex;r++){ | |
504 | ||
505 | // setting axis to "" changes below | |
e158cbc3 | 506 | xAxisTitle="z [cm]"; |
507 | yAxisTitle="#eta"; | |
508 | ||
d7d7e825 | 509 | //Creating the axis titles |
e158cbc3 | 510 | //if(xAxisTitle.Length() == 0){ |
511 | //xAxisTitle.Form("Phi %02d",phi); | |
512 | // } | |
d7d7e825 | 513 | |
e158cbc3 | 514 | //if(yAxisTitle.Length() == 0){ |
515 | //yAxisTitle.Form("R %02d",phi); | |
516 | // } | |
d7d7e825 | 517 | |
518 | //MC | |
519 | TString nameMC=""; | |
e158cbc3 | 520 | nameMC.Form("MC_Conversion_Mapping_Phi%02d_R%02d",phi,r); |
d7d7e825 | 521 | TString titleMC=""; |
522 | titleMC.Form("Electron-Positron MC Mapping-Phi%02d-R%02d",phi,r); | |
523 | ||
ebcfaa7e | 524 | //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle); |
d7d7e825 | 525 | |
526 | //ESD | |
527 | TString nameESD=""; | |
e158cbc3 | 528 | nameESD.Form("ESD_Conversion_Mapping_Phi%02d_R%02d",phi,r); |
d7d7e825 | 529 | TString titleESD=""; |
530 | titleESD.Form("Electron-Positron ESD Mapping-Phi%02d-R%02d",phi,r); | |
531 | ||
ebcfaa7e | 532 | //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle); |
d7d7e825 | 533 | } |
534 | } | |
535 | ||
536 | ||
537 | for(Int_t phi =0; phi<=nPhiIndex;phi++){ | |
538 | ||
539 | // setting axis to "" changes below | |
e158cbc3 | 540 | xAxisTitle="z [cm]"; |
541 | yAxisTitle="#eta"; | |
542 | //Creating the axis titles | |
543 | //if(xAxisTitle.Length() == 0){ | |
544 | // xAxisTitle.Form("Phi %02d",phi); | |
545 | //} | |
546 | //if(yAxisTitle.Length() == 0){ | |
547 | // yAxisTitle = "Counts"; | |
548 | //} | |
d7d7e825 | 549 | |
550 | //MC | |
551 | TString nameMC=""; | |
e158cbc3 | 552 | nameMC.Form("MC_Conversion_Mapping_Phi%02d",phi); |
d7d7e825 | 553 | TString titleMC=""; |
554 | titleMC.Form("Electron-Positron MC Mapping-Phi%02d",phi); | |
555 | ||
ebcfaa7e | 556 | //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle); |
d7d7e825 | 557 | |
558 | //MC | |
559 | TString nameESD=""; | |
e158cbc3 | 560 | nameESD.Form("ESD_Conversion_Mapping_Phi%02d",phi); |
d7d7e825 | 561 | TString titleESD=""; |
562 | titleESD.Form("Electron-Positron ESD Mapping-Phi%02d",phi); | |
563 | ||
ebcfaa7e | 564 | // AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle); |
d7d7e825 | 565 | } |
566 | ||
567 | ||
9640a3d1 | 568 | for(Int_t r =0; r<nRIndex;r++){ |
d7d7e825 | 569 | |
570 | // setting axis to "" changes below | |
e158cbc3 | 571 | xAxisTitle="#phi"; |
ebcfaa7e | 572 | yAxisTitle="counts"; |
d7d7e825 | 573 | //Creating the axis titles |
e158cbc3 | 574 | //if(xAxisTitle.Length() == 0){ |
575 | // xAxisTitle.Form("R %02d",r); | |
576 | //} | |
577 | //if(yAxisTitle.Length() == 0){ | |
578 | // yAxisTitle = "Counts"; | |
579 | //} | |
d7d7e825 | 580 | |
581 | //MC | |
582 | TString nameMC=""; | |
e158cbc3 | 583 | nameMC.Form("MC_Conversion_Mapping_R%02d",r); |
d7d7e825 | 584 | TString titleMC=""; |
585 | titleMC.Form("Electron-Positron MC Mapping-R%02d",r); | |
586 | ||
ebcfaa7e | 587 | // AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle); |
d7d7e825 | 588 | |
589 | //ESD | |
590 | TString nameESD=""; | |
e158cbc3 | 591 | nameESD.Form("ESD_Conversion_Mapping_R%02d",r); |
d7d7e825 | 592 | TString titleESD=""; |
593 | titleESD.Form("Electron-Positron ESD Mapping-R%02d",r); | |
594 | ||
ebcfaa7e | 595 | //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle); |
d7d7e825 | 596 | |
597 | //Mapping Phi in R | |
598 | TString nameMCPhiInR=""; | |
e158cbc3 | 599 | nameMCPhiInR.Form("MC_Conversion_Mapping_Phi_in_R_%02d",r); |
d7d7e825 | 600 | TString titleMCPhiInR=""; |
601 | titleMCPhiInR.Form("MC Mapping of Phi in R%02d",r); | |
9640a3d1 | 602 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); |
603 | AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
d7d7e825 | 604 | |
9640a3d1 | 605 | |
606 | //Mapping Z in R | |
607 | TString nameMCZInR=""; | |
608 | nameMCZInR.Form("MC_Conversion_Mapping_Z_in_R_%02d",r); | |
609 | TString titleMCZInR=""; | |
610 | titleMCZInR.Form("MC Mapping of Z in R%02d",r); | |
611 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
612 | AddHistogram(nameMCZInR, titleMCZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle); | |
613 | ||
614 | ||
615 | //Mapping Phi in R Middle Pt | |
616 | TString nameMCMidPtPhiInR=""; | |
617 | nameMCMidPtPhiInR.Form("MC_Conversion_Mapping_MidPt_Phi_in_R_%02d",r); | |
618 | TString titleMCMidPtPhiInR=""; | |
619 | titleMCMidPtPhiInR.Form("MC Mapping Middle Pt of Phi in R%02d",r); | |
620 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
621 | AddHistogram(nameMCMidPtPhiInR, titleMCMidPtPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
622 | ||
623 | ||
624 | //Mapping Z in R Middle Pt | |
625 | TString nameMCMidPtZInR=""; | |
626 | nameMCMidPtZInR.Form("MC_Conversion_Mapping_MidPt_Z_in_R_%02d",r); | |
627 | TString titleMCMidPtZInR=""; | |
628 | titleMCMidPtZInR.Form("MC Mapping Middle Pt of Z in R%02d",r); | |
629 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
630 | AddHistogram(nameMCMidPtZInR, titleMCMidPtZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle); | |
631 | ||
632 | ||
633 | ||
634 | ||
d7d7e825 | 635 | //Mapping Phi in R |
636 | TString nameESDPhiInR=""; | |
e158cbc3 | 637 | nameESDPhiInR.Form("ESD_Conversion_Mapping_Phi_in_R_%02d",r); |
d7d7e825 | 638 | TString titleESDPhiInR=""; |
639 | titleESDPhiInR.Form("ESD Mapping of Phi in R%02d",r); | |
9640a3d1 | 640 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); |
641 | AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
642 | ||
643 | //Mapping Z in R | |
644 | TString nameESDZInR=""; | |
645 | nameESDZInR.Form("ESD_Conversion_Mapping_Z_in_R_%02d",r); | |
646 | TString titleESDZInR=""; | |
647 | titleESDZInR.Form("ESD Mapping of Z in R%02d",r); | |
648 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
649 | AddHistogram(nameESDZInR, titleESDZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle); | |
650 | ||
651 | //Mapping Phi in R Middle Pt | |
652 | TString nameESDMidPtPhiInR=""; | |
653 | nameESDMidPtPhiInR.Form("ESD_Conversion_Mapping_MidPt_Phi_in_R_%02d",r); | |
654 | TString titleESDMidPtPhiInR=""; | |
655 | titleESDMidPtPhiInR.Form("ESD Mapping Middle Pt of Phi in R%02d",r); | |
656 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
657 | AddHistogram(nameESDMidPtPhiInR, titleESDMidPtPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
658 | ||
659 | //Mapping Z in R Middle Pt | |
660 | TString nameESDMidPtZInR=""; | |
661 | nameESDMidPtZInR.Form("ESD_Conversion_Mapping_MidPt_Z_in_R_%02d",r); | |
662 | TString titleESDMidPtZInR=""; | |
663 | titleESDMidPtZInR.Form("ESD Mapping Middle Pt of Z in R%02d",r); | |
664 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
665 | AddHistogram(nameESDMidPtZInR, titleESDMidPtZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle); | |
666 | ||
667 | ||
668 | ||
669 | } | |
670 | ||
671 | ||
672 | ||
673 | for(Int_t z =0; z<fNZIndex;z++){ | |
674 | //Mapping Phi in Z | |
675 | TString nameMCPhiInZ=""; | |
676 | nameMCPhiInZ.Form("MC_Conversion_Mapping_Phi_in_Z_%02d",z); | |
677 | TString titleMCPhiInZ=""; | |
678 | titleMCPhiInZ.Form("MC Mapping of Phi in Z%02d",z); | |
679 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
680 | AddHistogram(nameMCPhiInZ, titleMCPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
9c1cb6f7 | 681 | |
682 | //Mapping Phi in Z for FMD | |
683 | TString nameMCFMDPhiInZ=""; | |
684 | nameMCFMDPhiInZ.Form("MC_Conversion_Mapping_FMD_Phi_in_Z_%02d",z); | |
685 | TString titleMCFMDPhiInZ=""; | |
686 | titleMCFMDPhiInZ.Form("MC Mapping FMD of Phi in Z%02d",z); | |
687 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
688 | AddHistogram(nameMCFMDPhiInZ, titleMCFMDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
9640a3d1 | 689 | |
690 | ||
691 | //Mapping R in Z | |
692 | TString nameMCRInZ=""; | |
693 | nameMCRInZ.Form("MC_Conversion_Mapping_R_in_Z_%02d",z); | |
694 | TString titleMCRInZ=""; | |
695 | titleMCRInZ.Form("MC Mapping of R in Z%02d",z); | |
696 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
697 | AddHistogram(nameMCRInZ, titleMCRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle); | |
698 | ||
699 | //Mapping Phi in Z Middle Pt | |
700 | TString nameMCMidPtPhiInZ=""; | |
701 | nameMCMidPtPhiInZ.Form("MC_Conversion_Mapping_MidPt_Phi_in_Z_%02d",z); | |
702 | TString titleMCMidPtPhiInZ=""; | |
703 | titleMCMidPtPhiInZ.Form("MC Mapping Middle Pt of Phi in Z%02d",z); | |
704 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
705 | AddHistogram(nameMCMidPtPhiInZ, titleMCMidPtPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
706 | ||
9c1cb6f7 | 707 | //Mapping Phi in Z Middle Pt for FMD |
708 | TString nameMCMidPtFMDPhiInZ=""; | |
709 | nameMCMidPtFMDPhiInZ.Form("MC_Conversion_Mapping_MidPt_FMD_Phi_in_Z_%02d",z); | |
710 | TString titleMCMidPtFMDPhiInZ=""; | |
711 | titleMCMidPtFMDPhiInZ.Form("MC Mapping Middle Pt of Phi in Z%02d",z); | |
712 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
713 | AddHistogram(nameMCMidPtFMDPhiInZ, titleMCMidPtFMDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
714 | ||
715 | ||
9640a3d1 | 716 | |
717 | //Mapping R in Z Middle Pt | |
718 | TString nameMCMidPtRInZ=""; | |
719 | nameMCMidPtRInZ.Form("MC_Conversion_Mapping_MidPt_R_in_Z_%02d",z); | |
720 | TString titleMCMidPtRInZ=""; | |
721 | titleMCMidPtRInZ.Form("MC Mapping Middle Pt of R in Z%02d",z); | |
722 | // AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
723 | AddHistogram(nameMCMidPtRInZ, titleMCMidPtRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle); | |
724 | ||
725 | ||
726 | ||
727 | ||
728 | //Mapping Phi in Z | |
729 | TString nameESDPhiInZ=""; | |
730 | nameESDPhiInZ.Form("ESD_Conversion_Mapping_Phi_in_Z_%02d",z); | |
731 | TString titleESDPhiInZ=""; | |
9c1cb6f7 | 732 | titleESDPhiInZ.Form("ESD Mapping of Phi in Z%02d",z); |
9640a3d1 | 733 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); |
734 | AddHistogram(nameESDPhiInZ, titleESDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
735 | ||
9c1cb6f7 | 736 | |
737 | //Mapping Phi in Z for FMD | |
738 | TString nameESDFMDPhiInZ=""; | |
739 | nameESDFMDPhiInZ.Form("ESD_Conversion_Mapping_FMD_Phi_in_Z_%02d",z); | |
740 | TString titleESDFMDPhiInZ=""; | |
741 | titleESDFMDPhiInZ.Form("ESD Mapping FMD of Phi in Z%02d",z); | |
742 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
743 | AddHistogram(nameESDFMDPhiInZ, titleESDFMDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
744 | ||
745 | ||
9640a3d1 | 746 | //Mapping R in Z |
747 | TString nameESDRInZ=""; | |
748 | nameESDRInZ.Form("ESD_Conversion_Mapping_R_in_Z_%02d",z); | |
749 | TString titleESDRInZ=""; | |
750 | titleESDRInZ.Form("ESD Mapping of R in Z%02d",z); | |
751 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
752 | AddHistogram(nameESDRInZ, titleESDRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle); | |
753 | ||
754 | ||
755 | //Mapping Phi in Z Middle Pt | |
756 | TString nameESDMidPtPhiInZ=""; | |
757 | nameESDMidPtPhiInZ.Form("ESD_Conversion_Mapping_MidPt_Phi_in_Z_%02d",z); | |
758 | TString titleESDMidPtPhiInZ=""; | |
759 | titleESDMidPtPhiInZ.Form("ESD Mapping Middle Ptof Phi in R%02d",z); | |
760 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
761 | AddHistogram(nameESDMidPtPhiInZ, titleESDMidPtPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
762 | ||
9c1cb6f7 | 763 | //Mapping Phi in Z Middle Pt for FMD |
764 | TString nameESDMidPtFMDPhiInZ=""; | |
765 | nameESDMidPtFMDPhiInZ.Form("ESD_Conversion_Mapping_MidPt_FMD_Phi_in_Z_%02d",z); | |
766 | TString titleESDMidPtFMDPhiInZ=""; | |
767 | titleESDMidPtFMDPhiInZ.Form("ESD Mapping Middle Pt FMD of Phi in Z%02d",z); | |
768 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
769 | AddHistogram(nameESDMidPtFMDPhiInZ, titleESDMidPtFMDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle); | |
770 | ||
771 | ||
9640a3d1 | 772 | //Mapping R in Z Middle Pt |
773 | TString nameESDMidPtRInZ=""; | |
774 | nameESDMidPtRInZ.Form("ESD_Conversion_Mapping_MidPt_R_in_Z_%02d",z); | |
775 | TString titleESDMidPtRInZ=""; | |
776 | titleESDMidPtRInZ.Form("ESD Mapping Middle Pt of R in Z%02d",z); | |
777 | // AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle); | |
778 | AddHistogram(nameESDMidPtRInZ, titleESDMidPtRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle); | |
779 | ||
780 | ||
781 | ||
d7d7e825 | 782 | } |
9640a3d1 | 783 | |
784 | ||
785 | ||
d7d7e825 | 786 | } |