0

我查看文档如何从直方图中获取 PDF,但找不到任何东西,那么如何从直方图中获取 PDF?,例如在 sum_pdf = zfit.pdf.SumPDF([model1 , model2], fracs=frac) 以进行拟合,或者生成一些玩具。

提前致谢。

PS。我正在寻找类似于 Roofit 的 RooHistPdf 类的东西。

4

1 回答 1

0

目前没有开箱即用的解决方案,但正在进行中。

但是,您可以简单地自己构建一些东西,例如:

import zfit
from zfit import z
import numpy as np
import tensorflow as tf

zfit.settings.options['numerical_grad'] = True


class BinnedEfficiencyPDF(zfit.pdf.BasePDF):

    def __init__(self, efficiency, eff_bins, obs, name='BinnedEfficiencyPDF'):
        self.efficiency = efficiency
        self.eff_bins = eff_bins
        super().__init__(obs=obs, name=name)

    def _binContent(self, x):
        eff_bin = np.digitize(x, self.eff_bins)
        return self.efficiency[eff_bin]

    def _unnormalized_pdf(self, x):  # or even try with PDF
        x = z.unstack_x(x)
        probs =  z.py_function(func=self._binContent, inp=[x], Tout=tf.float64)
        probs.set_shape(x.shape)
        return prob
于 2020-09-01T16:46:38.810 回答