]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/GammaConv/AliGammaConversionHistograms.cxx
ae257540cb0a8e1fd85802f550f22fec1f763218
[u/mrichter/AliRoot.git] / PWG4 / GammaConv / AliGammaConversionHistograms.cxx
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"
29
30
31 using namespace std;
32
33 ClassImp(AliGammaConversionHistograms)
34
35
36 AliGammaConversionHistograms::AliGammaConversionHistograms() :
37   fHistogramMap(new TMap()),
38   fNPhiIndex(0),
39   fNRIndex(0),
40   fNZIndex(0),
41 //  fRBinLimits(0),
42 //  fZBinLimits(0),
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
60   for(Int_t i=0;i<7;i++){
61     fRBinLimits[i]=0.;
62   }
63   for(Int_t i=0;i<6;i++){
64     fZBinLimits[i]=0.;
65   }
66 }
67
68
69 AliGammaConversionHistograms::AliGammaConversionHistograms(const AliGammaConversionHistograms & original) :
70   fHistogramMap(original.fHistogramMap),
71   fNPhiIndex(original.fNPhiIndex),
72   fNRIndex(original.fNRIndex),
73   fNZIndex(original.fNZIndex),
74   //  fRBinLimits(original.fRBinLimits),
75   //  fZBinLimits(original.fZBinLimits),
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
93   for(Int_t i=0;i<7;i++){
94     fRBinLimits[i]= original.fRBinLimits[i];
95   }
96   for(Int_t i=0;i<6;i++){
97     fZBinLimits[i]=original.fZBinLimits[i];
98   }
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
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   }
127 }
128
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){
130   // see header file for documentation
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);
137   }
138   else{
139     cout << "Warning: Histogram ( "<<histogramName.Data()<<" ) already exists " << endl;
140   }
141 }
142
143 void AliGammaConversionHistograms::AddTable(TString tableName,TString tableTitle,Int_t nXBins,const char * axesLabel[]){
144   //see header file for documentation
145
146   if( fHistogramMap->Contains(tableName.Data()) ==  kFALSE ){
147     TH1F *tmp = new TH1F(tableName,tableTitle,nXBins,0,nXBins);
148     for(Int_t xbin=1; xbin<=nXBins; xbin++){
149       tmp->GetXaxis()->SetBinLabel(xbin,axesLabel[xbin-1]);
150     }
151     tmp->SetStats(0);
152     
153     TObjString *tobjstring = new TObjString(tableName.Data());
154     fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp);
155   }
156   else{
157     cout << "Warning: Table ( "<<tableName.Data()<<" ) already exists " << endl;
158   }
159 }
160
161 void AliGammaConversionHistograms::FillTable(TString tableName,Double_t xValue) const {
162   //see header file for documentation
163   TH1 *tmp = (TH1*)fHistogramMap->GetValue(tableName.Data());
164   if(tmp){
165     tmp->Fill(xValue);
166   }
167 }
168
169 void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue) const{
170   //see header file for documentation
171   TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data());
172   if(tmp){
173     tmp->Fill(xValue);
174   }
175 }
176
177 void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue, Double_t yValue) const{
178   //see header file for documentation
179   TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data());
180   if(tmp){
181     tmp->Fill(xValue, yValue);
182   }
183 }
184
185 void AliGammaConversionHistograms::GetOutputContainer(TList *fOutputContainer){
186   //checking if the container is alrerady created
187         
188   if(fOutputContainer == NULL){
189     cout<<"WARNING: GetOutputContainer: output container object is NULL"<<endl;
190     return;
191   }
192
193   if(fHistogramMap != NULL){
194     TIter iter(fHistogramMap);
195     TObjString *histogramName;
196     while ((histogramName = (TObjString*) iter.Next())) {
197       TString histogramString = histogramName->GetString();
198       if(histogramString.Contains("Mapping")){// means it should be put in the mapping folder
199         if(fMappingContainer == NULL){
200           fMappingContainer = new TList();
201           fMappingContainer->SetOwner(kTRUE);
202           fMappingContainer->SetName("Mapping histograms");
203         }
204         if(fMappingContainer != NULL){
205           fMappingContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
206         }
207       }
208       else if(histogramString.Contains("Background")){// means it should be put in the background folder
209         if(fBackgroundContainer == NULL){
210           fBackgroundContainer = new TList();
211           fBackgroundContainer->SetOwner(kTRUE);
212           fBackgroundContainer->SetName("Background histograms");
213         }
214         if(fBackgroundContainer != NULL){
215           fBackgroundContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
216         }
217       }
218       else if(histogramString.Contains("Debug")){// means it should be put in the debug folder
219         if(fDebugContainer == NULL){
220           fDebugContainer = new TList();
221           fDebugContainer->SetOwner(kTRUE);
222           fDebugContainer->SetName("Debug histograms");
223         }
224         if(fDebugContainer != NULL){
225           fDebugContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
226         }
227       }
228       else if(histogramString.Contains("Resolution")){// means it should be put in the resolution folder
229         if(fResolutionContainer == NULL){
230           fResolutionContainer = new TList();
231           fResolutionContainer->SetOwner(kTRUE);
232           fResolutionContainer->SetName("Resolution histograms");
233         }
234         if(fResolutionContainer != NULL){
235           fResolutionContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
236         }
237       }
238       else if(histogramString.Contains("TrueConv")){// means it should be put in the true conv folder
239         if(fMatchContainer == NULL){
240           fMatchContainer = new TList();
241           fMatchContainer->SetOwner(kTRUE);
242           fMatchContainer->SetName("True conversion histograms");
243         }
244         if(fMatchContainer != NULL){
245           fMatchContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
246         }
247       }
248       else if(histogramString.Contains("ESD")){// means it should be put in the ESD folder
249         if(fESDContainer == NULL){
250           fESDContainer = new TList();
251           fESDContainer->SetOwner(kTRUE);
252           fESDContainer->SetName("ESD histograms");
253         }
254         if(fESDContainer != NULL){
255           fESDContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
256         }
257       }
258       else if(histogramString.Contains("MC")){// means it should be put in the MC folder
259         if(fMCContainer == NULL){
260           fMCContainer = new TList();
261           fMCContainer->SetOwner(kTRUE);
262           fMCContainer->SetName("MC histograms");
263         }
264         if(fMCContainer != NULL){
265           fMCContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
266         }
267       }
268       else if(histogramString.Contains("Table")){// means it should be put in the Table Folder
269         if(fTableContainer == NULL){
270            fTableContainer = new TList();
271            fTableContainer->SetOwner(kTRUE);
272            fTableContainer->SetName("Tables");
273         }
274         if(fTableContainer != NULL){
275            fTableContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
276         }
277       }                 
278       else{
279         if(fOtherContainer == NULL){
280           fOtherContainer = new TList();
281           fOtherContainer->SetOwner(kTRUE);
282           fOtherContainer->SetName("Other histograms");
283         }
284         if(fOtherContainer != NULL){
285           fOtherContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
286         }
287       }
288       histogramName = NULL;
289     } // end while
290     if(fMappingContainer != NULL){
291       fOutputContainer->Add(fMappingContainer);
292     }
293     if(fBackgroundContainer != NULL){
294       fOutputContainer->Add(fBackgroundContainer);
295     }
296     if(fDebugContainer != NULL){
297       fOutputContainer->Add(fDebugContainer);
298     }
299     if(fResolutionContainer != NULL){
300       fOutputContainer->Add(fResolutionContainer);
301     }
302     if(fMatchContainer != NULL){
303       fOutputContainer->Add(fMatchContainer);
304     }
305     if(fESDContainer != NULL){
306       fOutputContainer->Add(fESDContainer);
307     }
308     if(fMCContainer != NULL){
309       fOutputContainer->Add(fMCContainer);
310     }
311     if(fTableContainer !=  NULL){
312        fOutputContainer->Add(fTableContainer);  
313     }           
314     if(fOtherContainer != NULL){
315       fOutputContainer->Add(fOtherContainer);
316     }
317   }
318 }
319
320 Int_t AliGammaConversionHistograms::GetRBin(Double_t radius) const{
321   // see header file for documentation
322   Int_t iResult=0;
323 //   if(fDeltaR>0){
324 //     iResult = (Int_t)((radius - fMinRadius)/fDeltaR);
325 //   }
326   for(Int_t i=0;i<fNRIndex;i++){
327     //    cout<<"Test-limits::"<< fRBinLimits[i]<<endl;
328     if( radius>=fRBinLimits[i] && radius<fRBinLimits[i+1] ){
329       iResult=i;
330     }
331   }
332   return iResult;
333 }
334
335 Int_t AliGammaConversionHistograms::GetZBin(Double_t zPos) const{
336   // see header file for documentation
337   Int_t iResult=0;
338
339   for(Int_t i=0;i<fNZIndex;i++){
340     //    cout<<"Test-limits::"<< fZBinLimits[i]<<endl;
341     if( TMath::Abs(zPos)>=fZBinLimits[i] && TMath::Abs(zPos)<fZBinLimits[i+1] ){
342       iResult=i;
343     }
344   }
345   return iResult;
346 }
347
348
349
350 Int_t AliGammaConversionHistograms::GetPhiBin(Double_t phi) const{
351   // see header file for documentation
352   Int_t iResult=0;
353   if(fDeltaPhi>0){
354     if(phi>TMath::Pi()){
355       phi-=2*TMath::Pi();
356     }
357     iResult = (Int_t)((phi - fMinPhi)/fDeltaPhi);
358   }
359   return iResult;
360 }
361
362
363
364 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){
365   // Initializing the valuse for the mapping
366         
367   fNPhiIndex = nPhiIndex;
368   fNRIndex   = nRIndex;
369   fNZIndex = 6;
370
371   //  fRBinLimits= new Double_t[8];   Kenneth: moved from pointer to fixed array
372   /*
373   fRBinLimits[0]=0.;
374   fRBinLimits[1]=13.;   //changed from 12 to 13: A. Marin 01.03.10
375   fRBinLimits[2]=21.;   //changed from 22 to 21: A. Marin 01.03.10 
376   fRBinLimits[3]=35.;
377   fRBinLimits[4]=55.;
378   fRBinLimits[5]=72.;
379   fRBinLimits[6]=90.;
380   fRBinLimits[7]=500.;
381   */
382
383   fRBinLimits[0]=0.;
384   fRBinLimits[1]=5.75;
385   fRBinLimits[2]=9.5;
386   fRBinLimits[3]=13.;
387   fRBinLimits[4]=21.;
388   fRBinLimits[5]=27.5;
389   fRBinLimits[6]=35.;
390   fRBinLimits[7]=42.;
391   fRBinLimits[8]=55.;
392   fRBinLimits[9]=72.;
393   fRBinLimits[10]=81.5;
394   fRBinLimits[11]=90.;
395   fRBinLimits[12]=500.;
396
397
398
399   //  fZBinLimits= new Double_t[7]; Kenneth: moved from pointer to fixed array
400   fZBinLimits[0]=0.;
401   fZBinLimits[1]=15.;
402   fZBinLimits[2]=30.;
403   fZBinLimits[3]=50.;
404   fZBinLimits[4]=100.;
405   fZBinLimits[5]=200.;
406   fZBinLimits[6]=500.;
407
408
409   fMinRadius      = minRadius;
410   fMaxRadius      = maxRadius;
411   if(nBinsR>0 && nRIndex!=0){
412     fDeltaR       = (fMaxRadius - fMinRadius)/nRIndex;
413   }
414   fMinPhi         = minPhi;
415   fMaxPhi         = maxPhi;
416   if(nBinsPhi>0 && nPhiIndex!=0){
417     fDeltaPhi     = (fMaxPhi-fMinPhi)/nPhiIndex;
418   }
419 }
420
421
422 //mapping
423 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){
424   // see header file for documentation
425
426   Double_t tmptogetridofwarning = firstX + lastX + nYBins + firstY + lastY;
427   if(tmptogetridofwarning < 0){
428     cout<<"Less than zero"<<endl;
429   }
430         
431   for(Int_t phi =0; phi<fNPhiIndex;phi++){
432                 
433     for(Int_t r =0; r<fNRIndex;r++){
434                         
435       // setting axis to "" changes below
436       xAxisTitle="z [cm]";
437       yAxisTitle="#eta";
438           
439       //Creating the axis titles
440       //if(xAxisTitle.Length() == 0){
441         //xAxisTitle.Form("Phi %02d",phi);
442          //      }
443                         
444       //if(yAxisTitle.Length() == 0){
445         //yAxisTitle.Form("R %02d",phi);
446                 // }
447                         
448       //MC
449       TString nameMC="";
450       nameMC.Form("MC_Conversion_Mapping_Phi%02d_R%02d",phi,r);
451       TString titleMC="";
452       titleMC.Form("Electron-Positron MC Mapping-Phi%02d-R%02d",phi,r);
453                         
454       //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
455                         
456       //ESD
457       TString nameESD="";
458       nameESD.Form("ESD_Conversion_Mapping_Phi%02d_R%02d",phi,r);
459       TString titleESD="";
460       titleESD.Form("Electron-Positron ESD Mapping-Phi%02d-R%02d",phi,r);
461                         
462       //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
463     }
464   }
465         
466         
467   for(Int_t phi =0; phi<=nPhiIndex;phi++){ 
468                 
469     // setting axis to "" changes below
470      xAxisTitle="z [cm]";
471       yAxisTitle="#eta";
472    //Creating the axis titles
473     //if(xAxisTitle.Length() == 0){
474     //  xAxisTitle.Form("Phi %02d",phi);
475     //}
476     //if(yAxisTitle.Length() == 0){
477     //  yAxisTitle = "Counts";
478     //}
479                 
480     //MC
481     TString nameMC="";
482     nameMC.Form("MC_Conversion_Mapping_Phi%02d",phi);
483     TString titleMC="";
484     titleMC.Form("Electron-Positron MC Mapping-Phi%02d",phi);
485                 
486     //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
487                 
488     //MC
489     TString nameESD="";
490     nameESD.Form("ESD_Conversion_Mapping_Phi%02d",phi);
491     TString titleESD="";
492     titleESD.Form("Electron-Positron ESD Mapping-Phi%02d",phi);
493                 
494     // AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
495   }
496         
497         
498   for(Int_t r =0; r<nRIndex;r++){
499                 
500     // setting axis to "" changes below
501     xAxisTitle="#phi";
502     yAxisTitle="counts";
503     //Creating the axis titles
504     //if(xAxisTitle.Length() == 0){
505     //  xAxisTitle.Form("R %02d",r);
506     //}
507     //if(yAxisTitle.Length() == 0){
508     //  yAxisTitle = "Counts";
509     //}
510                 
511     //MC
512     TString nameMC="";
513     nameMC.Form("MC_Conversion_Mapping_R%02d",r);
514     TString titleMC="";
515     titleMC.Form("Electron-Positron MC Mapping-R%02d",r);
516                 
517     // AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
518                 
519     //ESD
520     TString nameESD="";
521     nameESD.Form("ESD_Conversion_Mapping_R%02d",r);
522     TString titleESD="";
523     titleESD.Form("Electron-Positron ESD Mapping-R%02d",r);
524                 
525     //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
526                 
527     //Mapping Phi in R
528     TString nameMCPhiInR="";
529     nameMCPhiInR.Form("MC_Conversion_Mapping_Phi_in_R_%02d",r);
530     TString titleMCPhiInR="";
531     titleMCPhiInR.Form("MC Mapping of Phi in R%02d",r);
532     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
533     AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
534                 
535
536     //Mapping Z in R
537     TString nameMCZInR="";
538     nameMCZInR.Form("MC_Conversion_Mapping_Z_in_R_%02d",r);
539     TString titleMCZInR="";
540     titleMCZInR.Form("MC Mapping of Z in R%02d",r);
541     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
542     AddHistogram(nameMCZInR, titleMCZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);
543
544
545    //Mapping Phi in R Middle Pt
546     TString nameMCMidPtPhiInR="";
547     nameMCMidPtPhiInR.Form("MC_Conversion_Mapping_MidPt_Phi_in_R_%02d",r);
548     TString titleMCMidPtPhiInR="";
549     titleMCMidPtPhiInR.Form("MC Mapping Middle Pt of Phi in R%02d",r);
550     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
551     AddHistogram(nameMCMidPtPhiInR, titleMCMidPtPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
552                 
553
554     //Mapping Z in R Middle Pt
555     TString nameMCMidPtZInR="";
556     nameMCMidPtZInR.Form("MC_Conversion_Mapping_MidPt_Z_in_R_%02d",r);
557     TString titleMCMidPtZInR="";
558     titleMCMidPtZInR.Form("MC Mapping Middle Pt of Z in R%02d",r);
559     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
560     AddHistogram(nameMCMidPtZInR, titleMCMidPtZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);
561
562
563
564
565     //Mapping Phi in R
566     TString nameESDPhiInR="";
567     nameESDPhiInR.Form("ESD_Conversion_Mapping_Phi_in_R_%02d",r);
568     TString titleESDPhiInR="";
569     titleESDPhiInR.Form("ESD Mapping of Phi in R%02d",r);
570     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
571     AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
572
573    //Mapping Z in R
574     TString nameESDZInR="";
575     nameESDZInR.Form("ESD_Conversion_Mapping_Z_in_R_%02d",r);
576     TString titleESDZInR="";
577     titleESDZInR.Form("ESD Mapping of Z in R%02d",r);
578     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
579     AddHistogram(nameESDZInR, titleESDZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);    
580
581     //Mapping Phi in R Middle Pt 
582     TString nameESDMidPtPhiInR="";
583     nameESDMidPtPhiInR.Form("ESD_Conversion_Mapping_MidPt_Phi_in_R_%02d",r);
584     TString titleESDMidPtPhiInR="";
585     titleESDMidPtPhiInR.Form("ESD Mapping Middle Pt of Phi in R%02d",r);
586     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
587     AddHistogram(nameESDMidPtPhiInR, titleESDMidPtPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
588
589    //Mapping Z in R Middle Pt
590     TString nameESDMidPtZInR="";
591     nameESDMidPtZInR.Form("ESD_Conversion_Mapping_MidPt_Z_in_R_%02d",r);
592     TString titleESDMidPtZInR="";
593     titleESDMidPtZInR.Form("ESD Mapping Middle Pt of Z in R%02d",r);
594     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
595     AddHistogram(nameESDMidPtZInR, titleESDMidPtZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);    
596
597
598  
599   }
600
601
602
603   for(Int_t z =0; z<fNZIndex;z++){
604     //Mapping Phi in Z
605     TString nameMCPhiInZ="";
606     nameMCPhiInZ.Form("MC_Conversion_Mapping_Phi_in_Z_%02d",z);
607     TString titleMCPhiInZ="";
608     titleMCPhiInZ.Form("MC Mapping of Phi in Z%02d",z);
609     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
610     AddHistogram(nameMCPhiInZ, titleMCPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
611                 
612
613     //Mapping R in Z
614     TString nameMCRInZ="";
615     nameMCRInZ.Form("MC_Conversion_Mapping_R_in_Z_%02d",z);
616     TString titleMCRInZ="";
617     titleMCRInZ.Form("MC Mapping of R in Z%02d",z);
618     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
619     AddHistogram(nameMCRInZ, titleMCRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);
620
621    //Mapping Phi in Z Middle Pt
622     TString nameMCMidPtPhiInZ="";
623     nameMCMidPtPhiInZ.Form("MC_Conversion_Mapping_MidPt_Phi_in_Z_%02d",z);
624     TString titleMCMidPtPhiInZ="";
625     titleMCMidPtPhiInZ.Form("MC Mapping Middle Pt of Phi in Z%02d",z);
626     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
627     AddHistogram(nameMCMidPtPhiInZ, titleMCMidPtPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
628                 
629
630     //Mapping R in Z Middle Pt
631     TString nameMCMidPtRInZ="";
632     nameMCMidPtRInZ.Form("MC_Conversion_Mapping_MidPt_R_in_Z_%02d",z);
633     TString titleMCMidPtRInZ="";
634     titleMCMidPtRInZ.Form("MC Mapping Middle Pt of R in Z%02d",z);
635     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
636     AddHistogram(nameMCMidPtRInZ, titleMCMidPtRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);
637
638
639
640
641     //Mapping Phi in Z
642     TString nameESDPhiInZ="";
643     nameESDPhiInZ.Form("ESD_Conversion_Mapping_Phi_in_Z_%02d",z);
644     TString titleESDPhiInZ="";
645     titleESDPhiInZ.Form("ESD Mapping of Phi in R%02d",z);
646     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
647     AddHistogram(nameESDPhiInZ, titleESDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
648
649    //Mapping R in Z
650     TString nameESDRInZ="";
651     nameESDRInZ.Form("ESD_Conversion_Mapping_R_in_Z_%02d",z);
652     TString titleESDRInZ="";
653     titleESDRInZ.Form("ESD Mapping of R in Z%02d",z);
654     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
655     AddHistogram(nameESDRInZ, titleESDRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);    
656
657
658    //Mapping Phi in Z Middle Pt
659     TString nameESDMidPtPhiInZ="";
660     nameESDMidPtPhiInZ.Form("ESD_Conversion_Mapping_MidPt_Phi_in_Z_%02d",z);
661     TString titleESDMidPtPhiInZ="";
662     titleESDMidPtPhiInZ.Form("ESD Mapping Middle Ptof Phi in R%02d",z);
663     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
664     AddHistogram(nameESDMidPtPhiInZ, titleESDMidPtPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
665
666    //Mapping R in Z Middle Pt
667     TString nameESDMidPtRInZ="";
668     nameESDMidPtRInZ.Form("ESD_Conversion_Mapping_MidPt_R_in_Z_%02d",z);
669     TString titleESDMidPtRInZ="";
670     titleESDMidPtRInZ.Form("ESD Mapping Middle Pt of R in Z%02d",z);
671     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
672     AddHistogram(nameESDMidPtRInZ, titleESDMidPtRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);    
673
674
675
676   }
677
678
679
680 }