ROOT logo
Char_t *itssafilename  = "SPECTRA_ITSsa.root";
Char_t *itstpcfilename = "SPECTRA_ITSTPC_V2.root";
Char_t *tpctoffilename = "SPECTRA_TPCTOF.root";
Char_t *toffilename    = "SPECTRA_TOF.root";
Char_t *hydrofilename  = "HydroSpectra.root";

Char_t *itssaratiofilename  = "SPECTRA_ITSsa.root";
Char_t *itstpcratiofilename = "RATIOS_ITSTPC_V2.root";
Char_t *tpctofratiofilenameA = "RATIOSa_TPCTOF.root";
Char_t *tpctofratiofilenameB = "RATIOSb_TPCTOF.root";
Char_t *tofratiofilename    = "RATIOS_TOF.root";

const Int_t NptBins = 52;
Double_t ptBin[NptBins + 1] = {0.05, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0};

Double_t ptMin[5] = {0., 0., 0., 0., 0.};
Double_t ptMax[5] = {0., 0., 3.0, 3., 5.};

Char_t *centName[10] = {
  "0-5%",
  "5-10%",
  "10-20%",
  "20-30%",
  "30-40%",
  "40-50%",
  "50-60%",
  "60-70%",
  "70-80%",
  "80-90%"
};

Char_t *chargeName[2] = {"plus", "minus"};

Char_t *partChargeName[5][2] = {
  "", "",
  "", "",
  "#pi^{+}", "#pi^{-}",
  "K^{+}", "K^{-}",
  "p", "#bar{p}"
};

enum EPart_t {
  kPi, kPiPlus, kPiMinus,
  kKa, kKaPlus, kKaMinus,
  kPr, kPrPlus, kPrMinus
};

Char_t *ratioName[9] = {
  "pion", "pion_positive", "pion_negative",
  "kaon", "kaon_positive", "kaon_negative",
  "proton", "proton_positive", "proton_negative"
};

//______________________________________________________________

LoadLibraries()
{

  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libCORRFW");
  //  gSystem->Load("libPWG2");
  gSystem->Load("libPWG2spectra");

}

//______________________________________________________________
//______________________________________________________________

Char_t *ITSsaPartName[5] = {"", "", "Pion", "Kaon", "Proton"};
Char_t *ITSsaChargeName[2] = {"Pos", "Neg"};
TH1D *
GetITSsaSpectrum(TFile *file, Int_t part, Int_t charge, Int_t cent, Bool_t cutSpectrum = kTRUE, Bool_t addSystematicError = kTRUE)
{
  /* pt limits for combined spectra */
  Double_t ptMin[AliPID::kSPECIES] = {0., 0., 0.1, 0.2, 0.3};
  Double_t ptMax[AliPID::kSPECIES] = {0., 0., 0.6, 0.5, 0.6};

  TList *list = (TList *)file->Get("output");
  TH1D *hin = (TH1D *)list->FindObject(Form("h_%s_%s_cen_%d", ITSsaPartName[part], ITSsaChargeName[charge], cent));
  if (!hin) return NULL;  

  /* get systematics */
  TFile *fsys = TFile::Open("SPECTRASYS_ITSsa.root");
  TH1 *hsys = fsys->Get(Form("hSystTot%s%s", ITSsaChargeName[charge], ITSsaPartName[part]));
			
  TH1D *h = new TH1D(Form("hITSsa_cent%d_%s_%s", cent, AliPID::ParticleName(part), chargeName[charge]), "ITSsa", NptBins, ptBin);
  Double_t pt, width, value, error, sys;
  Int_t bin;
  for (Int_t ipt = 0; ipt < NptBins; ipt++) {
    /* get input bin */
    pt = h->GetBinCenter(ipt + 1);
    width = h->GetBinWidth(ipt + 1);
    bin = hin->FindBin(pt);
    /* sanity check */
    if (TMath::Abs(hin->GetBinCenter(bin) - pt) > 0.001 ||
	TMath::Abs(hin->GetBinWidth(bin) - width) > 0.001)
      continue;
    /* check pt limits */
    if (cutSpectrum && (pt < ptMin[part] || pt > ptMax[part])) continue;
    /* copy bin */
    value = hin->GetBinContent(bin);
    error = hin->GetBinError(bin);
    /*** TEMP ADD SYS ***/
    if (addSystematicError) {
      sys = hsys->GetBinContent(bin) * value;
      error = TMath::Sqrt(error * error + sys * sys);
    }
    h->SetBinContent(ipt + 1, value);
    h->SetBinError(ipt + 1, error);
  }

  h->SetTitle("ITSsa");
  h->SetLineWidth(1);
  h->SetLineColor(1);
  h->SetMarkerStyle(20);
  h->SetMarkerColor(1);
  h->SetFillStyle(0);
  h->SetFillColor(0);

  return h;
}

//______________________________________________________________

