ROOT logo
//Author: Jeremy Wilkinson, jwilkinson@physi.uni-heidelberg.de
//Routine to extrapolate D meson cross sections using FONLL calculations
#include <TFile.h>
#include <TTree.h>
#include <TMath.h>
#include <TH1F.h>
#include <iostream>
#include <TH1.h>
#include <TH1D.h>
#include <TKey.h>
#include <TH2F.h>
#include <TGraph.h>
#include <TPave.h>
#include <TPaveText.h>
#include <TPad.h>
#include <TCanvas.h>
#include <TLegend.h>
#include <TMultiGraph.h>
#include <TROOT.h>
#include <TAxis.h>
#include <TGraphAsymmErrors.h>
#include <TStyle.h>
#include <fstream>

void TotalCharmCrossSection() {

	// FONLL predictions from _pdf.rooT files
	TFile *D0_05 = TFile::Open("D07TeV_FONLL_y0.5_pdf.root");
	TFile *Dst_05 = TFile::Open("Dstar7TeV_FONLL_y0.5_pdf.root");
	TFile *Dplus_05 = TFile::Open("Dplus7TeV_FONLL_y0.5_pdf.root");

	TFile *D0_ally = TFile::Open("D07TeV_FONLL_y12_pdf.root");
	TFile *Dst_ally = TFile::Open("Dstar7TeV_FONLL_y12_pdf.root");
	TFile *Dplus_ally = TFile::Open("Dplus7TeV_FONLL_y12_pdf.root");
	
	//Spectra for error propagation
	TFile *specD0 = TFile::Open("HFPtSpectrum_D0Kpi_combinedFD_rebinnedth_150311_newsigma_7TeV.root");
	TFile *specDst = TFile::Open("HFPtSpectrum_DstarD0pi_combineFD_rebinnedth_newnorm_120311.root");
	TFile *specDplus = TFile::Open("HFPtSpectrum_DplusKpipi_combinedFD_150311_newsigma_7TeV.root");

	TH1F *hD0stat = (TH1F*)specD0->Get("histoSigmaCorr");
	TH1F *hDststat = (TH1F*)specDst->Get("histoSigmaCorr");
	TH1F *hDplusstat = (TH1F*)specDplus->Get("histoSigmaCorr");


	//Initialising the histo arrays
	TH1F **histosD0_ally, **histosD0_05, **histosDst_ally, **histosDst_05, **histosDplus_ally, **histosDplus_05;
	
	histosD0_ally = new TH1F*[11];
	histosD0_05 = new TH1F*[11];
	histosDst_ally = new TH1F*[11];
	histosDst_05 = new TH1F*[11];
	histosDplus_ally = new TH1F*[11];
	histosDplus_05 = new TH1F*[11];


//Getting all the necessary histos for extrapolation ratios

	histosD0_ally[0] = (TH1F*)D0_ally->Get("FONLL_central_prediction");
	histosD0_ally[1] = (TH1F*)D0_ally->Get("FONLL_fr55_prediction");
	histosD0_ally[2] = (TH1F*)D0_ally->Get("FONLL_fr22_prediction");
	histosD0_ally[3] = (TH1F*)D0_ally->Get("FONLL_fr21_prediction");
	histosD0_ally[4] = (TH1F*)D0_ally->Get("FONLL_fr12_prediction");
	histosD0_ally[5] = (TH1F*)D0_ally->Get("FONLL_fr15_prediction");
	histosD0_ally[6] = (TH1F*)D0_ally->Get("FONLL_fr51_prediction");
	histosD0_ally[7] = (TH1F*)D0_ally->Get("FONLL_minmass_prediction");
	histosD0_ally[8] = (TH1F*)D0_ally->Get("FONLL_maxmass_prediction");
	histosD0_ally[9] = (TH1F*)D0_ally->Get("FONLL_minpdf_prediction");
	histosD0_ally[10] = (TH1F*)D0_ally->Get("FONLL_maxpdf_prediction");
	
	histosD0_05[0] = (TH1F*)D0_05->Get("FONLL_central_prediction");
	histosD0_05[1] = (TH1F*)D0_05->Get("FONLL_fr55_prediction");
	histosD0_05[2] = (TH1F*)D0_05->Get("FONLL_fr22_prediction");
	histosD0_05[3] = (TH1F*)D0_05->Get("FONLL_fr21_prediction");
	histosD0_05[4] = (TH1F*)D0_05->Get("FONLL_fr12_prediction");
	histosD0_05[5] = (TH1F*)D0_05->Get("FONLL_fr15_prediction");
	histosD0_05[6] = (TH1F*)D0_05->Get("FONLL_fr51_prediction");
	histosD0_05[7] = (TH1F*)D0_05->Get("FONLL_minmass_prediction");
	histosD0_05[8] = (TH1F*)D0_05->Get("FONLL_maxmass_prediction");
	histosD0_05[9] = (TH1F*)D0_05->Get("FONLL_minpdf_prediction");
	histosD0_05[10] = (TH1F*)D0_05->Get("FONLL_maxpdf_prediction");
	
	histosDst_ally[0] = (TH1F*)Dst_ally->Get("FONLL_central_prediction");
	histosDst_ally[1] = (TH1F*)Dst_ally->Get("FONLL_fr55_prediction");
	histosDst_ally[2] = (TH1F*)Dst_ally->Get("FONLL_fr22_prediction");
	histosDst_ally[3] = (TH1F*)Dst_ally->Get("FONLL_fr21_prediction");
	histosDst_ally[4] = (TH1F*)Dst_ally->Get("FONLL_fr12_prediction");
	histosDst_ally[5] = (TH1F*)Dst_ally->Get("FONLL_fr15_prediction");
	histosDst_ally[6] = (TH1F*)Dst_ally->Get("FONLL_fr51_prediction");
	histosDst_ally[7] = (TH1F*)Dst_ally->Get("FONLL_minmass_prediction");
	histosDst_ally[8] = (TH1F*)Dst_ally->Get("FONLL_maxmass_prediction");
	histosDst_ally[9] = (TH1F*)Dst_ally->Get("FONLL_minpdf_prediction");
	histosDst_ally[10] = (TH1F*)Dst_ally->Get("FONLL_maxpdf_prediction");

	
	histosDst_05[0] = (TH1F*)Dst_05->Get("FONLL_central_prediction");
	histosDst_05[1] = (TH1F*)Dst_05->Get("FONLL_fr55_prediction");
	histosDst_05[2] = (TH1F*)Dst_05->Get("FONLL_fr22_prediction");
	histosDst_05[3] = (TH1F*)Dst_05->Get("FONLL_fr21_prediction");
	histosDst_05[4] = (TH1F*)Dst_05->Get("FONLL_fr12_prediction");
	histosDst_05[5] = (TH1F*)Dst_05->Get("FONLL_fr15_prediction");
	histosDst_05[6] = (TH1F*)Dst_05->Get("FONLL_fr51_prediction");
	histosDst_05[7] = (TH1F*)Dst_05->Get("FONLL_minmass_prediction");
	histosDst_05[8] = (TH1F*)Dst_05->Get("FONLL_maxmass_prediction");
	histosDst_05[9] = (TH1F*)Dst_05->Get("FONLL_minpdf_prediction");
	histosDst_05[10] = (TH1F*)Dst_05->Get("FONLL_maxpdf_prediction");
	
	histosDplus_ally[0] = (TH1F*)Dplus_ally->Get("FONLL_central_prediction");
	histosDplus_ally[1] = (TH1F*)Dplus_ally->Get("FONLL_fr55_prediction");
	histosDplus_ally[2] = (TH1F*)Dplus_ally->Get("FONLL_fr22_prediction");
	histosDplus_ally[3] = (TH1F*)Dplus_ally->Get("FONLL_fr21_prediction");
	histosDplus_ally[4] = (TH1F*)Dplus_ally->Get("FONLL_fr12_prediction");
	histosDplus_ally[5] = (TH1F*)Dplus_ally->Get("FONLL_fr15_prediction");
	histosDplus_ally[6] = (TH1F*)Dplus_ally->Get("FONLL_fr51_prediction");
	histosDplus_ally[7] = (TH1F*)Dplus_ally->Get("FONLL_minmass_prediction");
	histosDplus_ally[8] = (TH1F*)Dplus_ally->Get("FONLL_maxmass_prediction");
	histosDplus_ally[9] = (TH1F*)Dplus_ally->Get("FONLL_minpdf_prediction");
	histosDplus_ally[10] = (TH1F*)Dplus_ally->Get("FONLL_maxpdf_prediction");
	
	histosDplus_05[0] = (TH1F*)Dplus_05->Get("FONLL_central_prediction");
	histosDplus_05[1] = (TH1F*)Dplus_05->Get("FONLL_fr55_prediction");
	histosDplus_05[2] = (TH1F*)Dplus_05->Get("FONLL_fr22_prediction");
	histosDplus_05[3] = (TH1F*)Dplus_05->Get("FONLL_fr21_prediction");
	histosDplus_05[4] = (TH1F*)Dplus_05->Get("FONLL_fr12_prediction");
	histosDplus_05[5] = (TH1F*)Dplus_05->Get("FONLL_fr15_prediction");
	histosDplus_05[6] = (TH1F*)Dplus_05->Get("FONLL_fr51_prediction");
	histosDplus_05[7] = (TH1F*)Dplus_05->Get("FONLL_minmass_prediction");
	histosDplus_05[8] = (TH1F*)Dplus_05->Get("FONLL_maxmass_prediction");
	histosDplus_05[9] = (TH1F*)Dplus_05->Get("FONLL_minpdf_prediction");
	histosDplus_05[10] = (TH1F*)Dplus_05->Get("FONLL_maxpdf_prediction");

//Output file for extrap. ratios

	ofstream outD0("outputD0.txt"), outDst("outputDst.txt"), outDplus("outputDplus.txt");

//Initialise doubles for max, min, central for each meson
Double_t ratscalmaxD0 = 0, ratscalminD0 = 9999, ratscalmaxDst = 0, ratscalminDst = 9999, ratscalmaxDplus = 0, ratscalminDplus = 9999,ratmassmaxD0 = 0, ratmassminD0 = 9999, ratmassmaxDst = 0, ratmassminDst = 9999, ratmassmaxDplus = 0, ratmassminDplus = 9999, ratpdfmaxD0 = 0, ratpdfminD0 = 9999, ratpdfmaxDst = 0, ratpdfminDst = 9999, ratpdfmaxDplus = 0, ratpdfminDplus = 9999, ratD0cent, ratDstcent, ratDpluscent,
ratD0[11], ratDst[11], ratDplus[11];


	//Central value is with central parameters
	ratD0cent = histosD0_ally[0]->Integral("width")/histosD0_05[0]->Integral(21,120,"width");
	ratDstcent = histosDst_ally[0]->Integral("width")/histosDst_05[0]->Integral(21,120,"width");
	ratDpluscent = histosDplus_ally[0]->Integral("width")/histosDplus_05[0]->Integral(21,120,"width");
//Headers
outD0 << "Name\tpT\ty\toverall\n";
outDst << "Name\tpT\ty\toverall\n";
outDplus << "Name\tpT\ty\toverall\n";


//Determining maximum and minimum ratios, and writing all ratios to file for later analysis 
	for (Int_t i = 0; i<=10; i++) {

		ratD0[i] = histosD0_ally[i]->Integral("width")/histosD0_05[i]->Integral(21,120,"width");

							//Scale variation for histos between i=1 and i=6
			if (ratD0[i] > ratscalmaxD0 && 0 <= i <= 6) {ratscalmaxD0 = ratD0[i];}
			if (ratD0[i] < ratscalminD0 && 0 <= i <= 6) {ratscalminD0 = ratD0[i];}
			
							//Mass variation for 0, 7, 8
			if (ratD0[i] > ratmassmaxD0 && (i == 0 || i == 7 || i == 8)) {ratmassmaxD0 = ratD0[i];}
			if (ratD0[i] < ratmassminD0 && (i == 0 || i == 7 || i == 8)) {ratmassminD0 = ratD0[i];}

							//PDF uncertainty is 0, 9 and 10
			if (ratD0[i] > ratpdfmaxD0 && (i == 0 || i == 9 || i == 10)) {ratpdfmaxD0 = ratD0[i];}
			if (ratD0[i] < ratpdfminD0 && (i == 0 || i == 9 || i == 10)) {ratpdfminD0 = ratD0[i];}

		outD0 << histosD0_05[i]->GetName() << '\t'
		<< histosD0_05[i]->Integral("width")/histosD0_05[i]->Integral(21,120,"width") << '\t'
		<< histosD0_ally[i]->Integral("width")/histosD0_05[i]->Integral("width") << '\t'
		<< ratD0[i] << endl;
		
		ratDst[i] = histosDst_ally[i]->Integral("width")/histosDst_05[i]->Integral(21,120,"width");
			if (ratDst[i] > ratscalmaxDst && 0 <= i <= 6) {ratscalmaxDst = ratDst[i];}
			if (ratDst[i] < ratscalminDst && 0 <= i <= 6) {ratscalminDst = ratDst[i];}
			
			if (ratDst[i] > ratmassmaxDst && (i == 0 || i == 7 || i == 8)) {ratmassmaxDst = ratDst[i];}
			if (ratDst[i] < ratmassminDst && (i == 0 || i == 7 || i == 8)) {ratmassminDst = ratDst[i];}
			
			if (ratDst[i] > ratpdfmaxDst && (i == 0 || i == 9 || i == 10)) {ratpdfmaxDst = ratDst[i];}
			if (ratDst[i] < ratpdfminDst && (i == 0 || i == 9 || i == 10)) {ratpdfminDst = ratDst[i];}

		outDst << histosDst_05[i]->GetName() << '\t'
		<< histosDst_05[i]->Integral("width")/histosDst_05[i]->Integral(21,120,"width") << '\t'
		<< histosDst_ally[i]->Integral("width")/histosDst_05[i]->Integral("width") << '\t'
		<< ratDst[i] << endl;


		ratDplus[i] = histosDplus_ally[i]->Integral("width")/histosDplus_05[i]->Integral(21,120,"width");
			if (ratDplus[i] > ratscalmaxDplus && 0 <= i <= 6) {ratscalmaxDplus = ratDplus[i];}
			if (ratDplus[i] < ratscalminDplus && 0 <= i <= 6) {ratscalminDplus = ratDplus[i];}
			
			if (ratDplus[i] > ratmassmaxDplus && (i == 0 || i == 7 || i == 8)) {ratmassmaxDplus = ratDplus[i];}
			if (ratDplus[i] < ratmassminDplus && (i == 0 || i == 7 || i == 8)) {ratmassminDplus = ratDplus[i];}

			if (ratDplus[i] > ratpdfmaxDplus && (i == 0 || i == 9 || i == 10)) {ratpdfmaxDplus = ratDplus[i];}
			if (ratDplus[i] < ratpdfminDplus && (i == 0 || i == 9 || i == 10)) {ratpdfminDplus = ratDplus[i];}

		outDplus << histosDplus_05[i]->GetName() << '\t'
		<< histosDplus_05[i]->Integral("width")/histosDplus_05[i]->Integral(21,120,"width") << '\t'
		<< histosDplus_ally[i]->Integral("width")/histosDplus_05[i]->Integral("width") << '\t'
		<< ratDplus[i] << endl;

	
	
	}
	//Maximum and minimum error on centrals:
	Double_t ratscalD0UpErr, ratscalD0LowErr, ratscalDstUpErr, ratscalDstLowErr, ratscalDplusUpErr, ratscalDplusLowErr, ratmassD0UpErr, ratmassD0LowErr, ratmassDstUpErr, ratmassDstLowErr, ratmassDplusUpErr, ratmassDplusLowErr, ratpdfD0UpErr, ratpdfD0LowErr, ratpdfDstUpErr, ratpdfDstLowErr, ratpdfDplusUpErr, ratpdfDplusLowErr, ratD0UpErr, ratD0LowErr, ratDstUpErr, ratDstLowErr, ratDplusUpErr, ratDplusLowErr;

	ratscalD0UpErr = ratscalmaxD0 - ratD0cent;
	ratscalD0LowErr = ratD0cent - ratscalminD0;
	ratscalDstUpErr = ratscalmaxDst - ratDstcent;
	ratscalDstLowErr = ratDstcent - ratscalminDst;
	ratscalDplusUpErr = ratscalmaxDplus - ratDpluscent;
	ratscalDplusLowErr = ratDpluscent - ratscalminDplus;

	ratmassD0UpErr = ratmassmaxD0 - ratD0cent;
	ratmassD0LowErr = ratD0cent - ratmassminD0;
	ratmassDstUpErr = ratmassmaxDst - ratDstcent;
	ratmassDstLowErr = ratDstcent - ratmassminDst;
	ratmassDplusUpErr = ratmassmaxDplus - ratDpluscent;
	ratmassDplusLowErr = ratDpluscent - ratmassminDplus;

	ratpdfD0UpErr = ratpdfmaxD0 - ratD0cent;
	ratpdfD0LowErr = ratD0cent - ratpdfminD0;
	ratpdfDstUpErr = ratpdfmaxDst - ratDstcent;
	ratpdfDstLowErr = ratDstcent - ratpdfminDst;
	ratpdfDplusUpErr = ratpdfmaxDplus - ratDpluscent;
	ratpdfDplusLowErr = ratDpluscent - ratpdfminDplus;

	//Overall uncertainties are mass uncertainty and scale uncertainty added in quadrature
	ratD0UpErr = sqrt(ratscalD0UpErr*ratscalD0UpErr+ratmassD0UpErr*ratmassD0UpErr+ratpdfD0UpErr*ratpdfD0UpErr);
	ratD0LowErr = sqrt(ratscalD0LowErr*ratscalD0LowErr+ratmassD0LowErr*ratmassD0LowErr+ratpdfD0LowErr*ratpdfD0LowErr);
	ratDstUpErr = sqrt(ratscalDstUpErr*ratscalDstUpErr+ratmassDstUpErr*ratmassDstUpErr+ratpdfDstUpErr*ratpdfDstUpErr);
	ratDstLowErr = sqrt(ratscalDstLowErr*ratscalDstLowErr+ratmassDstLowErr*ratmassDstLowErr+ratpdfDstLowErr*ratpdfDstLowErr);
	ratDplusUpErr = sqrt(ratscalDplusUpErr*ratscalDplusUpErr+ratmassDplusUpErr*ratmassDplusUpErr+ratpdfDplusUpErr*ratpdfDplusUpErr);
	ratDplusLowErr = sqrt(ratscalDplusLowErr*ratscalDplusLowErr+ratmassDplusLowErr*ratmassDplusLowErr+ratpdfDplusLowErr*ratpdfDplusLowErr);
	

	//Output ratios to file for future reference:

	ofstream outratios("ratios.txt");
	outratios << "D0\ncentral\t" << ratD0cent << "\nscales:\t+" << ratscalD0UpErr << "\t-" << ratscalD0LowErr << "\nmass:\t+" << ratmassD0UpErr << "\t-" << ratmassD0LowErr << "\nPDF:\t+" << ratpdfD0UpErr << "\t-" << ratpdfD0LowErr << "\nOverall:\t+" << ratD0UpErr << "\t-" << ratD0LowErr
<<	"\n\nD*\ncentral\t" << ratDstcent << "\nscales:\t+" << ratscalDstUpErr << "\t-" << ratscalDstLowErr << "\nmass:\t+" << ratmassDstUpErr << "\t-" << ratmassDstLowErr << "\nPDF:\t+" << ratpdfDstUpErr << "\t-" << ratpdfDstLowErr << "\nOverall:\t+" << ratDstUpErr << "\t-" << ratDstLowErr
<<	"\n\nD+\ncentral\t" << ratDpluscent << "\nscales:\t+" << ratscalDplusUpErr << "\t-" << ratscalDplusLowErr << "\nmass:\t+" << ratmassDplusUpErr << "\t-" << ratmassDplusLowErr << "\nPDF:\t+" << ratpdfDplusUpErr << "\t-" << ratpdfDplusLowErr << "\nOverall:\t+" << ratDplusUpErr << "\t-" << ratDplusLowErr << '\n';
	//Visible spectra:
	Double_t D0stati[6], Dststati[6], Dplusstati[6];

	Double_t D0stat =0, Dststat=0, Dplusstat=0, D0statsq=0, Dststatsq=0, Dplusstatsq=0, D0systhi=0, D0systlo=0, Dstsysthi=0, Dstsystlo=0, Dplussysthi=0, Dplussystlo=0;
	for (Int_t i = 4; i<=9; i++) {
		D0stati[i-4] = hD0stat->GetBinError(i)/1e6/3.89e-2;
		Dststati[i-4] = hDststat->GetBinError(i-1)/1e6/3.89e-2/67.7e-2;
		Dplusstati[i-4] = hDplusstat->GetBinError(i-3)/1e6/0.0922;
		
		//Statistical added in quadrature (bin widths included)
		D0statsq += pow(D0stati[i-4]*hD0stat->GetBinWidth(i),2);
		Dststatsq += pow(Dststati[i-4]*hDststat->GetBinWidth(i-1),2);
		Dplusstatsq += pow(Dplusstati[i-4]*hDplusstat->GetBinWidth(i-3),2);
			
	}


	//Rooting to get actual values from delta-sigma-squared
	D0stat = sqrt(D0statsq); Dststat = sqrt(Dststatsq); Dplusstat = sqrt(Dplusstatsq);

	//Corrected systematics are not in a ROOT file, input here manually
	D0systhi = 967844/1e6/3.89e-2;
	D0systlo = 1849380/1e6/3.89e-2;
	Dstsysthi = 232479/1e6/3.89e-2/67.7e-2;
	Dstsystlo = 379356/1e6/3.89e-2/67.7e-2;
	Dplussysthi = 1710680/1e6/0.0922;
	Dplussystlo = 3402420/1e6/0.0922;

	
	//Visible D cross sections from data file, "width" switch incorporates bin widths
	Double_t D0vis = hD0stat->Integral("width")/1e6/3.89e-2,
		Dstvis = hDststat->Integral("width")/1e6/67.7e-2/3.89e-2,
		Dplusvis = hDplusstat->Integral("width")/1e6/0.0922;
	
	//Branching ratio errors as percentage:
	Double_t ErrBrD0Perc = 0.0002785/0.0216673, ErrBrDstPerc = 9.29153e-5/0.0062678, ErrBrDplusPerc = 0.0004746/0.0208372;
	
	//Luminosity errors as percentages

	Double_t ErrLumD0Perc=0.07, ErrLumDstPerc=0.07, ErrLumDplusPerc=0.07;

	//Initialising doubles for final results:
	Double_t crossD0, crossD0stat, crossD0systhi, crossD0systlo, crossD0lum, crossD0br, crossD0extrhi, crossD0extrlo, crossDst, crossDststat, crossDstsysthi, crossDstsystlo, crossDstlum, crossDstbr, crossDstextrhi, crossDstextrlo, crossDplus, crossDplusstat, crossDplussysthi, crossDplussystlo, crossDpluslum, crossDplusbr, crossDplusextrhi, crossDplusextrlo;

	//Also initialising for final ccbar cross sec:
	Double_t ccbarD0, ccbarD0stat, ccbarD0systhi, ccbarD0systlo, ccbarD0lum, ccbarD0extrhi, ccbarD0extrlo, ccbarDst, ccbarDststat, ccbarDstsysthi, ccbarDstsystlo, ccbarDstlum, ccbarDstextrhi, ccbarDstextrlo, ccbarDplus, ccbarDplusstat, ccbarDplussysthi, ccbarDplussystlo, ccbarDpluslum, ccbarDplusextrhi, ccbarDplusextrlo;

	//Cross section is visible multiplied by central ratio
	crossD0 = D0vis * ratD0cent;
	crossDst = Dstvis * ratDstcent;
	crossDplus = Dplusvis * ratDpluscent;
	
	//Stat on each is statitstical of visible multiplied by central ratio
	crossD0stat = D0stat * ratD0cent;
	crossDststat = Dststat * ratDstcent;
	crossDplusstat = Dplusstat * ratDpluscent;
	
	//Systematic the same, but upper and lower separately
	crossD0systhi = D0systhi * ratD0cent;
	crossD0systlo = D0systlo * ratD0cent;
	crossDstsysthi = Dstsysthi * ratDstcent;
	crossDstsystlo = Dstsystlo * ratDstcent;
	crossDplussysthi = Dplussysthi * ratDpluscent;
	crossDplussystlo = Dplussystlo * ratDpluscent;
	
	//Luminosity errors are percentage multiplied by central result
	crossD0lum = ErrLumD0Perc * crossD0;
	crossDstlum = ErrLumDstPerc * crossDst;
	crossDpluslum = ErrLumDplusPerc * crossDplus;
	
	//Similarly for branching ratios
	crossD0br = ErrBrD0Perc * crossD0;
	crossDstbr = ErrBrDstPerc * crossDst;
	crossDplusbr = ErrBrDplusPerc * crossDplus;

	//Extrapolation hi/lo errors are overall hi/lo ratio errors multiplied by visible
	crossD0extrhi = ratD0UpErr * D0vis;
	crossD0extrlo = ratD0LowErr * D0vis;
	crossDstextrhi = ratDstUpErr * Dstvis;
	crossDstextrlo = ratDstLowErr * Dstvis;
	crossDplusextrhi = ratDplusUpErr * Dplusvis;
	crossDplusextrlo = ratDplusLowErr * Dplusvis;

	//ccbar cross section: divide result by fragmentation ratio. This is calculated the same way for all uncertainties
	//Fragmentations:
	Double_t D0frag = 0.557, Dstfrag = 0.238, Dplusfrag = 0.226;

	//D0
	ccbarD0 = crossD0/D0frag;
	ccbarD0stat = crossD0stat/D0frag;
	ccbarD0systhi = crossD0systhi/D0frag;
	ccbarD0systlo = crossD0systlo/D0frag;
	ccbarD0lum = crossD0lum/D0frag;
	ccbarD0extrhi = crossD0extrhi/D0frag;
	ccbarD0extrlo = crossD0extrlo/D0frag;

	//D*
	ccbarDst = crossDst/Dstfrag;
	ccbarDststat = crossDststat/Dstfrag;
	ccbarDstsysthi = crossDstsysthi/Dstfrag;
	ccbarDstsystlo = crossDstsystlo/Dstfrag;
	ccbarDstlum = crossDstlum/Dstfrag;
	ccbarDstextrhi = crossDstextrhi/Dstfrag;
	ccbarDstextrlo = crossDstextrlo/Dstfrag;

	//D+
	ccbarDplus = crossDplus/Dplusfrag;
	ccbarDplusstat = crossDplusstat/Dplusfrag;
	ccbarDplussysthi = crossDplussysthi/Dplusfrag;
	ccbarDplussystlo = crossDplussystlo/Dplusfrag;
	ccbarDpluslum = crossDpluslum/Dplusfrag;
	ccbarDplusextrhi = crossDplusextrhi/Dplusfrag;
	ccbarDplusextrlo = crossDplusextrlo/Dplusfrag;

	
	//To combine: Add D0 + D+, divide by total frag. ratio of the two. Take weighted average of this value with D* using 1/(stat)^2 as weight.


	//Initialising variables:
	Double_t totalfrag, D0Dplusccbar, D0Dplusccbarstat, D0Dplusccbarsysthi, D0Dplusccbarsystlo, D0Dplusccbarlum, D0Dplusccbarextrhi, D0Dplusccbarextrlo;

	totalfrag = D0frag + Dplusfrag;

	//Propagating this method through:
	D0Dplusccbar = (crossD0 + crossDplus)/totalfrag;
	//Errors are quadratic sum of D0 and D+ errors, divided by total frag. ratio
	D0Dplusccbarstat = sqrt(crossD0stat * crossD0stat + crossDplusstat * crossDplusstat)/totalfrag;
	D0Dplusccbarsysthi = sqrt(crossD0systhi * crossD0systhi + crossDplussysthi * crossDplussysthi)/totalfrag;
	D0Dplusccbarsystlo = sqrt(crossD0systlo * crossD0systlo + crossDplussystlo * crossDplussystlo)/totalfrag;
	D0Dplusccbarlum = sqrt(crossD0lum * crossD0lum + crossDpluslum * crossDpluslum)/totalfrag;
	D0Dplusccbarextrhi = sqrt(crossD0extrhi * crossD0extrhi + crossDplusextrhi * crossDplusextrhi)/totalfrag;
	D0Dplusccbarextrlo = sqrt(crossD0extrlo * crossD0extrlo + crossDplusextrlo * crossDplusextrlo)/totalfrag;
	
cout << "Just to test, this is D0Dplusccbar:   " << D0Dplusccbar << "\n\n\n";

	
	//Weighted average:
	Double_t weightD0Dplus, weightDst, totalweight, overallccbar, overallccbarstat, overallccbarsysthi, overallccbarsystlo, 	overallccbarlum, overallccbarextrhi, overallccbarextrlo;
	

	//Weights are 1/sigma(stat)^2 (absolute value of error, not relative errors)
	weightD0Dplus = 1/(D0Dplusccbarstat*D0Dplusccbarstat);
	weightDst = 1/(ccbarDststat*ccbarDststat);

	totalweight = weightD0Dplus + weightDst;

	//Statistical error is square root of 1/(total weight):	
	overallccbarstat = 1/sqrt(totalweight);
	
	//Weighted averages of everything else:
	overallccbar = (D0Dplusccbar * weightD0Dplus + ccbarDst * weightDst)/totalweight;
	overallccbarsysthi = (D0Dplusccbarsysthi * weightD0Dplus + ccbarDstsysthi * weightDst)/totalweight;
	overallccbarsystlo = (D0Dplusccbarsystlo * weightD0Dplus + ccbarDstsystlo * weightDst)/totalweight;
	overallccbarlum =    (D0Dplusccbarlum * weightD0Dplus + ccbarDstlum * weightDst)/totalweight;
	overallccbarextrhi = (D0Dplusccbarextrhi * weightD0Dplus + ccbarDstextrhi * weightDst)/totalweight;
	overallccbarextrlo = (D0Dplusccbarextrlo * weightD0Dplus + ccbarDstextrlo * weightDst)/totalweight;


	//Outputs all cross sections to screen
	cout << "D0:\nVisible =\t" << D0vis << " ± " << D0stat << " (stat.) + " << D0systhi << " - " << D0systlo << " (syst.) microbarn\nExtrapolated =\t" << crossD0 << " ± " << crossD0stat << " (stat.) +" << crossD0systhi <<" -" << crossD0systlo << " (syst.) ± " << crossD0lum << " (lum) ± " << crossD0br << " (br.) +" << crossD0extrhi << " -" << crossD0extrlo << " (extr.) microbarn\nTotal sigma =\t" << ccbarD0 << " ± " << ccbarD0stat << " (stat.) +" << ccbarD0systhi <<" -" << ccbarD0systlo << " (syst.) ± " << ccbarD0lum << " (lum) +" << ccbarD0extrhi << " -" << ccbarD0extrlo << " (extr.) microbarn\n"
	<< "Dst:\nVisible =\t" << Dstvis << " ± " << Dststat << " (stat.) + " << Dstsysthi << " - " << Dstsystlo << " (syst.) microbarn\nExtrapolated =\t" << crossDst << " ± " << crossDststat << " (stat.) +" << crossDstsysthi <<" -" << crossDstsystlo << " (syst.) ± " << crossDstlum << " (lum) ± " << crossDstbr << " (br.) +" << crossDstextrhi << " -" << crossDstextrlo << " (extr.) microbarn\nTotal sigma =\t" << ccbarDst << " ± " << ccbarDststat << " (stat.) +" << ccbarDstsysthi <<" -" << ccbarDstsystlo << " (syst.) ± " << ccbarDstlum << " (lum) +" << ccbarDstextrhi << " -" << ccbarDstextrlo << " (extr.) microbarn\n"
	<< "Dplus:\nVisible =\t" << Dplusvis << " ± " << Dplusstat << " (stat.) + " << Dplussysthi << " - " << Dplussystlo << " (syst.) microbarn\nExtrapolated =\t" << crossDplus << " ± " << crossDplusstat << " (stat.) +" << crossDplussysthi <<" -" << crossDplussystlo << " (syst.) ± " << crossDpluslum << " (lum) ± " << crossDplusbr << " (br.) +" << crossDplusextrhi << " -" << crossDplusextrlo << " (extr.) microbarn\nTotal sigma =\t" << ccbarDplus << " ± " << ccbarDplusstat << " (stat.) +" << ccbarDplussysthi <<" -" << ccbarDplussystlo << " (syst.) ± " << ccbarDpluslum << " (lum) +" << ccbarDplusextrhi << " -" << ccbarDplusextrlo << " (extr.) microbarn\n\nWeighted average =\t" << overallccbar << " ± " << overallccbarstat << " (stat.) + " << overallccbarsysthi << " - " << overallccbarsystlo << " (syst.) ± " << overallccbarlum << " (lum.) + " << overallccbarextrhi << " - " << overallccbarextrlo << " (extr.) µb\n";




}
 TotalCharmCrossSection.C:1
 TotalCharmCrossSection.C:2
 TotalCharmCrossSection.C:3
 TotalCharmCrossSection.C:4
 TotalCharmCrossSection.C:5
 TotalCharmCrossSection.C:6
 TotalCharmCrossSection.C:7
 TotalCharmCrossSection.C:8
 TotalCharmCrossSection.C:9
 TotalCharmCrossSection.C:10
 TotalCharmCrossSection.C:11
 TotalCharmCrossSection.C:12
 TotalCharmCrossSection.C:13
 TotalCharmCrossSection.C:14
 TotalCharmCrossSection.C:15
 TotalCharmCrossSection.C:16
 TotalCharmCrossSection.C:17
 TotalCharmCrossSection.C:18
 TotalCharmCrossSection.C:19
 TotalCharmCrossSection.C:20
 TotalCharmCrossSection.C:21
 TotalCharmCrossSection.C:22
 TotalCharmCrossSection.C:23
 TotalCharmCrossSection.C:24
 TotalCharmCrossSection.C:25
 TotalCharmCrossSection.C:26
 TotalCharmCrossSection.C:27
 TotalCharmCrossSection.C:28
 TotalCharmCrossSection.C:29
 TotalCharmCrossSection.C:30
 TotalCharmCrossSection.C:31
 TotalCharmCrossSection.C:32
 TotalCharmCrossSection.C:33
 TotalCharmCrossSection.C:34
 TotalCharmCrossSection.C:35
 TotalCharmCrossSection.C:36
 TotalCharmCrossSection.C:37
 TotalCharmCrossSection.C:38
 TotalCharmCrossSection.C:39
 TotalCharmCrossSection.C:40
 TotalCharmCrossSection.C:41
 TotalCharmCrossSection.C:42
 TotalCharmCrossSection.C:43
 TotalCharmCrossSection.C:44
 TotalCharmCrossSection.C:45
 TotalCharmCrossSection.C:46
 TotalCharmCrossSection.C:47
 TotalCharmCrossSection.C:48
 TotalCharmCrossSection.C:49
 TotalCharmCrossSection.C:50
 TotalCharmCrossSection.C:51
 TotalCharmCrossSection.C:52
 TotalCharmCrossSection.C:53
 TotalCharmCrossSection.C:54
 TotalCharmCrossSection.C:55
 TotalCharmCrossSection.C:56
 TotalCharmCrossSection.C:57
 TotalCharmCrossSection.C:58
 TotalCharmCrossSection.C:59
 TotalCharmCrossSection.C:60
 TotalCharmCrossSection.C:61
 TotalCharmCrossSection.C:62
 TotalCharmCrossSection.C:63
 TotalCharmCrossSection.C:64
 TotalCharmCrossSection.C:65
 TotalCharmCrossSection.C:66
 TotalCharmCrossSection.C:67
 TotalCharmCrossSection.C:68
 TotalCharmCrossSection.C:69
 TotalCharmCrossSection.C:70
 TotalCharmCrossSection.C:71
 TotalCharmCrossSection.C:72
 TotalCharmCrossSection.C:73
 TotalCharmCrossSection.C:74
 TotalCharmCrossSection.C:75
 TotalCharmCrossSection.C:76
 TotalCharmCrossSection.C:77
 TotalCharmCrossSection.C:78
 TotalCharmCrossSection.C:79
 TotalCharmCrossSection.C:80
 TotalCharmCrossSection.C:81
 TotalCharmCrossSection.C:82
 TotalCharmCrossSection.C:83
 TotalCharmCrossSection.C:84
 TotalCharmCrossSection.C:85
 TotalCharmCrossSection.C:86
 TotalCharmCrossSection.C:87
 TotalCharmCrossSection.C:88
 TotalCharmCrossSection.C:89
 TotalCharmCrossSection.C:90
 TotalCharmCrossSection.C:91
 TotalCharmCrossSection.C:92
 TotalCharmCrossSection.C:93
 TotalCharmCrossSection.C:94
 TotalCharmCrossSection.C:95
 TotalCharmCrossSection.C:96
 TotalCharmCrossSection.C:97
 TotalCharmCrossSection.C:98
 TotalCharmCrossSection.C:99
 TotalCharmCrossSection.C:100
 TotalCharmCrossSection.C:101
 TotalCharmCrossSection.C:102
 TotalCharmCrossSection.C:103
 TotalCharmCrossSection.C:104
 TotalCharmCrossSection.C:105
 TotalCharmCrossSection.C:106
 TotalCharmCrossSection.C:107
 TotalCharmCrossSection.C:108
 TotalCharmCrossSection.C:109
 TotalCharmCrossSection.C:110
 TotalCharmCrossSection.C:111
 TotalCharmCrossSection.C:112
 TotalCharmCrossSection.C:113
 TotalCharmCrossSection.C:114
 TotalCharmCrossSection.C:115
 TotalCharmCrossSection.C:116
 TotalCharmCrossSection.C:117
 TotalCharmCrossSection.C:118
 TotalCharmCrossSection.C:119
 TotalCharmCrossSection.C:120
 TotalCharmCrossSection.C:121
 TotalCharmCrossSection.C:122
 TotalCharmCrossSection.C:123
 TotalCharmCrossSection.C:124
 TotalCharmCrossSection.C:125
 TotalCharmCrossSection.C:126
 TotalCharmCrossSection.C:127
 TotalCharmCrossSection.C:128
 TotalCharmCrossSection.C:129
 TotalCharmCrossSection.C:130
 TotalCharmCrossSection.C:131
 TotalCharmCrossSection.C:132
 TotalCharmCrossSection.C:133
 TotalCharmCrossSection.C:134
 TotalCharmCrossSection.C:135
 TotalCharmCrossSection.C:136
 TotalCharmCrossSection.C:137
 TotalCharmCrossSection.C:138
 TotalCharmCrossSection.C:139
 TotalCharmCrossSection.C:140
 TotalCharmCrossSection.C:141
 TotalCharmCrossSection.C:142
 TotalCharmCrossSection.C:143
 TotalCharmCrossSection.C:144
 TotalCharmCrossSection.C:145
 TotalCharmCrossSection.C:146
 TotalCharmCrossSection.C:147
 TotalCharmCrossSection.C:148
 TotalCharmCrossSection.C:149
 TotalCharmCrossSection.C:150
 TotalCharmCrossSection.C:151
 TotalCharmCrossSection.C:152
 TotalCharmCrossSection.C:153
 TotalCharmCrossSection.C:154
 TotalCharmCrossSection.C:155
 TotalCharmCrossSection.C:156
 TotalCharmCrossSection.C:157
 TotalCharmCrossSection.C:158
 TotalCharmCrossSection.C:159
 TotalCharmCrossSection.C:160
 TotalCharmCrossSection.C:161
 TotalCharmCrossSection.C:162
 TotalCharmCrossSection.C:163
 TotalCharmCrossSection.C:164
 TotalCharmCrossSection.C:165
 TotalCharmCrossSection.C:166
 TotalCharmCrossSection.C:167
 TotalCharmCrossSection.C:168
 TotalCharmCrossSection.C:169
 TotalCharmCrossSection.C:170
 TotalCharmCrossSection.C:171
 TotalCharmCrossSection.C:172
 TotalCharmCrossSection.C:173
 TotalCharmCrossSection.C:174
 TotalCharmCrossSection.C:175
 TotalCharmCrossSection.C:176
 TotalCharmCrossSection.C:177
 TotalCharmCrossSection.C:178
 TotalCharmCrossSection.C:179
 TotalCharmCrossSection.C:180
 TotalCharmCrossSection.C:181
 TotalCharmCrossSection.C:182
 TotalCharmCrossSection.C:183
 TotalCharmCrossSection.C:184
 TotalCharmCrossSection.C:185
 TotalCharmCrossSection.C:186
 TotalCharmCrossSection.C:187
 TotalCharmCrossSection.C:188
 TotalCharmCrossSection.C:189
 TotalCharmCrossSection.C:190
 TotalCharmCrossSection.C:191
 TotalCharmCrossSection.C:192
 TotalCharmCrossSection.C:193
 TotalCharmCrossSection.C:194
 TotalCharmCrossSection.C:195
 TotalCharmCrossSection.C:196
 TotalCharmCrossSection.C:197
 TotalCharmCrossSection.C:198
 TotalCharmCrossSection.C:199
 TotalCharmCrossSection.C:200
 TotalCharmCrossSection.C:201
 TotalCharmCrossSection.C:202
 TotalCharmCrossSection.C:203
 TotalCharmCrossSection.C:204
 TotalCharmCrossSection.C:205
 TotalCharmCrossSection.C:206
 TotalCharmCrossSection.C:207
 TotalCharmCrossSection.C:208
 TotalCharmCrossSection.C:209
 TotalCharmCrossSection.C:210
 TotalCharmCrossSection.C:211
 TotalCharmCrossSection.C:212
 TotalCharmCrossSection.C:213
 TotalCharmCrossSection.C:214
 TotalCharmCrossSection.C:215
 TotalCharmCrossSection.C:216
 TotalCharmCrossSection.C:217
 TotalCharmCrossSection.C:218
 TotalCharmCrossSection.C:219
 TotalCharmCrossSection.C:220
 TotalCharmCrossSection.C:221
 TotalCharmCrossSection.C:222
 TotalCharmCrossSection.C:223
 TotalCharmCrossSection.C:224
 TotalCharmCrossSection.C:225
 TotalCharmCrossSection.C:226
 TotalCharmCrossSection.C:227
 TotalCharmCrossSection.C:228
 TotalCharmCrossSection.C:229
 TotalCharmCrossSection.C:230
 TotalCharmCrossSection.C:231
 TotalCharmCrossSection.C:232
 TotalCharmCrossSection.C:233
 TotalCharmCrossSection.C:234
 TotalCharmCrossSection.C:235
 TotalCharmCrossSection.C:236
 TotalCharmCrossSection.C:237
 TotalCharmCrossSection.C:238
 TotalCharmCrossSection.C:239
 TotalCharmCrossSection.C:240
 TotalCharmCrossSection.C:241
 TotalCharmCrossSection.C:242
 TotalCharmCrossSection.C:243
 TotalCharmCrossSection.C:244
 TotalCharmCrossSection.C:245
 TotalCharmCrossSection.C:246
 TotalCharmCrossSection.C:247
 TotalCharmCrossSection.C:248
 TotalCharmCrossSection.C:249
 TotalCharmCrossSection.C:250
 TotalCharmCrossSection.C:251
 TotalCharmCrossSection.C:252
 TotalCharmCrossSection.C:253
 TotalCharmCrossSection.C:254
 TotalCharmCrossSection.C:255
 TotalCharmCrossSection.C:256
 TotalCharmCrossSection.C:257
 TotalCharmCrossSection.C:258
 TotalCharmCrossSection.C:259
 TotalCharmCrossSection.C:260
 TotalCharmCrossSection.C:261
 TotalCharmCrossSection.C:262
 TotalCharmCrossSection.C:263
 TotalCharmCrossSection.C:264
 TotalCharmCrossSection.C:265
 TotalCharmCrossSection.C:266
 TotalCharmCrossSection.C:267
 TotalCharmCrossSection.C:268
 TotalCharmCrossSection.C:269
 TotalCharmCrossSection.C:270
 TotalCharmCrossSection.C:271
 TotalCharmCrossSection.C:272
 TotalCharmCrossSection.C:273
 TotalCharmCrossSection.C:274
 TotalCharmCrossSection.C:275
 TotalCharmCrossSection.C:276
 TotalCharmCrossSection.C:277
 TotalCharmCrossSection.C:278
 TotalCharmCrossSection.C:279
 TotalCharmCrossSection.C:280
 TotalCharmCrossSection.C:281
 TotalCharmCrossSection.C:282
 TotalCharmCrossSection.C:283
 TotalCharmCrossSection.C:284
 TotalCharmCrossSection.C:285
 TotalCharmCrossSection.C:286
 TotalCharmCrossSection.C:287
 TotalCharmCrossSection.C:288
 TotalCharmCrossSection.C:289
 TotalCharmCrossSection.C:290
 TotalCharmCrossSection.C:291
 TotalCharmCrossSection.C:292
 TotalCharmCrossSection.C:293
 TotalCharmCrossSection.C:294
 TotalCharmCrossSection.C:295
 TotalCharmCrossSection.C:296
 TotalCharmCrossSection.C:297
 TotalCharmCrossSection.C:298
 TotalCharmCrossSection.C:299
 TotalCharmCrossSection.C:300
 TotalCharmCrossSection.C:301
 TotalCharmCrossSection.C:302
 TotalCharmCrossSection.C:303
 TotalCharmCrossSection.C:304
 TotalCharmCrossSection.C:305
 TotalCharmCrossSection.C:306
 TotalCharmCrossSection.C:307
 TotalCharmCrossSection.C:308
 TotalCharmCrossSection.C:309
 TotalCharmCrossSection.C:310
 TotalCharmCrossSection.C:311
 TotalCharmCrossSection.C:312
 TotalCharmCrossSection.C:313
 TotalCharmCrossSection.C:314
 TotalCharmCrossSection.C:315
 TotalCharmCrossSection.C:316
 TotalCharmCrossSection.C:317
 TotalCharmCrossSection.C:318
 TotalCharmCrossSection.C:319
 TotalCharmCrossSection.C:320
 TotalCharmCrossSection.C:321
 TotalCharmCrossSection.C:322
 TotalCharmCrossSection.C:323
 TotalCharmCrossSection.C:324
 TotalCharmCrossSection.C:325
 TotalCharmCrossSection.C:326
 TotalCharmCrossSection.C:327
 TotalCharmCrossSection.C:328
 TotalCharmCrossSection.C:329
 TotalCharmCrossSection.C:330
 TotalCharmCrossSection.C:331
 TotalCharmCrossSection.C:332
 TotalCharmCrossSection.C:333
 TotalCharmCrossSection.C:334
 TotalCharmCrossSection.C:335
 TotalCharmCrossSection.C:336
 TotalCharmCrossSection.C:337
 TotalCharmCrossSection.C:338
 TotalCharmCrossSection.C:339
 TotalCharmCrossSection.C:340
 TotalCharmCrossSection.C:341
 TotalCharmCrossSection.C:342
 TotalCharmCrossSection.C:343
 TotalCharmCrossSection.C:344
 TotalCharmCrossSection.C:345
 TotalCharmCrossSection.C:346
 TotalCharmCrossSection.C:347
 TotalCharmCrossSection.C:348
 TotalCharmCrossSection.C:349
 TotalCharmCrossSection.C:350
 TotalCharmCrossSection.C:351
 TotalCharmCrossSection.C:352
 TotalCharmCrossSection.C:353
 TotalCharmCrossSection.C:354
 TotalCharmCrossSection.C:355
 TotalCharmCrossSection.C:356
 TotalCharmCrossSection.C:357
 TotalCharmCrossSection.C:358
 TotalCharmCrossSection.C:359
 TotalCharmCrossSection.C:360
 TotalCharmCrossSection.C:361
 TotalCharmCrossSection.C:362
 TotalCharmCrossSection.C:363
 TotalCharmCrossSection.C:364
 TotalCharmCrossSection.C:365
 TotalCharmCrossSection.C:366
 TotalCharmCrossSection.C:367
 TotalCharmCrossSection.C:368
 TotalCharmCrossSection.C:369
 TotalCharmCrossSection.C:370
 TotalCharmCrossSection.C:371
 TotalCharmCrossSection.C:372
 TotalCharmCrossSection.C:373
 TotalCharmCrossSection.C:374
 TotalCharmCrossSection.C:375
 TotalCharmCrossSection.C:376
 TotalCharmCrossSection.C:377
 TotalCharmCrossSection.C:378
 TotalCharmCrossSection.C:379
 TotalCharmCrossSection.C:380
 TotalCharmCrossSection.C:381
 TotalCharmCrossSection.C:382
 TotalCharmCrossSection.C:383
 TotalCharmCrossSection.C:384
 TotalCharmCrossSection.C:385
 TotalCharmCrossSection.C:386
 TotalCharmCrossSection.C:387
 TotalCharmCrossSection.C:388
 TotalCharmCrossSection.C:389
 TotalCharmCrossSection.C:390
 TotalCharmCrossSection.C:391
 TotalCharmCrossSection.C:392
 TotalCharmCrossSection.C:393
 TotalCharmCrossSection.C:394
 TotalCharmCrossSection.C:395
 TotalCharmCrossSection.C:396
 TotalCharmCrossSection.C:397
 TotalCharmCrossSection.C:398
 TotalCharmCrossSection.C:399
 TotalCharmCrossSection.C:400
 TotalCharmCrossSection.C:401
 TotalCharmCrossSection.C:402
 TotalCharmCrossSection.C:403
 TotalCharmCrossSection.C:404
 TotalCharmCrossSection.C:405
 TotalCharmCrossSection.C:406
 TotalCharmCrossSection.C:407
 TotalCharmCrossSection.C:408
 TotalCharmCrossSection.C:409
 TotalCharmCrossSection.C:410
 TotalCharmCrossSection.C:411
 TotalCharmCrossSection.C:412
 TotalCharmCrossSection.C:413