- Checking electric charge conservation
- Testing Hermitian conjugate terms
- Probing the kinetic and mass terms of the Lagrangian
- Checking BRST invariance
- Extracting vertices

LanHEP can check whether the introduced vertices satisfy electric charge
conservation law. This option is available, if the user declares some
parameter
to denote elementary electric charge (say, `ee` in QED example),
and than indicate, which particle is a photon by the statement

So, in example of Section 1 this statement could beSetEM(photon, param).

SetEM(A,ee).

Electric charge of each particle is determined by analyzing its interaction with the photon. LanHEP checks whether the sum of electric charges of particles in each vertex equals zero.

LanHEP is able to check the correctness of the hermitian conjugate terms in the Lagrangian. To do this, user should use the statement:

CheckHerm.

For example, let us consider the following (physically meaningless) input file, where a charged scalar field is declared and cubic terms are introduced:

scalar h/H.

parameter a,b,c.

lterm a*(h*h*H+H*H*h)+b*h*h*H+c*H*H*h + h**3.

CheckHerm.

The output of LanHEP is the following (here 2 is the symmetry factor):

CheckHerm: vertex (h, h, h): conjugate (H, H, H) not found. CheckHerm: inconsistent conjugate vertices: (H, h, h) (H, H, h) 2*a <-> 2*a 2*b <-> (not found) (not found) <-> 2*c

If the conjugate vertex is not found, a warning message is printed. If both vertices are present but they are inconsistent, more detailed output is provided. For each couple of the incorrect vertices LanHEP outputs 3 kinds of monomials: 1) those which are found in both vertices (these monomials are correctly conjugated), 2) the monomials found only in first vertex, and 3) the monomials found only in the second vertex.

When LanHEP is used to generate CompHEP model files, the information
about particles propagators is taken from the particle declaration, where
particle mass and width (for Breit-Wigner's propagators) are provided.
Thus, the user is not obliged to supply kinetic and mass terms in `lterm`
statements. Even if these terms are written, they do not affect the CompHEP
output. LanHEP allows user to examine whether the mass sector of
the Lagrangian is consistent. To do this, use the statement

This statement must be put after allCheckMasses.

When the `CheckMasses` statement is used, LanHEP creates the file
named `masses.chk` (in the directory where LanHEP was started).
This file contains warning messages
if some inconsistencies are found:

- missing or incorrect kinetic term;
- mass terms with mass different from the value specified at the particle declaration;
- off-diagonal mass terms.

Note that in more involved models like the MSSM the masses could depend on other parameters and LanHEP is not able to prove that expressions in actual mass matrix and in parameters declared to be the masses of particles are identical. Moreover, it is often impossible to express the masses as formulas written in terms of independent parameters. For this reason LanHEP evaluates the expressions appearing in the mass sector numerically (based on the parameter values specified by the user).

It is typical for the MSSM that some fields are rotated by unitary matrices
to diagonalize mass terms. In some cases, values of mixing matrices elements
can not be expressed by formulas and need to be evaluated numerically.
LanHEP can recognize the mixing matrix if the elements of this matrix were
used in `OrthMatrix` statement. LanHEP restores and prints the mass
original matrix before fields rotation by mixing matrix.

Checking BRST invariance

LanHEP can check the BRST invariance (see the reviews in [5,6])
of the Lagrangian. First, the user should declare the BRST
transformations for the fields in the model by means of `brst_transform`
statement:

brst_transformfield->expression.

For example, the BRST transformation for the photon can be prescribed by the statement:

The file 'sm_brst.mdl' in LanHEP distribution contains the code for gauge and Higgs fields transformation corresponding to the CompHEP implementation of the Standard model.brst_transform A -> deriv*'A.c'+i*EE*('W+'*'W-.c'-'W-'*'W+.c').

Since the transformations are defined, the statement

enables the BRST transformation for Lagrangian terms (so it should be placed before the firstCheckBRST.

New statement allows to extract a class of vertices into separate file. This feature is useful in checking large models with thousands of vertices, such as the MSSM. The statement has the form

SelectVertices(file, vlist).

Here *file* is a file name to output selected vertices, and
*vlist* determines the class of vertices. The pattern *vlist*
may have two possible formats.

In the first format *vlist* is a list of particles:

All vertices consisting only of the listed particles[P1, P2, P3, ... Pn]

selects vertices of leptons of first generation interaction with gauge fields and the self-interaction of gauge fields (we used here particles notation of CompHEP).[A, Z, 'W+', 'W-', e1, E1, n1, N1]

The second format reads

Here are several groups of particles, each group is joined by slash '/' symbol. Selected vertices have the number of legs equal to the number of groups in the list, each leg in the vertex corresponds to one group. For example,[P11/P12../P1n, P21/.../P2m, ...]

selects vertices with two legs corresponding to leptons, third leg is gauge boson. Thus, this pattern extracts vertices of leptons interactions with gauge bosons. Note that the vertices of gauge bosons interaction are not selected in this case. If a group consists of one particle, it must be typed twice to enable second format (e.g.[e1/E1/n1/N1, e1/E1/n1/N1, A/Z/'W+'/'W-']

It is possible to specify some options in `SelectVertices`
statement.
The `WithAnti` option adds antiparticle names for each particle
in the list (in the first format) or in the each group (in the second
format. The `Delete` option removes selected vertices from the
LanHEP's internal vertices list, so these vertices are not written
in output file `lgrng N.mdl (lgrngN.tex)`.
This could be useful if

An example of lepton-gauge vertices selection could read as

SelectVertices( 'lept-gauge.mdl', [e1/n1, e1/n1, A/Z/'W+'], WithAnti, Delete).