TH1D *
GetITSsaRatio(TFile *file, Int_t num, Int_t den, Int_t cent, Bool_t cutSpectrum = kTRUE, Bool_t addSystematicError = kTRUE)
{
  /* pt limits for combined spectra */
  //  Double_t ptMin[AliPID::kSPECIES] = {0., 0., 0.1, 0.2, 0.3};
  //  Double_t ptMax[AliPID::kSPECIES] = {0., 0., 0.6, 0.5, 0.6};

  TH1 *hnum, *hden;
  Double_t ptMin = 0., ptMax = 10.;
  switch (num) {
  case kPiMinus:
    ptMin = TMath::Min(ptMin, 0.1);
    ptMax = TMath::Min(ptMax, 0.6);
    hnum = GetITSsaSpectrum(file, AliPID::kPion, 1, cent, kFALSE, kFALSE);
    break;
  case kPiPlus:
    ptMin = TMath::Min(ptMin, 0.1);
    ptMax = TMath::Min(ptMax, 0.6);
    hnum = GetITSsaSpectrum(file, AliPID::kPion, 0, cent, kFALSE, kFALSE);
    break;
  case kPi:
    ptMin = TMath::Min(ptMin, 0.1);
    ptMax = TMath::Min(ptMax, 0.6);
    hnum = GetITSsaSpectrum(file, AliPID::kPion, 1, cent, kFALSE, kFALSE);
    hnum->Add(GetITSsaSpectrum(file, AliPID::kPion, 0, cent, kFALSE, kFALSE));
    break;
  case kKaMinus:
    ptMin = TMath::Min(ptMin, 0.2);
    ptMax = TMath::Min(ptMax, 0.5);
    hnum = GetITSsaSpectrum(file, AliPID::kKaon, 1, cent, kFALSE, kFALSE);
    break;
  case kKaPlus:
    ptMin = TMath::Min(ptMin, 0.2);
    ptMax = TMath::Min(ptMax, 0.5);
    hnum = GetITSsaSpectrum(file, AliPID::kKaon, 0, cent, kFALSE, kFALSE);
    break;
  case kKa:
    ptMin = TMath::Min(ptMin, 0.2);
    ptMax = TMath::Min(ptMax, 0.5);
    hnum = GetITSsaSpectrum(file, AliPID::kKaon, 1, cent, kFALSE, kFALSE);
    hnum->Add(GetITSsaSpectrum(file, AliPID::kKaon, 0, cent, kFALSE, kFALSE));
    break;
  case kPrMinus:
    ptMin = TMath::Min(ptMin, 0.3);
    ptMax = TMath::Min(ptMax, 0.6);
    hnum = GetITSsaSpectrum(file, AliPID::kProton, 1, cent, kFALSE, kFALSE);
    break;
  case kPrPlus:
    ptMin = TMath::Min(ptMin, 0.3);
    ptMax = TMath::Min(ptMax, 0.6);
    hnum = GetITSsaSpectrum(file, AliPID::kProton, 0, cent, kFALSE, kFALSE);
    break;
  case kPr:
    ptMin = TMath::Min(ptMin, 0.3);
    ptMax = TMath::Min(ptMax, 0.6);
    hnum = GetITSsaSpectrum(file, AliPID::kProton, 1, cent, kFALSE, kFALSE);
    hnum->Add(GetITSsaSpectrum(file, AliPID::kProton, 0, cent, kFALSE, kFALSE));
    break;
  }
  switch (den) {
  case kPiMinus:
    ptMin = TMath::Max(ptMin, 0.1);
    ptMax = TMath::Min(ptMax, 0.6);
    hden = GetITSsaSpectrum(file, AliPID::kPion, 1, cent, kFALSE, kFALSE);
    break;
  case kPiPlus:
    ptMin = TMath::Max(ptMin, 0.1);
    ptMax = TMath::Min(ptMax, 0.6);
    hden = GetITSsaSpectrum(file, AliPID::kPion, 0, cent, kFALSE, kFALSE);
    break;
  case kPi:
    ptMin = TMath::Max(ptMin, 0.1);
    ptMax = TMath::Min(ptMax, 0.6);
    hden = GetITSsaSpectrum(file, AliPID::kPion, 1, cent, kFALSE, kFALSE);
    hden->Add(GetITSsaSpectrum(file, AliPID::kPion, 0, cent, kFALSE, kFALSE));
    break;
  case kKaMinus:
    ptMin = TMath::Max(ptMin, 0.2);
    ptMax = TMath::Min(ptMax, 0.5);
    hden = GetITSsaSpectrum(file, AliPID::kKaon, 1, cent, kFALSE, kFALSE);
    break;
  case kKaPlus:
    ptMin = TMath::Max(ptMin, 0.2);
    ptMax = TMath::Min(ptMax, 0.5);
    hden = GetITSsaSpectrum(file, AliPID::kKaon, 0, cent, kFALSE, kFALSE);
    break;
  case kKa:
    ptMin = TMath::Max(ptMin, 0.2);
    ptMax = TMath::Min(ptMax, 0.5);
    hden = GetITSsaSpectrum(file, AliPID::kKaon, 1, cent, kFALSE, kFALSE);
    hden->Add(GetITSsaSpectrum(file, AliPID::kKaon, 0, cent, kFALSE, kFALSE));
    break;
  case kPrMinus:
    ptMin = TMath::Max(ptMin, 0.3);
    ptMax = TMath::Min(ptMax, 0.6);
    hden = GetITSsaSpectrum(file, AliPID::kProton, 1, cent, kFALSE, kFALSE);
    break;
  case kPrPlus:
    ptMin = TMath::Max(ptMin, 0.3);
    ptMax = TMath::Min(ptMax, 0.6);
    hden = GetITSsaSpectrum(file, AliPID::kProton, 0, cent, kFALSE, kFALSE);
    break;
  case kPr:
    ptMin = TMath::Max(ptMin, 0.3);
    ptMax = TMath::Min(ptMax, 0.6);
    hden = GetITSsaSpectrum(file, AliPID::kProton, 1, cent, kFALSE, kFALSE);
    hden->Add(GetITSsaSpectrum(file, AliPID::kProton, 0, cent, kFALSE, kFALSE));
    break;
  }

  if (!hnum || !hden) return NULL;  

  Char_t sysname[1024];
  if (num == kPiMinus && den == kPiPlus)
    sprintf(sysname, "Pi_Pos2Neg");
  else if (num == kKaMinus && den == kKaPlus)
    sprintf(sysname, "K_Pos2Neg");
  else if (num == kPrMinus && den == kPrPlus)
    sprintf(sysname, "P_Pos2Neg");
  else if ((num == kKa || num == kKaPlus || num == kKaMinus)
	   && (den == kPi || den == kPiPlus || den == kPiMinus))
    sprintf(sysname, "K2Pi");
  else if ((num == kPr || num == kPrPlus || num == kPrMinus)
	   && (den == kPi || den == kPiPlus || den == kPiMinus))
    sprintf(sysname, "P2Pi");

  TH1D *hin = (TH1D *)hnum->Clone("hin");
  hin->Divide(hden);

  /* get systematics */
  TFile *fsys = TFile::Open("RATIOSYS_ITSsa.root");
  TH1 *hsys = fsys->Get(Form("hSystTot%s", sysname));
			
  TH1D *h = new TH1D(Form("hITSsa_cent%d_%s_%s", cent, ratioName[num], ratioName[den]), "ITSsa", NptBins, ptBin);
  Double_t pt, width, value, error, sys;
  Int_t bin;
  for (Int_t ipt = 0; ipt < NptBins; ipt++) {
    /* get input bin */
    pt = h->GetBinCenter(ipt + 1);
    width = h->GetBinWidth(ipt + 1);
    bin = hin->FindBin(pt);
    /* sanity check */
    if (TMath::Abs(hin->GetBinCenter(bin) - pt) > 0.001 ||
	TMath::Abs(hin->GetBinWidth(bin) - width) > 0.001) {
      //      printf("skipping %f because of sanity checks\n", pt);
      continue;
    }
    /* check pt limits */
    if (cutSpectrum && (pt < ptMin || pt > ptMax)) {
      //      printf("skipping %f because of limits\n", pt);
      continue;
    }
    /* copy bin */
    value = hin->GetBinContent(bin);
    error = hin->GetBinError(bin);
    /*** TEMP ADD SYS ***/
    if (addSystematicError) {
      sys = hsys->GetBinContent(bin) * value;
      error = TMath::Sqrt(error * error + sys * sys);
    }
    h->SetBinContent(ipt + 1, value);
    h->SetBinError(ipt + 1, error);
  }

  h->SetTitle("ITSsa");
  h->SetLineWidth(1);
  h->SetLineColor(1);
  h->SetMarkerStyle(20);
  h->SetMarkerColor(1);
  h->SetFillStyle(0);
  h->SetFillColor(0);
  return h;
}

//______________________________________________________________

Char_t *ITSTPCPartName[5] = {"", "", "Pion", "Kaon", "Proton"};
Char_t *ITSTPCChargeName[2] = {"Pos", "Neg"};
TH1D *
GetITSTPCSpectrum(TFile *file, Int_t part, Int_t charge, Int_t cent)
{
  TList *list = (TList *)file->Get("output");
  TH1D *hin = (TH1D *)list->FindObject(Form("h_%s_%s_cen_%d", ITSTPCPartName[part], ITSTPCChargeName[charge], cent + 1));
  if (!hin) return NULL;

  TH1D *h = new TH1D(Form("hITSTPC_cent%d_%s_%s", cent, AliPID::ParticleName(part), chargeName[charge]), "ITSTPC", NptBins, ptBin);
  Double_t pt, width, value, error;
  Int_t bin;
  for (Int_t ipt = 0; ipt < NptBins; ipt++) {
    /* get input bin */
    pt = h->GetBinCenter(ipt + 1);
    width = h->GetBinWidth(ipt + 1);
    bin = hin->FindBin(pt);
    /* sanity check */
    if (TMath::Abs(hin->GetBinCenter(bin) - pt) > 0.001 ||
	TMath::Abs(hin->GetBinWidth(bin) - width) > 0.001)
      continue;
    /* copy bin */
    value = hin->GetBinContent(bin);
    error = hin->GetBinError(bin);
    h->SetBinContent(ipt + 1, value);
    h->SetBinError(ipt + 1, error);
  }
  
#if 0
  /* add systematic error */
  Double_t sys;
  if (part == 2) sys = 0.5;
  else sys = 0.1;
  Double_t cont, conte;
  for (Int_t ipt = 0; ipt < h->GetNbinsX(); ipt++) {
    cont = h->GetBinContent(ipt + 1);
    conte = h->GetBinError(ipt + 1);
    conte = TMath::Sqrt(conte * conte + sys * sys * cont * cont);
    h->SetBinError(ipt + 1, conte);
  }
#endif
  
  h->SetTitle("ITSTPC");
  h->SetLineWidth(1);
  h->SetLineColor(1);
  h->SetMarkerStyle(21);
  h->SetMarkerColor(2);
  h->SetFillStyle(0);
  h->SetFillColor(0);
  return h;
}

