File indexing completed on 2026-05-23 08:10:28
0001 #include "../corrections/EfficiencyCorrection.h"
0002 #include "../corrections/LambdaFeedDownCorrection.h"
0003 #include "../corrections/GeoAcceptanceCorrection.h"
0004 #include "../corrections/TrivialEfficiencyCorrection.h"
0005
0006 #include "ResonanceRatio.h"
0007 #include "LambdaModel.h"
0008 #include "KshortModel.h"
0009 #include "../bco_correction/V0DuplicateReader.h"
0010
0011 void Lambda_Kshort_ratio()
0012 {
0013 TFile* Ks_file = TFile::Open("/sphenix/user/aopatton/Ana538CombinedOutput/outputLFPPG/KShort6RunCombined.root");
0014 TFile* lambda_file = TFile::Open("/sphenix/user/aopatton/Ana538CombinedOutput/outputLFPPG/Lambda6RunCombined.root");
0015
0016 TTree* Ks_tree = (TTree*)Ks_file->Get("DecayTree");
0017 TTree* lambda_tree = (TTree*)lambda_file->Get("DecayTree");
0018
0019 std::vector<HistogramInfo> variables =
0020 {
0021 BinInfo::final_pt_bins,
0022 BinInfo::final_eta_bins,
0023 BinInfo::final_rapidity_bins,
0024 BinInfo::final_phi_bins,
0025 };
0026
0027 RooArgList Ks_args;
0028 RooArgList lambda_args;
0029
0030 RooRealVar m_ks("K_S0_mass","K_S0_mass",0.45,0.55);
0031 RooRealVar m_lambda("Lambda0_mass","Lambda0_mass",1.1,1.14);
0032
0033 Ks_args.add(m_ks);
0034 lambda_args.add(m_lambda);
0035
0036 std::vector<RooRealVar> Ks_vars;
0037 std::vector<RooRealVar> lambda_vars;
0038
0039 for (HistogramInfo& hinfo : variables)
0040 {
0041 std::string Ks_branchname = "K_S0_" + hinfo.name;
0042 std::string lambda_branchname = "Lambda0_" + hinfo.name;
0043 std::cout << Ks_branchname << " " << lambda_branchname << std::endl;
0044
0045 RooRealVar Ks_var(Ks_branchname.c_str(), Ks_branchname.c_str(), hinfo.bins.front(), hinfo.bins.back());
0046 RooRealVar lambda_var(lambda_branchname.c_str(), lambda_branchname.c_str(), hinfo.bins.front(), hinfo.bins.back());
0047
0048 Ks_vars.push_back(Ks_var);
0049 lambda_vars.push_back(lambda_var);
0050 }
0051
0052 for (int i = 0; i < (int)Ks_vars.size(); i++)
0053 {
0054 Ks_args.add(Ks_vars[i]);
0055 lambda_args.add(lambda_vars[i]);
0056 }
0057
0058 Ks_args.Print();
0059 lambda_args.Print();
0060
0061 RooDataSet Ks_ds("K_S0","K_S0",Ks_args);
0062 RooDataSet lambda_ds("Lambda0","Lambda0",lambda_args);
0063
0064 V0DuplicateReader ks_reader(Ks_tree, V0DuplicateReader::ParticleType::K0s);
0065 V0DuplicateReader lambda_reader(lambda_tree, V0DuplicateReader::ParticleType::Lambda);
0066
0067 ks_reader.enableDeltaBCOCut(0, 350);
0068 lambda_reader.enableDeltaBCOCut(0, 350);
0069
0070 for (Long64_t i = 0; i < ks_reader.entries(); ++i)
0071 {
0072 ks_reader.loadEntry(i);
0073
0074 if (!ks_reader.passesDeltaBCOCut()) continue;
0075 if (!ks_reader.isCurrentEntryUnique()) continue;
0076
0077 m_ks.setVal(ks_reader.mass());
0078
0079 for (int ivar = 0; ivar < (int)variables.size(); ++ivar)
0080 {
0081 const std::string& name = variables[ivar].name;
0082
0083 if (name == "pT") Ks_vars[ivar].setVal(ks_reader.pt());
0084 else if (name == "pseudorapidity") Ks_vars[ivar].setVal(ks_reader.eta());
0085 else if (name == "rapidity") Ks_vars[ivar].setVal(ks_reader.rapidity());
0086 else if (name == "phi") Ks_vars[ivar].setVal(ks_reader.phi());
0087 }
0088
0089 Ks_ds.add(Ks_args);
0090 }
0091
0092 for (Long64_t i = 0; i < lambda_reader.entries(); ++i)
0093 {
0094 lambda_reader.loadEntry(i);
0095
0096 if (!lambda_reader.passesDeltaBCOCut()) continue;
0097 if (!lambda_reader.isCurrentEntryUnique()) continue;
0098
0099 m_lambda.setVal(lambda_reader.mass());
0100
0101 for (int ivar = 0; ivar < (int)variables.size(); ++ivar)
0102 {
0103 const std::string& name = variables[ivar].name;
0104
0105 if (name == "pT") lambda_vars[ivar].setVal(lambda_reader.pt());
0106 else if (name == "pseudorapidity") lambda_vars[ivar].setVal(lambda_reader.eta());
0107 else if (name == "rapidity") lambda_vars[ivar].setVal(lambda_reader.rapidity());
0108 else if (name == "phi") lambda_vars[ivar].setVal(lambda_reader.phi());
0109 }
0110
0111 lambda_ds.add(lambda_args);
0112 }
0113
0114 std::cout << "K0s unique candidates = " << ks_reader.numberOfUniqueCandidates() << std::endl;
0115 std::cout << "K0s duplicate candidates = " << ks_reader.numberOfDuplicateCandidates() << std::endl;
0116 std::cout << "Lambda unique candidates = " << lambda_reader.numberOfUniqueCandidates() << std::endl;
0117 std::cout << "Lambda duplicate candidates= " << lambda_reader.numberOfDuplicateCandidates() << std::endl;
0118
0119 KshortModel kshort_model;
0120 LambdaModel lambda_model;
0121
0122 std::string fd_filename = "/sphenix/tg/tg01/hf/hjheng/HF-analysis/simulation/Pythia_ppMinBias/cascade_feeddown/Cascade_feeddown_fraction.root";
0123 std::vector<std::vector<std::shared_ptr<CorrectionHistogram1D>>> corrections(variables.size());
0124
0125 corrections[0].push_back(std::make_shared<LambdaFeedDownCorrection>(fd_filename,"h_feeddown_frac_xi_all"));
0126 corrections[0].push_back(std::make_shared<EfficiencyCorrection>());
0127 corrections[0].push_back(std::make_shared<GeoAcceptanceCorrection>("/sphenix/u/cdean/analysis/LightFlavorRatios/geometric_acceptance/analysis/plots/Lambda0_to_KS0_geometric_acceptance_ratio.root","pT"));
0128
0129 corrections[1].push_back(std::make_shared<LambdaFeedDownCorrection>(fd_filename,"h_feeddown_frac_xi_eta_all"));
0130 corrections[1].push_back(std::make_shared<TrivialEfficiencyCorrection>("awef"));
0131 corrections[1].push_back(std::make_shared<GeoAcceptanceCorrection>("/sphenix/u/cdean/analysis/LightFlavorRatios/geometric_acceptance/analysis/plots/Lambda0_to_KS0_geometric_acceptance_ratio_eta.root","Lambda0_inGeo_#eta"));
0132
0133 corrections[2].push_back(std::make_shared<LambdaFeedDownCorrection>(fd_filename,"h_feeddown_frac_xi_rapidity_all"));
0134 corrections[2].push_back(std::make_shared<TrivialEfficiencyCorrection>("aweg"));
0135 corrections[2].push_back(std::make_shared<GeoAcceptanceCorrection>("/sphenix/u/cdean/analysis/LightFlavorRatios/geometric_acceptance/analysis/plots/Lambda0_to_KS0_geometric_acceptance_ratio_rap.root","Lambda0_inGeo_y"));
0136
0137 corrections[3].push_back(std::make_shared<LambdaFeedDownCorrection>(fd_filename,"h_feeddown_frac_xi_phi_all"));
0138 corrections[3].push_back(std::make_shared<TrivialEfficiencyCorrection>("aweh"));
0139 corrections[3].push_back(std::make_shared<GeoAcceptanceCorrection>("/sphenix/u/cdean/analysis/LightFlavorRatios/geometric_acceptance/analysis/plots/Lambda0_to_KS0_geometric_acceptance_ratio_phi.root","Lambda0_inGeo_#phi"));
0140
0141 TFile* fout = new TFile("fits.root","RECREATE");
0142
0143 ResonanceRatio analyzer(lambda_model, kshort_model,
0144 fout,"lambdaKsratio","#Lambda/2K_{S}^{0} ratio",1./2.,true,
0145 variables,corrections);
0146
0147 analyzer.calculate_ratios_unbinned(lambda_ds,Ks_ds);
0148 }