Skip to main content

A Python program to generate the Lagrangians for dark matter models

Project description

minimal-lagrangians

This is a Python program which allows one to specify the field content of an extension of the Standard Model of particle physics (SM) and, using this information, generates the most general renormalizable Lagrangian that describes such a model. As the program was written for the study of minimal dark matter models with radiative neutrino masses, it can handle additional fields with the following properties:

  • scalar or Weyl fermion fields
  • SU(3) singlets
  • SU(2) singlets, doublets or triplets
  • arbitrary hypercharge
  • charged under a global ℤ₂ symmetry
  • charged under an arbitrary number of global U(1) symmetries

Requirements

The program requires Python 3 (tested with Python ≥ 3.4). No external libraries are necessary.

Installation

minimal-lagrangians is available on pip, so it can simply be installed by running

pip install minimal-lagrangians

Usage

minimal-lagrangians only prints the potential involving at least one new (i. e. non-SM) field, i. e. the kinetic terms and the Standard Model Lagrangian are omitted. The models are not checked for anomalies (tools like SARAH can be used for this purpose).

The new models are currently defined in the file data.py. Models can be added in a user-defined file (to be used with the --model-file option, see below) in the following form:

[
	BSMModel('<model_name>', (
		    # list of fields
		    # type       name   SU(2) rep.  hypercharge
		    # for a scalar field, e.g. a scalar doublet with hypercharge 1:
		    ScalarField ('S',   2,          Y=1),
		    # for a fermion field, e.g. a fermion singlet with hypercharge 0:
		    FermionField('F',   1,          Y=0),
		    # ℤ₂-even scalar field:
		    ScalarField ('S',   1,          Y=0, z2=1),
		    # …
		),
		# optional: parameter values for different hypercharge assignments (offsets), e.g.
		(0, 2, )
	),
	# …
]

To add fields with global U(1) charges, use the optional parameter u1:

        # type       name   SU(2) rep.  hypercharge  U(1) charges
        # for a scalar field, e.g. a scalar doublet with hypercharge 1:
        ScalarField ('S',   2,          Y=1,         u1=[ 1, 3, ]),
        # for a fermion field, e.g. a fermion singlet with hypercharge 0:
        FermionField('F',   1,          Y=0,         u1=[-1, 2, ]),

The Standard Model fields are assumed to be neutral (z2=1, U(1) charges zero) under the new global symmetries.

Information on how to run the program on the command line can be obtained with minimal-lagrangians -h:

usage: minimal-lagrangians [-h] [--format {LaTeX,SARAH,plain}]
                           [--model-file [path/to/file.py]]
                           [--omit-equivalent-scalars]
                           [--omit-self-interaction] [--list-discarded-terms]
                           [--sarah-no-scalar-cpv] [--version]
                           model [parameter α]

A Python program to generate the Lagrangians for dark matter models

positional arguments:
  model                 name of the model whose Lagrangian is to be generated
                        (specify “list” in order to list all available models)
  parameter α           value of the model parameter α (determines
                        hypercharges of the fields)

optional arguments:
  -h, --help            show this help message and exit
  --format {LaTeX,SARAH,plain}
                        output format for the generated Lagrangian (default:
                        plain)
  --model-file [path/to/file.py]
                        file containing user-defined models; a file is only
                        read if this option is present (default: ./models.py)
  --omit-equivalent-scalars
                        keep only scalar fields from the model which have
                        unique quantum numbers and absolute hypercharge values
                        (omit duplicates)
  --omit-self-interaction
                        omit pure self-interactions of the new fields in the
                        Lagrangian, that is, output only interaction terms
                        which involve both SM and new fields (default: output
                        all terms)
  --list-discarded-terms
                        list redundant terms which were discarded from the
                        Lagrangian due to identities
  --sarah-no-scalar-cpv
                        assume that there is no CP violation causing mixing
                        between scalar and pseudoscalar fields for SARAH
                        output
  --version             show program’s version number and exit

Test cases can be run using

./test.py

Among other checks, this currently tests whether the program produces the correct Lagrangian for the following models:

Examples

For example, running

minimal-lagrangians --omit-equivalent-scalars T1-1-A 0

prints the Lagrangian for the model T1-1-A with α = 0 from (Restrepo, Zapata, Yaguna; arXiv:1308.3655 [hep-ph]):

 - M_ϕ'² ϕ'^† ϕ' - ½ M_φ² φ²
 - (λ₁ (H ϕ') φ + H.c.)
 - λ₂ (H^† H) (ϕ'^† ϕ') - λ₃ (H^† ϕ') (ϕ'^† H) - λ₄ (ϕ'^† ϕ')² - λ₅ (H^† H) φ² - λ₆ (ϕ'^† ϕ') φ² - (λ₇ (H ϕ')² + H.c.) - λ₈ φ⁴
 - (½ M_ψ ψ ψ + H.c.)
 - (y₁ (ϕ'^† L) ψ + H.c.)

Running

minimal-lagrangians STS

prints the Lagrangian for model C (singlet–triplet scalar) from (Cheung, Sanford; arXiv:1311.5896 [hep-ph]):

 - ½ M_T² Tr(T²) - ½ M_S² S²
 - λ₁ H^† T² H - λ₂ (H^† T H) S - λ₃ (H^† H) S² - λ₄ Tr(T²)² - λ₅ Tr(T²) S² - λ₆ S⁴

Source files

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

minimal-lagrangians-1.1.2.tar.gz (56.2 kB view details)

Uploaded Source

Built Distribution

minimal_lagrangians-1.1.2-py3-none-any.whl (54.6 kB view details)

Uploaded Python 3

File details

Details for the file minimal-lagrangians-1.1.2.tar.gz.

File metadata

  • Download URL: minimal-lagrangians-1.1.2.tar.gz
  • Upload date:
  • Size: 56.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

File hashes

Hashes for minimal-lagrangians-1.1.2.tar.gz
Algorithm Hash digest
SHA256 ea1c568a699910d60603e446641865e119160638b226dbb5f106078f090cb64b
MD5 2ab48daaa8ef11475b2ee42ceaaa33d8
BLAKE2b-256 260e8ad8c51fd1b862029460c66b3cd4544032dbc14fb2acf86cbe699d6efb63

See more details on using hashes here.

File details

Details for the file minimal_lagrangians-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: minimal_lagrangians-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 54.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

File hashes

Hashes for minimal_lagrangians-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6aaa1534a3741e39b0833abfffcd6f35dc75a7dc4614c0d4f7681b89dffa8fc6
MD5 4248716695b061378e797b9d2d696aca
BLAKE2b-256 58ead6bdaac3afc08e6d826fa538828d26d85953aa9d69e2e1378e64134c16d8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page