//______________________________________________________________
//______________________________________________________________

Char_t *TPCTOFPartName[5] = {"", "", "pion", "kaon", "proton"};
Char_t *TPCTOFChargeName[2] = {"Pos", "Neg"};
TH1D *
GetTPCTOFSpectrum(TFile *file, Int_t part, Int_t charge, Int_t cent, Bool_t cutSpectrum = kTRUE)
{
  /* pt limits for combined spectra */
  Double_t ptMin[AliPID::kSPECIES] = {0., 0., 0., 0., 0.};
  Double_t ptMax[AliPID::kSPECIES] = {0., 0., 1.2, 1.2, 1.8};

  TH1D *hin = (TH1D *)file->Get(Form("%sFinal%s%d", TPCTOFPartName[part], TPCTOFChargeName[charge], cent));
  if (!hin) return NULL;

  TH1D *h = new TH1D(Form("hTPCTOF_cent%d_%s_%s", cent, AliPID::ParticleName(part), chargeName[charge]), "TPCTOF", NptBins, ptBin);
  Double_t pt, width, value, error;
  Int_t bin;
  for (Int_t ipt = 0; ipt < NptBins; ipt++) {
    /* get input bin */
    pt = h->GetBinCenter(ipt + 1);
    width = h->GetBinWidth(ipt + 1);
    bin = hin->FindBin(pt);
    /* sanity check */
    if (TMath::Abs(hin->GetBinCenter(bin) - pt) > 0.001 ||
	TMath::Abs(hin->GetBinWidth(bin) - width) > 0.001)
      continue;
    /* check pt limits */
    if (cutSpectrum && (pt < ptMin[part] || pt > ptMax[part])) continue;
    /* copy bin */
    value = hin->GetBinContent(bin);
    error = hin->GetBinError(bin);
    h->SetBinContent(ipt + 1, value);
    h->SetBinError(ipt + 1, error);
  }
  
  h->SetTitle("TPCTOF");
  h->SetLineWidth(1);
  h->SetLineColor(1);
  h->SetMarkerStyle(22);
  h->SetMarkerColor(8);
  h->SetFillStyle(0);
  h->SetFillColor(0);
  
  return h;
}

//______________________________________________________________

TH1D *
GetTPCTOFRatio(TFile *file, Int_t num, Int_t den, Int_t cent, Bool_t cutSpectrum = kTRUE)
{
  /* pt limits for combined spectra */
  Double_t ptMin_[9] = {
    0.0, 0.0, 0.0, 
    0., 0., 0., 
    0.5, 0.5, 0.5
  };
  Double_t ptMax_[9] = {
    1.2, 1.2, 1.2, 
    1.2, 1.2, 1.2, 
    1.8, 1.8, 1.8
  };

  Double_t ptMin = TMath::Max(ptMin_[num], ptMin_[den]);
  Double_t ptMax = TMath::Min(ptMax_[num], ptMax_[den]);

  Int_t part = 0, charge = 0;
  if (num == kPiMinus && den == kPiPlus) {
    part = AliPID::kPion;
    charge = 1;
  }
  else if (num == kKaMinus && den == kKaPlus) {
    part = AliPID::kKaon;
    charge = 1;
  }
  else if (num == kPrMinus && den == kPrPlus) {
    part = AliPID::kProton;
    charge = 1;
  }
  else if (num == kKaMinus && den == kPiMinus) {
    part = AliPID::kKaon;
    charge = 1;
  }
  else if (num == kKaPlus && den == kPiPlus) {
    part = AliPID::kKaon;
    charge = 0;
  }
  else if (num == kPrMinus && den == kPiMinus) {
    part = AliPID::kProton;
    charge = 1;
  }
  else if (num == kPrPlus && den == kPiPlus) {
    part = AliPID::kProton;
    charge = 0;
  }

  TH1D *hin = (TH1D *)file->Get(Form("%sFinal%s%d", TPCTOFPartName[part], TPCTOFChargeName[charge], cent));
  if (!hin) return NULL;

  TH1D *h = new TH1D(Form("hTPCTOF_cent%d_%s_%s", cent, ratioName[num], ratioName[den]), "TPCTOF", NptBins, ptBin);
  Double_t pt, width, value, error;
  Int_t bin;
  for (Int_t ipt = 0; ipt < NptBins; ipt++) {
    /* get input bin */
    pt = h->GetBinCenter(ipt + 1);
    width = h->GetBinWidth(ipt + 1);
    bin = hin->FindBin(pt);
    /* sanity check */
    if (TMath::Abs(hin->GetBinCenter(bin) - pt) > 0.001 ||
	TMath::Abs(hin->GetBinWidth(bin) - width) > 0.001)
      continue;
    /* check pt limits */
    if (cutSpectrum && (pt < ptMin || pt > ptMax)) continue;
    /* copy bin */
    value = hin->GetBinContent(bin);
    error = hin->GetBinError(bin);
    h->SetBinContent(ipt + 1, value);
    h->SetBinError(ipt + 1, error);
  }
  
  h->SetTitle("TPCTOF");
  h->SetLineWidth(1);
  h->SetLineColor(1);
  h->SetMarkerStyle(22);
  h->SetMarkerColor(8);
  h->SetFillStyle(0);
  h->SetFillColor(0);
  
  return h;
}

//______________________________________________________________
//______________________________________________________________

Char_t *TOFPartName[5] = {"", "", "pion", "kaon", "proton"};
Char_t *TOFChargeName[2] = {"positive", "negative"};
TH1D *
GetTOFSpectrum(TFile *file, Int_t part, Int_t charge, Int_t cent, Bool_t cutSpectrum = kTRUE)
{
  /* pt limits for combined spectra */
  Double_t ptMin[AliPID::kSPECIES] = {0., 0., 0.5, 0.45, 0.5};
  Double_t ptMax[AliPID::kSPECIES] = {0., 0., 3.0, 3.0, 4.5};

  TH1D *hin = (TH1D *)file->Get(Form("hFinal_cent%d_%s_%s", cent, TOFPartName[part], TOFChargeName[charge]));
  if (!hin) return NULL;

  /* get matching systematics */
  TFile *fsys = TFile::Open(Form("MATCHSYS_TOF_%s.root", TOFChargeName[charge]));
  TH1 *hsys = fsys->Get(Form("hErr%sMatch", ITSsaPartName[part]));
  TF1 *ffsys = new TF1("fsys", "[0] + [1] * x + [2] * TMath::Exp(-[3] * x)");
  ffsys->SetParameter(0, 0.02);
  ffsys->FixParameter(1, 0.);
  ffsys->SetParameter(2, 0.5);
  ffsys->SetParameter(3, 10.);
  hsys->Fit(ffsys, "W");
  ffsys->ReleaseParameter(1);
  hsys->Fit(ffsys, "W");
  hsys->Fit(ffsys, "W");
  hsys->Fit(ffsys, "W");
  hsys->Draw();
			
  TH1D *h = new TH1D(Form("hTOF_cent%d_%s_%s", cent, AliPID::ParticleName(part), chargeName[charge]), "TOF", NptBins, ptBin);
  Double_t pt, width, value, error, sys;
  Int_t bin;
  for (Int_t ipt = 0; ipt < NptBins; ipt++) {
    /* get input bin */
    pt = h->GetBinCenter(ipt + 1);
    width = h->GetBinWidth(ipt + 1);
    bin = hin->FindBin(pt);
    /* sanity check */
    if (TMath::Abs(hin->GetBinCenter(bin) - pt) > 0.001 ||
	TMath::Abs(hin->GetBinWidth(bin) - width) > 0.001)
      continue;
    /* check pt limits */
    if (cutSpectrum && (pt < ptMin[part] || pt > ptMax[part])) continue;
    /* copy bin */
    value = hin->GetBinContent(bin);
    error = hin->GetBinError(bin);
    /*** TEMP ADD SYS ***/
    sys = ffsys->Eval(pt) * value;
    error = TMath::Sqrt(error * error + sys * sys);
    h->SetBinContent(ipt + 1, value);
    h->SetBinError(ipt + 1, error);

    h->SetBinContent(ipt + 1, value);
    h->SetBinError(ipt + 1, error);
  }
  
  h->SetTitle("TOF");
  h->SetLineWidth(1);
  h->SetLineColor(1);
  h->SetMarkerStyle(23);
  h->SetMarkerColor(4);
  h->SetFillStyle(0);
  h->SetFillColor(0);
  return h;
}

