ROOT logo
#if !defined (__CINT__) || (defined(__MAKECINT__))
#include <iostream>
#include "TClonesArray.h"
#include "TH1.h"
#include "AliPWGFunc.h"
//#include "LoadSpectraPiKPPbPb.C"
#include "AliParticleYield.h"
#include "TFile.h"
#include "TDatabasePDG.h"

#endif


void AddHistograms (TH1 * hdest, TH1 * hsource, Float_t scale = 1. , Int_t isLinear = 0) ;
TH1* PrintYieldAndError(TH1 * hsyst, TH1* hstat, Int_t ifunc = 0, Double_t massParticle=0.139) ;
TH1* ReweightSpectra(TClonesArray * histos, Double_t * weights, Int_t isLinear = 0, TString suffix = "") ;
void LoadStuff(Bool_t loadPbPb = kTRUE) ;
void AverageAndExtrapolate(TString what);



TH1 * hLambdaStat[7];
TH1 * hLambdaSyst[7];
TH1 * hK0SStat[7]   ;
TH1 * hK0SSyst[7]   ;



void AverageAndExtrapolate () {

  // MF COMMON LIBRARIES SHOULD NOT BE LOADED FOR THIS MACRO TO WORK
  LoadStuff(1); // True PbPb, False pPb

  //  PrintYieldAndError(hSpectraCentr_sys[0][kMyProton][0], hSpectraCentr_stat[0][kMyProton][0], 0, mass[2]);

  //  PrintYieldAndError(hLambdaSyst[0], hLambdaStat[0], 0, TDatabasePDG::Instance()->GetParticle("Lambda0")->Mass());
  // icentr, ipart, icharge

  //  AverageAndExtrapolate("pions_pos_0020");
  //  AverageAndExtrapolate("pions_pos_0010");
  // AverageAndExtrapolate("pions_neg_0010");
  //  AverageAndExtrapolate("pions_sum_0010");
  // AverageAndExtrapolate("kaons_pos_0010");
  // AverageAndExtrapolate("kaons_neg_0010");
  // AverageAndExtrapolate("protons_pos_0010");
  // AverageAndExtrapolate("protons_neg_0010");
  //  AverageAndExtrapolate("lambda_0010");
  //  AverageAndExtrapolate("k0s_0010");
  // AverageAndExtrapolate("pions_pos_6080");
  // AverageAndExtrapolate("pions_neg_6080");
  // AverageAndExtrapolate("kaons_pos_6080");
  // AverageAndExtrapolate("kaons_neg_6080");
  // AverageAndExtrapolate("protons_pos_6080");
  // AverageAndExtrapolate("protons_neg_6080");

  //  AverageAndExtrapolate("pions_pos_2040");
  AverageAndExtrapolate("pions_neg_2040");
  AverageAndExtrapolate("kaons_pos_2040");
  AverageAndExtrapolate("kaons_neg_2040");
  AverageAndExtrapolate("protons_pos_2040");
  AverageAndExtrapolate("protons_neg_2040");
  
}

TH1* PrintYieldAndError(TH1 * hsyst, TH1* hstat, Int_t ifunc, Double_t massParticle) {

  TF1 * f = 0;
  if (ifunc == 0) {
    f= BGBlastWave("fBlastWave",  massParticle);
    f->SetParameters(massParticle, 0.640, 0.097, 0.73, 100); // FIXME
  }
  else if (ifunc == 1) {
    f  = fm.GetTsallis(massParticle, 0.2, 11, 800, "fTsallisPion");
  }
  
  //  TH1 * h =  YieldMean(hstat, hsyst, f, 0.0, 100, 0.01, 0.1, "");
  TH1 * h =  YieldMean(hstat, hsyst, f, 0.0, 100);
  //  std::cout << "H " << h << std::endl;
  std::cout << "" << std::endl;
  std::cout << h->GetBinContent(1) << ", " << h->GetBinContent(2) << ", " << h->GetBinContent(3) << std::endl;
  std::cout << "" << std::endl;
  return h;


}


TH1* ReweightSpectra(TObjArray * histos, Double_t * weights, Int_t isLinear, TString suffix) {

  // sums a number of spectra with a given weight. Used to combine
  // several centrality bins.  The weights should add up to 1 and be
  // proportional to the width of the centrality bin for each
  // histogram
  // Suffix is added to the name of the histogram.
  // if linear = 1 errors are summed linearly rather than in quadrature


  TIter it(histos);
  TH1 * h = 0;
  TH1 * hsum = 0;
  Int_t ihisto = 0;
  while ((h = dynamic_cast<TH1*>(it.Next()))) {
    if(!h) {
      std::cout << "ERROR cannot get one of the histos!" << std::endl;
      return 0;
    }

    if (!hsum) {
      // First histogram, clone it
      hsum =  (TH1D*) h->Clone(TString(h->GetName())+suffix);
      hsum->Scale(weights[ihisto++]);
    }else {
      AddHistograms(hsum, h, weights[ihisto++], isLinear);
    }
  }
  return hsum;
}

