#include "Functions.C" void Draw_graphs(TString inFileName="", TString outFileName="./test_graphs.root") { TFile *fiCorr = new TFile(inFileName.Data(),"read"); if (inFileName == "" || !fiCorr) { std::cerr << "No input file was provided!" << std::endl; return; } const std::pair bcent_range = {4.06, 8.27}; const int npid = 6; // h+-, proton, K+, K-, pi+, pi- const std::string pidname [] = {"hadrons", "proton", "kaon", "akaon", "pion", "apion"}; const int ncorrsteps = 4; const std::string corrnames [ncorrsteps] = {"PLAIN", "RECENTERED", "TWIST", "RESCALED"}; const std::string RPcorrname = "PLAIN"; const int ndatatypes = 3; const std::string datatypes [ndatatypes] = {"mc", "reco", "mcreco"}; // const std::string datatype = "mcreco"; const int nProj = 2; const std::string projv2EP [nProj] = {"cos2", "sin2"}; const std::string projv1EP [nProj] = {"cos1", "sin1"}; const std::string projv2SP [nProj] = {"x2", "y2"}; const std::string projv1SP [nProj] = {"x1", "y1"}; std::string projPtName = ""; std::string projYName = ""; TFile *foGraphs = new TFile(outFileName.Data(),"recreate"); Qn::DataContainerStatCalculate q2_tpcEP[nProj][nProj], q2_tpcSP[nProj][nProj]; Qn::DataContainerStatCalculate q1_fhcalEP[nProj][nProj], q1_fhcalSP[nProj][nProj]; Qn::DataContainerStatCalculate u2_tpcEP1[nProj][nProj][npid], u2_tpcEP2[nProj][nProj][npid]; Qn::DataContainerStatCalculate u2_tpcSP1[nProj][nProj][npid], u2_tpcSP2[nProj][nProj][npid]; // Qn::DataContainerStatCalculate u2_rpSP1[nProj][nProj][npid], u2_rpSP2[nProj][nProj][npid]; Qn::DataContainerStatCalculate u2_fhcalEP1[nProj][nProj][nProj][npid], u2_fhcalEP2[nProj][nProj][nProj][npid]; Qn::DataContainerStatCalculate u2_fhcalSP1[nProj][nProj][nProj][npid], u2_fhcalSP2[nProj][nProj][nProj][npid]; Qn::DataContainerStatCalculate u2_rpSP1[nProj][nProj][nProj][npid], u2_rpSP2[nProj][nProj][nProj][npid]; Qn::DataContainerStatCalculate u1_fhcalEP1[nProj][nProj][npid], u1_fhcalEP2[nProj][nProj][npid]; Qn::DataContainerStatCalculate u1_fhcalSP1[nProj][nProj][npid], u1_fhcalSP2[nProj][nProj][npid]; Qn::DataContainerStatCalculate u1_rpSP1[nProj][nProj][npid], u1_rpSP2[nProj][nProj][npid]; TGraphErrors *graph; // Setting up the name of the Qn*Qn correlations // Qn*Qn = "dir/nameQn1_correction.nameQn2_correction.component" // For example: "QQ/EP/mc_TPC_EP_L_PLAIN.mc_TPC_EP_R_PLAIN.cos2cos2" std::string name; // Define the correction step that is in the input file std::string corrname = ""; std::string datatype = ""; for (int idtype=0; idtypeFindKeyAny(name.c_str())) continue; else { corrname = corrnames[icorr]; datatype = datatypes[idtype]; std::cout << "Data type found in the input file : " << datatype << std::endl; std::cout << "Correction step found in the input file: " << corrname << std::endl; } } } if (corrname == "" || datatype == "") { std::cerr << "Couldn't find correction or datatype from the file. Exiting..." << std::endl; return; } if (datatype == "mc") projPtName = "_pT"; if (datatype == "reco") projPtName = "_pT"; if (datatype == "mcreco") projPtName = "_mc_pT"; if (projPtName == "") { std::cerr << "Data type is not correctly set!" << std::endl; return; } if (datatype == "mc") projYName = "_rapidity"; if (datatype == "reco") projYName = "_rapidity_pdg"; if (datatype == "mcreco") projYName = "_mc_rapidity"; if (projYName == "") { std::cerr << "Data type is not correctly set!" << std::endl; return; } std::string trackBranchName = ""; if (datatype == "mc") trackBranchName = "McTracks"; if (datatype == "reco") trackBranchName = "TpcTracks"; if (datatype == "mcreco") trackBranchName = "TpcTracks"; if (trackBranchName == "") { std::cerr << "Data type is not correctly set!" << std::endl; return; } // Getting correlations from the TFile // Qn*Qn for (int iproj1=0; iproj1) = Sqrt( + ) Qn::DataContainerStatCalculate res2_tpcEP = Merge(q2_tpcEP[0][0], q2_tpcEP[1][1]); Qn::DataContainerStatCalculate res_tpcEP = Sqrt( res2_tpcEP ); Qn::DataContainerStatCalculate res2_fhcalEP = Merge(q1_fhcalEP[0][0], q1_fhcalEP[1][1]); Qn::DataContainerStatCalculate res_fhcalEP = Sqrt( res2_fhcalEP ); Qn::DataContainerStatCalculate res2_tpcSP = Merge(q2_tpcSP[0][0], q2_tpcSP[1][1]); Qn::DataContainerStatCalculate res_tpcSP = Sqrt( res2_tpcSP ); Qn::DataContainerStatCalculate res2_fhcalSP = Merge(q1_fhcalSP[0][0], q1_fhcalSP[1][1]); Qn::DataContainerStatCalculate res_fhcalSP = Sqrt( res2_fhcalSP ); foGraphs->mkdir("res"); foGraphs->cd("res"); name = "res_v2_tpcEP_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(res_tpcEP); graph->SetName(Form("%s", name.c_str())); name += ";b, fm;Resolution"; graph->SetTitle(Form("%s", name.c_str())); graph->Write(); name = "res_v1_fhcalEP_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(res_fhcalEP); graph->SetName(Form("%s", name.c_str())); name += ";b, fm;Resolution"; graph->SetTitle(Form("%s", name.c_str())); graph->Write(); foGraphs->mkdir("resSP"); foGraphs->cd("resSP"); name = "res_v2_tpcSP_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(res_tpcSP); graph->SetName(Form("%s", name.c_str())); name += ";b, fm;Resolution"; graph->SetTitle(Form("%s", name.c_str())); graph->Write(); name = "res_v1_fhcalSP_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(res_fhcalSP); graph->SetName(Form("%s", name.c_str())); name += ";b, fm;Resolution"; graph->SetTitle(Form("%s", name.c_str())); graph->Write(); Qn::DataContainerStatCalculate vn_pT_obs, vn_pT_div, vn_pT_cent, vn_pT; Qn::DataContainerStatCalculate vn_y_obs, vn_y_div, vn_y_cent, vn_y; Qn::DataContainerStatCalculate uq_cent, uq_pT, uq_y; Qn::DataContainerStatCalculate vn_comp_pT_obs, vn_comp_pT_div, vn_comp_pT_cent, vn_comp_pT; Qn::DataContainerStatCalculate vn_comp_y_obs, vn_comp_y_div, vn_comp_y_cent, vn_comp_y; // v2 TPC EP foGraphs->mkdir("v2tpcEP"); foGraphs->cd("v2tpcEP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{2}"; graph->SetTitle(name.c_str()); graph->Write(); vn_y_obs = Merge(Merge(u2_tpcEP1[0][0][ipid], u2_tpcEP1[1][1][ipid]), Merge(u2_tpcEP2[0][0][ipid], u2_tpcEP2[1][1][ipid])); vn_y_div = vn_y_obs / res_tpcEP; vn_y_cent = vn_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_y = vn_y_cent.Projection({name}); vn_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v2_y_tpcEP_" + pidname[ipid] + "_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(vn_y); graph->SetName(name.c_str()); name += ";y;v_{2}"; graph->SetTitle(name.c_str()); graph->Write(); } // v2 TPC SP foGraphs->mkdir("v2tpcSP"); foGraphs->cd("v2tpcSP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{2}"; graph->SetTitle(name.c_str()); graph->Write(); vn_y_obs = Merge(Merge(u2_tpcSP1[0][0][ipid], u2_tpcSP1[1][1][ipid]), Merge(u2_tpcSP2[0][0][ipid], u2_tpcSP2[1][1][ipid])); vn_y_div = vn_y_obs / res_tpcSP; vn_y_cent = vn_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_y = vn_y_cent.Projection({name}); vn_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v2_y_tpcSP_" + pidname[ipid] + "_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(vn_y); graph->SetName(name.c_str()); name += ";y;v_{2}"; graph->SetTitle(name.c_str()); graph->Write(); } // v1 FHCal EP foGraphs->mkdir("v1fhcalEP"); foGraphs->cd("v1fhcalEP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); vn_y_obs = Merge(Merge(-1.*u1_fhcalEP1[0][0][ipid], -1.*u1_fhcalEP1[1][1][ipid]), Merge(u1_fhcalEP2[0][0][ipid], u1_fhcalEP2[1][1][ipid])); if (corrname == "mc") { vn_y_obs = -1.*vn_y_obs; } vn_y_div = vn_y_obs / res_fhcalEP; vn_y_cent = vn_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_y = vn_y_cent.Projection({name}); vn_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v1_y_fhcalEP_" + pidname[ipid] + "_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(vn_y); graph->SetName(name.c_str()); name += ";y;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); } // v1 FHCal SP foGraphs->mkdir("v1fhcalSP"); foGraphs->cd("v1fhcalSP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); vn_y_obs = Merge(Merge(-1.*u1_fhcalSP1[0][0][ipid], -1.*u1_fhcalSP1[1][1][ipid]), Merge(u1_fhcalSP2[0][0][ipid], u1_fhcalSP2[1][1][ipid])); if (datatype == "mc") { vn_y_obs = -1. * vn_y_obs; } vn_y_div = vn_y_obs / res_fhcalSP; vn_y_cent = vn_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_y = vn_y_cent.Projection({name}); vn_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v1_y_fhcalSP_" + pidname[ipid] + "_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(vn_y); graph->SetName(name.c_str()); name += ";y;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); } // v1 RP SP foGraphs->mkdir("v1rpSP"); foGraphs->cd("v1rpSP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); vn_y_obs = Merge(Merge(u1_rpSP1[0][0][ipid], u1_rpSP1[1][1][ipid]), Merge(u1_rpSP2[0][0][ipid], u1_rpSP2[1][1][ipid])); vn_y_div = vn_y_obs; vn_y_cent = vn_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_y = vn_y_cent.Projection({name}); vn_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v1_y_rpSP_" + pidname[ipid] + "_" + corrname; graph = Qn::DataContainerHelper::ToTGraph(vn_y); graph->SetName(name.c_str()); name += ";y;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); } // QQ correlations foGraphs->mkdir("QQ"); foGraphs->cd("QQ"); for (int iproj1=0; iproj1SetName(name.c_str()); name += ";b, fm;<"+projv2EP[iproj1]+projv2EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = "QQ_tpc_"+ corrname + "_"+projv2SP[iproj1]+projv2SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(q2_tpcSP[iproj1][iproj2]); graph->SetName(name.c_str()); name += ";b, fm;<"+projv2SP[iproj1]+projv2SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = "QQ_fhcal_"+ corrname + "_"+projv1EP[iproj1]+projv1EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(q1_fhcalEP[iproj1][iproj2]); graph->SetName(name.c_str()); name += ";b, fm;<"+projv1EP[iproj1]+projv1EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = "QQ_fhcal_"+ corrname + "_"+projv1SP[iproj1]+projv1SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(q1_fhcalSP[iproj1][iproj2]); graph->SetName(name.c_str()); name += ";b, fm;<"+projv1SP[iproj1]+projv1SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); } } // uQ/QQ correlations foGraphs->mkdir("v1Components_EP"); foGraphs->cd("v1Components_EP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); vn_comp_y_obs = Merge(-1.*u1_fhcalEP1[iproj1][iproj2][ipid], u1_fhcalEP2[iproj1][iproj2][ipid]); vn_comp_y_div = vn_comp_y_obs / Sqrt(q1_fhcalEP[iproj1][iproj2]); vn_comp_y_cent = vn_comp_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_comp_y = vn_comp_y_cent.Projection({name}); vn_comp_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v1_y_fhcalEP_" + pidname[ipid] + "_" + corrname +"_"+projv1EP[iproj1]+projv1EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(vn_comp_y); graph->SetName(name.c_str()); name += ";y;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); } } } foGraphs->mkdir("v2Components_EP"); foGraphs->cd("v2Components_EP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); vn_comp_y_obs = Merge(-1.*u1_fhcalEP1[iproj1][iproj2][ipid], u1_fhcalEP2[iproj1][iproj2][ipid]); vn_comp_y_div = vn_comp_y_obs / Sqrt(q1_fhcalEP[iproj1][iproj2]); vn_comp_y_cent = vn_comp_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_comp_y = vn_comp_y_cent.Projection({name}); vn_comp_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v1_y_fhcalEP_" + pidname[ipid] + "_" + corrname +"_"+projv1EP[iproj1]+projv1EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(vn_comp_y); graph->SetName(name.c_str()); name += ";y;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); } } } foGraphs->mkdir("v1Components_SP"); foGraphs->cd("v1Components_SP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); vn_comp_y_obs = Merge(-1.*u1_fhcalSP1[iproj1][iproj2][ipid], u1_fhcalSP2[iproj1][iproj2][ipid]); vn_comp_y_div = vn_comp_y_obs / Sqrt(q1_fhcalSP[iproj1][iproj2]); vn_comp_y_cent = vn_comp_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_comp_y = vn_comp_y_cent.Projection({name}); vn_comp_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v1_y_fhcalSP_" + pidname[ipid] + "_" + corrname +"_"+projv1SP[iproj1]+projv1SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(vn_comp_y); graph->SetName(name.c_str()); name += ";y;v_{1}"; graph->SetTitle(name.c_str()); graph->Write(); } } } foGraphs->mkdir("v2Components_SP"); foGraphs->cd("v2Components_SP"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;v_{2}"; graph->SetTitle(name.c_str()); graph->Write(); vn_comp_y_obs = Merge(u2_tpcSP1[iproj1][iproj2][ipid], u2_tpcSP2[iproj1][iproj2][ipid]); vn_comp_y_div = vn_comp_y_obs / Sqrt(q2_tpcSP[iproj1][iproj2]); vn_comp_y_cent = vn_comp_y_div.Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projYName; vn_comp_y = vn_comp_y_cent.Projection({name}); vn_comp_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "v2_y_tpcSP_" + pidname[ipid] + "_" + corrname +"_"+projv2SP[iproj1]+projv2SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(vn_comp_y); graph->SetName(name.c_str()); name += ";y;v_{2}"; graph->SetTitle(name.c_str()); graph->Write(); } } } // uQ correlations foGraphs->mkdir("uQ"); foGraphs->cd("uQ"); for (int ipid=0; ipidSetName(name.c_str()); name += ";p_{T}, GeV/c;<"+projv2EP[iproj1]+projv2EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = trackBranchName+projYName; uq_y = uq_cent.Projection({name}); uq_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_y_tpcEP1_" + pidname[ipid] + "_" + corrname + "_"+projv2EP[iproj1]+projv2EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_y); graph->SetName(name.c_str()); name += ";y;<"+projv2EP[iproj1]+projv2EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); uq_cent = u2_tpcEP2[iproj1][iproj2][ipid].Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projPtName; uq_pT = uq_cent.Projection({name}); uq_pT.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_pT_tpcEP2_" + pidname[ipid] + "_" + corrname + "_"+projv2EP[iproj1]+projv2EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_pT); graph->SetName(name.c_str()); name += ";p_{T}, GeV/c;<"+projv2EP[iproj1]+projv2EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = trackBranchName+projYName; uq_y = uq_cent.Projection({name}); uq_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_y_tpcEP2_" + pidname[ipid] + "_" + corrname + "_"+projv2EP[iproj1]+projv2EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_y); graph->SetName(name.c_str()); name += ";y;<"+projv2EP[iproj1]+projv2EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); uq_cent = u2_tpcSP1[iproj1][iproj2][ipid].Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projPtName; uq_pT = uq_cent.Projection({name}); uq_pT.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_pT_tpcSP1_" + pidname[ipid] + "_" + corrname + "_"+projv2SP[iproj1]+projv2SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_pT); graph->SetName(name.c_str()); name += ";p_{T}, GeV/c;<"+projv2SP[iproj1]+projv2SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = trackBranchName+projYName; uq_y = uq_cent.Projection({name}); uq_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_y_tpcSP1_" + pidname[ipid] + "_" + corrname + "_"+projv2SP[iproj1]+projv2SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_y); graph->SetName(name.c_str()); name += ";y;<"+projv2SP[iproj1]+projv2SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); uq_cent = u2_tpcSP2[iproj1][iproj2][ipid].Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projPtName; uq_pT = uq_cent.Projection({name}); uq_pT.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_pT_tpcSP2_" + pidname[ipid] + "_" + corrname + "_"+projv2SP[iproj1]+projv2SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_pT); graph->SetName(name.c_str()); name += ";p_{T}, GeV/c;<"+projv2SP[iproj1]+projv2SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = trackBranchName+projYName; uq_y = uq_cent.Projection({name}); uq_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_y_tpcSP2_" + pidname[ipid] + "_" + corrname + "_"+projv2SP[iproj1]+projv2SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_y); graph->SetName(name.c_str()); name += ";y;<"+projv2SP[iproj1]+projv2SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); uq_cent = u1_fhcalEP1[iproj1][iproj2][ipid].Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projPtName; uq_pT = uq_cent.Projection({name}); uq_pT.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_pT_fhcalEP1_" + pidname[ipid] + "_" + corrname + "_"+projv1EP[iproj1]+projv1EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_pT); graph->SetName(name.c_str()); name += ";p_{T}, GeV/c;<"+projv1EP[iproj1]+projv1EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = trackBranchName+projYName; uq_y = uq_cent.Projection({name}); uq_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_y_fhcalEP1_" + pidname[ipid] + "_" + corrname + "_"+projv1EP[iproj1]+projv1EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_y); graph->SetName(name.c_str()); name += ";y;<"+projv1EP[iproj1]+projv1EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); uq_cent = u1_fhcalEP2[iproj1][iproj2][ipid].Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projPtName; uq_pT = uq_cent.Projection({name}); uq_pT.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_pT_fhcalEP2_" + pidname[ipid] + "_" + corrname + "_"+projv1EP[iproj1]+projv1EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_pT); graph->SetName(name.c_str()); name += ";p_{T}, GeV/c;<"+projv1EP[iproj1]+projv1EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = trackBranchName+projYName; uq_y = uq_cent.Projection({name}); uq_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_y_fhcalEP2_" + pidname[ipid] + "_" + corrname + "_"+projv1EP[iproj1]+projv1EP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_y); graph->SetName(name.c_str()); name += ";y;<"+projv1EP[iproj1]+projv1EP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); uq_cent = u1_fhcalSP1[iproj1][iproj2][ipid].Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projPtName; uq_pT = uq_cent.Projection({name}); uq_pT.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_pT_fhcalSP1_" + pidname[ipid] + "_" + corrname + "_"+projv1SP[iproj1]+projv1SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_pT); graph->SetName(name.c_str()); name += ";p_{T}, GeV/c;<"+projv1SP[iproj1]+projv1SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = trackBranchName+projYName; uq_y = uq_cent.Projection({name}); uq_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_y_fhcalSP1_" + pidname[ipid] + "_" + corrname + "_"+projv1SP[iproj1]+projv1SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_y); graph->SetName(name.c_str()); name += ";y;<"+projv1SP[iproj1]+projv1SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); uq_cent = u1_fhcalSP2[iproj1][iproj2][ipid].Rebin({"McEvent_B", 1, bcent_range.first, bcent_range.second}); name = trackBranchName+projPtName; uq_pT = uq_cent.Projection({name}); uq_pT.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_pT_fhcalSP2_" + pidname[ipid] + "_" + corrname + "_"+projv1SP[iproj1]+projv1SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_pT); graph->SetName(name.c_str()); name += ";p_{T}, GeV/c;<"+projv1SP[iproj1]+projv1SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); name = trackBranchName+projYName; uq_y = uq_cent.Projection({name}); uq_y.SetErrors(Qn::Stat::ErrorType::BOOTSTRAP); name = "uQ_y_fhcalSP2_" + pidname[ipid] + "_" + corrname + "_"+projv1SP[iproj1]+projv1SP[iproj2]; graph = Qn::DataContainerHelper::ToTGraph(uq_y); graph->SetName(name.c_str()); name += ";y;<"+projv1SP[iproj1]+projv1SP[iproj2]+">"; graph->SetTitle(name.c_str()); graph->Write(); } } } foGraphs->Close(); }