File indexing completed on 2026-04-06 08:08:17
0001 void fit_symmetric_graph(TGraphErrors* (&graph_double),
0002 const TGraphErrors* graph_oneside)
0003 {
0004 graph_double = new TGraphErrors();
0005 std::stringstream graphname;
0006 graphname << graph_oneside->GetName() << "_double";
0007 graph_double->SetName(graphname.str().c_str());
0008 const int N = graph_oneside->GetN() * 2;
0009 for (int i = 0; i < N/2; i++) {
0010 double x = graph_oneside->GetPointX(i);
0011 double y = graph_oneside->GetPointY(i);
0012 double ey = graph_oneside->GetErrorY(i);
0013 graph_double->SetPoint(i, x, y); graph_double->SetPoint(N-1-i, -x, y);
0014 graph_double->SetPointError(i, 0, ey); graph_double->SetPointError(N-1-i, 0, ey);
0015 }
0016 }
0017
0018 void write_csv_ratios(const std::string &selection_label = "MBD_pt_l3_0mrad",
0019 const std::string &production_date = "01312026",
0020 const std::string &inputfolder_gpr_folder = "",
0021 const std::string &outputfolder = "csv_ratios")
0022 {
0023 const std::string inputfolder = inputfolder_gpr_folder + "/result_comparison/analysis_ana509/01312026/" + selection_label;
0024
0025 const int nPtBins = 9;
0026 const int nEtaBins = 8;
0027 const int nXfBins = 8;
0028
0029
0030 {
0031 std::string inputfilename = inputfolder + "/pt_ratios.root";
0032 TFile *inputfile_ratios = TFile::Open(inputfilename.c_str());
0033
0034 std::stringstream csv_parametric_name;
0035 csv_parametric_name << outputfolder << "/pt_ratios_" << production_date << "_" << selection_label << ".csv";
0036 std::stringstream csv_gpr_name;
0037 csv_gpr_name << outputfolder << "/pt_ratios_" << production_date << "_" << selection_label << "_gpr.csv";
0038
0039 TGraphErrors *pt_parametric_ratios_pi0 = (TGraphErrors*) inputfile_ratios->Get("pt_background_parametric_ratios_pi0");
0040 TGraphErrors *pt_parametric_ratios_eta = (TGraphErrors*) inputfile_ratios->Get("pt_background_parametric_ratios_eta");
0041 TGraphErrors *pt_gpr_ratios_pi0 = (TGraphErrors*) inputfile_ratios->Get("pt_background_gpr_ratios_pi0");
0042 TGraphErrors *pt_gpr_ratios_eta = (TGraphErrors*) inputfile_ratios->Get("pt_background_gpr_ratios_eta");
0043
0044 std::ofstream fout_parametric(csv_parametric_name.str());
0045 for (int iPt = 0; iPt < nPtBins - 1; iPt++) {
0046 double ratio = (pt_parametric_ratios_pi0->GetPointY(iPt) / 100);
0047 fout_parametric << (ratio == ratio ? ratio : 1) << ", ";
0048 }
0049 fout_parametric << (pt_parametric_ratios_pi0->GetPointY(nPtBins-1) / 100) << "\n";
0050 for (int iPt = 0; iPt < nPtBins - 1; iPt++) {
0051 double ratio = (pt_parametric_ratios_eta->GetPointY(iPt) / 100);
0052 fout_parametric << (ratio == ratio ? ratio : 1) << ", ";
0053 }
0054 fout_parametric << (pt_parametric_ratios_eta->GetPointY(nPtBins-1) / 100) << "\n";
0055 for (int iPt = 0; iPt < nPtBins - 1; iPt++) {
0056 fout_parametric << 0 << ", ";
0057 }
0058 fout_parametric << 0 << "\n";
0059 for (int iPt = 0; iPt < nPtBins - 1; iPt++) {
0060 fout_parametric << 0 << ", ";
0061 }
0062 fout_parametric << 0 << "\n";
0063 fout_parametric.close();
0064
0065 std::ofstream fout_gpr(csv_gpr_name.str());
0066 for (int iPt = 0; iPt < nPtBins - 1; iPt++) {
0067 double ratio = (pt_gpr_ratios_pi0->GetPointY(iPt) / 100);
0068 fout_gpr << (ratio == ratio ? ratio : 1) << ", ";
0069 }
0070 fout_gpr << (pt_gpr_ratios_pi0->GetPointY(nPtBins-1) / 100) << "\n";
0071 for (int iPt = 0; iPt < nPtBins - 1; iPt++) {
0072 double ratio = (pt_gpr_ratios_eta->GetPointY(iPt) / 100);
0073 fout_gpr << (ratio == ratio ? ratio : 1) << ", ";
0074 }
0075 fout_gpr << (pt_gpr_ratios_eta->GetPointY(nPtBins-1) / 100) << "\n";
0076 for (int iPt = 0; iPt < nPtBins - 1; iPt++) {
0077 fout_gpr << 0 << ", ";
0078 }
0079 fout_gpr << 0 << "\n";
0080 for (int iPt = 0; iPt < nPtBins - 1; iPt++) {
0081 fout_gpr << 0 << ", ";
0082 }
0083 fout_gpr << 0 << "\n";
0084 fout_gpr.close();
0085 }
0086
0087
0088 {
0089 std::string inputfilename = inputfolder + "/xf_ratios.root";
0090 TFile *inputfile_ratios = TFile::Open(inputfilename.c_str());
0091
0092 std::stringstream csv_parametric_name;
0093 csv_parametric_name << outputfolder << "/xf_ratios_" << production_date << "_" << selection_label << ".csv";
0094 std::stringstream csv_gpr_name;
0095 csv_gpr_name << outputfolder << "/xf_ratios_" << production_date << "_" << selection_label << "_gpr.csv";
0096
0097 TGraphErrors *xf_parametric_ratios_pi0_single = (TGraphErrors*) inputfile_ratios->Get("xf_background_parametric_ratios_pi0");
0098 TGraphErrors *xf_parametric_ratios_eta_single = (TGraphErrors*) inputfile_ratios->Get("xf_background_parametric_ratios_eta");
0099 TGraphErrors *xf_gpr_ratios_pi0_single = (TGraphErrors*) inputfile_ratios->Get("xf_background_gpr_ratios_pi0");
0100 TGraphErrors *xf_gpr_ratios_eta_single = (TGraphErrors*) inputfile_ratios->Get("xf_background_gpr_ratios_eta");
0101
0102 TGraphErrors *xf_parametric_ratios_pi0 = nullptr; fit_symmetric_graph(xf_parametric_ratios_pi0, xf_parametric_ratios_pi0_single);
0103 TGraphErrors *xf_parametric_ratios_eta = nullptr; fit_symmetric_graph(xf_parametric_ratios_eta, xf_parametric_ratios_eta_single);
0104 TGraphErrors *xf_gpr_ratios_pi0 = nullptr; fit_symmetric_graph(xf_gpr_ratios_pi0, xf_gpr_ratios_pi0_single);
0105 TGraphErrors *xf_gpr_ratios_eta = nullptr; fit_symmetric_graph(xf_gpr_ratios_eta, xf_gpr_ratios_eta_single);
0106
0107 std::ofstream fout_parametric(csv_parametric_name.str());
0108 for (int iXf = 0; iXf < nXfBins - 1; iXf++) {
0109 fout_parametric << (xf_parametric_ratios_pi0->GetPointY(iXf) / 100) << ", ";
0110 }
0111 fout_parametric << (xf_parametric_ratios_pi0->GetPointY(nXfBins-1) / 100) << "\n";
0112 for (int iXf = 0; iXf < nXfBins - 1; iXf++) {
0113 fout_parametric << (xf_parametric_ratios_eta->GetPointY(iXf) / 100) << ", ";
0114 }
0115 fout_parametric << (xf_parametric_ratios_eta->GetPointY(nXfBins-1) / 100) << "\n";
0116 for (int iXf = 0; iXf < nXfBins - 1; iXf++) {
0117 fout_parametric << 0 << ", ";
0118 }
0119 fout_parametric << 0 << "\n";
0120 for (int iXf = 0; iXf < nXfBins - 1; iXf++) {
0121 fout_parametric << 0 << ", ";
0122 }
0123 fout_parametric << 0 << "\n";
0124 fout_parametric.close();
0125
0126 std::ofstream fout_gpr(csv_gpr_name.str());
0127 for (int iXf = 0; iXf < nXfBins - 1; iXf++) {
0128 fout_gpr << (xf_gpr_ratios_pi0->GetPointY(iXf) / 100) << ", ";
0129 }
0130 fout_gpr << (xf_gpr_ratios_pi0->GetPointY(nXfBins-1) / 100) << "\n";
0131 for (int iXf = 0; iXf < nXfBins - 1; iXf++) {
0132 fout_gpr << (xf_gpr_ratios_eta->GetPointY(iXf) / 100) << ", ";
0133 }
0134 fout_gpr << (xf_gpr_ratios_eta->GetPointY(nXfBins-1) / 100) << "\n";
0135 for (int iXf = 0; iXf < nXfBins - 1; iXf++) {
0136 fout_gpr << 0 << ", ";
0137 }
0138 fout_gpr << 0 << "\n";
0139 for (int iXf = 0; iXf < nXfBins - 1; iXf++) {
0140 fout_gpr << 0 << ", ";
0141 }
0142 fout_gpr << 0 << "\n";
0143 fout_gpr.close();
0144 }
0145
0146
0147 {
0148 std::string inputfilename = inputfolder + "/eta_ratios.root";
0149 TFile *inputfile_ratios = TFile::Open(inputfilename.c_str());
0150
0151 std::stringstream csv_parametric_name;
0152 csv_parametric_name << outputfolder << "/eta_ratios_" << production_date << "_" << selection_label << ".csv";
0153 std::stringstream csv_gpr_name;
0154 csv_gpr_name << outputfolder << "/eta_ratios_" << production_date << "_" << selection_label << "_gpr.csv";
0155
0156 TGraphErrors *eta_parametric_ratios_pi0_single = (TGraphErrors*) inputfile_ratios->Get("eta_background_parametric_ratios_pi0");
0157 TGraphErrors *eta_parametric_ratios_eta_single = (TGraphErrors*) inputfile_ratios->Get("eta_background_parametric_ratios_eta");
0158 TGraphErrors *eta_gpr_ratios_pi0_single = (TGraphErrors*) inputfile_ratios->Get("eta_background_gpr_ratios_pi0");
0159 TGraphErrors *eta_gpr_ratios_eta_single = (TGraphErrors*) inputfile_ratios->Get("eta_background_gpr_ratios_eta");
0160
0161 TGraphErrors *eta_parametric_ratios_pi0 = nullptr; fit_symmetric_graph(eta_parametric_ratios_pi0, eta_parametric_ratios_pi0_single);
0162 TGraphErrors *eta_parametric_ratios_eta = nullptr; fit_symmetric_graph(eta_parametric_ratios_eta, eta_parametric_ratios_eta_single);
0163 TGraphErrors *eta_gpr_ratios_pi0 = nullptr; fit_symmetric_graph(eta_gpr_ratios_pi0, eta_gpr_ratios_pi0_single);
0164 TGraphErrors *eta_gpr_ratios_eta = nullptr; fit_symmetric_graph(eta_gpr_ratios_eta, eta_gpr_ratios_eta_single);
0165
0166 std::ofstream fout_parametric(csv_parametric_name.str());
0167 for (int iEta = 0; iEta < nEtaBins - 1; iEta++) {
0168 fout_parametric << (eta_parametric_ratios_pi0->GetPointY(iEta) / 100) << ", ";
0169 }
0170 fout_parametric << (eta_parametric_ratios_pi0->GetPointY(nEtaBins-1) / 100) << "\n";
0171 for (int iEta = 0; iEta < nEtaBins - 1; iEta++) {
0172 fout_parametric << (eta_parametric_ratios_eta->GetPointY(iEta) / 100) << ", ";
0173 }
0174 fout_parametric << (eta_parametric_ratios_eta->GetPointY(nEtaBins-1) / 100) << "\n";
0175 for (int iEta = 0; iEta < nEtaBins - 1; iEta++) {
0176 fout_parametric << 0 << ", ";
0177 }
0178 fout_parametric << 0 << "\n";
0179 for (int iEta = 0; iEta < nEtaBins - 1; iEta++) {
0180 fout_parametric << 0 << ", ";
0181 }
0182 fout_parametric << 0 << "\n";
0183 fout_parametric.close();
0184
0185 std::ofstream fout_gpr(csv_gpr_name.str());
0186 for (int iEta = 0; iEta < nEtaBins - 1; iEta++) {
0187 fout_gpr << (eta_gpr_ratios_pi0->GetPointY(iEta) / 100) << ", ";
0188 }
0189 fout_gpr << (eta_gpr_ratios_pi0->GetPointY(nEtaBins-1) / 100) << "\n";
0190 for (int iEta = 0; iEta < nEtaBins - 1; iEta++) {
0191 fout_gpr << (eta_gpr_ratios_eta->GetPointY(iEta) / 100) << ", ";
0192 }
0193 fout_gpr << (eta_gpr_ratios_eta->GetPointY(nEtaBins-1) / 100) << "\n";
0194 for (int iEta = 0; iEta < nEtaBins - 1; iEta++) {
0195 fout_gpr << 0 << ", ";
0196 }
0197 fout_gpr << 0 << "\n";
0198 for (int iEta = 0; iEta < nEtaBins - 1; iEta++) {
0199 fout_gpr << 0 << ", ";
0200 }
0201 fout_gpr << 0 << "\n";
0202 fout_gpr.close();
0203 }
0204
0205 gSystem->Exit(0);
0206 }