//______________________________________________________________

TH1D *
GetTOFRatio(TFile *file, Int_t num, Int_t den, Int_t cent, Bool_t cutSpectrum = kTRUE)
{
  /* pt limits for combined spectra */
  Double_t ptMin_[9] = {
    0.5, 0.5, 0.5, 
    0.45, 0.45, 0.45, 
    0.5, 0.5, 0.5
  };
  Double_t ptMax_[9] = {
    3.0, 3.0, 3.0, 
    3.0, 3.0, 3.0, 
    4.5, 4.5, 4.5
  };

  Double_t ptMin = TMath::Max(ptMin_[num], ptMin_[den]);
  Double_t ptMax = TMath::Min(ptMax_[num], ptMax_[den]);
  
  TH1D *hin = (TH1D *)file->Get(Form("hRatio_cent%d_%s_%s", cent, ratioName[num], ratioName[den]));
  if (!hin) return NULL;


#if 0
  /* get matching systematics */
  TFile *fsys = TFile::Open(Form("MATCHSYS_TOF_%s.root", TOFChargeName[charge]));
  TH1 *hsys = fsys->Get(Form("hErr%sMatch", ITSsaPartName[part]));
  TF1 *ffsys = new TF1("fsys", "[0] + [1] * x + [2] * TMath::Exp(-[3] * x)");
  ffsys->SetParameter(0, 0.02);
  ffsys->FixParameter(1, 0.);
  ffsys->SetParameter(2, 0.5);
  ffsys->SetParameter(3, 10.);
  hsys->Fit(ffsys, "W");
  ffsys->ReleaseParameter(1);
  hsys->Fit(ffsys, "W");
  hsys->Fit(ffsys, "W");
  hsys->Fit(ffsys, "W");
  hsys->Draw();
#endif
			
  TH1D *h = new TH1D(Form("hTOF_cent%d_%s_%s", cent, ratioName[num], ratioName[den]), "TOF", NptBins, ptBin);
  Double_t pt, width, value, error, sys;
  Int_t bin;
  for (Int_t ipt = 0; ipt < NptBins; ipt++) {
    /* get input bin */
    pt = h->GetBinCenter(ipt + 1);
    width = h->GetBinWidth(ipt + 1);
    bin = hin->FindBin(pt);
    /* sanity check */
    if (TMath::Abs(hin->GetBinCenter(bin) - pt) > 0.001 ||
	TMath::Abs(hin->GetBinWidth(bin) - width) > 0.001)
      continue;
    /* check pt limits */
    if (cutSpectrum && (pt < ptMin || pt > ptMax)) continue;
    /* copy bin */
    value = hin->GetBinContent(bin);
    error = hin->GetBinError(bin);
    /*** TEMP ADD SYS ***/
    //    sys = ffsys->Eval(pt) * value;
    //    error = TMath::Sqrt(error * error + sys * sys);
    //    h->SetBinContent(ipt + 1, value);
    //    h->SetBinError(ipt + 1, error);

    h->SetBinContent(ipt + 1, value);
    h->SetBinError(ipt + 1, error);
  }
  
  h->SetTitle("TOF");
  h->SetLineWidth(1);
  h->SetLineColor(1);
  h->SetMarkerStyle(23);
  h->SetMarkerColor(4);
  h->SetFillStyle(0);
  h->SetFillColor(0);
  return h;
}

//______________________________________________________________

Char_t *HydroPartName[5] = {"", "", "Pion", "Kaon", "Proton"};
TGraph *
GetHydroSpectrum(TFile *file, Int_t part, Int_t charge, Int_t cent)
{
  TGraph *h = (TGraph *)file->Get(Form("%s_C%d", HydroPartName[part], cent));
  if (!h) return NULL;
  h->SetTitle("Hydro");
  h->SetLineWidth(2);
  h->SetLineColor(kYellow+1);
  h->SetMarkerStyle(24);
  h->SetMarkerColor(kYellow+1);
  h->SetFillStyle(0);
  h->SetFillColor(0);
  return h;
}

//______________________________________________________________

AddPointsToGraph(TH1D *h, TGraphErrors *g)
{
  Int_t ipoint;
  for (Int_t ipt = 0; ipt < h->GetNbinsX(); ipt++) {
    if (h->GetBinError(ipt + 1) <= 0. || h->GetBinContent(ipt + 1) <= 0.) continue;
    ipoint = g->GetN();
    g->SetPoint(ipoint, h->GetBinCenter(ipt + 1), h->GetBinContent(ipt + 1));
    g->SetPointError(ipoint, 0.5 * h->GetBinWidth(ipt + 1), h->GetBinError(ipt + 1));
  }
}

//______________________________________________________________

AddPointsToProfile(TH1D *h, TProfile *p)
{
  for (Int_t ipt = 0; ipt < h->GetNbinsX(); ipt++) {
    if (h->GetBinError(ipt + 1) <= 0. || h->GetBinContent(ipt + 1) <= 0.) continue;
    p->Fill(h->GetBinCenter(ipt + 1), h->GetBinContent(ipt + 1));
  }
}

//______________________________________________________________

CombineSpectra(TH1D *h, TObjArray *oa)
{

  /* combine with weighted mean */
  Double_t ptcen, w, sumw, mean, meane, cont, conte, syse, tote, minvalue, maxvalue, maxerror, maxmindiff;
  Int_t ptbin;
  TH1D *hin;
  for (Int_t ipt = 0; ipt < h->GetNbinsX(); ipt++) {
    mean = 0.;
    sumw = 0.;
    minvalue = kMaxInt;
    maxvalue = 0.;
    maxerror = 0.;
    ptcen = h->GetBinCenter(ipt + 1);
    TProfile prof(Form("prof_%d", ipt), "", 1, 0., 1.); /* to get RMS */
    for (Int_t ih = 0; ih < oa->GetEntries(); ih++) {
      hin = (TH1D *)oa->At(ih);
      ptbin = hin->FindBin(ptcen);
      if (ptbin <= 0.) continue;
      cont = hin->GetBinContent(ptbin);
      conte = hin->GetBinError(ptbin);
      if (cont == 0. || conte == 0.)
	continue;
      w = 1. / (conte * conte);
      mean += cont * w;
      sumw += w;
      if (cont < minvalue)
	minvalue = cont;
      if (cont > maxvalue)
	maxvalue = cont;
      if (conte > maxerror)
	maxerror = conte;
      prof.Fill(0., cont);
    }
    if (sumw == 0.) {
      mean = 0.;
      meane = 0.;	
      syse = 0.;
      tote = 0.;
    }
    else {
      mean /= sumw;
      meane = TMath::Sqrt(1. / sumw);
      syse = 0.5 * (maxvalue -  minvalue);
      tote = TMath::Sqrt(meane * meane + syse * syse);
      //      if (tote < maxerror)
      //	tote = maxerror;
    }

    //    printf("pt = %f, mean = %f, meane = %f, syse = %f, tote = %f\n", ptcen, mean, meane, syse, tote);
    
    //    syse = prof.GetBinError(1);
    h->SetBinContent(ipt + 1, mean);
    h->SetBinError(ipt + 1, tote);
    //    h->SetBinError(ipt + 1, TMath::Sqrt(meane * meane + syse * syse + mean * mean * 0.1 * 0.1)); /* add extra 10% systematics */
  }

}

