ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include "TH1D.h"
#include "TH1.h"
#include "TH2F.h"
#include "TNtuple.h"
#include "TFile.h"
#include "TGraphAsymmErrors.h"
#include "TCanvas.h"
#include "TROOT.h"
#include "TStyle.h"
#include "TLegend.h"
#include "AliHFSystErr.h"
#include "AliHFPtSpectrum.h"
#endif

/* $Id$ */ 

//
// Macro to use the AliHFPtSpectrum class
//  to compute the feed-down corrections for heavy-flavor
//
//  Z.Conesa, September 2010 (zconesa@in2p3.fr)
//



//
// Macro execution parameters: 
//  0) filename with the theoretical predictions  (direct & feed-down)
//  1) acceptance and reconstruction efficiencies file name (direct & feed-down)
//  2) reconstructed spectra file name 
//  3) output file name
//  4) Set the feed-down calculation option flag: knone=none, kfc=fc only, kNb=Nb only
//  5-6) Set the luminosity: the number of events analyzed, and the cross-section of the sample [pb]
//  7) Set whether the yield is for particle + anti-particles or only one of the 'charges'
//  8) Set the centrality class
//  9) Flag to decide if there is need to evaluate the dependence on the energy loss
//

enum centrality{ kpp7, kpp276, k07half, kpPb0100, k010, k1020, k020, k2040, k2030, k3040, k4050, k3050, k5060, k4060, k6080, k4080, k5080, k80100, kpPb020, kpPb2040, kpPb4060, kpPb60100 };
enum centestimator{ kV0M, kV0A, kZNA };
enum BFDSubtrMethod { knone, kfc, kNb };
enum RaavsEP {kPhiIntegrated, kInPlane, kOutOfPlane};
enum rapidity{ kdefault, k08to04, k07to04, k04to01, k01to01, k01to04, k04to07, k04to08 };

