ROOT logo
/*************************************************************************************************************

This macro analyses the production of SingleMuon and J/Psi as a function of the collision multiplicity in the SPD.
It reads and analyses the output of the Analysis Task PWG3/muon/AliAnalysisTaskMuonCollisionMultiplicity.
Refer to the corresponding files to know what the output of this task is.

Thismacro use a number of input files whose names are hard-coded
These are :
pTRanges.txt : different ranges in pT in which the study is done.
etaRnages.txt : different ranges in eta in which the study is done.


*************************************************************************************************************/




// ROOT includes
#include <TH1D.h>
#include <TH2D.h>
#include <TH3D.h>
#include <THnSparse.h>
#include <TGraphErrors.h>
#include <TGraphAsymmErrors.h>
#include <TFile.h>
#include <TList.h>
#include <Riostream.h>
#include <TMath.h>

// RooFit includes
#include <RooRealVar.h>
#include <RooAbsReal.h>
#include <RooArgSet.h>
#include <RooCBShape.h>
#include <RooGaussian.h>
#include <RooExponential.h>
#include <RooAddPdf.h>
#include <RooDataHist.h>
#include <RooFitResult.h>
#include <RooPlot.h>

// std includes
#include <vector>




// These functions are in charge of doing all the analysis
void ProduceTriggerGraph(TFile *inputFile, TFile *outputFile, std::vector<Double_t> multiplicityRanges, Bool_t applyZCut, Bool_t applyPileUpCut);

void ProduceSingleMuonRawGraph(TFile *inputFile, TFile *outputFile, std::vector<Double_t> multiplicityRanges, 
			       Bool_t applyZCut, Bool_t applyPileUpCut, Bool_t applyMatchTrigCut, Bool_t applyThetaAbsCut, Bool_t applyPDCACut);

void AnalysisSingleMuon(TFile *outputFile);

void SingleMuonYieldGraph(TFile *outputFile, TGraphErrors *CINT1B);

void SingleMuonYieldOverMeanMultGraph(TFile *outputFile, TGraphErrors *CINT1B);

void SingleMuonYieldNormalisedGraph(TFile *outputFile, TGraphErrors *CMUS1B);

void ProduceFitResults(TFile *inputFile, TFile *outputFile, std::vector<Double_t> multiplicityRanges, 
		       Bool_t applyZCut, Bool_t applyPileUpCut, Double_t numberMatchTrig, Bool_t applyThetaAbsCut, Bool_t applyPDCACut);

void FitInvariantMass(TList *fitList, TH1D *invariantMass, Bool_t areParametersFixed, TH1D *referenceParameters);

void ProduceDimuonGraph(TFile *outputFile, std::vector<Double_t> multiplicityRanges);


///////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
void AnalysisFunctionOfMultiplicity(Bool_t doSingleMuonAnalysis = kTRUE, Bool_t doJPsiAnalysis = kTRUE, TString inputName = "./Input/MUON.Multiplicity.THnSparse.ESDs.root", TString multiplicityFileName = "multiplicityJPsi.txt", TString outputName = "./Output/MultiplicityResults.LHC10e.JPsi.ESDs.root")
{
  // The main function of the macro

  // Open the input file and create the output file
  TFile *inputFile = TFile::Open(inputName, "read");
  TFile *outputFile = TFile::Open(outputName, "recreate");

  // First of all, we need to figure which conditions we are using
  // For the event : the cut on z_vertex and if we have pile up from the SPD
  // For the muons : the usual cuts for SMR  
  Bool_t applyZCut = kTRUE;
  Bool_t applyPileUpCut = kTRUE;
  Bool_t applyMatchTrigCut = kTRUE;
  Bool_t applyThetaAbsCut = kTRUE;
  Bool_t applyPDCACut = kTRUE;
  Double_t nMatchTrig = 1.0;


  // Now, we need the multiplicity ranges
  // We get it from an input file
  ifstream multiplicityFile(multiplicityFileName);
  Double_t multiplicityRange = 0.0;
  std::vector <Double_t> multiplicityRanges;
  while(multiplicityFile >> multiplicityRange)
    multiplicityRanges.push_back(multiplicityRange);

  // With that, we can produce the number of CINT1B in each bin
  // Specifficaly, we'll save two TGrpahErrors in the output :
  // - the graph containing the number of minimum bias event in the bin
  // - the graph containing the mean multiplicity in the bin
  ProduceTriggerGraph(inputFile, outputFile, multiplicityRanges, applyZCut, applyPileUpCut);

  // Now, the muon analysis
  if (doSingleMuonAnalysis)
    {
      // First, we produce the single muon raw graph
      // it is the graph giving the number of muons detected in different the multiplicity bins, and in different eta and pT domains
      ProduceSingleMuonRawGraph(inputFile, outputFile, multiplicityRanges, applyZCut, applyPileUpCut, applyMatchTrigCut, applyThetaAbsCut, applyPDCACut);

      // Raw graph are created, it is time to analyse them
      AnalysisSingleMuon(outputFile);
    }


  // Then, the J/Psi analysis
  if (doJPsiAnalysis)
    {
      ProduceFitResults(inputFile, outputFile, multiplicityRanges, applyZCut, applyPileUpCut, nMatchTrig, applyThetaAbsCut, applyPDCACut);
     ProduceDimuonGraph(outputFile, multiplicityRanges);
    }

  inputFile->Close();
  outputFile->Close();
  cout << "End" << endl;
}



///////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
void ProduceTriggerGraph(TFile *inputFile, TFile *outputFile, std::vector<Double_t> multiplicityRanges, Bool_t applyZCut, Bool_t applyPileUpCut)
{
  // Compute the number of CINT1B and CMUS1B in each bin
  // Along the x axis, the points are placed at the mean multiplicity of the bin, with an error equal to the error on the mean multiplicity
  
  
  // First of all, we need to get the number of CINT1B as a function of the multiplicity in a TH1D
  // Retrieving the THnSparse in the input
  THnSparseD *inputCINT1B = (THnSparseD *) ((TList *) (inputFile->Get("Trigger;1"))->FindObject("CINT1B") );
  THnSparseD *inputCMUS1B = (THnSparseD *) ((TList *) (inputFile->Get("Trigger;1"))->FindObject("CMUS1B") );


  // Reminder of the architecture of this THnSparse
  // dimension 0 : multiplicity of the event
  // dimension 1 : is the vertex in the z range (0 for no, 1 for yes)?
  // dimension 2 : is it an event without pile up (0 for no, 1 for yes)?

  // Now, applying the cuts on z vertex and pile-up
  if (applyZCut)
    {
      inputCINT1B->GetAxis(1)->SetRangeUser(1.0, 2.0);
      inputCMUS1B->GetAxis(1)->SetRangeUser(1.0, 2.0);
    }
  if (applyPileUpCut)
    {
      inputCINT1B->GetAxis(2)->SetRangeUser(1.0, 2.0);
      inputCMUS1B->GetAxis(2)->SetRangeUser(1.0, 2.0);
    }
  
  // cuts applied, we can project the THnSparse on TH1D, because it is easier to handle
  TH1D *histoCINT1B = inputCINT1B->Projection(0, "E");
  TH1D *histoCMUS1B = inputCMUS1B->Projection(0, "E");
  
  
  // We can now create and fill the two TGraphErrors
  TGraphErrors *graphCINT1B = new TGraphErrors(multiplicityRanges.size() - 1);
  graphCINT1B->SetName("graphCINT1B");
  TGraphErrors *graphCMUS1B = new TGraphErrors(multiplicityRanges.size() - 1);
  graphCMUS1B->SetName("graphCMUS1B");
  
  // Graphs for plotting purposes
  TGraphAsymmErrors *plotCINT1B = new TGraphAsymmErrors(multiplicityRanges.size() - 1);
  plotCINT1B->SetName("plotCINT1B");
  TGraphAsymmErrors *plotCMUS1B = new TGraphAsymmErrors(multiplicityRanges.size() - 1);
  plotCMUS1B->SetName("plotCMUS1B");
  
  for (UInt_t iRange = 0; iRange < multiplicityRanges.size() - 1; iRange++)
    {
      // CINT1B first
      Int_t firstBin = histoCINT1B->GetXaxis()->FindBin(multiplicityRanges[iRange]);
      Int_t lastBin = histoCINT1B->GetXaxis()->FindBin(multiplicityRanges[iRange+1]);
      histoCINT1B->GetXaxis()->SetRange(firstBin, lastBin);

      Double_t total = 0.0;
      Double_t totalErr = 0.0;
      total = histoCINT1B->IntegralAndError(firstBin, lastBin, totalErr);

      Double_t mean = histoCINT1B->GetMean();
      Double_t meanErr = histoCINT1B->GetMeanError();
      
      graphCINT1B->SetPoint(iRange, mean, total);
      graphCINT1B->SetPointError(iRange, meanErr, totalErr);

      plotCINT1B->SetPoint(iRange, mean, total);
      plotCINT1B->SetPointError(iRange, 
				mean - multiplicityRanges[iRange], multiplicityRanges[iRange+1] - mean,
				totalErr, totalErr);

      // CMUS1B second
      firstBin = histoCMUS1B->GetXaxis()->FindBin(multiplicityRanges[iRange]);
      lastBin = histoCMUS1B->GetXaxis()->FindBin(multiplicityRanges[iRange+1]);
      histoCMUS1B->GetXaxis()->SetRange(firstBin, lastBin);

      total = histoCMUS1B->IntegralAndError(firstBin, lastBin, totalErr);

      mean = histoCMUS1B->GetMean();
      meanErr = histoCMUS1B->GetMeanError();
      
      graphCMUS1B->SetPoint(iRange, mean, total);
      graphCMUS1B->SetPointError(iRange, meanErr, totalErr);

      plotCMUS1B->SetPoint(iRange, mean, total);
      plotCMUS1B->SetPointError(iRange, 
				mean - multiplicityRanges[iRange], multiplicityRanges[iRange+1] - mean,
				totalErr, totalErr);
    }

  // Saving the graphs
  outputFile->WriteTObject(plotCINT1B);
  outputFile->WriteTObject(plotCMUS1B);
  outputFile->WriteTObject(graphCINT1B);
  outputFile->WriteTObject(graphCMUS1B);

  delete graphCINT1B;
  delete histoCINT1B;
  delete inputCINT1B;
  delete graphCMUS1B;
  delete histoCMUS1B;
  delete inputCMUS1B;
}


void ProduceSingleMuonRawGraph(TFile *inputFile, TFile *outputFile, std::vector<Double_t> multiplicityRanges, 
			       Bool_t applyZCut, Bool_t applyPileUpCut, Bool_t applyMatchTrigCut, Bool_t applyThetaAbsCut, Bool_t applyPDCACut)
{
  // Produce the raw graph for Single Muon that will be used all along the analysis
  // There are several graph :
  //  - over all the range in both eta and pT
  //  - Single Muons Reference : pT > 1 GeV
  //  - Heavy Flavor Muons : pT > 4 GeV
  //  - bin by bin in pT and over all the range in eta
  //  - bin by bin in eta and with single muon reference
  //  and right now, there is not enough stat to do it bin by bin in both pT and eta
  

  // Retrieve the THnSparse and the Minimum bias histo 
  THnSparseD *inputSingleMuon = (THnSparseD *) ((TList *) (inputFile->Get("SingleMuon;1"))->FindObject("muonCMUS1B") );
  TGraphErrors *CINT1B = (TGraphErrors *) (outputFile->Get("graphCINT1B;1") );

  // Reminder of the architecture of this THnSparse
  // dimension 0  : multiplicity of the event
  // dimension 1  : is the vertex in the z range (0 for no, 1 for yes)?
  // dimension 2  : is it an event without pile up (0 for no, 1 for yes)?
  // dimension 3  : does the muon match the trigger (0 for no, 1 for yes)?
  // dimension 4  : theta_abs of the muon
  // dimension 5  : eta of the muon
  // dimension 6  : p DCA_x of the muon
  // dimension 7  : p DCA_y of the muon
  // dimension 8  : p DCA of the muon
  // dimension 9  : p of the muon
  // dimension 10 : pT of the muon



  // get the pT and eta ranges from files.
  // Beware, the names of the files are hard-coded, so make sure to have them in your folder.
  // I might change this in the future, but I felt the main function had enough parameters already.
  ifstream pTFile ("pTRanges.txt");
  Double_t pTRange = 0.0;
  std::vector <Double_t> pTRanges;
  while(pTFile >> pTRange)
    pTRanges.push_back(pTRange);

  ifstream etaFile ("etaRanges.txt");
  Double_t etaRange = 0.0;
  std::vector <Double_t> etaRanges;
  while(etaFile >> etaRange)
    etaRanges.push_back(etaRange);

 
  // Apply all the cuts
  // Beware, theta_abs and pDCA cuts are hard-coded
  if (applyZCut)
    inputSingleMuon->GetAxis(1)->SetRangeUser(1.0, 2.0);
  if (applyPileUpCut)
    inputSingleMuon->GetAxis(2)->SetRangeUser(1.0, 2.0);
  if (applyMatchTrigCut)
    inputSingleMuon->GetAxis(3)->SetRangeUser(1.0, 2.0);
  if (applyThetaAbsCut)
    inputSingleMuon->GetAxis(4)->SetRangeUser(2.0, 9.0);
  if (applyPDCACut)
    inputSingleMuon->GetAxis(8)->SetRangeUser(0.0, 450.0); // no cut yet, I need to check what are the usual values

  
  // First, we get all the raw histos
  TList *rawSingleMuon = new TList();
  rawSingleMuon->SetName("rawSingleMuon");

  // All integrated
  // There are some hard cuts 
  // - pT : 0.5 -> 8 GeV, because we are not confident on what we are seeing outside of these limits
  // - eta : -4.0, -> -2.5, acceptance of the spectrometer

  Double_t etaMinAbsolute = -4.0;
  Double_t etaMaxAbsolute = -2.5;
  inputSingleMuon->GetAxis(5)->SetRangeUser(etaMinAbsolute, etaMaxAbsolute);

  Double_t pTMinAbsolute = 0.5;
  Double_t pTMaxAbsolute = 8.0;
  inputSingleMuon->GetAxis(10)->SetRangeUser(pTMinAbsolute, pTMaxAbsolute);
  
  // Putting this in a TH3D, since it is easier to use and allow for computation of errors on the integral
  // TH3D is multiplicity, eta and pT
  TH3D *histoSingleMuon = inputSingleMuon->Projection(0, 5, 10, "E");

  // Declare all the histos
  TGraphAsymmErrors *allSingleMuon = new TGraphAsymmErrors(multiplicityRanges.size() - 1);
  allSingleMuon->SetName("allSingleMuon");
  TGraphAsymmErrors *rawSMR = new TGraphAsymmErrors(multiplicityRanges.size() - 1); // Single Muon Reference (pT > 1.0 GeV)
  rawSMR->SetName("rawSMR");
  TGraphAsymmErrors *rawHFM = new TGraphAsymmErrors(multiplicityRanges.size() - 1); // Heavy Flavor Muon (pT > 4.0 GeV)
  rawHFM->SetName("rawHFM");


  for (UInt_t iRange = 0; iRange < multiplicityRanges.size() - 1; iRange++)
    {
      Int_t firstBinX = histoSingleMuon->GetXaxis()->FindBin(multiplicityRanges[iRange]);
      Int_t lastBinX = histoSingleMuon->GetXaxis()->FindBin(multiplicityRanges[iRange+1]);
      Int_t firstBinY = histoSingleMuon->GetYaxis()->GetFirst();
      Int_t lastBinY = histoSingleMuon->GetYaxis()->GetLast();
      Int_t firstBinZ = histoSingleMuon->GetZaxis()->GetFirst();
      Int_t lastBinZ = histoSingleMuon->GetZaxis()->GetLast();

      Double_t nSingleMuon = 0.0;
      Double_t errSingleMuon = 0.0;
      nSingleMuon = histoSingleMuon->IntegralAndError(firstBinX, lastBinX, firstBinY, lastBinY, firstBinZ, lastBinZ, errSingleMuon);
      
      allSingleMuon->SetPoint(iRange, CINT1B->GetX()[iRange], nSingleMuon);
      allSingleMuon->SetPointError(iRange, 
				   CINT1B->GetX()[iRange] - multiplicityRanges[iRange],
				   multiplicityRanges[iRange+1] - CINT1B->GetX()[iRange],
				   errSingleMuon,
				   errSingleMuon);

      // SMR
      firstBinZ = histoSingleMuon->GetZaxis()->FindBin(1.0);
      lastBinZ = histoSingleMuon->GetZaxis()->GetLast();
      nSingleMuon = histoSingleMuon->IntegralAndError(firstBinX, lastBinX, firstBinY, lastBinY, firstBinZ, lastBinZ, errSingleMuon);
      
      rawSMR->SetPoint(iRange, CINT1B->GetX()[iRange], nSingleMuon);
      rawSMR->SetPointError(iRange, 
			    CINT1B->GetX()[iRange] - multiplicityRanges[iRange],
			    multiplicityRanges[iRange+1] - CINT1B->GetX()[iRange],
			    errSingleMuon,
			    errSingleMuon);

      // HFM
      firstBinZ = histoSingleMuon->GetZaxis()->FindBin(4.0);
      lastBinZ = histoSingleMuon->GetZaxis()->GetLast();
      nSingleMuon = histoSingleMuon->IntegralAndError(firstBinX, lastBinX, firstBinY, lastBinY, firstBinZ, lastBinZ, errSingleMuon);
      
      rawHFM->SetPoint(iRange, CINT1B->GetX()[iRange], nSingleMuon);
      rawHFM->SetPointError(iRange, 
			    CINT1B->GetX()[iRange] - multiplicityRanges[iRange],
			    multiplicityRanges[iRange+1] - CINT1B->GetX()[iRange],
			    errSingleMuon,
			    errSingleMuon);
    }

  TList *integratedSingleMuon = new TList();
  integratedSingleMuon->SetName("rawSingleMuonIntegrated");

  integratedSingleMuon->AddAt(allSingleMuon, 0);
  integratedSingleMuon->AddAt(rawSMR, 1);
  integratedSingleMuon->AddAt(rawHFM, 2);

  rawSingleMuon->AddAt(integratedSingleMuon, 0);
  //delete allSingleMuon;
  //delete rawSMR;
  //delete rawHFM;

  // Now, for the study in pT
  TList *rawSingleMuonPt = new TList();
  rawSingleMuonPt->SetName("rawSingleMuonPt");

  for (UInt_t ipT = 0; ipT < pTRanges.size()-1; ipT++)
    {
      TString nameGraph;
      nameGraph.Form("pTRange_%1f-%1f", pTRanges[ipT], pTRanges[ipT+1]);
      TGraphAsymmErrors *singleMuonPtRange = new TGraphAsymmErrors();
      singleMuonPtRange->SetName(nameGraph);

      for (UInt_t iRange = 0; iRange < multiplicityRanges.size() - 1; iRange++)
	{
	  Int_t firstBinX = histoSingleMuon->GetXaxis()->FindBin(multiplicityRanges[iRange]);
	  Int_t lastBinX = histoSingleMuon->GetXaxis()->FindBin(multiplicityRanges[iRange+1]);
	  Int_t firstBinY = histoSingleMuon->GetYaxis()->GetFirst();
	  Int_t lastBinY = histoSingleMuon->GetYaxis()->GetLast();
	  Int_t firstBinZ = histoSingleMuon->GetZaxis()->FindBin(pTRanges[ipT]);
	  Int_t lastBinZ = histoSingleMuon->GetZaxis()->FindBin(pTRanges[ipT]+1);

	  Double_t nSingleMuon = 0.0;
	  Double_t errSingleMuon = 0.0;
	  nSingleMuon = histoSingleMuon->IntegralAndError(firstBinX, lastBinX, firstBinY, lastBinY, firstBinZ, lastBinZ, errSingleMuon);
	  
	  singleMuonPtRange->SetPoint(iRange, CINT1B->GetX()[iRange], nSingleMuon);
	  singleMuonPtRange->SetPointError(iRange, 
					   CINT1B->GetX()[iRange] - multiplicityRanges[iRange],
					   multiplicityRanges[iRange+1] - CINT1B->GetX()[iRange],
					   errSingleMuon,
					   errSingleMuon);
	  
	}

      rawSingleMuonPt->AddAt(singleMuonPtRange, ipT);
      //delete singleMuonPtRange;
    }

  rawSingleMuon->AddAt(rawSingleMuonPt, 1);
 
  // At last, the study in eta
  // Both on SMR and HFM
  TList *rawSingleMuonEta = new TList();
  rawSingleMuonEta->SetName("rawSingleMuonEta");

  for (UInt_t iEta = 0; iEta < etaRanges.size()-1; iEta++)
    {
      TString nameGraph;
      nameGraph.Form("SMRetaRange_%1f-%1f", etaRanges[iEta], etaRanges[iEta+1]);
      TGraphAsymmErrors *SMREtaRange = new TGraphAsymmErrors();
      SMREtaRange->SetName(nameGraph);

      nameGraph.Form("HFMetaRange_%1f-%1f", etaRanges[iEta], etaRanges[iEta+1]);
      TGraphAsymmErrors *HFMEtaRange = new TGraphAsymmErrors();
      HFMEtaRange->SetName(nameGraph);

      for (UInt_t iRange = 0; iRange < multiplicityRanges.size() - 1; iRange++)
	{
	  // First, SMR
	  Int_t firstBinX = histoSingleMuon->GetXaxis()->FindBin(multiplicityRanges[iRange]);
	  Int_t lastBinX = histoSingleMuon->GetXaxis()->FindBin(multiplicityRanges[iRange+1]);
	  Int_t firstBinY = histoSingleMuon->GetYaxis()->FindBin(etaRanges[iEta]);
	  Int_t lastBinY = histoSingleMuon->GetYaxis()->FindBin(etaRanges[iEta]+1);
	  Int_t firstBinZ = histoSingleMuon->GetZaxis()->FindBin(1.0);
	  Int_t lastBinZ = histoSingleMuon->GetZaxis()->GetLast();

	  Double_t nSingleMuon = 0.0;
	  Double_t errSingleMuon = 0.0;
	  nSingleMuon = histoSingleMuon->IntegralAndError(firstBinX, lastBinX, firstBinY, lastBinY, firstBinZ, lastBinZ, errSingleMuon);
	  
	  SMREtaRange->SetPoint(iRange, CINT1B->GetX()[iRange], nSingleMuon);
	  SMREtaRange->SetPointError(iRange, 
				     CINT1B->GetX()[iRange] - multiplicityRanges[iRange],
				     multiplicityRanges[iRange+1] - CINT1B->GetX()[iRange],
				     errSingleMuon,
				     errSingleMuon);

	  // Then, HFM
	  firstBinZ = histoSingleMuon->GetZaxis()->FindBin(4.0);
	  lastBinZ = histoSingleMuon->GetZaxis()->GetLast();

	  nSingleMuon = histoSingleMuon->IntegralAndError(firstBinX, lastBinX, firstBinY, lastBinY, firstBinZ, lastBinZ, errSingleMuon);
	  
	  HFMEtaRange->SetPoint(iRange, CINT1B->GetX()[iRange], nSingleMuon);
	  HFMEtaRange->SetPointError(iRange, 
				     CINT1B->GetX()[iRange] - multiplicityRanges[iRange],
				     multiplicityRanges[iRange+1] - CINT1B->GetX()[iRange],
				     errSingleMuon,
				     errSingleMuon);

	  
	}

      rawSingleMuonEta->AddAt(SMREtaRange, iEta);
      rawSingleMuonEta->AddAt(HFMEtaRange, iEta + etaRanges.size()-1);
      //delete SMREtaRange;
      //delete HFMEtaRange;
    }

  rawSingleMuon->AddAt(rawSingleMuonEta, 2);

  outputFile->WriteTObject(rawSingleMuon);
  delete integratedSingleMuon;
  delete rawSingleMuonPt;
  delete rawSingleMuonEta;
}


