This document aims at describing the new features of PyR@TEv1.2.0 In particular it explains the new capabilities regarding its ability to handle terms that can lead to several gauge singlets. In addition, we have made public the implementation of sparse matrices. This boosts up the calculation of RGEs. The first section is dedicated to the presentation of the issue, the second deals with the changes brought to PyR@TE in order to deal with such cases and finally, the last section shows how this applies to a concrete example namely the effective potential of the TypeII Seesaw model.
The different terms entering a given Lagrangin, $\mathcal{L}$ in PyR@TE are given by a python dictionary under the following form
'\lambda': {Fields: [F1,F2,F3,F4], Norm: 1/2}.
Note that since v1.1.5 it is also possible to have a sum of terms as in
'\lambda_2': {Fields: [[F1,F2*,F1*,F2*],[F2,F1,F2,F1*]], Norm: [1,1/2]},
such an example will be shown later on.
In PyR@TE, each complex scalar field is expended into its real and complex component and then written as a gauge singlet i.e.
$\mathcal{L} \supset \lambda F_1^i F_2^j F_3^k F_4^l C_{ijkl}$,
where for simplicity we assume that the $F$ fields are charged under a single gauge group. $C_{ijkl}$ are the so called Clebsh-Gordon coefficients (CGCs). In PyR@TE we rely on a database constructed from the Mathematica package Susyno.
Until now, we assumed that only one such $C_{ijkl}$ exist for each term in the Lagrangian. However, as the dimension of the irreducible representations (irreps) involved in the Lagrangian or the number of fields increases one is likely to end up in the situation where there exist several ways to contract the indices of $F_1,F_2,F_3,F_4$ into a gauge singlet. For instance if one considers complex triplets of $\mathrm{SU}(2)$, we generally find in the literature the following two terms:
$\lambda_1 \mathrm{Tr}\left[\Delta^\dagger\Delta\Delta^\dagger\Delta\right]$ and $\lambda_2 \mathrm{Tr}\left[\Delta^\dagger\Delta\right]\mathrm{Tr}\left[\Delta^\dagger\Delta\right]$,
where $\Delta$ is a $2\times2$ matrix representation of the triplet in some basis. This case is therefore clearly not covered by the previous versions of PyR@TE and we now explain how to implement such terms in the new version.
In order to be able to implement such terms in PyR@TE a new keyword (key to the dictionary) has been introduced through which it is now possible to specify which CGCs to use for a given term. In the above generic example one could therefore specify something along the following lines:
'\lambda': {Fields: [F1,F2,F3,F4], Norm: 1/2, CGCs: [1]},
or for a sum of terms
'\lambda_2': {Fields: [[F1,F2*,F1*,F2*],[F2,F1,F2,F1*]], Norm: [1,1/2], CGCs: [1,2]}.
Because there are many different ways to write a given invariant the user must take special care that the term he is interested in really matches what is implemented in PyR@TE. More specifically, one has to make sure that the invariants are the same and the normalization of the CGCs identical. What is precisely meant here will become clear when presenting the example of the TypeII seesaw model.
In order to achieve this task the user must be able to probe PyR@TE database and check what is the exact expression for the CGCs which is implemented for a given invariant. To do so, we have implemented a command line mode allowing the user to explore PyR@TE's database.
To start this mode the user simply needs to start PyR@TE with the '-idb' option as follows:
python pyR@TE -idb
or from a notebook as usual
%run pyR@TE -idb
.
Then any of the following keywords and corresponding syntax can be used to probe the database:
Casimir group irrep
AdjR group
Dynkin group irrep
FondR group
GetDynk group dimirrep
DimR group irrep
Invariants group irreps
Matrices group irrep
where irrep(s) refer to a Dynkin label(s).
%cd..
%run pyR@TE.py -idb
In this last section we show how to implement a toy TypeII seesaw model.
In the model we consider here we have the following scalar particle content charged under $\mathrm{SU}(3)\times\mathrm{SU}(2)\times\mathrm{U}(1)$:
and the following scalar potential
$\mathcal{V} = \lambda_1 H^\dagger H H^\dagger H + \lambda_{\Delta 1} \mathrm{Tr}\left[\Delta^\dagger \Delta \right]H^\dagger H + \lambda_{\Delta 4} \mathrm{Tr}\left[\Delta^\dagger \Delta\right]\mathrm{Tr}\left[\Delta^\dagger\Delta\right] +\lambda_7 H^\dagger \Delta \Delta^\dagger H + \lambda_9 \mathrm{Tr}\left[\Delta^\dagger\Delta \Delta^\dagger \Delta\right]$,
in which we have writen the vector triplet $T= (\Delta^{++},\Delta^{+},\Delta^{0})$ as a matrix
$\Delta =\left(\begin{array}{cc}\frac{\Delta^+}{\sqrt{2}}&\Delta^{++}\\ \Delta^0 & -\frac{\Delta^+}{\sqrt{2}}\end{array}\right)$.
This implies that $(\Delta^{++},\Delta^{+},\Delta^{0})$ transforms under SU(2) according to the following matrices:
$\left(\begin{array}{ccc}0&-\frac{1}{\sqrt{2}}&0\\-\frac{1}{\sqrt{2}}&0&\frac{1}{\sqrt{2}}\\0&\frac{1}{\sqrt{2}}&0\end{array}\right), \left(\begin{array}{ccc}0&\frac{I}{\sqrt{2}}&0\\-\frac{I}{\sqrt{2}}&0&-\frac{I}{\sqrt{2}}\\0&\frac{I}{\sqrt{2}}&0\end{array}\right), \left(\begin{array}{ccc}1&0&0\\0&0&0\\0&0&-1\end{array}\right)$.
However the matrices used in PyR@TE are slightly different as can be checked directly:
%run pyR@TE.py -idb
from sympy import *
from sympy import init_printing
init_printing(use_latex=True)
#Susyno matrices
Susyno3 = [Matrix([[0, sqrt(2)/2, 0],[sqrt(2)/2,0, sqrt(2)/2],[ 0, sqrt(2)/2, 0]]),
Matrix([[0, -sqrt(2)*I/2,0],[sqrt(2)*I/2,0, -sqrt(2)*I/2],[0,sqrt(2)*I/2,0]]),
Matrix([[1, 0, 0],[0, 0, 0],[0, 0, -1]])]
#Matrices used for (deltapp,deltap,delta0)
Pauli3=[Matrix([[0,-sqrt(2)/2,0],[-sqrt(2)/2,0,sqrt(2)/2],[0,sqrt(2)/2,0]]),
Matrix([[0,sqrt(2)*I/2,0],[-sqrt(2)*I/2,0,-sqrt(2)*I/2],[0,sqrt(2)*I/2,0]]),
Matrix([[1,0,0],[0,0,0],[0,0,-1]])]
P = Matrix([[-1,0,0],[0,1,0],[0,0,1]])
The two sets of matrices are related to each other by the matrix $P$
[Susyno3[i]-P*Pauli3[i]*P for i in range(3)]
Which amounts to the redefinition $\Delta^{++}\rightarrow -\Delta^{++}$
P*Matrix([Symbol('Delta^{++}'),Symbol('Delta^+'),Symbol('Delta^0')])
Let's now have a look at the different CGCs involved in the above potential.
Invariants SU2 [[2,True],[2],[2,True],[2]]
%run pyR@TE.py -idb
so we see that in general there are two ways of contracting 4 different fields transforming as a $\boldsymbol{2}$ of $\mathrm{SU}(2)$ into a gauge singlet. However, it is clear that the contraction corresponding to the vector multiplication, $H^\dagger H=H_i H_j \delta_{ij}$ is the first one.
'\lambda_1: {Fields: [H*,H,H*,H], CGCs: {SU2L: 1}, Norm: 1}
Invariants SU2 [[2,True],[2],[2,True],[2]]
%run pyR@TE.py -idb
Here we have in general three invariants. Now, while it was obvious in the case of the doublets to find which term the vector multiplication corresponds to, we have to do a bit more work in this case.
#Let's import sympy for algebraic manipulation (here 0.7.6)
from sympy import *
from sympy import init_printing
init_printing(use_latex=True)
a,b,c,d,Pi,Sig = map(IndexedBase,['a','b', 'c', 'd','Pi','Sigma'])
p = Wild('p')
invs = [inv1,inv2,inv3] = a[1]*b[1]*c[1]*d[1] + a[1]*b[1]*c[2]*d[2] + a[1]*b[1]*c[3]*d[3] + a[2]*b[2]*c[1]*d[1] + a[2]*b[2]*c[2]*d[2] + a[2]*b[2]*c[3]*d[3] + a[3]*b[3]*c[1]*d[1] + a[3]*b[3]*c[2]*d[2] + a[3]*b[3]*c[3]*d[3],sqrt(3)*a[1]*b[1]*c[1]*d[1]/2 - sqrt(3)*a[1]*b[1]*c[3]*d[3]/2 + sqrt(3)*a[1]*b[2]*c[2]*d[1]/2 + sqrt(3)*a[1]*b[2]*c[3]*d[2]/2 + sqrt(3)*a[2]*b[1]*c[1]*d[2]/2 + sqrt(3)*a[2]*b[1]*c[2]*d[3]/2 + sqrt(3)*a[2]*b[3]*c[2]*d[1]/2 + sqrt(3)*a[2]*b[3]*c[3]*d[2]/2 + sqrt(3)*a[3]*b[2]*c[1]*d[2]/2 + sqrt(3)*a[3]*b[2]*c[2]*d[3]/2 - sqrt(3)*a[3]*b[3]*c[1]*d[1]/2 + sqrt(3)*a[3]*b[3]*c[3]*d[3]/2,sqrt(5)*a[1]*b[1]*c[1]*d[1]/10 - sqrt(5)*a[1]*b[1]*c[2]*d[2]/5 + sqrt(5)*a[1]*b[1]*c[3]*d[3]/10 + 3*sqrt(5)*a[1]*b[2]*c[2]*d[1]/10 - 3*sqrt(5)*a[1]*b[2]*c[3]*d[2]/10 + 3*sqrt(5)*a[1]*b[3]*c[3]*d[1]/5 + 3*sqrt(5)*a[2]*b[1]*c[1]*d[2]/10 - 3*sqrt(5)*a[2]*b[1]*c[2]*d[3]/10 - sqrt(5)*a[2]*b[2]*c[1]*d[1]/5 + 2*sqrt(5)*a[2]*b[2]*c[2]*d[2]/5 - sqrt(5)*a[2]*b[2]*c[3]*d[3]/5 - 3*sqrt(5)*a[2]*b[3]*c[2]*d[1]/10 + 3*sqrt(5)*a[2]*b[3]*c[3]*d[2]/10 + 3*sqrt(5)*a[3]*b[1]*c[1]*d[3]/5 - 3*sqrt(5)*a[3]*b[2]*c[1]*d[2]/10 + 3*sqrt(5)*a[3]*b[2]*c[2]*d[3]/10 + sqrt(5)*a[3]*b[3]*c[1]*d[1]/10 - sqrt(5)*a[3]*b[3]*c[2]*d[2]/5 + sqrt(5)*a[3]*b[3]*c[3]*d[3]/10
Let's substitute:
invs = [el.subs(((a,c),(b,d))).replace(c[p],1/sqrt(2)*(Pi[p]+I*Sig[p])).replace(d[p],1/sqrt(2)*(Pi[p]-I*Sig[p])).expand() for el in invs]
We can now expand the invariants defined in the potential applying the following replacement rules:
we can now look at $\lambda_{\Delta_4}$ and $\lambda_9$
Delta = Matrix([[(Pi[2]+I*Sig[2])/2,-(Pi[1]+I*Sig[1])/sqrt(2)],[1/sqrt(2)*(Pi[3]+I*Sig[3]),-Rational(1,2)*(Pi[2]+I*Sig[2])]])
Delta
These are our two couplings
l9 = ((Delta.H*Delta*Delta.H*Delta).trace().replace(conjugate(p),p).expand())
lD4 = ((Delta.H*Delta).trace()*(Delta.H*Delta).trace()).replace(conjugate(p),p).expand()
It is easy to convinced oneself that the relation between $\lambda_9$ and invs
is
$\frac{1}{2} (invs[0] + \frac{2}{\sqrt{3}} invs[1])$.
l9-Rational(1,2)*(invs[0]+2/sqrt(3)*invs[1]).expand()
likewise for $\lambda_{\Delta 4}$:
lD4 - invs[0]
Therefore, to implement $\lambda_{\Delta 4}$ and $\lambda_9$, one has to implement the following in PyR@TE:
- '\lambda_9': {Fields: [[T*,T,T*,T],[T*,T,T*,T]],CGCs: {SU2L: [1,2]} ,Norm: [1/2,1/sqrt(3)]}
- 'lambda_{\Delta 4}': {Fields: [T,T*,T,T*], CGCs: {SU2L: [1]}, Norm: 1}
Invariants SU2 [[1,True],[2],[2,True],[1]]
%run pyR@TE.py -idb
invs = (2*sqrt(3)*a[1]*b[1]*c[1]*d[1]/3 + sqrt(6)*a[1]*b[1]*c[2]*d[2]/3 + sqrt(3)*a[1]*b[2]*c[2]*d[1]/3
+ sqrt(6)*a[1]*b[2]*c[3]*d[2]/3 + sqrt(6)*a[2]*b[2]*c[1]*d[1]/3 + sqrt(3)*a[2]*b[2]*c[2]*d[2]/3 +
sqrt(6)*a[2]*b[3]*c[2]*d[1]/3 + 2*sqrt(3)*a[2]*b[3]*c[3]*d[2]/3,
sqrt(6)*a[1]*b[1]*c[1]*d[1]/6 -sqrt(3)*a[1]*b[1]*c[2]*d[2]/3 + sqrt(6)*a[1]*b[2]*c[2]*d[1]/3 -
sqrt(3)*a[1]*b[2]*c[3]*d[2]/3 + sqrt(6)*a[1]*b[3]*c[3]*d[1]/2 + sqrt(6)*a[2]*b[1]*c[1]*d[2]/2 -
sqrt(3)*a[2]*b[2]*c[1]*d[1]/3 + sqrt(6)*a[2]*b[2]*c[2]*d[2]/3 - sqrt(3)*a[2]*b[3]*c[2]*d[1]/3 +
sqrt(6)*a[2]*b[3]*c[3]*d[2]/6)
invs = [el.subs(((a,c),(b,d))).replace(c[p],1/sqrt(2)*(Pi[p]+I*Sig[p])).replace(d[p],1/sqrt(2)*(Pi[p]-I*Sig[p])).expand() for el in invs]
H = 1/sqrt(2)*Matrix([[Pi[1]+I*Sig[1]],[Pi[2]+I*Sig[2]]])
lD1 = ((Delta.H*Delta).trace()*(H.H*H).trace()).replace(conjugate(p),p).expand()
l7 = (H.H*Delta*Delta.H*H).trace().replace(conjugate(p),p).expand()
(l7-sqrt(3)/2*invs[0]).expand()
(lD1-(1/sqrt(3)*invs[0]+2/sqrt(6)*invs[1])).expand()
We therefore obtain the last expression for the desired couplings:
- '\lambda_{\Delta 1}': {Fields: [[H*,T,T*,H],[H*,T,T*,H]], CGCs; {SU2L: [1,2]}, Norm: [1/Sqrt(3),2/sqrt(6)]}
- '\lambda_7': {Fields: [H*,T,T*,H], CGCs: {SU2L: [1]}, Norm: sqrt(3)/2},
In this case it is easy to see that $\lambda_{\Delta 1}$ can also be obtained via the contraction Invariants SU2 [[2,True],[2],[1,True],[1]]
via the following term:
'\lambda^{bis}_{\Delta 1}' : {Fields: [H*,H,T*,T], Norm: 1, CGCS: {SU2L: 1}}
To conclude we give below the full model file for the above potential.
%cat models/TypeIItoy.model
For any additional information, questions or feedbacks you can email me at flyonnet[at]smu.edu.