void HFPtSpectrum ( const char *mcfilename="FeedDownCorrectionMC.root",
		    const char *efffilename="Efficiencies.root",
		    const char *recofilename="Reconstructed.root", const char *recohistoname="hRawSpectrumD0",
		    const char *outfilename="HFPtSpectrum.root",
		    Int_t fdMethod=kNb, Double_t nevents=1.0, Double_t sigma=1.0, // sigma[pb]
		    Bool_t isParticlePlusAntiParticleYield=true, Int_t cc=kpp7, Bool_t PbPbEloss=false,
		    Int_t ccestimator = kV0M,
		    Int_t isRaavsEP=kPhiIntegrated,const char *epResolfile="",
		    Int_t rapiditySlice=kdefault) {


  gROOT->Macro("$ALICE_ROOT/PWGHF/vertexingHF/macros/LoadLibraries.C");

  //  Set if calculation considers asymmetric uncertainties or not 
  Bool_t asym = true;

  // Set the meson/baryon and decay
  // (only D0 -> K pi, D+--> K pi pi, D* --> D0 pi, D+s -->KKpi, Lc+ --> pKpi & Lc+ --> pK0S implemented here)
  Bool_t isD0Kpi = true;
  Bool_t isDplusKpipi = false;
  Bool_t isDstarD0pi = false;
  Bool_t isDsKKpi = false;
  Bool_t isLctopKpi = false;
  Bool_t isLcK0Sp = false;

  Int_t shouldBeOne=0;
  if(isD0Kpi) shouldBeOne++;
  if(isDplusKpipi) shouldBeOne++;
  if(isDstarD0pi) shouldBeOne++;
  if(isDsKKpi) shouldBeOne++;
  if(isLctopKpi) shouldBeOne++;
  if(isLcK0Sp) shouldBeOne++;
  
  if (shouldBeOne!=1) {
    cout << "Sorry, can not deal with more than one correction at the same time"<<endl;
    return;
  }

  Int_t option=3;
  if (fdMethod==kfc) option=1;
  else if (fdMethod==kNb) option=2;
  else if (fdMethod==knone) { option=0; asym=false; }
  else option=3;

  if (option>2) { 
    cout<< "Bad calculation option, should be <=2"<<endl;
    return;
  }


  //
  // Defining the Tab values for the given centrality class
  // https://twiki.cern.ch/twiki/bin/viewauth/ALICE/CentStudies
  //
  Double_t tab = 1., tabUnc = 0.;
  if( ccestimator == kV0M ) {
    if ( cc == k07half ) {
      tab = 24.81; tabUnc = 0.8037;
    } else if ( cc == k010 ) {
      tab = 23.48; tabUnc = 0.97;
    } else if ( cc == k1020 ) {
      tab = 14.4318; tabUnc = 0.5733;
    } else if ( cc == k020 ) {
      tab = 18.93; tabUnc = 0.74;
    } else if ( cc == k2040 ) {
      tab = 6.86; tabUnc = 0.28;
    } else if ( cc == k2030 ) {
      tab = 8.73769; tabUnc = 0.370219;
    } else if ( cc == k3040 ) {
      tab = 5.02755; tabUnc = 0.22099;
    } else if ( cc == k4050 ) {
      tab = 2.68327; tabUnc = 0.137073;
    } else if ( cc == k3050 ) {
      tab = 3.87011; tabUnc = 0.183847;
    } else if ( cc == k4060 ) {
      tab = 2.00;  tabUnc= 0.11;
    } else if ( cc == k4080 ) {
      tab = 1.20451; tabUnc = 0.071843;
    } else if ( cc == k5060 ) {
      tab = 1.32884; tabUnc = 0.0929536;
    } else if ( cc == k6080 ) {
      tab = 0.419; tabUnc = 0.033;
    } else if ( cc == k5080 ) {
      tab = 0.719; tabUnc = 0.054;
    } else if ( cc == k80100 ){
      tab = 0.0690; tabUnc = 0.0062;
    }
  }

  // pPb Glauber (A. Toia)
  // https://twiki.cern.ch/twiki/bin/viewauth/ALICE/PACentStudies#Glauber_Calculations_with_sigma
  if( cc == kpPb0100 ){
    tab = 0.098334; tabUnc = 0.0070679;
    //    A=207.2; B=1.;
  }
  else if( ccestimator == kV0A ){
    if ( cc == kpPb020 ) {
      tab = 0.183; tabUnc = 0.006245;
    } else if ( cc == kpPb2040 ) {
      tab = 0.134; tabUnc = 0.004899;
    } else if ( cc == kpPb4060 ) {
      tab = 0.092; tabUnc = 0.004796;
    } else if ( cc == kpPb60100 ) {
      tab = 0.041; tabUnc = 0.008832;
    }
  }
  else if( ccestimator == kZNA ){
    if ( cc == kpPb020 ) {
      tab = 0.164; tabUnc = 0.010724;
    } else if ( cc == kpPb2040 ) {
      tab = 0.137; tabUnc = 0.005099;
    } else if ( cc == kpPb4060 ) {
      tab = 0.1011; tabUnc = 0.006;
    } else if ( cc == kpPb60100 ) {
      tab = 0.0459; tabUnc = 0.003162;
    }
  }

  tab *= 1e-9; // to pass from mb^{-1} to pb^{-1}
  tabUnc *= 1e-9;



  //
  // Get the histograms from the files
  //
  TH1D *hDirectMCpt=0;           // Input MC c-->D spectra
  TH1D *hFeedDownMCpt=0;         // Input MC b-->D spectra
  TH1D *hDirectMCptMax=0;        // Input MC maximum c-->D spectra
  TH1D *hDirectMCptMin=0;        // Input MC minimum c-->D spectra
  TH1D *hFeedDownMCptMax=0;      // Input MC maximum b-->D spectra
  TH1D *hFeedDownMCptMin=0;      // Input MC minimum b-->D spectra
  //  TGraphAsymmErrors *gPrediction=0; // Input MC c-->D spectra
  TH1D *hDirectEffpt=0;          // c-->D Acceptance and efficiency correction
  TH1D *hFeedDownEffpt=0;        // b-->D Acceptance and efficiency correction
  TH1D *hRECpt=0;                // all reconstructed D

  //
  // Define/Get the input histograms
  //
  Int_t decay=0;
  TFile * mcfile = new TFile(mcfilename,"read");
  if (isD0Kpi){
    decay = 1;
    hDirectMCpt = (TH1D*)mcfile->Get("hD0Kpipred_central");
    hFeedDownMCpt = (TH1D*)mcfile->Get("hD0KpifromBpred_central_corr");
    hDirectMCptMax = (TH1D*)mcfile->Get("hD0Kpipred_max");
    hDirectMCptMin = (TH1D*)mcfile->Get("hD0Kpipred_min");
    hFeedDownMCptMax = (TH1D*)mcfile->Get("hD0KpifromBpred_max_corr");
    hFeedDownMCptMin = (TH1D*)mcfile->Get("hD0KpifromBpred_min_corr");
    //    gPrediction = (TGraphAsymmErrors*)mcfile->Get("D0Kpiprediction");
  }
  else if (isDplusKpipi){
    decay = 2;
    hDirectMCpt = (TH1D*)mcfile->Get("hDpluskpipipred_central");
    hFeedDownMCpt = (TH1D*)mcfile->Get("hDpluskpipifromBpred_central_corr");
    hDirectMCptMax = (TH1D*)mcfile->Get("hDpluskpipipred_max");
    hDirectMCptMin = (TH1D*)mcfile->Get("hDpluskpipipred_min");
    hFeedDownMCptMax = (TH1D*)mcfile->Get("hDpluskpipifromBpred_max_corr");
    hFeedDownMCptMin = (TH1D*)mcfile->Get("hDpluskpipifromBpred_min_corr");
    //    gPrediction = (TGraphAsymmErrors*)mcfile->Get("Dpluskpipiprediction");
  }
  else if(isDstarD0pi){
    decay = 3;
    hDirectMCpt = (TH1D*)mcfile->Get("hDstarD0pipred_central");
    hFeedDownMCpt = (TH1D*)mcfile->Get("hDstarD0pifromBpred_central_corr");
    hDirectMCptMax = (TH1D*)mcfile->Get("hDstarD0pipred_max");
    hDirectMCptMin = (TH1D*)mcfile->Get("hDstarD0pipred_min");
    hFeedDownMCptMax = (TH1D*)mcfile->Get("hDstarD0pifromBpred_max_corr");
    hFeedDownMCptMin = (TH1D*)mcfile->Get("hDstarD0pifromBpred_min_corr");
    //    gPrediction = (TGraphAsymmErrors*)mcfile->Get("DstarD0piprediction");
  }
  else if (isDsKKpi){
    decay = 4;
    hDirectMCpt = (TH1D*)mcfile->Get("hDsPhipitoKkpipred_central");
    hFeedDownMCpt = (TH1D*)mcfile->Get("hDsPhipitoKkpifromBpred_central_corr");
    hDirectMCptMax = (TH1D*)mcfile->Get("hDsPhipitoKkpipred_max");
    hDirectMCptMin = (TH1D*)mcfile->Get("hDsPhipitoKkpipred_min");
    hFeedDownMCptMax = (TH1D*)mcfile->Get("hDsPhipitoKkpifromBpred_max_corr");
    hFeedDownMCptMin = (TH1D*)mcfile->Get("hDsPhipitoKkpifromBpred_min_corr");
  }
  else if (isLctopKpi){
    decay = 5;
    hDirectMCpt = (TH1D*)mcfile->Get("hLcpkpipred_central");
    hFeedDownMCpt = (TH1D*)mcfile->Get("hLcpkpifromBpred_central_corr");
    hDirectMCptMax = (TH1D*)mcfile->Get("hLcpkpipred_max");
    hDirectMCptMin = (TH1D*)mcfile->Get("hLcpkpipred_min");
    hFeedDownMCptMax = (TH1D*)mcfile->Get("hLcpkpifromBpred_max_corr");
    hFeedDownMCptMin = (TH1D*)mcfile->Get("hLcpkpifromBpred_min_corr");
  }
  else if (isLcK0Sp){
    decay = 6;
    hDirectMCpt = (TH1D*)mcfile->Get("hLcK0sppred_central");
    hFeedDownMCpt = (TH1D*)mcfile->Get("hLcK0spfromBpred_central_corr");
    hDirectMCptMax = (TH1D*)mcfile->Get("hLcK0sppred_max");
    hDirectMCptMin = (TH1D*)mcfile->Get("hLcK0sppred_min");
    hFeedDownMCptMax = (TH1D*)mcfile->Get("hLcK0spfromBpred_max_corr");
    hFeedDownMCptMin = (TH1D*)mcfile->Get("hLcK0spfromBpred_min_corr");
  }
  //
  hDirectMCpt->SetNameTitle("hDirectMCpt","direct MC spectra");
  hFeedDownMCpt->SetNameTitle("hFeedDownMCpt","feed-down MC spectra");
  hDirectMCptMax->SetNameTitle("hDirectMCptMax","max direct MC spectra");
  hDirectMCptMin->SetNameTitle("hDirectMCptMin","min direct MC spectra");
  hFeedDownMCptMax->SetNameTitle("hFeedDownMCptMax","max feed-down MC spectra");
  hFeedDownMCptMin->SetNameTitle("hFeedDownMCptMin","min feed-down MC spectra");
  //
  // Scale FONLL inputs if we do the analysis in y-slices
  //
  if(rapiditySlice!=kdefault){
    Double_t scaleFONLL = 1.0;
    switch(rapiditySlice) {
    case k08to04: scaleFONLL = (0.093+0.280)/1.0; break;
    case k07to04: scaleFONLL = 0.280/1.0; break;
    case k04to01: scaleFONLL = 0.284/1.0; break;
    case k01to01: scaleFONLL = 0.191/1.0; break;
    case k01to04: scaleFONLL = 0.288/1.0; break;
    case k04to07: scaleFONLL = 0.288/1.0; break;
    case k04to08: scaleFONLL = (0.288+0.096)/1.0; break;
    }
    hDirectMCpt->Scale(scaleFONLL);
    hDirectMCptMax->Scale(scaleFONLL);
    hDirectMCptMin->Scale(scaleFONLL);
    switch(rapiditySlice) {
    case k08to04: scaleFONLL = (0.089+0.274)/1.0; break;
    case k07to04: scaleFONLL = 0.274/1.0; break;
    case k04to01: scaleFONLL = 0.283/1.0; break;
    case k01to01: scaleFONLL = 0.192/1.0; break;
    case k01to04: scaleFONLL = 0.290/1.0; break;
    case k04to07: scaleFONLL = 0.291/1.0; break;
    case k04to08: scaleFONLL = (0.291+0.097)/1.0; break;
    }
    hFeedDownMCpt->Scale(scaleFONLL);
    hFeedDownMCptMax->Scale(scaleFONLL);
    hFeedDownMCptMin->Scale(scaleFONLL);
  }

  //
  //
  TFile * efffile = new TFile(efffilename,"read");
  hDirectEffpt = (TH1D*)efffile->Get("hEffD");
  hDirectEffpt->SetNameTitle("hDirectEffpt","direct acc x eff");
  hFeedDownEffpt = (TH1D*)efffile->Get("hEffB");
  hFeedDownEffpt->SetNameTitle("hFeedDownEffpt","feed-down acc x eff");
  //
  //
  TFile * recofile = new TFile(recofilename,"read");
  hRECpt = (TH1D*)recofile->Get(recohistoname);
  hRECpt->SetNameTitle("hRECpt","Reconstructed spectra");

  //
  // Read the file of the EP resolution correction
  TFile *EPf=0;
  TH1D *hEPresolCorr=0;
  if(isRaavsEP>0.){
    EPf = new TFile(epResolfile,"read");
    if(isRaavsEP==kInPlane) hEPresolCorr = (TH1D*)EPf->Get("hCorrEPresol_InPlane");
    else if(isRaavsEP==kOutOfPlane) hEPresolCorr = (TH1D*)EPf->Get("hCorrEPresol_OutOfPlane");
    for(Int_t i=1; i<=hRECpt->GetNbinsX(); i++) {
      Double_t value = hRECpt->GetBinContent(i);
      Double_t error = hRECpt->GetBinError(i);
      Double_t pt = hRECpt->GetBinCenter(i);
      Int_t epbin = hEPresolCorr->FindBin( pt );
      Double_t epcorr = hEPresolCorr->GetBinContent( epbin );
      value = value*epcorr;
      error = error*epcorr;
      hRECpt->SetBinContent(i,value);
      hRECpt->SetBinError(i,error);
    }
  }

  //
  // Define the output histograms
  //
  TFile *out = new TFile(outfilename,"recreate");
  //
  TH1D *histofc=0;
  TH1D *histofcMax=0;
  TH1D *histofcMin=0;
  TH1D *histoYieldCorr=0;
  TH1D *histoYieldCorrMax=0;
  TH1D *histoYieldCorrMin=0;
  TH1D *histoSigmaCorr=0;
  TH1D *histoSigmaCorrMax=0;
  TH1D *histoSigmaCorrMin=0;
  //
  TH2D *histofcRcb=0;
  TH1D *histofcRcb_px=0;
  TH2D *histoYieldCorrRcb=0;
  TH2D *histoSigmaCorrRcb=0;
  //
  TGraphAsymmErrors * gYieldCorr = 0;
  TGraphAsymmErrors * gSigmaCorr = 0;
  TGraphAsymmErrors * gFcExtreme = 0;
  TGraphAsymmErrors * gFcConservative = 0;
  TGraphAsymmErrors * gYieldCorrExtreme = 0;
  TGraphAsymmErrors * gSigmaCorrExtreme = 0;
  TGraphAsymmErrors * gYieldCorrConservative = 0;
  TGraphAsymmErrors * gSigmaCorrConservative = 0;
  //
  TNtuple * nSigma = 0;


  //
  // Main functionalities for the calculation
  //

  // Define and set the basic option flags
  AliHFPtSpectrum * spectra = new AliHFPtSpectrum("AliHFPtSpectrum","AliHFPtSpectrum",option);
  spectra->SetFeedDownCalculationOption(option);
  spectra->SetComputeAsymmetricUncertainties(asym);
  // Set flag on whether to additional PbPb Eloss hypothesis have to be computed
  spectra->SetComputeElossHypothesis(PbPbEloss);

  // Feed the input histograms
  //  reconstructed spectra
  cout << " Setting the reconstructed spectrum,";
  spectra->SetReconstructedSpectrum(hRECpt);
  // acceptance and efficiency corrections
  cout << " the efficiency,";
  spectra->SetAccEffCorrection(hDirectEffpt,hFeedDownEffpt);
  //    spectra->SetfIsStatUncEff(false);
  // option specific histos (theory)
  cout << " the theoretical spectra";
  if(option==1){
    spectra->SetMCptSpectra(hDirectMCpt,hFeedDownMCpt);
    if(asym) spectra->SetMCptDistributionsBounds(hDirectMCptMax,hDirectMCptMin,hFeedDownMCptMax,hFeedDownMCptMin);
  }
  else if(option==2){
    spectra->SetFeedDownMCptSpectra(hFeedDownMCpt);
    if(asym) spectra->SetFeedDownMCptDistributionsBounds(hFeedDownMCptMax,hFeedDownMCptMin);
  }

  cout << " and the normalization" <<endl;
  // Set normalization factors (uncertainties set to 0. as example)
  spectra->SetNormalization(nevents,sigma);
  Double_t lumi = nevents / sigma ;
  Double_t lumiUnc = 0.04*lumi; // 10% uncertainty on the luminosity
  spectra->SetLuminosity(lumi,lumiUnc);
  Double_t effTrig = 1.0;
  spectra->SetTriggerEfficiency(effTrig,0.);
  if(isRaavsEP>0.) spectra->SetIsEventPlaneAnalysis(kTRUE);

  // Set the global uncertainties on the efficiencies (in percent)
  Double_t globalEffUnc = 0.15; 
  Double_t globalBCEffRatioUnc = 0.15;
  spectra->SetAccEffPercentageUncertainty(globalEffUnc,globalBCEffRatioUnc);

  // Set if the yield is for particle+anti-particle or only one type
  spectra->SetIsParticlePlusAntiParticleYield(isParticlePlusAntiParticleYield);

  // Set the Tab parameter and uncertainties
  if ( (cc != kpp7) && (cc != kpp276) ) {
    spectra->SetTabParameter(tab,tabUnc);
  }

  // Do the calculations
  cout << " Doing the calculation... "<< endl;
  Double_t deltaY = 1.0;
  Double_t branchingRatioC = 1.0;
  Double_t branchingRatioBintoFinalDecay = 1.0; // this is relative to the input theoretical prediction
  spectra->ComputeHFPtSpectrum(deltaY,branchingRatioC,branchingRatioBintoFinalDecay);
  cout << "   ended the calculation, getting the histograms back " << endl;

  // Set the systematics externally
  
  Bool_t combineFeedDown = true;
  AliHFSystErr *systematics = new AliHFSystErr();
  if( cc==kpp276 ) {
    systematics->SetIsLowEnergy(true);
  }
  else if ( cc == kpPb0100 || cc == kpPb020 || cc == kpPb2040 || cc == kpPb4060 || cc == kpPb60100 ) {
    systematics->SetCollisionType(2);
    if(ccestimator==kV0A) {
      if(cc == kpPb020) systematics->SetCentrality("020V0A");
      else if(cc == kpPb2040) systematics->SetCentrality("2040V0A");
      else if(cc == kpPb4060) systematics->SetCentrality("4060V0A");
      else if(cc == kpPb60100) systematics->SetCentrality("60100V0A");
    } else if (ccestimator==kZNA) {
      if(cc == kpPb020) systematics->SetCentrality("020ZNA");
      else if(cc == kpPb2040) systematics->SetCentrality("2040ZNA");
      else if(cc == kpPb4060) systematics->SetCentrality("4060ZNA");
      else if(cc == kpPb60100) systematics->SetCentrality("60100ZNA");
    } else {
      if(!(cc == kpPb0100)) {
	cout <<" Error on the pPb options"<<endl;
	return;
      }
    }
  }
  //
  else if( cc!=kpp7 )  {
    systematics->SetCollisionType(1);
    if ( cc == k07half ) systematics->SetCentrality("07half");
    else if ( cc == k010 )  systematics->SetCentrality("010");
    else if ( cc == k1020 )  systematics->SetCentrality("1020");
    else if ( cc == k020 )  systematics->SetCentrality("020");
    else if ( cc == k2040 || cc == k2030 || cc == k3040 ) {
      systematics->SetCentrality("2040");
      systematics->SetIsPbPb2010EnergyScan(true);
    }
    else if ( cc == k3050 ) {
      if (isRaavsEP == kPhiIntegrated) systematics->SetCentrality("4080");
      else if (isRaavsEP == kInPlane) systematics->SetCentrality("3050InPlane");
      else if (isRaavsEP == kOutOfPlane) systematics->SetCentrality("3050OutOfPlane");
    }
    else if ( cc == k4060 || cc == k4050 || cc == k5060 )  systematics->SetCentrality("4060");
    else if ( cc == k6080 )  systematics->SetCentrality("6080");
    else if ( cc == k4080 ) systematics->SetCentrality("4080");
    else {
      cout << " Systematics not yet implemented " << endl;
      return;
    }
  } else { systematics->SetCollisionType(0); }
  //
  systematics->Init(decay);
  spectra->ComputeSystUncertainties(systematics,combineFeedDown);

  //
  // Get the output histograms
  //
  // the corrected yield and cross-section
  histoYieldCorr = (TH1D*)spectra->GetHistoFeedDownCorrectedSpectrum();
  histoSigmaCorr = (TH1D*)spectra->GetHistoCrossSectionFromYieldSpectrum();
  histoYieldCorrMax = (TH1D*)spectra->GetHistoUpperLimitFeedDownCorrectedSpectrum(); 
  histoYieldCorrMin = (TH1D*)spectra->GetHistoLowerLimitFeedDownCorrectedSpectrum(); 
  histoSigmaCorrMax = (TH1D*)spectra->GetHistoUpperLimitCrossSectionFromYieldSpectrum();
  histoSigmaCorrMin = (TH1D*)spectra->GetHistoLowerLimitCrossSectionFromYieldSpectrum();
  histoYieldCorr->SetNameTitle("histoYieldCorr","corrected yield");
  histoYieldCorrMax->SetNameTitle("histoYieldCorrMax","max corrected yield");
  histoYieldCorrMin->SetNameTitle("histoYieldCorrMin","min corrected yield");
  histoSigmaCorr->SetNameTitle("histoSigmaCorr","corrected invariant cross-section");
  histoSigmaCorrMax->SetNameTitle("histoSigmaCorrMax","max corrected invariant cross-section");
  histoSigmaCorrMin->SetNameTitle("histoSigmaCorrMin","min corrected invariant cross-section");
  // the efficiencies
  if(!hDirectEffpt) hDirectEffpt = (TH1D*)spectra->GetDirectAccEffCorrection();
  if(!hFeedDownEffpt) hFeedDownEffpt = (TH1D*)spectra->GetFeedDownAccEffCorrection();
  // Get the PbPb Eloss hypothesis histograms
  if(PbPbEloss){
    histofcRcb = spectra->GetHistoFeedDownCorrectionFcVsEloss();
    histoYieldCorrRcb = spectra->GetHistoFeedDownCorrectedSpectrumVsEloss();
    histoSigmaCorrRcb = spectra->GetHistoCrossSectionFromYieldSpectrumVsEloss();
    histofcRcb->SetName("histofcRcb");
    histoYieldCorrRcb->SetName("histoYieldCorrRcb");
    histoSigmaCorrRcb->SetName("histoSigmaCorrRcb");
  }

  // Get & Rename the TGraphs
  gSigmaCorr = spectra->GetCrossSectionFromYieldSpectrum();
  gYieldCorr = spectra->GetFeedDownCorrectedSpectrum();
  if (asym) {
    gSigmaCorrExtreme = spectra->GetCrossSectionFromYieldSpectrumExtreme();
    gYieldCorrExtreme = spectra->GetFeedDownCorrectedSpectrumExtreme();
    gSigmaCorrConservative = spectra->GetCrossSectionFromYieldSpectrumConservative();
    gYieldCorrConservative = spectra->GetFeedDownCorrectedSpectrumConservative();
  }

  // Get & Rename the TGraphs
  if (option==0){
    gYieldCorr->SetNameTitle("gYieldCorr","gYieldCorr (uncorr)");
    gSigmaCorr->SetNameTitle("gSigmaCorr","gSigmaCorr (uncorr)");
  }
  if (option==1){
    // fc histos
    histofc = (TH1D*)spectra->GetHistoFeedDownCorrectionFc();
    histofcMax = (TH1D*)spectra->GetHistoUpperLimitFeedDownCorrectionFc();
    histofcMin = (TH1D*)spectra->GetHistoLowerLimitFeedDownCorrectionFc();
    histofc->SetNameTitle("histofc","fc correction factor");
    histofcMax->SetNameTitle("histofcMax","max fc correction factor");
    histofcMin->SetNameTitle("histofcMin","min fc correction factor");
    if (asym) {
      gYieldCorr->SetNameTitle("gYieldCorr","gYieldCorr (by fc)");
      gSigmaCorr->SetNameTitle("gSigmaCorr","gSigmaCorr (by fc)");
      gFcExtreme = spectra->GetFeedDownCorrectionFcExtreme();
      gFcExtreme->SetNameTitle("gFcExtreme","gFcExtreme");
      gYieldCorrExtreme->SetNameTitle("gYieldCorrExtreme","Extreme gYieldCorr (by fc)");
      gSigmaCorrExtreme->SetNameTitle("gSigmaCorrExtreme","Extreme gSigmaCorr (by fc)");
      gFcConservative = spectra->GetFeedDownCorrectionFcConservative();
      gFcConservative->SetNameTitle("gFcConservative","gFcConservative");
      gYieldCorrConservative->SetNameTitle("gYieldCorrConservative","Conservative gYieldCorr (by fc)");
      gSigmaCorrConservative->SetNameTitle("gSigmaCorrConservative","Conservative gSigmaCorr (by fc)");
    }
  }
  if (option==2 && asym) {
    gYieldCorr->SetNameTitle("gYieldCorr","gYieldCorr (by Nb)");
    gSigmaCorr->SetNameTitle("gSigmaCorr","gSigmaCorr (by Nb)");
    gYieldCorrExtreme->SetNameTitle("gYieldCorrExtreme","Extreme gYieldCorr (by Nb)");
    gSigmaCorrExtreme->SetNameTitle("gSigmaCorrExtreme","Extreme gSigmaCorr (by Nb)");
    gYieldCorrConservative->SetNameTitle("gYieldCorrConservative","Conservative gYieldCorr (by Nb)");
    gSigmaCorrConservative->SetNameTitle("gSigmaCorrConservative","Conservative gSigmaCorr (by Nb)");
    gFcConservative = spectra->GetFeedDownCorrectionFcConservative();
    gFcConservative->SetNameTitle("gFcConservative","gFcConservative");
  }

  if(PbPbEloss){
    nSigma = spectra->GetNtupleCrossSectionVsEloss();
  }

  //
  // Now, plot the results ! :)
  //

  gROOT->SetStyle("Plain");

  cout << " Drawing the results ! " << endl;

  // control plots
  if (option==1) {

    TCanvas *ceff = new TCanvas("ceff","efficiency drawing");
    ceff->Divide(1,2);
    ceff->cd(1);
    hDirectEffpt->Draw();
    ceff->cd(2);
    hFeedDownEffpt->Draw();
    ceff->Update();

    TCanvas *cTheoryRebin = new TCanvas("cTheoryRebin","control the theoretical spectra rebin");
    cTheoryRebin->Divide(1,2);
    cTheoryRebin->cd(1);
    hDirectMCpt->Draw("");
    TH1D *hDirectMCptRebin = (TH1D*)spectra->GetDirectTheoreticalSpectrum();
    hDirectMCptRebin->SetLineColor(2);
    hDirectMCptRebin->Draw("same");
    cTheoryRebin->cd(2);
    hFeedDownMCpt->Draw("");
    TH1D *hFeedDownRebin = (TH1D*)spectra->GetFeedDownTheoreticalSpectrum();
    hFeedDownRebin->SetLineColor(2);
    hFeedDownRebin->Draw("same");
    cTheoryRebin->Update();
    
    TCanvas *cTheoryRebinLimits = new TCanvas("cTheoryRebinLimits","control the theoretical spectra limits rebin");
    cTheoryRebinLimits->Divide(1,2);
    cTheoryRebinLimits->cd(1);
    hDirectMCptMax->Draw("");
    TH1D *hDirectMCptMaxRebin = (TH1D*)spectra->GetDirectTheoreticalUpperLimitSpectrum();
    hDirectMCptMaxRebin->SetLineColor(2);
    hDirectMCptMaxRebin->Draw("same");
    hDirectMCptMin->Draw("same");
    TH1D *hDirectMCptMinRebin = (TH1D*)spectra->GetDirectTheoreticalLowerLimitSpectrum();
    hDirectMCptMinRebin->SetLineColor(2);
    hDirectMCptMinRebin->Draw("same");
    cTheoryRebinLimits->cd(2);
    hFeedDownMCptMax->Draw("");
    TH1D *hFeedDownMaxRebin = (TH1D*)spectra->GetFeedDownTheoreticalUpperLimitSpectrum();
    hFeedDownMaxRebin->SetLineColor(2);
    hFeedDownMaxRebin->Draw("same");
    hFeedDownMCptMin->Draw("same");
    TH1D *hFeedDownMinRebin = (TH1D*)spectra->GetFeedDownTheoreticalLowerLimitSpectrum();
    hFeedDownMinRebin->SetLineColor(2);
    hFeedDownMinRebin->Draw("same");
    cTheoryRebinLimits->Update();
  }
  
  if (option==1) {

    TCanvas * cfc = new TCanvas("cfc","Fc");
    histofcMax->Draw("c");
    histofc->Draw("csame");
    histofcMin->Draw("csame");
    cfc->Update();

    if (asym) {
      TH2F *histofcDraw= new TH2F("histofcDraw","histofc (for drawing)",100,0,33.25,100,0.01,1.25);
      histofcDraw->SetStats(0);
      histofcDraw->GetXaxis()->SetTitle("p_{T}  [GeV]");
      histofcDraw ->GetXaxis()->SetTitleSize(0.05);
      histofcDraw->GetXaxis()->SetTitleOffset(0.95);
      histofcDraw->GetYaxis()->SetTitle(" fc ");
      histofcDraw->GetYaxis()->SetTitleSize(0.05);

      if (gFcExtreme){

// 	for(Int_t item=0; item<gSigmaCorr->GetN(); item++){
// 	  Double_t center=0., value=0.;
// 	  gFcExtreme->GetPoint(item,center,value);
// 	  Double_t highunc = gFcExtreme->GetErrorYhigh(item) / value ;
// 	  Double_t lowunc = gFcExtreme->GetErrorYlow(item) / value ;
// 	  cout << "Fc extreme: i=" << item << ", center=" << center <<", value=" << value << " high unc=" << highunc*100 << "%, low unc=" << lowunc*100 << "%"<<endl;
// 	}
// 	for(Int_t item=0; item<gSigmaCorr->GetN(); item++){
// 	  Double_t center=0., value=0.;
// 	  gFcConservative->GetPoint(item,center,value);
// 	  Double_t highunc = gFcConservative->GetErrorYhigh(item) / value ;
// 	  Double_t lowunc = gFcConservative->GetErrorYlow(item) / value ;
// 	  cout << "Fc conservative: i=" << item << ", center=" << center <<", value=" << value << " high unc=" << highunc*100 << "%, low unc=" << lowunc*100 << "%"<<endl;
// 	}
	TCanvas *cfcExtreme = new TCanvas("cfcExtreme","Extreme Asymmetric fc (TGraphAsymmErr)");
	gFcExtreme->SetFillStyle(3006);
	gFcExtreme->SetLineWidth(3);
	gFcExtreme->SetMarkerStyle(20);
	gFcExtreme->SetFillColor(2);
	histofcDraw->Draw();
	gFcExtreme->Draw("3same");

	if(gFcConservative){
	  gFcConservative->SetFillStyle(3007);
	  gFcConservative->SetFillColor(4);
	  gFcConservative->Draw("3same");
	}

	cfcExtreme->Update();
      }
    }

  }

  //
  // Drawing the results (the raw-reconstructed, the expected, and the corrected spectra)
  //
  TCanvas * cresult = new TCanvas("cresult","corrected yields & sigma");
  hDirectMCpt->SetMarkerStyle(20);
  hDirectMCpt->SetMarkerColor(4);
  hDirectMCpt->Draw("p");
  histoSigmaCorr->SetMarkerStyle(21);
  histoSigmaCorr->SetMarkerColor(2);
  histoSigmaCorr->Draw("psame");
  histoYieldCorr->SetMarkerStyle(22);
  histoYieldCorr->SetMarkerColor(6);
  histoYieldCorr->Draw("psame");
  hRECpt->SetMarkerStyle(23);
  hRECpt->SetMarkerColor(3);
  hRECpt->Draw("psame");
  cresult->SetLogy();
  cresult->Update();

  TCanvas * cresult2 = new TCanvas("cresult2","corrected yield & sigma");
  histoSigmaCorr->SetMarkerStyle(21);
  histoSigmaCorr->SetMarkerColor(2);
  histoSigmaCorr->Draw("p");
  histoYieldCorr->SetMarkerStyle(22);
  histoYieldCorr->SetMarkerColor(6);
  histoYieldCorr->Draw("psame");
  hRECpt->SetMarkerStyle(23);
  hRECpt->SetMarkerColor(3);
  hRECpt->Draw("psame");
  cresult2->SetLogy();
  cresult2->Update();


  if (asym) { 

    TH2F *histoDraw = new TH2F("histoDraw","histo (for drawing)",100,0,33.25,100,50.,1e7);
    float max = 1.1*gYieldCorr->GetMaximum();
    histoDraw->SetAxisRange(0.1,max,"Y");
    histoDraw->SetStats(0);
    histoDraw->GetXaxis()->SetTitle("p_{T}  [GeV]");
    histoDraw->GetXaxis()->SetTitleSize(0.05);
    histoDraw->GetXaxis()->SetTitleOffset(0.95);
    histoDraw->GetYaxis()->SetTitle("#frac{d#N}{dp_{T}} |_{|y|<1} [L & trigger uncorr]");
    histoDraw->GetYaxis()->SetTitleSize(0.05);
    TCanvas * cyieldAsym = new TCanvas("cyieldAsym","Asymmetric corrected yield (TGraphAsymmErr)");
    gYieldCorr->SetFillStyle(3001);
    gYieldCorr->SetLineWidth(3);
    gYieldCorr->SetMarkerStyle(20);
    gYieldCorr->SetFillColor(3);
    histoDraw->Draw();
    gYieldCorr->Draw("3LPsame");
    gYieldCorr->Draw("Xsame");
    cyieldAsym->SetLogy();
    cyieldAsym->Update();

    TCanvas * cyieldExtreme = new TCanvas("cyieldExtreme","Extreme Asymmetric corrected yield (TGraphAsymmErr)");
    histoYieldCorr->Draw();
    gYieldCorrExtreme->SetFillStyle(3002);
    gYieldCorrExtreme->SetLineWidth(3);
    gYieldCorrExtreme->SetMarkerStyle(20);
    gYieldCorrExtreme->SetFillColor(2);
    histoYieldCorr->Draw();
    gYieldCorr->Draw("3same");
    gYieldCorrExtreme->Draw("3same");
    cyieldExtreme->SetLogy();
    cyieldExtreme->Update();
    
    TH2F *histo2Draw = new TH2F("histo2Draw","histo2 (for drawing)",100,0,33.25,100,50.,1e9);
    max = 1.1*gSigmaCorr->GetMaximum();
    histo2Draw->SetAxisRange(0.1,max,"Y");
    histo2Draw->SetStats(0);
    histo2Draw->GetXaxis()->SetTitle("p_{T}  [GeV]");
    histo2Draw->GetXaxis()->SetTitleSize(0.05);
    histo2Draw->GetXaxis()->SetTitleOffset(0.95);
    histo2Draw->GetYaxis()->SetTitle("#frac{1}{BR} #times #frac{d#sigma}{dp_{T}} |_{|y|<1}");
    histo2Draw->GetYaxis()->SetTitleSize(0.05);
    TCanvas * csigmaAsym = new TCanvas("csigmaAsym","Asymmetric corrected sigma (TGraphAsymmErr)");
    gSigmaCorr->SetFillStyle(3001);
    gSigmaCorr->SetLineWidth(3);
    gSigmaCorr->SetMarkerStyle(21);
    gSigmaCorr->SetFillColor(3);
    histo2Draw->Draw();
    gSigmaCorr->Draw("3LPsame");
    gSigmaCorr->Draw("Xsame");
    csigmaAsym->SetLogy();
    csigmaAsym->Update();

//     cout << endl <<" Sytematics (stat approach) " <<endl;
//     for(Int_t item=0; item<gSigmaCorr->GetN(); item++){
//       Double_t center=0., value=0.;
//       gSigmaCorr->GetPoint(item,center,value);
//       Double_t highunc = gSigmaCorr->GetErrorYhigh(item) / value ;
//       Double_t lowunc = gSigmaCorr->GetErrorYlow(item) / value ;
//       cout << "Sigma syst (stat), i=" << item << ", center=" << center <<", value=" << value << " high unc=" << highunc*100 << "%, low unc=" << lowunc*100 << "%"<<endl;
//     }

    TCanvas * csigmaExtreme = new TCanvas("csigmaExtreme","Asymmetric extreme corrected sigma (TGraphAsymmErr)");
    histoSigmaCorr->Draw();
    gSigmaCorr->Draw("3Psame");
    gSigmaCorrExtreme->SetFillStyle(3002);
    gSigmaCorrExtreme->SetLineWidth(3);
    gSigmaCorrExtreme->SetMarkerStyle(21);
    gSigmaCorrExtreme->SetFillColor(2);
    gSigmaCorrExtreme->Draw("3Psame");
    csigmaExtreme->SetLogy();
    csigmaExtreme->Update();
      
//     cout << endl << " Sytematics (Extreme approach)" <<endl;
//     for(Int_t item=0; item<gSigmaCorrExtreme->GetN(); item++){
//       Double_t center=0., value=0.;
//       gSigmaCorrExtreme->GetPoint(item,center,value);
//       Double_t highunc = gSigmaCorrExtreme->GetErrorYhigh(item) / value ;
//       Double_t lowunc = gSigmaCorrExtreme->GetErrorYlow(item) / value ;
//       cout << "Sigma syst (extreme) i=" << item << ", center=" << center <<", value=" << value << " high unc=" << highunc*100 << "%, low unc=" << lowunc*100 << "%"<<endl;
//     }
    
//     cout << endl << " Sytematics (Conservative approach)" <<endl;
//     for(Int_t item=0; item<gSigmaCorrConservative->GetN(); item++){
//       Double_t center=0., value=0.;
//       gSigmaCorrConservative->GetPoint(item,center,value);
//       Double_t highunc = gSigmaCorrConservative->GetErrorYhigh(item) / value ;
//       Double_t lowunc = gSigmaCorrConservative->GetErrorYlow(item) / value ;
//       cout << "Sigma syst (conservative) i=" << item << ", center=" << center <<", value=" << value << " high unc=" << highunc*100 << "%, low unc=" << lowunc*100 << "%"<<endl;
//     }
    
 }
 
  // Draw the PbPb Eloss hypothesis histograms
  if(PbPbEloss){
    AliHFPtSpectrum *CalcBins=NULL;
    gStyle->SetPalette(1);
    TCanvas *canvasfcRcb = new TCanvas("canvasfcRcb","fc vs pt vs Rcb");
    //    histofcRcb->Draw("cont4z");
    histofcRcb->Draw("colz");
    canvasfcRcb->Update();
    canvasfcRcb->cd(2);
    TCanvas *canvasfcRcb1 = new TCanvas("canvasfcRcb1","fc vs pt vs Rcb=1");
    histofcRcb_px = (TH1D*)histofcRcb->ProjectionX("histofcRcb_px",40,40);
    histofcRcb_px->SetLineColor(2);
    if (option==1) {
      histofc->Draw();
      histofcRcb_px->Draw("same");
    } else histofcRcb_px->Draw("");
    canvasfcRcb1->Update();
    TCanvas *canvasfcRcb2 = new TCanvas("canvasfcRcb2","fc vs pt vs Rcb fixed Rcb");
    Int_t bin0 = CalcBins->FindTH2YBin(histofcRcb,0.25);
    Int_t bin1 = CalcBins->FindTH2YBin(histofcRcb,0.5);
    Int_t bin2 = CalcBins->FindTH2YBin(histofcRcb,1.0);
    Int_t bin3 = CalcBins->FindTH2YBin(histofcRcb,1.5);
    Int_t bin4 = CalcBins->FindTH2YBin(histofcRcb,2.0);
    Int_t bin5 = CalcBins->FindTH2YBin(histofcRcb,3.0);
    Int_t bin6 = CalcBins->FindTH2YBin(histofcRcb,4.0);
    TH1D * histofcRcb_px0a = (TH1D*)histofcRcb->ProjectionX("histofcRcb_px0a",bin0,bin0);
    TH1D * histofcRcb_px0 = (TH1D*)histofcRcb->ProjectionX("histofcRcb_px0",bin1,bin1);
    TH1D * histofcRcb_px1 = (TH1D*)histofcRcb->ProjectionX("histofcRcb_px1",bin2,bin2);
    TH1D * histofcRcb_px2 = (TH1D*)histofcRcb->ProjectionX("histofcRcb_px2",bin3,bin3);
    TH1D * histofcRcb_px3 = (TH1D*)histofcRcb->ProjectionX("histofcRcb_px3",bin4,bin4);
    TH1D * histofcRcb_px4 = (TH1D*)histofcRcb->ProjectionX("histofcRcb_px4",bin5,bin5);
    TH1D * histofcRcb_px5 = (TH1D*)histofcRcb->ProjectionX("histofcRcb_px5",bin6,bin6);
    if (option==1) {
      histofc->Draw();
      //      histofcRcb_px->Draw("same");
    } else {
      //      histofcRcb_px->Draw("");
      histofcRcb_px0a->SetLineColor(2);
      histofcRcb_px0a->Draw("");
    }
    histofcRcb_px0a->SetLineColor(2);
    histofcRcb_px0a->Draw("same");
    histofcRcb_px0->SetLineColor(4);
    histofcRcb_px0->Draw("same");
    histofcRcb_px1->SetLineColor(3);
    histofcRcb_px1->Draw("same");
    histofcRcb_px2->SetLineColor(kCyan);
    histofcRcb_px2->Draw("same");
    histofcRcb_px3->SetLineColor(kMagenta+1);
    histofcRcb_px3->Draw("same");
    histofcRcb_px4->SetLineColor(kOrange+7);
    histofcRcb_px4->Draw("same");
    histofcRcb_px5->SetLineColor(kGreen+3);
    histofcRcb_px5->Draw("same");
    TLegend *legrcc = new TLegend(0.8,0.8,0.95,0.9);
    legrcc->SetFillColor(0);
    if (option==1) {
      legrcc->AddEntry(histofcRcb_px0a,"Rc/b=0.25","l");
      legrcc->AddEntry(histofcRcb_px0,"Rc/b=0.5","l");
      legrcc->AddEntry(histofcRcb_px1,"Rc/b=1.0","l");
      legrcc->AddEntry(histofcRcb_px2,"Rc/b=1.5","l");
      legrcc->AddEntry(histofcRcb_px3,"Rc/b=2.0","l");
      legrcc->AddEntry(histofcRcb_px4,"Rc/b=3.0","l");
      legrcc->AddEntry(histofcRcb_px5,"Rc/b=4.0","l");
    }else{
      legrcc->AddEntry(histofcRcb_px0a,"Rb=0.25","l");
      legrcc->AddEntry(histofcRcb_px0,"Rb=0.5","l");
      legrcc->AddEntry(histofcRcb_px1,"Rb=1.0","l");
      legrcc->AddEntry(histofcRcb_px2,"Rb=1.5","l");
      legrcc->AddEntry(histofcRcb_px3,"Rb=2.0","l");
      legrcc->AddEntry(histofcRcb_px4,"Rb=3.0","l");
      legrcc->AddEntry(histofcRcb_px5,"Rb=4.0","l");
    }
    legrcc->Draw();
    canvasfcRcb2->Update();
    TCanvas *canvasYRcb = new TCanvas("canvasYRcb","corrected yield vs pt vs Rcb");
    histoYieldCorrRcb->Draw("cont4z");
    canvasYRcb->Update();
    TCanvas *canvasSRcb = new TCanvas("canvasSRcb","sigma vs pt vs Rcb");
    histoSigmaCorrRcb->Draw("cont4z");
    canvasSRcb->Update();
    TCanvas *canvasSRcb1 = new TCanvas("canvasSRcb1","sigma vs pt vs Rcb fixed Rcb");
    TH1D * histoSigmaCorrRcb_px0a = (TH1D*)histoSigmaCorrRcb->ProjectionX("histoSigmaCorrRcb_px0a",bin0,bin0);
    TH1D * histoSigmaCorrRcb_px0 = (TH1D*)histoSigmaCorrRcb->ProjectionX("histoSigmaCorrRcb_px0",bin1,bin1);
    TH1D * histoSigmaCorrRcb_px1 = (TH1D*)histoSigmaCorrRcb->ProjectionX("histoSigmaCorrRcb_px1",bin2,bin2);
    TH1D * histoSigmaCorrRcb_px2 = (TH1D*)histoSigmaCorrRcb->ProjectionX("histoSigmaCorrRcb_px2",bin3,bin3);
    TH1D * histoSigmaCorrRcb_px3 = (TH1D*)histoSigmaCorrRcb->ProjectionX("histoSigmaCorrRcb_px3",bin4,bin4);
    TH1D * histoSigmaCorrRcb_px4 = (TH1D*)histoSigmaCorrRcb->ProjectionX("histoSigmaCorrRcb_px4",bin5,bin5);
    TH1D * histoSigmaCorrRcb_px5 = (TH1D*)histoSigmaCorrRcb->ProjectionX("histoSigmaCorrRcb_px5",bin6,bin6);
    histoSigmaCorr->Draw();
    histoSigmaCorrRcb_px0a->SetLineColor(2);
    histoSigmaCorrRcb_px0a->Draw("hsame");
    histoSigmaCorrRcb_px0->SetLineColor(4);
    histoSigmaCorrRcb_px0->Draw("hsame");
    histoSigmaCorrRcb_px1->SetLineColor(3);
    histoSigmaCorrRcb_px1->Draw("hsame");
    histoSigmaCorrRcb_px2->SetLineColor(kCyan);
    histoSigmaCorrRcb_px2->Draw("hsame");
    histoSigmaCorrRcb_px3->SetLineColor(kMagenta+1);
    histoSigmaCorrRcb_px3->Draw("hsame");
    histoSigmaCorrRcb_px4->SetLineColor(kOrange+7);
    histoSigmaCorrRcb_px4->Draw("same");
    histoSigmaCorrRcb_px5->SetLineColor(kGreen+3);
    histoSigmaCorrRcb_px5->Draw("same");
    TLegend *legrcb = new TLegend(0.8,0.8,0.95,0.9);
    legrcb->SetFillColor(0);
    if (option==1) {
      legrcb->AddEntry(histoSigmaCorrRcb_px0a,"Rc/b=0.25","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px0,"Rc/b=0.5","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px1,"Rc/b=1.0","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px2,"Rc/b=1.5","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px3,"Rc/b=2.0","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px4,"Rc/b=3.0","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px5,"Rc/b=4.0","l");
    }else{
      legrcb->AddEntry(histoSigmaCorrRcb_px0a,"Rb=0.25","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px0,"Rb=0.5","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px1,"Rb=1.0","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px2,"Rb=1.5","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px3,"Rb=2.0","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px4,"Rb=3.0","l");
      legrcb->AddEntry(histoSigmaCorrRcb_px5,"Rb=4.0","l");
    }
    legrcb->Draw();
    canvasSRcb1->Update();
  }


  //
  // Write the histograms to the output file
  //
  cout << " Saving the results ! " << endl<< endl;

  out->cd();
  //
  hDirectMCpt->Write();        hFeedDownMCpt->Write();
  hDirectMCptMax->Write();     hDirectMCptMin->Write();
  hFeedDownMCptMax->Write();   hFeedDownMCptMin->Write();
  if(hDirectEffpt) hDirectEffpt->Write();        if(hFeedDownEffpt) hFeedDownEffpt->Write();
  hRECpt->Write();
  //
  histoYieldCorr->Write();
  histoYieldCorrMax->Write();     histoYieldCorrMin->Write();   
  histoSigmaCorr->Write();
  histoSigmaCorrMax->Write();     histoSigmaCorrMin->Write();

  if(PbPbEloss){
    histofcRcb->Write();    histofcRcb_px->Write();
    histoYieldCorrRcb->Write();
    histoSigmaCorrRcb->Write();
    nSigma->Write();
  }

  gYieldCorr->Write();
  gSigmaCorr->Write();
  if(asym){
    if(gYieldCorrExtreme) gYieldCorrExtreme->Write();
    if(gSigmaCorrExtreme) gSigmaCorrExtreme->Write();
    if(gYieldCorrConservative) gYieldCorrConservative->Write();
    if(gSigmaCorrConservative) gSigmaCorrConservative->Write();
    if(asym && gFcConservative) gFcConservative->Write();
  }

  if(option==1){
    histofc->Write();
    histofcMax->Write();     histofcMin->Write();
    if(asym && gFcExtreme) gFcExtreme->Write();
  }


  TH1D * hStatUncEffcSigma = spectra->GetDirectStatEffUncOnSigma();
  TH1D * hStatUncEffbSigma = spectra->GetFeedDownStatEffUncOnSigma();
  hStatUncEffcSigma->Write();
  hStatUncEffbSigma->Write();
  if(option!=0){
    TH1D * hStatUncEffcFD = spectra->GetDirectStatEffUncOnFc();
    TH1D * hStatUncEffbFD = spectra->GetFeedDownStatEffUncOnFc();
    hStatUncEffcFD->Write();
    hStatUncEffbFD->Write();
  }

  // Draw the cross-section 
  //  spectra->DrawSpectrum(gPrediction);

  //  out->Close();

}
 HFPtSpectrum.C:1
 HFPtSpectrum.C:2
 HFPtSpectrum.C:3
 HFPtSpectrum.C:4
 HFPtSpectrum.C:5
 HFPtSpectrum.C:6
 HFPtSpectrum.C:7
 HFPtSpectrum.C:8
 HFPtSpectrum.C:9
 HFPtSpectrum.C:10
 HFPtSpectrum.C:11
 HFPtSpectrum.C:12
 HFPtSpectrum.C:13
 HFPtSpectrum.C:14
 HFPtSpectrum.C:15
 HFPtSpectrum.C:16
 HFPtSpectrum.C:17
 HFPtSpectrum.C:18
 HFPtSpectrum.C:19
 HFPtSpectrum.C:20
 HFPtSpectrum.C:21
 HFPtSpectrum.C:22
 HFPtSpectrum.C:23
 HFPtSpectrum.C:24
 HFPtSpectrum.C:25
 HFPtSpectrum.C:26
 HFPtSpectrum.C:27
 HFPtSpectrum.C:28
 HFPtSpectrum.C:29
 HFPtSpectrum.C:30
 HFPtSpectrum.C:31
 HFPtSpectrum.C:32
 HFPtSpectrum.C:33
 HFPtSpectrum.C:34
 HFPtSpectrum.C:35
 HFPtSpectrum.C:36
 HFPtSpectrum.C:37
 HFPtSpectrum.C:38
 HFPtSpectrum.C:39
 HFPtSpectrum.C:40
 HFPtSpectrum.C:41
 HFPtSpectrum.C:42
 HFPtSpectrum.C:43
 HFPtSpectrum.C:44
 HFPtSpectrum.C:45
 HFPtSpectrum.C:46
 HFPtSpectrum.C:47
 HFPtSpectrum.C:48
 HFPtSpectrum.C:49
 HFPtSpectrum.C:50
 HFPtSpectrum.C:51
 HFPtSpectrum.C:52
 HFPtSpectrum.C:53
 HFPtSpectrum.C:54
 HFPtSpectrum.C:55
 HFPtSpectrum.C:56
 HFPtSpectrum.C:57
 HFPtSpectrum.C:58
 HFPtSpectrum.C:59
 HFPtSpectrum.C:60
 HFPtSpectrum.C:61
 HFPtSpectrum.C:62
 HFPtSpectrum.C:63
 HFPtSpectrum.C:64
 HFPtSpectrum.C:65
 HFPtSpectrum.C:66
 HFPtSpectrum.C:67
 HFPtSpectrum.C:68
 HFPtSpectrum.C:69
 HFPtSpectrum.C:70
 HFPtSpectrum.C:71
 HFPtSpectrum.C:72
 HFPtSpectrum.C:73
 HFPtSpectrum.C:74
 HFPtSpectrum.C:75
 HFPtSpectrum.C:76
 HFPtSpectrum.C:77
 HFPtSpectrum.C:78
 HFPtSpectrum.C:79
 HFPtSpectrum.C:80
 HFPtSpectrum.C:81
 HFPtSpectrum.C:82
 HFPtSpectrum.C:83
 HFPtSpectrum.C:84
 HFPtSpectrum.C:85
 HFPtSpectrum.C:86
 HFPtSpectrum.C:87
 HFPtSpectrum.C:88
 HFPtSpectrum.C:89
 HFPtSpectrum.C:90
 HFPtSpectrum.C:91
 HFPtSpectrum.C:92
 HFPtSpectrum.C:93
 HFPtSpectrum.C:94
 HFPtSpectrum.C:95
 HFPtSpectrum.C:96
 HFPtSpectrum.C:97
 HFPtSpectrum.C:98
 HFPtSpectrum.C:99
 HFPtSpectrum.C:100
 HFPtSpectrum.C:101
 HFPtSpectrum.C:102
 HFPtSpectrum.C:103
 HFPtSpectrum.C:104
 HFPtSpectrum.C:105
 HFPtSpectrum.C:106
 HFPtSpectrum.C:107
 HFPtSpectrum.C:108
 HFPtSpectrum.C:109
 HFPtSpectrum.C:110
 HFPtSpectrum.C:111
 HFPtSpectrum.C:112
 HFPtSpectrum.C:113
 HFPtSpectrum.C:114
 HFPtSpectrum.C:115
 HFPtSpectrum.C:116
 HFPtSpectrum.C:117
 HFPtSpectrum.C:118
 HFPtSpectrum.C:119
 HFPtSpectrum.C:120
 HFPtSpectrum.C:121
 HFPtSpectrum.C:122
 HFPtSpectrum.C:123
 HFPtSpectrum.C:124
 HFPtSpectrum.C:125
 HFPtSpectrum.C:126
 HFPtSpectrum.C:127
 HFPtSpectrum.C:128
 HFPtSpectrum.C:129
 HFPtSpectrum.C:130
 HFPtSpectrum.C:131
 HFPtSpectrum.C:132
 HFPtSpectrum.C:133
 HFPtSpectrum.C:134
 HFPtSpectrum.C:135
 HFPtSpectrum.C:136
 HFPtSpectrum.C:137
 HFPtSpectrum.C:138
 HFPtSpectrum.C:139
 HFPtSpectrum.C:140
 HFPtSpectrum.C:141
 HFPtSpectrum.C:142
 HFPtSpectrum.C:143
 HFPtSpectrum.C:144
 HFPtSpectrum.C:145
 HFPtSpectrum.C:146
 HFPtSpectrum.C:147
 HFPtSpectrum.C:148
 HFPtSpectrum.C:149
 HFPtSpectrum.C:150
 HFPtSpectrum.C:151
 HFPtSpectrum.C:152
 HFPtSpectrum.C:153
 HFPtSpectrum.C:154
 HFPtSpectrum.C:155
 HFPtSpectrum.C:156
 HFPtSpectrum.C:157
 HFPtSpectrum.C:158
 HFPtSpectrum.C:159
 HFPtSpectrum.C:160
 HFPtSpectrum.C:161
 HFPtSpectrum.C:162
 HFPtSpectrum.C:163
 HFPtSpectrum.C:164
 HFPtSpectrum.C:165
 HFPtSpectrum.C:166
 HFPtSpectrum.C:167
 HFPtSpectrum.C:168
 HFPtSpectrum.C:169
 HFPtSpectrum.C:170
 HFPtSpectrum.C:171
 HFPtSpectrum.C:172
 HFPtSpectrum.C:173
 HFPtSpectrum.C:174
 HFPtSpectrum.C:175
 HFPtSpectrum.C:176
 HFPtSpectrum.C:177
 HFPtSpectrum.C:178
 HFPtSpectrum.C:179
 HFPtSpectrum.C:180
 HFPtSpectrum.C:181
 HFPtSpectrum.C:182
 HFPtSpectrum.C:183
 HFPtSpectrum.C:184
 HFPtSpectrum.C:185
 HFPtSpectrum.C:186
 HFPtSpectrum.C:187
 HFPtSpectrum.C:188
 HFPtSpectrum.C:189
 HFPtSpectrum.C:190
 HFPtSpectrum.C:191
 HFPtSpectrum.C:192
 HFPtSpectrum.C:193
 HFPtSpectrum.C:194
 HFPtSpectrum.C:195
 HFPtSpectrum.C:196
 HFPtSpectrum.C:197
 HFPtSpectrum.C:198
 HFPtSpectrum.C:199
 HFPtSpectrum.C:200
 HFPtSpectrum.C:201
 HFPtSpectrum.C:202
 HFPtSpectrum.C:203
 HFPtSpectrum.C:204
 HFPtSpectrum.C:205
 HFPtSpectrum.C:206
 HFPtSpectrum.C:207
 HFPtSpectrum.C:208
 HFPtSpectrum.C:209
 HFPtSpectrum.C:210
 HFPtSpectrum.C:211
 HFPtSpectrum.C:212
 HFPtSpectrum.C:213
 HFPtSpectrum.C:214
 HFPtSpectrum.C:215
 HFPtSpectrum.C:216
 HFPtSpectrum.C:217
 HFPtSpectrum.C:218
 HFPtSpectrum.C:219
 HFPtSpectrum.C:220
 HFPtSpectrum.C:221
 HFPtSpectrum.C:222
 HFPtSpectrum.C:223
 HFPtSpectrum.C:224
 HFPtSpectrum.C:225
 HFPtSpectrum.C:226
 HFPtSpectrum.C:227
 HFPtSpectrum.C:228
 HFPtSpectrum.C:229
 HFPtSpectrum.C:230
 HFPtSpectrum.C:231
 HFPtSpectrum.C:232
 HFPtSpectrum.C:233
 HFPtSpectrum.C:234
 HFPtSpectrum.C:235
 HFPtSpectrum.C:236
 HFPtSpectrum.C:237
 HFPtSpectrum.C:238
 HFPtSpectrum.C:239
 HFPtSpectrum.C:240
 HFPtSpectrum.C:241
 HFPtSpectrum.C:242
 HFPtSpectrum.C:243
 HFPtSpectrum.C:244
 HFPtSpectrum.C:245
 HFPtSpectrum.C:246
 HFPtSpectrum.C:247
 HFPtSpectrum.C:248
 HFPtSpectrum.C:249
 HFPtSpectrum.C:250
 HFPtSpectrum.C:251
 HFPtSpectrum.C:252
 HFPtSpectrum.C:253
 HFPtSpectrum.C:254
 HFPtSpectrum.C:255
 HFPtSpectrum.C:256
 HFPtSpectrum.C:257
 HFPtSpectrum.C:258
 HFPtSpectrum.C:259
 HFPtSpectrum.C:260
 HFPtSpectrum.C:261
 HFPtSpectrum.C:262
 HFPtSpectrum.C:263
 HFPtSpectrum.C:264
 HFPtSpectrum.C:265
 HFPtSpectrum.C:266
 HFPtSpectrum.C:267
 HFPtSpectrum.C:268
 HFPtSpectrum.C:269
 HFPtSpectrum.C:270
 HFPtSpectrum.C:271
 HFPtSpectrum.C:272
 HFPtSpectrum.C:273
 HFPtSpectrum.C:274
 HFPtSpectrum.C:275
 HFPtSpectrum.C:276
 HFPtSpectrum.C:277
 HFPtSpectrum.C:278
 HFPtSpectrum.C:279
 HFPtSpectrum.C:280
 HFPtSpectrum.C:281
 HFPtSpectrum.C:282
 HFPtSpectrum.C:283
 HFPtSpectrum.C:284
 HFPtSpectrum.C:285
 HFPtSpectrum.C:286
 HFPtSpectrum.C:287
 HFPtSpectrum.C:288
 HFPtSpectrum.C:289
 HFPtSpectrum.C:290
 HFPtSpectrum.C:291
 HFPtSpectrum.C:292
 HFPtSpectrum.C:293
 HFPtSpectrum.C:294
 HFPtSpectrum.C:295
 HFPtSpectrum.C:296
 HFPtSpectrum.C:297
 HFPtSpectrum.C:298
 HFPtSpectrum.C:299
 HFPtSpectrum.C:300
 HFPtSpectrum.C:301
 HFPtSpectrum.C:302
 HFPtSpectrum.C:303
 HFPtSpectrum.C:304
 HFPtSpectrum.C:305
 HFPtSpectrum.C:306
 HFPtSpectrum.C:307
 HFPtSpectrum.C:308
 HFPtSpectrum.C:309
 HFPtSpectrum.C:310
 HFPtSpectrum.C:311
 HFPtSpectrum.C:312
 HFPtSpectrum.C:313
 HFPtSpectrum.C:314
 HFPtSpectrum.C:315
 HFPtSpectrum.C:316
 HFPtSpectrum.C:317
 HFPtSpectrum.C:318
 HFPtSpectrum.C:319
 HFPtSpectrum.C:320
 HFPtSpectrum.C:321
 HFPtSpectrum.C:322
 HFPtSpectrum.C:323
 HFPtSpectrum.C:324
 HFPtSpectrum.C:325
 HFPtSpectrum.C:326
 HFPtSpectrum.C:327
 HFPtSpectrum.C:328
 HFPtSpectrum.C:329
 HFPtSpectrum.C:330
 HFPtSpectrum.C:331
 HFPtSpectrum.C:332
 HFPtSpectrum.C:333
 HFPtSpectrum.C:334
 HFPtSpectrum.C:335
 HFPtSpectrum.C:336
 HFPtSpectrum.C:337
 HFPtSpectrum.C:338
 HFPtSpectrum.C:339
 HFPtSpectrum.C:340
 HFPtSpectrum.C:341
 HFPtSpectrum.C:342
 HFPtSpectrum.C:343
 HFPtSpectrum.C:344
 HFPtSpectrum.C:345
 HFPtSpectrum.C:346
 HFPtSpectrum.C:347
 HFPtSpectrum.C:348
 HFPtSpectrum.C:349
 HFPtSpectrum.C:350
 HFPtSpectrum.C:351
 HFPtSpectrum.C:352
 HFPtSpectrum.C:353
 HFPtSpectrum.C:354
 HFPtSpectrum.C:355
 HFPtSpectrum.C:356
 HFPtSpectrum.C:357
 HFPtSpectrum.C:358
 HFPtSpectrum.C:359
 HFPtSpectrum.C:360
 HFPtSpectrum.C:361
 HFPtSpectrum.C:362
 HFPtSpectrum.C:363
 HFPtSpectrum.C:364
 HFPtSpectrum.C:365
 HFPtSpectrum.C:366
 HFPtSpectrum.C:367
 HFPtSpectrum.C:368
 HFPtSpectrum.C:369
 HFPtSpectrum.C:370
 HFPtSpectrum.C:371
 HFPtSpectrum.C:372
 HFPtSpectrum.C:373
 HFPtSpectrum.C:374
 HFPtSpectrum.C:375
 HFPtSpectrum.C:376
 HFPtSpectrum.C:377
 HFPtSpectrum.C:378
 HFPtSpectrum.C:379
 HFPtSpectrum.C:380
 HFPtSpectrum.C:381
 HFPtSpectrum.C:382
 HFPtSpectrum.C:383
 HFPtSpectrum.C:384
 HFPtSpectrum.C:385
 HFPtSpectrum.C:386
 HFPtSpectrum.C:387
 HFPtSpectrum.C:388
 HFPtSpectrum.C:389
 HFPtSpectrum.C:390
 HFPtSpectrum.C:391
 HFPtSpectrum.C:392
 HFPtSpectrum.C:393
 HFPtSpectrum.C:394
 HFPtSpectrum.C:395
 HFPtSpectrum.C:396
 HFPtSpectrum.C:397
 HFPtSpectrum.C:398
 HFPtSpectrum.C:399
 HFPtSpectrum.C:400
 HFPtSpectrum.C:401
 HFPtSpectrum.C:402
 HFPtSpectrum.C:403
 HFPtSpectrum.C:404
 HFPtSpectrum.C:405
 HFPtSpectrum.C:406
 HFPtSpectrum.C:407
 HFPtSpectrum.C:408
 HFPtSpectrum.C:409
 HFPtSpectrum.C:410
 HFPtSpectrum.C:411
 HFPtSpectrum.C:412
 HFPtSpectrum.C:413
 HFPtSpectrum.C:414
 HFPtSpectrum.C:415
 HFPtSpectrum.C:416
 HFPtSpectrum.C:417
 HFPtSpectrum.C:418
 HFPtSpectrum.C:419
 HFPtSpectrum.C:420
 HFPtSpectrum.C:421
 HFPtSpectrum.C:422
 HFPtSpectrum.C:423
 HFPtSpectrum.C:424
 HFPtSpectrum.C:425
 HFPtSpectrum.C:426
 HFPtSpectrum.C:427
 HFPtSpectrum.C:428
 HFPtSpectrum.C:429
 HFPtSpectrum.C:430
 HFPtSpectrum.C:431
 HFPtSpectrum.C:432
 HFPtSpectrum.C:433
 HFPtSpectrum.C:434
 HFPtSpectrum.C:435
 HFPtSpectrum.C:436
 HFPtSpectrum.C:437
 HFPtSpectrum.C:438
 HFPtSpectrum.C:439
 HFPtSpectrum.C:440
 HFPtSpectrum.C:441
 HFPtSpectrum.C:442
 HFPtSpectrum.C:443
 HFPtSpectrum.C:444
 HFPtSpectrum.C:445
 HFPtSpectrum.C:446
 HFPtSpectrum.C:447
 HFPtSpectrum.C:448
 HFPtSpectrum.C:449
 HFPtSpectrum.C:450
 HFPtSpectrum.C:451
 HFPtSpectrum.C:452
 HFPtSpectrum.C:453
 HFPtSpectrum.C:454
 HFPtSpectrum.C:455
 HFPtSpectrum.C:456
 HFPtSpectrum.C:457
 HFPtSpectrum.C:458
 HFPtSpectrum.C:459
 HFPtSpectrum.C:460
 HFPtSpectrum.C:461
 HFPtSpectrum.C:462
 HFPtSpectrum.C:463
 HFPtSpectrum.C:464
 HFPtSpectrum.C:465
 HFPtSpectrum.C:466
 HFPtSpectrum.C:467
 HFPtSpectrum.C:468
 HFPtSpectrum.C:469
 HFPtSpectrum.C:470
 HFPtSpectrum.C:471
 HFPtSpectrum.C:472
 HFPtSpectrum.C:473
 HFPtSpectrum.C:474
 HFPtSpectrum.C:475
 HFPtSpectrum.C:476
 HFPtSpectrum.C:477
 HFPtSpectrum.C:478
 HFPtSpectrum.C:479
 HFPtSpectrum.C:480
 HFPtSpectrum.C:481
 HFPtSpectrum.C:482
 HFPtSpectrum.C:483
 HFPtSpectrum.C:484
 HFPtSpectrum.C:485
 HFPtSpectrum.C:486
 HFPtSpectrum.C:487
 HFPtSpectrum.C:488
 HFPtSpectrum.C:489
 HFPtSpectrum.C:490
 HFPtSpectrum.C:491
 HFPtSpectrum.C:492
 HFPtSpectrum.C:493
 HFPtSpectrum.C:494
 HFPtSpectrum.C:495
 HFPtSpectrum.C:496
 HFPtSpectrum.C:497
 HFPtSpectrum.C:498
 HFPtSpectrum.C:499
 HFPtSpectrum.C:500
 HFPtSpectrum.C:501
 HFPtSpectrum.C:502
 HFPtSpectrum.C:503
 HFPtSpectrum.C:504
 HFPtSpectrum.C:505
 HFPtSpectrum.C:506
 HFPtSpectrum.C:507
 HFPtSpectrum.C:508
 HFPtSpectrum.C:509
 HFPtSpectrum.C:510
 HFPtSpectrum.C:511
 HFPtSpectrum.C:512
 HFPtSpectrum.C:513
 HFPtSpectrum.C:514
 HFPtSpectrum.C:515
 HFPtSpectrum.C:516
 HFPtSpectrum.C:517
 HFPtSpectrum.C:518
 HFPtSpectrum.C:519
 HFPtSpectrum.C:520
 HFPtSpectrum.C:521
 HFPtSpectrum.C:522
 HFPtSpectrum.C:523
 HFPtSpectrum.C:524
 HFPtSpectrum.C:525
 HFPtSpectrum.C:526
 HFPtSpectrum.C:527
 HFPtSpectrum.C:528
 HFPtSpectrum.C:529
 HFPtSpectrum.C:530
 HFPtSpectrum.C:531
 HFPtSpectrum.C:532
 HFPtSpectrum.C:533
 HFPtSpectrum.C:534
 HFPtSpectrum.C:535
 HFPtSpectrum.C:536
 HFPtSpectrum.C:537
 HFPtSpectrum.C:538
 HFPtSpectrum.C:539
 HFPtSpectrum.C:540
 HFPtSpectrum.C:541
 HFPtSpectrum.C:542
 HFPtSpectrum.C:543
 HFPtSpectrum.C:544
 HFPtSpectrum.C:545
 HFPtSpectrum.C:546
 HFPtSpectrum.C:547
 HFPtSpectrum.C:548
 HFPtSpectrum.C:549
 HFPtSpectrum.C:550
 HFPtSpectrum.C:551
 HFPtSpectrum.C:552
 HFPtSpectrum.C:553
 HFPtSpectrum.C:554
 HFPtSpectrum.C:555
 HFPtSpectrum.C:556
 HFPtSpectrum.C:557
 HFPtSpectrum.C:558
 HFPtSpectrum.C:559
 HFPtSpectrum.C:560
 HFPtSpectrum.C:561
 HFPtSpectrum.C:562
 HFPtSpectrum.C:563
 HFPtSpectrum.C:564
 HFPtSpectrum.C:565
 HFPtSpectrum.C:566
 HFPtSpectrum.C:567
 HFPtSpectrum.C:568
 HFPtSpectrum.C:569
 HFPtSpectrum.C:570
 HFPtSpectrum.C:571
 HFPtSpectrum.C:572
 HFPtSpectrum.C:573
 HFPtSpectrum.C:574
 HFPtSpectrum.C:575
 HFPtSpectrum.C:576
 HFPtSpectrum.C:577
 HFPtSpectrum.C:578
 HFPtSpectrum.C:579
 HFPtSpectrum.C:580
 HFPtSpectrum.C:581
 HFPtSpectrum.C:582
 HFPtSpectrum.C:583
 HFPtSpectrum.C:584
 HFPtSpectrum.C:585
 HFPtSpectrum.C:586
 HFPtSpectrum.C:587
 HFPtSpectrum.C:588
 HFPtSpectrum.C:589
 HFPtSpectrum.C:590
 HFPtSpectrum.C:591
 HFPtSpectrum.C:592
 HFPtSpectrum.C:593
 HFPtSpectrum.C:594
 HFPtSpectrum.C:595
 HFPtSpectrum.C:596
 HFPtSpectrum.C:597
 HFPtSpectrum.C:598
 HFPtSpectrum.C:599
 HFPtSpectrum.C:600
 HFPtSpectrum.C:601
 HFPtSpectrum.C:602
 HFPtSpectrum.C:603
 HFPtSpectrum.C:604
 HFPtSpectrum.C:605
 HFPtSpectrum.C:606
 HFPtSpectrum.C:607
 HFPtSpectrum.C:608
 HFPtSpectrum.C:609
 HFPtSpectrum.C:610
 HFPtSpectrum.C:611
 HFPtSpectrum.C:612
 HFPtSpectrum.C:613
 HFPtSpectrum.C:614
 HFPtSpectrum.C:615
 HFPtSpectrum.C:616
 HFPtSpectrum.C:617
 HFPtSpectrum.C:618
 HFPtSpectrum.C:619
 HFPtSpectrum.C:620
 HFPtSpectrum.C:621
 HFPtSpectrum.C:622
 HFPtSpectrum.C:623
 HFPtSpectrum.C:624
 HFPtSpectrum.C:625
 HFPtSpectrum.C:626
 HFPtSpectrum.C:627
 HFPtSpectrum.C:628
 HFPtSpectrum.C:629
 HFPtSpectrum.C:630
 HFPtSpectrum.C:631
 HFPtSpectrum.C:632
 HFPtSpectrum.C:633
 HFPtSpectrum.C:634
 HFPtSpectrum.C:635
 HFPtSpectrum.C:636
 HFPtSpectrum.C:637
 HFPtSpectrum.C:638
 HFPtSpectrum.C:639
 HFPtSpectrum.C:640
 HFPtSpectrum.C:641
 HFPtSpectrum.C:642
 HFPtSpectrum.C:643
 HFPtSpectrum.C:644
 HFPtSpectrum.C:645
 HFPtSpectrum.C:646
 HFPtSpectrum.C:647
 HFPtSpectrum.C:648
 HFPtSpectrum.C:649
 HFPtSpectrum.C:650
 HFPtSpectrum.C:651
 HFPtSpectrum.C:652
 HFPtSpectrum.C:653
 HFPtSpectrum.C:654
 HFPtSpectrum.C:655
 HFPtSpectrum.C:656
 HFPtSpectrum.C:657
 HFPtSpectrum.C:658
 HFPtSpectrum.C:659
 HFPtSpectrum.C:660
 HFPtSpectrum.C:661
 HFPtSpectrum.C:662
 HFPtSpectrum.C:663
 HFPtSpectrum.C:664
 HFPtSpectrum.C:665
 HFPtSpectrum.C:666
 HFPtSpectrum.C:667
 HFPtSpectrum.C:668
 HFPtSpectrum.C:669
 HFPtSpectrum.C:670
 HFPtSpectrum.C:671
 HFPtSpectrum.C:672
 HFPtSpectrum.C:673
 HFPtSpectrum.C:674
 HFPtSpectrum.C:675
 HFPtSpectrum.C:676
 HFPtSpectrum.C:677
 HFPtSpectrum.C:678
 HFPtSpectrum.C:679
 HFPtSpectrum.C:680
 HFPtSpectrum.C:681
 HFPtSpectrum.C:682
 HFPtSpectrum.C:683
 HFPtSpectrum.C:684
 HFPtSpectrum.C:685
 HFPtSpectrum.C:686
 HFPtSpectrum.C:687
 HFPtSpectrum.C:688
 HFPtSpectrum.C:689
 HFPtSpectrum.C:690
 HFPtSpectrum.C:691
 HFPtSpectrum.C:692
 HFPtSpectrum.C:693
 HFPtSpectrum.C:694
 HFPtSpectrum.C:695
 HFPtSpectrum.C:696
 HFPtSpectrum.C:697
 HFPtSpectrum.C:698
 HFPtSpectrum.C:699
 HFPtSpectrum.C:700
 HFPtSpectrum.C:701
 HFPtSpectrum.C:702
 HFPtSpectrum.C:703
 HFPtSpectrum.C:704
 HFPtSpectrum.C:705
 HFPtSpectrum.C:706
 HFPtSpectrum.C:707
 HFPtSpectrum.C:708
 HFPtSpectrum.C:709
 HFPtSpectrum.C:710
 HFPtSpectrum.C:711
 HFPtSpectrum.C:712
 HFPtSpectrum.C:713
 HFPtSpectrum.C:714
 HFPtSpectrum.C:715
 HFPtSpectrum.C:716
 HFPtSpectrum.C:717
 HFPtSpectrum.C:718
 HFPtSpectrum.C:719
 HFPtSpectrum.C:720
 HFPtSpectrum.C:721
 HFPtSpectrum.C:722
 HFPtSpectrum.C:723
 HFPtSpectrum.C:724
 HFPtSpectrum.C:725
 HFPtSpectrum.C:726
 HFPtSpectrum.C:727
 HFPtSpectrum.C:728
 HFPtSpectrum.C:729
 HFPtSpectrum.C:730
 HFPtSpectrum.C:731
 HFPtSpectrum.C:732
 HFPtSpectrum.C:733
 HFPtSpectrum.C:734
 HFPtSpectrum.C:735
 HFPtSpectrum.C:736
 HFPtSpectrum.C:737
 HFPtSpectrum.C:738
 HFPtSpectrum.C:739
 HFPtSpectrum.C:740
 HFPtSpectrum.C:741
 HFPtSpectrum.C:742
 HFPtSpectrum.C:743
 HFPtSpectrum.C:744
 HFPtSpectrum.C:745
 HFPtSpectrum.C:746
 HFPtSpectrum.C:747
 HFPtSpectrum.C:748
 HFPtSpectrum.C:749
 HFPtSpectrum.C:750
 HFPtSpectrum.C:751
 HFPtSpectrum.C:752
 HFPtSpectrum.C:753
 HFPtSpectrum.C:754
 HFPtSpectrum.C:755
 HFPtSpectrum.C:756
 HFPtSpectrum.C:757
 HFPtSpectrum.C:758
 HFPtSpectrum.C:759
 HFPtSpectrum.C:760
 HFPtSpectrum.C:761
 HFPtSpectrum.C:762
 HFPtSpectrum.C:763
 HFPtSpectrum.C:764
 HFPtSpectrum.C:765
 HFPtSpectrum.C:766
 HFPtSpectrum.C:767
 HFPtSpectrum.C:768
 HFPtSpectrum.C:769
 HFPtSpectrum.C:770
 HFPtSpectrum.C:771
 HFPtSpectrum.C:772
 HFPtSpectrum.C:773
 HFPtSpectrum.C:774
 HFPtSpectrum.C:775
 HFPtSpectrum.C:776
 HFPtSpectrum.C:777
 HFPtSpectrum.C:778
 HFPtSpectrum.C:779
 HFPtSpectrum.C:780
 HFPtSpectrum.C:781
 HFPtSpectrum.C:782
 HFPtSpectrum.C:783
 HFPtSpectrum.C:784
 HFPtSpectrum.C:785
 HFPtSpectrum.C:786
 HFPtSpectrum.C:787
 HFPtSpectrum.C:788
 HFPtSpectrum.C:789
 HFPtSpectrum.C:790
 HFPtSpectrum.C:791
 HFPtSpectrum.C:792
 HFPtSpectrum.C:793
 HFPtSpectrum.C:794
 HFPtSpectrum.C:795
 HFPtSpectrum.C:796
 HFPtSpectrum.C:797
 HFPtSpectrum.C:798
 HFPtSpectrum.C:799
 HFPtSpectrum.C:800
 HFPtSpectrum.C:801
 HFPtSpectrum.C:802
 HFPtSpectrum.C:803
 HFPtSpectrum.C:804
 HFPtSpectrum.C:805
 HFPtSpectrum.C:806
 HFPtSpectrum.C:807
 HFPtSpectrum.C:808
 HFPtSpectrum.C:809
 HFPtSpectrum.C:810
 HFPtSpectrum.C:811
 HFPtSpectrum.C:812
 HFPtSpectrum.C:813
 HFPtSpectrum.C:814
 HFPtSpectrum.C:815
 HFPtSpectrum.C:816
 HFPtSpectrum.C:817
 HFPtSpectrum.C:818
 HFPtSpectrum.C:819
 HFPtSpectrum.C:820
 HFPtSpectrum.C:821
 HFPtSpectrum.C:822
 HFPtSpectrum.C:823
 HFPtSpectrum.C:824
 HFPtSpectrum.C:825
 HFPtSpectrum.C:826
 HFPtSpectrum.C:827
 HFPtSpectrum.C:828
 HFPtSpectrum.C:829
 HFPtSpectrum.C:830
 HFPtSpectrum.C:831
 HFPtSpectrum.C:832
 HFPtSpectrum.C:833
 HFPtSpectrum.C:834
 HFPtSpectrum.C:835
 HFPtSpectrum.C:836
 HFPtSpectrum.C:837
 HFPtSpectrum.C:838
 HFPtSpectrum.C:839
 HFPtSpectrum.C:840
 HFPtSpectrum.C:841
 HFPtSpectrum.C:842
 HFPtSpectrum.C:843
 HFPtSpectrum.C:844
 HFPtSpectrum.C:845
 HFPtSpectrum.C:846
 HFPtSpectrum.C:847
 HFPtSpectrum.C:848
 HFPtSpectrum.C:849
 HFPtSpectrum.C:850
 HFPtSpectrum.C:851
 HFPtSpectrum.C:852
 HFPtSpectrum.C:853
 HFPtSpectrum.C:854
 HFPtSpectrum.C:855
 HFPtSpectrum.C:856
 HFPtSpectrum.C:857
 HFPtSpectrum.C:858
 HFPtSpectrum.C:859
 HFPtSpectrum.C:860
 HFPtSpectrum.C:861
 HFPtSpectrum.C:862
 HFPtSpectrum.C:863
 HFPtSpectrum.C:864
 HFPtSpectrum.C:865
 HFPtSpectrum.C:866
 HFPtSpectrum.C:867
 HFPtSpectrum.C:868
 HFPtSpectrum.C:869
 HFPtSpectrum.C:870
 HFPtSpectrum.C:871
 HFPtSpectrum.C:872
 HFPtSpectrum.C:873
 HFPtSpectrum.C:874
 HFPtSpectrum.C:875
 HFPtSpectrum.C:876
 HFPtSpectrum.C:877
 HFPtSpectrum.C:878
 HFPtSpectrum.C:879
 HFPtSpectrum.C:880
 HFPtSpectrum.C:881
 HFPtSpectrum.C:882
 HFPtSpectrum.C:883
 HFPtSpectrum.C:884
 HFPtSpectrum.C:885
 HFPtSpectrum.C:886
 HFPtSpectrum.C:887
 HFPtSpectrum.C:888
 HFPtSpectrum.C:889
 HFPtSpectrum.C:890
 HFPtSpectrum.C:891
 HFPtSpectrum.C:892
 HFPtSpectrum.C:893
 HFPtSpectrum.C:894
 HFPtSpectrum.C:895
 HFPtSpectrum.C:896
 HFPtSpectrum.C:897
 HFPtSpectrum.C:898
 HFPtSpectrum.C:899
 HFPtSpectrum.C:900
 HFPtSpectrum.C:901
 HFPtSpectrum.C:902
 HFPtSpectrum.C:903
 HFPtSpectrum.C:904
 HFPtSpectrum.C:905
 HFPtSpectrum.C:906
 HFPtSpectrum.C:907
 HFPtSpectrum.C:908
 HFPtSpectrum.C:909
 HFPtSpectrum.C:910
 HFPtSpectrum.C:911
 HFPtSpectrum.C:912
 HFPtSpectrum.C:913
 HFPtSpectrum.C:914
 HFPtSpectrum.C:915
 HFPtSpectrum.C:916
 HFPtSpectrum.C:917
 HFPtSpectrum.C:918
 HFPtSpectrum.C:919
 HFPtSpectrum.C:920
 HFPtSpectrum.C:921
 HFPtSpectrum.C:922
 HFPtSpectrum.C:923
 HFPtSpectrum.C:924
 HFPtSpectrum.C:925
 HFPtSpectrum.C:926
 HFPtSpectrum.C:927
 HFPtSpectrum.C:928
 HFPtSpectrum.C:929
 HFPtSpectrum.C:930
 HFPtSpectrum.C:931
 HFPtSpectrum.C:932
 HFPtSpectrum.C:933
 HFPtSpectrum.C:934
 HFPtSpectrum.C:935
 HFPtSpectrum.C:936
 HFPtSpectrum.C:937
 HFPtSpectrum.C:938
 HFPtSpectrum.C:939
 HFPtSpectrum.C:940
 HFPtSpectrum.C:941
 HFPtSpectrum.C:942
 HFPtSpectrum.C:943
 HFPtSpectrum.C:944
 HFPtSpectrum.C:945
 HFPtSpectrum.C:946
 HFPtSpectrum.C:947
 HFPtSpectrum.C:948
 HFPtSpectrum.C:949
 HFPtSpectrum.C:950
 HFPtSpectrum.C:951
 HFPtSpectrum.C:952
 HFPtSpectrum.C:953
 HFPtSpectrum.C:954
 HFPtSpectrum.C:955
 HFPtSpectrum.C:956
 HFPtSpectrum.C:957
 HFPtSpectrum.C:958
 HFPtSpectrum.C:959
 HFPtSpectrum.C:960
 HFPtSpectrum.C:961
 HFPtSpectrum.C:962
 HFPtSpectrum.C:963
 HFPtSpectrum.C:964
 HFPtSpectrum.C:965
 HFPtSpectrum.C:966
 HFPtSpectrum.C:967
 HFPtSpectrum.C:968