//______________________________________________________________

AntiparticleParticleRatio(Int_t part, Int_t cent, Bool_t cutSpectra = kTRUE)
{

  gStyle->SetOptStat(0);
  gStyle->SetOptFit();

  
  TFile *itssafile = TFile::Open(itssafilename);
  //  TFile *itstpcfile = TFile::Open(itstpcfilename);
  TFile *tpctoffile = TFile::Open(tpctoffilename);
  TFile *toffile = TFile::Open(toffilename);
  //  TFile *hydrofile = TFile::Open(hydrofilename);

  TCanvas *cCanvas = new TCanvas("cCanvas");
  if (cent == -1) cCanvas->Divide(5, 2);
  TCanvas *cCanvasCombined = new TCanvas("cCanvasCombined");
  if (cent == -1) cCanvasCombined->Divide(5, 2);
  TCanvas *cCanvasRatio = new TCanvas("cCanvasRatio");
  if (cent == -1) cCanvasRatio->Divide(5, 2);
  TCanvas *cCanvasRatioFit = new TCanvas("cCanvasRatioFit");
  if (cent == -1) cCanvasRatioFit->Divide(5, 2);
  TH1D *hITSsa[2], *hITSTPC[2], *hTPCTOF[2], *hTOF[2];
  TGraphErrors *gCombined[2][10];
  TProfile *pCombined[2][10];
  TH1D *hCombined[2][10];
  TH1D *hRatio_ITSsa[10];
  TH1D *hRatio_ITSTPC[10];
  TH1D *hRatio_TPCTOF[10];
  TH1D *hRatio_TOF[10];
  TH1D *hRatio_COMB[10];
  for (Int_t icent = 0; icent < 10; icent++) {
    
    if (cent != -1 && icent != cent) continue;
    
    for (Int_t icharge = 0; icharge < 2; icharge++) {
      gCombined[icharge][icent] = new TGraphErrors();
      pCombined[icharge][icent] = new TProfile(Form("pCombined_charge%d_cent%d", icharge, icent), "", NptBins, ptBin);
      hCombined[icharge][icent] = new TH1D(Form("hCombined_charge%d_cent%d", icharge, icent), "", NptBins, ptBin);
      TObjArray spectraArray;
      hITSsa[icharge] = GetITSsaSpectrum(itssafile, part, icharge, icent, cutSpectra);
      hITSTPC[icharge] = NULL;//GetITSTPCSpectrum(itstpcfile, part, icharge, icent, cutSpectra);
      hTPCTOF[icharge] = GetTPCTOFSpectrum(tpctoffile, part, icharge, icent, cutSpectra);
      hTOF[icharge] = GetTOFSpectrum(toffile, part, icharge, icent, cutSpectra);
      //    hHydro = GetHydroSpectrum(hydrofile, part, charge, icent);
      Double_t minimum = 0.;
      Double_t maximum = 0.;
      if (hITSsa[icharge]) {
	//	AddPointsToGraph(hITSsa[icharge], gCombined[icharge][icent]);
	//	AddPointsToProfile(hITSsa[icharge], pCombined[icharge][icent]);
	spectraArray.Add(hITSsa[icharge]);
	//	hITSsa[icharge]->DrawCopy("same");
	//	if (hITSsa[icharge]->GetMaximum() > maximum) maximum = hITSsa[icharge]->GetMaximum();
	//	if (hITSsa[icharge]->GetMinimum() < minimum) minimum = hITSsa[icharge]->GetMinimum();
      }
      if (hITSTPC[icharge]) {
	//	AddPointsToGraph(hITSTPC[icharge], gCombined[icharge][icent]);
	//	AddPointsToProfile(hITSTPC[icharge], pCombined[icharge][icent]);
	spectraArray.Add(hITSTPC[icharge]);
	//	hITSTPC[icharge]->DrawCopy("same");
	//	if (hITSTPC[icharge]->GetMaximum() > maximum) maximum = hITSTPC[icharge]->GetMaximum();
	//	if (hITSTPC[icharge]->GetMinimum() < minimum) minimum = hITSTPC[icharge]->GetMinimum();
      }
      if (hTPCTOF[icharge]) {
	//	AddPointsToGraph(hTPCTOF[icharge], gCombined[icharge][icent]);
	//	AddPointsToProfile(hTPCTOF[icharge], pCombined[icharge][icent]);
	spectraArray.Add(hTPCTOF[icharge]);
	//	hTPCTOF[icharge]->DrawCopy("same");
	//	if (hTPCTOF[icharge]->GetMaximum() > maximum) maximum = hTPCTOF[icharge]->GetMaximum();
	//	if (hTPCTOF[icharge]->GetMinimum() < minimum) minimum = hTPCTOF[icharge]->GetMinimum();
      }
      if (hTOF[icharge]) {
	//	AddPointsToGraph(hTOF[icharge], gCombined[icharge][icent]);
	//	AddPointsToProfile(hTOF[icharge], pCombined[icharge][icent]);
	spectraArray.Add(hTOF[icharge]);
	//	hTOF[icharge]->DrawCopy("same");
	//	if (hTOF[icharge]->GetMaximum() > maximum) maximum = hTOF[icharge]->GetMaximum();
	//	if (hTOF[icharge]->GetMinimum() < minimum) minimum = hTOF[icharge]->GetMinimum();
      }
      
      CombineSpectra(hCombined[icharge][icent], &spectraArray);

    }

    /* antiparticle/particle ratios */

    Char_t title[1024];
    sprintf(title, "%s/%s (%s);p_{T} (GeV/c);%s/%s;", partChargeName[part][1], partChargeName[part][0], centName[icent], partChargeName[part][1], partChargeName[part][0]);

    TH1D *hArea = new TH1D(Form("hArea_%d", icent), title, 100, ptMin[part], ptMax[part]);
    hArea->SetMaximum(1.2);
    hArea->SetMinimum(0.8);

    if (cent == -1)
      cCanvas->cd(icent + 1);
    else
      cCanvas->cd();

    hArea->DrawCopy();

    if (hITSsa[0] && hITSsa[1]) {
      hRatio_ITSsa[icent] = new TH1D(*hITSsa[1]);
      hRatio_ITSsa[icent]->Divide(hITSsa[0]);
      hRatio_ITSsa[icent]->DrawCopy("same");
    }

    if (hTPCTOF[0] && hTPCTOF[1]) {
      hRatio_TPCTOF[icent] = new TH1D(*hTPCTOF[1]);
      hRatio_TPCTOF[icent]->Divide(hTPCTOF[0]);
      hRatio_TPCTOF[icent]->DrawCopy("same");
    }

    if (hTOF[0] && hTOF[1]) {
      hRatio_TOF[icent] = new TH1D(*hTOF[1]);
      hRatio_TOF[icent]->Divide(hTOF[0]);
      hRatio_TOF[icent]->DrawCopy("same");
    }

    //    TLegend *legend = cCanvas->BuildLegend();
    //    legend->SetFillStyle(0);
    //    legend->SetFillColor(0);
    //    legend->DeleteEntry();

    if (cent == -1)
      cCanvasCombined->cd(icent + 1);
    else
      cCanvasCombined->cd();

    if (hCombined[0][icent] && hCombined[1][icent]) {
      hRatio_COMB[icent] = new TH1D(*hCombined[1][icent]);
      hRatio_COMB[icent]->Divide(hCombined[0][icent]);
      hRatio_COMB[icent]->SetMarkerStyle(20);
      hRatio_COMB[icent]->SetMarkerColor(2);
      hRatio_COMB[icent]->Fit("pol0", "");
      hRatio_COMB[icent]->SetMinimum(0.5);
      hRatio_COMB[icent]->SetMaximum(1.5);
      hRatio_COMB[icent]->SetTitle(title);
      //      hRatio_COMB[icent]->Draw("PHIST");
      //      pol0->SetRange(0., 5.);
      //      pol0->DrawCopy("same");
      //      hArea->DrawCopy();
      //      hRatio_COMB[icent]->Draw("same");
    
    }


  }

}