void AddHistograms (TH1 * hdest, TH1 * hsource, Float_t scale, Int_t isLinear) {
  // THis method assumes that the 2 histos are consistent!!
  TH1 * hsourceLoc = (TH1*) hsource->Clone("hsourceLoc");
  hsourceLoc->Scale(scale);
  if(!isLinear) {
    hdest->Add(hsourceLoc);
  } 
  else {
    Int_t nbin = hsourceLoc->GetNbinsX();
    for(Int_t ibin = 0; ibin < nbin; ibin++){
      Double_t content = hdest->GetBinContent(ibin) + hsourceLoc->GetBinContent(ibin);
      Double_t error   = hdest->GetBinError  (ibin) + hsourceLoc->GetBinError  (ibin);
      hdest->SetBinContent(ibin,content);
      hdest->SetBinError(ibin, error);
    }
    

  }

  delete hsourceLoc;
  
  

}


void LoadStuff(Bool_t loadPbPb) {
  if(loadPbPb){
    gROOT->LoadMacro("LoadSpectraPiKPPbPb.C");
    LoadSpectraPiKPPbPb();
  }
  else {
    gROOT->LoadMacro("LoadSpectraPiKPProtonLead.C");
    LoadSpectraPiKPProtonLead();
  }
  LoadLibs();
  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/UTILS/YieldMean.C");
  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/SPECTRA/UTILS/SpectraUtils.C");

  // Load Lambdas and K0s
  TFile * f = new TFile("k0s_lambda_final_spectra.root");
  const char * multTags[] = {  "0005",  "0510",  "1020",  "2040",  "4060",  "6080", "8090"};
  for (Int_t icentr = 0; icentr<7; icentr++) {
    hLambdaStat[icentr] = (TH1*) f->Get(Form("statonly_cent%s_Lambda",multTags[icentr]));
    hLambdaSyst[icentr] = (TH1*) f->Get(Form("statonly_cent%s_Lambda",multTags[icentr]));
    hK0SStat[icentr]    = (TH1*) f->Get(Form("systonly_cent%s_K0s",multTags[icentr]));
    hK0SSyst[icentr]    = (TH1*) f->Get(Form("statonly_cent%s_K0s",multTags[icentr]));

    // The bin 300-400 MeV was not used in the analysis
    hK0SStat[icentr]->SetBinContent(4,0);   
    hK0SSyst[icentr]->SetBinContent(4,0);
    hK0SStat[icentr]->SetBinError(4,0);   
    hK0SSyst[icentr]->SetBinError(4,0);
  }

}

