Back to home page

sPhenix code displayed by LXR

 
 

    


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 }