{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import warnings\n",
"warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n",
"\n",
"import ctypes\n",
"ctypes.cdll.LoadLibrary('/usr/users/nbraun/basf2/lib/Linux_x86_64/opt/libarich_dataobjects.so')\n",
"\n",
"from ipython_tools import handler\n",
"handler.style()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# $\\Upsilon(4S) \\to B \\overline B$ event generation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This tutorial demonstrates how to generate\n",
"$$ e^+e^- \\to \\Upsilon(4S) \\to B\\overline B$$\n",
"events with EvtGen in BASF2, where the decay of $\\Upsilon(4S)$ is specified by the given .dec file.\n",
"The generated events are saved to the output ROOT file.\n",
"In each event the generated particles (MCParticle objects) are stored in the StoreArray.\n",
"\n",
"Contributors: \n",
"* A. Zupanc (June 2014)\n",
"* N. Braun (February 2016, conversion to IPython)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load the needed python modules"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from basf2 import *\n",
"from modularAnalysis import *\n",
"from simulation import add_simulation\n",
"from reconstruction import add_reconstruction\n",
"from reconstruction import add_mdst_output\n",
"from beamparameters import add_beamparameters\n",
"from ROOT import Belle2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For a start, we can, for example, look up the definition of the `add_beamparameters` function."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on function add_beamparameters in module beamparameters:\n",
"\n",
"add_beamparameters(path, name, **argk)\n",
" Add BeamParameter module to a given path\n",
" \n",
" Args:\n",
" path (basf2.Path instance): path to add the module to\n",
" name: name of the beamparameter settings to use\n",
" \n",
" Additional keyword arguments will be passed directly to the module as parameters.\n",
"\n"
]
}
],
"source": [
"help(add_beamparameters)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then look into the BeamParameters module (if we want):"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"handler.modules.search(\"BeamParameter\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we know how to use it. So we can create our path. \n",
"\n",
"* Create an empty path\n",
"* Load 100 events, which were generated before according to the specified DECAY table\n",
" $$\\Upsilon(4S) \\to B_\\text{tag}^- B_\\text{sig}^+ \\qquad B_\\text{tag}^- \\to D_0 \\pi^-; D_0 \\to K^- \\pi^+ \\qquad B_\\text{sig}^+ \\to \\mu^+ \\nu_\\mu$$\n",
"* Reconstruct some decays and write the variables to NTuples"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"main_path = create_path()\n",
"inputMdst(\"./mdst.root\", main_path)\n",
"fillParticleList('pi+', cut='piid > 0.5', path=main_path)\n",
"fillParticleList('K-', cut='Kid > 0.5', path=main_path)\n",
"reconstructDecay('D0 -> K- pi+', cut= '1.7 < M < 2.0', path=main_path)\n",
"reconstructDecay('B-:tag -> D0 pi-', cut= '5.2 < Mbc < 5.3 and abs(deltaE) < 0.5', path=main_path)\n",
"matchMCTruth('B-:tag', path=main_path)\n",
"variablesToNTuple('B-:tag', variables=['isSignal', 'Mbc', 'deltaE'], path=main_path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a calculation object out of the path which you can use to start/stop/etc. the running calculation."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"calculation = handler.process(main_path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then, start the calculation and wait for the end."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" \n",
" "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_number(\"init\", \"progress_bar_uXRxaRGkwd\"); set_event_text(\"Status: init\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_number(\"start\", \"progress_bar_uXRxaRGkwd\"); set_event_text(\"Status: start\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_text(\"5 % Remaining time: 48.43 s\", \"progress_bar_uXRxaRGkwd\"); set_event_number(\"0.05\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_text(\"10 % Remaining time: 23.04 s\", \"progress_bar_uXRxaRGkwd\"); set_event_number(\"0.1\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_text(\"15 % Remaining time: 14.57 s\", \"progress_bar_uXRxaRGkwd\"); set_event_number(\"0.15\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_text(\"20 % Remaining time: 10.33 s\", \"progress_bar_uXRxaRGkwd\"); set_event_number(\"0.2\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_text(\"25 % Remaining time: 7.78 s\", \"progress_bar_uXRxaRGkwd\"); set_event_number(\"0.25\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_text(\"30 % Remaining time: 6.08 s\", \"progress_bar_uXRxaRGkwd\"); set_event_number(\"0.3\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"set_event_number(\"finished\", \"progress_bar_uXRxaRGkwd\"); set_event_text(\"Status: finished\", \"progress_bar_uXRxaRGkwd\"); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"calculation.start()\n",
"calculation.wait_for_end()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After the calculation has finished, we can look into the statistics..."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"calculation.show_statistics()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"...and the generated log:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"calculation.show_log()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" isSignal | \n",
" Mbc | \n",
" deltaE | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 5.282691 | \n",
" -0.008635 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
" 5.272468 | \n",
" 0.083899 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" 5.274644 | \n",
" 0.000329 | \n",
"
\n",
" \n",
" 3 | \n",
" 1 | \n",
" 5.274365 | \n",
" 0.222093 | \n",
"
\n",
" \n",
" 4 | \n",
" 1 | \n",
" 5.274818 | \n",
" 0.023108 | \n",
"
\n",
" \n",
" 5 | \n",
" 1 | \n",
" 5.280242 | \n",
" 0.018774 | \n",
"
\n",
" \n",
" 6 | \n",
" 1 | \n",
" 5.273071 | \n",
" 0.018410 | \n",
"
\n",
" \n",
" 7 | \n",
" 1 | \n",
" 5.277942 | \n",
" -0.017846 | \n",
"
\n",
" \n",
" 8 | \n",
" 1 | \n",
" 5.276691 | \n",
" 0.010078 | \n",
"
\n",
" \n",
" 9 | \n",
" 1 | \n",
" 5.282605 | \n",
" -0.033755 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" isSignal Mbc deltaE\n",
"0 1 5.282691 -0.008635\n",
"1 0 5.272468 0.083899\n",
"2 1 5.274644 0.000329\n",
"3 1 5.274365 0.222093\n",
"4 1 5.274818 0.023108\n",
"5 1 5.280242 0.018774\n",
"6 1 5.273071 0.018410\n",
"7 1 5.277942 -0.017846\n",
"8 1 5.276691 0.010078\n",
"9 1 5.282605 -0.033755"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n9VTPclJSks99h4SEqH379hXqGwAQ3JiD4FZeh41ffvlF//d//6fdu3fLGKPu3btr1KhReuGFFzR4\n8GA1adJExhht2LBB//znP7m9Gqw4++yzJZV8S7N06VKv3vPDDz9IKjnXtUePHn7pe82aNWUOTXvT\nd5cuXY54wCAAAN5gDoJbeRU2CgoK9PDDDysnJ0fGGI0YMULTpk1T//79deWVV2rQoEGaO3eu2rVr\nJ6nkG+fPPvvMauEITldccYWkkh1nSkqKvv/+++O2T0hI0Nq1az0Xx1111VUV7vvSSy9VaGiojDHK\nz8/XzJkzj9s+LS1NCxYs8PT9t7/9rcJ9AwCCG3MQ3MqrsPHRRx/p999/lzFGt956qwYOHHhEmzp1\n6uixxx7z/Pzll1/6rUigVKdOndStWzfPqVRPPfWUUlNTj9r2wIEDGjFihIwxchxHrVq10oUXXljh\nvhs2bKhevXrJcRw5jqNJkyZpy5YtR2178OBBDR8+XPn5+XIcR9HR0br22msr3DcAILgxB8GtvAob\nn3/+uaSS893vvffeY7br3r27br75Zt1+++267LLL/FMhcJgRI0aoRo0achxHKSkp6t+/v3766acy\nbTZu3Kj+/ftr8+bNngvjHnnkEc83PIfauXOnOnbs6PlvwIABx+x7yJAhqlWrlqSSMHPLLbfom2++\nKdNm27Ztuv3227V8+XJJJUdhhg4dyuFrAMARmINQ3ZV7N6odO3YoISFBxhhdfvnlioqKOm77UaNG\n+a044Gi6dOmiUaNG6emnn1ZxcbF27NihW2+9VbGxsYqNjdWePXv0+++/e9obY3T33Xfr/PPPP+56\njxZEDhcbG6vx48dryJAhOnjwoP7880/dd999atKkiVq2bKnMzExPwCld57XXXqu///3vlRs0AMA1\nvJlPKvIe5iC4Ublh49A7GZx++ume5eLiYm3ZskVpaWmqVauW2rdv70nbgG3/+Mc/VKtWLT377LPK\nysqSVPLt0M6dOyX9b6cdHh6uBx544Kin/h2udOdcnosvvliTJ0/Wo48+6jmFKy0tTWlpaZ6+jTEK\nCQnRwIED9dBDD/k6PACAi5UeUff1Pd5gDoLblBs2kpOTPcvNmzdXQUGBJk+erE8++aTMQ2XCw8PV\nq1cvPfjggzw0BifENddcowsuuEAzZszQ999/r61btyojI0ORkZFq2bKlzj33XPXr10+xsbHlruvQ\n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\nH+n5559Xbm6uKtKVMUbh4eEaOnSobr31VgsV2rN+/Xrdcccd2r9//zHHHhISorvuukv33XffcdfF\njt59FixYoAceeEAHDx6UJN1888169NFHPa+/8847mjBhgiQd92/DGKMWLVrogw8+UKNGjewW7UcF\nBQUaOXKk59vQQ/Xs2VOvvPKKHMdR//79tX79+uNug3r16mn69Ok+fRNbVQTzPrAqCObtzxxUMcxB\nZTEHuXcOqir7P6unUb3++ut6+eWXJZV8kOvVq6czzzxTbdu2VUxMjOrVq6fw8HCFh4eroKBABQUF\nysjI0K5du7Rp0yatWLFCmZmZys/P19ixY7V//37XHL7Ny8vTfffdp6ysLElSu3btdMUVV6hevXra\ntGmT5s2bp/3796u4uFivv/66fvvtN02cOFE1atQIcOX+8corr1R6HfPmzTvqpOaGz0BqaqpGjBih\nwsJCSVKLFi3UpUsXz+tLly7VhAkTPH/8F1xwga6++mq1bdtW4eHhSk9P18qVK/XJJ58oNTVV27Zt\n0+DBgzV9+nSFhLjjUquRI0dq7ty5R31t0aJFeu2111S3bl2tW7dOUsnfyK233qpTTz1VxhglJydr\n2rRpWr9+vTIyMnTfffdp9uzZrhm/FNz7wKogmLc/cxBzEHNQcM9BVWn/Z+3IRmJiom644QYVFRWp\ndu3aGjlypHr37u3TjuzgwYOaOXOmxo0bp+zsbIWEhOjjjz9W586dbZTsV++//76eeeYZGWPUr18/\nPfHEE2U+oAcOHNC4ceP06aefyhgjSbrssss0adIkz8+Hctu3SqXfDFVE6UfyWO93w/gnTJigt99+\nW8YY3XnnnbrvvvvK/P6vv/56JSQkqEaNGnr22WfVu3fvo64nOztbw4YN03//+18ZY/Tiiy/qiiuu\nOFHDqLBly5bptttukzFGDRs21AMPPKCuXbsqPT1db775ppYsWaLatWsrOjpau3bt0mWXXaYJEyYo\nPDy8zHqKi4s1atQozZw5U8YYjR07Vtdee22ARuWbYN8HBlqwb3/mIOYg5qDgnYOq2v7PWjz78MMP\nVVRUpJo1a2rq1Knq06ePz9+YlJ4rOGXKFIWHh8txHL3//vuWKvavhQsXSipJyqNHjz4iCdeuXVtP\nP/20nnrqKc8O7ZtvvtFjjz12wmu1ofR37TiOz/+VOt5rVd2SJUtkjNGZZ56p+++/v8zvf+fOnUpI\nSJAxRgMHDjzmTl6SatWqpZdeeslzruiMGTOs1+4PpXWGh4fr/fffV58+fXTyySere/fuevPNN9W9\ne3cdOHBAu3btUrNmzTR+/PgjdvJSySkeTz31lGf88+fPP6HjqIxg3wcGWrBvf+Yg5iDmoOCdg6ra\n/s/aaVTLly+XMUZ9+vTRqaeeWql1denSRTfccIOmT5+uFStW+KlCuzZt2iRjjK655prjfrvSr18/\nRURE6OGHH5bjOPrss8/UpEmTcs+freo+/PBDDR8+XFu3bpUxRtHR0br77ru9uqvFyJEjZYxR//79\ndcopp5yAav1v+/btkqQrr7zyiNf++OMPz3K/fv3KXVd4eLj69eun8ePH69dff/VfkRatWbNGxhj1\n7dtXrVq1KvOaMUZDhgzRzTffLGOMrrvuOtWsWfOY6woNDVXv3r310ksvaePGjZYr959g3wcGWrBv\nf+Yg5iCJOShY56Cqtv+zFjbS0tIkSV27dvXL+rp27arp06cf844JVU1mZqako99m7nDXXHON9u/f\nr6efflpSyXl2sbGx6tOnj9UaberSpYs+//xzPf/88/rwww+VlZWld955R88884x69ux53PeW3nbw\nnHPOce3FecXFxZKk6OjoI1479NuF2NhYr9bXrFkzSSV3lXCD0jqPtZPr2LGjZ7lt27blrq/0W6U/\n//zTD9WdGMG+Dwy0YN/+zEHMQRJzULDOQVVt/2ftNKrSD3Nubq5f1nfgwAFJcs2t10rrzM7O9qp9\n//799c9//lNSyaHbJ554QkuXLrVW34kQERGhxx9/XG+99ZYaN26sPXv26K677tKoUaO83i5uVXrH\njqN9C3To7fO8/cPdtm2bJLnmfuelh+xzcnKO+vqh/15QUFDu+kr//sPCwvxQ3YkR7PvAQAv27c8c\nxBwkMQcF6xxU1fZ/1sJG6WGrb7/91i/r+/LLLyWV3FHBDUq/LfDlkNODDz6ov/71r5JKLsy59957\nXXPI7njOO+88zZkzR1deeaXnMP0111yjn3/+OdClWdO1a1c5jqNPPvnE80daqmnTpp67gsyZM6fc\ndRUUFGjGjBkyxrjmAVMnnXSSpJJDuUdz6N/FmjVryl3fTz/9VGa9bhDs+8BAC/btzxz0P8xBzEGH\nq+5zUFXb/1kLGxdffLEcx9GSJUv05ptvVmpdL7zwglatWiVjjGsOaXbv3l2O42ju3Lk+7azHjx+v\n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\n/naFeQAAAABJRU5ErkJggg==\n",
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from root_pandas import read_root\n",
"df = read_root(\"./ntuple.root\")\n",
"df.hist(\"Mbc\", range=(5.2, 5.3), by=\"isSignal\", sharey=True, sharex=True);\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.0"
}
},
"nbformat": 4,
"nbformat_minor": 0
}