//______________________________________________________________

CompareSpectra(Int_t part, Int_t charge, Int_t cent = -1, Int_t ratio = kFALSE, Int_t fitfunc = -1, Bool_t cutSpectra = kTRUE) 
{

  gROOT->LoadMacro("HistoUtils.C");

  gStyle->SetOptStat(0);
  gStyle->SetOptFit();

  LoadLibraries();
  AliBWFunc bwf;
  bwf.SetVarType(AliBWFunc::kdNdpt);
  TF1 *fFitFunc = NULL;

  switch (fitfunc) {
  case 0:
    gROOT->LoadMacro("SpectraAnalysis.C");
    fFitFunc = STAR_BlastWave("fBW", AliPID::ParticleMass(part), 0.9, 0.1, 1.);
    fBW->SetParLimits(3, 0.5, 1.5);
    //    fBW->FixParameter(3, 1.);
    break;
  case 1:
    fFitFunc = bwf.GetLevi(AliPID::ParticleMass(part), AliPID::ParticleMass(part), 5., 1000.);
    break;
  case 2:
    fFitFunc = bwf.GetBoltzmann(AliPID::ParticleMass(part), AliPID::ParticleMass(part), 100.);
    break;
  case 3:
    fFitFunc = bwf.GetMTExp(AliPID::ParticleMass(part),AliPID::ParticleMass(part) , 100.);
    break;
  case 4:
    fFitFunc = bwf.GetPTExp(AliPID::ParticleMass(part), 100.);
    break;
  case 5:
    fFitFunc = bwf.GetBGBW(AliPID::ParticleMass(part), 0.5, 0.1, 1.e6);
    break;
  case 6:
    fFitFunc = new TF1("fpol9", "pol9", 0., 5.0);
    break;
  }
  if (fFitFunc) fFitFunc->SetLineWidth(2);

  TFile *itssafile = TFile::Open(ratio ? itssaratiofilename : itssafilename);
  //  TFile *itstpcfile = TFile::Open(itstpcfilename);
  if (part / 3 == charge / 3)
    Char_t *tpctofratiofilename = tpctofratiofilenameA;
  else
    Char_t *tpctofratiofilename = tpctofratiofilenameB;
  TFile *tpctoffile = TFile::Open(ratio ? tpctofratiofilename : tpctoffilename);
  TFile *toffile = TFile::Open(ratio ? tofratiofilename : toffilename);
  //  TFile *hydrofile = TFile::Open(hydrofilename);

  TCanvas *cCanvas = new TCanvas("cCanvas");
  if (cent == -1) cCanvas->Divide(5, 2);
  TCanvas *cCanvasCombined = new TCanvas("cCanvasCombined");
  TCanvas *cCanvasRatio = new TCanvas("cCanvasRatio");
  if (cent == -1) cCanvasRatio->Divide(5, 2);
  TCanvas *cCanvasRatioComb = new TCanvas("cCanvasRatioComb");
  if (cent == -1) cCanvasRatioComb->Divide(5, 2);
  TCanvas *cCanvasRatioFit = new TCanvas("cCanvasRatioFit");
  if (cent == -1) cCanvasRatioFit->Divide(5, 2);
  TPad *curpad = NULL;
  TH1D *hITSsa, *hITSTPC, *hTPCTOF, *hTOF;
  TGraph *hHydro;
  TGraphErrors *gCombined[10];
  TProfile *pCombined[10];
  TH1D *hCombined[10];
  TH1D *hRatio_ITSsa_ITSTPC[10];
  TH1D *hRatio_ITSsa_TPCTOF[10];
  TH1D *hRatio_ITSTPC_TPCTOF[10];
  TH1D *hRatio_ITSTPC_TOF[10];
  TH1D *hRatio_TPCTOF_TOF[10];
  TH1D *hRatio_ITSsa_TOF[10];
  for (Int_t icent = 0; icent < 10; icent++) {
    if (cent != -1 && icent != cent) continue;
    gCombined[icent] = new TGraphErrors();
    pCombined[icent] = new TProfile(Form("pCombined_cent%d", icent), "", NptBins, ptBin);
    hCombined[icent] = new TH1D(Form("hCombined_cent%d", icent), "", NptBins, ptBin);
    TObjArray spectraArray;
    hITSsa = ratio ? GetITSsaRatio(itssafile, part, charge, icent, cutSpectra): GetITSsaSpectrum(itssafile, part, charge, icent, cutSpectra);
    //    hITSTPC = GetITSTPCSpectrum(itstpcfile, part, charge, icent, cutSpectra);
    hTPCTOF = ratio ? GetTPCTOFRatio(tpctoffile, part, charge, icent, cutSpectra) : GetTPCTOFSpectrum(tpctoffile, part, charge, icent, cutSpectra);
    hTOF = ratio ? GetTOFRatio(toffile, part, charge, icent, cutSpectra) : GetTOFSpectrum(toffile, part, charge, icent, cutSpectra);
    //    hHydro = GetHydroSpectrum(hydrofile, part, charge, icent);
    if (cent == -1)
      curpad = (TPad *)cCanvas->cd(icent + 1);
    else
      curpad = (TPad *)cCanvas->cd();
    if (!ratio)
      TH1D *hArea = new TH1D(Form("hArea_%d", icent), Form("%s (%s);p_{T} (GeV/c);#frac{d^{2}N}{dy dp_{t}};", partChargeName[part][charge], centName[icent]), 100, 0., 5.);
    else
      TH1D *hArea = new TH1D(Form("hArea_%d", icent), Form("%s (%s);p_{T} (GeV/c);#frac{d^{2}N}{dy dp_{t}};", "generic ratio", centName[icent]), 100, 0., 5.);
    hArea->Draw();
    Double_t minimum = 0.001;
    Double_t maximum = 1000.;
    if (hITSsa) {
      AddPointsToGraph(hITSsa, gCombined[icent]);
      AddPointsToProfile(hITSsa, pCombined[icent]);
      spectraArray.Add(hITSsa);
      hITSsa->DrawCopy("same");
      if (hITSsa->GetMaximum() > maximum) maximum = hITSsa->GetMaximum();
      if (hITSsa->GetMinimum() < minimum) minimum = hITSsa->GetMinimum();
    }
    if (hITSTPC) {
      AddPointsToGraph(hITSTPC, gCombined[icent]);
      AddPointsToProfile(hITSTPC, pCombined[icent]);
      spectraArray.Add(hITSTPC);
      hITSTPC->DrawCopy("same");
      if (hITSTPC->GetMaximum() > maximum) maximum = hITSTPC->GetMaximum();
      if (hITSTPC->GetMinimum() < minimum) minimum = hITSTPC->GetMinimum();
    }
    if (hTPCTOF) {
      AddPointsToGraph(hTPCTOF, gCombined[icent]);
      AddPointsToProfile(hTPCTOF, pCombined[icent]);
      spectraArray.Add(hTPCTOF);
      hTPCTOF->DrawCopy("same");
      if (hTPCTOF->GetMaximum() > maximum) maximum = hTPCTOF->GetMaximum();
      if (hTPCTOF->GetMinimum() < minimum) minimum = hTPCTOF->GetMinimum();
    }
    if (hTOF) {
      AddPointsToGraph(hTOF, gCombined[icent]);
      AddPointsToProfile(hTOF, pCombined[icent]);
      spectraArray.Add(hTOF);
      hTOF->DrawCopy("same");
      if (hTOF->GetMaximum() > maximum) maximum = hTOF->GetMaximum();
      if (hTOF->GetMinimum() < minimum) minimum = hTOF->GetMinimum();
    }
    if (hHydro) {
      ;//hHydro->Draw("c,same");
    }
    TLegend *legend = curpad->BuildLegend();
    legend->SetFillStyle(0);
    legend->SetFillColor(0);
    legend->DeleteEntry();

    hArea->SetMaximum(maximum * 1.1);
    hArea->SetMinimum(0.01);
    //    gPad->SetLogy();

    /*** RATIOS ***/

    /* switch canvas */
    if (cent == -1)
      curpad = (TPad *)cCanvasRatio->cd(icent + 1);
    else
      curpad = (TPad *)cCanvasRatio->cd();

   
    /* area histo */
    if (!ratio)
      TH1D *hAreaRatio = new TH1D(Form("hAreaRatio_%d", icent), Form("%s (%s);p_{T} (GeV/c);ratio;", partChargeName[part][charge], centName[icent]), 100, 0., 5.);
    else
      TH1D *hAreaRatio = new TH1D(Form("hAreaRatio_%d", icent), Form("%s (%s);p_{T} (GeV/c);ratio;", "generic ratio", centName[icent]), 100, 0., 5.);

    hAreaRatio->SetMaximum(1.5);
    hAreaRatio->SetMinimum(0.5);
    hAreaRatio->Draw();

    /* do ratios */
    if (hITSsa && hITSTPC) {
      hRatio_ITSsa_ITSTPC[icent] = new TH1D(*hITSsa);
      hRatio_ITSsa_ITSTPC[icent]->Divide(hITSTPC);
      hRatio_ITSsa_ITSTPC[icent]->SetNameTitle(Form("hRatio_ITSsa_ITSTPC_cent%d", icent), "ITSsa / ITSTPC");
      hRatio_ITSsa_ITSTPC[icent]->Draw("same");
    }
    if (hITSsa && hTPCTOF) {
      hRatio_ITSsa_TPCTOF[icent] = new TH1D(*hITSsa);
      hRatio_ITSsa_TPCTOF[icent]->Divide(hTPCTOF);
      hRatio_ITSsa_TPCTOF[icent]->SetNameTitle(Form("hRatio_ITSsa_TPCTOF_cent%d", icent), "ITSsa / TPCTOF");
      hRatio_ITSsa_TPCTOF[icent]->SetMarkerStyle(23);
      hRatio_ITSsa_TPCTOF[icent]->SetMarkerColor(4);
      hRatio_ITSsa_TPCTOF[icent]->Draw("same");
    }
    if (hITSTPC && hTPCTOF) {
      hRatio_ITSTPC_TPCTOF[icent] = new TH1D(*hITSTPC);
      hRatio_ITSTPC_TPCTOF[icent]->Divide(hTPCTOF);
      hRatio_ITSTPC_TPCTOF[icent]->SetNameTitle(Form("hRatio_ITSTPC_TPCTOF_cent%d", icent), "ITSTPC / TPCTOF");
      hRatio_ITSTPC_TPCTOF[icent]->Draw("same");
    }
    if (hTPCTOF && hTOF) {
      hRatio_TPCTOF_TOF[icent] = new TH1D(*hTPCTOF);
      hRatio_TPCTOF_TOF[icent]->Divide(hTOF);
      hRatio_TPCTOF_TOF[icent]->SetNameTitle(Form("hRatio_TPCTOF_TOF_cent%d", icent), "TPCTOF / TOF");
      hRatio_TPCTOF_TOF[icent]->Draw("same");
    }
    if (hITSsa && hTOF) {
      hRatio_ITSsa_TOF[icent] = new TH1D(*hITSsa);
      hRatio_ITSsa_TOF[icent]->Divide(hTOF);
      hRatio_ITSsa_TOF[icent]->SetNameTitle(Form("hRatio_ITSsa_TOF_cent%d", icent), "ITSsa / TOF");
      //      hRatio_ITSsa_TOF[icent]->SetMarkerStyle(25);
      //      hRatio_ITSsa_TOF[icent]->SetMarkerColor(2);
      hRatio_ITSsa_TOF[icent]->Draw("same");
    }

    /* legend */
    TLegend *legendRatio = curpad->BuildLegend();
    legendRatio->SetFillStyle(0);
    legendRatio->SetFillColor(0);
    legendRatio->DeleteEntry();

    CombineSpectra(hCombined[icent], &spectraArray);
    hCombined[icent]->SetFillStyle(0);
    hCombined[icent]->SetFillColor(kOrange + 1);
    hCombined[icent]->SetMarkerColor(kOrange+1);
    hCombined[icent]->SetMarkerStyle(24);
    hCombined[icent]->SetLineColor(kOrange+1);
    hCombined[icent]->SetLineWidth(2);
    hCombined[icent]->SetMarkerSize(0);
    
    //    hCombined[icent]->DrawCopy("same,E2");
    //    pCombined[icent]->DrawCopy("same");

    if (cent == -1)
      cCanvas->cd(icent + 1);
    else
      cCanvas->cd();
    //    hCombined[icent]->Draw("same, E2");

    cCanvasCombined->cd();
    if (cent == -1 && icent != 0)
      hCombined[icent]->Draw("E2,same");
    else
      hCombined[icent]->Draw("E2");

    //    cCanvasCombined->DrawClonePad();
    if (hITSsa) {
      hITSsa->DrawCopy("same");
    }
    if (hITSTPC) {
      hITSTPC->DrawCopy("same");
    }
    if (hTPCTOF) {
      hTPCTOF->DrawCopy("same");
    }
    if (hTOF) {
      hTOF->DrawCopy("same");
    }
    if (hHydro) {
      ;//hHydro->Draw("c,same");
    }

    if (cent == -1)
      cCanvasRatioComb->cd(icent + 1);
    else
      cCanvasRatioComb->cd();
    //    hCombined[icent]->Draw("same, E2");

    TH1 *hhr = HistoUtils_smartratio(hCombined[icent], hCombined[icent]);
    hhr->SetMaximum(1.25);
    hhr->SetMinimum(0.75);
    hhr->SetFillStyle(3001);
    hhr->SetTitle("combined error;p_{T} (GeV/c);ratio wrt. combined");
    hhr->Draw("e2");
    if (hITSsa) {
      hhr = HistoUtils_smartratio(hITSsa, hCombined[icent]);
      hhr->SetLineColor(1);
      hhr->SetLineWidth(2);
      hhr->Draw("e2,same");
    }
    if (hITSTPC) {
      hhr = HistoUtils_smartratio(hITSTPC, hCombined[icent]);
      hhr->SetLineColor(1);
      hhr->SetLineWidth(2);
      hhr->Draw("e2,same");
    }
    if (hTPCTOF) {
      hhr = HistoUtils_smartratio(hTPCTOF, hCombined[icent]);
      hhr->SetLineColor(8);
      hhr->SetLineWidth(2);
      hhr->Draw("e2,same");
    }
    if (hTOF) {
      hhr = HistoUtils_smartratio(hTOF, hCombined[icent]);
      hhr->SetLineColor(4);
      hhr->SetLineWidth(2);
      hhr->Draw("e2,same");
    }
    if (hHydro) {
      ;//hHydro->Draw("c,same");
    }


    if (!fFitFunc)
      continue;
    
    //    gCombined[icent]->Draw("p*");
    //    gCombined[icent]->Fit(fFitFunc, "0q", "", 0.5, 1.0);
    //    gCombined[icent]->Fit(fFitFunc, "0q", "", 0.2, 1.5);
    hCombined[icent]->Fit(fFitFunc, "0q", "", 0., 5.);
    fFitFunc->DrawCopy("same");
    printf("cent = %d, dNdy = %f +- %f\n", icent, fFitFunc->GetParameter(0), fFitFunc->GetParError(0));

    if (cent == -1)
      cCanvas->cd(icent + 1);
    else
      cCanvas->cd();
    fFitFunc->DrawCopy("same");

    if (cent == -1)
      cCanvasRatioFit->cd(icent + 1);
    else
      cCanvasRatioFit->cd();
    if (!ratio)
      TH1D *hAreaRatioFit = new TH1D(Form("hAreaRatioFit_%d", icent), Form("%s (%s);p_{T} (GeV/c);ratio wrt. fit;", partChargeName[part][charge], centName[icent]), 100, 0., 5.);
    else
      TH1D *hAreaRatioFit = new TH1D(Form("hAreaRatioFit_%d", icent), Form("%s (%s);p_{T} (GeV/c);ratio wrt. fit;", "generic ratio", centName[icent]), 100, 0., 5.);
    hAreaRatioFit->SetMaximum(1.5);
    hAreaRatioFit->SetMinimum(0.5);
    hAreaRatioFit->Draw();
    legend->Draw("same");

    if (hITSsa) {
      hITSsa->Divide(fFitFunc);
      hITSsa->DrawCopy("same");
    }
    if (hITSTPC) {
      hITSTPC->Divide(fFitFunc);
      hITSTPC->DrawCopy("same");
    }
    if (hTPCTOF) {
      hTPCTOF->Divide(fFitFunc);
      hTPCTOF->DrawCopy("same");
    }
    if (hTOF) {
      hTOF->Divide(fFitFunc);
      hTOF->DrawCopy("same");
    }

  }

}

