Back to home page

sPhenix code displayed by LXR

 
 

    


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   // pT asymmetries
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   // xF asymmetries
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   // eta asymmetries
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 }