1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: Ana Marin, Kathrin Koch, Kenneth Aamodt *
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 **************************************************************************/
16 ////////////////////////////////////////////////
17 //---------------------------------------------
18 // Class used to do analysis on conversion pairs
19 //---------------------------------------------
20 ////////////////////////////////////////////////
22 #include "AliGammaConversionHistograms.h"
24 #include "TObjString.h"
33 ClassImp(AliGammaConversionHistograms)
36 AliGammaConversionHistograms::AliGammaConversionHistograms() :
37 fHistogramMap(new TMap()),
49 fMappingContainer(NULL),
50 fBackgroundContainer(NULL),
51 fDebugContainer(NULL),
52 fResolutionContainer(NULL),
53 fMatchContainer(NULL),
56 fTableContainer(NULL),
59 // see header file for documenation
60 for(Int_t i=0;i<14;i++){
63 for(Int_t i=0;i<12;i++){
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)
92 //see header file for documentation
93 for(Int_t i=0;i<14;i++){
94 fRBinLimits[i]= original.fRBinLimits[i];
96 for(Int_t i=0;i<12;i++){
97 fZBinLimits[i]=original.fZBinLimits[i];
102 AliGammaConversionHistograms & AliGammaConversionHistograms::operator = (const AliGammaConversionHistograms & /*original*/)
104 // assignment operator
109 AliGammaConversionHistograms::~AliGammaConversionHistograms() {
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);
125 cout << "Warning: Histogram ( "<<histogramName.Data()<<" ) already exists " << endl;
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);
139 BinLogAxis(histogramName.Data(), logAxis);
143 cout << "Warning: Histogram ( "<<histogramName.Data()<<" ) already exists " << endl;
147 Bool_t AliGammaConversionHistograms::BinLogAxis(const char* name, Int_t dim){
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
154 TObject *o = fHistogramMap->GetValue(name);
156 if(o->InheritsFrom("TH1")){
157 axis = (dynamic_cast<TH1F*>(o))->GetXaxis();
159 if(o->InheritsFrom("TH2")){
161 axis = (dynamic_cast<TH2F*>(o))->GetXaxis();
164 axis = (dynamic_cast<TH2F*>(o))->GetYaxis();
167 // AliError("Only dim = 0 or 1 possible for TH2F");
170 // if(o->InheritsFrom("THnSparse")){
171 // axis = (dynamic_cast<THnSparse*>(o))->GetAxis(dim);
175 //AliError(Form("Axis '%d' could not be identified in the object '%s'\n", dim, name));
179 Int_t bins = axis->GetNbins();
181 Double_t from = axis->GetXmin();
183 // AliError(Form(" Log binning not possible for object '%s'because the '%d' axis starts from '%f\n'", name, dim, from));
186 Double_t to = axis->GetXmax();
187 Double_t *newBins = new Double_t[bins+1];
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];
193 axis->Set(bins, newBins);
201 void AliGammaConversionHistograms::AddTable(TString tableName,TString tableTitle,Int_t nXBins,const char * axesLabel[]){
202 //see header file for documentation
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]);
211 TObjString *tobjstring = new TObjString(tableName.Data());
212 fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp);
215 cout << "Warning: Table ( "<<tableName.Data()<<" ) already exists " << endl;
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
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]);
226 for(Int_t ybin=1; ybin<=nYBins; ybin++){
227 tmp->GetYaxis()->SetBinLabel(ybin,axesYLabel[ybin-1]);
231 TObjString *tobjstring = new TObjString(tableName.Data());
232 fHistogramMap->Add((TObject*)tobjstring,(TObject*)tmp);
235 cout << "Warning: Table ( "<<tableName.Data()<<" ) already exists " << endl;
238 void AliGammaConversionHistograms::FillTable(TString tableName,Double_t xValue) const {
239 //see header file for documentation
240 TH1 *tmp = (TH1*)fHistogramMap->GetValue(tableName.Data());
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());
249 tmp->Fill(xValue,yValue);
252 void AliGammaConversionHistograms::FillHistogram(TString histogramName, Double_t xValue) const{
253 //see header file for documentation
254 TH1 *tmp = (TH1*)fHistogramMap->GetValue(histogramName.Data());
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());
264 tmp->Fill(xValue, yValue);
269 TObject* AliGammaConversionHistograms::GetValue(const TString& name)
271 //Get pointer to histogram with name
272 return fHistogramMap->GetValue(name.Data());
275 void AliGammaConversionHistograms::GetOutputContainer(TList *fOutputContainer){
276 //checking if the container is alrerady created
278 if(fOutputContainer == NULL){
279 cout<<"WARNING: GetOutputContainer: output container object is NULL"<<endl;
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");
294 if(fMappingContainer != NULL){
295 fMappingContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
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");
304 if(fBackgroundContainer != NULL){
305 fBackgroundContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
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");
314 if(fDebugContainer != NULL){
315 fDebugContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
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");
324 if(fResolutionContainer != NULL){
325 fResolutionContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
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");
334 if(fMatchContainer != NULL){
335 fMatchContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
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");
344 if(fESDContainer != NULL){
345 fESDContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
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");
354 if(fMCContainer != NULL){
355 fMCContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
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");
364 if(fTableContainer != NULL){
365 fTableContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
369 if(fOtherContainer == NULL){
370 fOtherContainer = new TList();
371 fOtherContainer->SetOwner(kTRUE);
372 fOtherContainer->SetName("Other histograms");
374 if(fOtherContainer != NULL){
375 fOtherContainer->Add((TH1*)fHistogramMap->GetValue(histogramString.Data()));
378 histogramName = NULL;
380 if(fMappingContainer != NULL){
381 fOutputContainer->Add(fMappingContainer);
383 if(fBackgroundContainer != NULL){
384 fOutputContainer->Add(fBackgroundContainer);
386 if(fDebugContainer != NULL){
387 fOutputContainer->Add(fDebugContainer);
389 if(fResolutionContainer != NULL){
390 fOutputContainer->Add(fResolutionContainer);
392 if(fMatchContainer != NULL){
393 fOutputContainer->Add(fMatchContainer);
395 if(fESDContainer != NULL){
396 fOutputContainer->Add(fESDContainer);
398 if(fMCContainer != NULL){
399 fOutputContainer->Add(fMCContainer);
401 if(fTableContainer != NULL){
402 fOutputContainer->Add(fTableContainer);
404 if(fOtherContainer != NULL){
405 fOutputContainer->Add(fOtherContainer);
410 Int_t AliGammaConversionHistograms::GetRBin(Double_t radius) const{
411 // see header file for documentation
414 // iResult = (Int_t)((radius - fMinRadius)/fDeltaR);
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] ){
425 Int_t AliGammaConversionHistograms::GetZBin(Double_t zPos) const{
426 // see header file for documentation
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] ){
440 Int_t AliGammaConversionHistograms::GetPhiBin(Double_t phi) const{
441 // see header file for documentation
447 iResult = (Int_t)((phi - fMinPhi)/fDeltaPhi);
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
457 fNPhiIndex = nPhiIndex;
466 // fRBinLimits= new Double_t[8]; Kenneth: moved from pointer to fixed array
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
489 fRBinLimits[11]=79.5; // change from 81.5 to 79.5 to have CE in 1 r bin 81.05
491 fRBinLimits[13]=500.;
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.;
506 fZBinLimits[10]=100.;
507 fZBinLimits[11]=200.;
508 fZBinLimits[12]=500.;
511 fMinRadius = minRadius;
512 fMaxRadius = maxRadius;
513 if(nBinsR>0 && nRIndex!=0){
514 fDeltaR = (fMaxRadius - fMinRadius)/nRIndex;
518 if(nBinsPhi>0 && nPhiIndex!=0){
519 fDeltaPhi = (fMaxPhi-fMinPhi)/nPhiIndex;
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
528 Double_t tmptogetridofwarning = firstX + lastX + nYBins + firstY + lastY;
529 if(tmptogetridofwarning < 0){
530 cout<<"Less than zero"<<endl;
533 for(Int_t phi =0; phi<fNPhiIndex;phi++){
535 for(Int_t r =0; r<fNRIndex;r++){
537 // setting axis to "" changes below
541 //Creating the axis titles
542 //if(xAxisTitle.Length() == 0){
543 //xAxisTitle.Form("Phi %02d",phi);
546 //if(yAxisTitle.Length() == 0){
547 //yAxisTitle.Form("R %02d",phi);
552 nameMC.Form("MC_Conversion_Mapping_Phi%02d_R%02d",phi,r);
554 titleMC.Form("Electron-Positron MC Mapping-Phi%02d-R%02d",phi,r);
556 //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
560 nameESD.Form("ESD_Conversion_Mapping_Phi%02d_R%02d",phi,r);
562 titleESD.Form("Electron-Positron ESD Mapping-Phi%02d-R%02d",phi,r);
564 //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
569 for(Int_t phi =0; phi<=nPhiIndex;phi++){
571 // setting axis to "" changes below
574 //Creating the axis titles
575 //if(xAxisTitle.Length() == 0){
576 // xAxisTitle.Form("Phi %02d",phi);
578 //if(yAxisTitle.Length() == 0){
579 // yAxisTitle = "Counts";
584 nameMC.Form("MC_Conversion_Mapping_Phi%02d",phi);
586 titleMC.Form("Electron-Positron MC Mapping-Phi%02d",phi);
588 //AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
592 nameESD.Form("ESD_Conversion_Mapping_Phi%02d",phi);
594 titleESD.Form("Electron-Positron ESD Mapping-Phi%02d",phi);
596 // AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
600 for(Int_t r =0; r<nRIndex;r++){
602 // setting axis to "" changes below
605 //Creating the axis titles
606 //if(xAxisTitle.Length() == 0){
607 // xAxisTitle.Form("R %02d",r);
609 //if(yAxisTitle.Length() == 0){
610 // yAxisTitle = "Counts";
615 nameMC.Form("MC_Conversion_Mapping_R%02d",r);
617 titleMC.Form("Electron-Positron MC Mapping-R%02d",r);
619 // AddHistogram(nameMC, titleMC, nXBins, firstX, lastX, nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
623 nameESD.Form("ESD_Conversion_Mapping_R%02d",r);
625 titleESD.Form("Electron-Positron ESD Mapping-R%02d",r);
627 //AddHistogram(nameESD, titleESD, nXBins, firstX, lastX,nYBins, firstY, lastY, xAxisTitle, yAxisTitle);
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);
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);
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);
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);
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);
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);
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);
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);
705 for(Int_t z =0; z<fNZIndex;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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);