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