]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/GammaConv/AliGammaConversionHistograms.cxx
Added functionality to also process calorimeter data + some changes in cuts (Ana)
[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<14;i++){
61     fRBinLimits[i]=0.;
62   }
63   for(Int_t i=0;i<12;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<14;i++){
94     fRBinLimits[i]= original.fRBinLimits[i];
95   }
96   for(Int_t i=0;i<12;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( zPos>=fZBinLimits[i] && 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 = 13;
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]=3.5;
385   fRBinLimits[2]=5.75;
386   fRBinLimits[3]=9.5;
387   fRBinLimits[4]=13.;
388   fRBinLimits[5]=21.;
389   fRBinLimits[6]=27.5;
390   fRBinLimits[7]=35.;
391   fRBinLimits[8]=42.;
392   fRBinLimits[9]=55.;
393   fRBinLimits[10]=72.;
394   fRBinLimits[11]=81.5;
395   fRBinLimits[12]=90.;
396   fRBinLimits[13]=500.;
397
398
399
400   //  fZBinLimits= new Double_t[7]; Kenneth: moved from pointer to fixed array
401   fZBinLimits[0]=-500.;
402   fZBinLimits[1]=-200.;
403   fZBinLimits[2]=-100.;
404   fZBinLimits[3]=-50.;
405   fZBinLimits[4]=-30.;
406   fZBinLimits[5]=-15.;
407   fZBinLimits[6]= 0.;
408   fZBinLimits[7]= 15.;
409   fZBinLimits[8]= 30.;
410   fZBinLimits[9]= 50.;
411   fZBinLimits[10]=100.;
412   fZBinLimits[11]=200.;
413   fZBinLimits[12]=500.;
414
415
416   fMinRadius      = minRadius;
417   fMaxRadius      = maxRadius;
418   if(nBinsR>0 && nRIndex!=0){
419     fDeltaR       = (fMaxRadius - fMinRadius)/nRIndex;
420   }
421   fMinPhi         = minPhi;
422   fMaxPhi         = maxPhi;
423   if(nBinsPhi>0 && nPhiIndex!=0){
424     fDeltaPhi     = (fMaxPhi-fMinPhi)/nPhiIndex;
425   }
426 }
427
428
429 //mapping
430 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){
431   // see header file for documentation
432
433   Double_t tmptogetridofwarning = firstX + lastX + nYBins + firstY + lastY;
434   if(tmptogetridofwarning < 0){
435     cout<<"Less than zero"<<endl;
436   }
437         
438   for(Int_t phi =0; phi<fNPhiIndex;phi++){
439                 
440     for(Int_t r =0; r<fNRIndex;r++){
441                         
442       // setting axis to "" changes below
443       xAxisTitle="z [cm]";
444       yAxisTitle="#eta";
445           
446       //Creating the axis titles
447       //if(xAxisTitle.Length() == 0){
448         //xAxisTitle.Form("Phi %02d",phi);
449          //      }
450                         
451       //if(yAxisTitle.Length() == 0){
452         //yAxisTitle.Form("R %02d",phi);
453                 // }
454                         
455       //MC
456       TString nameMC="";
457       nameMC.Form("MC_Conversion_Mapping_Phi%02d_R%02d",phi,r);
458       TString titleMC="";
459       titleMC.Form("Electron-Positron MC Mapping-Phi%02d-R%02d",phi,r);
460                         
461       //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
462                         
463       //ESD
464       TString nameESD="";
465       nameESD.Form("ESD_Conversion_Mapping_Phi%02d_R%02d",phi,r);
466       TString titleESD="";
467       titleESD.Form("Electron-Positron ESD Mapping-Phi%02d-R%02d",phi,r);
468                         
469       //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
470     }
471   }
472         
473         
474   for(Int_t phi =0; phi<=nPhiIndex;phi++){ 
475                 
476     // setting axis to "" changes below
477      xAxisTitle="z [cm]";
478       yAxisTitle="#eta";
479    //Creating the axis titles
480     //if(xAxisTitle.Length() == 0){
481     //  xAxisTitle.Form("Phi %02d",phi);
482     //}
483     //if(yAxisTitle.Length() == 0){
484     //  yAxisTitle = "Counts";
485     //}
486                 
487     //MC
488     TString nameMC="";
489     nameMC.Form("MC_Conversion_Mapping_Phi%02d",phi);
490     TString titleMC="";
491     titleMC.Form("Electron-Positron MC Mapping-Phi%02d",phi);
492                 
493     //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
494                 
495     //MC
496     TString nameESD="";
497     nameESD.Form("ESD_Conversion_Mapping_Phi%02d",phi);
498     TString titleESD="";
499     titleESD.Form("Electron-Positron ESD Mapping-Phi%02d",phi);
500                 
501     // AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
502   }
503         
504         
505   for(Int_t r =0; r<nRIndex;r++){
506                 
507     // setting axis to "" changes below
508     xAxisTitle="#phi";
509     yAxisTitle="counts";
510     //Creating the axis titles
511     //if(xAxisTitle.Length() == 0){
512     //  xAxisTitle.Form("R %02d",r);
513     //}
514     //if(yAxisTitle.Length() == 0){
515     //  yAxisTitle = "Counts";
516     //}
517                 
518     //MC
519     TString nameMC="";
520     nameMC.Form("MC_Conversion_Mapping_R%02d",r);
521     TString titleMC="";
522     titleMC.Form("Electron-Positron MC Mapping-R%02d",r);
523                 
524     // AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
525                 
526     //ESD
527     TString nameESD="";
528     nameESD.Form("ESD_Conversion_Mapping_R%02d",r);
529     TString titleESD="";
530     titleESD.Form("Electron-Positron ESD Mapping-R%02d",r);
531                 
532     //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
533                 
534     //Mapping Phi in R
535     TString nameMCPhiInR="";
536     nameMCPhiInR.Form("MC_Conversion_Mapping_Phi_in_R_%02d",r);
537     TString titleMCPhiInR="";
538     titleMCPhiInR.Form("MC Mapping of Phi in R%02d",r);
539     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
540     AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
541                 
542
543     //Mapping Z in R
544     TString nameMCZInR="";
545     nameMCZInR.Form("MC_Conversion_Mapping_Z_in_R_%02d",r);
546     TString titleMCZInR="";
547     titleMCZInR.Form("MC Mapping of Z in R%02d",r);
548     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
549     AddHistogram(nameMCZInR, titleMCZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);
550
551
552    //Mapping Phi in R Middle Pt
553     TString nameMCMidPtPhiInR="";
554     nameMCMidPtPhiInR.Form("MC_Conversion_Mapping_MidPt_Phi_in_R_%02d",r);
555     TString titleMCMidPtPhiInR="";
556     titleMCMidPtPhiInR.Form("MC Mapping Middle Pt of Phi in R%02d",r);
557     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
558     AddHistogram(nameMCMidPtPhiInR, titleMCMidPtPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
559                 
560
561     //Mapping Z in R Middle Pt
562     TString nameMCMidPtZInR="";
563     nameMCMidPtZInR.Form("MC_Conversion_Mapping_MidPt_Z_in_R_%02d",r);
564     TString titleMCMidPtZInR="";
565     titleMCMidPtZInR.Form("MC Mapping Middle Pt of Z in R%02d",r);
566     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
567     AddHistogram(nameMCMidPtZInR, titleMCMidPtZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);
568
569
570
571
572     //Mapping Phi in R
573     TString nameESDPhiInR="";
574     nameESDPhiInR.Form("ESD_Conversion_Mapping_Phi_in_R_%02d",r);
575     TString titleESDPhiInR="";
576     titleESDPhiInR.Form("ESD Mapping of Phi in R%02d",r);
577     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
578     AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
579
580    //Mapping Z in R
581     TString nameESDZInR="";
582     nameESDZInR.Form("ESD_Conversion_Mapping_Z_in_R_%02d",r);
583     TString titleESDZInR="";
584     titleESDZInR.Form("ESD Mapping of Z in R%02d",r);
585     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
586     AddHistogram(nameESDZInR, titleESDZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);    
587
588     //Mapping Phi in R Middle Pt 
589     TString nameESDMidPtPhiInR="";
590     nameESDMidPtPhiInR.Form("ESD_Conversion_Mapping_MidPt_Phi_in_R_%02d",r);
591     TString titleESDMidPtPhiInR="";
592     titleESDMidPtPhiInR.Form("ESD Mapping Middle Pt of Phi in R%02d",r);
593     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
594     AddHistogram(nameESDMidPtPhiInR, titleESDMidPtPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
595
596    //Mapping Z in R Middle Pt
597     TString nameESDMidPtZInR="";
598     nameESDMidPtZInR.Form("ESD_Conversion_Mapping_MidPt_Z_in_R_%02d",r);
599     TString titleESDMidPtZInR="";
600     titleESDMidPtZInR.Form("ESD Mapping Middle Pt of Z in R%02d",r);
601     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
602     AddHistogram(nameESDMidPtZInR, titleESDMidPtZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);    
603
604
605  
606   }
607
608
609
610   for(Int_t z =0; z<fNZIndex;z++){
611     //Mapping Phi in Z
612     TString nameMCPhiInZ="";
613     nameMCPhiInZ.Form("MC_Conversion_Mapping_Phi_in_Z_%02d",z);
614     TString titleMCPhiInZ="";
615     titleMCPhiInZ.Form("MC Mapping of Phi in Z%02d",z);
616     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
617     AddHistogram(nameMCPhiInZ, titleMCPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
618                 
619
620     //Mapping R in Z
621     TString nameMCRInZ="";
622     nameMCRInZ.Form("MC_Conversion_Mapping_R_in_Z_%02d",z);
623     TString titleMCRInZ="";
624     titleMCRInZ.Form("MC Mapping of R in Z%02d",z);
625     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
626     AddHistogram(nameMCRInZ, titleMCRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);
627
628    //Mapping Phi in Z Middle Pt
629     TString nameMCMidPtPhiInZ="";
630     nameMCMidPtPhiInZ.Form("MC_Conversion_Mapping_MidPt_Phi_in_Z_%02d",z);
631     TString titleMCMidPtPhiInZ="";
632     titleMCMidPtPhiInZ.Form("MC Mapping Middle Pt of Phi in Z%02d",z);
633     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
634     AddHistogram(nameMCMidPtPhiInZ, titleMCMidPtPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
635                 
636
637     //Mapping R in Z Middle Pt
638     TString nameMCMidPtRInZ="";
639     nameMCMidPtRInZ.Form("MC_Conversion_Mapping_MidPt_R_in_Z_%02d",z);
640     TString titleMCMidPtRInZ="";
641     titleMCMidPtRInZ.Form("MC Mapping Middle Pt of R in Z%02d",z);
642     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
643     AddHistogram(nameMCMidPtRInZ, titleMCMidPtRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);
644
645
646
647
648     //Mapping Phi in Z
649     TString nameESDPhiInZ="";
650     nameESDPhiInZ.Form("ESD_Conversion_Mapping_Phi_in_Z_%02d",z);
651     TString titleESDPhiInZ="";
652     titleESDPhiInZ.Form("ESD Mapping of Phi in R%02d",z);
653     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
654     AddHistogram(nameESDPhiInZ, titleESDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
655
656    //Mapping R in Z
657     TString nameESDRInZ="";
658     nameESDRInZ.Form("ESD_Conversion_Mapping_R_in_Z_%02d",z);
659     TString titleESDRInZ="";
660     titleESDRInZ.Form("ESD Mapping of R in Z%02d",z);
661     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
662     AddHistogram(nameESDRInZ, titleESDRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);    
663
664
665    //Mapping Phi in Z Middle Pt
666     TString nameESDMidPtPhiInZ="";
667     nameESDMidPtPhiInZ.Form("ESD_Conversion_Mapping_MidPt_Phi_in_Z_%02d",z);
668     TString titleESDMidPtPhiInZ="";
669     titleESDMidPtPhiInZ.Form("ESD Mapping Middle Ptof Phi in R%02d",z);
670     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
671     AddHistogram(nameESDMidPtPhiInZ, titleESDMidPtPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
672
673    //Mapping R in Z Middle Pt
674     TString nameESDMidPtRInZ="";
675     nameESDMidPtRInZ.Form("ESD_Conversion_Mapping_MidPt_R_in_Z_%02d",z);
676     TString titleESDMidPtRInZ="";
677     titleESDMidPtRInZ.Form("ESD Mapping Middle Pt of R in Z%02d",z);
678     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
679     AddHistogram(nameESDMidPtRInZ, titleESDMidPtRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);    
680
681
682
683   }
684
685
686
687 }