//______________________________________________________________

ConvertSpectraNameITSsa(const Char_t *fileoutname)
{

  TFile *itssafile = TFile::Open(itssafilename);
  TFile *fileout = TFile::Open(fileoutname, "RECREATE");
  TH1D *hSpectrum;
  for (Int_t part = 2; part < AliPID::kSPECIES; part++) {
    for (Int_t charge = 0; charge < 2; charge++) {
      for (Int_t icent = 0; icent < 9; icent++) {
	hSpectrum = GetITSsaSpectrum(itssafile, part, charge, icent);
	if (!hSpectrum)
	  continue;
	hSpectrum->SetName(Form("cent%d_%s_%s", icent, AliPID::ParticleName(part), chargeName[charge]));
	fileout->cd();
	hSpectrum->Write();
      }
    }
  }
  fileout->Close();
}

//______________________________________________________________

ConvertSpectraNameITSTPC(const Char_t *fileoutname)
{

  TFile *itstpcfile = TFile::Open(itstpcfilename);
  TFile *fileout = TFile::Open(fileoutname, "RECREATE");
  TH1D *hSpectrum;
  for (Int_t part = 2; part < AliPID::kSPECIES; part++) {
    for (Int_t charge = 0; charge < 2; charge++) {
      for (Int_t icent = 0; icent < 9; icent++) {
	hSpectrum = GetITSTPCSpectrum(itstpcfile, part, charge, icent);
	if (!hSpectrum)
	  continue;
	hSpectrum->SetName(Form("cent%d_%s_%s", icent, AliPID::ParticleName(part), chargeName[charge]));
	fileout->cd();
	hSpectrum->Write();
      }
    }
  }
  fileout->Close();
}

