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
SetEM(photon, param).So, in example of Section 1 this statement could be
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
CheckMasses.This statement must be put after all lterm statements of the input file.
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:
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.
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_transform field -> expression.
For example, the BRST transformation for the photon can be prescribed by the statement:
brst_transform A -> deriv*'A.c'+i*EE*('W+'*'W-.c'-'W-'*'W+.c').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.
Since the transformations are defined, the statement
CheckBRST.enables the BRST transformation for Lagrangian terms (so it should be placed before the first lterm statement). The output is CompHEP or LaTeX file. Certainly, if the Lagrangian is correct, the output files are empty. However some expressions identical to zero could be not simplified and remain in the output.
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:
[P1, P2, P3, ... Pn ]All vertices consisting only of the listed particles P1, P2,... are extracted. For example, the pattern
[A, Z, 'W+', 'W-', e1, E1, n1, N1]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).
The second format reads
[P11/P12../P1n, P21/.../P2m, ... ]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,
[e1/E1/n1/N1, e1/E1/n1/N1, A/Z/'W+'/'W-']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. [P1/P1, P2/P2, P3/P3] for the vertex consisting of particles P1, P2, P3.
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 lgrngN.mdl (lgrngN.tex). This could be useful if SelectVertices statements are supposed to distribute all vertices which should be in the model, than some 'unexpected' vertices can be found in output lgrngN.mdl file.
An example of lepton-gauge vertices selection could read as
SelectVertices( 'lept-gauge.mdl', [e1/n1, e1/n1, A/Z/'W+'], WithAnti, Delete).