= pSPSS: Phenomenological symmetry protected seesaw = The pSPSS describes the interactions of a pseudo-Dirac pair of two Majorana degrees of freedom [[latex($N_1$)]] and [[latex($N_2$)]] generically appearing in low-scale seesaw models. In the lepton number conserving (LNC) limit their interactions with the Standard Model are given by [[latex($\mathcal L_\text{SPSS}^L = i \overline N_i \, \not\! \partial N_i - y_{\alpha1} \widetilde H^\dagger \bar \ell_\alpha N_1^c - \overline N_1 m_M^{} N_2^c + \text{H.c.}$)]] The additional lepton number violating (LNV) interactions must be small in order to generate light neutrino masses. Additionally, they introduce a mass splitting [[latex($\Delta m$)]] between the pseudo-Dirac heavy neutrino mass eigenstates [[latex($m_{4/5}^{} = m_M^{} + \frac12 m_M^{} |\theta|^2 \mp \frac12 \Delta m$)]] The smallness of the lepton number violating interactions ensures unobservable collider effects, except for heavy neutrino-antineutrino oscillations as these are a macroscopic interference effect [[latex($P^{\text{LNC}/\text{LNV}}_\text{osc}(\tau) = \frac{1 \pm \cos\left(\Delta m \tau \right) \exp(-\lambda)}2$)]] where [[latex($\lambda$)]] captures the damping of the oscillations due to decoherence. == !MadGraph patch == In order to generate events with heavy neutrino-antineutrino oscillations it is necessary to patch the `./bin/internal/common_run_interface.py` file with {{{ for event in lhe: leptonnumber = 0 write_event = True for particle in event: if particle.status == 1: if particle.pid in [11, 13, 15]: leptonnumber += 1 elif particle.pid in [-11, -13, -15]: leptonnumber -= 1 for particle in event: id = particle.pid width = param_card['decay'].get((abs(id),)).value mass splitting = param_card.get_value('FRBLOCK', 1) if width: if id in [8000011, 8000012]: tau0 = random.expovariate(width / cst)|\label{ln:tau0}| if 0.5 * (1 + math.cos(mass splitting * tau0 / cst)) >= random.random(): write_event = (leptonnumber == 0) else: write_event = (leptonnumber != 0) vtim = tau0 * c|\label{ln:convert_tau0}| else: vtim = c * random.expovariate(width / cst) if vtim > threshold: particle.vtim = vtim # write this modify event if write_event: output.write(str(event)) output.write('\n') output.close() }}}