hash_str = cut hd = ('%d' % hash(hash_str)).replace('-', 'm') directory = '1bin_%4.2ffs_simple/%s' % (1000 * (t.getMax() - t.getMin()), hd) cache = Cache(input_data[years]['cache'].rsplit('/', 1), directory) data, sdatas = cache.read_data() if component == 'signal': data = single_bin_sig_sdata = sdatas['sig_sdata'] else: data = single_bin_bkg_sdata = sdatas['bkg_sdata'] ## Fit options fitOpts = dict(NumCPU = 4, Timer = 1, Save = True, Verbose = False, Optimize = 2, Minimizer = 'Minuit2') from P2VV.Parameterizations.SigmatPDFs import DoubleLogNormal dln = DoubleLogNormal(st) ln = dln.pdf() # Fit result = ln.fitTo(data, **fitOpts) # Plot from ROOT import TCanvas canvas = TCanvas('canvas', 'canvas', 600, 400) p = canvas.cd(1) from P2VV.Utilities.Plotting import plot from ROOT import kBlack, kBlue plot(p, st, pdf = ln, data = data, dataOpts = dict(MarkerSize = 0.8, MarkerColor = kBlack, Binning = 60), pdfOpts = dict(LineWidth = 3), xTitle = 'estimated decay-time error [ps]',
# J/psi background from P2VV.Parameterizations.MassPDFs import Background_PsiMass as PsiBkgPdf bkg_mpsi = PsiBkgPdf(mpsi, Name = 'bkg_mpsi') # Longlived time PDF from P2VV.Parameterizations.TimePDFs import LP2011_Background_Time as Background_Time psi_t = Background_Time( Name = 'psi_t', time = time_obs, resolutionModel = sig_tres.model() , psi_t_fml = dict(Name = 'psi_t_fml', Value = 6.7195e-01) , psi_t_ll_tau = dict(Name = 'psi_t_ll_tau', Value = 1.3672, MinMax = (0.5, 2.5)) , psi_t_ml_tau = dict(Name = 'psi_t_ml_tau', Value = 1.3405e-01, MinMax = (0.01, 0.5)) ) psi_t = psi_t.pdf() # Sigmat PDFs from P2VV.Parameterizations.SigmatPDFs import DoubleLogNormal sig_ln = DoubleLogNormal(st, ParNamePrefix = 'sig') bkg_ln = DoubleLogNormal(st, ParNamePrefix = 'bkg') # Background time pdf from P2VV.Parameterizations.TimePDFs import Prompt_Peak bkg_peak = Prompt_Peak(time_obs, bkg_tres.model(), Name = 'prompt_bkg') bkg_t = Background_Time(Name = 'bkg_t', time = time_obs, resolutionModel = bkg_tres.model()) # J/psi signal component psi_ll = Component('psi_ll', (psi_m, psi_t, sig_ln.pdf()), Yield= (8.5575e+03,100,500000) ) psi_prompt_pdf = Prompt_Peak(time_obs, sig_tres.model(), Name = 'psi_prompt_pdf') psi_prompt = Component('psi_prompt', (psi_prompt_pdf.pdf(), psi_m, sig_ln.pdf()), Yield = (160160, 100, 500000)) # Background component bkg_prompt_pdf = Prompt_Peak(time_obs, bkg_tres.model(), Name = 'bkg_prompt_pdf') bkg_prompt = Component('bkg_prompt', (bkg_mpsi.pdf(), bkg_prompt_pdf.pdf(), bkg_ln.pdf()),