{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Dark Matter Coupled to Top Quark" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## General informations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The model\n", "\n", "We consider a simplified dark matter model with a new interaction field (mediator) is responsible for the weak interaction between the ordinary matter and the introduced dark matter candidate. The particular model we are interested in relies on a coupling between dark matter and the top quark, which was designed to lead to $t+E^{\\text{miss}}_{T}$, so-called monotop final state: Revisiting monotop production at the LHC (JHEP01 (2015) 017). In the non-resonant model case of this publication (on which we will focus), the general lagrangian density is:\n", "\n", "$$\n", "\\mathcal{L}_{\\mathrm{DM}} \\; = \\; \\mathcal{L}_{\\mathrm{kin}} [\\chi, V_\\mu] \\; \n", "+ \\; V_\\mu \\, \\left( \\, a^{ij}_L \\, \\bar{u}_{i,L} \\gamma^{\\mu} u_{j,L} \\:+\\: a^{ij}_R \\, \\bar{u}_{i,R} \\gamma^{\\mu} u_{j,R} \\, \\right) \\;+\\; V_\\mu \\, \\left(\\, g_L \\, \\bar{\\chi}_L {\\gamma^\\mu} \\chi_L \\:+\\: g_R\\, \\bar{\\chi}_R {\\gamma^\\mu} \\chi_R \\,\\right)\n", "$$\n", "\n", "where the matrices $a^{ij}_L$ and $a^{ij}_R$ describe the couplings in the flavour space for left-handed and right-handed components of quarks. The interaction between the dark matter and the mediator are determined by $g_L$ and $g_R$. These parameters have a priori a real and an imaginary part." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simplifications\n", "\n", "In order to simplify the model, we restrict the possible couplings only between the first and third generation. In addition, in order to evade $b$-physics constraints we assume only right-handed couplings. Indeed, an interaction term with the left-handed components would automatically involve the $b$-quark because of the $\\text{SU}(2)_{\\text{L}}$ symmetry, which is strongly excluded by current data. Finally, we assume vectorial interaction with the dark matter so that $g_R=g_L$. Within these assumptions, the dynamic of the new fields is described by the following lagrangian density:\n", "\n", "$$\n", "\\mathcal{L}_{\\mathrm{DM}} \\; = \\; \\mathcal{L}_{\\mathrm{kin}} [\\chi, V_\\mu] \\; + \\; g_{\\text{SM}} \\: V_\\mu \\: \\bar{t}_R \\gamma^\\mu u_R \\;+ \\; g_{\\text{DM}} \\: V_\\mu \\: \\bar{\\chi} {\\gamma^\\mu} \\chi\n", "$$\n", "\n", "where $g_{\\text{SM}} \\equiv a^{13}_R$ and $g_{\\text{DM}} \\equiv g_R=g_L$. In this context, the model is fully predictive once four parameters are fixed: $(m_V,m_{\\chi},g_{\\text{SM}}, g_{\\text{DM}})$. The new interations leads to the two additional vertices $Vt\\bar{u}$ and $V\\chi\\bar{\\chi}$ with respect to the SM." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Relevant Processes and Final States\n", "\n", "There are two experimentally interesting final states to probe this model: $t+E^{\\text{miss}}_{T}$ and $tt+X$. The first one is obtained via the process $gu \\to tV \\to t\\chi\\bar{\\chi}$ while the second one can be obtained via $gu \\to tV \\to tt\\bar{u}$ (together with two other diagrams like $t$-channel exchange of $V$ in $uu\\to tt$). This makes the two final states complementary since they allow together to probe the model of any value of BR$_{\\chi}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analytical Expressions\n", "\n", "Depending on the parameter values, the signature can be then quite different and it's important to properly model these features, via for e.g. BR$_{\\chi}$. Also, for a given final state, the width of the mediator can also lead to differences in event kinematics which also need to be accounted for. The following analytical expression give the relation between the mediator properties and the model paramters at the leading order.\n", "\n", "$$\n", "\\Gamma_{V} \\; = \\; \\Gamma_{V\\to\\chi\\chi} + \\Gamma_{V\\to t\\bar{u}+\\bar{t}u} ~~~~~ ; ~~~~~ \\text{BR}_{\\chi} \\;= \\; \\frac{\\Gamma_{V\\to\\chi\\chi}}{\\Gamma_{V}}\n", "$$\n", "\n", "$$\n", "\\Gamma_{V\\to\\chi\\chi} \\; = \\; \\frac{m_V}{12\\pi} \\: g_\\text{DM}^2 \\: \\sqrt{1-4\\frac{m^2_{\\chi}}{m^2_V}} \\: \\left(1+2\\frac{m^2_{\\chi}}{m^2_V}\\right) ~~~~~ ; ~~~~~ \\Gamma_{V\\to t\\bar{u}+\\bar{t}u} \\; = \\; \\frac{m_V}{\\pi}\\: g_\\text{SM}^2 \\: \\left(1-\\frac{m^2_t}{m^2_V}\\right) \\: \\left(1-\\frac{m^2_t}{2m^2_V} - \\frac{m^4_t}{2m^4_V}\\right)\n", "$$\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Numerical analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### General informations\n", "\n", "A python module, ModelParaRelation, was written in order play with the analytical formulas above, the main goal being to have a feeling of how the mediator properties are related to the model parameters. The total width as a function of mediator mass is plotted and then the evolution of the invisible BR with respect to coupling constants is also looked at. Finally, we check how the couplings constants evolves as a function of the BR." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib as mpl\n", "import ModelParaRelation as model\n", "\n", "# show plots automatically and enable interactions\n", "%matplotlib inline \n", "%matplotlib notebook\n", "\n", "# Nominal model parameters\n", "mV=1000; mDM=1;\n", "\n", "# Ignore warning related to undefined division\n", "np.seterr(divide='ignore', invalid='ignore') \n", "\n", "# Plot settings\n", "mpl.rcParams['legend.frameon' ] = False\n", "mpl.rcParams['legend.fontsize'] = 'xx-large'\n", "mpl.rcParams['xtick.labelsize'] = 16\n", "mpl.rcParams['ytick.labelsize'] = 16\n", "mpl.rcParams['axes.titlesize' ] = 18\n", "mpl.rcParams['axes.labelsize' ] = 18\n", "mpl.rcParams['lines.linewidth'] = 2.5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Mediator width as function of its mass" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " this.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('