void AnalysisSingleMuon(TFile *outputFile)
{
  // Analyse the raw data for single muons

  // First, we retrieve the CINT1B graph, as usual
  TGraphErrors *CINT1B = (TGraphErrors *) outputFile->Get("graphCINT1B;1");
  TGraphErrors *CMUS1B = (TGraphErrors *) outputFile->Get("graphCMUS1B;1");

  // Creation of all the yield graphs
  SingleMuonYieldGraph(outputFile, CINT1B);

  // Creation of the yield over mean mult graph
  SingleMuonYieldOverMeanMultGraph(outputFile, CINT1B);

  // Creation of the yield with the reference bin normalised to 1, for comparison
  SingleMuonYieldNormalisedGraph(outputFile, CMUS1B);
}




//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
void SingleMuonYieldGraph(TFile *outputFile, TGraphErrors *CINT1B)
{
  // This function use the raw graphs of outputfile and the CINT1B graph to create the yield graph
  // yield are raw divided by CINT1B
  TList *yieldSingleMuon = new TList();
  yieldSingleMuon->SetName("yieldSingleMuon");

  for (Int_t iList = 0; iList < ((TList *) outputFile->Get("rawSingleMuon;1"))->GetEntries(); iList++)
    {
      TList *currentList = (TList *) (( TList *) outputFile->Get("rawSingleMuon;1"))->At(iList);
      TList *newList = new TList();
      TString listName = currentList->GetName();
      listName.ReplaceAll("raw", 3, "yield", 5);
      newList->SetName(listName);

      for (Int_t iGraph = 0; iGraph < currentList->GetEntries(); iGraph++)
	{
	  TGraphAsymmErrors *rawGraph = (TGraphAsymmErrors *) currentList->At(iGraph);

	  TString yieldName = rawGraph->GetName();
	  yieldName.ReplaceAll("raw", 3, "yield", 5);
	  TGraphAsymmErrors *yieldGraph = new TGraphAsymmErrors(rawGraph->GetN());
	  yieldGraph->SetName(yieldName);

	  // fill the yield graph
	  for (Int_t iBin = 0; iBin < yieldGraph->GetN(); iBin++ )
	    {
	      if (CINT1B->GetY()[iBin] != 0.0)
		{
		  yieldGraph->SetPoint(iBin, 
				       rawGraph->GetX()[iBin], 
				       rawGraph->GetY()[iBin]/CINT1B->GetY()[iBin]);
		  if (rawGraph->GetY()[iBin] != 0.0)
		    { 
		      Double_t error = yieldGraph->GetY()[iBin] * 
			TMath::Sqrt((rawGraph->GetEYlow()[iBin]/rawGraph->GetY()[iBin])*(rawGraph->GetEYlow()[iBin]/rawGraph->GetY()[iBin]) + 
				    (CINT1B->GetEY()[iBin]/CINT1B->GetY()[iBin])*(CINT1B->GetEY()[iBin]/CINT1B->GetY()[iBin]));			
		      yieldGraph->SetPointError(iBin, 
					      rawGraph->GetEXlow()[iBin],
					      rawGraph->GetEXhigh()[iBin],
					      error, error); 
		    }
		}
	      
	      else
		yieldGraph->SetPoint(iBin, 0, 0);
	    }

	  newList->AddAt(yieldGraph, iGraph);
	}
      
      yieldSingleMuon->AddAt(newList, iList);
    }
  
  outputFile->WriteTObject(yieldSingleMuon);
}



//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
void SingleMuonYieldOverMeanMultGraph(TFile *outputFile, TGraphErrors *CINT1B)
{
  // This function use the yield graphs of outputfile to create the yield graph divided by the mean multiplicity in each bin
  // The CINT1B graph is necessary to get the error on the mean multiplicity
  TList *yieldOverMeanMultSingleMuon = new TList();
  yieldOverMeanMultSingleMuon->SetName("yieldOverMeanMultSingleMuon");

  for (Int_t iList = 0; iList < ((TList *) outputFile->Get("yieldSingleMuon;1"))->GetEntries(); iList++)
    {
      TList *currentList = (TList *) (( TList *) outputFile->Get("yieldSingleMuon;1"))->At(iList);
      TList *newList = new TList();
      TString listName = currentList->GetName();
      listName.ReplaceAll("yield", 5, "yieldOverMeanMult", 17);
      newList->SetName(listName);

      for (Int_t iGraph = 0; iGraph < currentList->GetEntries(); iGraph++)
	{
	  TGraphAsymmErrors *yieldGraph = (TGraphAsymmErrors *) currentList->At(iGraph);

	  TString yieldOverMeanMultName = yieldGraph->GetName();
	  yieldOverMeanMultName.ReplaceAll("yield", 5, "yieldOverMeanMult", 17);
	  TGraphAsymmErrors *yieldOverMeanMultGraph = new TGraphAsymmErrors(yieldGraph->GetN());
	  yieldOverMeanMultGraph->SetName(yieldOverMeanMultName);

	  // fill the yield graph
	  for (Int_t iBin = 0; iBin < yieldOverMeanMultGraph->GetN(); iBin++ )
	    {
	      if (CINT1B->GetX()[iBin] != 0.0)
		{
		  yieldOverMeanMultGraph->SetPoint(iBin, 
						   yieldGraph->GetX()[iBin], 
						   yieldGraph->GetY()[iBin]/CINT1B->GetX()[iBin]);
		  if (yieldGraph->GetY()[iBin] != 0.0)
		    {
		      Double_t error = yieldOverMeanMultGraph->GetY()[iBin]*
			TMath::Sqrt((yieldGraph->GetEYlow()[iBin]/yieldGraph->GetY()[iBin])*(yieldGraph->GetEYlow()[iBin]/yieldGraph->GetY()[iBin]) +
				    (CINT1B->GetEX()[iBin]/CINT1B->GetX()[iBin])*(CINT1B->GetEX()[iBin]/CINT1B->GetX()[iBin]));
		      yieldOverMeanMultGraph->SetPointError(iBin, 
							    yieldGraph->GetEXlow()[iBin],
							    yieldGraph->GetEXhigh()[iBin],
							    error, error); 
		    }
		}
	      
	      else
		yieldOverMeanMultGraph->SetPoint(iBin, 0, 0);
	    }
	  
	  newList->AddAt(yieldOverMeanMultGraph, iGraph);
	}
      
      yieldOverMeanMultSingleMuon->AddAt(newList, iList);
    }
  
  outputFile->WriteTObject(yieldOverMeanMultSingleMuon);
}


//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
void SingleMuonYieldNormalisedGraph(TFile *outputFile, TGraphErrors *CMUS1B)
{
  // This function normalise the yield over mean multiplicity so that the reference bin in multiplicity is equal to 1.
  // The reference bin is defined it as the bin with the maximum number of CMUS1B
  TList *yieldNormalisedSingleMuon = new TList();
  yieldNormalisedSingleMuon->SetName("yieldNormalisedSingleMuon");


  // The first step is to find the reference bin in multiplicity
  // we define it as the bin with the maximum number of CMUS1B
  
  Double_t maxCMUS1B = 0.0;
  Int_t referenceBin = 0;
  for (Int_t iBin = 0; iBin < CMUS1B->GetN(); iBin++)
    if (CMUS1B->GetX()[iBin] > 10.0)
      if (CMUS1B->GetY()[iBin] > maxCMUS1B)
	{
	  maxCMUS1B = CMUS1B->GetY()[iBin];
	  referenceBin = iBin;
	}

  // Now the loop, as usual
  // We don't propagate the error on the normalisation factor, since this is artificial
  for (Int_t iList = 0; iList < ((TList *) outputFile->Get("yieldOverMeanMultSingleMuon;1"))->GetEntries(); iList++)
    {
      TList *currentList = (TList *) (( TList *) outputFile->Get("yieldOverMeanMultSingleMuon;1"))->At(iList);
      TList *newList = new TList();
      TString listName = currentList->GetName();
      listName.ReplaceAll("yieldOverMeanMult", 17, "yieldNormalised", 15);
      newList->SetName(listName);

      for (Int_t iGraph = 0; iGraph < currentList->GetEntries(); iGraph++)
	{
	  TGraphAsymmErrors *yieldOverMeanMultGraph = (TGraphAsymmErrors *) currentList->At(iGraph);

	  TString yieldNormalisedName = yieldOverMeanMultGraph->GetName();
	  yieldNormalisedName.ReplaceAll("yieldOverMeanMult", 17, "yieldNormalised", 15);
	  TGraphAsymmErrors *yieldNormalisedGraph = new TGraphAsymmErrors(yieldOverMeanMultGraph->GetN());
	  yieldNormalisedGraph->SetName(yieldNormalisedName);

	  // fill the yield graph
	  for (Int_t iBin = 0; iBin < yieldNormalisedGraph->GetN(); iBin++ )
	    {
	      if (yieldOverMeanMultGraph->GetY()[iBin] != 0.0)
		{
		  yieldNormalisedGraph->SetPoint(iBin, 
						 yieldOverMeanMultGraph->GetX()[iBin], 
						 yieldOverMeanMultGraph->GetY()[iBin]/yieldOverMeanMultGraph->GetY()[referenceBin]);
		  if (yieldOverMeanMultGraph->GetY()[iBin] != 0.0)
		    yieldNormalisedGraph->SetPointError(iBin,
							yieldOverMeanMultGraph->GetEXlow()[iBin],
							yieldOverMeanMultGraph->GetEXhigh()[iBin],
							yieldOverMeanMultGraph->GetEYlow()[iBin]/yieldOverMeanMultGraph->GetY()[referenceBin],
							yieldOverMeanMultGraph->GetEYhigh()[iBin]/yieldOverMeanMultGraph->GetY()[referenceBin]); 
		}
	      
	      else
		yieldNormalisedGraph->SetPoint(iBin, 0, 0);
	    }

	  newList->AddAt(yieldNormalisedGraph, iGraph);
	}
      
      yieldNormalisedSingleMuon->AddAt(newList, iList);
    }
  
  outputFile->WriteTObject(yieldNormalisedSingleMuon);
}