//______________________________________________________________

ConvertSpectraNameTPCTOF(const Char_t *fileoutname)
{

  TFile *tpctoffile = TFile::Open(tpctoffilename);
  TFile *fileout = TFile::Open(fileoutname, "RECREATE");
  TH1D *hSpectrum;
  for (Int_t part = 2; part < AliPID::kSPECIES; part++) {
    for (Int_t charge = 0; charge < 2; charge++) {
      for (Int_t icent = 0; icent < 9; icent++) {
	hSpectrum = GetTPCTOFSpectrum(tpctoffile, part, charge, icent);
	if (!hSpectrum)
	  continue;
	hSpectrum->SetName(Form("cent%d_%s_%s", icent, AliPID::ParticleName(part), chargeName[charge]));
	fileout->cd();
	hSpectrum->Write();
      }
    }
  }
  fileout->Close();
}

//______________________________________________________________

ConvertSpectraNameTOF(const Char_t *fileoutname)
{

  TFile *toffile = TFile::Open(toffilename);
  TFile *fileout = TFile::Open(fileoutname, "RECREATE");
  TH1D *hSpectrum;
  for (Int_t part = 2; part < AliPID::kSPECIES; part++) {
    for (Int_t charge = 0; charge < 2; charge++) {
      for (Int_t icent = 0; icent < 9; icent++) {
	hSpectrum = GetTOFSpectrum(toffile, part, charge, icent);
	if (!hSpectrum)
	  continue;
	hSpectrum->SetName(Form("cent%d_%s_%s", icent, AliPID::ParticleName(part), chargeName[charge]));
	fileout->cd();
	hSpectrum->Write();
      }
    }
  }
  fileout->Close();
}

//______________________________________________________________

SummedSpectra(const Char_t *filename, const Char_t *fileoutname)
{

  TFile *filein = TFile::Open(filename);
  TFile *fileout = TFile::Open(fileoutname, "RECREATE");
  TH1D *hSpectrum, *hSummed;
  for (Int_t icent = 0; icent < 9; icent++) {
    for (Int_t ipart = 2; ipart < 5; ipart++) {
      for (Int_t icharge = 0; icharge < 2; icharge++) {
	hSpectrum = (TH1D *)filein->Get(Form("cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
	if (!hSpectrum) continue;
	if (ipart == 2 && icharge == 0) {
	  hSummed = new TH1D(*hSpectrum);
	  hSummed->SetName(Form("cent%d_summed", icent));
	}
	else {
	  hSummed->Add(hSpectrum);
	}
      }
    }
    fileout->cd();
    if (hSummed)
      hSummed->Write();
  }
  fileout->Close();
}

//______________________________________________________________

CombinedSpectra(const Char_t *fileoutname, Int_t what = -1)
{

  TFile *itssafile = TFile::Open(itssafilename);
  //  TFile *itstpcfile = TFile::Open(itstpcfilename);
  TFile *tpctoffile = TFile::Open(tpctoffilename);
  TFile *toffile = TFile::Open(toffilename);

  TFile *fileout = TFile::Open(fileoutname, "RECREATE");

  TH1D *hITSsa, *hITSTPC, *hTPCTOF, *hTOF;
  TH1D *hCombined[10];
  for (Int_t part = 2; part < AliPID::kSPECIES; part++) {
    for (Int_t charge = 0; charge < 2; charge++) {
      for (Int_t icent = 0; icent < 10; icent++) {
	hCombined[icent] = new TH1D(Form("cent%d_%s_%s", icent, AliPID::ParticleName(part), chargeName[charge]), "", NptBins, ptBin);
	TObjArray spectraArray;
	hITSsa = GetITSsaSpectrum(itssafile, part, charge, icent);
	//hITSTPC = GetITSTPCSpectrum(itstpcfile, part, charge, icent);
	hTPCTOF = GetTPCTOFSpectrum(tpctoffile, part, charge, icent);
	hTOF = GetTOFSpectrum(toffile, part, charge, icent);
	if (hITSsa && (what == -1 || what == 0)) {
	  spectraArray.Add(hITSsa);
	}
	if (hITSTPC && (what == -1 || what == 1)) {
	  spectraArray.Add(hITSTPC);
	}
	if (hTPCTOF && (what == -1 || what == 2)) {
	  spectraArray.Add(hTPCTOF);
	}
	if (hTOF && (what == -1 || what == 3)) {
	  spectraArray.Add(hTOF);
	}
	
	CombineSpectra(hCombined[icent], &spectraArray);
	fileout->cd();
	hCombined[icent]->Write();
      }
    }
  }	  
  
  fileout->Close();

}

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