diff --git a/.ipynb_checkpoints/raremodel-nb-checkpoint.ipynb b/.ipynb_checkpoints/raremodel-nb-checkpoint.ipynb index d62d7a9..c1d32bf 100644 --- a/.ipynb_checkpoints/raremodel-nb-checkpoint.ipynb +++ b/.ipynb_checkpoints/raremodel-nb-checkpoint.ipynb @@ -16,7 +16,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\zfit\\util\\execution.py:53: UserWarning: Not running on Linux. Determining available cpus for thread can failand be overestimated. Workaround (only if too many cpus are used):`zfit.run.set_n_cpu(your_cpu_number)`\n", + "c:\\users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\zfit\\util\\execution.py:53: UserWarning: Not running on Linux. Determining available cpus for thread can failand be overestimated. Workaround (only if too many cpus are used):`zfit.run.set_n_cpu(your_cpu_number)`\n", " warnings.warn(\"Not running on Linux. Determining available cpus for thread can fail\"\n" ] }, @@ -327,7 +327,7 @@ " def cusp(q):\n", " return bifur_gauss(q, mean = self.params['cusp_mass'], sigma_L = self.params['sigma_L'], sigma_R = self.params['sigma_R'], scale = self.params['cusp_scale'])\n", "\n", - " funcs = jpsi_res(x)# + psi2s_res(x) + cusp(x)\n", + " funcs = jpsi_res(x) + psi2s_res(x) + cusp(x)\n", "\n", " vec_f = vec(x, funcs)\n", "\n", @@ -382,7 +382,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:From C:\\Users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\tensorflow\\python\\ops\\resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n", + "WARNING:tensorflow:From c:\\users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\tensorflow\\python\\ops\\resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Colocations handled automatically by placer.\n" ] @@ -392,6 +392,7 @@ "#jpsi\n", "\n", "jpsi_mass, jpsi_width, jpsi_phase, jpsi_scale = pdg[\"jpsi\"]\n", + "jpsi_scale *= pdg[\"factor_jpsi\"]\n", "\n", "jpsi_m = zfit.Parameter(\"jpsi_m\", ztf.constant(jpsi_mass), floating = False)\n", "jpsi_w = zfit.Parameter(\"jpsi_w\", ztf.constant(jpsi_width), floating = False)\n", @@ -401,6 +402,7 @@ "#psi2s\n", "\n", "psi2s_mass, psi2s_width, psi2s_phase, psi2s_scale = pdg[\"psi2s\"]\n", + "psi2s_scale *= pdg[\"factor_psi2s\"]\n", "\n", "psi2s_m = zfit.Parameter(\"psi2s_m\", ztf.constant(psi2s_mass), floating = False)\n", "psi2s_w = zfit.Parameter(\"psi2s_w\", ztf.constant(psi2s_width), floating = False)\n", @@ -421,7 +423,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Test if graphs actually work and compute values" + "## Setup pdf" ] }, { @@ -430,6 +432,26 @@ "metadata": {}, "outputs": [], "source": [ + "total_f = total_pdf(obs=obs, jpsi_mass = jpsi_m, jpsi_scale = jpsi_s, jpsi_phase = jpsi_p, jpsi_width = jpsi_w,\n", + " psi2s_mass = psi2s_m, psi2s_scale = psi2s_s, psi2s_phase = psi2s_p, psi2s_width = psi2s_w,\n", + " cusp_mass = cusp_m, sigma_L = sig_L, sigma_R = sig_R, cusp_scale = cusp_s)\n", + "\n", + "# print(total_pdf.obs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test if graphs actually work and compute values" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ "def total_test_tf(xq):\n", "\n", " def jpsi_res(q):\n", @@ -456,26 +478,20 @@ "\n", "# calcs = zfit.run(total_test_tf(x_part))\n", "\n", - "test_q = np.linspace(2950, 3150, 200000)\n", + "test_q = np.linspace(x_min, x_max, 2000000)\n", "\n", - "calcs_test = zfit.run(total_test_tf(test_q))\n", + "probs = total_f.pdf(test_q)\n", + "\n", + "calcs_test = zfit.run(probs)\n", "res_y = zfit.run(jpsi_res(test_q))" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\numpy\\core\\numeric.py:538: ComplexWarning: Casting complex values to real discards the imaginary part\n", - " return array(a, dtype, copy=False, order=order)\n" - ] - }, - { "name": "stdout", "output_type": "stream", "text": [ @@ -484,7 +500,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -496,13 +512,14 @@ } ], "source": [ + "plt.clf()\n", "# plt.plot(x_part, calcs, '.')\n", "plt.plot(test_q, calcs_test, label = 'pdf')\n", - "plt.plot(test_q, res_y, label = 'res')\n", + "# plt.plot(test_q, res_y, label = 'res')\n", "plt.legend()\n", - "# plt.ylim(0.0, 5.5e-7)\n", - "plt.yscale('log')\n", - "plt.xlim(3050, 3150)\n", + "plt.ylim(0.0, 4e-4)\n", + "# plt.yscale('log')\n", + "# plt.xlim(3080, 3110)\n", "plt.savefig('test.png')\n", "print(jpsi_width)" ] @@ -511,26 +528,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Setup pdf" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "total_f = total_pdf(obs=obs, jpsi_mass = jpsi_m, jpsi_scale = jpsi_s, jpsi_phase = jpsi_p, jpsi_width = jpsi_w,\n", - " psi2s_mass = psi2s_m, psi2s_scale = psi2s_s, psi2s_phase = psi2s_p, psi2s_width = psi2s_w,\n", - " cusp_mass = cusp_m, sigma_L = sig_L, sigma_R = sig_R, cusp_scale = cusp_s)\n", - "\n", - "# print(total_pdf.obs)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ "## Adjust scaling of different parts" ] }, @@ -540,56 +537,84 @@ "metadata": {}, "outputs": [], "source": [ - "total_f.update_integration_options(draws_per_dim=3000000, mc_sampler=None)\n", - "inte = total_f.integrate(limits = (x_min, x_max), norm_range=False)\n", - "print(zfit.run(inte))" + "# total_f.update_integration_options(draws_per_dim=10000000, mc_sampler=None)\n", + "# inte = total_f.integrate(limits = (3000, 3200), norm_range=False)\n", + "# print(zfit.run(inte))\n", + "# print(pdg[\"jpsi_BR\"]/pdg[\"NR_BR\"], zfit.run(inte)/pdg[\"NR_auc\"])" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# factor_jpsi = pdg[\"NR_auc\"]*pdg[\"jpsi_BR\"]/(pdg[\"NR_BR\"]*pdg[\"jpsi_auc\"])\n", + "# print(np.sqrt(factor_jpsi))\n", + "# factor_psi2s = pdg[\"NR_auc\"]*pdg[\"psi2s_BR\"]/(pdg[\"NR_BR\"]*pdg[\"psi2s_auc\"])\n", + "# print(np.sqrt(factor_psi2s))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# def _t_f(xq):\n", + "\n", + "# def jpsi_res(q):\n", + "# return resonance(q, jpsi_m, jpsi_s, jpsi_p, jpsi_w)\n", + "\n", + "# def psi2s_res(q):\n", + "# return resonance(q, psi2s_m, psi2s_s, psi2s_p, psi2s_w)\n", + "\n", + "# def cusp(q):\n", + "# return bifur_gauss(q, cusp_m, sig_L, sig_R, cusp_s)\n", + "\n", + "# funcs = psi2s_res(xq) + jpsi_res(xq) + cusp(xq)\n", + "\n", + "# vec_f = vec(xq, funcs)\n", + "\n", + "# axiv_nr = axiv_nonres(xq)\n", + "\n", + "# tot = vec_f + axiv_nr\n", + " \n", + "# return tot\n", + "\n", + "# def t_f(x):\n", + "# probs = zfit.run(_t_f(ztf.constant(x)))\n", + "# return probs" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1.0 0.00 %\n", - "Time: 32.94996476173401\n" + "5404695.652173913\n" ] } ], "source": [ - "def _t_f(xq):\n", + "print(36000*(1+ pdg[\"jpsi_BR\"]/pdg[\"NR_BR\"] + pdg[\"psi2s_BR\"]/pdg[\"NR_BR\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# start = time.time()\n", "\n", - " def jpsi_res(q):\n", - " return resonance(q, jpsi_m, jpsi_s, jpsi_p, jpsi_w)\n", - "\n", - " def psi2s_res(q):\n", - " return resonance(q, psi2s_m, psi2s_s, psi2s_p, psi2s_w)\n", - "\n", - " def cusp(q):\n", - " return bifur_gauss(q, cusp_m, sig_L, sig_R, cusp_s)\n", - "\n", - " funcs = 0.0 # + psi2s_res(xq) + jpsi_res(xq) + cusp(xq)\n", - "\n", - " vec_f = vec(xq, funcs)\n", - "\n", - " axiv_nr = axiv_nonres(xq)\n", - "\n", - " tot = vec_f + axiv_nr\n", - " \n", - " return tot\n", - "\n", - "def t_f(x):\n", - " probs = zfit.run(_t_f(ztf.constant(x)))\n", - " return probs\n", - "\n", - "start = time.time()\n", - "\n", - "result, err = integrate.quad(lambda x: t_f(x), x_min, x_max, limit = 1000000)\n", - "print(result, \"{0:.2f} %\".format(err/result))\n", - "print(\"Time:\", time.time()-start)" + "# result, err = integrate.quad(lambda x: t_f(x), x_min, x_max, limit = 50)\n", + "# print(result, \"{0:.2f} %\".format(err/result))\n", + "# print(\"Time:\", time.time()-start)" ] }, { @@ -604,9 +629,19 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From c:\\users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\zfit\\core\\sample.py:98: to_int64 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.cast instead.\n" + ] + } + ], "source": [ - "nevents = 440000\n", + "nevents = 5404696\n", "\n", "samp = total_f.sample(n=nevents)" ] diff --git a/__pycache__/pdg_const.cpython-37.pyc b/__pycache__/pdg_const.cpython-37.pyc index 684e9de..b9aaa10 100644 --- a/__pycache__/pdg_const.cpython-37.pyc +++ b/__pycache__/pdg_const.cpython-37.pyc Binary files differ diff --git a/pdg_const.py b/pdg_const.py index d122d06..47c0f94 100644 --- a/pdg_const.py +++ b/pdg_const.py @@ -63,13 +63,18 @@ "bT" : [0.460, -1.089, -1.114], "NR_BR": 4.37e-7, +"NR_auc": 0.00133, #Resonances format(mass, width, phase, scale) "jpsi": (3096.0, 0.09, -1.5, 2e-2), +# "jpsi": (3096.0, 0.09, -1.5, 0.0), "jpsi_BR": 6.02e-5, -"jpsi_auc": 9.98349284137246e-16, +"jpsi_auc": 2.336e-9, +"factor_jpsi": 8856.2, "psi2s": (3686.0, 0.3, -1.5, 3.14e-3), +# "psi2s": (3686.0, 0.3, -1.5, 0.0), "psi2s_BR": 4.97e-6, -"psi2s_auc": 3.6013262555097607e-16 +"psi2s_auc": 2.853e-10, +"factor_psi2s": 7281.4 } diff --git a/raremodel-nb.ipynb b/raremodel-nb.ipynb index d62d7a9..c1d32bf 100644 --- a/raremodel-nb.ipynb +++ b/raremodel-nb.ipynb @@ -16,7 +16,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\zfit\\util\\execution.py:53: UserWarning: Not running on Linux. Determining available cpus for thread can failand be overestimated. Workaround (only if too many cpus are used):`zfit.run.set_n_cpu(your_cpu_number)`\n", + "c:\\users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\zfit\\util\\execution.py:53: UserWarning: Not running on Linux. Determining available cpus for thread can failand be overestimated. Workaround (only if too many cpus are used):`zfit.run.set_n_cpu(your_cpu_number)`\n", " warnings.warn(\"Not running on Linux. Determining available cpus for thread can fail\"\n" ] }, @@ -327,7 +327,7 @@ " def cusp(q):\n", " return bifur_gauss(q, mean = self.params['cusp_mass'], sigma_L = self.params['sigma_L'], sigma_R = self.params['sigma_R'], scale = self.params['cusp_scale'])\n", "\n", - " funcs = jpsi_res(x)# + psi2s_res(x) + cusp(x)\n", + " funcs = jpsi_res(x) + psi2s_res(x) + cusp(x)\n", "\n", " vec_f = vec(x, funcs)\n", "\n", @@ -382,7 +382,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:From C:\\Users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\tensorflow\\python\\ops\\resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n", + "WARNING:tensorflow:From c:\\users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\tensorflow\\python\\ops\\resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Colocations handled automatically by placer.\n" ] @@ -392,6 +392,7 @@ "#jpsi\n", "\n", "jpsi_mass, jpsi_width, jpsi_phase, jpsi_scale = pdg[\"jpsi\"]\n", + "jpsi_scale *= pdg[\"factor_jpsi\"]\n", "\n", "jpsi_m = zfit.Parameter(\"jpsi_m\", ztf.constant(jpsi_mass), floating = False)\n", "jpsi_w = zfit.Parameter(\"jpsi_w\", ztf.constant(jpsi_width), floating = False)\n", @@ -401,6 +402,7 @@ "#psi2s\n", "\n", "psi2s_mass, psi2s_width, psi2s_phase, psi2s_scale = pdg[\"psi2s\"]\n", + "psi2s_scale *= pdg[\"factor_psi2s\"]\n", "\n", "psi2s_m = zfit.Parameter(\"psi2s_m\", ztf.constant(psi2s_mass), floating = False)\n", "psi2s_w = zfit.Parameter(\"psi2s_w\", ztf.constant(psi2s_width), floating = False)\n", @@ -421,7 +423,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Test if graphs actually work and compute values" + "## Setup pdf" ] }, { @@ -430,6 +432,26 @@ "metadata": {}, "outputs": [], "source": [ + "total_f = total_pdf(obs=obs, jpsi_mass = jpsi_m, jpsi_scale = jpsi_s, jpsi_phase = jpsi_p, jpsi_width = jpsi_w,\n", + " psi2s_mass = psi2s_m, psi2s_scale = psi2s_s, psi2s_phase = psi2s_p, psi2s_width = psi2s_w,\n", + " cusp_mass = cusp_m, sigma_L = sig_L, sigma_R = sig_R, cusp_scale = cusp_s)\n", + "\n", + "# print(total_pdf.obs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test if graphs actually work and compute values" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ "def total_test_tf(xq):\n", "\n", " def jpsi_res(q):\n", @@ -456,26 +478,20 @@ "\n", "# calcs = zfit.run(total_test_tf(x_part))\n", "\n", - "test_q = np.linspace(2950, 3150, 200000)\n", + "test_q = np.linspace(x_min, x_max, 2000000)\n", "\n", - "calcs_test = zfit.run(total_test_tf(test_q))\n", + "probs = total_f.pdf(test_q)\n", + "\n", + "calcs_test = zfit.run(probs)\n", "res_y = zfit.run(jpsi_res(test_q))" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\numpy\\core\\numeric.py:538: ComplexWarning: Casting complex values to real discards the imaginary part\n", - " return array(a, dtype, copy=False, order=order)\n" - ] - }, - { "name": "stdout", "output_type": "stream", "text": [ @@ -484,7 +500,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -496,13 +512,14 @@ } ], "source": [ + "plt.clf()\n", "# plt.plot(x_part, calcs, '.')\n", "plt.plot(test_q, calcs_test, label = 'pdf')\n", - "plt.plot(test_q, res_y, label = 'res')\n", + "# plt.plot(test_q, res_y, label = 'res')\n", "plt.legend()\n", - "# plt.ylim(0.0, 5.5e-7)\n", - "plt.yscale('log')\n", - "plt.xlim(3050, 3150)\n", + "plt.ylim(0.0, 4e-4)\n", + "# plt.yscale('log')\n", + "# plt.xlim(3080, 3110)\n", "plt.savefig('test.png')\n", "print(jpsi_width)" ] @@ -511,26 +528,6 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Setup pdf" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "total_f = total_pdf(obs=obs, jpsi_mass = jpsi_m, jpsi_scale = jpsi_s, jpsi_phase = jpsi_p, jpsi_width = jpsi_w,\n", - " psi2s_mass = psi2s_m, psi2s_scale = psi2s_s, psi2s_phase = psi2s_p, psi2s_width = psi2s_w,\n", - " cusp_mass = cusp_m, sigma_L = sig_L, sigma_R = sig_R, cusp_scale = cusp_s)\n", - "\n", - "# print(total_pdf.obs)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ "## Adjust scaling of different parts" ] }, @@ -540,56 +537,84 @@ "metadata": {}, "outputs": [], "source": [ - "total_f.update_integration_options(draws_per_dim=3000000, mc_sampler=None)\n", - "inte = total_f.integrate(limits = (x_min, x_max), norm_range=False)\n", - "print(zfit.run(inte))" + "# total_f.update_integration_options(draws_per_dim=10000000, mc_sampler=None)\n", + "# inte = total_f.integrate(limits = (3000, 3200), norm_range=False)\n", + "# print(zfit.run(inte))\n", + "# print(pdg[\"jpsi_BR\"]/pdg[\"NR_BR\"], zfit.run(inte)/pdg[\"NR_auc\"])" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# factor_jpsi = pdg[\"NR_auc\"]*pdg[\"jpsi_BR\"]/(pdg[\"NR_BR\"]*pdg[\"jpsi_auc\"])\n", + "# print(np.sqrt(factor_jpsi))\n", + "# factor_psi2s = pdg[\"NR_auc\"]*pdg[\"psi2s_BR\"]/(pdg[\"NR_BR\"]*pdg[\"psi2s_auc\"])\n", + "# print(np.sqrt(factor_psi2s))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# def _t_f(xq):\n", + "\n", + "# def jpsi_res(q):\n", + "# return resonance(q, jpsi_m, jpsi_s, jpsi_p, jpsi_w)\n", + "\n", + "# def psi2s_res(q):\n", + "# return resonance(q, psi2s_m, psi2s_s, psi2s_p, psi2s_w)\n", + "\n", + "# def cusp(q):\n", + "# return bifur_gauss(q, cusp_m, sig_L, sig_R, cusp_s)\n", + "\n", + "# funcs = psi2s_res(xq) + jpsi_res(xq) + cusp(xq)\n", + "\n", + "# vec_f = vec(xq, funcs)\n", + "\n", + "# axiv_nr = axiv_nonres(xq)\n", + "\n", + "# tot = vec_f + axiv_nr\n", + " \n", + "# return tot\n", + "\n", + "# def t_f(x):\n", + "# probs = zfit.run(_t_f(ztf.constant(x)))\n", + "# return probs" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1.0 0.00 %\n", - "Time: 32.94996476173401\n" + "5404695.652173913\n" ] } ], "source": [ - "def _t_f(xq):\n", + "print(36000*(1+ pdg[\"jpsi_BR\"]/pdg[\"NR_BR\"] + pdg[\"psi2s_BR\"]/pdg[\"NR_BR\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# start = time.time()\n", "\n", - " def jpsi_res(q):\n", - " return resonance(q, jpsi_m, jpsi_s, jpsi_p, jpsi_w)\n", - "\n", - " def psi2s_res(q):\n", - " return resonance(q, psi2s_m, psi2s_s, psi2s_p, psi2s_w)\n", - "\n", - " def cusp(q):\n", - " return bifur_gauss(q, cusp_m, sig_L, sig_R, cusp_s)\n", - "\n", - " funcs = 0.0 # + psi2s_res(xq) + jpsi_res(xq) + cusp(xq)\n", - "\n", - " vec_f = vec(xq, funcs)\n", - "\n", - " axiv_nr = axiv_nonres(xq)\n", - "\n", - " tot = vec_f + axiv_nr\n", - " \n", - " return tot\n", - "\n", - "def t_f(x):\n", - " probs = zfit.run(_t_f(ztf.constant(x)))\n", - " return probs\n", - "\n", - "start = time.time()\n", - "\n", - "result, err = integrate.quad(lambda x: t_f(x), x_min, x_max, limit = 1000000)\n", - "print(result, \"{0:.2f} %\".format(err/result))\n", - "print(\"Time:\", time.time()-start)" + "# result, err = integrate.quad(lambda x: t_f(x), x_min, x_max, limit = 50)\n", + "# print(result, \"{0:.2f} %\".format(err/result))\n", + "# print(\"Time:\", time.time()-start)" ] }, { @@ -604,9 +629,19 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From c:\\users\\sa_li\\.conda\\envs\\rmd\\lib\\site-packages\\zfit\\core\\sample.py:98: to_int64 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use tf.cast instead.\n" + ] + } + ], "source": [ - "nevents = 440000\n", + "nevents = 5404696\n", "\n", "samp = total_f.sample(n=nevents)" ] diff --git a/test.png b/test.png index 51292dc..6356b16 100644 --- a/test.png +++ b/test.png Binary files differ