ROOT logo
/**************************************************************/
enum ECharge_t {
  kPositive,
  kNegative,
  kNCharges
};
const Char_t *chargeName[kNCharges] = {
  "positive",
  "negative",
};
/**************************************************************/
const Int_t NcentralityBins = 10;
Double_t centralityBin[NcentralityBins + 1] = {0., 5., 10., 20., 30., 40., 50., 60., 70., 80., 90.};
/**************************************************************/
const Int_t NptBins = 46;
Double_t ptBin[NptBins + 1] = {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};
/**************************************************************/
Char_t *partLatex[AliPID::kSPECIES][2] = {
  "", "", "", "", "#pi^{+}", "#pi^{-}", "K^{+}", "K^{-}", "p", "#bar{p}"
};
 /**************************************************************/

SystematicChecks()
{
  SystematicCheck();
  SystematicPlots_spectra();
}


SystematicPlots_spectra()
{


  enum EData_t {
    kuseTPCcrossedRows,
    kminTPCclusters_60,
    kminTPCclusters_80, 
    kscaleDCAxy_09,
    kscaleDCAxy_11,
    kscaleDCAxy_10x,
    ketaCut_75,
    ketaCut_85,
    kbkgFit_fixed_scaleSigma_09,
    kbkgFit_fixed_scaleSigma_11,
    kbkgFit_fixed_scaleTail_09,
    kbkgFit_fixed_scaleTail_11,
    kbkgFit_fixed_scaleSigma_09_scaleTail_11,
    kbkgFit_fixed_scaleSigma_11_scaleTail_09,
    ksignalFit_fixed_scaleSigma_09,
    ksignalFit_fixed_scaleSigma_11,
    ksignalFit_fixed_scaleTail_09,
    ksignalFit_fixed_scaleTail_11,
    ksignalFit_fixed_scaleSigma_09_scaleTail_11,
    ksignalFit_fixed_scaleSigma_11_scaleTail_09,
    kbkgFit_fixed,
    kbkgFit_free,
    ksignalFit_fixed,
    ksignalFit_free,
    ksignalbkgFit_free,
    kdefaultFit_fitElectrons,
    kdefaultFit_limitedRange,
    kfieldReversal
  };
  const Int_t ndata = 28;
  const Char_t *name[ndata] = {
    "useTPCcrossedRows",
    "minTPCclusters_60",
    "minTPCclusters_80", 
    "scaleDCAxy_09",
    "scaleDCAxy_11",
    "scaleDCAxy_10x",
    "etaCut_75",
    "etaCut_85",
    "bkgFit_fixed_scaleSigma_09",
    "bkgFit_fixed_scaleSigma_11",
    "bkgFit_fixed_scaleTail_09",
    "bkgFit_fixed_scaleTail_11",
    "bkgFit_fixed_scaleSigma_09_scaleTail_11",
    "bkgFit_fixed_scaleSigma_11_scaleTail_09",
    "signalFit_fixed_scaleSigma_09",
    "signalFit_fixed_scaleSigma_11",
    "signalFit_fixed_scaleTail_09",
    "signalFit_fixed_scaleTail_11",
    "signalFit_fixed_scaleSigma_09_scaleTail_11",
    "signalFit_fixed_scaleSigma_11_scaleTail_09",
    "bkgFit_fixed",
    "bkgFit_free",
    "signalFit_fixed",
    "signalFit_free",
    "signalbkgFit_free",
    "defaultFit_fitElectrons",
    "defaultFit_limitedRange",
    "fieldReversal"
  };
  Int_t marker[ndata] = {
    25, 20, 21,
    20, 21, 25,
    20, 21,
    20, 21, 20, 21, 20, 21,
    20, 21, 20, 21, 20, 21,
    20, 21, 20, 21, 25,
    20,
    20,
    20
  };
  Int_t color[ndata] = {
    4, 2, 8,
    2, 8, 4,
    2, 8,
    2, 2, 4, 4, 8, 8,
    2, 2, 4, 4, 8, 8,
    2, 8, 4,
    4,
    4,
    4
  };

  TFile *fin[ndata];
  for (Int_t idata = 0; idata < ndata; idata++) 
    fin[idata] = TFile::Open(Form("SystematicCheck_finalSpectra_%s.root", name[idata]));

  TFile *fileout = TFile::Open("SystematicPlots_spectra.root", "RECREATE");
    
  TH1D *hin[ndata];
  TH1D *hArea = new TH1D("hArea", "", NptBins, ptBin);
  hArea->SetStats(kFALSE);
  Char_t title[1024];
  for (Int_t icent = 0; icent < NcentralityBins; icent++) {
    for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++) {
      for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
	for (Int_t idata = 0; idata < ndata; idata++) {
	  if (!fin[idata] || !fin[idata]->IsOpen()) continue;
	  hin[idata] = (TH1D *)fin[idata]->Get(Form("hFinal_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
	  if (!hin[idata]) {
	    printf("cannot find hFinal_cent%d_%s_%s in %s\n", icent, AliPID::ParticleName(ipart), chargeName[icharge], fin[idata]->GetName());
	    continue;
	  }
	  hin[idata]->SetMarkerStyle(marker[idata]);
	  hin[idata]->SetMarkerColor(color[idata]);
	}

	/* set common title */
	sprintf(title, "%s (%d-%d%%);p_{T} (GeV/c);relative variation wrt. standard;", partLatex[ipart][icharge], centralityBin[icent], centralityBin[icent + 1]);
	hArea->SetTitle(title);

	/* TPC quality cuts */
	hArea->SetMinimum(-0.05);
	hArea->SetMaximum(0.05);
	hArea->Draw();
	hin[kuseTPCcrossedRows]->Draw("same");
	hin[kminTPCclusters_60]->Draw("same");
	hin[kminTPCclusters_80]->Draw("same");
	TLegend *l = gPad->BuildLegend();
	l->DeleteEntry();
	l->SetFillColor(0);
	l->SetBorderSize(1);
	fileout->cd();
	gPad->Write(Form("cSpectraSys_TPCcuts_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));

	/* DCA cuts */
	hArea->SetMinimum(-0.05);
	hArea->SetMaximum(0.05);
	hArea->Draw();
	hin[kscaleDCAxy_09]->Draw("same");
	hin[kscaleDCAxy_11]->Draw("same");
	hin[kscaleDCAxy_10x]->Draw("same");
	TLegend *l = gPad->BuildLegend();
	l->DeleteEntry();
	l->SetFillColor(0);
	l->SetBorderSize(1);
	fileout->cd();
	gPad->Write(Form("cSpectraSys_DCAcuts_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));

	/* eta cut */
	hArea->SetMinimum(-0.05);
	hArea->SetMaximum(0.05);
	hArea->Draw();
	hin[ketaCut_75]->Draw("same");
	hin[ketaCut_85]->Draw("same");
	TLegend *l = gPad->BuildLegend();
	l->DeleteEntry();
	l->SetFillColor(0);
	l->SetBorderSize(1);
	fileout->cd();
	gPad->Write(Form("cSpectraSys_etaCut_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));

	/* background fit */
	hArea->SetMinimum(-0.5);
	hArea->SetMaximum(0.5);
	hArea->Draw();
	hin[kbkgFit_fixed_scaleSigma_09]->Draw("same");
	hin[kbkgFit_fixed_scaleSigma_11]->Draw("same");
	hin[kbkgFit_fixed_scaleTail_09]->Draw("same");
	hin[kbkgFit_fixed_scaleTail_11]->Draw("same");
	hin[kbkgFit_fixed_scaleSigma_09_scaleTail_11]->Draw("same");
	hin[kbkgFit_fixed_scaleSigma_11_scaleTail_09]->Draw("same");
	TLegend *l = gPad->BuildLegend();
	l->DeleteEntry();
	l->SetFillColor(0);
	l->SetBorderSize(1);
	fileout->cd();
	gPad->Write(Form("cSpectraSys_bkgFit_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));

	/* signal fit */
	hArea->SetMinimum(-0.5);
	hArea->SetMaximum(0.5);
	hArea->Draw();
	hin[ksignalFit_fixed_scaleSigma_09]->Draw("same");
	hin[ksignalFit_fixed_scaleSigma_11]->Draw("same");
	hin[ksignalFit_fixed_scaleTail_09]->Draw("same");
	hin[ksignalFit_fixed_scaleTail_11]->Draw("same");
	hin[ksignalFit_fixed_scaleSigma_09_scaleTail_11]->Draw("same");
	hin[ksignalFit_fixed_scaleSigma_11_scaleTail_09]->Draw("same");
	TLegend *l = gPad->BuildLegend();
	l->DeleteEntry();
	l->SetFillColor(0);
	l->SetBorderSize(1);
	fileout->cd();
	gPad->Write(Form("cSpectraSys_signalFit_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
      }
    }
  }

  fileout->Close();
  for (Int_t idata = 0; idata < ndata; idata++) 
    if (fin[idata])
    fin[idata]->Close();
}

SystematicCheck()
{
  SystematicCheck("rawSpectra");
  SystematicCheck("matchingEfficiency");
  SystematicCheck("trackingEfficiency");
  SystematicCheck("primaryFraction");
  SystematicCheck("finalSpectra");
  SystematicCheck("finalRatios");
}

SystematicCheck(const Char_t *checkname)
{

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

  const Int_t ndata = 30;
  const Char_t *name[ndata] = {
    "useTPCcrossedRows",
    "minTPCclusters_60",
    "minTPCclusters_80",
    "scaleDCAxy_09",
    "scaleDCAxy_11",
    "scaleDCAxy_10x",
    "DCAz_1",
    "etaCut_75",
    "etaCut_85",
    "bkgFit_fixed",
    "bkgFit_fixed_scaleSigma_09",
    "bkgFit_fixed_scaleSigma_09_scaleTail_11",
    "bkgFit_fixed_scaleSigma_11",
    "bkgFit_fixed_scaleSigma_11_scaleTail_09",
    "bkgFit_fixed_scaleTail_09",
    "bkgFit_fixed_scaleTail_11",
    "bkgFit_free",
    "mismatchCorrected",
    "defaultFit_fitElectrons",
    "defaultFit_limitedRange",
    "defaultFit_tightRange",
    "fieldReversal",
    "signalbkgFit_free",
    "signalFit_fixed_scaleSigma_09",
    "signalFit_fixed_scaleSigma_09_scaleTail_11",
    "signalFit_fixed_scaleSigma_11",
    "signalFit_fixed_scaleSigma_11_scaleTail_09",
    "signalFit_fixed_scaleTail_09",
    "signalFit_fixed_scaleTail_11",
    "signalFit_free"
  };


  const Char_t *title[ndata] = {
    "N_{crossed-rows} cut",
    "N_{clusters}^{min} = 60",
    "N_{clusters}^{min} = 80",
    "-10% DCA_{xy} cut",
    "+10% DCA_{xy} cut",
    "10x larger DCA_{xy} cut",
    "DCA_{z} < 1 cm",
    "|#eta| < 0.75",
    "|#eta| < 0.85",
    "background fit (fixed params)",
    "-10% #sigma background",
    "-10% #sigma +10% #tau background",
    "+10% #sigma background",
    "+10% #sigma -10% #tau background",
    "-10% #tau background",
    "+10% #tau background",
    "background fit (free params)",
    "with mismatch correction",
    "with electron background",
    "fit in limited range",
    "fit in tight range",
    "reversed magnetic field",
    "signal+background fit (free params)",
    "-10% #sigma signal",
    "-10% #sigma +10% #tau signal",
    "+10% #sigma signal",
    "+10% #sigma -10% #tau signal",
    "-10% #tau signal",
    "+10% #tau signal",
    "signal fit (free params)"
  };

#if 0
  Char_t filename1[1024], filename2[1024], ofilename[1024];
  for (Int_t idata = 1; idata < ndata; idata++) {
    sprintf(filename1, "standardPrimaryCuts_%s/TOF_%s.root", name[idata], checkname);
    sprintf(filename2, "standardPrimaryCuts/TOF_%s.root", checkname);
    sprintf(ofilename, "SystematicCheck_%s_%s.root", checkname, name[idata]);
    printf("%s %s %s\n", filename1, filename2, ofilename);
    HistoUtils_autosystematics(filename1, filename2, ofilename, Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[idata]));
  }
  return;
#endif
  
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[0], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[0]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[0]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[1], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[1]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[1]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[2], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[2]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[2]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[3], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[3]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[3]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[4], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[4]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[4]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[5], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[5]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[5]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[6], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[6]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[6]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[7], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[7]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[7]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[8], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[8]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[8]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[9], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[9]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[9]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[10], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[10]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[10]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[11], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[11]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[11]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[12], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[12]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[12]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[13], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[13]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[13]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[14], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[14]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[14]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[15], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[15]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[15]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[16], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[16]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[16]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[17], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[17]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[17]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[18], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[18]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[18]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[19], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[19]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[19]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[20], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[20]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[20]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[21], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[21]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[21]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[22], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[22]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[22]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[23], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[23]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[23]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[24], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[24]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[24]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[25], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[25]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[25]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[26], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[26]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[26]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[26], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[27]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[27]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[26], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[28]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[28]));
  HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[26], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[29]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[29]));

  
}

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

FinalSpectra_systematics_useTPCcrossedRows()
{
  
  TFile *fileout = TFile::Open("FinalSpectra_systematics_useTPCcrossedRows.root", "RECREATE");
  for (Int_t icent = 0; icent < NcentralityBins; icent++)
    for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++)
      for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
	FinalSpectra_systematics_useTPCcrossedRows(ipart, icharge, icent, fileout);
      }
  fileout->Close();
}

FinalSpectra_systematics_useTPCcrossedRows(Int_t ipart, Int_t icharge, Int_t icent, TFile *fileout = NULL)
{
  const Int_t ndata = 1;
  const Char_t *name[ndata] = {
    "standardPrimaryCuts_useTPCcrossedRows"
  };
  const Char_t *title[ndata] = {
    "TPC crossed-rows cut;p_{T} (GeV/c); ratio"
  };
  Int_t marker[ndata] = {22};
  Int_t color[ndata] = {2};
  
  TH1D *hArea = new TH1D("hArea", Form("%s (%d-%d%%);p_{T} (GeV/c);ratio;", partLatex[ipart][icharge], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]), NptBins, ptBin);
  hArea->SetMinimum(0.9);
  hArea->SetMaximum(1.1); 
  hArea->SetStats(kFALSE);
  hArea->Draw();
  
  TH1D *hr[ndata];
  for (Int_t idata = 0; idata < ndata; idata++) {
    hr[idata] = FinalSpectra_systematics_ratio(name[idata], "standardPrimaryCuts", ipart, icharge, icent, name[idata], title[idata], marker[idata], color[idata]);
    hr[idata]->Draw("same");
  }
  
  gPad->SetGridy();
  TLegend *legend = gPad->BuildLegend();
  legend->DeleteEntry();
  legend->SetFillColor(0);
  legend->SetBorderSize(1);
  if (fileout) {
    fileout->cd();
    gPad->Write(Form("cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
  }
}

FinalSpectra_systematics_minTPCclusters()
{
  
  TFile *fileout = TFile::Open("FinalSpectra_systematics_minTPCclusters.root", "RECREATE");
  for (Int_t icent = 0; icent < NcentralityBins; icent++)
    for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++)
      for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
	FinalSpectra_systematics_minTPCclusters(ipart, icharge, icent, fileout);
      }
  fileout->Close();
}

FinalSpectra_systematics_minTPCclusters(Int_t ipart, Int_t icharge, Int_t icent, TFile *fileout = NULL)
{
  const Int_t ndata = 2;
  const Char_t *name[ndata] = {
    "standardPrimaryCuts_minTPCclusters_60",
    "standardPrimaryCuts_minTPCclusters_80"
  };
  const Char_t *title[ndata] = {
    "N_{TPC-cls}^{min} = 60;p_{T} (GeV/c); ratio",
    "N_{TPC-cls}^{min} = 80;p_{T} (GeV/c); ratio"
  };
  Int_t marker[ndata] = {22, 28};
  Int_t color[ndata] = {2, 8};

  TH1D *hArea = new TH1D("hArea", Form("%s (%d-%d%%);p_{T} (GeV/c);ratio;", partLatex[ipart][icharge], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]), NptBins, ptBin);
  hArea->SetMinimum(0.9);
  hArea->SetMaximum(1.1);
  hArea->SetStats(kFALSE);
  hArea->Draw();
  
  TH1D *hr[ndata];
  for (Int_t idata = 0; idata < ndata; idata++) {
    hr[idata] = FinalSpectra_systematics_ratio(name[idata], "standardPrimaryCuts", ipart, icharge, icent, name[idata], title[idata], marker[idata], color[idata]);
    hr[idata]->Draw("same");
  }

  gPad->SetGridy();
  TLegend *legend = gPad->BuildLegend();
  legend->DeleteEntry();
  legend->SetFillColor(0);
  legend->SetBorderSize(1);
  if (fileout) {
    fileout->cd();
    gPad->Write(Form("cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
  }
}

FinalSpectra_systematics_scaleDCAxy()
{
  
  TFile *fileout = TFile::Open("FinalSpectra_systematics_scaleDCAxy.root", "RECREATE");
  for (Int_t icent = 0; icent < NcentralityBins; icent++)
    for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++)
      for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
	FinalSpectra_systematics_scaleDCAxy(ipart, icharge, icent, fileout);
      }
  fileout->Close();
}

FinalSpectra_systematics_scaleDCAxy(Int_t ipart, Int_t icharge, Int_t icent, TFile *fileout = NULL)
{
  const Int_t ndata = 2;
  const Char_t *name[ndata] = {
    "standardPrimaryCuts_scaleDCAxy_09",
    "standardPrimaryCuts_scaleDCAxy_11"
  };
  const Char_t *title[ndata] = {
    "-10% DCA_{xy} cut;p_{T} (GeV/c); ratio",
    "+10% DCA_{xy} cut;p_{T} (GeV/c); ratio"
  };
  Int_t marker[ndata] = {22, 28};
  Int_t color[ndata] = {2, 8};

  TH1D *hArea = new TH1D("hArea", Form("%s (%d-%d%%);p_{T} (GeV/c);ratio;", partLatex[ipart][icharge], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]), NptBins, ptBin);
  hArea->SetMinimum(0.9);
  hArea->SetMaximum(1.1);
  hArea->SetStats(kFALSE);
  hArea->Draw();
  
  TH1D *hr[ndata];
  for (Int_t idata = 0; idata < ndata; idata++) {
    hr[idata] = FinalSpectra_systematics_ratio(name[idata], "standardPrimaryCuts", ipart, icharge, icent, name[idata], title[idata], marker[idata], color[idata]);
    hr[idata]->Draw("same");
  }

  gPad->SetGridy();
  TLegend *legend = gPad->BuildLegend();
  legend->DeleteEntry();
  legend->SetFillColor(0);
  legend->SetBorderSize(1);
  if (fileout) {
    fileout->cd();
    gPad->Write(Form("cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
  }
}

TH1D *
FinalSpectra_systematics_ratio(const Char_t *dirname1, const Char_t *dirname2, Int_t ipart, Int_t icharge, Int_t icent, const Char_t *name = "finalRatio", const Char_t *title = ";p_{T} (GeV/c);final yield ratio;", Int_t marker = 20, Int_t color = 2, Bool_t correlated = kFALSE)
{

  TH1D *hr = new TH1D("hr", "", NptBins, ptBin);

  /* open data */
  Char_t outfilename1[1024];
  sprintf(outfilename1, "%s/TOF_finalSpectra.root", dirname1);
  TFile *filein1 = TFile::Open(outfilename1);
  if (!filein1 || !filein1->IsOpen()) {
    printf("cannot open %s\n", outfilename1);
    return;
  }
  Char_t outfilename2[1024];
  sprintf(outfilename2, "%s/TOF_finalSpectra.root", dirname2);
  TFile *filein2 = TFile::Open(outfilename2);
  if (!filein2 || !filein2->IsOpen()) {
    printf("cannot open %s\n", outfilename2);
    return;
  }
  /* get data */
  TH1D *h1 = (TH1D *)filein1->Get(Form("hFinal_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
  if (!h1) {
    printf("cannot get hFinal_cent%d_%s_%s from %s\n", icent, AliPID::ParticleName(ipart), chargeName[icharge], outfilename1);
    return;
  }
  TH1D *h2 = (TH1D *)filein2->Get(Form("hFinal_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
  if (!h2) {
    printf("cannot get hFinal_cent%d_%s_%s from %s\n", icent, AliPID::ParticleName(ipart), chargeName[icharge], outfilename2);
    return;
  }
  /* ratio */
  if (correlated) hr->Divide(h1, h2, 1., 1., "B");
  else hr->Divide(h1, h2);
  hr->SetNameTitle(name, title);
  hr->SetMarkerStyle(marker);
  hr->SetMarkerColor(color);
  
  filein1->Close();
  filein2->Close();
  
  return hr;
}
 SystematicChecks.C:1
 SystematicChecks.C:2
 SystematicChecks.C:3
 SystematicChecks.C:4
 SystematicChecks.C:5
 SystematicChecks.C:6
 SystematicChecks.C:7
 SystematicChecks.C:8
 SystematicChecks.C:9
 SystematicChecks.C:10
 SystematicChecks.C:11
 SystematicChecks.C:12
 SystematicChecks.C:13
 SystematicChecks.C:14
 SystematicChecks.C:15
 SystematicChecks.C:16
 SystematicChecks.C:17
 SystematicChecks.C:18
 SystematicChecks.C:19
 SystematicChecks.C:20
 SystematicChecks.C:21
 SystematicChecks.C:22
 SystematicChecks.C:23
 SystematicChecks.C:24
 SystematicChecks.C:25
 SystematicChecks.C:26
 SystematicChecks.C:27
 SystematicChecks.C:28
 SystematicChecks.C:29
 SystematicChecks.C:30
 SystematicChecks.C:31
 SystematicChecks.C:32
 SystematicChecks.C:33
 SystematicChecks.C:34
 SystematicChecks.C:35
 SystematicChecks.C:36
 SystematicChecks.C:37
 SystematicChecks.C:38
 SystematicChecks.C:39
 SystematicChecks.C:40
 SystematicChecks.C:41
 SystematicChecks.C:42
 SystematicChecks.C:43
 SystematicChecks.C:44
 SystematicChecks.C:45
 SystematicChecks.C:46
 SystematicChecks.C:47
 SystematicChecks.C:48
 SystematicChecks.C:49
 SystematicChecks.C:50
 SystematicChecks.C:51
 SystematicChecks.C:52
 SystematicChecks.C:53
 SystematicChecks.C:54
 SystematicChecks.C:55
 SystematicChecks.C:56
 SystematicChecks.C:57
 SystematicChecks.C:58
 SystematicChecks.C:59
 SystematicChecks.C:60
 SystematicChecks.C:61
 SystematicChecks.C:62
 SystematicChecks.C:63
 SystematicChecks.C:64
 SystematicChecks.C:65
 SystematicChecks.C:66
 SystematicChecks.C:67
 SystematicChecks.C:68
 SystematicChecks.C:69
 SystematicChecks.C:70
 SystematicChecks.C:71
 SystematicChecks.C:72
 SystematicChecks.C:73
 SystematicChecks.C:74
 SystematicChecks.C:75
 SystematicChecks.C:76
 SystematicChecks.C:77
 SystematicChecks.C:78
 SystematicChecks.C:79
 SystematicChecks.C:80
 SystematicChecks.C:81
 SystematicChecks.C:82
 SystematicChecks.C:83
 SystematicChecks.C:84
 SystematicChecks.C:85
 SystematicChecks.C:86
 SystematicChecks.C:87
 SystematicChecks.C:88
 SystematicChecks.C:89
 SystematicChecks.C:90
 SystematicChecks.C:91
 SystematicChecks.C:92
 SystematicChecks.C:93
 SystematicChecks.C:94
 SystematicChecks.C:95
 SystematicChecks.C:96
 SystematicChecks.C:97
 SystematicChecks.C:98
 SystematicChecks.C:99
 SystematicChecks.C:100
 SystematicChecks.C:101
 SystematicChecks.C:102
 SystematicChecks.C:103
 SystematicChecks.C:104
 SystematicChecks.C:105
 SystematicChecks.C:106
 SystematicChecks.C:107
 SystematicChecks.C:108
 SystematicChecks.C:109
 SystematicChecks.C:110
 SystematicChecks.C:111
 SystematicChecks.C:112
 SystematicChecks.C:113
 SystematicChecks.C:114
 SystematicChecks.C:115
 SystematicChecks.C:116
 SystematicChecks.C:117
 SystematicChecks.C:118
 SystematicChecks.C:119
 SystematicChecks.C:120
 SystematicChecks.C:121
 SystematicChecks.C:122
 SystematicChecks.C:123
 SystematicChecks.C:124
 SystematicChecks.C:125
 SystematicChecks.C:126
 SystematicChecks.C:127
 SystematicChecks.C:128
 SystematicChecks.C:129
 SystematicChecks.C:130
 SystematicChecks.C:131
 SystematicChecks.C:132
 SystematicChecks.C:133
 SystematicChecks.C:134
 SystematicChecks.C:135
 SystematicChecks.C:136
 SystematicChecks.C:137
 SystematicChecks.C:138
 SystematicChecks.C:139
 SystematicChecks.C:140
 SystematicChecks.C:141
 SystematicChecks.C:142
 SystematicChecks.C:143
 SystematicChecks.C:144
 SystematicChecks.C:145
 SystematicChecks.C:146
 SystematicChecks.C:147
 SystematicChecks.C:148
 SystematicChecks.C:149
 SystematicChecks.C:150
 SystematicChecks.C:151
 SystematicChecks.C:152
 SystematicChecks.C:153
 SystematicChecks.C:154
 SystematicChecks.C:155
 SystematicChecks.C:156
 SystematicChecks.C:157
 SystematicChecks.C:158
 SystematicChecks.C:159
 SystematicChecks.C:160
 SystematicChecks.C:161
 SystematicChecks.C:162
 SystematicChecks.C:163
 SystematicChecks.C:164
 SystematicChecks.C:165
 SystematicChecks.C:166
 SystematicChecks.C:167
 SystematicChecks.C:168
 SystematicChecks.C:169
 SystematicChecks.C:170
 SystematicChecks.C:171
 SystematicChecks.C:172
 SystematicChecks.C:173
 SystematicChecks.C:174
 SystematicChecks.C:175
 SystematicChecks.C:176
 SystematicChecks.C:177
 SystematicChecks.C:178
 SystematicChecks.C:179
 SystematicChecks.C:180
 SystematicChecks.C:181
 SystematicChecks.C:182
 SystematicChecks.C:183
 SystematicChecks.C:184
 SystematicChecks.C:185
 SystematicChecks.C:186
 SystematicChecks.C:187
 SystematicChecks.C:188
 SystematicChecks.C:189
 SystematicChecks.C:190
 SystematicChecks.C:191
 SystematicChecks.C:192
 SystematicChecks.C:193
 SystematicChecks.C:194
 SystematicChecks.C:195
 SystematicChecks.C:196
 SystematicChecks.C:197
 SystematicChecks.C:198
 SystematicChecks.C:199
 SystematicChecks.C:200
 SystematicChecks.C:201
 SystematicChecks.C:202
 SystematicChecks.C:203
 SystematicChecks.C:204
 SystematicChecks.C:205
 SystematicChecks.C:206
 SystematicChecks.C:207
 SystematicChecks.C:208
 SystematicChecks.C:209
 SystematicChecks.C:210
 SystematicChecks.C:211
 SystematicChecks.C:212
 SystematicChecks.C:213
 SystematicChecks.C:214
 SystematicChecks.C:215
 SystematicChecks.C:216
 SystematicChecks.C:217
 SystematicChecks.C:218
 SystematicChecks.C:219
 SystematicChecks.C:220
 SystematicChecks.C:221
 SystematicChecks.C:222
 SystematicChecks.C:223
 SystematicChecks.C:224
 SystematicChecks.C:225
 SystematicChecks.C:226
 SystematicChecks.C:227
 SystematicChecks.C:228
 SystematicChecks.C:229
 SystematicChecks.C:230
 SystematicChecks.C:231
 SystematicChecks.C:232
 SystematicChecks.C:233
 SystematicChecks.C:234
 SystematicChecks.C:235
 SystematicChecks.C:236
 SystematicChecks.C:237
 SystematicChecks.C:238
 SystematicChecks.C:239
 SystematicChecks.C:240
 SystematicChecks.C:241
 SystematicChecks.C:242
 SystematicChecks.C:243
 SystematicChecks.C:244
 SystematicChecks.C:245
 SystematicChecks.C:246
 SystematicChecks.C:247
 SystematicChecks.C:248
 SystematicChecks.C:249
 SystematicChecks.C:250
 SystematicChecks.C:251
 SystematicChecks.C:252
 SystematicChecks.C:253
 SystematicChecks.C:254
 SystematicChecks.C:255
 SystematicChecks.C:256
 SystematicChecks.C:257
 SystematicChecks.C:258
 SystematicChecks.C:259
 SystematicChecks.C:260
 SystematicChecks.C:261
 SystematicChecks.C:262
 SystematicChecks.C:263
 SystematicChecks.C:264
 SystematicChecks.C:265
 SystematicChecks.C:266
 SystematicChecks.C:267
 SystematicChecks.C:268
 SystematicChecks.C:269
 SystematicChecks.C:270
 SystematicChecks.C:271
 SystematicChecks.C:272
 SystematicChecks.C:273
 SystematicChecks.C:274
 SystematicChecks.C:275
 SystematicChecks.C:276
 SystematicChecks.C:277
 SystematicChecks.C:278
 SystematicChecks.C:279
 SystematicChecks.C:280
 SystematicChecks.C:281
 SystematicChecks.C:282
 SystematicChecks.C:283
 SystematicChecks.C:284
 SystematicChecks.C:285
 SystematicChecks.C:286
 SystematicChecks.C:287
 SystematicChecks.C:288
 SystematicChecks.C:289
 SystematicChecks.C:290
 SystematicChecks.C:291
 SystematicChecks.C:292
 SystematicChecks.C:293
 SystematicChecks.C:294
 SystematicChecks.C:295
 SystematicChecks.C:296
 SystematicChecks.C:297
 SystematicChecks.C:298
 SystematicChecks.C:299
 SystematicChecks.C:300
 SystematicChecks.C:301
 SystematicChecks.C:302
 SystematicChecks.C:303
 SystematicChecks.C:304
 SystematicChecks.C:305
 SystematicChecks.C:306
 SystematicChecks.C:307
 SystematicChecks.C:308
 SystematicChecks.C:309
 SystematicChecks.C:310
 SystematicChecks.C:311
 SystematicChecks.C:312
 SystematicChecks.C:313
 SystematicChecks.C:314
 SystematicChecks.C:315
 SystematicChecks.C:316
 SystematicChecks.C:317
 SystematicChecks.C:318
 SystematicChecks.C:319
 SystematicChecks.C:320
 SystematicChecks.C:321
 SystematicChecks.C:322
 SystematicChecks.C:323
 SystematicChecks.C:324
 SystematicChecks.C:325
 SystematicChecks.C:326
 SystematicChecks.C:327
 SystematicChecks.C:328
 SystematicChecks.C:329
 SystematicChecks.C:330
 SystematicChecks.C:331
 SystematicChecks.C:332
 SystematicChecks.C:333
 SystematicChecks.C:334
 SystematicChecks.C:335
 SystematicChecks.C:336
 SystematicChecks.C:337
 SystematicChecks.C:338
 SystematicChecks.C:339
 SystematicChecks.C:340
 SystematicChecks.C:341
 SystematicChecks.C:342
 SystematicChecks.C:343
 SystematicChecks.C:344
 SystematicChecks.C:345
 SystematicChecks.C:346
 SystematicChecks.C:347
 SystematicChecks.C:348
 SystematicChecks.C:349
 SystematicChecks.C:350
 SystematicChecks.C:351
 SystematicChecks.C:352
 SystematicChecks.C:353
 SystematicChecks.C:354
 SystematicChecks.C:355
 SystematicChecks.C:356
 SystematicChecks.C:357
 SystematicChecks.C:358
 SystematicChecks.C:359
 SystematicChecks.C:360
 SystematicChecks.C:361
 SystematicChecks.C:362
 SystematicChecks.C:363
 SystematicChecks.C:364
 SystematicChecks.C:365
 SystematicChecks.C:366
 SystematicChecks.C:367
 SystematicChecks.C:368
 SystematicChecks.C:369
 SystematicChecks.C:370
 SystematicChecks.C:371
 SystematicChecks.C:372
 SystematicChecks.C:373
 SystematicChecks.C:374
 SystematicChecks.C:375
 SystematicChecks.C:376
 SystematicChecks.C:377
 SystematicChecks.C:378
 SystematicChecks.C:379
 SystematicChecks.C:380
 SystematicChecks.C:381
 SystematicChecks.C:382
 SystematicChecks.C:383
 SystematicChecks.C:384
 SystematicChecks.C:385
 SystematicChecks.C:386
 SystematicChecks.C:387
 SystematicChecks.C:388
 SystematicChecks.C:389
 SystematicChecks.C:390
 SystematicChecks.C:391
 SystematicChecks.C:392
 SystematicChecks.C:393
 SystematicChecks.C:394
 SystematicChecks.C:395
 SystematicChecks.C:396
 SystematicChecks.C:397
 SystematicChecks.C:398
 SystematicChecks.C:399
 SystematicChecks.C:400
 SystematicChecks.C:401
 SystematicChecks.C:402
 SystematicChecks.C:403
 SystematicChecks.C:404
 SystematicChecks.C:405
 SystematicChecks.C:406
 SystematicChecks.C:407
 SystematicChecks.C:408
 SystematicChecks.C:409
 SystematicChecks.C:410
 SystematicChecks.C:411
 SystematicChecks.C:412
 SystematicChecks.C:413
 SystematicChecks.C:414
 SystematicChecks.C:415
 SystematicChecks.C:416
 SystematicChecks.C:417
 SystematicChecks.C:418
 SystematicChecks.C:419
 SystematicChecks.C:420
 SystematicChecks.C:421
 SystematicChecks.C:422
 SystematicChecks.C:423
 SystematicChecks.C:424
 SystematicChecks.C:425
 SystematicChecks.C:426
 SystematicChecks.C:427
 SystematicChecks.C:428
 SystematicChecks.C:429
 SystematicChecks.C:430
 SystematicChecks.C:431
 SystematicChecks.C:432
 SystematicChecks.C:433
 SystematicChecks.C:434
 SystematicChecks.C:435
 SystematicChecks.C:436
 SystematicChecks.C:437
 SystematicChecks.C:438
 SystematicChecks.C:439
 SystematicChecks.C:440
 SystematicChecks.C:441
 SystematicChecks.C:442
 SystematicChecks.C:443
 SystematicChecks.C:444
 SystematicChecks.C:445
 SystematicChecks.C:446
 SystematicChecks.C:447
 SystematicChecks.C:448
 SystematicChecks.C:449
 SystematicChecks.C:450
 SystematicChecks.C:451
 SystematicChecks.C:452
 SystematicChecks.C:453
 SystematicChecks.C:454
 SystematicChecks.C:455
 SystematicChecks.C:456
 SystematicChecks.C:457
 SystematicChecks.C:458
 SystematicChecks.C:459
 SystematicChecks.C:460
 SystematicChecks.C:461
 SystematicChecks.C:462
 SystematicChecks.C:463
 SystematicChecks.C:464
 SystematicChecks.C:465
 SystematicChecks.C:466
 SystematicChecks.C:467
 SystematicChecks.C:468
 SystematicChecks.C:469
 SystematicChecks.C:470
 SystematicChecks.C:471
 SystematicChecks.C:472
 SystematicChecks.C:473
 SystematicChecks.C:474
 SystematicChecks.C:475
 SystematicChecks.C:476
 SystematicChecks.C:477
 SystematicChecks.C:478
 SystematicChecks.C:479
 SystematicChecks.C:480
 SystematicChecks.C:481
 SystematicChecks.C:482
 SystematicChecks.C:483
 SystematicChecks.C:484
 SystematicChecks.C:485
 SystematicChecks.C:486
 SystematicChecks.C:487
 SystematicChecks.C:488
 SystematicChecks.C:489
 SystematicChecks.C:490
 SystematicChecks.C:491
 SystematicChecks.C:492
 SystematicChecks.C:493
 SystematicChecks.C:494
 SystematicChecks.C:495
 SystematicChecks.C:496
 SystematicChecks.C:497
 SystematicChecks.C:498
 SystematicChecks.C:499
 SystematicChecks.C:500
 SystematicChecks.C:501
 SystematicChecks.C:502
 SystematicChecks.C:503
 SystematicChecks.C:504
 SystematicChecks.C:505
 SystematicChecks.C:506
 SystematicChecks.C:507
 SystematicChecks.C:508
 SystematicChecks.C:509
 SystematicChecks.C:510
 SystematicChecks.C:511
 SystematicChecks.C:512
 SystematicChecks.C:513
 SystematicChecks.C:514
 SystematicChecks.C:515
 SystematicChecks.C:516
 SystematicChecks.C:517
 SystematicChecks.C:518
 SystematicChecks.C:519
 SystematicChecks.C:520
 SystematicChecks.C:521
 SystematicChecks.C:522
 SystematicChecks.C:523
 SystematicChecks.C:524
 SystematicChecks.C:525
 SystematicChecks.C:526
 SystematicChecks.C:527
 SystematicChecks.C:528
 SystematicChecks.C:529
 SystematicChecks.C:530
 SystematicChecks.C:531
 SystematicChecks.C:532
 SystematicChecks.C:533
 SystematicChecks.C:534
 SystematicChecks.C:535
 SystematicChecks.C:536
 SystematicChecks.C:537
 SystematicChecks.C:538
 SystematicChecks.C:539
 SystematicChecks.C:540
 SystematicChecks.C:541
 SystematicChecks.C:542
 SystematicChecks.C:543
 SystematicChecks.C:544
 SystematicChecks.C:545
 SystematicChecks.C:546
 SystematicChecks.C:547
 SystematicChecks.C:548
 SystematicChecks.C:549
 SystematicChecks.C:550
 SystematicChecks.C:551