/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
void ProduceFitResults(TFile *inputFile, TFile *outputFile, std::vector<Double_t> multiplicityRanges, 
		       Bool_t applyZCut, Bool_t applyPileUpCut, Double_t numberMatchTrig, Bool_t applyThetaAbsCut, Bool_t applyPDCACut)
{
  // Produce the raw graph for Dimuons that will be used all along the analysis
  // There are two graphs :
  //  - J/Psi
  //  - Background in the J/Psi range

  // Retrieve the THnSparse and the Minimum bias histo 
  THnSparseD *inputDimuon = (THnSparseD *) ((TList *) (inputFile->Get("Dimuon;1"))->FindObject("dimuonCMUS1B") );

  // Reminder of the structure of the dimuon histo
  // dimension 0  : multiplicity of the event
  // dimension 1  : is the vertex in the z range (0 for no, 1 for yes)?
  // dimension 2  : is it an event without pile up (0 for no, 1 for yes)?
  // dimension 3  : does the first muon match the trigger (0 for no, 1 for yes)?
  // dimension 4  : does the second muon match the trigger (0 for no, 1 for yes)?
  // dimension 5  : number of muons matching the trigger in the dimuon
  // dimension 6  : theta_abs of the first muon
  // dimension 7  : theta_abs of the second muon
  // dimension 8  : eta of the first muon
  // dimension 9  : eta of the second muon
  // dimension 10 : p DCA_x of the first muon
  // dimension 11 : p DCA_y of the first muon
  // dimension 12 : p DCA_x of the second muon
  // dimension 13 : p DCA_y of the second muon
  // dimension 14 : p of the first muon
  // dimension 15 : p of the second muon
  // dimension 16 : p of the dimuon
  // dimension 17 : pT of the dimuon
  // dimension 18 : invariant mass of the dimuon



  // get the pT and eta ranges from files.
  // Beware, the names of the files are hard-coded, so make sure to have them in your folder.
  // I might change this in the future, but I felt the main function had enough parameters already.
  ifstream pTFile ("pTRanges.txt");
  Double_t pTRange = 0.0;
  std::vector <Double_t> pTRanges;
  while(pTFile >> pTRange)
    pTRanges.push_back(pTRange);

  ifstream etaFile ("etaRanges.txt");
  Double_t etaRange = 0.0;
  std::vector <Double_t> etaRanges;
  while(etaFile >> etaRange)
    etaRanges.push_back(etaRange);

 
  // Apply all the cuts
  // Beware, theta_abs and pDCA cuts are hard-coded
  if (applyZCut)
    inputDimuon->GetAxis(1)->SetRangeUser(1.0, 2.0);
  if (applyPileUpCut)
    inputDimuon->GetAxis(2)->SetRangeUser(1.0, 2.0);
  inputDimuon->GetAxis(5)->SetRangeUser(numberMatchTrig, 3.0);
  if (applyThetaAbsCut)
    {
      inputDimuon->GetAxis(6)->SetRangeUser(2.0, 9.0);
      inputDimuon->GetAxis(7)->SetRangeUser(2.0, 9.0);
    }
  if (applyPDCACut)
    {// no cut yet, I need to check what are the usual values
      inputDimuon->GetAxis(12)->SetRangeUser(0.0, 450.0); 
      inputDimuon->GetAxis(15)->SetRangeUser(0.0, 450.0); 
    }


  // First, we get the invariant mass histos
  TList *dimuonFitResults = new TList();
  dimuonFitResults->SetName("dimuonFitResults");

  // There are some hard cuts 
  // - eta : -4.0, -> -2.5, acceptance of the spectrometer

  Double_t etaMinAbsolute = -4.0;
  Double_t etaMaxAbsolute = -2.5;
  inputDimuon->GetAxis(8)->SetRangeUser(etaMinAbsolute, etaMaxAbsolute);
  inputDimuon->GetAxis(9)->SetRangeUser(etaMinAbsolute, etaMaxAbsolute);

  // First, we get the invariant mass histo for the whole range in multiplicity
  inputDimuon->GetAxis(0)->SetRangeUser(multiplicityRanges[0], multiplicityRanges[multiplicityRanges.size()-1]);
  TH1D *invariantMassIntegrated = inputDimuon->Projection(18, "E");
  invariantMassIntegrated->SetName("invariantMassIntegrated");


  // Now for the fit on all the multiplicity
  // This is used to get a value for some parameters
  TList *fitAll = new TList();
  fitAll->SetName("AllMultiplicity");


  // Create the container for the reference parameters
  TH1D *referenceParameters = new TH1D("referenceParameters", "parameters", 8, 1.0, 9.0);
  referenceParameters->Sumw2();
  referenceParameters->GetXaxis()->SetBinLabel(1, "meanJPsi");
  referenceParameters->GetXaxis()->SetBinLabel(2, "sigmaJPsi");
  referenceParameters->GetXaxis()->SetBinLabel(3, "alphaJPsi");
  referenceParameters->GetXaxis()->SetBinLabel(4, "nJPsi");
  referenceParameters->GetXaxis()->SetBinLabel(5, "meanPsiPrime");
  referenceParameters->GetXaxis()->SetBinLabel(6, "sigmaPsiPrime");
  referenceParameters->GetXaxis()->SetBinLabel(7, "expBkg1");
  referenceParameters->GetXaxis()->SetBinLabel(8, "expBkg2");
  

  FitInvariantMass(fitAll, invariantMassIntegrated, kFALSE, referenceParameters);
  dimuonFitResults->AddAt(fitAll, 0);

  // Now, we make a fit for each range in multiplicity
  for (UInt_t iMult = 0; iMult < multiplicityRanges.size()-1; iMult++)
    {
      TString name;
      name.Form("Multiplicity_%d-%d", static_cast<Int_t>(multiplicityRanges[iMult]), static_cast<Int_t>(multiplicityRanges[iMult+1]));
      TList *fitRange = new TList();
      fitRange->SetName(name);

      inputDimuon->GetAxis(0)->SetRangeUser(multiplicityRanges[iMult], multiplicityRanges[iMult+1]);
      TH1D *invariantMassRange = inputDimuon->Projection(18, "E");
      invariantMassRange->SetName("invariantMass");

      FitInvariantMass(fitRange, invariantMassRange, kTRUE, referenceParameters);
      dimuonFitResults->AddAt(fitRange, iMult + 1);
    }

  outputFile->WriteTObject(dimuonFitResults);
}




/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void FitInvariantMass(TList *fitList, TH1D *invariantMass, Bool_t areParametersFixed, TH1D *referenceParameters)
{
  // Fit the given histo and put the results in outputFile
  // The fit is : Crystal Ball (J/Psi) + gaussian (Psi') + two exponentials (background)

  // The parameters histo architecture is the following :
  // bin 1 : mean J/Psi
  // bin 2 : sigma J/Psi
  // bin 3 : alpha J/Psi
  // bin 4 : n J/Psi
  // bin 5 : mean Psi'
  // bin 6 : sigma Psi'
  // bin 7 : exponential factor background 1
  // bin 8 : exponential factor background 2

  // The results histo architecture is the following :
  // bin 1 : J/Psi
  // bin 2 : Background J/Psi at 2 sigma
  // bin 3 : signal over background
  // bin 4 : chi2

  // There are some parameters that are not always free :
  // mean of J/Psi peak
  // sigma of J/Psi peak
  // alpha of J/Psi function (Crystall Ball function)
  // n of J/Psi function
  // mean of Psi' peak
  // sigma of Psi' peak
  // If there are fixed, their values are taken from the parameters histo


  // First, we have to create two histos, one that will contain the parameters of the fit, and the other the results
  TH1D *parameters = new TH1D("parameters", "parameters", 8, 1.0, 9.0);
  parameters->Sumw2();
  parameters->GetXaxis()->SetBinLabel(1, "meanJPsi");
  parameters->GetXaxis()->SetBinLabel(2, "sigmaJPsi");
  parameters->GetXaxis()->SetBinLabel(3, "alphaJPsi");
  parameters->GetXaxis()->SetBinLabel(4, "nJPsi");
  parameters->GetXaxis()->SetBinLabel(5, "meanPsiPrime");
  parameters->GetXaxis()->SetBinLabel(6, "sigmaPsiPrime");
  parameters->GetXaxis()->SetBinLabel(7, "expBkg1");
  parameters->GetXaxis()->SetBinLabel(8, "expBkg2");
  TH1D *results = new TH1D("results", "results", 4, 1.0, 5.0);
  results->Sumw2();
  results->GetXaxis()->SetBinLabel(1, "JPsi");
  results->GetXaxis()->SetBinLabel(2, "bkg");
  results->GetXaxis()->SetBinLabel(3, "SB");
  results->GetXaxis()->SetBinLabel(4, "chi2");


  // Declare observable M
  RooRealVar M("M","Dimuon invariant mass [GeV/c^2]", 2.0, 5.0);


  // Declare Cristal Ball for J/Psi
  RooRealVar mean_jpsi("mean_jpsi","mean_jpsi", 3.096, 2.8, 3.2);
  RooRealVar sigma_jpsi("sigma_jpsi","sigma_jpsi", 0.070, 0, 0.2);
  RooRealVar alpha_jpsi("alpha","alpha", 5, 0, 10);
  RooRealVar n_jpsi("n","n",5,0,10);
  RooCBShape jPsi("jpsi", "crystal ball PDF", M, mean_jpsi, sigma_jpsi, alpha_jpsi, n_jpsi);
  

  //Declare gaussian for Psi prime
  RooRealVar mean_psip("mean_psip", "mean_psip", 3.686, 3.6, 3.75);
  RooRealVar sigma_psip("sigma_psip","sigma_psip", 0.086);
  RooGaussian psiPrime("psip","Gaussian", M, mean_psip, sigma_psip);
  
  //Declare exponentials for background
  RooRealVar c1("c1", "c1", -10, -0.1);
  RooExponential bkg_exp1("bkg_exp1", "background", M, c1);
  
  RooRealVar c2("c2", "c2", -5.0, -1);
  RooExponential bkg_exp2("bkg_exp2", "background", M, c2);

  // Give a value and fix sigma, alpha and n in the Cristal Ball
  // The values correspond to a previous fit (ideally, with all the statistic)
  // I should automatize this one of these day
  if (areParametersFixed)
    {
      Double_t fixMeanJPsi = referenceParameters->GetBinContent(parameters->GetXaxis()->FindBin("meanJPsi"));
      mean_jpsi.setVal(fixMeanJPsi);
      mean_jpsi.setError(0.0);
      mean_jpsi.setRange(fixMeanJPsi, fixMeanJPsi);

      Double_t fixSigmaJPsi = referenceParameters->GetBinContent(parameters->GetXaxis()->FindBin("sigmaJPsi"));
      sigma_jpsi.setVal(fixSigmaJPsi);
      sigma_jpsi.setError(0.0);
      sigma_jpsi.setRange(fixSigmaJPsi, fixSigmaJPsi);

      Double_t fixAlphaJPsi = referenceParameters->GetBinContent(parameters->GetXaxis()->FindBin("alphaJPsi"));
      alpha_jpsi.setVal(fixAlphaJPsi);
      alpha_jpsi.setError(0.0);
      alpha_jpsi.setRange(fixAlphaJPsi, fixAlphaJPsi);

      Double_t fixNJPsi = referenceParameters->GetBinContent(parameters->GetXaxis()->FindBin("nJPsi"));
      n_jpsi.setVal(fixNJPsi);
      n_jpsi.setError(0.0);
      n_jpsi.setRange(fixNJPsi, fixNJPsi);

      Double_t fixMeanPsiPrime = referenceParameters->GetBinContent(parameters->GetXaxis()->FindBin("meanPsiPrime"));
      mean_psip.setVal(fixMeanPsiPrime);
      mean_psip.setError(0.0);
      mean_psip.setRange(fixMeanPsiPrime, fixMeanPsiPrime);

      Double_t fixSigmaPsiPrime = referenceParameters->GetBinContent(parameters->GetXaxis()->FindBin("sigmaPsiPrime"));
      sigma_psip.setVal(fixSigmaPsiPrime);
      sigma_psip.setError(0.0);
      sigma_psip.setRange(fixSigmaPsiPrime, fixSigmaPsiPrime);
    }


  // Sum the composite signal and background into an extended pdf nsig*sig+nbkg*bkg
  RooRealVar fitJPsi("fitJPsi", "number of J/Psi events", 1600 ,0.0, 15000);
  RooRealVar fitPsiPrime("fitPsiPrime", "number of Psi Prime events", 50, 0.0, 200);
  RooRealVar fitBkg1("fitBkg1", "number of background events", 5000, 0.0, 15000);
  RooRealVar fitBkg2("fitBkg2", "number of background events", 5000, 0.0, 15000);
  

  RooAddPdf *fitFunction = new RooAddPdf("model", "(CB+Gauss+2exp)", RooArgList(bkg_exp1, bkg_exp2, jPsi, psiPrime), RooArgList(fitBkg1, fitBkg2, fitJPsi, fitPsiPrime));

  // Define the histo to be fitted
  RooDataHist *invariantMassFit = new RooDataHist("invariantMassFit", "invariantMassFit", M, invariantMass);

  // Fit the invariant mass
  // This is the important part
  RooFitResult *fitResult = fitFunction->fitTo(*invariantMassFit, RooFit::Save());
  //RooFitResult *fitResult = fitFunction->chi2FitTo(*invariantMassFit, RooFit::Save());

  RooPlot *plot = M.frame();
  TString title = "fittedInvariantMass";
  plot->SetTitle(title);
  plot->SetName(title);

  invariantMassFit->plotOn(plot, RooFit::Name("invariantMassFit"));
  fitFunction->plotOn(plot, RooFit::Name("fitFunction"), RooFit::Range(2.0, 5.0));


  // Fill the histo with the final values of the parameters
  parameters->SetBinContent(parameters->GetXaxis()->FindBin("meanJPsi"), mean_jpsi.getVal());
  parameters->SetBinError(parameters->GetXaxis()->FindBin("meanJPsi"), mean_jpsi.getError());
  
  parameters->SetBinContent(parameters->GetXaxis()->FindBin("sigmaJPsi"), sigma_jpsi.getVal());
  parameters->SetBinError(parameters->GetXaxis()->FindBin("sigmaJPsi"), sigma_jpsi.getError());
  
  parameters->SetBinContent(parameters->GetXaxis()->FindBin("alphaJPsi"), alpha_jpsi.getVal());
  parameters->SetBinError(parameters->GetXaxis()->FindBin("alphaJPsi"), alpha_jpsi.getError());
  
  parameters->SetBinContent(parameters->GetXaxis()->FindBin("nJPsi"), n_jpsi.getVal());
  parameters->SetBinError(parameters->GetXaxis()->FindBin("nJPsi"), n_jpsi.getError());
  
  parameters->SetBinContent(parameters->GetXaxis()->FindBin("meanPsiPrime"), mean_psip.getVal());
  parameters->SetBinError(parameters->GetXaxis()->FindBin("meanPsiPrime"), mean_psip.getError());

  parameters->SetBinContent(parameters->GetXaxis()->FindBin("sigmaPsiPrime"), sigma_psip.getVal());
  parameters->SetBinError(parameters->GetXaxis()->FindBin("sigmaPsiPrime"), sigma_psip.getError());
  
  // Fill the histo with the reference parameters
  if (!areParametersFixed)
    {
      referenceParameters->SetBinContent(parameters->GetXaxis()->FindBin("meanJPsi"), mean_jpsi.getVal());
      referenceParameters->SetBinError(parameters->GetXaxis()->FindBin("meanJPsi"), mean_jpsi.getError());

      referenceParameters->SetBinContent(parameters->GetXaxis()->FindBin("sigmaJPsi"), sigma_jpsi.getVal());
      referenceParameters->SetBinError(parameters->GetXaxis()->FindBin("sigmaJPsi"), sigma_jpsi.getError());

      referenceParameters->SetBinContent(parameters->GetXaxis()->FindBin("alphaJPsi"), alpha_jpsi.getVal());
      referenceParameters->SetBinError(parameters->GetXaxis()->FindBin("alphaJPsi"), alpha_jpsi.getError());

      referenceParameters->SetBinContent(parameters->GetXaxis()->FindBin("nJPsi"), n_jpsi.getVal());
      referenceParameters->SetBinError(parameters->GetXaxis()->FindBin("nJPsi"), n_jpsi.getError());

      referenceParameters->SetBinContent(parameters->GetXaxis()->FindBin("meanPsiPrime"), mean_psip.getVal());
      referenceParameters->SetBinError(parameters->GetXaxis()->FindBin("meanPsiPrime"), mean_psip.getError());

      referenceParameters->SetBinContent(parameters->GetXaxis()->FindBin("sigmaPsiPrime"), sigma_psip.getVal());
      referenceParameters->SetBinError(parameters->GetXaxis()->FindBin("sigmaPsiPrime"), sigma_psip.getError());
    }

  parameters->SetBinContent(parameters->GetXaxis()->FindBin("expBkg1"), c1.getVal());
  parameters->SetBinError(parameters->GetXaxis()->FindBin("expBkg1"), c1.getError());
  
  parameters->SetBinContent(parameters->GetXaxis()->FindBin("expBkg2"), c2.getVal());
  parameters->SetBinError(parameters->GetXaxis()->FindBin("expBkg2"), c2.getError());
  

  // Define the range to compute the results
  // We choose two sigma
  // We also need two new variables to compute the background
  Double_t lowerBoundJPsi = mean_jpsi.getVal() - 2.0*sigma_jpsi.getVal();
  Double_t upperBoundJPsi = mean_jpsi.getVal() + 2.0*sigma_jpsi.getVal();
  M.setRange("JPsiRange" ,lowerBoundJPsi, upperBoundJPsi);

  RooAbsReal *fracBkgRange1 = bkg_exp1.createIntegral(M, M, "JPsiRange");
  RooAbsReal *fracBkgRange2 = bkg_exp2.createIntegral(M, M, "JPsiRange");

  // Get the results, and fill the results histo
  Double_t nJPsi = fitJPsi.getVal();
  Double_t errJPsi = fitJPsi.getError();
  results->SetBinContent(results->GetXaxis()->FindBin("JPsi"), nJPsi);
  results->SetBinError(results->GetXaxis()->FindBin("JPsi"), errJPsi);

  Double_t nBkg = (fitBkg1.getVal() * fracBkgRange1->getVal() + fitBkg2.getVal() * fracBkgRange2->getVal());
  Double_t errBkg = (fitBkg1.getError() * fracBkgRange1->getVal() + fitBkg2.getError() * fracBkgRange2->getVal());
  results->SetBinContent(results->GetXaxis()->FindBin("bkg"), nBkg);
  results->SetBinError(results->GetXaxis()->FindBin("bkg"), errBkg);

  Double_t SB = 0.0;
  Double_t errSB = 0.0;
  if (nJPsi != 0.0 && nBkg != 0.0)
    {
      SB = nJPsi/nBkg;
      errSB = SB * (errJPsi/nJPsi + errBkg/nBkg);
    }
  results->SetBinContent(results->GetXaxis()->FindBin("SB"), SB);
  results->SetBinError(results->GetXaxis()->FindBin("SB"), errSB);

  Int_t nDF = fitResult->floatParsFinal().getSize();
  Double_t chi2 = plot->chiSquare("fitFunction", "invariantMassFit", nDF);
  results->SetBinContent(results->GetXaxis()->FindBin("chi2"), chi2);
  results->SetBinError(results->GetXaxis()->FindBin("chi2"), 0.0);

  fitList->AddAt(invariantMass, 0);
  fitList->AddAt(plot, 1);
  fitList->AddAt(parameters, 2);
  fitList->AddAt(results, 3);
}


