Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:16:13

0001 #include "TFile.h"
0002 #include "TH1F.h"
0003 #include "TH2F.h"
0004 
0005 #include "RooRealVar.h"
0006 #include "RooGaussian.h"
0007 #include "RooVoigtian.h"
0008 #include "RooDataHist.h"
0009 #include "RooPlot.h"
0010 
0011 
0012 void calculate_ratios()
0013 {
0014   TFile* Ks_file = TFile::Open("../mass_histograms/data_Kshort_mass.root");
0015   TFile* phi_file = TFile::Open("../mass_histograms/data_phi_mass.root");
0016   TFile* lambda_file = TFile::Open("../mass_histograms/data_lambda_mass.root");
0017 
0018   TH1F* Ks_mass = (TH1F*)Ks_file->Get("Kshort_mass");
0019   TH2F* Ks_massvspt = (TH2F*)Ks_file->Get("Kshort_mass_vspt");
0020   TH2F* Ks_massvsntrk = (TH2F*)Ks_file->Get("Kshort_mass_vsntrk");
0021 
0022   TH1F* phi_mass = (TH1F*)phi_file->Get("phi_mass");
0023   TH2F* phi_massvspt = (TH2F*)phi_file->Get("phi_mass_vspt");
0024   TH2F* phi_massvsntrk = (TH2F*)phi_file->Get("phi_mass_vsntrk");
0025 
0026   TH1F* lambda_mass = (TH1F*)lambda_file->Get("lambda_mass");
0027   TH2F* lambda_massvspt = (TH2F*)lambda_file->Get("lambda_mass_vspt");
0028   TH2F* lambda_massvsntrk = (TH2F*)lambda_file->Get("lambda_mass_vsntrk");
0029 
0030 
0031   // Kshort signal and background models
0032   RooRealVar m_ks("m_ks","m",0.4,0.6);
0033 
0034   RooRealVar ks_mean("ks_mean","mean",0.5);
0035   RooRealVar ks_width("ks_width","width",0.1,0.,10.);
0036   RooGaussian ks_signal("ks_signal","signal",m_ks,ks_mean,ks_width);
0037 
0038   RooRealVar ks_const_coef("ks_a0","a0",100.,0.,1e9);
0039   RooRealVar ks_lin_coef("ks_a1","a1",0.5,-10.,10.);
0040   RooRealVar ks_quad_coef("ks_a2","a2",0.1,-10.,10.);
0041   RooPolynomial ks_bkg("ks_bkg","background",m_ks,RooArgList(ks_const_coef,ks_lin_coef,ks_quad_coef));
0042 
0043   RooRealVar ks_nsig("ks_nsig","nsignal",100.,0.,1e9);
0044   RooRealVar ks_nbkg("ks_nbkg","nbkg",100.,0.,1e9);
0045   RooAddPdf ks_massfit("ks_massfit","combined signal and background",RooArgList(ks_bkg,ks_signal),RooArgList(ks_nsig,ks_nbkg));
0046 
0047   // phi signal and background models
0048   RooRealVar m_phi("m_phi","m",0.95,1.1);
0049 
0050   RooRealVar phi_mean("phi_mean","mean",1.02);
0051   RooRealVar phi_sigma("phi_sigma","sigma",0.1,0.,10.);
0052   RooRealVar phi_width("phi_width","width",0.01,0.,10.);
0053   RooVoigtian phi_signal("phi_signal","signal",m_phi,phi_mean,phi_width,phi_sigma);
0054 
0055   RooRealVar phi_const_coef("phi_a0","a0",100.,0.,1e9);
0056   RooRealVar phi_lin_coef("phi_a1","a1",0.5,-10.,10.);
0057   RooRealVar phi_quad_coef("phi_a2","a2",0.1,-10.,10.);
0058   RooPolynomial phi_bkg("phi_bkg","background",m_phi,RooArgList(phi_const_coef,phi_lin_coef,phi_quad_coef));
0059 
0060   RooRealVar phi_bkg_frac("ks_bkg_frac","background fraction",0.5,0.,1.);
0061   RooAddPdf phi_massfit("ks_massfit","combined signal and background",RooArgList(phi_bkg,phi_signal),phi_bkg_frac);
0062 
0063   // Lambda signal and background models
0064   RooRealVar m_lambda("m_lambda","m",1.05,1.2);
0065 
0066   RooRealVar lambda_mean("lambda_mean","mean",0.5);
0067   RooRealVar lambda_width("lambda_width","width",0.1,0.,10.);
0068   RooGaussian lambda_signal("lambda_signal","signal",m_lambda,lambda_mean,lambda_width);
0069 
0070   RooRealVar lambda_const_coef("lambda_a0","a0",100,0.,1e9);
0071   RooRealVar lambda_lin_coef("lambda_a1","a1",0.5,-10.,10.);
0072   RooRealVar lambda_quad_coef("lambda_a2","a2",0.1,-10.,10.);
0073   RooPolynomial lambda_bkg("lambda_bkg","background",m_lambda,RooArgList(lambda_const_coef,lambda_lin_coef,lambda_quad_coef));
0074 
0075   RooRealVar lambda_bkg_frac("lambda_bkg_frac","background fraction",0.5,0.,1.);
0076   RooAddPdf lambda_massfit("lambda_massfit","combined signal and background",RooArgList(lambda_bkg,lambda_signal),lambda_bkg_frac);
0077   
0078   // Import histograms as RooDataHists
0079   RooDataHist ks_hist("ks_hist","ks_hist",m_ks,RooFit::Import(*Ks_mass));
0080   RooDataHist phi_hist("phi_hist","phi_hist",m_phi,RooFit::Import(*phi_mass));
0081   RooDataHist lambda_hist("lambda_hist","lambda_hist",m_lambda,RooFit::Import(*lambda_mass));
0082 
0083   // Do the fit
0084   ks_massfit.fitTo(ks_hist);
0085   //phi_massfit.fitTo(phi_hist);
0086   //lambda_massfit.fitTo(lambda_hist);
0087 
0088   RooPlot* ks_plot = m_ks.frame(RooFit::Title("Kshort mass"));
0089   ks_hist.plotOn(ks_plot);
0090   ks_massfit.plotOn(ks_plot);
0091 
0092 }