void AverageAndExtrapolate(TString what) {

  TH1 * hstat =0;
  TH1 * hsyst =0;
  TH1 * hyieldmean =0;

  if(what == "pions_pos_0020"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[0][kMyPion][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[1][kMyPion][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[2][kMyPion][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [0][kMyPion][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyPion][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [2][kMyPion][kMyPos]);
    
    Double_t weights[] = {0.25, 0.25, 0.5};
    //Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0020");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0020");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[0]);

    
  }
  if(what == "pions_pos_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[0][kMyPion][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[1][kMyPion][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [0][kMyPion][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyPion][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[0]);

    
  }
  if(what == "pions_sum_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[0][kMyPion][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[1][kMyPion][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[0][kMyPion][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[1][kMyPion][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [0][kMyPion][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyPion][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [0][kMyPion][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyPion][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5, 0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[0]);

    
  }
  if(what == "pions_neg_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[0][kMyPion][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[1][kMyPion][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [0][kMyPion][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyPion][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[0]);

    
  }
  if(what == "protons_pos_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[0][kMyProton][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[1][kMyProton][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [0][kMyProton][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyProton][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[2]);

    
  }
  if(what == "protons_neg_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[0][kMyProton][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[1][kMyProton][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [0][kMyProton][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyProton][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[2]);

    
  }
    if(what == "kaons_pos_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[0][kMyKaon][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[1][kMyKaon][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [0][kMyKaon][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyKaon][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[1]);

    
  }
  if(what == "kaons_neg_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[0][kMyKaon][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[1][kMyKaon][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [0][kMyKaon][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [1][kMyKaon][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[1]);

    
  }

  if(what == "pions_pos_6080"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[7][kMyPion][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[8][kMyPion][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [7][kMyPion][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [8][kMyPion][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_6080");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_6080");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[0]);

    
  }
  if(what == "pions_neg_6080"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[7][kMyPion][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[8][kMyPion][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [7][kMyPion][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [8][kMyPion][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_6080");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_6080");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[0]);

    
  }
  if(what == "protons_pos_6080"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[7][kMyProton][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[8][kMyProton][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [7][kMyProton][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [8][kMyProton][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_6080");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_6080");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[2]);

    
  }
  if(what == "protons_neg_6080"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[7][kMyProton][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[8][kMyProton][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [7][kMyProton][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [8][kMyProton][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_6080");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_6080");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[2]);

    
  }
    if(what == "kaons_pos_6080"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[7][kMyKaon][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[8][kMyKaon][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [7][kMyKaon][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [8][kMyKaon][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_6080");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_6080");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[1]);

    
  }
  if(what == "kaons_neg_6080"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[7][kMyKaon][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[8][kMyKaon][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [7][kMyKaon][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [8][kMyKaon][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_6080");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_6080");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[1]);

    
  }

  if(what == "pions_pos_2040"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[3][kMyPion][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[4][kMyPion][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [3][kMyPion][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [4][kMyPion][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_2040");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_2040");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[0]);

    
  }
  if(what == "pions_neg_2040"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[3][kMyPion][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[4][kMyPion][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [3][kMyPion][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [4][kMyPion][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_2040");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_2040");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[0]);

    
  }
    if(what == "kaons_pos_2040"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[3][kMyKaon][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[4][kMyKaon][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [3][kMyKaon][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [4][kMyKaon][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_2040");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_2040");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[1]);

    
  }
  if(what == "kaons_neg_2040"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[3][kMyKaon][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[4][kMyKaon][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [3][kMyKaon][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [4][kMyKaon][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_2040");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_2040");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[1]);

    
  }

  if(what == "protons_pos_2040"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[3][kMyProton][kMyPos]);
    arrStat->Add(hSpectraCentr_stat[4][kMyProton][kMyPos]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [3][kMyProton][kMyPos]);
    arrSyst->Add(hSpectraCentr_sys [4][kMyProton][kMyPos]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_2040");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_2040");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[2]);

    
  }
  if(what == "protons_neg_2040"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hSpectraCentr_stat[3][kMyProton][kMyNeg]);
    arrStat->Add(hSpectraCentr_stat[4][kMyProton][kMyNeg]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hSpectraCentr_sys [3][kMyProton][kMyNeg]);
    arrSyst->Add(hSpectraCentr_sys [4][kMyProton][kMyNeg]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_2040");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_2040");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, mass[2]);

    
  }


  if(what == "lambda_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hLambdaStat[0]);
    arrStat->Add(hLambdaStat[1]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hLambdaSyst[0]);
    arrSyst->Add(hLambdaSyst[1]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, TDatabasePDG::Instance()->GetParticle("Lambda0")->Mass());

    
  }

  if(what == "k0s_0010"){ 

    TObjArray * arrStat = new TObjArray();
    arrStat->Add(hK0SStat[0]);
    arrStat->Add(hK0SStat[1]);
    
    TObjArray * arrSyst = new TObjArray();
    arrSyst->Add(hK0SSyst[0]);
    arrSyst->Add(hK0SSyst[1]);
    
    Double_t weights[] = {0.5, 0.5};
    
    TH1 * hstat = ReweightSpectra(arrStat, weights, 0, "_0010");
    TH1 * hsyst = ReweightSpectra(arrSyst, weights, 1, "_0010");

    hyieldmean = PrintYieldAndError(hsyst, hstat, 0, TDatabasePDG::Instance()->GetParticle("K_S0")->Mass());

    
  }



  
  TCanvas * c1 = new TCanvas("Averaging", "Averaging");
  c1->Divide(2,1);
  c1->cd(1);
  hstat->Draw();
  hsyst->Draw("same,e3");
  c1->cd(2);
  hyieldmean->Draw();
  

}


 AverageAndExtrapolate.C:1
 AverageAndExtrapolate.C:2
 AverageAndExtrapolate.C:3
 AverageAndExtrapolate.C:4
 AverageAndExtrapolate.C:5
 AverageAndExtrapolate.C:6
 AverageAndExtrapolate.C:7
 AverageAndExtrapolate.C:8
 AverageAndExtrapolate.C:9
 AverageAndExtrapolate.C:10
 AverageAndExtrapolate.C:11
 AverageAndExtrapolate.C:12
 AverageAndExtrapolate.C:13
 AverageAndExtrapolate.C:14
 AverageAndExtrapolate.C:15
 AverageAndExtrapolate.C:16
 AverageAndExtrapolate.C:17
 AverageAndExtrapolate.C:18
 AverageAndExtrapolate.C:19
 AverageAndExtrapolate.C:20
 AverageAndExtrapolate.C:21
 AverageAndExtrapolate.C:22
 AverageAndExtrapolate.C:23
 AverageAndExtrapolate.C:24
 AverageAndExtrapolate.C:25
 AverageAndExtrapolate.C:26
 AverageAndExtrapolate.C:27
 AverageAndExtrapolate.C:28
 AverageAndExtrapolate.C:29
 AverageAndExtrapolate.C:30
 AverageAndExtrapolate.C:31
 AverageAndExtrapolate.C:32
 AverageAndExtrapolate.C:33
 AverageAndExtrapolate.C:34
 AverageAndExtrapolate.C:35
 AverageAndExtrapolate.C:36
 AverageAndExtrapolate.C:37
 AverageAndExtrapolate.C:38
 AverageAndExtrapolate.C:39
 AverageAndExtrapolate.C:40
 AverageAndExtrapolate.C:41
 AverageAndExtrapolate.C:42
 AverageAndExtrapolate.C:43
 AverageAndExtrapolate.C:44
 AverageAndExtrapolate.C:45
 AverageAndExtrapolate.C:46
 AverageAndExtrapolate.C:47
 AverageAndExtrapolate.C:48
 AverageAndExtrapolate.C:49
 AverageAndExtrapolate.C:50
 AverageAndExtrapolate.C:51
 AverageAndExtrapolate.C:52
 AverageAndExtrapolate.C:53
 AverageAndExtrapolate.C:54
 AverageAndExtrapolate.C:55
 AverageAndExtrapolate.C:56
 AverageAndExtrapolate.C:57
 AverageAndExtrapolate.C:58
 AverageAndExtrapolate.C:59
 AverageAndExtrapolate.C:60
 AverageAndExtrapolate.C:61
 AverageAndExtrapolate.C:62
 AverageAndExtrapolate.C:63
 AverageAndExtrapolate.C:64
 AverageAndExtrapolate.C:65
 AverageAndExtrapolate.C:66
 AverageAndExtrapolate.C:67
 AverageAndExtrapolate.C:68
 AverageAndExtrapolate.C:69
 AverageAndExtrapolate.C:70
 AverageAndExtrapolate.C:71
 AverageAndExtrapolate.C:72
 AverageAndExtrapolate.C:73
 AverageAndExtrapolate.C:74
 AverageAndExtrapolate.C:75
 AverageAndExtrapolate.C:76
 AverageAndExtrapolate.C:77
 AverageAndExtrapolate.C:78
 AverageAndExtrapolate.C:79
 AverageAndExtrapolate.C:80
 AverageAndExtrapolate.C:81
 AverageAndExtrapolate.C:82
 AverageAndExtrapolate.C:83
 AverageAndExtrapolate.C:84
 AverageAndExtrapolate.C:85
 AverageAndExtrapolate.C:86
 AverageAndExtrapolate.C:87
 AverageAndExtrapolate.C:88
 AverageAndExtrapolate.C:89
 AverageAndExtrapolate.C:90
 AverageAndExtrapolate.C:91
 AverageAndExtrapolate.C:92
 AverageAndExtrapolate.C:93
 AverageAndExtrapolate.C:94
 AverageAndExtrapolate.C:95
 AverageAndExtrapolate.C:96
 AverageAndExtrapolate.C:97
 AverageAndExtrapolate.C:98
 AverageAndExtrapolate.C:99
 AverageAndExtrapolate.C:100
 AverageAndExtrapolate.C:101
 AverageAndExtrapolate.C:102
 AverageAndExtrapolate.C:103
 AverageAndExtrapolate.C:104
 AverageAndExtrapolate.C:105
 AverageAndExtrapolate.C:106
 AverageAndExtrapolate.C:107
 AverageAndExtrapolate.C:108
 AverageAndExtrapolate.C:109
 AverageAndExtrapolate.C:110
 AverageAndExtrapolate.C:111
 AverageAndExtrapolate.C:112
 AverageAndExtrapolate.C:113
 AverageAndExtrapolate.C:114
 AverageAndExtrapolate.C:115
 AverageAndExtrapolate.C:116
 AverageAndExtrapolate.C:117
 AverageAndExtrapolate.C:118
 AverageAndExtrapolate.C:119
 AverageAndExtrapolate.C:120
 AverageAndExtrapolate.C:121
 AverageAndExtrapolate.C:122
 AverageAndExtrapolate.C:123
 AverageAndExtrapolate.C:124
 AverageAndExtrapolate.C:125
 AverageAndExtrapolate.C:126
 AverageAndExtrapolate.C:127
 AverageAndExtrapolate.C:128
 AverageAndExtrapolate.C:129
 AverageAndExtrapolate.C:130
 AverageAndExtrapolate.C:131
 AverageAndExtrapolate.C:132
 AverageAndExtrapolate.C:133
 AverageAndExtrapolate.C:134
 AverageAndExtrapolate.C:135
 AverageAndExtrapolate.C:136
 AverageAndExtrapolate.C:137
 AverageAndExtrapolate.C:138
 AverageAndExtrapolate.C:139
 AverageAndExtrapolate.C:140
 AverageAndExtrapolate.C:141
 AverageAndExtrapolate.C:142
 AverageAndExtrapolate.C:143
 AverageAndExtrapolate.C:144
 AverageAndExtrapolate.C:145
 AverageAndExtrapolate.C:146
 AverageAndExtrapolate.C:147
 AverageAndExtrapolate.C:148
 AverageAndExtrapolate.C:149
 AverageAndExtrapolate.C:150
 AverageAndExtrapolate.C:151
 AverageAndExtrapolate.C:152
 AverageAndExtrapolate.C:153
 AverageAndExtrapolate.C:154
 AverageAndExtrapolate.C:155
 AverageAndExtrapolate.C:156
 AverageAndExtrapolate.C:157
 AverageAndExtrapolate.C:158
 AverageAndExtrapolate.C:159
 AverageAndExtrapolate.C:160
 AverageAndExtrapolate.C:161
 AverageAndExtrapolate.C:162
 AverageAndExtrapolate.C:163
 AverageAndExtrapolate.C:164
 AverageAndExtrapolate.C:165
 AverageAndExtrapolate.C:166
 AverageAndExtrapolate.C:167
 AverageAndExtrapolate.C:168
 AverageAndExtrapolate.C:169
 AverageAndExtrapolate.C:170
 AverageAndExtrapolate.C:171
 AverageAndExtrapolate.C:172
 AverageAndExtrapolate.C:173
 AverageAndExtrapolate.C:174
 AverageAndExtrapolate.C:175
 AverageAndExtrapolate.C:176
 AverageAndExtrapolate.C:177
 AverageAndExtrapolate.C:178
 AverageAndExtrapolate.C:179
 AverageAndExtrapolate.C:180
 AverageAndExtrapolate.C:181
 AverageAndExtrapolate.C:182
 AverageAndExtrapolate.C:183
 AverageAndExtrapolate.C:184
 AverageAndExtrapolate.C:185
 AverageAndExtrapolate.C:186
 AverageAndExtrapolate.C:187
 AverageAndExtrapolate.C:188
 AverageAndExtrapolate.C:189
 AverageAndExtrapolate.C:190
 AverageAndExtrapolate.C:191
 AverageAndExtrapolate.C:192
 AverageAndExtrapolate.C:193
 AverageAndExtrapolate.C:194
 AverageAndExtrapolate.C:195
 AverageAndExtrapolate.C:196
 AverageAndExtrapolate.C:197
 AverageAndExtrapolate.C:198
 AverageAndExtrapolate.C:199
 AverageAndExtrapolate.C:200
 AverageAndExtrapolate.C:201
 AverageAndExtrapolate.C:202
 AverageAndExtrapolate.C:203
 AverageAndExtrapolate.C:204
 AverageAndExtrapolate.C:205
 AverageAndExtrapolate.C:206
 AverageAndExtrapolate.C:207
 AverageAndExtrapolate.C:208
 AverageAndExtrapolate.C:209
 AverageAndExtrapolate.C:210
 AverageAndExtrapolate.C:211
 AverageAndExtrapolate.C:212
 AverageAndExtrapolate.C:213
 AverageAndExtrapolate.C:214
 AverageAndExtrapolate.C:215
 AverageAndExtrapolate.C:216
 AverageAndExtrapolate.C:217
 AverageAndExtrapolate.C:218
 AverageAndExtrapolate.C:219
 AverageAndExtrapolate.C:220
 AverageAndExtrapolate.C:221
 AverageAndExtrapolate.C:222
 AverageAndExtrapolate.C:223
 AverageAndExtrapolate.C:224
 AverageAndExtrapolate.C:225
 AverageAndExtrapolate.C:226
 AverageAndExtrapolate.C:227
 AverageAndExtrapolate.C:228
 AverageAndExtrapolate.C:229
 AverageAndExtrapolate.C:230
 AverageAndExtrapolate.C:231
 AverageAndExtrapolate.C:232
 AverageAndExtrapolate.C:233
 AverageAndExtrapolate.C:234
 AverageAndExtrapolate.C:235
 AverageAndExtrapolate.C:236
 AverageAndExtrapolate.C:237
 AverageAndExtrapolate.C:238
 AverageAndExtrapolate.C:239
 AverageAndExtrapolate.C:240
 AverageAndExtrapolate.C:241
 AverageAndExtrapolate.C:242
 AverageAndExtrapolate.C:243
 AverageAndExtrapolate.C:244
 AverageAndExtrapolate.C:245
 AverageAndExtrapolate.C:246
 AverageAndExtrapolate.C:247
 AverageAndExtrapolate.C:248
 AverageAndExtrapolate.C:249
 AverageAndExtrapolate.C:250
 AverageAndExtrapolate.C:251
 AverageAndExtrapolate.C:252
 AverageAndExtrapolate.C:253
 AverageAndExtrapolate.C:254
 AverageAndExtrapolate.C:255
 AverageAndExtrapolate.C:256
 AverageAndExtrapolate.C:257
 AverageAndExtrapolate.C:258
 AverageAndExtrapolate.C:259
 AverageAndExtrapolate.C:260
 AverageAndExtrapolate.C:261
 AverageAndExtrapolate.C:262
 AverageAndExtrapolate.C:263
 AverageAndExtrapolate.C:264
 AverageAndExtrapolate.C:265
 AverageAndExtrapolate.C:266
 AverageAndExtrapolate.C:267
 AverageAndExtrapolate.C:268
 AverageAndExtrapolate.C:269
 AverageAndExtrapolate.C:270
 AverageAndExtrapolate.C:271
 AverageAndExtrapolate.C:272
 AverageAndExtrapolate.C:273
 AverageAndExtrapolate.C:274
 AverageAndExtrapolate.C:275
 AverageAndExtrapolate.C:276
 AverageAndExtrapolate.C:277
 AverageAndExtrapolate.C:278
 AverageAndExtrapolate.C:279
 AverageAndExtrapolate.C:280
 AverageAndExtrapolate.C:281
 AverageAndExtrapolate.C:282
 AverageAndExtrapolate.C:283
 AverageAndExtrapolate.C:284
 AverageAndExtrapolate.C:285
 AverageAndExtrapolate.C:286
 AverageAndExtrapolate.C:287
 AverageAndExtrapolate.C:288
 AverageAndExtrapolate.C:289
 AverageAndExtrapolate.C:290
 AverageAndExtrapolate.C:291
 AverageAndExtrapolate.C:292
 AverageAndExtrapolate.C:293
 AverageAndExtrapolate.C:294
 AverageAndExtrapolate.C:295
 AverageAndExtrapolate.C:296
 AverageAndExtrapolate.C:297
 AverageAndExtrapolate.C:298
 AverageAndExtrapolate.C:299
 AverageAndExtrapolate.C:300
 AverageAndExtrapolate.C:301
 AverageAndExtrapolate.C:302
 AverageAndExtrapolate.C:303
 AverageAndExtrapolate.C:304
 AverageAndExtrapolate.C:305
 AverageAndExtrapolate.C:306
 AverageAndExtrapolate.C:307
 AverageAndExtrapolate.C:308
 AverageAndExtrapolate.C:309
 AverageAndExtrapolate.C:310
 AverageAndExtrapolate.C:311
 AverageAndExtrapolate.C:312
 AverageAndExtrapolate.C:313
 AverageAndExtrapolate.C:314
 AverageAndExtrapolate.C:315
 AverageAndExtrapolate.C:316
 AverageAndExtrapolate.C:317
 AverageAndExtrapolate.C:318
 AverageAndExtrapolate.C:319
 AverageAndExtrapolate.C:320
 AverageAndExtrapolate.C:321
 AverageAndExtrapolate.C:322
 AverageAndExtrapolate.C:323
 AverageAndExtrapolate.C:324
 AverageAndExtrapolate.C:325
 AverageAndExtrapolate.C:326
 AverageAndExtrapolate.C:327
 AverageAndExtrapolate.C:328
 AverageAndExtrapolate.C:329
 AverageAndExtrapolate.C:330
 AverageAndExtrapolate.C:331
 AverageAndExtrapolate.C:332
 AverageAndExtrapolate.C:333
 AverageAndExtrapolate.C:334
 AverageAndExtrapolate.C:335
 AverageAndExtrapolate.C:336
 AverageAndExtrapolate.C:337
 AverageAndExtrapolate.C:338
 AverageAndExtrapolate.C:339
 AverageAndExtrapolate.C:340
 AverageAndExtrapolate.C:341
 AverageAndExtrapolate.C:342
 AverageAndExtrapolate.C:343
 AverageAndExtrapolate.C:344
 AverageAndExtrapolate.C:345
 AverageAndExtrapolate.C:346
 AverageAndExtrapolate.C:347
 AverageAndExtrapolate.C:348
 AverageAndExtrapolate.C:349
 AverageAndExtrapolate.C:350
 AverageAndExtrapolate.C:351
 AverageAndExtrapolate.C:352
 AverageAndExtrapolate.C:353
 AverageAndExtrapolate.C:354
 AverageAndExtrapolate.C:355
 AverageAndExtrapolate.C:356
 AverageAndExtrapolate.C:357
 AverageAndExtrapolate.C:358
 AverageAndExtrapolate.C:359
 AverageAndExtrapolate.C:360
 AverageAndExtrapolate.C:361
 AverageAndExtrapolate.C:362
 AverageAndExtrapolate.C:363
 AverageAndExtrapolate.C:364
 AverageAndExtrapolate.C:365
 AverageAndExtrapolate.C:366
 AverageAndExtrapolate.C:367
 AverageAndExtrapolate.C:368
 AverageAndExtrapolate.C:369
 AverageAndExtrapolate.C:370
 AverageAndExtrapolate.C:371
 AverageAndExtrapolate.C:372
 AverageAndExtrapolate.C:373
 AverageAndExtrapolate.C:374
 AverageAndExtrapolate.C:375
 AverageAndExtrapolate.C:376
 AverageAndExtrapolate.C:377
 AverageAndExtrapolate.C:378
 AverageAndExtrapolate.C:379
 AverageAndExtrapolate.C:380
 AverageAndExtrapolate.C:381
 AverageAndExtrapolate.C:382
 AverageAndExtrapolate.C:383
 AverageAndExtrapolate.C:384
 AverageAndExtrapolate.C:385
 AverageAndExtrapolate.C:386
 AverageAndExtrapolate.C:387
 AverageAndExtrapolate.C:388
 AverageAndExtrapolate.C:389
 AverageAndExtrapolate.C:390
 AverageAndExtrapolate.C:391
 AverageAndExtrapolate.C:392
 AverageAndExtrapolate.C:393
 AverageAndExtrapolate.C:394
 AverageAndExtrapolate.C:395
 AverageAndExtrapolate.C:396
 AverageAndExtrapolate.C:397
 AverageAndExtrapolate.C:398
 AverageAndExtrapolate.C:399
 AverageAndExtrapolate.C:400
 AverageAndExtrapolate.C:401
 AverageAndExtrapolate.C:402
 AverageAndExtrapolate.C:403
 AverageAndExtrapolate.C:404
 AverageAndExtrapolate.C:405
 AverageAndExtrapolate.C:406
 AverageAndExtrapolate.C:407
 AverageAndExtrapolate.C:408
 AverageAndExtrapolate.C:409
 AverageAndExtrapolate.C:410
 AverageAndExtrapolate.C:411
 AverageAndExtrapolate.C:412
 AverageAndExtrapolate.C:413
 AverageAndExtrapolate.C:414
 AverageAndExtrapolate.C:415
 AverageAndExtrapolate.C:416
 AverageAndExtrapolate.C:417
 AverageAndExtrapolate.C:418
 AverageAndExtrapolate.C:419
 AverageAndExtrapolate.C:420
 AverageAndExtrapolate.C:421
 AverageAndExtrapolate.C:422
 AverageAndExtrapolate.C:423
 AverageAndExtrapolate.C:424
 AverageAndExtrapolate.C:425
 AverageAndExtrapolate.C:426
 AverageAndExtrapolate.C:427
 AverageAndExtrapolate.C:428
 AverageAndExtrapolate.C:429
 AverageAndExtrapolate.C:430
 AverageAndExtrapolate.C:431
 AverageAndExtrapolate.C:432
 AverageAndExtrapolate.C:433
 AverageAndExtrapolate.C:434
 AverageAndExtrapolate.C:435
 AverageAndExtrapolate.C:436
 AverageAndExtrapolate.C:437
 AverageAndExtrapolate.C:438
 AverageAndExtrapolate.C:439
 AverageAndExtrapolate.C:440
 AverageAndExtrapolate.C:441
 AverageAndExtrapolate.C:442
 AverageAndExtrapolate.C:443
 AverageAndExtrapolate.C:444
 AverageAndExtrapolate.C:445
 AverageAndExtrapolate.C:446
 AverageAndExtrapolate.C:447
 AverageAndExtrapolate.C:448
 AverageAndExtrapolate.C:449
 AverageAndExtrapolate.C:450
 AverageAndExtrapolate.C:451
 AverageAndExtrapolate.C:452
 AverageAndExtrapolate.C:453
 AverageAndExtrapolate.C:454
 AverageAndExtrapolate.C:455
 AverageAndExtrapolate.C:456
 AverageAndExtrapolate.C:457
 AverageAndExtrapolate.C:458
 AverageAndExtrapolate.C:459
 AverageAndExtrapolate.C:460
 AverageAndExtrapolate.C:461
 AverageAndExtrapolate.C:462
 AverageAndExtrapolate.C:463
 AverageAndExtrapolate.C:464
 AverageAndExtrapolate.C:465
 AverageAndExtrapolate.C:466
 AverageAndExtrapolate.C:467
 AverageAndExtrapolate.C:468
 AverageAndExtrapolate.C:469
 AverageAndExtrapolate.C:470
 AverageAndExtrapolate.C:471
 AverageAndExtrapolate.C:472
 AverageAndExtrapolate.C:473
 AverageAndExtrapolate.C:474
 AverageAndExtrapolate.C:475
 AverageAndExtrapolate.C:476
 AverageAndExtrapolate.C:477
 AverageAndExtrapolate.C:478
 AverageAndExtrapolate.C:479
 AverageAndExtrapolate.C:480
 AverageAndExtrapolate.C:481
 AverageAndExtrapolate.C:482
 AverageAndExtrapolate.C:483
 AverageAndExtrapolate.C:484
 AverageAndExtrapolate.C:485
 AverageAndExtrapolate.C:486
 AverageAndExtrapolate.C:487
 AverageAndExtrapolate.C:488
 AverageAndExtrapolate.C:489
 AverageAndExtrapolate.C:490
 AverageAndExtrapolate.C:491
 AverageAndExtrapolate.C:492
 AverageAndExtrapolate.C:493
 AverageAndExtrapolate.C:494
 AverageAndExtrapolate.C:495
 AverageAndExtrapolate.C:496
 AverageAndExtrapolate.C:497
 AverageAndExtrapolate.C:498
 AverageAndExtrapolate.C:499
 AverageAndExtrapolate.C:500
 AverageAndExtrapolate.C:501
 AverageAndExtrapolate.C:502
 AverageAndExtrapolate.C:503
 AverageAndExtrapolate.C:504
 AverageAndExtrapolate.C:505
 AverageAndExtrapolate.C:506
 AverageAndExtrapolate.C:507
 AverageAndExtrapolate.C:508
 AverageAndExtrapolate.C:509
 AverageAndExtrapolate.C:510
 AverageAndExtrapolate.C:511
 AverageAndExtrapolate.C:512
 AverageAndExtrapolate.C:513
 AverageAndExtrapolate.C:514
 AverageAndExtrapolate.C:515
 AverageAndExtrapolate.C:516
 AverageAndExtrapolate.C:517
 AverageAndExtrapolate.C:518
 AverageAndExtrapolate.C:519
 AverageAndExtrapolate.C:520
 AverageAndExtrapolate.C:521
 AverageAndExtrapolate.C:522
 AverageAndExtrapolate.C:523
 AverageAndExtrapolate.C:524
 AverageAndExtrapolate.C:525
 AverageAndExtrapolate.C:526
 AverageAndExtrapolate.C:527
 AverageAndExtrapolate.C:528
 AverageAndExtrapolate.C:529
 AverageAndExtrapolate.C:530
 AverageAndExtrapolate.C:531
 AverageAndExtrapolate.C:532
 AverageAndExtrapolate.C:533
 AverageAndExtrapolate.C:534
 AverageAndExtrapolate.C:535
 AverageAndExtrapolate.C:536
 AverageAndExtrapolate.C:537
 AverageAndExtrapolate.C:538
 AverageAndExtrapolate.C:539
 AverageAndExtrapolate.C:540
 AverageAndExtrapolate.C:541
 AverageAndExtrapolate.C:542
 AverageAndExtrapolate.C:543
 AverageAndExtrapolate.C:544
 AverageAndExtrapolate.C:545
 AverageAndExtrapolate.C:546
 AverageAndExtrapolate.C:547
 AverageAndExtrapolate.C:548
 AverageAndExtrapolate.C:549
 AverageAndExtrapolate.C:550
 AverageAndExtrapolate.C:551
 AverageAndExtrapolate.C:552
 AverageAndExtrapolate.C:553
 AverageAndExtrapolate.C:554
 AverageAndExtrapolate.C:555
 AverageAndExtrapolate.C:556
 AverageAndExtrapolate.C:557
 AverageAndExtrapolate.C:558
 AverageAndExtrapolate.C:559
 AverageAndExtrapolate.C:560
 AverageAndExtrapolate.C:561
 AverageAndExtrapolate.C:562
 AverageAndExtrapolate.C:563
 AverageAndExtrapolate.C:564
 AverageAndExtrapolate.C:565
 AverageAndExtrapolate.C:566
 AverageAndExtrapolate.C:567
 AverageAndExtrapolate.C:568
 AverageAndExtrapolate.C:569
 AverageAndExtrapolate.C:570
 AverageAndExtrapolate.C:571
 AverageAndExtrapolate.C:572
 AverageAndExtrapolate.C:573
 AverageAndExtrapolate.C:574
 AverageAndExtrapolate.C:575
 AverageAndExtrapolate.C:576
 AverageAndExtrapolate.C:577
 AverageAndExtrapolate.C:578
 AverageAndExtrapolate.C:579
 AverageAndExtrapolate.C:580
 AverageAndExtrapolate.C:581
 AverageAndExtrapolate.C:582
 AverageAndExtrapolate.C:583
 AverageAndExtrapolate.C:584
 AverageAndExtrapolate.C:585
 AverageAndExtrapolate.C:586
 AverageAndExtrapolate.C:587
 AverageAndExtrapolate.C:588
 AverageAndExtrapolate.C:589
 AverageAndExtrapolate.C:590
 AverageAndExtrapolate.C:591
 AverageAndExtrapolate.C:592
 AverageAndExtrapolate.C:593
 AverageAndExtrapolate.C:594
 AverageAndExtrapolate.C:595
 AverageAndExtrapolate.C:596
 AverageAndExtrapolate.C:597
 AverageAndExtrapolate.C:598
 AverageAndExtrapolate.C:599
 AverageAndExtrapolate.C:600
 AverageAndExtrapolate.C:601
 AverageAndExtrapolate.C:602
 AverageAndExtrapolate.C:603
 AverageAndExtrapolate.C:604
 AverageAndExtrapolate.C:605
 AverageAndExtrapolate.C:606
 AverageAndExtrapolate.C:607
 AverageAndExtrapolate.C:608
 AverageAndExtrapolate.C:609
 AverageAndExtrapolate.C:610
 AverageAndExtrapolate.C:611
 AverageAndExtrapolate.C:612
 AverageAndExtrapolate.C:613
 AverageAndExtrapolate.C:614
 AverageAndExtrapolate.C:615
 AverageAndExtrapolate.C:616
 AverageAndExtrapolate.C:617
 AverageAndExtrapolate.C:618
 AverageAndExtrapolate.C:619
 AverageAndExtrapolate.C:620
 AverageAndExtrapolate.C:621
 AverageAndExtrapolate.C:622
 AverageAndExtrapolate.C:623
 AverageAndExtrapolate.C:624
 AverageAndExtrapolate.C:625
 AverageAndExtrapolate.C:626
 AverageAndExtrapolate.C:627
 AverageAndExtrapolate.C:628
 AverageAndExtrapolate.C:629