void ProduceDimuonGraph(TFile *outputFile, std::vector<Double_t> multiplicityRanges)
{
  // This function will create all the graphs for dimuons (J/Psi and Background)
  // - raw
  // - yield
  // - yield over mean mult
  // - yield over mean mult normalised

  // First, get the CINT1B and CMUS1B graphs
  TGraphErrors *CINT1B = (TGraphErrors *) outputFile->Get("graphCINT1B");
  TGraphErrors *CMUS1B = (TGraphErrors *) outputFile->Get("graphCMUS1B");

  TList *JPsiGraph = new TList();
  JPsiGraph->SetName("JPsiGraph");
  TList *bkgGraph = new TList();
  bkgGraph->SetName("bkgGraph");

  // Raw Graphs
  TGraphAsymmErrors *rawJPsiGraph = new TGraphAsymmErrors(multiplicityRanges.size()-1);
  rawJPsiGraph->SetName("rawJPsiGraph");
  TGraphAsymmErrors *rawBkgGraph = new TGraphAsymmErrors(multiplicityRanges.size()-1);
  rawBkgGraph->SetName("rawBkgGraph");

  for (UInt_t iMult = 0; iMult < multiplicityRanges.size()-1; iMult++)
    {
      TString name;
      name.Form("Multiplicity_%d-%d", static_cast<Int_t>(multiplicityRanges[iMult]), static_cast<Int_t>(multiplicityRanges[iMult+1]));
      TH1D *results = (TH1D *) ((TList *) ((TList *) outputFile->Get("dimuonFitResults;1"))->FindObject(name))->FindObject("results");

      // J/Psi
      Double_t nJPsi = results->GetBinContent(results->GetXaxis()->FindBin("JPsi"));
      Double_t errJPsi = results->GetBinError(results->GetXaxis()->FindBin("JPsi"));

      rawJPsiGraph->SetPoint(iMult, CINT1B->GetX()[iMult], nJPsi);
      rawJPsiGraph->SetPointError(iMult,
				  CINT1B->GetX()[iMult] - multiplicityRanges[iMult], 
				  multiplicityRanges[iMult+1] - CINT1B->GetX()[iMult],
				  errJPsi, errJPsi);

      // Background
      Double_t nBkg = results->GetBinContent(results->GetXaxis()->FindBin("bkg"));
      Double_t errBkg = results->GetBinError(results->GetXaxis()->FindBin("bkg"));

      rawJPsiGraph->SetPoint(iMult, CINT1B->GetX()[iMult], nBkg);
      rawJPsiGraph->SetPointError(iMult,
				  CINT1B->GetX()[iMult] - multiplicityRanges[iMult], 
				  multiplicityRanges[iMult+1] - CINT1B->GetX()[iMult],
				  errBkg, errBkg);
    }

  JPsiGraph->AddAt(rawJPsiGraph, 0);
  bkgGraph->AddAt(rawBkgGraph, 0);

  // Yield Graphs
  TGraphAsymmErrors *yieldJPsiGraph = new TGraphAsymmErrors(multiplicityRanges.size()-1);
  yieldJPsiGraph->SetName("yieldJPsiGraph");
  TGraphAsymmErrors *yieldBkgGraph = new TGraphAsymmErrors(multiplicityRanges.size()-1);
  yieldBkgGraph->SetName("yieldBkgGraph");
  
  for (UInt_t iMult = 0; iMult < multiplicityRanges.size()-1; iMult++)
    {
      if (CINT1B->GetY()[iMult] != 0.0)
	{
	  // J/Psi
	  yieldJPsiGraph->SetPoint(iMult, rawJPsiGraph->GetX()[iMult], rawJPsiGraph->GetY()[iMult]/CINT1B->GetY()[iMult]);
	  if (rawJPsiGraph->GetY()[iMult] != 0.0)
	    {
	      Double_t error = yieldJPsiGraph->GetY()[iMult]*
		TMath::Sqrt((rawJPsiGraph->GetEYlow()[iMult]/rawJPsiGraph->GetY()[iMult])*(rawJPsiGraph->GetEYlow()[iMult]/rawJPsiGraph->GetY()[iMult]) + 
			    (CINT1B->GetEY()[iMult]/CINT1B->GetY()[iMult])*(CINT1B->GetEY()[iMult]/CINT1B->GetY()[iMult]));
	      yieldJPsiGraph->SetPointError(iMult,
					    rawJPsiGraph->GetEXlow()[iMult],
					    rawJPsiGraph->GetEXhigh()[iMult],
					    error, error);
	    }
	  // Background
	  yieldBkgGraph->SetPoint(iMult, rawBkgGraph->GetX()[iMult], rawBkgGraph->GetY()[iMult]/CINT1B->GetY()[iMult]);
	  if (rawBkgGraph->GetY()[iMult] != 0.0)
	    {
	      Double_t error = yieldBkgGraph->GetY()[iMult]*
		TMath::Sqrt((rawBkgGraph->GetEYlow()[iMult]/rawBkgGraph->GetY()[iMult])*(rawBkgGraph->GetEYlow()[iMult]/rawBkgGraph->GetY()[iMult]) + 
			    (CINT1B->GetEY()[iMult]/CINT1B->GetY()[iMult])*(CINT1B->GetEY()[iMult]/CINT1B->GetY()[iMult]));
		
	      yieldBkgGraph->SetPointError(iMult,
					   rawBkgGraph->GetEXlow()[iMult],
					   rawBkgGraph->GetEXhigh()[iMult],
					   error, error);
	    }
	}
      
      else 
	{
	  yieldJPsiGraph->SetPoint(iMult, rawJPsiGraph->GetX()[iMult], 0);
	  yieldBkgGraph->SetPoint(iMult, rawBkgGraph->GetX()[iMult], 0);
	}
    }

  JPsiGraph->AddAt(yieldJPsiGraph, 1);
  bkgGraph->AddAt(yieldBkgGraph, 1);

  // Yield over Mean Mult graph 
  TGraphAsymmErrors *yieldOverMeanMultJPsiGraph = new TGraphAsymmErrors(multiplicityRanges.size()-1);
  yieldOverMeanMultJPsiGraph->SetName("yieldOverMeanMultJPsiGraph");
  TGraphAsymmErrors *yieldOverMeanMultBkgGraph = new TGraphAsymmErrors(multiplicityRanges.size()-1);
  yieldOverMeanMultBkgGraph->SetName("yieldOverMeanMultBkgGraph");
  
  for (UInt_t iMult = 0; iMult < multiplicityRanges.size()-1; iMult++)
    {
      if (CINT1B->GetX()[iMult] != 0.0)
	{
	  // J/Psi
	  yieldOverMeanMultJPsiGraph->SetPoint(iMult, yieldJPsiGraph->GetX()[iMult], yieldJPsiGraph->GetY()[iMult]/CINT1B->GetX()[iMult]);
	  if (yieldJPsiGraph->GetY()[iMult] != 0.0)
	    {
	      Double_t error = yieldOverMeanMultJPsiGraph->GetY()[iMult]*
		TMath::Sqrt((yieldJPsiGraph->GetEYlow()[iMult]/yieldJPsiGraph->GetY()[iMult])*(yieldJPsiGraph->GetEYlow()[iMult]/yieldJPsiGraph->GetY()[iMult]) +
			    (CINT1B->GetEX()[iMult]/CINT1B->GetX()[iMult])*(CINT1B->GetEX()[iMult]/CINT1B->GetX()[iMult]));
	      yieldOverMeanMultJPsiGraph->SetPointError(iMult,
							yieldJPsiGraph->GetEXlow()[iMult],
							yieldJPsiGraph->GetEXhigh()[iMult],
							error, error);
	    }
	  // Background
	  yieldOverMeanMultBkgGraph->SetPoint(iMult, yieldBkgGraph->GetX()[iMult], yieldBkgGraph->GetY()[iMult]/CINT1B->GetX()[iMult]);
	  if (yieldBkgGraph->GetY()[iMult] != 0.0)
	    {
	      Double_t error = yieldOverMeanMultBkgGraph->GetY()[iMult]*
		TMath::Sqrt((yieldBkgGraph->GetEYlow()[iMult]/yieldBkgGraph->GetY()[iMult])*(yieldBkgGraph->GetEYlow()[iMult]/yieldBkgGraph->GetY()[iMult]) +
			    (CINT1B->GetEX()[iMult]/CINT1B->GetX()[iMult])*(CINT1B->GetEX()[iMult]/CINT1B->GetX()[iMult]));
	      yieldOverMeanMultBkgGraph->SetPointError(iMult,
						       yieldBkgGraph->GetEXlow()[iMult],
						       yieldBkgGraph->GetEXhigh()[iMult],
						       error, error);
	    }
	}
      
      else 
	{
	  yieldOverMeanMultJPsiGraph->SetPoint(iMult, yieldJPsiGraph->GetX()[iMult], 0);
	  yieldOverMeanMultBkgGraph->SetPoint(iMult, yieldBkgGraph->GetX()[iMult], 0);
	}
    }

  JPsiGraph->AddAt(yieldOverMeanMultJPsiGraph, 2);
  bkgGraph->AddAt(yieldOverMeanMultBkgGraph, 2);

  // Yield over Mean Mult normalised to get the bin with the highest number of CMUS1B equal to 1 
  Double_t maxCMUS1B = 0.0;
  Int_t referenceBin = 0;
  for (Int_t iBin = 0; iBin < CMUS1B->GetN(); iBin++)
    if (CMUS1B->GetX()[iBin] > 10.0)
      if (CMUS1B->GetY()[iBin] > maxCMUS1B)
	{
	  maxCMUS1B = CMUS1B->GetY()[iBin];
	  referenceBin = iBin;
	}
  
  TGraphAsymmErrors *yieldNormalisedJPsiGraph = new TGraphAsymmErrors(multiplicityRanges.size()-1);
  yieldNormalisedJPsiGraph->SetName("yieldNormalisedJPsiGraph");
  TGraphAsymmErrors *yieldNormalisedBkgGraph = new TGraphAsymmErrors(multiplicityRanges.size()-1);
  yieldNormalisedBkgGraph->SetName("yieldNormalisedBkgGraph");

  for (UInt_t iMult = 0; iMult < multiplicityRanges.size()-1; iMult++)
    {
      // JPsi
      if (yieldOverMeanMultJPsiGraph->GetY()[referenceBin] != 0.0)
	{
	  yieldNormalisedJPsiGraph->SetPoint(iMult, 
					     yieldOverMeanMultJPsiGraph->GetX()[iMult], 
					     yieldOverMeanMultJPsiGraph->GetY()[iMult]/yieldOverMeanMultJPsiGraph->GetY()[referenceBin]);
	  yieldNormalisedJPsiGraph->SetPointError(iMult,
						  yieldOverMeanMultJPsiGraph->GetEXlow()[iMult],
						  yieldOverMeanMultJPsiGraph->GetEXhigh()[iMult],
						  yieldOverMeanMultJPsiGraph->GetEYlow()[iMult]/yieldOverMeanMultJPsiGraph->GetY()[referenceBin],
						  yieldOverMeanMultJPsiGraph->GetEYhigh()[iMult]/yieldOverMeanMultJPsiGraph->GetY()[referenceBin]);
	}
      
      // Bkg
      if (yieldOverMeanMultBkgGraph->GetY()[referenceBin] != 0.0)
	{
	  yieldNormalisedBkgGraph->SetPoint(iMult, 
					    yieldOverMeanMultBkgGraph->GetX()[iMult], 
					    yieldOverMeanMultBkgGraph->GetY()[iMult]/yieldOverMeanMultBkgGraph->GetY()[referenceBin]);
	  yieldNormalisedBkgGraph->SetPointError(iMult,
						 yieldOverMeanMultBkgGraph->GetEXlow()[iMult],
						 yieldOverMeanMultBkgGraph->GetEXhigh()[iMult],
						 yieldOverMeanMultBkgGraph->GetEYlow()[iMult]/yieldOverMeanMultBkgGraph->GetY()[referenceBin],
						 yieldOverMeanMultBkgGraph->GetEYhigh()[iMult]/yieldOverMeanMultBkgGraph->GetY()[referenceBin]);
	}

    }

  JPsiGraph->AddAt(yieldNormalisedJPsiGraph, 3);
  bkgGraph->AddAt(yieldNormalisedBkgGraph, 3);

  outputFile->WriteTObject(JPsiGraph);
  outputFile->WriteTObject(bkgGraph);
}
 AnalysisFunctionOfMultiplicity.C:1
 AnalysisFunctionOfMultiplicity.C:2
 AnalysisFunctionOfMultiplicity.C:3
 AnalysisFunctionOfMultiplicity.C:4
 AnalysisFunctionOfMultiplicity.C:5
 AnalysisFunctionOfMultiplicity.C:6
 AnalysisFunctionOfMultiplicity.C:7
 AnalysisFunctionOfMultiplicity.C:8
 AnalysisFunctionOfMultiplicity.C:9
 AnalysisFunctionOfMultiplicity.C:10
 AnalysisFunctionOfMultiplicity.C:11
 AnalysisFunctionOfMultiplicity.C:12
 AnalysisFunctionOfMultiplicity.C:13
 AnalysisFunctionOfMultiplicity.C:14
 AnalysisFunctionOfMultiplicity.C:15
 AnalysisFunctionOfMultiplicity.C:16
 AnalysisFunctionOfMultiplicity.C:17
 AnalysisFunctionOfMultiplicity.C:18
 AnalysisFunctionOfMultiplicity.C:19
 AnalysisFunctionOfMultiplicity.C:20
 AnalysisFunctionOfMultiplicity.C:21
 AnalysisFunctionOfMultiplicity.C:22
 AnalysisFunctionOfMultiplicity.C:23
 AnalysisFunctionOfMultiplicity.C:24
 AnalysisFunctionOfMultiplicity.C:25
 AnalysisFunctionOfMultiplicity.C:26
 AnalysisFunctionOfMultiplicity.C:27
 AnalysisFunctionOfMultiplicity.C:28
 AnalysisFunctionOfMultiplicity.C:29
 AnalysisFunctionOfMultiplicity.C:30
 AnalysisFunctionOfMultiplicity.C:31
 AnalysisFunctionOfMultiplicity.C:32
 AnalysisFunctionOfMultiplicity.C:33
 AnalysisFunctionOfMultiplicity.C:34
 AnalysisFunctionOfMultiplicity.C:35
 AnalysisFunctionOfMultiplicity.C:36
 AnalysisFunctionOfMultiplicity.C:37
 AnalysisFunctionOfMultiplicity.C:38
 AnalysisFunctionOfMultiplicity.C:39
 AnalysisFunctionOfMultiplicity.C:40
 AnalysisFunctionOfMultiplicity.C:41
 AnalysisFunctionOfMultiplicity.C:42
 AnalysisFunctionOfMultiplicity.C:43
 AnalysisFunctionOfMultiplicity.C:44
 AnalysisFunctionOfMultiplicity.C:45
 AnalysisFunctionOfMultiplicity.C:46
 AnalysisFunctionOfMultiplicity.C:47
 AnalysisFunctionOfMultiplicity.C:48
 AnalysisFunctionOfMultiplicity.C:49
 AnalysisFunctionOfMultiplicity.C:50
 AnalysisFunctionOfMultiplicity.C:51
 AnalysisFunctionOfMultiplicity.C:52
 AnalysisFunctionOfMultiplicity.C:53
 AnalysisFunctionOfMultiplicity.C:54
 AnalysisFunctionOfMultiplicity.C:55
 AnalysisFunctionOfMultiplicity.C:56
 AnalysisFunctionOfMultiplicity.C:57
 AnalysisFunctionOfMultiplicity.C:58
 AnalysisFunctionOfMultiplicity.C:59
 AnalysisFunctionOfMultiplicity.C:60
 AnalysisFunctionOfMultiplicity.C:61
 AnalysisFunctionOfMultiplicity.C:62
 AnalysisFunctionOfMultiplicity.C:63
 AnalysisFunctionOfMultiplicity.C:64
 AnalysisFunctionOfMultiplicity.C:65
 AnalysisFunctionOfMultiplicity.C:66
 AnalysisFunctionOfMultiplicity.C:67
 AnalysisFunctionOfMultiplicity.C:68
 AnalysisFunctionOfMultiplicity.C:69
 AnalysisFunctionOfMultiplicity.C:70
 AnalysisFunctionOfMultiplicity.C:71
 AnalysisFunctionOfMultiplicity.C:72
 AnalysisFunctionOfMultiplicity.C:73
 AnalysisFunctionOfMultiplicity.C:74
 AnalysisFunctionOfMultiplicity.C:75
 AnalysisFunctionOfMultiplicity.C:76
 AnalysisFunctionOfMultiplicity.C:77
 AnalysisFunctionOfMultiplicity.C:78
 AnalysisFunctionOfMultiplicity.C:79
 AnalysisFunctionOfMultiplicity.C:80
 AnalysisFunctionOfMultiplicity.C:81
 AnalysisFunctionOfMultiplicity.C:82
 AnalysisFunctionOfMultiplicity.C:83
 AnalysisFunctionOfMultiplicity.C:84
 AnalysisFunctionOfMultiplicity.C:85
 AnalysisFunctionOfMultiplicity.C:86
 AnalysisFunctionOfMultiplicity.C:87
 AnalysisFunctionOfMultiplicity.C:88
 AnalysisFunctionOfMultiplicity.C:89
 AnalysisFunctionOfMultiplicity.C:90
 AnalysisFunctionOfMultiplicity.C:91
 AnalysisFunctionOfMultiplicity.C:92
 AnalysisFunctionOfMultiplicity.C:93
 AnalysisFunctionOfMultiplicity.C:94
 AnalysisFunctionOfMultiplicity.C:95
 AnalysisFunctionOfMultiplicity.C:96
 AnalysisFunctionOfMultiplicity.C:97
 AnalysisFunctionOfMultiplicity.C:98
 AnalysisFunctionOfMultiplicity.C:99
 AnalysisFunctionOfMultiplicity.C:100
 AnalysisFunctionOfMultiplicity.C:101
 AnalysisFunctionOfMultiplicity.C:102
 AnalysisFunctionOfMultiplicity.C:103
 AnalysisFunctionOfMultiplicity.C:104
 AnalysisFunctionOfMultiplicity.C:105
 AnalysisFunctionOfMultiplicity.C:106
 AnalysisFunctionOfMultiplicity.C:107
 AnalysisFunctionOfMultiplicity.C:108
 AnalysisFunctionOfMultiplicity.C:109
 AnalysisFunctionOfMultiplicity.C:110
 AnalysisFunctionOfMultiplicity.C:111
 AnalysisFunctionOfMultiplicity.C:112
 AnalysisFunctionOfMultiplicity.C:113
 AnalysisFunctionOfMultiplicity.C:114
 AnalysisFunctionOfMultiplicity.C:115
 AnalysisFunctionOfMultiplicity.C:116
 AnalysisFunctionOfMultiplicity.C:117
 AnalysisFunctionOfMultiplicity.C:118
 AnalysisFunctionOfMultiplicity.C:119
 AnalysisFunctionOfMultiplicity.C:120
 AnalysisFunctionOfMultiplicity.C:121
 AnalysisFunctionOfMultiplicity.C:122
 AnalysisFunctionOfMultiplicity.C:123
 AnalysisFunctionOfMultiplicity.C:124
 AnalysisFunctionOfMultiplicity.C:125
 AnalysisFunctionOfMultiplicity.C:126
 AnalysisFunctionOfMultiplicity.C:127
 AnalysisFunctionOfMultiplicity.C:128
 AnalysisFunctionOfMultiplicity.C:129
 AnalysisFunctionOfMultiplicity.C:130
 AnalysisFunctionOfMultiplicity.C:131
 AnalysisFunctionOfMultiplicity.C:132
 AnalysisFunctionOfMultiplicity.C:133
 AnalysisFunctionOfMultiplicity.C:134
 AnalysisFunctionOfMultiplicity.C:135
 AnalysisFunctionOfMultiplicity.C:136
 AnalysisFunctionOfMultiplicity.C:137
 AnalysisFunctionOfMultiplicity.C:138
 AnalysisFunctionOfMultiplicity.C:139
 AnalysisFunctionOfMultiplicity.C:140
 AnalysisFunctionOfMultiplicity.C:141
 AnalysisFunctionOfMultiplicity.C:142
 AnalysisFunctionOfMultiplicity.C:143
 AnalysisFunctionOfMultiplicity.C:144
 AnalysisFunctionOfMultiplicity.C:145
 AnalysisFunctionOfMultiplicity.C:146
 AnalysisFunctionOfMultiplicity.C:147
 AnalysisFunctionOfMultiplicity.C:148
 AnalysisFunctionOfMultiplicity.C:149
 AnalysisFunctionOfMultiplicity.C:150
 AnalysisFunctionOfMultiplicity.C:151
 AnalysisFunctionOfMultiplicity.C:152
 AnalysisFunctionOfMultiplicity.C:153
 AnalysisFunctionOfMultiplicity.C:154
 AnalysisFunctionOfMultiplicity.C:155
 AnalysisFunctionOfMultiplicity.C:156
 AnalysisFunctionOfMultiplicity.C:157
 AnalysisFunctionOfMultiplicity.C:158
 AnalysisFunctionOfMultiplicity.C:159
 AnalysisFunctionOfMultiplicity.C:160
 AnalysisFunctionOfMultiplicity.C:161
 AnalysisFunctionOfMultiplicity.C:162
 AnalysisFunctionOfMultiplicity.C:163
 AnalysisFunctionOfMultiplicity.C:164
 AnalysisFunctionOfMultiplicity.C:165
 AnalysisFunctionOfMultiplicity.C:166
 AnalysisFunctionOfMultiplicity.C:167
 AnalysisFunctionOfMultiplicity.C:168
 AnalysisFunctionOfMultiplicity.C:169
 AnalysisFunctionOfMultiplicity.C:170
 AnalysisFunctionOfMultiplicity.C:171
 AnalysisFunctionOfMultiplicity.C:172
 AnalysisFunctionOfMultiplicity.C:173
 AnalysisFunctionOfMultiplicity.C:174
 AnalysisFunctionOfMultiplicity.C:175
 AnalysisFunctionOfMultiplicity.C:176
 AnalysisFunctionOfMultiplicity.C:177
 AnalysisFunctionOfMultiplicity.C:178
 AnalysisFunctionOfMultiplicity.C:179
 AnalysisFunctionOfMultiplicity.C:180
 AnalysisFunctionOfMultiplicity.C:181
 AnalysisFunctionOfMultiplicity.C:182
 AnalysisFunctionOfMultiplicity.C:183
 AnalysisFunctionOfMultiplicity.C:184
 AnalysisFunctionOfMultiplicity.C:185
 AnalysisFunctionOfMultiplicity.C:186
 AnalysisFunctionOfMultiplicity.C:187
 AnalysisFunctionOfMultiplicity.C:188
 AnalysisFunctionOfMultiplicity.C:189
 AnalysisFunctionOfMultiplicity.C:190
 AnalysisFunctionOfMultiplicity.C:191
 AnalysisFunctionOfMultiplicity.C:192
 AnalysisFunctionOfMultiplicity.C:193
 AnalysisFunctionOfMultiplicity.C:194
 AnalysisFunctionOfMultiplicity.C:195
 AnalysisFunctionOfMultiplicity.C:196
 AnalysisFunctionOfMultiplicity.C:197
 AnalysisFunctionOfMultiplicity.C:198
 AnalysisFunctionOfMultiplicity.C:199
 AnalysisFunctionOfMultiplicity.C:200
 AnalysisFunctionOfMultiplicity.C:201
 AnalysisFunctionOfMultiplicity.C:202
 AnalysisFunctionOfMultiplicity.C:203
 AnalysisFunctionOfMultiplicity.C:204
 AnalysisFunctionOfMultiplicity.C:205
 AnalysisFunctionOfMultiplicity.C:206
 AnalysisFunctionOfMultiplicity.C:207
 AnalysisFunctionOfMultiplicity.C:208
 AnalysisFunctionOfMultiplicity.C:209
 AnalysisFunctionOfMultiplicity.C:210
 AnalysisFunctionOfMultiplicity.C:211
 AnalysisFunctionOfMultiplicity.C:212
 AnalysisFunctionOfMultiplicity.C:213
 AnalysisFunctionOfMultiplicity.C:214
 AnalysisFunctionOfMultiplicity.C:215
 AnalysisFunctionOfMultiplicity.C:216
 AnalysisFunctionOfMultiplicity.C:217
 AnalysisFunctionOfMultiplicity.C:218
 AnalysisFunctionOfMultiplicity.C:219
 AnalysisFunctionOfMultiplicity.C:220
 AnalysisFunctionOfMultiplicity.C:221
 AnalysisFunctionOfMultiplicity.C:222
 AnalysisFunctionOfMultiplicity.C:223
 AnalysisFunctionOfMultiplicity.C:224
 AnalysisFunctionOfMultiplicity.C:225
 AnalysisFunctionOfMultiplicity.C:226
 AnalysisFunctionOfMultiplicity.C:227
 AnalysisFunctionOfMultiplicity.C:228
 AnalysisFunctionOfMultiplicity.C:229
 AnalysisFunctionOfMultiplicity.C:230
 AnalysisFunctionOfMultiplicity.C:231
 AnalysisFunctionOfMultiplicity.C:232
 AnalysisFunctionOfMultiplicity.C:233
 AnalysisFunctionOfMultiplicity.C:234
 AnalysisFunctionOfMultiplicity.C:235
 AnalysisFunctionOfMultiplicity.C:236
 AnalysisFunctionOfMultiplicity.C:237
 AnalysisFunctionOfMultiplicity.C:238
 AnalysisFunctionOfMultiplicity.C:239
 AnalysisFunctionOfMultiplicity.C:240
 AnalysisFunctionOfMultiplicity.C:241
 AnalysisFunctionOfMultiplicity.C:242
 AnalysisFunctionOfMultiplicity.C:243
 AnalysisFunctionOfMultiplicity.C:244
 AnalysisFunctionOfMultiplicity.C:245
 AnalysisFunctionOfMultiplicity.C:246
 AnalysisFunctionOfMultiplicity.C:247
 AnalysisFunctionOfMultiplicity.C:248
 AnalysisFunctionOfMultiplicity.C:249
 AnalysisFunctionOfMultiplicity.C:250
 AnalysisFunctionOfMultiplicity.C:251
 AnalysisFunctionOfMultiplicity.C:252
 AnalysisFunctionOfMultiplicity.C:253
 AnalysisFunctionOfMultiplicity.C:254
 AnalysisFunctionOfMultiplicity.C:255
 AnalysisFunctionOfMultiplicity.C:256
 AnalysisFunctionOfMultiplicity.C:257
 AnalysisFunctionOfMultiplicity.C:258
 AnalysisFunctionOfMultiplicity.C:259
 AnalysisFunctionOfMultiplicity.C:260
 AnalysisFunctionOfMultiplicity.C:261
 AnalysisFunctionOfMultiplicity.C:262
 AnalysisFunctionOfMultiplicity.C:263
 AnalysisFunctionOfMultiplicity.C:264
 AnalysisFunctionOfMultiplicity.C:265
 AnalysisFunctionOfMultiplicity.C:266
 AnalysisFunctionOfMultiplicity.C:267
 AnalysisFunctionOfMultiplicity.C:268
 AnalysisFunctionOfMultiplicity.C:269
 AnalysisFunctionOfMultiplicity.C:270
 AnalysisFunctionOfMultiplicity.C:271
 AnalysisFunctionOfMultiplicity.C:272
 AnalysisFunctionOfMultiplicity.C:273
 AnalysisFunctionOfMultiplicity.C:274
 AnalysisFunctionOfMultiplicity.C:275
 AnalysisFunctionOfMultiplicity.C:276
 AnalysisFunctionOfMultiplicity.C:277
 AnalysisFunctionOfMultiplicity.C:278
 AnalysisFunctionOfMultiplicity.C:279
 AnalysisFunctionOfMultiplicity.C:280
 AnalysisFunctionOfMultiplicity.C:281
 AnalysisFunctionOfMultiplicity.C:282
 AnalysisFunctionOfMultiplicity.C:283
 AnalysisFunctionOfMultiplicity.C:284
 AnalysisFunctionOfMultiplicity.C:285
 AnalysisFunctionOfMultiplicity.C:286
 AnalysisFunctionOfMultiplicity.C:287
 AnalysisFunctionOfMultiplicity.C:288
 AnalysisFunctionOfMultiplicity.C:289
 AnalysisFunctionOfMultiplicity.C:290
 AnalysisFunctionOfMultiplicity.C:291
 AnalysisFunctionOfMultiplicity.C:292
 AnalysisFunctionOfMultiplicity.C:293
 AnalysisFunctionOfMultiplicity.C:294
 AnalysisFunctionOfMultiplicity.C:295
 AnalysisFunctionOfMultiplicity.C:296
 AnalysisFunctionOfMultiplicity.C:297
 AnalysisFunctionOfMultiplicity.C:298
 AnalysisFunctionOfMultiplicity.C:299
 AnalysisFunctionOfMultiplicity.C:300
 AnalysisFunctionOfMultiplicity.C:301
 AnalysisFunctionOfMultiplicity.C:302
 AnalysisFunctionOfMultiplicity.C:303
 AnalysisFunctionOfMultiplicity.C:304
 AnalysisFunctionOfMultiplicity.C:305
 AnalysisFunctionOfMultiplicity.C:306
 AnalysisFunctionOfMultiplicity.C:307
 AnalysisFunctionOfMultiplicity.C:308
 AnalysisFunctionOfMultiplicity.C:309
 AnalysisFunctionOfMultiplicity.C:310
 AnalysisFunctionOfMultiplicity.C:311
 AnalysisFunctionOfMultiplicity.C:312
 AnalysisFunctionOfMultiplicity.C:313
 AnalysisFunctionOfMultiplicity.C:314
 AnalysisFunctionOfMultiplicity.C:315
 AnalysisFunctionOfMultiplicity.C:316
 AnalysisFunctionOfMultiplicity.C:317
 AnalysisFunctionOfMultiplicity.C:318
 AnalysisFunctionOfMultiplicity.C:319
 AnalysisFunctionOfMultiplicity.C:320
 AnalysisFunctionOfMultiplicity.C:321
 AnalysisFunctionOfMultiplicity.C:322
 AnalysisFunctionOfMultiplicity.C:323
 AnalysisFunctionOfMultiplicity.C:324
 AnalysisFunctionOfMultiplicity.C:325
 AnalysisFunctionOfMultiplicity.C:326
 AnalysisFunctionOfMultiplicity.C:327
 AnalysisFunctionOfMultiplicity.C:328
 AnalysisFunctionOfMultiplicity.C:329
 AnalysisFunctionOfMultiplicity.C:330
 AnalysisFunctionOfMultiplicity.C:331
 AnalysisFunctionOfMultiplicity.C:332
 AnalysisFunctionOfMultiplicity.C:333
 AnalysisFunctionOfMultiplicity.C:334
 AnalysisFunctionOfMultiplicity.C:335
 AnalysisFunctionOfMultiplicity.C:336
 AnalysisFunctionOfMultiplicity.C:337
 AnalysisFunctionOfMultiplicity.C:338
 AnalysisFunctionOfMultiplicity.C:339
 AnalysisFunctionOfMultiplicity.C:340
 AnalysisFunctionOfMultiplicity.C:341
 AnalysisFunctionOfMultiplicity.C:342
 AnalysisFunctionOfMultiplicity.C:343
 AnalysisFunctionOfMultiplicity.C:344
 AnalysisFunctionOfMultiplicity.C:345
 AnalysisFunctionOfMultiplicity.C:346
 AnalysisFunctionOfMultiplicity.C:347
 AnalysisFunctionOfMultiplicity.C:348
 AnalysisFunctionOfMultiplicity.C:349
 AnalysisFunctionOfMultiplicity.C:350
 AnalysisFunctionOfMultiplicity.C:351
 AnalysisFunctionOfMultiplicity.C:352
 AnalysisFunctionOfMultiplicity.C:353
 AnalysisFunctionOfMultiplicity.C:354
 AnalysisFunctionOfMultiplicity.C:355
 AnalysisFunctionOfMultiplicity.C:356
 AnalysisFunctionOfMultiplicity.C:357
 AnalysisFunctionOfMultiplicity.C:358
 AnalysisFunctionOfMultiplicity.C:359
 AnalysisFunctionOfMultiplicity.C:360
 AnalysisFunctionOfMultiplicity.C:361
 AnalysisFunctionOfMultiplicity.C:362
 AnalysisFunctionOfMultiplicity.C:363
 AnalysisFunctionOfMultiplicity.C:364
 AnalysisFunctionOfMultiplicity.C:365
 AnalysisFunctionOfMultiplicity.C:366
 AnalysisFunctionOfMultiplicity.C:367
 AnalysisFunctionOfMultiplicity.C:368
 AnalysisFunctionOfMultiplicity.C:369
 AnalysisFunctionOfMultiplicity.C:370
 AnalysisFunctionOfMultiplicity.C:371
 AnalysisFunctionOfMultiplicity.C:372
 AnalysisFunctionOfMultiplicity.C:373
 AnalysisFunctionOfMultiplicity.C:374
 AnalysisFunctionOfMultiplicity.C:375
 AnalysisFunctionOfMultiplicity.C:376
 AnalysisFunctionOfMultiplicity.C:377
 AnalysisFunctionOfMultiplicity.C:378
 AnalysisFunctionOfMultiplicity.C:379
 AnalysisFunctionOfMultiplicity.C:380
 AnalysisFunctionOfMultiplicity.C:381
 AnalysisFunctionOfMultiplicity.C:382
 AnalysisFunctionOfMultiplicity.C:383
 AnalysisFunctionOfMultiplicity.C:384
 AnalysisFunctionOfMultiplicity.C:385
 AnalysisFunctionOfMultiplicity.C:386
 AnalysisFunctionOfMultiplicity.C:387
 AnalysisFunctionOfMultiplicity.C:388
 AnalysisFunctionOfMultiplicity.C:389
 AnalysisFunctionOfMultiplicity.C:390
 AnalysisFunctionOfMultiplicity.C:391
 AnalysisFunctionOfMultiplicity.C:392
 AnalysisFunctionOfMultiplicity.C:393
 AnalysisFunctionOfMultiplicity.C:394
 AnalysisFunctionOfMultiplicity.C:395
 AnalysisFunctionOfMultiplicity.C:396
 AnalysisFunctionOfMultiplicity.C:397
 AnalysisFunctionOfMultiplicity.C:398
 AnalysisFunctionOfMultiplicity.C:399
 AnalysisFunctionOfMultiplicity.C:400
 AnalysisFunctionOfMultiplicity.C:401
 AnalysisFunctionOfMultiplicity.C:402
 AnalysisFunctionOfMultiplicity.C:403
 AnalysisFunctionOfMultiplicity.C:404
 AnalysisFunctionOfMultiplicity.C:405
 AnalysisFunctionOfMultiplicity.C:406
 AnalysisFunctionOfMultiplicity.C:407
 AnalysisFunctionOfMultiplicity.C:408
 AnalysisFunctionOfMultiplicity.C:409
 AnalysisFunctionOfMultiplicity.C:410
 AnalysisFunctionOfMultiplicity.C:411
 AnalysisFunctionOfMultiplicity.C:412
 AnalysisFunctionOfMultiplicity.C:413
 AnalysisFunctionOfMultiplicity.C:414
 AnalysisFunctionOfMultiplicity.C:415
 AnalysisFunctionOfMultiplicity.C:416
 AnalysisFunctionOfMultiplicity.C:417
 AnalysisFunctionOfMultiplicity.C:418
 AnalysisFunctionOfMultiplicity.C:419
 AnalysisFunctionOfMultiplicity.C:420
 AnalysisFunctionOfMultiplicity.C:421
 AnalysisFunctionOfMultiplicity.C:422
 AnalysisFunctionOfMultiplicity.C:423
 AnalysisFunctionOfMultiplicity.C:424
 AnalysisFunctionOfMultiplicity.C:425
 AnalysisFunctionOfMultiplicity.C:426
 AnalysisFunctionOfMultiplicity.C:427
 AnalysisFunctionOfMultiplicity.C:428
 AnalysisFunctionOfMultiplicity.C:429
 AnalysisFunctionOfMultiplicity.C:430
 AnalysisFunctionOfMultiplicity.C:431
 AnalysisFunctionOfMultiplicity.C:432
 AnalysisFunctionOfMultiplicity.C:433
 AnalysisFunctionOfMultiplicity.C:434
 AnalysisFunctionOfMultiplicity.C:435
 AnalysisFunctionOfMultiplicity.C:436
 AnalysisFunctionOfMultiplicity.C:437
 AnalysisFunctionOfMultiplicity.C:438
 AnalysisFunctionOfMultiplicity.C:439
 AnalysisFunctionOfMultiplicity.C:440
 AnalysisFunctionOfMultiplicity.C:441
 AnalysisFunctionOfMultiplicity.C:442
 AnalysisFunctionOfMultiplicity.C:443
 AnalysisFunctionOfMultiplicity.C:444
 AnalysisFunctionOfMultiplicity.C:445
 AnalysisFunctionOfMultiplicity.C:446
 AnalysisFunctionOfMultiplicity.C:447
 AnalysisFunctionOfMultiplicity.C:448
 AnalysisFunctionOfMultiplicity.C:449
 AnalysisFunctionOfMultiplicity.C:450
 AnalysisFunctionOfMultiplicity.C:451
 AnalysisFunctionOfMultiplicity.C:452
 AnalysisFunctionOfMultiplicity.C:453
 AnalysisFunctionOfMultiplicity.C:454
 AnalysisFunctionOfMultiplicity.C:455
 AnalysisFunctionOfMultiplicity.C:456
 AnalysisFunctionOfMultiplicity.C:457
 AnalysisFunctionOfMultiplicity.C:458
 AnalysisFunctionOfMultiplicity.C:459
 AnalysisFunctionOfMultiplicity.C:460
 AnalysisFunctionOfMultiplicity.C:461
 AnalysisFunctionOfMultiplicity.C:462
 AnalysisFunctionOfMultiplicity.C:463
 AnalysisFunctionOfMultiplicity.C:464
 AnalysisFunctionOfMultiplicity.C:465
 AnalysisFunctionOfMultiplicity.C:466
 AnalysisFunctionOfMultiplicity.C:467
 AnalysisFunctionOfMultiplicity.C:468
 AnalysisFunctionOfMultiplicity.C:469
 AnalysisFunctionOfMultiplicity.C:470
 AnalysisFunctionOfMultiplicity.C:471
 AnalysisFunctionOfMultiplicity.C:472
 AnalysisFunctionOfMultiplicity.C:473
 AnalysisFunctionOfMultiplicity.C:474
 AnalysisFunctionOfMultiplicity.C:475
 AnalysisFunctionOfMultiplicity.C:476
 AnalysisFunctionOfMultiplicity.C:477
 AnalysisFunctionOfMultiplicity.C:478
 AnalysisFunctionOfMultiplicity.C:479
 AnalysisFunctionOfMultiplicity.C:480
 AnalysisFunctionOfMultiplicity.C:481
 AnalysisFunctionOfMultiplicity.C:482
 AnalysisFunctionOfMultiplicity.C:483
 AnalysisFunctionOfMultiplicity.C:484
 AnalysisFunctionOfMultiplicity.C:485
 AnalysisFunctionOfMultiplicity.C:486
 AnalysisFunctionOfMultiplicity.C:487
 AnalysisFunctionOfMultiplicity.C:488
 AnalysisFunctionOfMultiplicity.C:489
 AnalysisFunctionOfMultiplicity.C:490
 AnalysisFunctionOfMultiplicity.C:491
 AnalysisFunctionOfMultiplicity.C:492
 AnalysisFunctionOfMultiplicity.C:493
 AnalysisFunctionOfMultiplicity.C:494
 AnalysisFunctionOfMultiplicity.C:495
 AnalysisFunctionOfMultiplicity.C:496
 AnalysisFunctionOfMultiplicity.C:497
 AnalysisFunctionOfMultiplicity.C:498
 AnalysisFunctionOfMultiplicity.C:499
 AnalysisFunctionOfMultiplicity.C:500
 AnalysisFunctionOfMultiplicity.C:501
 AnalysisFunctionOfMultiplicity.C:502
 AnalysisFunctionOfMultiplicity.C:503
 AnalysisFunctionOfMultiplicity.C:504
 AnalysisFunctionOfMultiplicity.C:505
 AnalysisFunctionOfMultiplicity.C:506
 AnalysisFunctionOfMultiplicity.C:507
 AnalysisFunctionOfMultiplicity.C:508
 AnalysisFunctionOfMultiplicity.C:509
 AnalysisFunctionOfMultiplicity.C:510
 AnalysisFunctionOfMultiplicity.C:511
 AnalysisFunctionOfMultiplicity.C:512
 AnalysisFunctionOfMultiplicity.C:513
 AnalysisFunctionOfMultiplicity.C:514
 AnalysisFunctionOfMultiplicity.C:515
 AnalysisFunctionOfMultiplicity.C:516
 AnalysisFunctionOfMultiplicity.C:517
 AnalysisFunctionOfMultiplicity.C:518
 AnalysisFunctionOfMultiplicity.C:519
 AnalysisFunctionOfMultiplicity.C:520
 AnalysisFunctionOfMultiplicity.C:521
 AnalysisFunctionOfMultiplicity.C:522
 AnalysisFunctionOfMultiplicity.C:523
 AnalysisFunctionOfMultiplicity.C:524
 AnalysisFunctionOfMultiplicity.C:525
 AnalysisFunctionOfMultiplicity.C:526
 AnalysisFunctionOfMultiplicity.C:527
 AnalysisFunctionOfMultiplicity.C:528
 AnalysisFunctionOfMultiplicity.C:529
 AnalysisFunctionOfMultiplicity.C:530
 AnalysisFunctionOfMultiplicity.C:531
 AnalysisFunctionOfMultiplicity.C:532
 AnalysisFunctionOfMultiplicity.C:533
 AnalysisFunctionOfMultiplicity.C:534
 AnalysisFunctionOfMultiplicity.C:535
 AnalysisFunctionOfMultiplicity.C:536
 AnalysisFunctionOfMultiplicity.C:537
 AnalysisFunctionOfMultiplicity.C:538
 AnalysisFunctionOfMultiplicity.C:539
 AnalysisFunctionOfMultiplicity.C:540
 AnalysisFunctionOfMultiplicity.C:541
 AnalysisFunctionOfMultiplicity.C:542
 AnalysisFunctionOfMultiplicity.C:543
 AnalysisFunctionOfMultiplicity.C:544
 AnalysisFunctionOfMultiplicity.C:545
 AnalysisFunctionOfMultiplicity.C:546
 AnalysisFunctionOfMultiplicity.C:547
 AnalysisFunctionOfMultiplicity.C:548
 AnalysisFunctionOfMultiplicity.C:549
 AnalysisFunctionOfMultiplicity.C:550
 AnalysisFunctionOfMultiplicity.C:551
 AnalysisFunctionOfMultiplicity.C:552
 AnalysisFunctionOfMultiplicity.C:553
 AnalysisFunctionOfMultiplicity.C:554
 AnalysisFunctionOfMultiplicity.C:555
 AnalysisFunctionOfMultiplicity.C:556
 AnalysisFunctionOfMultiplicity.C:557
 AnalysisFunctionOfMultiplicity.C:558
 AnalysisFunctionOfMultiplicity.C:559
 AnalysisFunctionOfMultiplicity.C:560
 AnalysisFunctionOfMultiplicity.C:561
 AnalysisFunctionOfMultiplicity.C:562
 AnalysisFunctionOfMultiplicity.C:563
 AnalysisFunctionOfMultiplicity.C:564
 AnalysisFunctionOfMultiplicity.C:565
 AnalysisFunctionOfMultiplicity.C:566
 AnalysisFunctionOfMultiplicity.C:567
 AnalysisFunctionOfMultiplicity.C:568
 AnalysisFunctionOfMultiplicity.C:569
 AnalysisFunctionOfMultiplicity.C:570
 AnalysisFunctionOfMultiplicity.C:571
 AnalysisFunctionOfMultiplicity.C:572
 AnalysisFunctionOfMultiplicity.C:573
 AnalysisFunctionOfMultiplicity.C:574
 AnalysisFunctionOfMultiplicity.C:575
 AnalysisFunctionOfMultiplicity.C:576
 AnalysisFunctionOfMultiplicity.C:577
 AnalysisFunctionOfMultiplicity.C:578
 AnalysisFunctionOfMultiplicity.C:579
 AnalysisFunctionOfMultiplicity.C:580
 AnalysisFunctionOfMultiplicity.C:581
 AnalysisFunctionOfMultiplicity.C:582
 AnalysisFunctionOfMultiplicity.C:583
 AnalysisFunctionOfMultiplicity.C:584
 AnalysisFunctionOfMultiplicity.C:585
 AnalysisFunctionOfMultiplicity.C:586
 AnalysisFunctionOfMultiplicity.C:587
 AnalysisFunctionOfMultiplicity.C:588
 AnalysisFunctionOfMultiplicity.C:589
 AnalysisFunctionOfMultiplicity.C:590
 AnalysisFunctionOfMultiplicity.C:591
 AnalysisFunctionOfMultiplicity.C:592
 AnalysisFunctionOfMultiplicity.C:593
 AnalysisFunctionOfMultiplicity.C:594
 AnalysisFunctionOfMultiplicity.C:595
 AnalysisFunctionOfMultiplicity.C:596
 AnalysisFunctionOfMultiplicity.C:597
 AnalysisFunctionOfMultiplicity.C:598
 AnalysisFunctionOfMultiplicity.C:599
 AnalysisFunctionOfMultiplicity.C:600
 AnalysisFunctionOfMultiplicity.C:601
 AnalysisFunctionOfMultiplicity.C:602
 AnalysisFunctionOfMultiplicity.C:603
 AnalysisFunctionOfMultiplicity.C:604
 AnalysisFunctionOfMultiplicity.C:605
 AnalysisFunctionOfMultiplicity.C:606
 AnalysisFunctionOfMultiplicity.C:607
 AnalysisFunctionOfMultiplicity.C:608
 AnalysisFunctionOfMultiplicity.C:609
 AnalysisFunctionOfMultiplicity.C:610
 AnalysisFunctionOfMultiplicity.C:611
 AnalysisFunctionOfMultiplicity.C:612
 AnalysisFunctionOfMultiplicity.C:613
 AnalysisFunctionOfMultiplicity.C:614
 AnalysisFunctionOfMultiplicity.C:615
 AnalysisFunctionOfMultiplicity.C:616
 AnalysisFunctionOfMultiplicity.C:617
 AnalysisFunctionOfMultiplicity.C:618
 AnalysisFunctionOfMultiplicity.C:619
 AnalysisFunctionOfMultiplicity.C:620
 AnalysisFunctionOfMultiplicity.C:621
 AnalysisFunctionOfMultiplicity.C:622
 AnalysisFunctionOfMultiplicity.C:623
 AnalysisFunctionOfMultiplicity.C:624
 AnalysisFunctionOfMultiplicity.C:625
 AnalysisFunctionOfMultiplicity.C:626
 AnalysisFunctionOfMultiplicity.C:627
 AnalysisFunctionOfMultiplicity.C:628
 AnalysisFunctionOfMultiplicity.C:629
 AnalysisFunctionOfMultiplicity.C:630
 AnalysisFunctionOfMultiplicity.C:631
 AnalysisFunctionOfMultiplicity.C:632
 AnalysisFunctionOfMultiplicity.C:633
 AnalysisFunctionOfMultiplicity.C:634
 AnalysisFunctionOfMultiplicity.C:635
 AnalysisFunctionOfMultiplicity.C:636
 AnalysisFunctionOfMultiplicity.C:637
 AnalysisFunctionOfMultiplicity.C:638
 AnalysisFunctionOfMultiplicity.C:639
 AnalysisFunctionOfMultiplicity.C:640
 AnalysisFunctionOfMultiplicity.C:641
 AnalysisFunctionOfMultiplicity.C:642
 AnalysisFunctionOfMultiplicity.C:643
 AnalysisFunctionOfMultiplicity.C:644
 AnalysisFunctionOfMultiplicity.C:645
 AnalysisFunctionOfMultiplicity.C:646
 AnalysisFunctionOfMultiplicity.C:647
 AnalysisFunctionOfMultiplicity.C:648
 AnalysisFunctionOfMultiplicity.C:649
 AnalysisFunctionOfMultiplicity.C:650
 AnalysisFunctionOfMultiplicity.C:651
 AnalysisFunctionOfMultiplicity.C:652
 AnalysisFunctionOfMultiplicity.C:653
 AnalysisFunctionOfMultiplicity.C:654
 AnalysisFunctionOfMultiplicity.C:655
 AnalysisFunctionOfMultiplicity.C:656
 AnalysisFunctionOfMultiplicity.C:657
 AnalysisFunctionOfMultiplicity.C:658
 AnalysisFunctionOfMultiplicity.C:659
 AnalysisFunctionOfMultiplicity.C:660
 AnalysisFunctionOfMultiplicity.C:661
 AnalysisFunctionOfMultiplicity.C:662
 AnalysisFunctionOfMultiplicity.C:663
 AnalysisFunctionOfMultiplicity.C:664
 AnalysisFunctionOfMultiplicity.C:665
 AnalysisFunctionOfMultiplicity.C:666
 AnalysisFunctionOfMultiplicity.C:667
 AnalysisFunctionOfMultiplicity.C:668
 AnalysisFunctionOfMultiplicity.C:669
 AnalysisFunctionOfMultiplicity.C:670
 AnalysisFunctionOfMultiplicity.C:671
 AnalysisFunctionOfMultiplicity.C:672
 AnalysisFunctionOfMultiplicity.C:673
 AnalysisFunctionOfMultiplicity.C:674
 AnalysisFunctionOfMultiplicity.C:675
 AnalysisFunctionOfMultiplicity.C:676
 AnalysisFunctionOfMultiplicity.C:677
 AnalysisFunctionOfMultiplicity.C:678
 AnalysisFunctionOfMultiplicity.C:679
 AnalysisFunctionOfMultiplicity.C:680
 AnalysisFunctionOfMultiplicity.C:681
 AnalysisFunctionOfMultiplicity.C:682
 AnalysisFunctionOfMultiplicity.C:683
 AnalysisFunctionOfMultiplicity.C:684
 AnalysisFunctionOfMultiplicity.C:685
 AnalysisFunctionOfMultiplicity.C:686
 AnalysisFunctionOfMultiplicity.C:687
 AnalysisFunctionOfMultiplicity.C:688
 AnalysisFunctionOfMultiplicity.C:689
 AnalysisFunctionOfMultiplicity.C:690
 AnalysisFunctionOfMultiplicity.C:691
 AnalysisFunctionOfMultiplicity.C:692
 AnalysisFunctionOfMultiplicity.C:693
 AnalysisFunctionOfMultiplicity.C:694
 AnalysisFunctionOfMultiplicity.C:695
 AnalysisFunctionOfMultiplicity.C:696
 AnalysisFunctionOfMultiplicity.C:697
 AnalysisFunctionOfMultiplicity.C:698
 AnalysisFunctionOfMultiplicity.C:699
 AnalysisFunctionOfMultiplicity.C:700
 AnalysisFunctionOfMultiplicity.C:701
 AnalysisFunctionOfMultiplicity.C:702
 AnalysisFunctionOfMultiplicity.C:703
 AnalysisFunctionOfMultiplicity.C:704
 AnalysisFunctionOfMultiplicity.C:705
 AnalysisFunctionOfMultiplicity.C:706
 AnalysisFunctionOfMultiplicity.C:707
 AnalysisFunctionOfMultiplicity.C:708
 AnalysisFunctionOfMultiplicity.C:709
 AnalysisFunctionOfMultiplicity.C:710
 AnalysisFunctionOfMultiplicity.C:711
 AnalysisFunctionOfMultiplicity.C:712
 AnalysisFunctionOfMultiplicity.C:713
 AnalysisFunctionOfMultiplicity.C:714
 AnalysisFunctionOfMultiplicity.C:715
 AnalysisFunctionOfMultiplicity.C:716
 AnalysisFunctionOfMultiplicity.C:717
 AnalysisFunctionOfMultiplicity.C:718
 AnalysisFunctionOfMultiplicity.C:719
 AnalysisFunctionOfMultiplicity.C:720
 AnalysisFunctionOfMultiplicity.C:721
 AnalysisFunctionOfMultiplicity.C:722
 AnalysisFunctionOfMultiplicity.C:723
 AnalysisFunctionOfMultiplicity.C:724
 AnalysisFunctionOfMultiplicity.C:725
 AnalysisFunctionOfMultiplicity.C:726
 AnalysisFunctionOfMultiplicity.C:727
 AnalysisFunctionOfMultiplicity.C:728
 AnalysisFunctionOfMultiplicity.C:729
 AnalysisFunctionOfMultiplicity.C:730
 AnalysisFunctionOfMultiplicity.C:731
 AnalysisFunctionOfMultiplicity.C:732
 AnalysisFunctionOfMultiplicity.C:733
 AnalysisFunctionOfMultiplicity.C:734
 AnalysisFunctionOfMultiplicity.C:735
 AnalysisFunctionOfMultiplicity.C:736
 AnalysisFunctionOfMultiplicity.C:737
 AnalysisFunctionOfMultiplicity.C:738
 AnalysisFunctionOfMultiplicity.C:739
 AnalysisFunctionOfMultiplicity.C:740
 AnalysisFunctionOfMultiplicity.C:741
 AnalysisFunctionOfMultiplicity.C:742
 AnalysisFunctionOfMultiplicity.C:743
 AnalysisFunctionOfMultiplicity.C:744
 AnalysisFunctionOfMultiplicity.C:745
 AnalysisFunctionOfMultiplicity.C:746
 AnalysisFunctionOfMultiplicity.C:747
 AnalysisFunctionOfMultiplicity.C:748
 AnalysisFunctionOfMultiplicity.C:749
 AnalysisFunctionOfMultiplicity.C:750
 AnalysisFunctionOfMultiplicity.C:751
 AnalysisFunctionOfMultiplicity.C:752
 AnalysisFunctionOfMultiplicity.C:753
 AnalysisFunctionOfMultiplicity.C:754
 AnalysisFunctionOfMultiplicity.C:755
 AnalysisFunctionOfMultiplicity.C:756
 AnalysisFunctionOfMultiplicity.C:757
 AnalysisFunctionOfMultiplicity.C:758
 AnalysisFunctionOfMultiplicity.C:759
 AnalysisFunctionOfMultiplicity.C:760
 AnalysisFunctionOfMultiplicity.C:761
 AnalysisFunctionOfMultiplicity.C:762
 AnalysisFunctionOfMultiplicity.C:763
 AnalysisFunctionOfMultiplicity.C:764
 AnalysisFunctionOfMultiplicity.C:765
 AnalysisFunctionOfMultiplicity.C:766
 AnalysisFunctionOfMultiplicity.C:767
 AnalysisFunctionOfMultiplicity.C:768
 AnalysisFunctionOfMultiplicity.C:769
 AnalysisFunctionOfMultiplicity.C:770
 AnalysisFunctionOfMultiplicity.C:771
 AnalysisFunctionOfMultiplicity.C:772
 AnalysisFunctionOfMultiplicity.C:773
 AnalysisFunctionOfMultiplicity.C:774
 AnalysisFunctionOfMultiplicity.C:775
 AnalysisFunctionOfMultiplicity.C:776
 AnalysisFunctionOfMultiplicity.C:777
 AnalysisFunctionOfMultiplicity.C:778
 AnalysisFunctionOfMultiplicity.C:779
 AnalysisFunctionOfMultiplicity.C:780
 AnalysisFunctionOfMultiplicity.C:781
 AnalysisFunctionOfMultiplicity.C:782
 AnalysisFunctionOfMultiplicity.C:783
 AnalysisFunctionOfMultiplicity.C:784
 AnalysisFunctionOfMultiplicity.C:785
 AnalysisFunctionOfMultiplicity.C:786
 AnalysisFunctionOfMultiplicity.C:787
 AnalysisFunctionOfMultiplicity.C:788
 AnalysisFunctionOfMultiplicity.C:789
 AnalysisFunctionOfMultiplicity.C:790
 AnalysisFunctionOfMultiplicity.C:791
 AnalysisFunctionOfMultiplicity.C:792
 AnalysisFunctionOfMultiplicity.C:793
 AnalysisFunctionOfMultiplicity.C:794
 AnalysisFunctionOfMultiplicity.C:795
 AnalysisFunctionOfMultiplicity.C:796
 AnalysisFunctionOfMultiplicity.C:797
 AnalysisFunctionOfMultiplicity.C:798
 AnalysisFunctionOfMultiplicity.C:799
 AnalysisFunctionOfMultiplicity.C:800
 AnalysisFunctionOfMultiplicity.C:801
 AnalysisFunctionOfMultiplicity.C:802
 AnalysisFunctionOfMultiplicity.C:803
 AnalysisFunctionOfMultiplicity.C:804
 AnalysisFunctionOfMultiplicity.C:805
 AnalysisFunctionOfMultiplicity.C:806
 AnalysisFunctionOfMultiplicity.C:807
 AnalysisFunctionOfMultiplicity.C:808
 AnalysisFunctionOfMultiplicity.C:809
 AnalysisFunctionOfMultiplicity.C:810
 AnalysisFunctionOfMultiplicity.C:811
 AnalysisFunctionOfMultiplicity.C:812
 AnalysisFunctionOfMultiplicity.C:813
 AnalysisFunctionOfMultiplicity.C:814
 AnalysisFunctionOfMultiplicity.C:815
 AnalysisFunctionOfMultiplicity.C:816
 AnalysisFunctionOfMultiplicity.C:817
 AnalysisFunctionOfMultiplicity.C:818
 AnalysisFunctionOfMultiplicity.C:819
 AnalysisFunctionOfMultiplicity.C:820
 AnalysisFunctionOfMultiplicity.C:821
 AnalysisFunctionOfMultiplicity.C:822
 AnalysisFunctionOfMultiplicity.C:823
 AnalysisFunctionOfMultiplicity.C:824
 AnalysisFunctionOfMultiplicity.C:825
 AnalysisFunctionOfMultiplicity.C:826
 AnalysisFunctionOfMultiplicity.C:827
 AnalysisFunctionOfMultiplicity.C:828
 AnalysisFunctionOfMultiplicity.C:829
 AnalysisFunctionOfMultiplicity.C:830
 AnalysisFunctionOfMultiplicity.C:831
 AnalysisFunctionOfMultiplicity.C:832
 AnalysisFunctionOfMultiplicity.C:833
 AnalysisFunctionOfMultiplicity.C:834
 AnalysisFunctionOfMultiplicity.C:835
 AnalysisFunctionOfMultiplicity.C:836
 AnalysisFunctionOfMultiplicity.C:837
 AnalysisFunctionOfMultiplicity.C:838
 AnalysisFunctionOfMultiplicity.C:839
 AnalysisFunctionOfMultiplicity.C:840
 AnalysisFunctionOfMultiplicity.C:841
 AnalysisFunctionOfMultiplicity.C:842
 AnalysisFunctionOfMultiplicity.C:843
 AnalysisFunctionOfMultiplicity.C:844
 AnalysisFunctionOfMultiplicity.C:845
 AnalysisFunctionOfMultiplicity.C:846
 AnalysisFunctionOfMultiplicity.C:847
 AnalysisFunctionOfMultiplicity.C:848
 AnalysisFunctionOfMultiplicity.C:849
 AnalysisFunctionOfMultiplicity.C:850
 AnalysisFunctionOfMultiplicity.C:851
 AnalysisFunctionOfMultiplicity.C:852
 AnalysisFunctionOfMultiplicity.C:853
 AnalysisFunctionOfMultiplicity.C:854
 AnalysisFunctionOfMultiplicity.C:855
 AnalysisFunctionOfMultiplicity.C:856
 AnalysisFunctionOfMultiplicity.C:857
 AnalysisFunctionOfMultiplicity.C:858
 AnalysisFunctionOfMultiplicity.C:859
 AnalysisFunctionOfMultiplicity.C:860
 AnalysisFunctionOfMultiplicity.C:861
 AnalysisFunctionOfMultiplicity.C:862
 AnalysisFunctionOfMultiplicity.C:863
 AnalysisFunctionOfMultiplicity.C:864
 AnalysisFunctionOfMultiplicity.C:865
 AnalysisFunctionOfMultiplicity.C:866
 AnalysisFunctionOfMultiplicity.C:867
 AnalysisFunctionOfMultiplicity.C:868
 AnalysisFunctionOfMultiplicity.C:869
 AnalysisFunctionOfMultiplicity.C:870
 AnalysisFunctionOfMultiplicity.C:871
 AnalysisFunctionOfMultiplicity.C:872
 AnalysisFunctionOfMultiplicity.C:873
 AnalysisFunctionOfMultiplicity.C:874
 AnalysisFunctionOfMultiplicity.C:875
 AnalysisFunctionOfMultiplicity.C:876
 AnalysisFunctionOfMultiplicity.C:877
 AnalysisFunctionOfMultiplicity.C:878
 AnalysisFunctionOfMultiplicity.C:879
 AnalysisFunctionOfMultiplicity.C:880
 AnalysisFunctionOfMultiplicity.C:881
 AnalysisFunctionOfMultiplicity.C:882
 AnalysisFunctionOfMultiplicity.C:883
 AnalysisFunctionOfMultiplicity.C:884
 AnalysisFunctionOfMultiplicity.C:885
 AnalysisFunctionOfMultiplicity.C:886
 AnalysisFunctionOfMultiplicity.C:887
 AnalysisFunctionOfMultiplicity.C:888
 AnalysisFunctionOfMultiplicity.C:889
 AnalysisFunctionOfMultiplicity.C:890
 AnalysisFunctionOfMultiplicity.C:891
 AnalysisFunctionOfMultiplicity.C:892
 AnalysisFunctionOfMultiplicity.C:893
 AnalysisFunctionOfMultiplicity.C:894
 AnalysisFunctionOfMultiplicity.C:895
 AnalysisFunctionOfMultiplicity.C:896
 AnalysisFunctionOfMultiplicity.C:897
 AnalysisFunctionOfMultiplicity.C:898
 AnalysisFunctionOfMultiplicity.C:899
 AnalysisFunctionOfMultiplicity.C:900
 AnalysisFunctionOfMultiplicity.C:901
 AnalysisFunctionOfMultiplicity.C:902
 AnalysisFunctionOfMultiplicity.C:903
 AnalysisFunctionOfMultiplicity.C:904
 AnalysisFunctionOfMultiplicity.C:905
 AnalysisFunctionOfMultiplicity.C:906
 AnalysisFunctionOfMultiplicity.C:907
 AnalysisFunctionOfMultiplicity.C:908
 AnalysisFunctionOfMultiplicity.C:909
 AnalysisFunctionOfMultiplicity.C:910
 AnalysisFunctionOfMultiplicity.C:911
 AnalysisFunctionOfMultiplicity.C:912
 AnalysisFunctionOfMultiplicity.C:913
 AnalysisFunctionOfMultiplicity.C:914
 AnalysisFunctionOfMultiplicity.C:915
 AnalysisFunctionOfMultiplicity.C:916
 AnalysisFunctionOfMultiplicity.C:917
 AnalysisFunctionOfMultiplicity.C:918
 AnalysisFunctionOfMultiplicity.C:919
 AnalysisFunctionOfMultiplicity.C:920
 AnalysisFunctionOfMultiplicity.C:921
 AnalysisFunctionOfMultiplicity.C:922
 AnalysisFunctionOfMultiplicity.C:923
 AnalysisFunctionOfMultiplicity.C:924
 AnalysisFunctionOfMultiplicity.C:925
 AnalysisFunctionOfMultiplicity.C:926
 AnalysisFunctionOfMultiplicity.C:927
 AnalysisFunctionOfMultiplicity.C:928
 AnalysisFunctionOfMultiplicity.C:929
 AnalysisFunctionOfMultiplicity.C:930
 AnalysisFunctionOfMultiplicity.C:931
 AnalysisFunctionOfMultiplicity.C:932
 AnalysisFunctionOfMultiplicity.C:933
 AnalysisFunctionOfMultiplicity.C:934
 AnalysisFunctionOfMultiplicity.C:935
 AnalysisFunctionOfMultiplicity.C:936
 AnalysisFunctionOfMultiplicity.C:937
 AnalysisFunctionOfMultiplicity.C:938
 AnalysisFunctionOfMultiplicity.C:939
 AnalysisFunctionOfMultiplicity.C:940
 AnalysisFunctionOfMultiplicity.C:941
 AnalysisFunctionOfMultiplicity.C:942
 AnalysisFunctionOfMultiplicity.C:943
 AnalysisFunctionOfMultiplicity.C:944
 AnalysisFunctionOfMultiplicity.C:945
 AnalysisFunctionOfMultiplicity.C:946
 AnalysisFunctionOfMultiplicity.C:947
 AnalysisFunctionOfMultiplicity.C:948
 AnalysisFunctionOfMultiplicity.C:949
 AnalysisFunctionOfMultiplicity.C:950
 AnalysisFunctionOfMultiplicity.C:951
 AnalysisFunctionOfMultiplicity.C:952
 AnalysisFunctionOfMultiplicity.C:953
 AnalysisFunctionOfMultiplicity.C:954
 AnalysisFunctionOfMultiplicity.C:955
 AnalysisFunctionOfMultiplicity.C:956
 AnalysisFunctionOfMultiplicity.C:957
 AnalysisFunctionOfMultiplicity.C:958
 AnalysisFunctionOfMultiplicity.C:959
 AnalysisFunctionOfMultiplicity.C:960
 AnalysisFunctionOfMultiplicity.C:961
 AnalysisFunctionOfMultiplicity.C:962
 AnalysisFunctionOfMultiplicity.C:963
 AnalysisFunctionOfMultiplicity.C:964
 AnalysisFunctionOfMultiplicity.C:965
 AnalysisFunctionOfMultiplicity.C:966
 AnalysisFunctionOfMultiplicity.C:967
 AnalysisFunctionOfMultiplicity.C:968
 AnalysisFunctionOfMultiplicity.C:969
 AnalysisFunctionOfMultiplicity.C:970
 AnalysisFunctionOfMultiplicity.C:971
 AnalysisFunctionOfMultiplicity.C:972
 AnalysisFunctionOfMultiplicity.C:973
 AnalysisFunctionOfMultiplicity.C:974
 AnalysisFunctionOfMultiplicity.C:975
 AnalysisFunctionOfMultiplicity.C:976
 AnalysisFunctionOfMultiplicity.C:977
 AnalysisFunctionOfMultiplicity.C:978
 AnalysisFunctionOfMultiplicity.C:979
 AnalysisFunctionOfMultiplicity.C:980
 AnalysisFunctionOfMultiplicity.C:981
 AnalysisFunctionOfMultiplicity.C:982
 AnalysisFunctionOfMultiplicity.C:983
 AnalysisFunctionOfMultiplicity.C:984
 AnalysisFunctionOfMultiplicity.C:985
 AnalysisFunctionOfMultiplicity.C:986
 AnalysisFunctionOfMultiplicity.C:987
 AnalysisFunctionOfMultiplicity.C:988
 AnalysisFunctionOfMultiplicity.C:989
 AnalysisFunctionOfMultiplicity.C:990
 AnalysisFunctionOfMultiplicity.C:991
 AnalysisFunctionOfMultiplicity.C:992
 AnalysisFunctionOfMultiplicity.C:993
 AnalysisFunctionOfMultiplicity.C:994
 AnalysisFunctionOfMultiplicity.C:995
 AnalysisFunctionOfMultiplicity.C:996
 AnalysisFunctionOfMultiplicity.C:997
 AnalysisFunctionOfMultiplicity.C:998
 AnalysisFunctionOfMultiplicity.C:999
 AnalysisFunctionOfMultiplicity.C:1000
 AnalysisFunctionOfMultiplicity.C:1001
 AnalysisFunctionOfMultiplicity.C:1002
 AnalysisFunctionOfMultiplicity.C:1003
 AnalysisFunctionOfMultiplicity.C:1004
 AnalysisFunctionOfMultiplicity.C:1005
 AnalysisFunctionOfMultiplicity.C:1006
 AnalysisFunctionOfMultiplicity.C:1007
 AnalysisFunctionOfMultiplicity.C:1008
 AnalysisFunctionOfMultiplicity.C:1009
 AnalysisFunctionOfMultiplicity.C:1010
 AnalysisFunctionOfMultiplicity.C:1011
 AnalysisFunctionOfMultiplicity.C:1012
 AnalysisFunctionOfMultiplicity.C:1013
 AnalysisFunctionOfMultiplicity.C:1014
 AnalysisFunctionOfMultiplicity.C:1015
 AnalysisFunctionOfMultiplicity.C:1016
 AnalysisFunctionOfMultiplicity.C:1017
 AnalysisFunctionOfMultiplicity.C:1018
 AnalysisFunctionOfMultiplicity.C:1019
 AnalysisFunctionOfMultiplicity.C:1020
 AnalysisFunctionOfMultiplicity.C:1021
 AnalysisFunctionOfMultiplicity.C:1022
 AnalysisFunctionOfMultiplicity.C:1023
 AnalysisFunctionOfMultiplicity.C:1024
 AnalysisFunctionOfMultiplicity.C:1025
 AnalysisFunctionOfMultiplicity.C:1026
 AnalysisFunctionOfMultiplicity.C:1027
 AnalysisFunctionOfMultiplicity.C:1028
 AnalysisFunctionOfMultiplicity.C:1029
 AnalysisFunctionOfMultiplicity.C:1030
 AnalysisFunctionOfMultiplicity.C:1031
 AnalysisFunctionOfMultiplicity.C:1032
 AnalysisFunctionOfMultiplicity.C:1033
 AnalysisFunctionOfMultiplicity.C:1034
 AnalysisFunctionOfMultiplicity.C:1035
 AnalysisFunctionOfMultiplicity.C:1036
 AnalysisFunctionOfMultiplicity.C:1037
 AnalysisFunctionOfMultiplicity.C:1038
 AnalysisFunctionOfMultiplicity.C:1039
 AnalysisFunctionOfMultiplicity.C:1040
 AnalysisFunctionOfMultiplicity.C:1041
 AnalysisFunctionOfMultiplicity.C:1042
 AnalysisFunctionOfMultiplicity.C:1043
 AnalysisFunctionOfMultiplicity.C:1044
 AnalysisFunctionOfMultiplicity.C:1045
 AnalysisFunctionOfMultiplicity.C:1046
 AnalysisFunctionOfMultiplicity.C:1047
 AnalysisFunctionOfMultiplicity.C:1048
 AnalysisFunctionOfMultiplicity.C:1049
 AnalysisFunctionOfMultiplicity.C:1050
 AnalysisFunctionOfMultiplicity.C:1051
 AnalysisFunctionOfMultiplicity.C:1052
 AnalysisFunctionOfMultiplicity.C:1053
 AnalysisFunctionOfMultiplicity.C:1054
 AnalysisFunctionOfMultiplicity.C:1055
 AnalysisFunctionOfMultiplicity.C:1056
 AnalysisFunctionOfMultiplicity.C:1057
 AnalysisFunctionOfMultiplicity.C:1058
 AnalysisFunctionOfMultiplicity.C:1059
 AnalysisFunctionOfMultiplicity.C:1060
 AnalysisFunctionOfMultiplicity.C:1061
 AnalysisFunctionOfMultiplicity.C:1062
 AnalysisFunctionOfMultiplicity.C:1063
 AnalysisFunctionOfMultiplicity.C:1064
 AnalysisFunctionOfMultiplicity.C:1065
 AnalysisFunctionOfMultiplicity.C:1066
 AnalysisFunctionOfMultiplicity.C:1067
 AnalysisFunctionOfMultiplicity.C:1068
 AnalysisFunctionOfMultiplicity.C:1069
 AnalysisFunctionOfMultiplicity.C:1070
 AnalysisFunctionOfMultiplicity.C:1071
 AnalysisFunctionOfMultiplicity.C:1072
 AnalysisFunctionOfMultiplicity.C:1073
 AnalysisFunctionOfMultiplicity.C:1074
 AnalysisFunctionOfMultiplicity.C:1075
 AnalysisFunctionOfMultiplicity.C:1076
 AnalysisFunctionOfMultiplicity.C:1077
 AnalysisFunctionOfMultiplicity.C:1078
 AnalysisFunctionOfMultiplicity.C:1079
 AnalysisFunctionOfMultiplicity.C:1080
 AnalysisFunctionOfMultiplicity.C:1081
 AnalysisFunctionOfMultiplicity.C:1082
 AnalysisFunctionOfMultiplicity.C:1083
 AnalysisFunctionOfMultiplicity.C:1084
 AnalysisFunctionOfMultiplicity.C:1085
 AnalysisFunctionOfMultiplicity.C:1086
 AnalysisFunctionOfMultiplicity.C:1087
 AnalysisFunctionOfMultiplicity.C:1088
 AnalysisFunctionOfMultiplicity.C:1089
 AnalysisFunctionOfMultiplicity.C:1090
 AnalysisFunctionOfMultiplicity.C:1091
 AnalysisFunctionOfMultiplicity.C:1092
 AnalysisFunctionOfMultiplicity.C:1093
 AnalysisFunctionOfMultiplicity.C:1094
 AnalysisFunctionOfMultiplicity.C:1095
 AnalysisFunctionOfMultiplicity.C:1096
 AnalysisFunctionOfMultiplicity.C:1097
 AnalysisFunctionOfMultiplicity.C:1098
 AnalysisFunctionOfMultiplicity.C:1099
 AnalysisFunctionOfMultiplicity.C:1100
 AnalysisFunctionOfMultiplicity.C:1101
 AnalysisFunctionOfMultiplicity.C:1102
 AnalysisFunctionOfMultiplicity.C:1103
 AnalysisFunctionOfMultiplicity.C:1104
 AnalysisFunctionOfMultiplicity.C:1105
 AnalysisFunctionOfMultiplicity.C:1106
 AnalysisFunctionOfMultiplicity.C:1107
 AnalysisFunctionOfMultiplicity.C:1108
 AnalysisFunctionOfMultiplicity.C:1109
 AnalysisFunctionOfMultiplicity.C:1110
 AnalysisFunctionOfMultiplicity.C:1111
 AnalysisFunctionOfMultiplicity.C:1112
 AnalysisFunctionOfMultiplicity.C:1113
 AnalysisFunctionOfMultiplicity.C:1114
 AnalysisFunctionOfMultiplicity.C:1115
 AnalysisFunctionOfMultiplicity.C:1116
 AnalysisFunctionOfMultiplicity.C:1117
 AnalysisFunctionOfMultiplicity.C:1118
 AnalysisFunctionOfMultiplicity.C:1119
 AnalysisFunctionOfMultiplicity.C:1120
 AnalysisFunctionOfMultiplicity.C:1121
 AnalysisFunctionOfMultiplicity.C:1122
 AnalysisFunctionOfMultiplicity.C:1123
 AnalysisFunctionOfMultiplicity.C:1124
 AnalysisFunctionOfMultiplicity.C:1125
 AnalysisFunctionOfMultiplicity.C:1126
 AnalysisFunctionOfMultiplicity.C:1127
 AnalysisFunctionOfMultiplicity.C:1128
 AnalysisFunctionOfMultiplicity.C:1129
 AnalysisFunctionOfMultiplicity.C:1130
 AnalysisFunctionOfMultiplicity.C:1131
 AnalysisFunctionOfMultiplicity.C:1132
 AnalysisFunctionOfMultiplicity.C:1133
 AnalysisFunctionOfMultiplicity.C:1134
 AnalysisFunctionOfMultiplicity.C:1135
 AnalysisFunctionOfMultiplicity.C:1136
 AnalysisFunctionOfMultiplicity.C:1137
 AnalysisFunctionOfMultiplicity.C:1138
 AnalysisFunctionOfMultiplicity.C:1139
 AnalysisFunctionOfMultiplicity.C:1140
 AnalysisFunctionOfMultiplicity.C:1141
 AnalysisFunctionOfMultiplicity.C:1142
 AnalysisFunctionOfMultiplicity.C:1143
 AnalysisFunctionOfMultiplicity.C:1144
 AnalysisFunctionOfMultiplicity.C:1145
 AnalysisFunctionOfMultiplicity.C:1146
 AnalysisFunctionOfMultiplicity.C:1147
 AnalysisFunctionOfMultiplicity.C:1148
 AnalysisFunctionOfMultiplicity.C:1149
 AnalysisFunctionOfMultiplicity.C:1150
 AnalysisFunctionOfMultiplicity.C:1151
 AnalysisFunctionOfMultiplicity.C:1152
 AnalysisFunctionOfMultiplicity.C:1153
 AnalysisFunctionOfMultiplicity.C:1154
 AnalysisFunctionOfMultiplicity.C:1155
 AnalysisFunctionOfMultiplicity.C:1156
 AnalysisFunctionOfMultiplicity.C:1157
 AnalysisFunctionOfMultiplicity.C:1158
 AnalysisFunctionOfMultiplicity.C:1159
 AnalysisFunctionOfMultiplicity.C:1160
 AnalysisFunctionOfMultiplicity.C:1161
 AnalysisFunctionOfMultiplicity.C:1162
 AnalysisFunctionOfMultiplicity.C:1163
 AnalysisFunctionOfMultiplicity.C:1164
 AnalysisFunctionOfMultiplicity.C:1165
 AnalysisFunctionOfMultiplicity.C:1166
 AnalysisFunctionOfMultiplicity.C:1167
 AnalysisFunctionOfMultiplicity.C:1168
 AnalysisFunctionOfMultiplicity.C:1169
 AnalysisFunctionOfMultiplicity.C:1170
 AnalysisFunctionOfMultiplicity.C:1171
 AnalysisFunctionOfMultiplicity.C:1172
 AnalysisFunctionOfMultiplicity.C:1173
 AnalysisFunctionOfMultiplicity.C:1174
 AnalysisFunctionOfMultiplicity.C:1175
 AnalysisFunctionOfMultiplicity.C:1176
 AnalysisFunctionOfMultiplicity.C:1177
 AnalysisFunctionOfMultiplicity.C:1178
 AnalysisFunctionOfMultiplicity.C:1179
 AnalysisFunctionOfMultiplicity.C:1180
 AnalysisFunctionOfMultiplicity.C:1181
 AnalysisFunctionOfMultiplicity.C:1182
 AnalysisFunctionOfMultiplicity.C:1183
 AnalysisFunctionOfMultiplicity.C:1184
 AnalysisFunctionOfMultiplicity.C:1185
 AnalysisFunctionOfMultiplicity.C:1186
 AnalysisFunctionOfMultiplicity.C:1187
 AnalysisFunctionOfMultiplicity.C:1188
 AnalysisFunctionOfMultiplicity.C:1189
 AnalysisFunctionOfMultiplicity.C:1190
 AnalysisFunctionOfMultiplicity.C:1191
 AnalysisFunctionOfMultiplicity.C:1192
 AnalysisFunctionOfMultiplicity.C:1193
 AnalysisFunctionOfMultiplicity.C:1194
 AnalysisFunctionOfMultiplicity.C:1195
 AnalysisFunctionOfMultiplicity.C:1196
 AnalysisFunctionOfMultiplicity.C:1197
 AnalysisFunctionOfMultiplicity.C:1198
 AnalysisFunctionOfMultiplicity.C:1199
 AnalysisFunctionOfMultiplicity.C:1200
 AnalysisFunctionOfMultiplicity.C:1201
 AnalysisFunctionOfMultiplicity.C:1202
 AnalysisFunctionOfMultiplicity.C:1203
 AnalysisFunctionOfMultiplicity.C:1204
 AnalysisFunctionOfMultiplicity.C:1205
 AnalysisFunctionOfMultiplicity.C:1206
 AnalysisFunctionOfMultiplicity.C:1207
 AnalysisFunctionOfMultiplicity.C:1208
 AnalysisFunctionOfMultiplicity.C:1209
 AnalysisFunctionOfMultiplicity.C:1210
 AnalysisFunctionOfMultiplicity.C:1211
 AnalysisFunctionOfMultiplicity.C:1212
 AnalysisFunctionOfMultiplicity.C:1213
 AnalysisFunctionOfMultiplicity.C:1214
 AnalysisFunctionOfMultiplicity.C:1215
 AnalysisFunctionOfMultiplicity.C:1216
 AnalysisFunctionOfMultiplicity.C:1217
 AnalysisFunctionOfMultiplicity.C:1218
 AnalysisFunctionOfMultiplicity.C:1219
 AnalysisFunctionOfMultiplicity.C:1220
 AnalysisFunctionOfMultiplicity.C:1221
 AnalysisFunctionOfMultiplicity.C:1222
 AnalysisFunctionOfMultiplicity.C:1223
 AnalysisFunctionOfMultiplicity.C:1224
 AnalysisFunctionOfMultiplicity.C:1225
 AnalysisFunctionOfMultiplicity.C:1226
 AnalysisFunctionOfMultiplicity.C:1227
 AnalysisFunctionOfMultiplicity.C:1228
 AnalysisFunctionOfMultiplicity.C:1229
 AnalysisFunctionOfMultiplicity.C:1230
 AnalysisFunctionOfMultiplicity.C:1231
 AnalysisFunctionOfMultiplicity.C:1232
 AnalysisFunctionOfMultiplicity.C:1233
 AnalysisFunctionOfMultiplicity.C:1234
 AnalysisFunctionOfMultiplicity.C:1235
 AnalysisFunctionOfMultiplicity.C:1236
 AnalysisFunctionOfMultiplicity.C:1237
 AnalysisFunctionOfMultiplicity.C:1238
 AnalysisFunctionOfMultiplicity.C:1239
 AnalysisFunctionOfMultiplicity.C:1240
 AnalysisFunctionOfMultiplicity.C:1241
 AnalysisFunctionOfMultiplicity.C:1242
 AnalysisFunctionOfMultiplicity.C:1243
 AnalysisFunctionOfMultiplicity.C:1244
 AnalysisFunctionOfMultiplicity.C:1245
 AnalysisFunctionOfMultiplicity.C:1246
 AnalysisFunctionOfMultiplicity.C:1247
 AnalysisFunctionOfMultiplicity.C:1248
 AnalysisFunctionOfMultiplicity.C:1249
 AnalysisFunctionOfMultiplicity.C:1250
 AnalysisFunctionOfMultiplicity.C:1251
 AnalysisFunctionOfMultiplicity.C:1252
 AnalysisFunctionOfMultiplicity.C:1253
 AnalysisFunctionOfMultiplicity.C:1254
 AnalysisFunctionOfMultiplicity.C:1255
 AnalysisFunctionOfMultiplicity.C:1256
 AnalysisFunctionOfMultiplicity.C:1257
 AnalysisFunctionOfMultiplicity.C:1258
 AnalysisFunctionOfMultiplicity.C:1259
 AnalysisFunctionOfMultiplicity.C:1260
 AnalysisFunctionOfMultiplicity.C:1261
 AnalysisFunctionOfMultiplicity.C:1262
 AnalysisFunctionOfMultiplicity.C:1263
 AnalysisFunctionOfMultiplicity.C:1264
 AnalysisFunctionOfMultiplicity.C:1265
 AnalysisFunctionOfMultiplicity.C:1266