bugs corrected
[u/mrichter/AliRoot.git] / PWG4 / macros / ConfigGammaConversion.C
index dfeef7fabe87747ea1f03ead2ad8457767e74be9..7b1d10198f40562aabf993bdfeb4b2f6eb33fa3e 100644 (file)
-
-/** ------------------------------ Monte Carlo flag -----------------------------------------*/
-Bool_t doMCTruth = kTRUE;
-/** ---------------------------- end Monte Carlo flag ---------------------------------------*/
-
-/** ------------------------- Choose KFParticle OR ESDTrack  --------------------------------*/
-Bool_t useKFParticle = kTRUE;
-Bool_t useESDTrack   = kFALSE;
-/** ----------------------- end Choose KFParticle OR ESDTrack  -----------------------------*/
-
-
-Bool_t calculateBackground = kTRUE;
-
-/** ---------------------------------- define cuts here ------------------------------------*/
-
-Int_t pidOfNegativeTrack=11;
-Int_t pidOfPositiveTrack=-11;
-
-Double_t maxRCut   = 200.;
-Double_t etaCut    = 1.2;
-Double_t ptCut     = 0.1;
-Double_t chi2Cut   = 20.;
-
-Double_t xVertexCut = 0.;
-Double_t yVertexCut = 0.;
-Double_t zVertexCut = 0.;
-
-Double_t sigmaCutGammaMass=0.0001;
-
-Bool_t useImprovedVertex = kTRUE;
-
-// define masses of different particles, this will be used by the KF particle
-// together with the width to set mass constraints. Units in GeV.
-Double_t electronMass = 0.00051099892;
-Double_t gammaMass    = 0.;
-Double_t pi0Mass      = 0.1349766;
-Double_t etaMass      = 0.54751;
-
-// define the width constraint used by KF particle.
-Double_t gammaWidth = 0.01;
-Double_t pi0Width   = 0.01;
-Double_t etaWidth   = 0.01;
-
-// define the probability of track being an electron
-Double_t probElectron = 0.5;
-
-/** ----------------------------------end define cuts here----------------------------------*/
-
-/** -------------------------------- Phi/R Mapping ---------------------------------------*/
-Int_t nPhiIndex = 18;
-Int_t nRIndex   = 40;
-
-Double_t minRadius   = 0.;
-Double_t maxRadius   = 200.;
-Double_t minPhi      = -TMath::Pi();
-Double_t maxPhi      = TMath::Pi();
-/** ------------------------------- end Phi/R Mapping ------------------------------------*/
-
-/** ------------------- define which histograms to plot here --------------------------------*/
-/**   NB: to change the bin numbers, see below the histogram flags                           */
-Bool_t plotMC_EP_R                             = kTRUE;
-Bool_t plotMC_EP_Z_R                           = kTRUE;
-Bool_t plotMC_EP_X_Y                           = kTRUE;
-Bool_t plotMC_EP_OpeningAngle                  = kTRUE;
-
-Bool_t plotMC_E_Energy                         = kTRUE;
-Bool_t plotMC_E_Pt                             = kTRUE;
-Bool_t plotMC_E_Eta                            = kTRUE;
-Bool_t plotMC_E_Phi                            = kTRUE;
-
-Bool_t plotMC_P_Energy                         = kTRUE;
-Bool_t plotMC_P_Pt                             = kTRUE;
-Bool_t plotMC_P_Eta                            = kTRUE;
-Bool_t plotMC_P_Phi                            = kTRUE;
-
-Bool_t plotMC_Gamma_Energy                     = kTRUE;
-Bool_t plotMC_Gamma_Pt                         = kTRUE;
-Bool_t plotMC_Gamma_Eta                        = kTRUE;
-Bool_t plotMC_Gamma_Phi                        = kTRUE;
-
-Bool_t plotMC_DirectGamma_Energy               = kTRUE;
-Bool_t plotMC_DirectGamma_Pt                   = kTRUE;
-Bool_t plotMC_DirectGamma_Eta                  = kTRUE;
-Bool_t plotMC_DirectGamma_Phi                  = kTRUE;
-
-Bool_t plotMC_Match_Gamma_Eta                  = kTRUE;
-Bool_t plotMC_Match_Gamma_Phi                  = kTRUE;
-Bool_t plotMC_Match_Gamma_Pt                   = kTRUE;
-Bool_t plotMC_Match_Gamma_Energy               = kTRUE;
-Bool_t plotMC_Match_Gamma_Mass                 = kTRUE;
-Bool_t plotMC_Match_Gamma_OpeningAngle         = kTRUE;
-Bool_t plotMC_Match_Gamma_R                    = kTRUE;
-Bool_t plotMC_Match_Gamma_Z_R                  = kTRUE;
-Bool_t plotMC_Match_Gamma_X_Y                  = kTRUE;
-
-Bool_t plotMC_Pi0_Eta                          = kTRUE;
-Bool_t plotMC_Pi0_Phi                          = kTRUE;
-Bool_t plotMC_Pi0_Pt                           = kTRUE;
-Bool_t plotMC_Pi0_Energy                       = kTRUE;
-Bool_t plotMC_Pi0_Mass                         = kTRUE;
-Bool_t plotMC_Pi0_OpeningAngle                 = kTRUE;
-Bool_t plotMC_Pi0_R                            = kTRUE;
-Bool_t plotMC_Pi0_Z_R                          = kTRUE;
-Bool_t plotMC_Pi0_X_Y                          = kTRUE;
-
-Bool_t plotMC_Eta_Eta                          = kTRUE;
-Bool_t plotMC_Eta_Phi                          = kTRUE;
-Bool_t plotMC_Eta_Pt                           = kTRUE;
-Bool_t plotMC_Eta_Energy                       = kTRUE;
-Bool_t plotMC_Eta_Mass                         = kTRUE;
-Bool_t plotMC_Eta_OpeningAngleGamma            = kTRUE;
-Bool_t plotMC_Eta_R                            = kTRUE;
-Bool_t plotMC_Eta_Z_R                          = kTRUE;
-Bool_t plotMC_Eta_X_Y                          = kTRUE;
-    
-// Histograms from esd tracks
-Bool_t plotESD_EP_R                            = kTRUE;
-Bool_t plotESD_EP_Z_R                          = kTRUE;
-Bool_t plotESD_EP_X_Y                          = kTRUE;
-Bool_t plotESD_EP_OpeningAngle                 = kTRUE;
-
-Bool_t plotESD_E_Energy                        = kTRUE;
-Bool_t plotESD_E_Pt                            = kTRUE;
-Bool_t plotESD_E_Eta                           = kTRUE;
-Bool_t plotESD_E_Phi                           = kTRUE;
-
-Bool_t plotESD_P_Energy                        = kTRUE;
-Bool_t plotESD_P_Pt                            = kTRUE;
-Bool_t plotESD_P_Eta                           = kTRUE;
-Bool_t plotESD_P_Phi                           = kTRUE;
-
-
-Bool_t plotESD_Gamma_Energy                    = kTRUE;
-Bool_t plotESD_Gamma_Pt                        = kTRUE;
-Bool_t plotESD_Gamma_Eta                       = kTRUE;
-Bool_t plotESD_Gamma_Phi                       = kTRUE;
-
-Bool_t plotESD_Match_Gamma_OpeningAngle        = kTRUE;
-Bool_t plotESD_Match_Gamma_Energy              = kTRUE;
-Bool_t plotESD_Match_Gamma_Pt                  = kTRUE;
-Bool_t plotESD_Match_Gamma_Eta                 = kTRUE;
-Bool_t plotESD_Match_Gamma_Phi                 = kTRUE;
-Bool_t plotESD_Match_Gamma_Mass                = kTRUE;
-Bool_t plotESD_Match_Gamma_Width               = kTRUE;
-Bool_t plotESD_Match_Gamma_Chi2                = kTRUE;
-Bool_t plotESD_Match_Gamma_NDF                 = kTRUE;
-Bool_t plotESD_Match_Gamma_R                   = kTRUE;
-Bool_t plotESD_Match_Gamma_Z_R                 = kTRUE;
-Bool_t plotESD_Match_Gamma_X_Y                 = kTRUE;
-
-Bool_t plotESD_Pi0_OpeningAngleGamma           = kTRUE;
-Bool_t plotESD_Pi0_Energy                      = kTRUE;
-Bool_t plotESD_Pi0_Pt                          = kTRUE;
-Bool_t plotESD_Pi0_Eta                         = kTRUE;
-Bool_t plotESD_Pi0_Phi                         = kTRUE;
-Bool_t plotESD_Pi0_Mass                        = kTRUE;
-Bool_t plotESD_Pi0_R                           = kTRUE;
-Bool_t plotESD_Pi0_Z_R                         = kTRUE;
-Bool_t plotESD_Pi0_X_Y                         = kTRUE;
-
-Bool_t plotESD_Eta_OpeningAngleGamma           = kTRUE;
-Bool_t plotESD_Eta_Energy                      = kTRUE;
-Bool_t plotESD_Eta_Pt                          = kTRUE;
-Bool_t plotESD_Eta_Eta                         = kTRUE;
-Bool_t plotESD_Eta_Phi                         = kTRUE;
-Bool_t plotESD_Eta_Mass                        = kTRUE;
-Bool_t plotESD_Eta_R                           = kTRUE;
-Bool_t plotESD_Eta_Z_R                         = kTRUE;
-Bool_t plotESD_Eta_X_Y                         = kTRUE;
-
-Bool_t plotESD_Background_OpeningAngleGamma    = kTRUE;
-Bool_t plotESD_Background_Energy               = kTRUE;
-Bool_t plotESD_Background_Pt                   = kTRUE;
-Bool_t plotESD_Background_Eta                  = kTRUE;
-Bool_t plotESD_Background_Phi                  = kTRUE;
-Bool_t plotESD_Background_Mass                 = kTRUE;
-Bool_t plotESD_Background_R                    = kTRUE;
-Bool_t plotESD_Background_Z_R                  = kTRUE;
-Bool_t plotESD_Background_X_Y                  = kTRUE;
-
-Bool_t plotMapping                             = kTRUE;       
-
-Bool_t plotResolution_dPt                      = kTRUE;
-Bool_t plotResolution_dR                       = kTRUE;
-Bool_t plotResolution_dZ                       = kTRUE;
-  
-Bool_t plotResolution_dR_dPt                   = kTRUE;
-
-Bool_t plotResolution_MC_Pt                    = kTRUE;
-Bool_t plotResolution_MC_R                     = kTRUE;
-Bool_t plotResolution_MC_Z                     = kTRUE;
-
-Bool_t plotResolution_ESD_Pt                   = kTRUE;
-Bool_t plotResolution_ESD_R                    = kTRUE;
-Bool_t plotResolution_ESD_Z                    = kTRUE;
-
-Bool_t plotNumberOfV0s                         = kTRUE;
-Bool_t plotNumberOfSurvivingV0s                = kTRUE;
-
-  //  debug histograms
-Bool_t plotV0MassDebugCut1                     = kTRUE;
-Bool_t plotV0MassDebugCut2                     = kTRUE;
-Bool_t plotV0MassDebugCut3                     = kTRUE;
-Bool_t plotV0MassDebugCut4                     = kTRUE;
-Bool_t plotV0MassDebugCut5                     = kTRUE;
-Bool_t plotV0MassDebugCut6                     = kTRUE;
-Bool_t plotV0MassDebugCut7                     = kTRUE;
-Bool_t plotV0MassDebugCut8                     = kTRUE;
-
-
-/** ----------------- end define which histograms to plot here -------------------------------*/
-
-
-
-/** ----------- Define the binning for the different plot types here -------------------------*/
-//R-plots
-Int_t nXBinsR = 1000;
-Double_t firstXBinR = 0.;
-Double_t lastXBinR = 250.;
-
-//Z_R-plots
-Int_t nXBinsZ_R = 2000;
-Double_t firstXBinZ_R = -10.;
-Double_t lastXBinZ_R = 10.;
-Int_t nYBinsZ_R = 1000;
-Double_t firstYBinZ_R = 0.;
-Double_t lastYBinZ_R = 250.;
-
-//X_Y-plots
-Int_t nXBinsX_Y = 2000;
-Double_t firstXBinX_Y = -250.;
-Double_t lastXBinX_Y = 250.;
-Int_t nYBinsX_Y = 2000;
-Double_t firstYBinX_Y = -250.;
-Double_t lastYBinX_Y = 250.;
-
-//OpenAngle-plots
-Int_t nXBinsOpeningAngle = 200;
-Double_t firstXBinOpeningAngle = 0.;
-Double_t lastXBinOpeningAngle = TMath::Pi()/2;
-
-//Energy-plots
-Int_t nXBinsEnergy = 500;
-Double_t firstXBinEnergy = 0.;
-Double_t lastXBinEnergy = 5.;
-
-//Pt-plots
-Int_t nXBinsPt = 500;
-Double_t firstXBinPt = 0.;
-Double_t lastXBinPt = 5.;
-
-//Eta-plots
-Int_t nXBinsEta = 400;
-Double_t firstXBinEta = -2.;
-Double_t lastXBinEta = 2.;
-
-//Phi-plots
-Int_t nXBinsPhi = 720;
-Double_t firstXBinPhi = -TMath::Pi();
-Double_t lastXBinPhi = TMath::Pi();
-
-//Mapping-plots
-Int_t nXBinsMapping = 40;
-Double_t firstXBinMapping = -20.;
-Double_t lastXBinMapping = 20.;
-Int_t nYBinsMapping = 30;
-Double_t firstYBinMapping = -1.5;
-Double_t lastYBinMapping = 1.5;
-
-//ResolutionPlots
-//RES_dPt
-Int_t nXBinsResdPt=500;
-Int_t firstXBinResdPt= 0;
-Int_t lastXBinResdPt=5;
-Int_t nYBinsResdPt=1000;
-Int_t firstYBinResdPt= -5;
-Int_t lastYBinResdPt=5;
-
-//RES_dR
-Int_t nXBinsResdR=1000;
-Int_t firstXBinResdR= 0;
-Int_t lastXBinResdR=250;
-Int_t nYBinsResdR=1000;
-Int_t firstYBinResdR= -25;
-Int_t lastYBinResdR=25;
-
-//RES_dZ
-Int_t nXBinsResdZ=2000;
-Int_t firstXBinResdZ= -20;
-Int_t lastXBinResdZ=20;
-Int_t nYBinsResdZ=1000;
-Int_t firstYBinResdZ= -20;
-Int_t lastYBinResdZ=20;
-
-//RES_dR_dPt
-Int_t nXBinsResdR_dPt=1000;
-Int_t firstXBinResdR_dPt= -22;
-Int_t lastXBinResdR_dPt=22;
-Int_t nYBinsResdR_dPt=1000;
-Int_t firstYBinResdR_dPt= -5;
-Int_t lastYBinResdR_dPt=5;
-
-
-//RES_MC_Pt
-Int_t nXBinsResPt=500;
-Int_t firstXBinResPt= 0;
-Int_t lastXBinResPt=5;
-
-//RES_MC_R
-Int_t nXBinsResR=1000;
-Int_t firstXBinResR= 0;
-Int_t lastXBinResR=250;
-
-//RES_MC_Z
-Int_t nXBinsResZ=1000;
-Int_t firstXBinResZ= 0;
-Int_t lastXBinResZ=250;
-
-//GammaMass-plots
-Int_t nXBinsGamma_Mass = 100;
-Double_t firstXBinGamma_Mass = 0.;
-Double_t lastXBinGamma_Mass = 1.;
-
-//Pi0Mass-plots
-Int_t nXBinsPi0_Mass = 100;
-Double_t firstXBinPi0_Mass = 0.;
-Double_t lastXBinPi0_Mass = 1.;
-
-//EtaMass-plots
-Int_t nXBinsEta_Mass = 100;
-Double_t firstXBinEta_Mass = 0.;
-Double_t lastXBinEta_Mass = 1.;
-
-//Gamma_Width-plots
-Int_t nXBinsGamma_Width = 100;
-Double_t firstXBinGamma_Width = 0.;
-Double_t lastXBinGamma_Width = 1.;
-
-//Gamma_Chi2-plots
-Int_t nXBinsGamma_Chi2 = 100;
-Double_t firstXBinGamma_Chi2 = 0;
-Double_t lastXBinGamma_Chi2 = 100.;
-
-//Gamma_NDF-plots
-Int_t nXBinsGamma_NDF = 10;
-Double_t firstXBinGamma_NDF = 0.;
-Double_t lastXBinGamma_NDF = 10.;
-/** ---------- end Define the binning for the different plot types here ----------------------*/
-
-
-
-/************************************************************************************************
- *                                                                                              *
- *                                                                                              *
- *                     EVERYTHING BELOW IS FOR DEVELOPERS ONLY                                  *
- *                                                                                              *
- *                                                                                              *
- ************************************************************************************************/
-
-void ConfigGammaConversion(const char *chainName, const char *sample, int limit = 0){
-  
-  build();//build (if necessary) and load the libraries needed
-
-  gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C"); // load the CreateChain macro
-
-  AliLog::SetGlobalLogLevel(AliLog::kError);
-
-  //-------------------------------- Creating the histograms -------------------------------
-  AliGammaConversionHistograms * histograms = new AliGammaConversionHistograms();
-
-  //Change here
-  // All the plots need to be given good names for the x-axis and y-axis so that people don't have to ask, or get confused.
-  // I put in cm and cm in the first one as an example where to put in the axis titles.
-  
-  if(plotMC_EP_R != NULL){ histograms->Initialize_MC_EP_R(nXBinsR, firstXBinR, lastXBinR,"cm","cm");}
-  if(plotMC_EP_Z_R != NULL){ histograms->Initialize_MC_EP_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotMC_EP_X_Y != NULL){ histograms->Initialize_MC_EP_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-  if(plotMC_EP_OpeningAngle != NULL){ histograms->Initialize_MC_EP_OpeningAngle(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-
-  if(plotMC_E_Energy != NULL){ histograms->Initialize_MC_E_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotMC_E_Pt != NULL){ histograms->Initialize_MC_E_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotMC_E_Eta != NULL){ histograms->Initialize_MC_E_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotMC_E_Phi != NULL){ histograms->Initialize_MC_E_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-
-  if(plotMC_P_Energy != NULL){ histograms->Initialize_MC_P_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotMC_P_Pt != NULL){ histograms->Initialize_MC_P_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotMC_P_Eta != NULL){ histograms->Initialize_MC_P_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotMC_P_Phi != NULL){ histograms->Initialize_MC_P_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-
-  if(plotMC_Gamma_Energy != NULL){ histograms->Initialize_MC_Gamma_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotMC_Gamma_Pt != NULL){ histograms->Initialize_MC_Gamma_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotMC_Gamma_Eta != NULL){ histograms->Initialize_MC_Gamma_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotMC_Gamma_Phi != NULL){ histograms->Initialize_MC_Gamma_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-
-  if(plotMC_DirectGamma_Energy != NULL){ histograms->Initialize_MC_DirectGamma_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotMC_DirectGamma_Pt != NULL){ histograms->Initialize_MC_DirectGamma_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotMC_DirectGamma_Eta != NULL){ histograms->Initialize_MC_DirectGamma_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotMC_DirectGamma_Phi != NULL){ histograms->Initialize_MC_DirectGamma_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-
-  if(plotMC_Match_Gamma_Eta != NULL){ histograms->Initialize_MC_Match_Gamma_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotMC_Match_Gamma_Phi != NULL){ histograms->Initialize_MC_Match_Gamma_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-  if(plotMC_Match_Gamma_Pt != NULL){ histograms->Initialize_MC_Match_Gamma_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotMC_Match_Gamma_Energy != NULL){ histograms->Initialize_MC_Match_Gamma_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotMC_Match_Gamma_Mass != NULL){ histograms->Initialize_MC_Match_Gamma_Mass(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass, "", "");}
-  if(plotMC_Match_Gamma_OpeningAngle != NULL){ histograms->Initialize_MC_Match_Gamma_OpeningAngle(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-  if(plotMC_Match_Gamma_R != NULL){ histograms->Initialize_MC_Match_Gamma_R(nXBinsR, firstXBinR, lastXBinR, "", "");}
-  if(plotMC_Match_Gamma_Z_R != NULL){ histograms->Initialize_MC_Match_Gamma_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotMC_Match_Gamma_X_Y != NULL){ histograms->Initialize_MC_Match_Gamma_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-
-  if(plotMC_Pi0_Eta != NULL){ histograms->Initialize_MC_Pi0_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotMC_Pi0_Phi != NULL){ histograms->Initialize_MC_Pi0_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-  if(plotMC_Pi0_Pt != NULL){ histograms->Initialize_MC_Pi0_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotMC_Pi0_Energy != NULL){ histograms->Initialize_MC_Pi0_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotMC_Pi0_Mass != NULL){ histograms->Initialize_MC_Pi0_Mass(nXBinsPi0_Mass, firstXBinPi0_Mass, lastXBinPi0_Mass, "", "");}
-  if(plotMC_Pi0_OpeningAngle != NULL){ histograms->Initialize_MC_Pi0_OpeningAngleGamma(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-  if(plotMC_Pi0_R != NULL){ histograms->Initialize_MC_Pi0_R(nXBinsR, firstXBinR, lastXBinR, "", "");}
-  if(plotMC_Pi0_Z_R != NULL){ histograms->Initialize_MC_Pi0_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotMC_Pi0_X_Y != NULL){ histograms->Initialize_MC_Pi0_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-
-  if(plotMC_Eta_Eta != NULL){ histograms->Initialize_MC_Eta_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotMC_Eta_Phi != NULL){ histograms->Initialize_MC_Eta_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-  if(plotMC_Eta_Pt != NULL){ histograms->Initialize_MC_Eta_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotMC_Eta_Energy != NULL){ histograms->Initialize_MC_Eta_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotMC_Eta_Mass != NULL){ histograms->Initialize_MC_Eta_Mass(nXBinsEta_Mass, firstXBinEta_Mass, lastXBinEta_Mass, "", "");}
-  if(plotMC_Eta_OpeningAngleGamma != NULL){ histograms->Initialize_MC_Eta_OpeningAngleGamma(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-  if(plotMC_Eta_R != NULL){ histograms->Initialize_MC_Eta_R(nXBinsR, firstXBinR, lastXBinR, "", "");}
-  if(plotMC_Eta_Z_R != NULL){ histograms->Initialize_MC_Eta_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotMC_Eta_X_Y != NULL){ histograms->Initialize_MC_Eta_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-    
-  // Histograms from esd tracks
-  if(plotESD_EP_R != NULL){ histograms->Initialize_ESD_EP_R(nXBinsR, firstXBinR, lastXBinR, "", "");}
-  if(plotESD_EP_Z_R != NULL){ histograms->Initialize_ESD_EP_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotESD_EP_X_Y != NULL){ histograms->Initialize_ESD_EP_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-  if(plotESD_EP_OpeningAngle != NULL){ histograms->Initialize_ESD_EP_OpeningAngle(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-
-  if(plotESD_E_Energy != NULL){ histograms->Initialize_ESD_E_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotESD_E_Pt != NULL){ histograms->Initialize_ESD_E_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotESD_E_Eta != NULL){ histograms->Initialize_ESD_E_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotESD_E_Phi != NULL){ histograms->Initialize_ESD_E_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-
-  if(plotESD_P_Energy != NULL){ histograms->Initialize_ESD_P_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotESD_P_Pt != NULL){ histograms->Initialize_ESD_P_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotESD_P_Eta != NULL){ histograms->Initialize_ESD_P_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotESD_P_Phi != NULL){ histograms->Initialize_ESD_P_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-
-  if(plotESD_Gamma_Energy != NULL){ histograms->Initialize_ESD_Gamma_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotESD_Gamma_Pt != NULL){ histograms->Initialize_ESD_Gamma_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotESD_Gamma_Eta != NULL){ histograms->Initialize_ESD_Gamma_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotESD_Gamma_Phi != NULL){ histograms->Initialize_ESD_Gamma_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-
-  if(plotESD_Match_Gamma_OpeningAngle != NULL){ histograms->Initialize_ESD_Match_Gamma_OpeningAngle(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-  if(plotESD_Match_Gamma_Energy != NULL){ histograms->Initialize_ESD_Match_Gamma_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotESD_Match_Gamma_Pt != NULL){ histograms->Initialize_ESD_Match_Gamma_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotESD_Match_Gamma_Eta != NULL){ histograms->Initialize_ESD_Match_Gamma_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotESD_Match_Gamma_Phi != NULL){ histograms->Initialize_ESD_Match_Gamma_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-  if(plotESD_Match_Gamma_Mass != NULL){ histograms->Initialize_ESD_Match_Gamma_Mass(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass, "", "");}
-  if(plotESD_Match_Gamma_Width != NULL){ histograms->Initialize_ESD_Match_Gamma_Width(nXBinsGamma_Width, firstXBinGamma_Width, lastXBinGamma_Width, "", "");}
-  if(plotESD_Match_Gamma_Chi2 != NULL){ histograms->Initialize_ESD_Match_Gamma_Chi2(nXBinsGamma_Chi2, firstXBinGamma_Chi2, lastXBinGamma_Chi2, "", "");}
-  if(plotESD_Match_Gamma_NDF != NULL){ histograms->Initialize_ESD_Match_Gamma_NDF(nXBinsGamma_NDF, firstXBinGamma_NDF, lastXBinGamma_NDF, "", "");}
-  if(plotESD_Match_Gamma_R != NULL){ histograms->Initialize_ESD_Match_Gamma_R(nXBinsR, firstXBinR, lastXBinR, "", "");}
-  if(plotESD_Match_Gamma_Z_R != NULL){ histograms->Initialize_ESD_Match_Gamma_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotESD_Match_Gamma_X_Y != NULL){ histograms->Initialize_ESD_Match_Gamma_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-
-  if(plotESD_Pi0_OpeningAngleGamma != NULL){ histograms->Initialize_ESD_Pi0_OpeningAngleGamma(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-  if(plotESD_Pi0_Energy != NULL){ histograms->Initialize_ESD_Pi0_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotESD_Pi0_Pt != NULL){ histograms->Initialize_ESD_Pi0_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotESD_Pi0_Eta != NULL){ histograms->Initialize_ESD_Pi0_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotESD_Pi0_Phi != NULL){ histograms->Initialize_ESD_Pi0_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-  if(plotESD_Pi0_Mass != NULL){ histograms->Initialize_ESD_Pi0_Mass(nXBinsPi0_Mass, firstXBinPi0_Mass, lastXBinPi0_Mass, "", "");}
-  if(plotESD_Pi0_R != NULL){ histograms->Initialize_ESD_Pi0_R(nXBinsR, firstXBinR, lastXBinR, "", "");}
-  if(plotESD_Pi0_Z_R != NULL){ histograms->Initialize_ESD_Pi0_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotESD_Pi0_X_Y != NULL){ histograms->Initialize_ESD_Pi0_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-
-  if(plotESD_Eta_OpeningAngleGamma != NULL){ histograms->Initialize_ESD_Eta_OpeningAngleGamma(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-  if(plotESD_Eta_Energy != NULL){ histograms->Initialize_ESD_Eta_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotESD_Eta_Pt != NULL){ histograms->Initialize_ESD_Eta_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotESD_Eta_Eta != NULL){ histograms->Initialize_ESD_Eta_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotESD_Eta_Phi != NULL){ histograms->Initialize_ESD_Eta_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-  if(plotESD_Eta_Mass != NULL){ histograms->Initialize_ESD_Eta_Mass(nXBinsEta_Mass, firstXBinEta_Mass, lastXBinEta_Mass, "", "");}
-  if(plotESD_Eta_R != NULL){ histograms->Initialize_ESD_Eta_R(nXBinsR, firstXBinR, lastXBinR, "", "");}
-  if(plotESD_Eta_Z_R != NULL){ histograms->Initialize_ESD_Eta_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotESD_Eta_X_Y != NULL){ histograms->Initialize_ESD_Eta_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-
-  if(plotESD_Background_OpeningAngleGamma != NULL){ histograms->Initialize_ESD_Background_OpeningAngleGamma(nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}
-  if(plotESD_Background_Energy != NULL){ histograms->Initialize_ESD_Background_Energy(nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}
-  if(plotESD_Background_Pt != NULL){ histograms->Initialize_ESD_Background_Pt(nXBinsPt, firstXBinPt, lastXBinPt, "", "");}
-  if(plotESD_Background_Eta != NULL){ histograms->Initialize_ESD_Background_Eta(nXBinsEta, firstXBinEta, lastXBinEta, "", "");}
-  if(plotESD_Background_Phi != NULL){ histograms->Initialize_ESD_Background_Phi(nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}
-  if(plotESD_Background_Mass != NULL){ histograms->Initialize_ESD_Background_Mass(nXBinsEta_Mass, firstXBinEta_Mass, lastXBinEta_Mass, "", "");}
-  if(plotESD_Background_R != NULL){ histograms->Initialize_ESD_Background_R(nXBinsR, firstXBinR, lastXBinR, "", "");}
-  if(plotESD_Background_Z_R != NULL){ histograms->Initialize_ESD_Background_Z_R(nXBinsZ_R, firstXBinZ_R, lastXBinZ_R, nYBinsZ_R, firstYBinZ_R, lastYBinZ_R, "", "");}
-  if(plotESD_Background_X_Y != NULL){ histograms->Initialize_ESD_Background_X_Y(nXBinsX_Y, firstXBinX_Y, lastXBinX_Y, nYBinsX_Y, firstYBinX_Y, lastYBinX_Y, "", "");}
-
-  if(plotMapping != NULL){histograms->Initialize_MappingValues(nPhiIndex,nRIndex,nXBinsMapping,minRadius,maxRadius,nYBinsMapping,minPhi,maxPhi);}
-  //create the mapping histograms
-  if(plotMapping != NULL){histograms->Initialize_MappingHistograms(nPhiIndex,nRIndex,nXBinsMapping,firstXBinMapping,lastXBinMapping,nYBinsMapping,firstYBinMapping,lastYBinMapping,"", "");}
-
-
-
-
-  
-  if(plotResolution_dPt !=NULL){histograms->Initialize_Resolution_dPt(nXBinsResdPt, firstXBinResdPt, lastXBinResdPt, nYBinsResdPt, firstYBinResdPt, lastYBinResdPt, "", "");}
-  if(plotResolution_dR !=NULL){histograms->Initialize_Resolution_dR(nXBinsResdR, firstXBinResdR, lastXBinResdR, nYBinsResdR, firstYBinResdR, lastYBinResdR, "", "");}
-  if(plotResolution_dZ !=NULL){histograms->Initialize_Resolution_dZ(nXBinsResdZ, firstXBinResdZ, lastXBinResdZ, nYBinsResdZ, firstYBinResdZ, lastYBinResdZ, "", "");}
-  
-  if(plotResolution_dR_dPt !=NULL){histograms->Initialize_Resolution_dR_dPt(nXBinsResdR_dPt, firstXBinResdR_dPt, lastXBinResdR_dPt, nYBinsResdR_dPt, firstYBinResdR_dPt, lastYBinResdR_dPt, "", "");}
-  
-  if(plotResolution_MC_Pt !=NULL){histograms->Initialize_Resolution_MC_Pt(nXBinsResPt, firstXBinResPt, lastXBinResPt,"","");}
-  if(plotResolution_MC_R !=NULL){histograms->Initialize_Resolution_MC_R(nXBinsResR, firstXBinResR, lastXBinResR,"","");}
-  if(plotResolution_MC_Z !=NULL){histograms->Initialize_Resolution_MC_Z(nXBinsResZ, firstXBinResZ, lastXBinResZ,"","");}
-  
-  if(plotResolution_ESD_Pt !=NULL){histograms->Initialize_Resolution_ESD_Pt(nXBinsResPt, firstXBinResPt, lastXBinResPt,"","");}
-  if(plotResolution_ESD_R !=NULL){histograms->Initialize_Resolution_ESD_R(nXBinsResR, firstXBinResR, lastXBinResR,"","");}
-  if(plotResolution_ESD_Z !=NULL){histograms->Initialize_Resolution_ESD_Z(nXBinsResZ, firstXBinResZ, lastXBinResZ,"","");}
-  
-  if(plotNumberOfV0s != NULL){histograms->Initialize_NumberOfV0s(100, 0, 100,"","");}
-  if(plotNumberOfSurvivingV0s != NULL){histograms->Initialize_NumberOfSurvivingV0s(100, 0, 100,"","");}
-
-  //  debug histograms
-  if(plotV0MassDebugCut1 != NULL){histograms->Initialize_V0MassDebugCut1(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass,"","");}
-  if(plotV0MassDebugCut2 != NULL){histograms->Initialize_V0MassDebugCut2(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass,"","");}
-  if(plotV0MassDebugCut3 != NULL){histograms->Initialize_V0MassDebugCut3(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass,"","");}
-  if(plotV0MassDebugCut4 != NULL){histograms->Initialize_V0MassDebugCut4(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass,"","");}
-  if(plotV0MassDebugCut5 != NULL){histograms->Initialize_V0MassDebugCut5(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass,"","");}
-  if(plotV0MassDebugCut6 != NULL){histograms->Initialize_V0MassDebugCut6(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass,"","");}
-  if(plotV0MassDebugCut7 != NULL){histograms->Initialize_V0MassDebugCut7(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass,"","");}
-  if(plotV0MassDebugCut8 != NULL){histograms->Initialize_V0MassDebugCut8(nXBinsGamma_Mass, firstXBinGamma_Mass, lastXBinGamma_Mass,"","");}
-
-
-
-  //------------------------------ end Creating the histograms -----------------------------
-
-  // Create the Analysis manager
-  AliAnalysisManager *mgr  = new AliAnalysisManager("My Manager", "My Analysis");
-
-  // Define Input Event Handler 
-  AliESDInputHandler* inpHandler = new AliESDInputHandler();
-
-  // Define Output Event Handler
-  AliAODHandler* aodHandler = new AliAODHandler();
-  aodHandler->SetOutputFileName("aodAliGammaConversion.root");
-  
-  // Define MC Truth Event Handler
-  AliMCEventHandler* mcHandler = new AliMCEventHandler();
-  
-  // Add Handlers to the Task Manager
-  mgr->SetInputEventHandler  (inpHandler);
-  mgr->SetOutputEventHandler (aodHandler);
-  mgr->SetMCtruthEventHandler(mcHandler);
-
-  // Be sure you are told what you are doing
-  mgr->SetDebugLevel(10);
-
-  // Declare Common Input Tchain
-  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("Chain",TChain::Class(),AliAnalysisManager::kInputContainer);
-
-  // Common Output Tree in common ‘default’ output file
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree", TTree::Class(),AliAnalysisManager::kOutputContainer, "default");
-
-  // Private output objects
-  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("histogramsAliGammaConversion", TList::Class(),AliAnalysisManager::kOutputContainer, "histogramsAliGammaConversion.root");
-
-
-  //------------------------ END: Define input/output handlers ---------------------------------------------------
-
-
-  //check for errors in the specified data
-  if(useKFParticle == kTRUE && useESDTrack == kTRUE){
-    //Print warning, cannot use both
-  }
-  if(useKFParticle == kFALSE && useESDTrack == kFALSE){
-    //Print warning, one have to be specified
-  }
-
-
-  //Create the V0Reader
-  AliV0Reader * v0Reader = new AliV0Reader();
-  if(useKFParticle){
-    v0Reader->UseKFParticle();
-  }
-  else if(useESDTrack){
-    v0Reader->UseESDTrack();
-  }
-  v0Reader->SetNegativeTrackPID(pidOfNegativeTrack);
-  v0Reader->SetPositiveTrackPID(pidOfPositiveTrack);
-  v0Reader->SetMaxRCut(maxRCut);
-  v0Reader->SetEtaCut(etaCut);
-  v0Reader->SetPtCut(ptCut);
-  v0Reader->SetChi2Cut(chi2Cut);
-  v0Reader->SetPIDProbability(probElectron);
-  v0Reader->SetXVertexCut(xVertexCut);
-  v0Reader->SetYVertexCut(yVertexCut);
-  v0Reader->SetZVertexCut(zVertexCut);
-  v0Reader->SetSigmaMass(sigmaCutGammaMass);
-  v0Reader->SetUseImprovedVertex(useImprovedVertex);
-
-  // Create the GammaConversionTask
-  AliAnalysisTaskGammaConversion *gammaconversion = new AliAnalysisTaskGammaConversion("GammaConversionTask");
-  gammaconversion->SetDebugLevel(10);
-  
-  gammaconversion->SetV0Reader(v0Reader);
-  gammaconversion->SetCalculateBackground(calculateBackground);
-  gammaconversion->Init();
-  
-  gammaconversion->SetElectronMass(electronMass);
-  gammaconversion->SetGammaMass(gammaMass);
-  gammaconversion->SetPi0Mass(pi0Mass);
-  gammaconversion->SetEtaMass(etaMass);
-
-  gammaconversion->SetGammaWidth(gammaWidth);
-  gammaconversion->SetPi0Width(pi0Width);
-  gammaconversion->SetEtaWidth(etaWidth);
-
-  // define the width constraint used by KF particle.
-  Double_t gammaWidth = 0.01;
-  Double_t pi0Width   = 0.01;
-  Double_t etaWidth   = 0.01;
-
-  gammaconversion->SetHistograms(histograms);
-  v0Reader->SetHistograms(histograms);// also give the pointer to the v0reader, for debugging cuts
-  
-  gammaconversion->SetDoMCTruth(doMCTruth);
-
-
-  // Add task to the manager 
-  mgr->AddTask(gammaconversion);
-
-  // Connect I/O to the task
-  mgr->ConnectInput (gammaconversion, 0, cinput1);
-  mgr->ConnectOutput(gammaconversion, 0, coutput1);
-  mgr->ConnectOutput(gammaconversion, 1, coutput2);
-
-  TChain* chain= CreateESDChain(sample);
-  
-  mgr->InitAnalysis();
-  
-  mgr->PrintStatus();
-  
-  mgr->StartAnalysis("local",chain);
-
-}
-
-
-
-
-void build() {
-  TStopwatch timer;
-  timer.Start();
-  gSystem->Load("libTree.so");
-  gSystem->Load("libGeom");
-  //  gSystem->Load("libANALYSISalice");
-
-  //____________________________________________________//
-  //____________________________________________________//
-  //_____________Setting up STEERBase.par_______________//
-  //____________________________________________________//
-  setupPar("STEERBase");
-  gSystem->Load("libSTEERBase.so");
-
-  //____________________________________________________//
-  //_____________Setting up ESD.par_____________________//
-  //____________________________________________________//
-  setupPar("ESD");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libESD.so");
-
-  //____________________________________________________//
-  //_____________Setting up AOD.par_____________________//
-  //____________________________________________________//
-  setupPar("AOD");
-  gSystem->Load("libAOD.so");
-                                                                
-  //_____________________________________________________________//
-  //_____________Setting up ANALYSIS.par_________________________//
-  //_____________________________________________________________//
-  setupPar("ANALYSIS");
-  gSystem->Load("libANALYSIS.so");
-
-  //_____________________________________________________________//
-  //_____________Setting up ANALYSISalice.par_________________________//
-  //_____________________________________________________________//
-  setupPar("ANALYSISalice");
-  gSystem->Load("libANALYSISalice.so");
-                                                                                                                                  
-  //_____________________________________________________________//
-  //_____________Setting up PWG4Gamma.par_____________________//
-  //_____________________________________________________________//
-  //  setupPar("PWG4Gamma");
-  //  gSystem->Load("libPWG4Gamma.so");
-  setupPar("PWG4PartCorr");
-  gSystem->Load("libPWG4PartCorr.so");
-  //if head:: use PWG4PartCorr
-             
-  //gROOT->LoadMacro("AliAnalysisTaskPi0.cxx+");
-  // gROOT->LoadMacro("AliAnalysisTaskPtMC.cxx+");
-  //  gROOT->LoadMacro("AliAnalysisTaskPi0MC.cxx+");
-  //  gROOT->LoadMacro("AliAnaScale.cxx+");
-
-
-  //gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
-  //TChain* chain = CreateESDChain("files1.txt");
-
-
-
-  //____________________________________________//
-
-
-}
-
-Int_t setupPar(const char* pararchivename) {
-  ///////////////////
-  // Setup PAR File//
-  ///////////////////
-  if (pararchivename) {
-    char processline[1024];
-    sprintf(processline,".! tar xvzf %s.par",pararchivename);
-    gROOT->ProcessLine(processline);
-    const char* ocwd = gSystem->WorkingDirectory();
-    gSystem->ChangeDirectory(pararchivename);
-                                                                                                                                               
-    // check for BUILD.sh and execute
-    if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
-      printf("*******************************\n");
-      printf("*** Building PAR archive    ***\n");
-      printf("*******************************\n");
-                                                                                                                                               
-      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
-        Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
-        return -1;
-      }
-    }
-    // check for SETUP.C and execute
-    if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
-      printf("*******************************\n");
-      printf("*** Setup PAR archive       ***\n");
-      printf("*******************************\n");
-      gROOT->Macro("PROOF-INF/SETUP.C");
-    }
-                                                                                                                                               
-    gSystem->ChangeDirectory("../");
-  }                                                                                                                                               
-  return 1;
-}
+\r
+/** ------------------------------ Monte Carlo flag -----------------------------------------*/\r
+Bool_t doMCTruth = kTRUE;\r
+/** ---------------------------- end Monte Carlo flag ---------------------------------------*/\r
+\r
+/** ------------------------- Choose KFParticle OR ESDTrack  --------------------------------*/\r
+Bool_t useKFParticle = kTRUE;\r
+Bool_t useESDTrack   = kFALSE;\r
+/** ----------------------- end Choose KFParticle OR ESDTrack  -----------------------------*/\r
+\r
+\r
+Bool_t calculateBackground = kTRUE;\r
+\r
+Int_t numberOfFilesToAnalyze=100;\r
+\r
+/** ---------------------------------- define cuts here ------------------------------------*/\r
+\r
+Int_t pidOfNegativeTrack=11;\r
+Int_t pidOfPositiveTrack=-11;\r
+\r
+Double_t maxRCut   = 200.;\r
+Double_t etaCut    = 1.2;\r
+Double_t ptCut     = 0.1;\r
+Double_t chi2CutConversion   = 20.;\r
+Double_t chi2CutMeson   = 20.;\r
+\r
+Double_t xVertexCut = 0.;\r
+Double_t yVertexCut = 0.;\r
+Double_t zVertexCut = 0.;\r
+\r
+Double_t sigmaCutGammaMass=0.0001;\r
+\r
+Bool_t useImprovedVertex = kTRUE;\r
+\r
+// define masses of different particles, this will be used by the KF particle\r
+// together with the width to set mass constraints. Units in GeV.\r
+Double_t electronMass = 0.00051099892;\r
+Double_t gammaMass    = 0.;\r
+Double_t pi0Mass      = 0.1349766;\r
+Double_t etaMass      = 0.54751;\r
+\r
+// define the width constraint used by KF particle.\r
+Double_t gammaWidth = 0.01;\r
+Double_t pi0Width   = 0.01;\r
+Double_t etaWidth   = 0.01;\r
+\r
+// define the probability of track being an electron\r
+Double_t probElectron = 0.5;\r
+\r
+/** ----------------------------------end define cuts here----------------------------------*/\r
+\r
+/** -------------------------------- Phi/R Mapping ---------------------------------------*/\r
+Int_t nPhiIndex = 18;\r
+Int_t nRIndex   = 40;\r
+\r
+Double_t minRadius   = 0.;\r
+Double_t maxRadius   = 200.;\r
+Double_t minPhi      = -TMath::Pi();\r
+Double_t maxPhi      = TMath::Pi();\r
+/** ------------------------------- end Phi/R Mapping ------------------------------------*/\r
+\r
+/** ------------------- define which histograms to plot here --------------------------------*/\r
+/**   NB: to change the bin numbers, see below the histogram flags                           */\r
+Bool_t plotMCEPR                             = kTRUE;\r
+Bool_t plotMCEPZR                            = kTRUE;\r
+Bool_t plotMCEPXY                            = kTRUE;\r
+Bool_t plotMCEPOpeningAngle                  = kTRUE;\r
+\r
+Bool_t plotMCEEnergy                         = kTRUE;\r
+Bool_t plotMCEPt                             = kTRUE;\r
+Bool_t plotMCEEta                            = kTRUE;\r
+Bool_t plotMCEPhi                            = kTRUE;\r
+\r
+Bool_t plotMCPEnergy                         = kTRUE;\r
+Bool_t plotMCPPt                             = kTRUE;\r
+Bool_t plotMCPEta                            = kTRUE;\r
+Bool_t plotMCPPhi                            = kTRUE;\r
+\r
+Bool_t plotMCGammaEnergy                     = kTRUE;\r
+Bool_t plotMCGammaPt                         = kTRUE;\r
+Bool_t plotMCGammaEta                        = kTRUE;\r
+Bool_t plotMCGammaPhi                        = kTRUE;\r
+\r
+Bool_t plotMCDirectGammaEnergy               = kTRUE;\r
+Bool_t plotMCDirectGammaPt                   = kTRUE;\r
+Bool_t plotMCDirectGammaEta                  = kTRUE;\r
+Bool_t plotMCDirectGammaPhi                  = kTRUE;\r
+\r
+Bool_t plotMCMatchGammaEta                   = kTRUE;\r
+Bool_t plotMCMatchGammaPhi                   = kTRUE;\r
+Bool_t plotMCMatchGammaPt                    = kTRUE;\r
+Bool_t plotMCMatchGammaEnergy                = kTRUE;\r
+Bool_t plotMCMatchGammaMass                  = kTRUE;\r
+Bool_t plotMCMatchGammaOpeningAngle          = kTRUE;\r
+Bool_t plotMCMatchGammaR                     = kTRUE;\r
+Bool_t plotMCMatchGammaZR                    = kTRUE;\r
+Bool_t plotMCMatchGammaXY                    = kTRUE;\r
+\r
+Bool_t plotMCPi0Eta                          = kTRUE;\r
+Bool_t plotMCPi0Phi                          = kTRUE;\r
+Bool_t plotMCPi0Pt                           = kTRUE;\r
+Bool_t plotMCPi0Energy                       = kTRUE;\r
+Bool_t plotMCPi0Mass                         = kTRUE;\r
+Bool_t plotMCPi0OpeningAngle                 = kTRUE;\r
+Bool_t plotMCPi0R                            = kTRUE;\r
+Bool_t plotMCPi0ZR                           = kTRUE;\r
+Bool_t plotMCPi0XY                           = kTRUE;\r
+\r
+Bool_t plotMCEtaEta                          = kTRUE;\r
+Bool_t plotMCEtaPhi                          = kTRUE;\r
+Bool_t plotMCEtaPt                           = kTRUE;\r
+Bool_t plotMCEtaEnergy                       = kTRUE;\r
+Bool_t plotMCEtaMass                         = kTRUE;\r
+Bool_t plotMCEtaOpeningAngleGamma            = kTRUE;\r
+Bool_t plotMCEtaR                            = kTRUE;\r
+Bool_t plotMCEtaZR                           = kTRUE;\r
+Bool_t plotMCEtaXY                           = kTRUE;\r
+    \r
+// Histograms from esd tracks\r
+Bool_t plotESDEPR                            = kTRUE;\r
+Bool_t plotESDEPZR                           = kTRUE;\r
+Bool_t plotESDEPXY                           = kTRUE;\r
+Bool_t plotESDEPOpeningAngle                 = kTRUE;\r
+\r
+Bool_t plotESDEEnergy                        = kTRUE;\r
+Bool_t plotESDEPt                            = kTRUE;\r
+Bool_t plotESDEEta                           = kTRUE;\r
+Bool_t plotESDEPhi                           = kTRUE;\r
+\r
+Bool_t plotESDPEnergy                        = kTRUE;\r
+Bool_t plotESDPPt                            = kTRUE;\r
+Bool_t plotESDPEta                           = kTRUE;\r
+Bool_t plotESDPPhi                           = kTRUE;\r
+\r
+\r
+Bool_t plotESDGammaEnergy                    = kTRUE;\r
+Bool_t plotESDGammaPt                        = kTRUE;\r
+Bool_t plotESDGammaEta                       = kTRUE;\r
+Bool_t plotESDGammaPhi                       = kTRUE;\r
+\r
+Bool_t plotESDMatchGammaOpeningAngle         = kTRUE;\r
+Bool_t plotESDMatchGammaEnergy               = kTRUE;\r
+Bool_t plotESDMatchGammaPt                   = kTRUE;\r
+Bool_t plotESDMatchGammaEta                  = kTRUE;\r
+Bool_t plotESDMatchGammaPhi                  = kTRUE;\r
+Bool_t plotESDMatchGammaMass                 = kTRUE;\r
+Bool_t plotESDMatchGammaWidth                = kTRUE;\r
+Bool_t plotESDMatchGammaChi2                 = kTRUE;\r
+Bool_t plotESDMatchGammaNDF                  = kTRUE;\r
+Bool_t plotESDMatchGammaR                    = kTRUE;\r
+Bool_t plotESDMatchGammaZR                   = kTRUE;\r
+Bool_t plotESDMatchGammaXY                   = kTRUE;\r
+\r
+Bool_t plotESDTwoGammaCombinationOpeningAngleGamma         = kTRUE;\r
+Bool_t plotESDTwoGammaCombinationEnergy      = kTRUE;\r
+Bool_t plotESDTwoGammaCombinationPt          = kTRUE;\r
+Bool_t plotESDTwoGammaCombinationEta         = kTRUE;\r
+Bool_t plotESDTwoGammaCombinationPhi         = kTRUE;\r
+Bool_t plotESDTwoGammaCombinationMass        = kTRUE;\r
+Bool_t plotESDTwoGammaCombinationR           = kTRUE;\r
+Bool_t plotESDTwoGammaCombinationZR          = kTRUE;\r
+Bool_t plotESDTwoGammaCombinationXY          = kTRUE;\r
+\r
+Bool_t plotESDBackgroundOpeningAngleGamma    = kTRUE;\r
+Bool_t plotESDBackgroundEnergy               = kTRUE;\r
+Bool_t plotESDBackgroundPt                   = kTRUE;\r
+Bool_t plotESDBackgroundEta                  = kTRUE;\r
+Bool_t plotESDBackgroundPhi                  = kTRUE;\r
+Bool_t plotESDBackgroundMass                 = kTRUE;\r
+Bool_t plotESDBackgroundR                    = kTRUE;\r
+Bool_t plotESDBackgroundZR                   = kTRUE;\r
+Bool_t plotESDBackgroundXY                   = kTRUE;\r
+\r
+Bool_t plotMapping                           = kTRUE;       \r
+\r
+Bool_t plotResolutiondPt                     = kTRUE;\r
+Bool_t plotResolutiondR                      = kTRUE;\r
+Bool_t plotResolutiondZ                      = kTRUE;\r
+  \r
+Bool_t plotResolutiondRdPt                   = kTRUE;\r
+\r
+Bool_t plotResolutionMCPt                    = kTRUE;\r
+Bool_t plotResolutionMCR                     = kTRUE;\r
+Bool_t plotResolutionMCZ                     = kTRUE;\r
+\r
+Bool_t plotResolutionESDPt                   = kTRUE;\r
+Bool_t plotResolutionESDR                    = kTRUE;\r
+Bool_t plotResolutionESDZ                    = kTRUE;\r
+\r
+Bool_t plotNumberOfV0s                       = kTRUE;\r
+Bool_t plotNumberOfSurvivingV0s              = kTRUE;\r
+\r
+  //  debug histograms\r
+Bool_t plotV0MassDebugCut1                   = kTRUE;\r
+Bool_t plotV0MassDebugCut2                   = kTRUE;\r
+Bool_t plotV0MassDebugCut3                   = kTRUE;\r
+Bool_t plotV0MassDebugCut4                   = kTRUE;\r
+Bool_t plotV0MassDebugCut5                   = kTRUE;\r
+Bool_t plotV0MassDebugCut6                   = kTRUE;\r
+Bool_t plotV0MassDebugCut7                   = kTRUE;\r
+Bool_t plotV0MassDebugCut8                   = kTRUE;\r
+\r
+Bool_t plotPi0Spectra                        = kTRUE;\r
+Bool_t plotEtaSpectra                        = kTRUE;\r
+\r
+\r
+/** ----------------- end define which histograms to plot here -------------------------------*/\r
+\r
+\r
+\r
+/** ----------- Define the binning for the different plot types here -------------------------*/\r
+//R-plots\r
+Int_t nXBinsR = 1000;\r
+Double_t firstXBinR = 0.;\r
+Double_t lastXBinR = 250.;\r
+\r
+//ZR-plots\r
+Int_t nXBinsZR = 2000;\r
+Double_t firstXBinZR = -10.;\r
+Double_t lastXBinZR = 10.;\r
+Int_t nYBinsZR = 1000;\r
+Double_t firstYBinZR = 0.;\r
+Double_t lastYBinZR = 250.;\r
+\r
+//XY-plots\r
+Int_t nXBinsXY = 2000;\r
+Double_t firstXBinXY = -250.;\r
+Double_t lastXBinXY = 250.;\r
+Int_t nYBinsXY = 2000;\r
+Double_t firstYBinXY = -250.;\r
+Double_t lastYBinXY = 250.;\r
+\r
+//OpenAngle-plots\r
+Int_t nXBinsOpeningAngle = 200;\r
+Double_t firstXBinOpeningAngle = 0.;\r
+Double_t lastXBinOpeningAngle = TMath::Pi()/2;\r
+\r
+//Energy-plots\r
+Int_t nXBinsEnergy = 500;\r
+Double_t firstXBinEnergy = 0.;\r
+Double_t lastXBinEnergy = 5.;\r
+\r
+//Pt-plots\r
+Int_t nXBinsPt = 500;\r
+Double_t firstXBinPt = 0.;\r
+Double_t lastXBinPt = 5.;\r
+\r
+//Eta-plots\r
+Int_t nXBinsEta = 400;\r
+Double_t firstXBinEta = -2.;\r
+Double_t lastXBinEta = 2.;\r
+\r
+//Phi-plots\r
+Int_t nXBinsPhi = 720;\r
+Double_t firstXBinPhi = -TMath::Pi();\r
+Double_t lastXBinPhi = TMath::Pi();\r
+\r
+//Mapping-plots\r
+Int_t nXBinsMapping = 40;\r
+Double_t firstXBinMapping = -20.;\r
+Double_t lastXBinMapping = 20.;\r
+Int_t nYBinsMapping = 30;\r
+Double_t firstYBinMapping = -1.5;\r
+Double_t lastYBinMapping = 1.5;\r
+\r
+//ResolutionPlots\r
+//RESdPt\r
+Int_t nXBinsResdPt=500;\r
+Int_t firstXBinResdPt= 0;\r
+Int_t lastXBinResdPt=5;\r
+Int_t nYBinsResdPt=1000;\r
+Int_t firstYBinResdPt= -5;\r
+Int_t lastYBinResdPt=5;\r
+\r
+//RESdR\r
+Int_t nXBinsResdR=1000;\r
+Int_t firstXBinResdR= 0;\r
+Int_t lastXBinResdR=250;\r
+Int_t nYBinsResdR=1000;\r
+Int_t firstYBinResdR= -25;\r
+Int_t lastYBinResdR=25;\r
+\r
+//RESdZ\r
+Int_t nXBinsResdZ=2000;\r
+Int_t firstXBinResdZ= -20;\r
+Int_t lastXBinResdZ=20;\r
+Int_t nYBinsResdZ=1000;\r
+Int_t firstYBinResdZ= -20;\r
+Int_t lastYBinResdZ=20;\r
+\r
+//RESdRdPt\r
+Int_t nXBinsResdRdPt=1000;\r
+Int_t firstXBinResdRdPt= -22;\r
+Int_t lastXBinResdRdPt=22;\r
+Int_t nYBinsResdRdPt=1000;\r
+Int_t firstYBinResdRdPt= -5;\r
+Int_t lastYBinResdRdPt=5;\r
+\r
+\r
+//RESMCPt\r
+Int_t nXBinsResPt=500;\r
+Int_t firstXBinResPt= 0;\r
+Int_t lastXBinResPt=5;\r
+\r
+//RESMCR\r
+Int_t nXBinsResR=1000;\r
+Int_t firstXBinResR= 0;\r
+Int_t lastXBinResR=250;\r
+\r
+//RESMCZ\r
+Int_t nXBinsResZ=1000;\r
+Int_t firstXBinResZ= 0;\r
+Int_t lastXBinResZ=250;\r
+\r
+//GammaMass-plots\r
+Int_t nXBinsGammaMass = 100;\r
+Double_t firstXBinGammaMass = 0.;\r
+Double_t lastXBinGammaMass = 1.;\r
+\r
+//Pi0Mass-plots\r
+Int_t nXBinsPi0Mass = 100;\r
+Double_t firstXBinPi0Mass = 0.;\r
+Double_t lastXBinPi0Mass = 1.;\r
+\r
+//EtaMass-plots\r
+Int_t nXBinsEtaMass = 100;\r
+Double_t firstXBinEtaMass = 0.;\r
+Double_t lastXBinEtaMass = 1.;\r
+\r
+//GammaWidth-plots\r
+Int_t nXBinsGammaWidth = 100;\r
+Double_t firstXBinGammaWidth = 0.;\r
+Double_t lastXBinGammaWidth = 1.;\r
+\r
+//GammaChi2-plots\r
+Int_t nXBinsGammaChi2 = 100;\r
+Double_t firstXBinGammaChi2 = 0;\r
+Double_t lastXBinGammaChi2 = 100.;\r
+\r
+//GammaNDF-plots\r
+Int_t nXBinsGammaNDF = 10;\r
+Double_t firstXBinGammaNDF = 0.;\r
+Double_t lastXBinGammaNDF = 10.;\r
+\r
+//Spectra-plots\r
+Int_t nXBinsSpectra = 100;\r
+Double_t firstXBinSpectra = 0.;\r
+Double_t lastXBinSpectra = 1.;\r
+Int_t nYBinsSpectra = 500;\r
+Double_t firstYBinSpectra = 0.;\r
+Double_t lastYBinSpectra = 100.;\r
+\r
+/** ---------- end Define the binning for the different plot types here ----------------------*/\r
+\r
+\r
+\r
+/************************************************************************************************\r
+ *                                                                                              *\r
+ *                                                                                              *\r
+ *                     EVERYTHING BELOW IS FOR DEVELOPERS ONLY                                  *\r
+ *                                                                                              *\r
+ *                                                                                              *\r
+ ************************************************************************************************/\r
+\r
+void ConfigGammaConversion(const char *chainName, const char *sample, int limit = 0){\r
+  \r
+  build();//build (if necessary) and load the libraries needed\r
+\r
+  gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C"); // load the CreateChain macro\r
+\r
+  AliLog::SetGlobalLogLevel(AliLog::kError);\r
+\r
+  //-------------------------------- Creating the histograms -------------------------------\r
+  AliGammaConversionHistograms * histograms = new AliGammaConversionHistograms();\r
+\r
+  if(plotMCEPR == kTRUE){ histograms->AddHistogram("MC_EP_R","Radius of gamma conversion points",nXBinsR, firstXBinR, lastXBinR,"counts","cm");}\r
+  if(plotMCEPZR == kTRUE){ histograms->AddHistogram("MC_EP_ZR","Radius of gamma conversion points vs Z",nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "cm", "cm");}\r
+  if(plotMCEPXY == kTRUE){ histograms->AddHistogram("MC_EP_XY","Gamma XY converison point.",nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "cm", "cm");}\r
+  if(plotMCEPOpeningAngle == kTRUE){ histograms->AddHistogram("MC_EP_OpeningAngle","Opening angle of e+e- pairs from gamma conversion",nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "counts", "cm");}\r
+\r
+  if(plotMCEEnergy == kTRUE){ histograms->AddHistogram("MC_E_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotMCEPt == kTRUE){ histograms->AddHistogram("MC_E_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotMCEEta == kTRUE){ histograms->AddHistogram("MC_E_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotMCEPhi == kTRUE){ histograms->AddHistogram("MC_E_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+\r
+  if(plotMCPEnergy == kTRUE){ histograms->AddHistogram("MC_P_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotMCPPt == kTRUE){ histograms->AddHistogram("MC_P_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotMCPEta == kTRUE){ histograms->AddHistogram("MC_P_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotMCPPhi == kTRUE){ histograms->AddHistogram("MC_P_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+\r
+  if(plotMCGammaEnergy == kTRUE){ histograms->AddHistogram("MC_Gamma_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotMCGammaPt == kTRUE){ histograms->AddHistogram("MC_Gamma_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotMCGammaEta == kTRUE){ histograms->AddHistogram("MC_Gamma_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotMCGammaPhi == kTRUE){ histograms->AddHistogram("MC_Gamma_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+\r
+  if(plotMCDirectGammaEnergy == kTRUE){ histograms->AddHistogram("MC_DirectGamma_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotMCDirectGammaPt == kTRUE){ histograms->AddHistogram("MC_DirectGamma_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotMCDirectGammaEta == kTRUE){ histograms->AddHistogram("MC_DirectGamma_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotMCDirectGammaPhi == kTRUE){ histograms->AddHistogram("MC_DirectGamma_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+\r
+  if(plotMCMatchGammaEta == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotMCMatchGammaPhi == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+  if(plotMCMatchGammaPt == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotMCMatchGammaEnergy == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotMCMatchGammaMass == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_Mass" ,"" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass, "", "");}\r
+  if(plotMCMatchGammaOpeningAngle == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_OpeningAngle" ,"" , nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}\r
+  if(plotMCMatchGammaR == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_R" ,"" , nXBinsR, firstXBinR, lastXBinR, "", "");}\r
+  if(plotMCMatchGammaZR == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_ZR" ,"" , nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "", "");}\r
+  if(plotMCMatchGammaXY == kTRUE){ histograms->AddHistogram("MC_Match_Gamma_XY" ,"" , nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "", "");}\r
+\r
+  if(plotMCPi0Eta == kTRUE){ histograms->AddHistogram("MC_Pi0_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotMCPi0Phi == kTRUE){ histograms->AddHistogram("MC_Pi0_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+  if(plotMCPi0Pt == kTRUE){ histograms->AddHistogram("MC_Pi0_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotMCPi0Energy == kTRUE){ histograms->AddHistogram("MC_Pi0_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotMCPi0Mass == kTRUE){ histograms->AddHistogram("MC_Pi0_Mass" ,"" , nXBinsPi0Mass, firstXBinPi0Mass, lastXBinPi0Mass, "", "");}\r
+  if(plotMCPi0OpeningAngle == kTRUE){ histograms->AddHistogram("MC_Pi0_GammaDaughter_OpeningAngle" ,"" , nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}\r
+  if(plotMCPi0R == kTRUE){ histograms->AddHistogram("MC_Pi0_R" ,"" , nXBinsR, firstXBinR, lastXBinR, "", "");}\r
+  if(plotMCPi0ZR == kTRUE){ histograms->AddHistogram("MC_Pi0_ZR" ,"" , nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "", "");}\r
+  if(plotMCPi0XY == kTRUE){ histograms->AddHistogram("MC_Pi0_XY" ,"" , nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "", "");}\r
+\r
+  if(plotMCPi0Eta == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotMCPi0Phi == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+  if(plotMCPi0Pt == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotMCPi0Energy == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotMCPi0Mass == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_Mass" ,"" , nXBinsPi0Mass, firstXBinPi0Mass, lastXBinPi0Mass, "", "");}\r
+  if(plotMCPi0OpeningAngle == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_GammaDaughter_OpeningAngle" ,"" , nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}\r
+  if(plotMCPi0R == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_R" ,"" , nXBinsR, firstXBinR, lastXBinR, "", "");}\r
+  if(plotMCPi0ZR == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_ZR" ,"" , nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "", "");}\r
+  if(plotMCPi0XY == kTRUE){ histograms->AddHistogram("MC_Pi0_Secondaries_XY" ,"" , nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "", "");}\r
+\r
+  if(plotMCEtaEta == kTRUE){ histograms->AddHistogram("MC_Eta_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotMCEtaPhi == kTRUE){ histograms->AddHistogram("MC_Eta_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+  if(plotMCEtaPt == kTRUE){ histograms->AddHistogram("MC_Eta_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotMCEtaEnergy == kTRUE){ histograms->AddHistogram("MC_Eta_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotMCEtaMass == kTRUE){ histograms->AddHistogram("MC_Eta_Mass" ,"" , nXBinsEtaMass, firstXBinEtaMass, lastXBinEtaMass, "", "");}\r
+  if(plotMCEtaOpeningAngleGamma == kTRUE){ histograms->AddHistogram("MC_Eta_GammaDaughter_OpeningAngle" ,"" , nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}\r
+  if(plotMCEtaR == kTRUE){ histograms->AddHistogram("MC_Eta_R" ,"" , nXBinsR, firstXBinR, lastXBinR, "", "");}\r
+  if(plotMCEtaZR == kTRUE){ histograms->AddHistogram("MC_Eta_ZR" ,"" , nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "", "");}\r
+  if(plotMCEtaXY == kTRUE){ histograms->AddHistogram("MC_Eta_XY" ,"" , nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "", "");}\r
+    \r
+  // Histograms from esd tracks\r
+  if(plotESDEPR == kTRUE){ histograms->AddHistogram("ESD_EP_R" ,"" , nXBinsR, firstXBinR, lastXBinR, "", "");}\r
+  if(plotESDEPZR == kTRUE){ histograms->AddHistogram("ESD_EP_ZR" ,"" , nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "", "");}\r
+  if(plotESDEPXY == kTRUE){ histograms->AddHistogram("ESD_EP_XY" ,"" , nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "", "");}\r
+  if(plotESDEPOpeningAngle == kTRUE){ histograms->AddHistogram("ESD_EP_OpeningAngle" ,"" , nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}\r
+\r
+  if(plotESDEEnergy == kTRUE){ histograms->AddHistogram("ESD_E_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotESDEPt == kTRUE){ histograms->AddHistogram("ESD_E_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotESDEEta == kTRUE){ histograms->AddHistogram("ESD_E_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotESDEPhi == kTRUE){ histograms->AddHistogram("ESD_E_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+\r
+  if(plotESDPEnergy == kTRUE){ histograms->AddHistogram("ESD_P_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotESDPPt == kTRUE){ histograms->AddHistogram("ESD_P_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotESDPEta == kTRUE){ histograms->AddHistogram("ESD_P_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotESDPPhi == kTRUE){ histograms->AddHistogram("ESD_P_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+\r
+  if(plotESDGammaEnergy == kTRUE){ histograms->AddHistogram("ESD_Gamma_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotESDGammaPt == kTRUE){ histograms->AddHistogram("ESD_Gamma_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotESDGammaEta == kTRUE){ histograms->AddHistogram("ESD_Gamma_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotESDGammaPhi == kTRUE){ histograms->AddHistogram("ESD_Gamma_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+\r
+  if(plotESDMatchGammaOpeningAngle == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_OpeningAngle" ,"" , nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}\r
+  if(plotESDMatchGammaEnergy == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotESDMatchGammaPt == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotESDMatchGammaEta == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotESDMatchGammaPhi == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+  if(plotESDMatchGammaMass == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_Mass" ,"" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass, "", "");}\r
+  if(plotESDMatchGammaWidth == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_Width" ,"" , nXBinsGammaWidth, firstXBinGammaWidth, lastXBinGammaWidth, "", "");}\r
+  if(plotESDMatchGammaChi2 == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_Chi2" ,"" , nXBinsGammaChi2, firstXBinGammaChi2, lastXBinGammaChi2, "", "");}\r
+  if(plotESDMatchGammaNDF == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_NDF" ,"" , nXBinsGammaNDF, firstXBinGammaNDF, lastXBinGammaNDF, "", "");}\r
+  if(plotESDMatchGammaR == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_R" ,"" , nXBinsR, firstXBinR, lastXBinR, "", "");}\r
+  if(plotESDMatchGammaZR == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_ZR" ,"" , nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "", "");}\r
+  if(plotESDMatchGammaXY == kTRUE){ histograms->AddHistogram("ESD_Match_Gamma_XY" ,"" , nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "", "");}\r
+\r
+  if(plotESDTwoGammaCombinationOpeningAngleGamma == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_GammaDaughter_OpeningAngle" ,"" , nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}\r
+  if(plotESDTwoGammaCombinationEnergy == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotESDTwoGammaCombinationPt == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotESDTwoGammaCombinationEta == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotESDTwoGammaCombinationPhi == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+  if(plotESDTwoGammaCombinationMass == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_Mass" ,"" , nXBinsPi0Mass, firstXBinPi0Mass, lastXBinPi0Mass, "", "");}\r
+  if(plotESDTwoGammaCombinationR == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_R" ,"" , nXBinsR, firstXBinR, lastXBinR, "", "");}\r
+  if(plotESDTwoGammaCombinationZR == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_ZR" ,"" , nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "", "");}\r
+  if(plotESDTwoGammaCombinationXY == kTRUE){ histograms->AddHistogram("ESD_TwoGammaCombination_XY" ,"" , nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "", "");}\r
+\r
+  if(plotESDBackgroundOpeningAngleGamma == kTRUE){ histograms->AddHistogram("ESD_Background_GammaDaughter_OpeningAngle" ,"" , nXBinsOpeningAngle, firstXBinOpeningAngle, lastXBinOpeningAngle, "", "");}\r
+  if(plotESDBackgroundEnergy == kTRUE){ histograms->AddHistogram("ESD_Background_Energy" ,"" , nXBinsEnergy, firstXBinEnergy, lastXBinEnergy, "", "");}\r
+  if(plotESDBackgroundPt == kTRUE){ histograms->AddHistogram("ESD_Background_Pt" ,"" , nXBinsPt, firstXBinPt, lastXBinPt, "", "");}\r
+  if(plotESDBackgroundEta == kTRUE){ histograms->AddHistogram("ESD_Background_Eta" ,"" , nXBinsEta, firstXBinEta, lastXBinEta, "", "");}\r
+  if(plotESDBackgroundPhi == kTRUE){ histograms->AddHistogram("ESD_Background_Phi" ,"" , nXBinsPhi, firstXBinPhi, lastXBinPhi, "", "");}\r
+  if(plotESDBackgroundMass == kTRUE){ histograms->AddHistogram("ESD_Background_Mass" ,"" , nXBinsEtaMass, firstXBinEtaMass, lastXBinEtaMass, "", "");}\r
+  if(plotESDBackgroundR == kTRUE){ histograms->AddHistogram("ESD_Background_R" ,"" , nXBinsR, firstXBinR, lastXBinR, "", "");}\r
+  if(plotESDBackgroundZR == kTRUE){ histograms->AddHistogram("ESD_Background_ZR" ,"" , nXBinsZR, firstXBinZR, lastXBinZR, nYBinsZR, firstYBinZR, lastYBinZR, "", "");}\r
+  if(plotESDBackgroundXY == kTRUE){ histograms->AddHistogram("ESD_Background_XY" ,"" , nXBinsXY, firstXBinXY, lastXBinXY, nYBinsXY, firstYBinXY, lastYBinXY, "", "");}\r
+\r
+  if(plotMapping == kTRUE){\r
+    histograms->InitializeMappingValues(nPhiIndex,nRIndex,nXBinsMapping,minRadius,maxRadius,nYBinsMapping,minPhi,maxPhi);\r
+    histograms->AddMappingHistograms(nPhiIndex,nRIndex,nXBinsMapping,minRadius,maxRadius,nYBinsMapping,minPhi,maxPhi);\r
+  }\r
+\r
+  if(plotResolutiondPt == kTRUE){histograms->AddHistogram("Resolution_dPt" ,"" , nXBinsResdPt, firstXBinResdPt, lastXBinResdPt, nYBinsResdPt, firstYBinResdPt, lastYBinResdPt, "", "");}\r
+  if(plotResolutiondR == kTRUE){histograms->AddHistogram("Resolution_dR" ,"" , nXBinsResdR, firstXBinResdR, lastXBinResdR, nYBinsResdR, firstYBinResdR, lastYBinResdR, "", "");}\r
+  if(plotResolutiondZ == kTRUE){histograms->AddHistogram("Resolution_dZ" ,"" , nXBinsResdZ, firstXBinResdZ, lastXBinResdZ, nYBinsResdZ, firstYBinResdZ, lastYBinResdZ, "", "");}\r
+  \r
+  if(plotResolutiondRdPt == kTRUE){histograms->AddHistogram("Resolution_dR_dPt" ,"" , nXBinsResdRdPt, firstXBinResdRdPt, lastXBinResdRdPt, nYBinsResdRdPt, firstYBinResdRdPt, lastYBinResdRdPt, "", "");}\r
+  \r
+  if(plotResolutionMCPt == kTRUE){histograms->AddHistogram("Resolution_MC_Pt" ,"" , nXBinsResPt, firstXBinResPt, lastXBinResPt,"","");}\r
+  if(plotResolutionMCR == kTRUE){histograms->AddHistogram("Resolution_MC_R" ,"" , nXBinsResR, firstXBinResR, lastXBinResR,"","");}\r
+  if(plotResolutionMCZ == kTRUE){histograms->AddHistogram("Resolution_MC_Z" ,"" , nXBinsResZ, firstXBinResZ, lastXBinResZ,"","");}\r
+  \r
+  if(plotResolutionESDPt == kTRUE){histograms->AddHistogram("Resolution_ESD_Pt" ,"" , nXBinsResPt, firstXBinResPt, lastXBinResPt,"","");}\r
+  if(plotResolutionESDR == kTRUE){histograms->AddHistogram("Resolution_ESD_R" ,"" , nXBinsResR, firstXBinResR, lastXBinResR,"","");}\r
+  if(plotResolutionESDZ == kTRUE){histograms->AddHistogram("Resolution_ESD_Z" ,"" , nXBinsResZ, firstXBinResZ, lastXBinResZ,"","");}\r
+  \r
+  if(plotNumberOfV0s == kTRUE){histograms->AddHistogram("NumberOfV0s","Number of v0s",100, 0, 100,"","");}\r
+  if(plotNumberOfSurvivingV0s == kTRUE){histograms->AddHistogram("NumberOfSurvivingV0s","Number of surviving v0s",100, 0, 100,"","");}\r
+\r
+  //  debug histograms\r
+  if(plotV0MassDebugCut1 == kTRUE){histograms->AddHistogram("V0MassDebugCut1" ,"debug1" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass,"","");}\r
+  if(plotV0MassDebugCut2 == kTRUE){histograms->AddHistogram("V0MassDebugCut2" ,"debug2" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass,"","");}\r
+  if(plotV0MassDebugCut3 == kTRUE){histograms->AddHistogram("V0MassDebugCut3" ,"debug3" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass,"","");}\r
+  if(plotV0MassDebugCut4 == kTRUE){histograms->AddHistogram("V0MassDebugCut4" ,"debug4" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass,"","");}\r
+  if(plotV0MassDebugCut5 == kTRUE){histograms->AddHistogram("V0MassDebugCut5" ,"debug5" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass,"","");}\r
+  if(plotV0MassDebugCut6 == kTRUE){histograms->AddHistogram("V0MassDebugCut6" ,"debug6" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass,"","");}\r
+  if(plotV0MassDebugCut7 == kTRUE){histograms->AddHistogram("V0MassDebugCut7" ,"debug7" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass,"","");}\r
+  if(plotV0MassDebugCut8 == kTRUE){histograms->AddHistogram("V0MassDebugCut8" ,"debug8" , nXBinsGammaMass, firstXBinGammaMass, lastXBinGammaMass,"","");}\r
+\r
+\r
+  if(plotPi0Spectra == kTRUE){histograms->AddHistogram("InvMass_vs_Pt_Spectra" ,"Invariant Mass vs Pt" , nXBinsSpectra, firstXBinSpectra, lastXBinSpectra,nYBinsSpectra, firstYBinSpectra, lastYBinSpectra,"InvMass [GeV]","Pt [GeV]");}\r
+\r
+  if(plotPi0Spectra == kTRUE && calculateBackground == kTRUE){histograms->AddHistogram("Background_InvMass_vs_Pt_Spectra" ,"Background Invariant Mass vs Pt" , nXBinsSpectra, firstXBinSpectra, lastXBinSpectra,nYBinsSpectra, firstYBinSpectra, lastYBinSpectra,"InvMass [GeV]","Pt [GeV]");}\r
+\r
+  \r
+\r
+  //------------------------------ end Creating the histograms -----------------------------\r
+\r
+  // Create the Analysis manager\r
+  AliAnalysisManager *mgr  = new AliAnalysisManager("My Manager", "My Analysis");\r
+\r
+  // Define Input Event Handler \r
+  AliESDInputHandler* inpHandler = new AliESDInputHandler();\r
+\r
+  // Define Output Event Handler\r
+  AliAODHandler* aodHandler = new AliAODHandler();\r
+  aodHandler->SetOutputFileName("aodAliGammaConversion.root");\r
+  \r
+  // Define MC Truth Event Handler\r
+  AliMCEventHandler* mcHandler = new AliMCEventHandler();\r
+  \r
+  // Add Handlers to the Task Manager\r
+  mgr->SetInputEventHandler  (inpHandler);\r
+  mgr->SetOutputEventHandler (aodHandler);\r
+  mgr->SetMCtruthEventHandler(mcHandler);\r
+\r
+  // Be sure you are told what you are doing\r
+  mgr->SetDebugLevel(10);\r
+\r
+  // Declare Common Input Tchain\r
+  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("Chain",TChain::Class(),AliAnalysisManager::kInputContainer);\r
+\r
+  // Common Output Tree in common ‘default’ output file\r
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree", TTree::Class(),AliAnalysisManager::kOutputContainer, "default");\r
+\r
+  // Private output objects\r
+  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("histogramsAliGammaConversion", TList::Class(),AliAnalysisManager::kOutputContainer, "histogramsAliGammaConversion.root");\r
+\r
+\r
+  //------------------------ END: Define input/output handlers ---------------------------------------------------\r
+\r
+\r
+  //check for errors in the specified data\r
+  if(useKFParticle == kTRUE && useESDTrack == kTRUE){\r
+    //Print warning, cannot use both\r
+  }\r
+  if(useKFParticle == kFALSE && useESDTrack == kFALSE){\r
+    //Print warning, one have to be specified\r
+  }\r
+\r
+\r
+  //Create the V0Reader\r
+  AliV0Reader * v0Reader = new AliV0Reader();\r
+  if(useKFParticle){\r
+    v0Reader->UseKFParticle();\r
+  }\r
+  else if(useESDTrack){\r
+    v0Reader->UseESDTrack();\r
+  }\r
+  v0Reader->SetNegativeTrackPID(pidOfNegativeTrack);\r
+  v0Reader->SetPositiveTrackPID(pidOfPositiveTrack);\r
+  v0Reader->SetMaxRCut(maxRCut);\r
+  v0Reader->SetEtaCut(etaCut);\r
+  v0Reader->SetPtCut(ptCut);\r
+  v0Reader->SetChi2CutConversion(chi2CutConversion);\r
+  v0Reader->SetChi2CutMeson(chi2CutMeson);\r
+  v0Reader->SetPIDProbability(probElectron);\r
+  v0Reader->SetXVertexCut(xVertexCut);\r
+  v0Reader->SetYVertexCut(yVertexCut);\r
+  v0Reader->SetZVertexCut(zVertexCut);\r
+  v0Reader->SetSigmaMass(sigmaCutGammaMass);\r
+  v0Reader->SetUseImprovedVertex(useImprovedVertex);\r
+  v0Reader->SetDoMCTruth(doMCTruth);\r
+\r
+  // Create the GammaConversionTask\r
+  AliAnalysisTaskGammaConversion *gammaconversion = new AliAnalysisTaskGammaConversion("GammaConversionTask");\r
+  gammaconversion->SetDebugLevel(10);\r
+  \r
+  gammaconversion->SetV0Reader(v0Reader);\r
+  gammaconversion->SetCalculateBackground(calculateBackground);\r
+  gammaconversion->Init();\r
+  \r
+  gammaconversion->SetElectronMass(electronMass);\r
+  gammaconversion->SetGammaMass(gammaMass);\r
+  gammaconversion->SetPi0Mass(pi0Mass);\r
+  gammaconversion->SetEtaMass(etaMass);\r
+\r
+  gammaconversion->SetGammaWidth(gammaWidth);\r
+  gammaconversion->SetPi0Width(pi0Width);\r
+  gammaconversion->SetEtaWidth(etaWidth);\r
+\r
+  // define the width constraint used by KF particle.\r
+  Double_t gammaWidth = 0.01;\r
+  Double_t pi0Width   = 0.01;\r
+  Double_t etaWidth   = 0.01;\r
+\r
+  gammaconversion->SetHistograms(histograms);\r
+  v0Reader->SetHistograms(histograms);// also give the pointer to the v0reader, for debugging cuts\r
+  \r
+  gammaconversion->SetDoMCTruth(doMCTruth);\r
+\r
+\r
+  // Add task to the manager \r
+  mgr->AddTask(gammaconversion);\r
+\r
+  // Connect I/O to the task\r
+  mgr->ConnectInput (gammaconversion, 0, cinput1);\r
+  mgr->ConnectOutput(gammaconversion, 0, coutput1);\r
+  mgr->ConnectOutput(gammaconversion, 1, coutput2);\r
+\r
+  TChain* chain= CreateESDChain(sample,numberOfFilesToAnalyze);\r
+  \r
+  mgr->InitAnalysis();\r
+  \r
+  mgr->PrintStatus();\r
+  \r
+  mgr->StartAnalysis("local",chain);\r
+}\r
+\r
+\r
+\r
+\r
+void build() {\r
+  TStopwatch timer;\r
+  timer.Start();\r
+  gSystem->Load("libTree.so");\r
+  gSystem->Load("libGeom");\r
+  //  gSystem->Load("libANALYSISalice");\r
+\r
+  ////\r
+  ////\r
+  //Setting up STEERBase.par//\r
+  ////\r
+  setupPar("STEERBase");\r
+  gSystem->Load("libSTEERBase.so");\r
+\r
+  ////\r
+  //Setting up ESD.par//\r
+  ////\r
+  setupPar("ESD");\r
+  gSystem->Load("libVMC.so");\r
+  gSystem->Load("libESD.so");\r
+\r
+  ////\r
+  //Setting up AOD.par//\r
+  ////\r
+  setupPar("AOD");\r
+  gSystem->Load("libAOD.so");\r
+                                                                \r
+  ////\r
+  //Setting up ANALYSIS.par//\r
+  ////\r
+  setupPar("ANALYSIS");\r
+  gSystem->Load("libANALYSIS.so");\r
+\r
+  ////\r
+  //Setting up ANALYSISalice.par//\r
+  ////\r
+  setupPar("ANALYSISalice");\r
+  gSystem->Load("libANALYSISalice.so");\r
+                                                                                                                                  \r
+  ////\r
+  //Setting up PWG4Gamma.par//\r
+  ////\r
+  //  setupPar("PWG4Gamma");\r
+  //  gSystem->Load("libPWG4Gamma.so");\r
+  setupPar("PWG4PartCorr");\r
+  gSystem->Load("libPWG4PartCorr.so");\r
+  //if head:: use PWG4PartCorr\r
+             \r
+  //gROOT->LoadMacro("AliAnalysisTaskPi0.cxx+");\r
+  // gROOT->LoadMacro("AliAnalysisTaskPtMC.cxx+");\r
+  //  gROOT->LoadMacro("AliAnalysisTaskPi0MC.cxx+");\r
+  //  gROOT->LoadMacro("AliAnaScale.cxx+");\r
+\r
+\r
+  //gROOT->LoadMacro("$ALICEROOT/PWG0/CreateESDChain.C");\r
+  //TChain* chain = CreateESDChain("files1.txt");\r
+\r
+\r
+\r
+  ////\r
+\r
+\r
+}\r
+\r
+Int_t setupPar(const char* pararchivename) {\r
+  ///////////////////\r
+  // Setup PAR File//\r
+  ///////////////////\r
+  if (pararchivename) {\r
+    char processline[1024];\r
+    sprintf(processline,".! tar xvzf %s.par",pararchivename);\r
+    gROOT->ProcessLine(processline);\r
+    const char* ocwd = gSystem->WorkingDirectory();\r
+    gSystem->ChangeDirectory(pararchivename);\r
+                                                                                                                                               \r
+    // check for BUILD.sh and execute\r
+    if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {\r
+      printf("*******************************\n");\r
+      printf("*** Building PAR archive    ***\n");\r
+      printf("*******************************\n");\r
+                                                                                                                                               \r
+      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {\r
+        Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");\r
+        return -1;\r
+      }\r
+    }\r
+    // check for SETUP.C and execute\r
+    if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {\r
+      printf("*******************************\n");\r
+      printf("*** Setup PAR archive       ***\n");\r
+      printf("*******************************\n");\r
+      gROOT->Macro("PROOF-INF/SETUP.C");\r
+    }\r
+                                                                                                                                               \r
+    gSystem->ChangeDirectory("../");\r
+  }                                                                                                                                               \r
+  return 1;\r
+}\r