ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

// macro for creating histograms
// author: Eulogio Serradilla <eulogio.serradilla@cern.ch>

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TH1D.h>
#include <TH2D.h>
#include <TMath.h>
#include <TString.h>
#include "AliLnHistoMap.h"
#endif

AliLnHistoMap* CreateHistograms(const TString& species, const TString& binSize, Bool_t simulation, Double_t maxDCAxy, Double_t maxEta, Double_t maxY, Bool_t heavyIons)
{
//
// Define an create the histograms for the analysis
//
	AliLnHistoMap* hMap = new AliLnHistoMap();
	
	Int_t A = 1;
	if(species == "Deuteron")    A = 2;
	else if(species == "Triton") A = 3;
	else if(species == "He3")    A = 3;
	else if(species == "Alpha")  A = 4;
	
	TString particle[] = { Form("Anti%s",species.Data()), species };
	
	// pt
	Int_t nptbins = 100;
	Double_t* ptbins;
	
	if(binSize == "d_900GeV")
	{
		nptbins = 11;
		ptbins  = new Double_t[nptbins+1];
		Double_t bin[] = { 0., 0.3, 0.4, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.9, 2.1 };
		for(Int_t i=0; i<nptbins+1; ++i) ptbins[i] = A*bin[i];
	}
	else if(binSize == "d_2.76TeV")
	{
		nptbins = 22;
		ptbins  = new Double_t[nptbins+1];
		Double_t bin[] = { 0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4 };
		for(Int_t i=0; i<nptbins+1; ++i) ptbins[i] = A*bin[i];
	}
	else if(binSize == "d_7TeV")
	{
		nptbins = 48;
		ptbins  = new Double_t[nptbins+1];
		Double_t bin[] = { 0., 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.95, 1.00, 1.05, 1.10, 1.15, 1.20, 1.25, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50 };
		for(Int_t i=0; i<nptbins+1; ++i) ptbins[i] = A*bin[i];
	}
	else if(binSize=="He3_7TeV")
	{
		nptbins = 5;
		ptbins  = new Double_t[nptbins+1];
		Double_t bin[] = { 0., 0.4, 0.6, 1.0, 2.0, 3.0 };
		for(Int_t i=0; i<nptbins+1; ++i) ptbins[i] = A*bin[i];
	}
	else
	{
		nptbins = 100;
		ptbins  = new Double_t[nptbins+1];
		Double_t binwidth = 0.1;
		for(Int_t i=0; i<nptbins+1; ++i) ptbins[i] = 0 + (A*binwidth)*i;
	}
	
	// eta and rapidity
	Int_t etaBins = 300;
	Double_t etaMin = -1.5;
	Double_t etaMax = 1.5;
	
	// phi
	Int_t phiBins = 180;
	Double_t phiMin = 0.;
	Double_t phiMax = 2.*TMath::Pi();
	
	// DCA distribution bin width = 0.001 cm
	Int_t dcaxyBins = 2.*maxDCAxy/0.001;
	Double_t dcaxyMin = -maxDCAxy;
	Double_t dcaxyMax = maxDCAxy;
	
	Int_t dcazBins = 1300;
	Double_t dcazMin = -3.25;
	Double_t dcazMax = 3.25;
	
	// m2 bins
	Int_t m2Bins = 400;
	Double_t m2Min = 0;
	Double_t m2Max = 20;
	Double_t dm2Min = -10;
	Double_t dm2Max = 10;
	
	// t bins
	Int_t tBins = 500;
	Double_t tMin = 0;
	Double_t tMax = 100;
	Double_t dtMin = -10;
	Double_t dtMax = 10;
	
	// track multiplicity
	Int_t ntrkBins = 200;
	Double_t ntrkMin = 0;
	Double_t ntrkMax = 200;
	
	Int_t zmultBins = 150;
	Double_t zmultMin = 0;
	Double_t zmultMax = 15;
	
	if(heavyIons)
	{
		ntrkBins = 2000;
		ntrkMin  = 0;
		ntrkMax  = 2000;
		
		zmultBins = 2000;
		zmultMin = 0;
		zmultMax = 200;
	}
	
	// ITS and TPC dE/dx
	Int_t dEdxBins = 3000;
	Double_t mindEdx = 0.001;
	Double_t maxdEdx = 3000.001;
	
	// stats
	
	TH1D* hStats = new TH1D(species + "_Stats", "Stats", 8, 0, 8);
	
	hStats->GetXaxis()->SetBinLabel(1,"Events");
	hStats->GetXaxis()->SetBinLabel(2,"Trig");
	hStats->GetXaxis()->SetBinLabel(3,"Ana");
	hStats->GetXaxis()->SetBinLabel(4,"Vtx");
	hStats->GetXaxis()->SetBinLabel(5,"Vz");
	hStats->GetXaxis()->SetBinLabel(6,"Vxy");
	hStats->GetXaxis()->SetBinLabel(7,"VertexerZ");
	hStats->GetXaxis()->SetBinLabel(8,"NoPileUp");
	
	hStats->SetStats(0);
	hMap->Add( species + "_Stats", (TObject*)hStats);
	
	if(simulation)
	{
		// PID table
		
		TH2D* hPidTable = new TH2D(species + "_Stats_PID_Table", "Particle table (Row: PID, Col: MC)", 10,0,10,10,0,10);
		
		hPidTable->GetXaxis()->SetBinLabel(1,"e");
		hPidTable->GetXaxis()->SetBinLabel(2,"#mu");
		hPidTable->GetXaxis()->SetBinLabel(3,"#pi");
		hPidTable->GetXaxis()->SetBinLabel(4,"K");
		hPidTable->GetXaxis()->SetBinLabel(5,"p");
		hPidTable->GetXaxis()->SetBinLabel(6,"d");
		hPidTable->GetXaxis()->SetBinLabel(7,"t");
		hPidTable->GetXaxis()->SetBinLabel(8,"h");
		hPidTable->GetXaxis()->SetBinLabel(9,"#alpha");
		hPidTable->GetXaxis()->SetBinLabel(10,"sum");
		
		hPidTable->GetYaxis()->SetBinLabel(1,"e");
		hPidTable->GetYaxis()->SetBinLabel(2,"#mu");
		hPidTable->GetYaxis()->SetBinLabel(3,"#pi");
		hPidTable->GetYaxis()->SetBinLabel(4,"K");
		hPidTable->GetYaxis()->SetBinLabel(5,"p");
		hPidTable->GetYaxis()->SetBinLabel(6,"d");
		hPidTable->GetYaxis()->SetBinLabel(7,"t");
		hPidTable->GetYaxis()->SetBinLabel(8,"h");
		hPidTable->GetYaxis()->SetBinLabel(9,"#alpha");
		hPidTable->GetYaxis()->SetBinLabel(10,"sum");
		
		hPidTable->SetStats(0);
		hMap->Add( species + "_Stats_PID_Table", (TObject*)hPidTable);
	}
	
	TH1D* hStatsPid = new TH1D(species + "_Stats_PID", "Stats PID", 9, 0, 9);
	hStatsPid->GetXaxis()->SetBinLabel(1,"e");
	hStatsPid->GetXaxis()->SetBinLabel(2,"#mu");
	hStatsPid->GetXaxis()->SetBinLabel(3,"#pi");
	hStatsPid->GetXaxis()->SetBinLabel(4,"K");
	hStatsPid->GetXaxis()->SetBinLabel(5,"p");
	hStatsPid->GetXaxis()->SetBinLabel(6,"d");
	hStatsPid->GetXaxis()->SetBinLabel(7,"t");
	hStatsPid->GetXaxis()->SetBinLabel(8,"h");
	hStatsPid->GetXaxis()->SetBinLabel(9,"#alpha");
	hStatsPid->SetStats(0);
	hMap->Add( species + "_Stats_PID", (TObject*)hStatsPid);
	
	// multiplicity
	
	hMap->Add( species + "_Event_Ntrk", ntrkBins, ntrkMin, ntrkMax, Form("Track multiplicity (all events, |#eta|< %.1f)",maxEta), "N_{trk}", "Events");
	hMap->Add( species + "_Event_Zmult", zmultBins, zmultMin, zmultMax, Form("KNO multiplicity (all events, |#eta|< %.1f)", maxEta), "N_{trk}/<N_{trk}>", "Events");
	hMap->Add( species + "_Ana_Event_Ntrk", ntrkBins, ntrkMin, ntrkMax, Form("Track multiplicity (|#eta|< %.1f)", maxEta), "N_{trk}", "Events");
	hMap->Add( species + "_Ana_Event_Zmult", zmultBins, zmultMin, zmultMax, Form("KNO multiplicity (|#eta|< %.1f)", maxEta), "N_{trk}/<N_{trk}>", "Events");
	
	for(Int_t i=0; i<2; ++i)
	{
		hMap->Add( particle[i] + "_PID_Ntrk_pTPC", nptbins, ptbins, ntrkBins, ntrkMin, ntrkMax, particle[i] + " candidates " + Form("(|#eta|< %.1f)", maxEta), "p_{TPC}/Z (GeV/c)", "N_{trk}");
		
		hMap->Add( particle[i] + "_PID_Zmult_pTPC", nptbins, ptbins, zmultBins, zmultMin, zmultMax, particle[i] + " candidates " + Form("(|#eta|< %.1f)", maxEta), "p_{TPC}/Z (GeV/c)", "z_{mult}");
		
		if(simulation)
		{
			hMap->Add( particle[i] + "_Gen_Nch", ntrkBins, ntrkMin, ntrkMax, Form("Primary %ss (|#eta|< %.1f)", particle[i].Data(), maxEta), "N_{ch}");
			
			hMap->Add( particle[i] + "_Sim_Ntrk", ntrkBins, ntrkMin, ntrkMax, particle[i] + Form("s (|#eta|< %.1f)", maxEta), "N_{trk}");
		}
	}
	
	if(simulation)
	{
		hMap->Add( species + "_Ana_Event_Nch_Ntrk",  ntrkBins, ntrkMin, ntrkMax,  ntrkBins, ntrkMin, ntrkMax, Form("Track multiplicity (|#eta|< %.1f)", maxEta), "N_{trk}", "N_{ch}");
	}
	
	hMap->Add( species + "_Vertex_XZ", 500, -50., 50., 800, -1., 1., "Primary Vertex", "Z (cm)", "X (cm)");
	hMap->Add( species + "_Vertex_YZ", 500, -50., 50., 800, -1., 1., "Primary Vertex", "Z (cm)", "Y (cm)");
	hMap->Add( species + "_Vertex_YX", 800, -1., 1., 800, -1., 1., "Primary Vertex", "X (cm)", "Y (cm)");
	
	hMap->Add( species + "_Ana_Vertex_XZ", 500, -50., 50., 800, -1., 1., "Primary Vertex", "Z (cm)", "X (cm)");
	hMap->Add( species + "_Ana_Vertex_YZ", 500, -50., 50., 800, -1., 1., "Primary Vertex", "Z (cm)", "Y (cm)");
	hMap->Add( species + "_Ana_Vertex_YX", 800, -1., 1., 800, -1., 1., "Primary Vertex", "X (cm)", "Y (cm)");
	
	if(heavyIons)
	{
		hMap->Add( species + "_V0_Mult", 1000, 0, 100000., "Corrected V0 Multiplicity", "V0M", "Events");
		hMap->Add( species + "_V0_Scaled_Mult", 1000, 0, 10000., "Corrected Scaled V0 Multiplicity", "V0SM", "Events");
	
		hMap->Add( species + "_Ana_V0_Mult", 1000, 0, 100000., "Corrected V0 Multiplicity (after centrality sel.)", "V0M", "Events");
		hMap->Add( species + "_Ana_V0_Scaled_Mult", 1000, 0, 10000., "Corrected Scaled V0 Multiplicity (after centrality sel.)", "V0SM", "Events");
	}
	
	// positive and negative
	
	Bool_t logx = 1;
	Bool_t logy = 1;
	
	for(Int_t i=0; i<2; ++i)
	{
		// detector signals
		
		hMap->Add( particle[i] + "_ITS_dEdx_P", 1000, 0.001, 10.001, dEdxBins, mindEdx, maxdEdx, "", "p/Z (GeV/c)", "dE/dx",logx,logy);
		hMap->Add( particle[i] + "_TPC_dEdx_P", 1000, 0.001, 10.001, dEdxBins, mindEdx, maxdEdx, "", "p_{TPC}/Z (GeV/c)", "dE/dx",logx,logy);
		hMap->Add( particle[i] + "_TOF_Beta_P", 1000, 0.001, 10.001, 1200, 0.001, 1.2, "", "p_{TOF}/Z (GeV/c)", "#beta",logx,logy);
		hMap->Add( particle[i] + "_TOF_Mass_P", 1000, 0.001, 10.001, 500, 0.01, 5., "", "p_{TOF}/Z (GeV/c)", "Mass (GeV/c^{2})");
		
		// TrackCuts
		
		hMap->Add( particle[i] + "_TrackCuts_DCAxy", 200, -4, 4, "Track cuts", "DCA_{xy} (cm)");
		hMap->Add( particle[i] + "_TrackCuts_DCAz", 200, -6, 6, "Track cuts", "DCA_{z} (cm)");
		hMap->Add( particle[i] + "_TrackCuts_NSigma", 200, 0, 10, "Track cuts", "N_{#sigma}");
		
		hMap->Add( particle[i] + "_TrackCuts_ITSchi2PerCls", 200, 0, 40, "Track cuts", "ITS #chi^{2} / Cluster");
		
		hMap->Add( particle[i] + "_TrackCuts_TPCncls", 200, 0, 200, "Track cuts", "TPC clusters");
		hMap->Add( particle[i] + "_TrackCuts_TPCxRowsOverF", 200, 0, 2, "Track cuts", "TPC crossedRows/Findable");
		hMap->Add( particle[i] + "_TrackCuts_TPCxRows", 200, 0, 200, "Track cuts", "TPC crossed rows");
		hMap->Add( particle[i] + "_TrackCuts_TPCchi2PerCls", 200, 0, 20, "Track cuts", "TPC #chi^{2} / Cluster");
		hMap->Add( particle[i] + "_TrackCuts_TPCchi2Global", 200, -2, 38, "Track cuts", "#chi^{2} of constrained TPC vs global track");
		
		hMap->Add( particle[i] + "_Before_Phi_Eta", 400, -2, 2, 360, 0, 2.*TMath::Pi(), "Global tracks (before track cuts)", "#eta", "#phi (rad)");
		
		hMap->Add( particle[i] + "_After_Phi_Eta", 400, -2, 2, 360, 0, 2.*TMath::Pi(), "Global tracks (after track cuts)", "#eta", "#phi (rad)");
		
		// TRD and TOF absorption
		
		hMap->Add( particle[i] + "_PID_TRDin_Pt", nptbins, ptbins, particle[i] + " candidates (TRDin)", "p_{T} (GeV/c)");
		
		hMap->Add( particle[i] + "_PID_TOFin_Pt", nptbins, ptbins, particle[i] + " candidates (TOFin)", "p_{T} (GeV/c)");
		
		hMap->Add( particle[i] + "_PID_TRDin_TRDout_Pt", nptbins, ptbins, particle[i] + " candidates (TRDin-TRDout)", "p_{T} (GeV/c)");
		
		hMap->Add( particle[i] + "_PID_TRDin_TOFout_Pt", nptbins, ptbins, particle[i] + " candidates (TRDin-TOFout)", "p_{T} (GeV/c)");
		
		hMap->Add( particle[i] + "_PID_TOFin_TOFout_Pt", nptbins, ptbins, particle[i] + " candidates (TOFin-TOFout)", "p_{T} (GeV/c)");
		
		
		// pid with TOF
		
		hMap->Add( particle[i] + "_PID_M2_Pt", nptbins, ptbins, m2Bins, m2Min, m2Max, particle[i] + " candidates", "p_{T} (GeV/c)", "m^{2} (GeV^{2}/c^{4})");
		
		hMap->Add( particle[i] + "_PID_DM2_Pt", nptbins, ptbins, m2Bins, dm2Min, dm2Max, particle[i] + " candidates", "p_{T} (GeV/c)", "#Deltam^{2} (GeV^{2}/c^{4})");
		
		hMap->Add( particle[i] + "_PID_Time_Pt", nptbins, ptbins, tBins, tMin, tMax, particle[i] + " candidates", "p_{T} (GeV/c)", "t - t_{0} (ns)");
		
		hMap->Add( particle[i] + "_PID_DTime_Pt", nptbins, ptbins, tBins, dtMin, dtMax, particle[i] + " candidates", "p_{T} (GeV/c)", "t - <t> (ns)");
		
		// as a function of momentum
		hMap->Add( particle[i] + "_PID_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, particle[i] + " candidates", "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
		
		hMap->Add( particle[i] + "_PID_DCAz_Pt", nptbins, ptbins, dcazBins, dcazMin, dcazMax, particle[i] + " candidates", "p_{T} (GeV/c)", "sign #times DCA_{z} (cm)");
		
		hMap->Add( particle[i] + "_PID_NSigma_Pt", nptbins, ptbins, 200, 0., 10., particle[i] + " candidates", "p_{T} (GeV/c)", "N#sigma");
		
		if(simulation)
		{
			hMap->Add( particle[i] + "_Sim_PID_M2_Pt", nptbins, ptbins, m2Bins, m2Min, m2Max, Form("%s after PID", particle[i].Data()), "p_{T} (GeV/c)", "m^{2} (GeV^{2}/c^{4})");
			
			hMap->Add( particle[i] + "_Sim_Prim_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("Primary %s", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
		
			hMap->Add( particle[i] + "_Sim_Fdwn_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("Feed-down %s", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
			
			hMap->Add( particle[i] + "_Sim_Mat_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("%s from materials", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
			
			// primaries
			hMap->Add( particle[i] + "_Sim_PID_Prim_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("Primary %s after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
		
			hMap->Add( particle[i] + "_Sim_PID_Prim_DCAz_Pt", nptbins, ptbins, dcazBins, dcazMin, dcazMax, Form("Primary %s after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{z} (cm)");
		
			hMap->Add( particle[i] + "_Sim_PID_Prim_NSigma_Pt", nptbins, ptbins, 200, 0., 10., Form("Primary %s after PID", particle[i].Data()), "p_{T} (GeV/c)", "N#sigma");
			
			// feed-down
			hMap->Add( particle[i] + "_Sim_PID_Fdwn_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("Feed-down %s after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
		
			hMap->Add( particle[i] + "_Sim_PID_Fdwn_DCAz_Pt", nptbins, ptbins, dcazBins, dcazMin, dcazMax, Form("Feed-down %s after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{z} (cm)");
		
			hMap->Add( particle[i] + "_Sim_PID_Fdwn_NSigma_Pt", nptbins, ptbins, 200, 0., 10., Form("Feed-down %s after PID", particle[i].Data()), "p_{T} (GeV/c)", "N#sigma");
			
			// secondaries from materials
			hMap->Add( particle[i] + "_Sim_PID_Mat_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("%s from materials after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
		
			hMap->Add( particle[i] + "_Sim_PID_Mat_DCAz_Pt", nptbins, ptbins, dcazBins, dcazMin, dcazMax, Form("%s from materials after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{z} (cm)");
		
			hMap->Add( particle[i] + "_Sim_PID_Mat_NSigma_Pt", nptbins, ptbins, 200, 0., 10., Form("%s from materials after PID", particle[i].Data()), "p_{T} (GeV/c)", "N#sigma");
			
			// fake tracks
			hMap->Add( particle[i] + "_Sim_PID_Fake_Prim_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("Fake Primary %s after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
			
			hMap->Add( particle[i] + "_Sim_PID_Fake_Fdwn_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("Fake feed-down %s after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
			
			hMap->Add( particle[i] + "_Sim_PID_Fake_Mat_DCAxy_Pt", nptbins, ptbins, dcaxyBins, dcaxyMin, dcaxyMax, Form("Fake %s from materials after PID", particle[i].Data()), "p_{T} (GeV/c)", "sign #times DCA_{xy} (cm)");
		}
		
		// identification
		
		hMap->Add( particle[i] + "_PID_ITSdEdx_P", 1000, 0.001, 10.001, 1500, mindEdx, maxdEdx, particle[i] + " candidates", "p/Z (GeV/c)", "dE/dx",logx,logy);
		
		hMap->Add( particle[i] + "_PID_TPCdEdx_P", 1000, 0.001, 10.001, 1500, mindEdx, maxdEdx, particle[i] + " candidates", "p_{TPC}/Z (GeV/c)", "dE/dx",logx,logy);
		
		hMap->Add( particle[i] + "_PID_Beta_P", 1000, 0.001, 10.001, 1200, 1.e-3, 1.2, particle[i] + " candidates", "p_{TOF}/Z (GeV/c)", "#beta",logx,logy);
		
		hMap->Add( particle[i] + "_PID_Mass_P", 1000, 0.001, 10.001, 500, 0.01, 5., particle[i] + " candidates", "p_{TOF}/Z (GeV/c)", "m (GeV/c^{2})");
		
		if(simulation)
		{
			hMap->Add( particle[i] + "_Sim_PID_Mass", 500, 0.01, 5., Form("%s after PID", particle[i].Data()), "m (GeV/c^{2})");
		}
		
		// results
		
		hMap->Add( particle[i] + "_PID_Pt_Y", etaBins, etaMin, etaMax, nptbins, ptbins, particle[i] + " candidates", "y", "p_{T} (GeV/c)");
		
		hMap->Add( particle[i] + "_PID_Pt", nptbins, ptbins, Form("%s candidates (|y| < %0.1f, 0 < #phi < 2#pi)", particle[i].Data(),maxY), "p_{T} (GeV/c)");
		
		hMap->Add( particle[i] + "_PID_TOFmatch_Pt", nptbins, ptbins, Form("%s candidates (|y| < %0.1f, TOFmatch)", particle[i].Data(),maxY), "p_{T} (GeV/c)");
		
		hMap->Add( Form("%s_PID_Y",particle[i].Data()), etaBins, etaMin, etaMax, Form("%s candidates (p_{T} > 0, 0 < #phi < 2#pi)",particle[i].Data()), "y");
		
		hMap->Add( particle[i] + "_PID_Phi", phiBins, phiMin, phiMax, Form("%s candidates (p_{T} > 0, |y| < %0.1f)",particle[i].Data(),maxY), "#phi (rad)");
		
		if(simulation)
		{
			hMap->Add( particle[i] + "_Sim_Pt", nptbins, ptbins, Form("%s (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_Prim_Pt", nptbins, ptbins, Form("Primary %s (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_Prim_Rec_Pt", nptbins, ptbins, Form("Primary %s (|y| < %0.1f, 0 < #phi < 2#pi, rec. pt)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_Prim_Phi", phiBins, phiMin, phiMax, Form("Primary %s (p_{T} > 0, |y| < %0.1f)",particle[i].Data(),maxY), "#phi (rad)");
			
			hMap->Add( particle[i] + "_Sim_Prim_Y", etaBins, etaMin, etaMax, Form("Primary %s (p_{T} > 0, 0 < #phi < 2#pi)",particle[i].Data()), "y");
			
			hMap->Add( particle[i] + "_Sim_Fdwn_Pt", nptbins, ptbins, Form("Feed-down %s (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_Mat_Pt", nptbins, ptbins, Form("%s from materials (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_PID_Prim_Pt", nptbins, ptbins, Form("Primary %s after PID (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
		
			hMap->Add( particle[i] + "_Sim_PID_Pt", nptbins, ptbins, Form("%s after PID (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
		
			hMap->Add( particle[i] + "_Sim_PtY", etaBins, etaMin, etaMax, nptbins, ptbins, particle[i].Data(), "y", "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_Prim_M2_P", nptbins, ptbins, m2Bins, m2Min, m2Max, Form("Primary %s (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p (GeV/c)", "m^{2} (GeV^{2}/c^{4})");
			
			hMap->Add( particle[i] + "_Sim_Prim_M2_Pt", nptbins, ptbins, m2Bins, m2Min, m2Max, Form("Primary %s (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)", "m^{2} (GeV^{2}/c^{4})");
			
			// unfolding
			
			hMap->Add( particle[i] + "_Response_Matrix",  nptbins, ptbins,  nptbins, ptbins, particle[i].Data(), "Measured p_{T} (GeV/c)", "True p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Prim_Response_Matrix",  nptbins, ptbins,  nptbins, ptbins, Form("Primary %s",particle[i].Data()), "Measured p_{T} (GeV/c)", "True p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Prim_DiffPt_RecPt",  400,0.,10.,  1000, -0.5, 0.5, Form("Primary %s",particle[i].Data()), "p_{T}^{rec} (GeV/c)", "p_{T}^{gen}-p_{T}^{rec} (GeV/c)");
			
			// fake tracks
			hMap->Add( particle[i] + "_Sim_Fake_Pt", nptbins, ptbins, Form("Fake %s (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_Fake_Prim_Pt", nptbins, ptbins, Form("Fake Primary %s (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_Fake_Fdwn_Pt", nptbins, ptbins, Form("Fake Feed-down %s (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_Fake_Mat_Pt", nptbins, ptbins, Form("Fake %s from materials (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Sim_PID_Fake_Pt", nptbins, ptbins, Form("Fake %s after PID (|y| < %0.1f, 0 < #phi < 2#pi)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
		}
	}
	
	// generation
	
	if(simulation)
	{
		for(Int_t i=0; i<2; ++i)
		{
			hMap->Add( particle[i] + "_Gen_Prim_P", nptbins, ptbins, Form("Primary %s", particle[i].Data()), "p (GeV/c)");
			
			hMap->Add( particle[i] + "_Gen_Prim_Pt", nptbins, ptbins, Form("Primary %s", particle[i].Data()), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Gen_Prim_Y", 600, -12, 12, Form("Primary %s", particle[i].Data()), "y");
			
			hMap->Add( particle[i] + "_Gen_Prim_Eta", 600, -12, 12, Form("Primary %s", particle[i].Data()), "#eta");
			
			hMap->Add( particle[i] + "_Gen_Prim_Phi", phiBins, phiMin, phiMax, Form("Primary %s", particle[i].Data()), "#phi (rad)");
			
			hMap->Add( particle[i] + "_Gen_Prim_PtY", etaBins, etaMin, etaMax, nptbins, ptbins, Form("Primary %s", particle[i].Data()), "y", "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Gen_Prim_EtaY", etaBins, etaMin, etaMax, etaBins, etaMin, etaMax, Form("Primary %s", particle[i].Data()), "y", "#eta");
			
			// in the phase space within the acceptance
			
			hMap->Add( particle[i] + "_Gen_PhS_Prim_P", nptbins, ptbins, Form("Primary %s (mult. events, |y| < %0.1f)",particle[i].Data(),maxY), "p (GeV/c)");
			
			hMap->Add( particle[i] + "_Gen_PhS_Prim_Pt", nptbins, ptbins, Form("Primary %s (mult. events, |y| < %0.1f)",particle[i].Data(),maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Gen_Trig_Prim_Pt", nptbins, ptbins, Form("Primary %s (triggering events, |y| < %0.1f)", particle[i].Data(), maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Gen_Vtx_Prim_Pt", nptbins, ptbins, Form("Primary %s (good vertex, |y| < %0.1f)", particle[i].Data(), maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Gen_NoTrig_Prim_Pt", nptbins, ptbins, Form("Primary %s (non-triggering events, |y| < %0.1f)", particle[i].Data(), maxY), "p_{T} (GeV/c)");
			
			hMap->Add( particle[i] + "_Gen_NoVtx_Prim_Pt", nptbins, ptbins, Form("Primary %s (no reconstructed vertex, |y| < %0.1f)", particle[i].Data(), maxY), "p_{T} (GeV/c)");
			
			// within the acceptance
			
			hMap->Add( particle[i] + "_Gen_Acc_Prim_P", nptbins, ptbins, Form("Primary %s (|y| < %0.1f and |#eta| < %0.1f)",particle[i].Data(),maxY,maxEta), "p (GeV/c)");
		
			hMap->Add( particle[i] + "_Gen_Acc_Prim_Pt", nptbins, ptbins, Form("Primary %s (|y| < %0.1f and |#eta| < %0.1f)",particle[i].Data(),maxY,maxEta), "p_{T} (GeV/c)");
		
			hMap->Add( particle[i] + "_Gen_Acc_Prim_Y", etaBins, etaMin, etaMax, Form("Primary %s (|#eta| < %0.1f)",particle[i].Data(),maxEta), "y");
		
			hMap->Add( particle[i] + "_Gen_Acc_Prim_Phi", phiBins, phiMin, phiMax, Form("Primary %s (|y|< %0.1f and |#eta| < %0.1f)",particle[i].Data(),maxY,maxEta), "#phi (rad)");
			
			hMap->Add( particle[i] + "_Gen_Acc_Prim_PtY", etaBins, etaMin, etaMax, nptbins, ptbins, Form("Primary %s",particle[i].Data()), "y", "p_{T} (GeV/c)");
		}
	}
	
	delete [] ptbins;
	
	return hMap;
}
 CreateHistograms.C:1
 CreateHistograms.C:2
 CreateHistograms.C:3
 CreateHistograms.C:4
 CreateHistograms.C:5
 CreateHistograms.C:6
 CreateHistograms.C:7
 CreateHistograms.C:8
 CreateHistograms.C:9
 CreateHistograms.C:10
 CreateHistograms.C:11
 CreateHistograms.C:12
 CreateHistograms.C:13
 CreateHistograms.C:14
 CreateHistograms.C:15
 CreateHistograms.C:16
 CreateHistograms.C:17
 CreateHistograms.C:18
 CreateHistograms.C:19
 CreateHistograms.C:20
 CreateHistograms.C:21
 CreateHistograms.C:22
 CreateHistograms.C:23
 CreateHistograms.C:24
 CreateHistograms.C:25
 CreateHistograms.C:26
 CreateHistograms.C:27
 CreateHistograms.C:28
 CreateHistograms.C:29
 CreateHistograms.C:30
 CreateHistograms.C:31
 CreateHistograms.C:32
 CreateHistograms.C:33
 CreateHistograms.C:34
 CreateHistograms.C:35
 CreateHistograms.C:36
 CreateHistograms.C:37
 CreateHistograms.C:38
 CreateHistograms.C:39
 CreateHistograms.C:40
 CreateHistograms.C:41
 CreateHistograms.C:42
 CreateHistograms.C:43
 CreateHistograms.C:44
 CreateHistograms.C:45
 CreateHistograms.C:46
 CreateHistograms.C:47
 CreateHistograms.C:48
 CreateHistograms.C:49
 CreateHistograms.C:50
 CreateHistograms.C:51
 CreateHistograms.C:52
 CreateHistograms.C:53
 CreateHistograms.C:54
 CreateHistograms.C:55
 CreateHistograms.C:56
 CreateHistograms.C:57
 CreateHistograms.C:58
 CreateHistograms.C:59
 CreateHistograms.C:60
 CreateHistograms.C:61
 CreateHistograms.C:62
 CreateHistograms.C:63
 CreateHistograms.C:64
 CreateHistograms.C:65
 CreateHistograms.C:66
 CreateHistograms.C:67
 CreateHistograms.C:68
 CreateHistograms.C:69
 CreateHistograms.C:70
 CreateHistograms.C:71
 CreateHistograms.C:72
 CreateHistograms.C:73
 CreateHistograms.C:74
 CreateHistograms.C:75
 CreateHistograms.C:76
 CreateHistograms.C:77
 CreateHistograms.C:78
 CreateHistograms.C:79
 CreateHistograms.C:80
 CreateHistograms.C:81
 CreateHistograms.C:82
 CreateHistograms.C:83
 CreateHistograms.C:84
 CreateHistograms.C:85
 CreateHistograms.C:86
 CreateHistograms.C:87
 CreateHistograms.C:88
 CreateHistograms.C:89
 CreateHistograms.C:90
 CreateHistograms.C:91
 CreateHistograms.C:92
 CreateHistograms.C:93
 CreateHistograms.C:94
 CreateHistograms.C:95
 CreateHistograms.C:96
 CreateHistograms.C:97
 CreateHistograms.C:98
 CreateHistograms.C:99
 CreateHistograms.C:100
 CreateHistograms.C:101
 CreateHistograms.C:102
 CreateHistograms.C:103
 CreateHistograms.C:104
 CreateHistograms.C:105
 CreateHistograms.C:106
 CreateHistograms.C:107
 CreateHistograms.C:108
 CreateHistograms.C:109
 CreateHistograms.C:110
 CreateHistograms.C:111
 CreateHistograms.C:112
 CreateHistograms.C:113
 CreateHistograms.C:114
 CreateHistograms.C:115
 CreateHistograms.C:116
 CreateHistograms.C:117
 CreateHistograms.C:118
 CreateHistograms.C:119
 CreateHistograms.C:120
 CreateHistograms.C:121
 CreateHistograms.C:122
 CreateHistograms.C:123
 CreateHistograms.C:124
 CreateHistograms.C:125
 CreateHistograms.C:126
 CreateHistograms.C:127
 CreateHistograms.C:128
 CreateHistograms.C:129
 CreateHistograms.C:130
 CreateHistograms.C:131
 CreateHistograms.C:132
 CreateHistograms.C:133
 CreateHistograms.C:134
 CreateHistograms.C:135
 CreateHistograms.C:136
 CreateHistograms.C:137
 CreateHistograms.C:138
 CreateHistograms.C:139
 CreateHistograms.C:140
 CreateHistograms.C:141
 CreateHistograms.C:142
 CreateHistograms.C:143
 CreateHistograms.C:144
 CreateHistograms.C:145
 CreateHistograms.C:146
 CreateHistograms.C:147
 CreateHistograms.C:148
 CreateHistograms.C:149
 CreateHistograms.C:150
 CreateHistograms.C:151
 CreateHistograms.C:152
 CreateHistograms.C:153
 CreateHistograms.C:154
 CreateHistograms.C:155
 CreateHistograms.C:156
 CreateHistograms.C:157
 CreateHistograms.C:158
 CreateHistograms.C:159
 CreateHistograms.C:160
 CreateHistograms.C:161
 CreateHistograms.C:162
 CreateHistograms.C:163
 CreateHistograms.C:164
 CreateHistograms.C:165
 CreateHistograms.C:166
 CreateHistograms.C:167
 CreateHistograms.C:168
 CreateHistograms.C:169
 CreateHistograms.C:170
 CreateHistograms.C:171
 CreateHistograms.C:172
 CreateHistograms.C:173
 CreateHistograms.C:174
 CreateHistograms.C:175
 CreateHistograms.C:176
 CreateHistograms.C:177
 CreateHistograms.C:178
 CreateHistograms.C:179
 CreateHistograms.C:180
 CreateHistograms.C:181
 CreateHistograms.C:182
 CreateHistograms.C:183
 CreateHistograms.C:184
 CreateHistograms.C:185
 CreateHistograms.C:186
 CreateHistograms.C:187
 CreateHistograms.C:188
 CreateHistograms.C:189
 CreateHistograms.C:190
 CreateHistograms.C:191
 CreateHistograms.C:192
 CreateHistograms.C:193
 CreateHistograms.C:194
 CreateHistograms.C:195
 CreateHistograms.C:196
 CreateHistograms.C:197
 CreateHistograms.C:198
 CreateHistograms.C:199
 CreateHistograms.C:200
 CreateHistograms.C:201
 CreateHistograms.C:202
 CreateHistograms.C:203
 CreateHistograms.C:204
 CreateHistograms.C:205
 CreateHistograms.C:206
 CreateHistograms.C:207
 CreateHistograms.C:208
 CreateHistograms.C:209
 CreateHistograms.C:210
 CreateHistograms.C:211
 CreateHistograms.C:212
 CreateHistograms.C:213
 CreateHistograms.C:214
 CreateHistograms.C:215
 CreateHistograms.C:216
 CreateHistograms.C:217
 CreateHistograms.C:218
 CreateHistograms.C:219
 CreateHistograms.C:220
 CreateHistograms.C:221
 CreateHistograms.C:222
 CreateHistograms.C:223
 CreateHistograms.C:224
 CreateHistograms.C:225
 CreateHistograms.C:226
 CreateHistograms.C:227
 CreateHistograms.C:228
 CreateHistograms.C:229
 CreateHistograms.C:230
 CreateHistograms.C:231
 CreateHistograms.C:232
 CreateHistograms.C:233
 CreateHistograms.C:234
 CreateHistograms.C:235
 CreateHistograms.C:236
 CreateHistograms.C:237
 CreateHistograms.C:238
 CreateHistograms.C:239
 CreateHistograms.C:240
 CreateHistograms.C:241
 CreateHistograms.C:242
 CreateHistograms.C:243
 CreateHistograms.C:244
 CreateHistograms.C:245
 CreateHistograms.C:246
 CreateHistograms.C:247
 CreateHistograms.C:248
 CreateHistograms.C:249
 CreateHistograms.C:250
 CreateHistograms.C:251
 CreateHistograms.C:252
 CreateHistograms.C:253
 CreateHistograms.C:254
 CreateHistograms.C:255
 CreateHistograms.C:256
 CreateHistograms.C:257
 CreateHistograms.C:258
 CreateHistograms.C:259
 CreateHistograms.C:260
 CreateHistograms.C:261
 CreateHistograms.C:262
 CreateHistograms.C:263
 CreateHistograms.C:264
 CreateHistograms.C:265
 CreateHistograms.C:266
 CreateHistograms.C:267
 CreateHistograms.C:268
 CreateHistograms.C:269
 CreateHistograms.C:270
 CreateHistograms.C:271
 CreateHistograms.C:272
 CreateHistograms.C:273
 CreateHistograms.C:274
 CreateHistograms.C:275
 CreateHistograms.C:276
 CreateHistograms.C:277
 CreateHistograms.C:278
 CreateHistograms.C:279
 CreateHistograms.C:280
 CreateHistograms.C:281
 CreateHistograms.C:282
 CreateHistograms.C:283
 CreateHistograms.C:284
 CreateHistograms.C:285
 CreateHistograms.C:286
 CreateHistograms.C:287
 CreateHistograms.C:288
 CreateHistograms.C:289
 CreateHistograms.C:290
 CreateHistograms.C:291
 CreateHistograms.C:292
 CreateHistograms.C:293
 CreateHistograms.C:294
 CreateHistograms.C:295
 CreateHistograms.C:296
 CreateHistograms.C:297
 CreateHistograms.C:298
 CreateHistograms.C:299
 CreateHistograms.C:300
 CreateHistograms.C:301
 CreateHistograms.C:302
 CreateHistograms.C:303
 CreateHistograms.C:304
 CreateHistograms.C:305
 CreateHistograms.C:306
 CreateHistograms.C:307
 CreateHistograms.C:308
 CreateHistograms.C:309
 CreateHistograms.C:310
 CreateHistograms.C:311
 CreateHistograms.C:312
 CreateHistograms.C:313
 CreateHistograms.C:314
 CreateHistograms.C:315
 CreateHistograms.C:316
 CreateHistograms.C:317
 CreateHistograms.C:318
 CreateHistograms.C:319
 CreateHistograms.C:320
 CreateHistograms.C:321
 CreateHistograms.C:322
 CreateHistograms.C:323
 CreateHistograms.C:324
 CreateHistograms.C:325
 CreateHistograms.C:326
 CreateHistograms.C:327
 CreateHistograms.C:328
 CreateHistograms.C:329
 CreateHistograms.C:330
 CreateHistograms.C:331
 CreateHistograms.C:332
 CreateHistograms.C:333
 CreateHistograms.C:334
 CreateHistograms.C:335
 CreateHistograms.C:336
 CreateHistograms.C:337
 CreateHistograms.C:338
 CreateHistograms.C:339
 CreateHistograms.C:340
 CreateHistograms.C:341
 CreateHistograms.C:342
 CreateHistograms.C:343
 CreateHistograms.C:344
 CreateHistograms.C:345
 CreateHistograms.C:346
 CreateHistograms.C:347
 CreateHistograms.C:348
 CreateHistograms.C:349
 CreateHistograms.C:350
 CreateHistograms.C:351
 CreateHistograms.C:352
 CreateHistograms.C:353
 CreateHistograms.C:354
 CreateHistograms.C:355
 CreateHistograms.C:356
 CreateHistograms.C:357
 CreateHistograms.C:358
 CreateHistograms.C:359
 CreateHistograms.C:360
 CreateHistograms.C:361
 CreateHistograms.C:362
 CreateHistograms.C:363
 CreateHistograms.C:364
 CreateHistograms.C:365
 CreateHistograms.C:366
 CreateHistograms.C:367
 CreateHistograms.C:368
 CreateHistograms.C:369
 CreateHistograms.C:370
 CreateHistograms.C:371
 CreateHistograms.C:372
 CreateHistograms.C:373
 CreateHistograms.C:374
 CreateHistograms.C:375
 CreateHistograms.C:376
 CreateHistograms.C:377
 CreateHistograms.C:378
 CreateHistograms.C:379
 CreateHistograms.C:380
 CreateHistograms.C:381
 CreateHistograms.C:382
 CreateHistograms.C:383
 CreateHistograms.C:384
 CreateHistograms.C:385
 CreateHistograms.C:386
 CreateHistograms.C:387
 CreateHistograms.C:388
 CreateHistograms.C:389
 CreateHistograms.C:390
 CreateHistograms.C:391
 CreateHistograms.C:392
 CreateHistograms.C:393
 CreateHistograms.C:394
 CreateHistograms.C:395
 CreateHistograms.C:396
 CreateHistograms.C:397
 CreateHistograms.C:398
 CreateHistograms.C:399
 CreateHistograms.C:400
 CreateHistograms.C:401
 CreateHistograms.C:402
 CreateHistograms.C:403
 CreateHistograms.C:404
 CreateHistograms.C:405
 CreateHistograms.C:406
 CreateHistograms.C:407
 CreateHistograms.C:408
 CreateHistograms.C:409
 CreateHistograms.C:410
 CreateHistograms.C:411
 CreateHistograms.C:412
 CreateHistograms.C:413
 CreateHistograms.C:414
 CreateHistograms.C:415
 CreateHistograms.C:416
 CreateHistograms.C:417
 CreateHistograms.C:418
 CreateHistograms.C:419
 CreateHistograms.C:420
 CreateHistograms.C:421
 CreateHistograms.C:422
 CreateHistograms.C:423
 CreateHistograms.C:424
 CreateHistograms.C:425
 CreateHistograms.C:426
 CreateHistograms.C:427
 CreateHistograms.C:428
 CreateHistograms.C:429
 CreateHistograms.C:430
 CreateHistograms.C:431
 CreateHistograms.C:432
 CreateHistograms.C:433
 CreateHistograms.C:434
 CreateHistograms.C:435
 CreateHistograms.C:436
 CreateHistograms.C:437
 CreateHistograms.C:438
 CreateHistograms.C:439
 CreateHistograms.C:440
 CreateHistograms.C:441
 CreateHistograms.C:442
 CreateHistograms.C:443
 CreateHistograms.C:444
 CreateHistograms.C:445
 CreateHistograms.C:446
 CreateHistograms.C:447
 CreateHistograms.C:448
 CreateHistograms.C:449
 CreateHistograms.C:450
 CreateHistograms.C:451
 CreateHistograms.C:452
 CreateHistograms.C:453
 CreateHistograms.C:454
 CreateHistograms.C:455
 CreateHistograms.C:456
 CreateHistograms.C:457
 CreateHistograms.C:458
 CreateHistograms.C:459
 CreateHistograms.C:460
 CreateHistograms.C:461
 CreateHistograms.C:462
 CreateHistograms.C:463
 CreateHistograms.C:464
 CreateHistograms.C:465
 CreateHistograms.C:466
 CreateHistograms.C:467
 CreateHistograms.C:468
 CreateHistograms.C:469
 CreateHistograms.C:470
 CreateHistograms.C:471