]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/GammaConv/AliGammaConversionHistograms.cxx
IsHeavyIon flag, added Centrality Selection, Add mising Cut for Nch, extra histograms...
[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 #include "AliLog.h"
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, Int_t logAxis){
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     if(logAxis >= 0){
139       BinLogAxis(histogramName.Data(), logAxis);
140     }
141   }
142   else{
143     cout << "Warning: Histogram ( "<<histogramName.Data()<<" ) already exists " << endl;
144   }
145 }
146
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
201 void AliGammaConversionHistograms::AddTable(TString tableName,TString tableTitle,Int_t nXBins,const char * axesLabel[]){
202   //see header file for documentation
203
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;
216   }
217 }
218 void AliGammaConversionHistograms::AddTable(TString tableName,TString tableTitle,Int_t nXBins,const char * axesXLabel[],Int_t nYBins,const char * axesYLabel[]){
219   //see header file for documentation
220
221   if( fHistogramMap->Contains(tableName.Data()) ==  kFALSE ){
222     TH2F *tmp = new TH2F(tableName,tableTitle,nXBins,0,nXBins,nYBins,0,nYBins);
223     for(Int_t xbin=1; xbin<=nXBins; xbin++){
224       tmp->GetXaxis()->SetBinLabel(xbin,axesXLabel[xbin-1]);
225     }
226     for(Int_t ybin=1; ybin<=nYBins; ybin++){
227       tmp->GetYaxis()->SetBinLabel(ybin,axesYLabel[ybin-1]);
228     }
229     tmp->SetStats(0);
230     
231     TObjString *tobjstring = new TObjString(tableName.Data());
232     fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp);
233   }
234   else{
235     cout << "Warning: Table ( "<<tableName.Data()<<" ) already exists " << endl;
236   }
237 }
238 void AliGammaConversionHistograms::FillTable(TString tableName,Double_t xValue) const {
239   //see header file for documentation
240   TH1 *tmp = (TH1*)fHistogramMap->GetValue(tableName.Data());
241   if(tmp){
242     tmp->Fill(xValue);
243   }
244 }
245 void AliGammaConversionHistograms::FillTable(TString tableName,Double_t xValue,Double_t yValue) const {
246   //see header file for documentation
247   TH2 *tmp = (TH2*)fHistogramMap->GetValue(tableName.Data());
248   if(tmp){
249     tmp->Fill(xValue,yValue);
250   }
251 }
252 void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue) const{
253   //see header file for documentation
254   TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data());
255   if(tmp){
256     tmp->Fill(xValue);
257   }
258 }
259
260 void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue, Double_t yValue) const{
261   //see header file for documentation
262   TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data());
263   if(tmp){
264     tmp->Fill(xValue, yValue);
265   }
266 }
267
268
269 TObject* AliGammaConversionHistograms::GetValue(const TString& name)
270
271   //Get pointer to histogram with name
272   return fHistogramMap->GetValue(name.Data());
273 }
274
275 void AliGammaConversionHistograms::GetOutputContainer(TList *fOutputContainer){
276   //checking if the container is alrerady created
277         
278   if(fOutputContainer == NULL){
279     cout<<"WARNING: GetOutputContainer: output container object is NULL"<<endl;
280     return;
281   }
282
283   if(fHistogramMap != NULL){
284     TIter iter(fHistogramMap);
285     TObjString *histogramName;
286     while ((histogramName = (TObjString*) iter.Next())) {
287       TString histogramString = histogramName->GetString();
288       if(histogramString.Contains("Mapping")){// means it should be put in the mapping folder
289         if(fMappingContainer == NULL){
290           fMappingContainer = new TList();
291           fMappingContainer->SetOwner(kTRUE);
292           fMappingContainer->SetName("Mapping histograms");
293         }
294         if(fMappingContainer != NULL){
295           fMappingContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
296         }
297       }
298       else if(histogramString.Contains("Background")){// means it should be put in the background folder
299         if(fBackgroundContainer == NULL){
300           fBackgroundContainer = new TList();
301           fBackgroundContainer->SetOwner(kTRUE);
302           fBackgroundContainer->SetName("Background histograms");
303         }
304         if(fBackgroundContainer != NULL){
305           fBackgroundContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
306         }
307       }
308       else if(histogramString.Contains("Debug")){// means it should be put in the debug folder
309         if(fDebugContainer == NULL){
310           fDebugContainer = new TList();
311           fDebugContainer->SetOwner(kTRUE);
312           fDebugContainer->SetName("Debug histograms");
313         }
314         if(fDebugContainer != NULL){
315           fDebugContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
316         }
317       }
318       else if(histogramString.Contains("Resolution")){// means it should be put in the resolution folder
319         if(fResolutionContainer == NULL){
320           fResolutionContainer = new TList();
321           fResolutionContainer->SetOwner(kTRUE);
322           fResolutionContainer->SetName("Resolution histograms");
323         }
324         if(fResolutionContainer != NULL){
325           fResolutionContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
326         }
327       }
328       else if(histogramString.Contains("TrueConv")){// means it should be put in the true conv folder
329         if(fMatchContainer == NULL){
330           fMatchContainer = new TList();
331           fMatchContainer->SetOwner(kTRUE);
332           fMatchContainer->SetName("True conversion histograms");
333         }
334         if(fMatchContainer != NULL){
335           fMatchContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
336         }
337       }
338       else if(histogramString.Contains("ESD")){// means it should be put in the ESD folder
339         if(fESDContainer == NULL){
340           fESDContainer = new TList();
341           fESDContainer->SetOwner(kTRUE);
342           fESDContainer->SetName("ESD histograms");
343         }
344         if(fESDContainer != NULL){
345           fESDContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
346         }
347       }
348       else if(histogramString.Contains("MC")){// means it should be put in the MC folder
349         if(fMCContainer == NULL){
350           fMCContainer = new TList();
351           fMCContainer->SetOwner(kTRUE);
352           fMCContainer->SetName("MC histograms");
353         }
354         if(fMCContainer != NULL){
355           fMCContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
356         }
357       }
358       else if(histogramString.Contains("Table")){// means it should be put in the Table Folder
359         if(fTableContainer == NULL){
360            fTableContainer = new TList();
361            fTableContainer->SetOwner(kTRUE);
362            fTableContainer->SetName("Tables");
363         }
364         if(fTableContainer != NULL){
365            fTableContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
366         }
367       }                 
368       else{
369         if(fOtherContainer == NULL){
370           fOtherContainer = new TList();
371           fOtherContainer->SetOwner(kTRUE);
372           fOtherContainer->SetName("Other histograms");
373         }
374         if(fOtherContainer != NULL){
375           fOtherContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
376         }
377       }
378       histogramName = NULL;
379     } // end while
380     if(fMappingContainer != NULL){
381       fOutputContainer->Add(fMappingContainer);
382     }
383     if(fBackgroundContainer != NULL){
384       fOutputContainer->Add(fBackgroundContainer);
385     }
386     if(fDebugContainer != NULL){
387       fOutputContainer->Add(fDebugContainer);
388     }
389     if(fResolutionContainer != NULL){
390       fOutputContainer->Add(fResolutionContainer);
391     }
392     if(fMatchContainer != NULL){
393       fOutputContainer->Add(fMatchContainer);
394     }
395     if(fESDContainer != NULL){
396       fOutputContainer->Add(fESDContainer);
397     }
398     if(fMCContainer != NULL){
399       fOutputContainer->Add(fMCContainer);
400     }
401     if(fTableContainer !=  NULL){
402        fOutputContainer->Add(fTableContainer);  
403     }           
404     if(fOtherContainer != NULL){
405       fOutputContainer->Add(fOtherContainer);
406     }
407   }
408 }
409
410 Int_t AliGammaConversionHistograms::GetRBin(Double_t radius) const{
411   // see header file for documentation
412   Int_t iResult=0;
413 //   if(fDeltaR>0){
414 //     iResult = (Int_t)((radius - fMinRadius)/fDeltaR);
415 //   }
416   for(Int_t i=0;i<fNRIndex;i++){
417     //    cout<<"Test-limits::"<< fRBinLimits[i]<<endl;
418     if( radius>=fRBinLimits[i] && radius<fRBinLimits[i+1] ){
419       iResult=i;
420     }
421   }
422   return iResult;
423 }
424
425 Int_t AliGammaConversionHistograms::GetZBin(Double_t zPos) const{
426   // see header file for documentation
427   Int_t iResult=0;
428
429   for(Int_t i=0;i<fNZIndex;i++){
430     //    cout<<"Test-limits::"<< fZBinLimits[i]<<endl;
431     if( zPos>=fZBinLimits[i] && zPos<fZBinLimits[i+1] ){
432       iResult=i;
433     }
434   }
435   return iResult;
436 }
437
438
439
440 Int_t AliGammaConversionHistograms::GetPhiBin(Double_t phi) const{
441   // see header file for documentation
442   Int_t iResult=0;
443   if(fDeltaPhi>0){
444     if(phi>TMath::Pi()){
445       phi-=2*TMath::Pi();
446     }
447     iResult = (Int_t)((phi - fMinPhi)/fDeltaPhi);
448   }
449   return iResult;
450 }
451
452
453
454 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){
455   // Initializing the valuse for the mapping
456         
457   fNPhiIndex = nPhiIndex;
458   if(nRIndex<=14){
459     fNRIndex   = nRIndex;
460   }else{
461     fNRIndex=14;
462   }
463
464   fNZIndex = 13;
465
466   //  fRBinLimits= new Double_t[8];   Kenneth: moved from pointer to fixed array
467   /*
468   fRBinLimits[0]=0.;
469   fRBinLimits[1]=13.;   //changed from 12 to 13: A. Marin 01.03.10
470   fRBinLimits[2]=21.;   //changed from 22 to 21: A. Marin 01.03.10 
471   fRBinLimits[3]=35.;
472   fRBinLimits[4]=55.;
473   fRBinLimits[5]=72.;
474   fRBinLimits[6]=90.;
475   fRBinLimits[7]=500.;
476   */
477
478   fRBinLimits[0]=0.;
479   fRBinLimits[1]=3.5;
480   fRBinLimits[2]=5.75;
481   fRBinLimits[3]=9.5;
482   fRBinLimits[4]=13.;
483   fRBinLimits[5]=21.;
484   fRBinLimits[6]=27.5;
485   fRBinLimits[7]=35.;
486   fRBinLimits[8]=42.;
487   fRBinLimits[9]=55.;
488   fRBinLimits[10]=72.;
489   fRBinLimits[11]=79.5; // change from 81.5 to 79.5 to have CE in 1 r bin 81.05
490   fRBinLimits[12]=90.;
491   fRBinLimits[13]=500.;
492
493
494
495   //  fZBinLimits= new Double_t[7]; Kenneth: moved from pointer to fixed array
496   fZBinLimits[0]=-500.;
497   fZBinLimits[1]=-200.;
498   fZBinLimits[2]=-100.;
499   fZBinLimits[3]=-50.;
500   fZBinLimits[4]=-30.;
501   fZBinLimits[5]=-15.;
502   fZBinLimits[6]= 0.;
503   fZBinLimits[7]= 15.;
504   fZBinLimits[8]= 30.;
505   fZBinLimits[9]= 50.;
506   fZBinLimits[10]=100.;
507   fZBinLimits[11]=200.;
508   fZBinLimits[12]=500.;
509
510
511   fMinRadius      = minRadius;
512   fMaxRadius      = maxRadius;
513   if(nBinsR>0 && nRIndex!=0){
514     fDeltaR       = (fMaxRadius - fMinRadius)/nRIndex;
515   }
516   fMinPhi         = minPhi;
517   fMaxPhi         = maxPhi;
518   if(nBinsPhi>0 && nPhiIndex!=0){
519     fDeltaPhi     = (fMaxPhi-fMinPhi)/nPhiIndex;
520   }
521 }
522
523
524 //mapping
525 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){
526   // see header file for documentation
527
528   Double_t tmptogetridofwarning = firstX + lastX + nYBins + firstY + lastY;
529   if(tmptogetridofwarning < 0){
530     cout<<"Less than zero"<<endl;
531   }
532         
533   for(Int_t phi =0; phi<fNPhiIndex;phi++){
534                 
535     for(Int_t r =0; r<fNRIndex;r++){
536                         
537       // setting axis to "" changes below
538       xAxisTitle="z [cm]";
539       yAxisTitle="#eta";
540           
541       //Creating the axis titles
542       //if(xAxisTitle.Length() == 0){
543         //xAxisTitle.Form("Phi %02d",phi);
544          //      }
545                         
546       //if(yAxisTitle.Length() == 0){
547         //yAxisTitle.Form("R %02d",phi);
548                 // }
549                         
550       //MC
551       TString nameMC="";
552       nameMC.Form("MC_Conversion_Mapping_Phi%02d_R%02d",phi,r);
553       TString titleMC="";
554       titleMC.Form("Electron-Positron MC Mapping-Phi%02d-R%02d",phi,r);
555                         
556       //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
557                         
558       //ESD
559       TString nameESD="";
560       nameESD.Form("ESD_Conversion_Mapping_Phi%02d_R%02d",phi,r);
561       TString titleESD="";
562       titleESD.Form("Electron-Positron ESD Mapping-Phi%02d-R%02d",phi,r);
563                         
564       //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
565     }
566   }
567         
568         
569   for(Int_t phi =0; phi<=nPhiIndex;phi++){ 
570                 
571     // setting axis to "" changes below
572      xAxisTitle="z [cm]";
573       yAxisTitle="#eta";
574    //Creating the axis titles
575     //if(xAxisTitle.Length() == 0){
576     //  xAxisTitle.Form("Phi %02d",phi);
577     //}
578     //if(yAxisTitle.Length() == 0){
579     //  yAxisTitle = "Counts";
580     //}
581                 
582     //MC
583     TString nameMC="";
584     nameMC.Form("MC_Conversion_Mapping_Phi%02d",phi);
585     TString titleMC="";
586     titleMC.Form("Electron-Positron MC Mapping-Phi%02d",phi);
587                 
588     //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
589                 
590     //MC
591     TString nameESD="";
592     nameESD.Form("ESD_Conversion_Mapping_Phi%02d",phi);
593     TString titleESD="";
594     titleESD.Form("Electron-Positron ESD Mapping-Phi%02d",phi);
595                 
596     // AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
597   }
598         
599         
600   for(Int_t r =0; r<nRIndex;r++){
601                 
602     // setting axis to "" changes below
603     xAxisTitle="#phi";
604     yAxisTitle="counts";
605     //Creating the axis titles
606     //if(xAxisTitle.Length() == 0){
607     //  xAxisTitle.Form("R %02d",r);
608     //}
609     //if(yAxisTitle.Length() == 0){
610     //  yAxisTitle = "Counts";
611     //}
612                 
613     //MC
614     TString nameMC="";
615     nameMC.Form("MC_Conversion_Mapping_R%02d",r);
616     TString titleMC="";
617     titleMC.Form("Electron-Positron MC Mapping-R%02d",r);
618                 
619     // AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
620                 
621     //ESD
622     TString nameESD="";
623     nameESD.Form("ESD_Conversion_Mapping_R%02d",r);
624     TString titleESD="";
625     titleESD.Form("Electron-Positron ESD Mapping-R%02d",r);
626                 
627     //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
628                 
629     //Mapping Phi in R
630     TString nameMCPhiInR="";
631     nameMCPhiInR.Form("MC_Conversion_Mapping_Phi_in_R_%02d",r);
632     TString titleMCPhiInR="";
633     titleMCPhiInR.Form("MC Mapping of Phi in R%02d",r);
634     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
635     AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
636                 
637
638     //Mapping Z in R
639     TString nameMCZInR="";
640     nameMCZInR.Form("MC_Conversion_Mapping_Z_in_R_%02d",r);
641     TString titleMCZInR="";
642     titleMCZInR.Form("MC Mapping of Z in R%02d",r);
643     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
644     AddHistogram(nameMCZInR, titleMCZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);
645
646
647    //Mapping Phi in R Middle Pt
648     TString nameMCMidPtPhiInR="";
649     nameMCMidPtPhiInR.Form("MC_Conversion_Mapping_MidPt_Phi_in_R_%02d",r);
650     TString titleMCMidPtPhiInR="";
651     titleMCMidPtPhiInR.Form("MC Mapping Middle Pt of Phi in R%02d",r);
652     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
653     AddHistogram(nameMCMidPtPhiInR, titleMCMidPtPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
654                 
655
656     //Mapping Z in R Middle Pt
657     TString nameMCMidPtZInR="";
658     nameMCMidPtZInR.Form("MC_Conversion_Mapping_MidPt_Z_in_R_%02d",r);
659     TString titleMCMidPtZInR="";
660     titleMCMidPtZInR.Form("MC Mapping Middle Pt of Z in R%02d",r);
661     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
662     AddHistogram(nameMCMidPtZInR, titleMCMidPtZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);
663
664
665
666
667     //Mapping Phi in R
668     TString nameESDPhiInR="";
669     nameESDPhiInR.Form("ESD_Conversion_Mapping_Phi_in_R_%02d",r);
670     TString titleESDPhiInR="";
671     titleESDPhiInR.Form("ESD Mapping of Phi in R%02d",r);
672     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
673     AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
674
675    //Mapping Z in R
676     TString nameESDZInR="";
677     nameESDZInR.Form("ESD_Conversion_Mapping_Z_in_R_%02d",r);
678     TString titleESDZInR="";
679     titleESDZInR.Form("ESD Mapping of Z in R%02d",r);
680     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
681     AddHistogram(nameESDZInR, titleESDZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);    
682
683     //Mapping Phi in R Middle Pt 
684     TString nameESDMidPtPhiInR="";
685     nameESDMidPtPhiInR.Form("ESD_Conversion_Mapping_MidPt_Phi_in_R_%02d",r);
686     TString titleESDMidPtPhiInR="";
687     titleESDMidPtPhiInR.Form("ESD Mapping Middle Pt of Phi in R%02d",r);
688     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
689     AddHistogram(nameESDMidPtPhiInR, titleESDMidPtPhiInR, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
690
691    //Mapping Z in R Middle Pt
692     TString nameESDMidPtZInR="";
693     nameESDMidPtZInR.Form("ESD_Conversion_Mapping_MidPt_Z_in_R_%02d",r);
694     TString titleESDMidPtZInR="";
695     titleESDMidPtZInR.Form("ESD Mapping Middle Pt of Z in R%02d",r);
696     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
697     AddHistogram(nameESDMidPtZInR, titleESDMidPtZInR, nXBins, -300, 300, xAxisTitle, yAxisTitle);    
698
699
700  
701   }
702
703
704
705   for(Int_t z =0; z<fNZIndex;z++){
706     //Mapping Phi in Z
707     TString nameMCPhiInZ="";
708     nameMCPhiInZ.Form("MC_Conversion_Mapping_Phi_in_Z_%02d",z);
709     TString titleMCPhiInZ="";
710     titleMCPhiInZ.Form("MC Mapping of Phi in Z%02d",z);
711     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
712     AddHistogram(nameMCPhiInZ, titleMCPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
713  
714     //Mapping Phi in Z for FMD
715     TString nameMCFMDPhiInZ="";
716     nameMCFMDPhiInZ.Form("MC_Conversion_Mapping_FMD_Phi_in_Z_%02d",z);
717     TString titleMCFMDPhiInZ="";
718     titleMCFMDPhiInZ.Form("MC Mapping FMD of Phi in Z%02d",z);
719     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
720     AddHistogram(nameMCFMDPhiInZ, titleMCFMDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
721                 
722     //Mapping Phi in Z for ITSTPC
723     TString nameMCITSTPCPhiInZ="";
724     nameMCITSTPCPhiInZ.Form("MC_Conversion_Mapping_ITSTPC_Phi_in_Z_%02d",z);
725     TString titleMCITSTPCPhiInZ="";
726     titleMCITSTPCPhiInZ.Form("MC Mapping ITSTPC of Phi in Z%02d",z);
727     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
728     AddHistogram(nameMCITSTPCPhiInZ, titleMCITSTPCPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
729
730
731     //Mapping R in Z
732     TString nameMCRInZ="";
733     nameMCRInZ.Form("MC_Conversion_Mapping_R_in_Z_%02d",z);
734     TString titleMCRInZ="";
735     titleMCRInZ.Form("MC Mapping of R in Z%02d",z);
736     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
737     AddHistogram(nameMCRInZ, titleMCRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);
738
739    //Mapping Phi in Z Middle Pt
740     TString nameMCMidPtPhiInZ="";
741     nameMCMidPtPhiInZ.Form("MC_Conversion_Mapping_MidPt_Phi_in_Z_%02d",z);
742     TString titleMCMidPtPhiInZ="";
743     titleMCMidPtPhiInZ.Form("MC Mapping Middle Pt of Phi in Z%02d",z);
744     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
745     AddHistogram(nameMCMidPtPhiInZ, titleMCMidPtPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
746                 
747    //Mapping Phi in Z Middle Pt for FMD
748     TString nameMCMidPtFMDPhiInZ="";
749     nameMCMidPtFMDPhiInZ.Form("MC_Conversion_Mapping_MidPt_FMD_Phi_in_Z_%02d",z);
750     TString titleMCMidPtFMDPhiInZ="";
751     titleMCMidPtFMDPhiInZ.Form("MC Mapping Middle Pt of Phi in Z%02d",z);
752     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
753     AddHistogram(nameMCMidPtFMDPhiInZ, titleMCMidPtFMDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);
754                 
755
756
757     //Mapping R in Z Middle Pt
758     TString nameMCMidPtRInZ="";
759     nameMCMidPtRInZ.Form("MC_Conversion_Mapping_MidPt_R_in_Z_%02d",z);
760     TString titleMCMidPtRInZ="";
761     titleMCMidPtRInZ.Form("MC Mapping Middle Pt of R in Z%02d",z);
762     //    AddHistogram(nameMCPhiInR, titleMCPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);
763     AddHistogram(nameMCMidPtRInZ, titleMCMidPtRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);
764
765
766
767
768     //Mapping Phi in Z
769     TString nameESDPhiInZ="";
770     nameESDPhiInZ.Form("ESD_Conversion_Mapping_Phi_in_Z_%02d",z);
771     TString titleESDPhiInZ="";
772     titleESDPhiInZ.Form("ESD Mapping of Phi in Z%02d",z);
773     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
774     AddHistogram(nameESDPhiInZ, titleESDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
775
776
777     //Mapping Phi in Z for FMD
778     TString nameESDFMDPhiInZ="";
779     nameESDFMDPhiInZ.Form("ESD_Conversion_Mapping_FMD_Phi_in_Z_%02d",z);
780     TString titleESDFMDPhiInZ="";
781     titleESDFMDPhiInZ.Form("ESD Mapping FMD of Phi in Z%02d",z);
782     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
783     AddHistogram(nameESDFMDPhiInZ, titleESDFMDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
784
785     //Mapping Phi in Z for ITSTPC
786     TString nameESDITSTPCPhiInZ="";
787     nameESDITSTPCPhiInZ.Form("ESD_Conversion_Mapping_ITSTPC_Phi_in_Z_%02d",z);
788     TString titleESDITSTPCPhiInZ="";
789     titleESDITSTPCPhiInZ.Form("ESD Mapping ITSTPC of Phi in Z%02d",z);
790     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
791     AddHistogram(nameESDITSTPCPhiInZ, titleESDITSTPCPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
792
793
794    //Mapping R in Z
795     TString nameESDRInZ="";
796     nameESDRInZ.Form("ESD_Conversion_Mapping_R_in_Z_%02d",z);
797     TString titleESDRInZ="";
798     titleESDRInZ.Form("ESD Mapping of R in Z%02d",z);
799     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
800     AddHistogram(nameESDRInZ, titleESDRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);    
801
802
803    //Mapping Phi in Z Middle Pt
804     TString nameESDMidPtPhiInZ="";
805     nameESDMidPtPhiInZ.Form("ESD_Conversion_Mapping_MidPt_Phi_in_Z_%02d",z);
806     TString titleESDMidPtPhiInZ="";
807     titleESDMidPtPhiInZ.Form("ESD Mapping Middle Ptof Phi in R%02d",z);
808     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
809     AddHistogram(nameESDMidPtPhiInZ, titleESDMidPtPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
810
811    //Mapping Phi in Z Middle Pt for FMD
812     TString nameESDMidPtFMDPhiInZ="";
813     nameESDMidPtFMDPhiInZ.Form("ESD_Conversion_Mapping_MidPt_FMD_Phi_in_Z_%02d",z);
814     TString titleESDMidPtFMDPhiInZ="";
815     titleESDMidPtFMDPhiInZ.Form("ESD Mapping Middle Pt FMD of Phi in Z%02d",z);
816     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
817     AddHistogram(nameESDMidPtFMDPhiInZ, titleESDMidPtFMDPhiInZ, nXBins, -TMath::Pi(), TMath::Pi(), xAxisTitle, yAxisTitle);    
818
819
820    //Mapping R in Z Middle Pt
821     TString nameESDMidPtRInZ="";
822     nameESDMidPtRInZ.Form("ESD_Conversion_Mapping_MidPt_R_in_Z_%02d",z);
823     TString titleESDMidPtRInZ="";
824     titleESDMidPtRInZ.Form("ESD Mapping Middle Pt of R in Z%02d",z);
825     //    AddHistogram(nameESDPhiInR, titleESDPhiInR, nXBins, firstX, lastX, xAxisTitle, yAxisTitle);    
826     AddHistogram(nameESDMidPtRInZ, titleESDMidPtRInZ, nXBins, fMinRadius, fMaxRadius, xAxisTitle, yAxisTitle);    
827
828
829
830   }
831
832
833
834 }