Next: Declaration of new index Up: The LanHEP Handbook Previous: Checking the correctness of   Contents

Subsections

# Simplifying the expression for vertices

## Orthogonal matrices

If some parameters appear to be the elements of the orthogonal matrix such as quark mixing Cabbibo-Kobayashi-Maskava matrix, one should declare them by the statement

OrthMatrix( {{, , }, {, , }, {, , }} ).
where denote the parameters. Such a declaration permits LanHEP to reduce expressions which contain these parameters by taking into account the properties of the orthogonal matrices.

Note that this statement has no relation to the arrays; it just declares that these parameters satisfy the correspondent relations. Of course, one can declare further a matrix with these parameters as components by means of the let statement.

## Reducing trigonometric expressions

Some physical models, such as the MSSM and general Two Higgs Doublet Model [4], involve large expressions built up of trigonometric functions. In particlular, after the diagonalization of the Lagrangian in the Higgs sector, in the models mentioned above two angles, and , are introduced, thus the Lagrangian may be written in LanHEP notation using the following definitions:

parameter sa=0.5:'sinus alpha',
ca=Sqrt(1-sa**2):'cosine alpha'.
parameter sb=0.9:'sinus beta',
cb=Sqrt(1-sb**2):'cosine beta'.
One can find in the output expressions like sa*cb+ca*sb and much more complicated ones. To simplify the output and make it more readable the user can define new parameters, for example:
parameter sapb=sa*cb+ca*sb:'sin(a+b)'.
In order to force LanHEP to substitute the expression sa*cb+ca*sb by the parameter sapb, one should use the statement
SetAngle(sa*cb+ca*sb=sapb).
It is possible also to substitute an expressions by any polynomial involving paramters, for example,
SetAngle((sa*cb+ca*sb)**2+(sa*cb-ca*sb)**2=sapb**2+samb**2).
where samb should be previously declared as a parameter. Note, that LanHEP expands both expressions before setting the substitution rule. The left-hand side expression can also contain symbols defined by let statement. In the Lagrangian expressions LanHEP expresses powers of cosines, ca**N and cb**N through sines using recursively the formula to combine all similar terms. The same procedure is performed for the left-hand side expression in SetAngle statement.

If the substitution for one angle combination is defined, LanHEP offers to define the other ones for expressions consisting of parameters used in previous SetAngle statements. In our example, for all expressions consisting of parameters ca, cb, sa, sb, the following message is printed (e.g. for ):

Warning: undefined angle combination; use:
SetAngle(ca*cb-sa*sb=aa000).
Here aa000 is an automatically generated parameter. The message is printed only once for each expression. This feature is disabled by default; to enable producing these messages, one should issue the statement
option UndefAngleComb=1.

## Heuristics for trigonometric expressions

LanHEP can apply several heuristic algorithms to simplify these expressions. For each angle , the user should declare parameters for , , , , . Than one should use the angle statement:

angle sin=p1, cos=p2, sin2=p3, cos2=p4, tan=p5, texname=name.
Here pN -- parameter identifiers, name -- LaTeX name for angle, it is used to generate automatically LaTeX names for trigonometric functions of this angle if these names are not set explicitly by SetTexName statement. This statement should immediately follow the declaration of the parameters for and . Only the sin and cos options are obligatory. Other parameters (i.e. , , ) should be declared if these parameters are defined before and . If the former parameters will be declared in terms of latter ones, they are recognized automatically and they need not appear in angle statements.

For example, the declaration for trigonometric functions of angle in MSSM may read:

parameter tb=2.52:'Tangent beta'.
parameter sb=tb/Sqrt(1+tb**2):'Sinus beta'.
parameter cb=Sqrt(1-sb**2):'Cosine beta'.
angle sin=sb, cos=cb, tan=tb, texname=' beta'.
parameter s2b=2*sb*cb:'Sinus 2 beta'.
parameter c2b=cb**2-sb**2:'Cosine 2 beta'.
Here the parameters s2b and c2b are recognized automatically by LanHEP as and since they are declared in terms of sa, ca parameters.

For a couple of angles ( , in this example) the user should declare the parameters for , , , and to allow using all implemented heuristics:

parameter sapb=sa*cb+ca*sb : 'sin(a+b)'.
parameter samb=sa*cb-ca*sb : 'sin(a-b)'.
parameter capb=ca*cb-sa*sb : 'cos(a+b)'.
parameter camb=ca*cb+sa*sb : 'cos(a-b)'.
These parameters are recognized as trigonometric functions automatically, by analysis of the right-side expressions.

It is possible to control the usage of heuristics by the statement:

option SmartAngleComb=N.
where N is a number:
0
heuristics are switched off;
1
heuristics are switched on (by default);
2
same as 1, prints the generated substitution rule if the simplified expressions consists of more than 3 monomials;
3
same as 1, prints all generated substitution rule.
4
same as 1, prints all generated substitution rule and some intermediate expressions (debug mode).

The substitution rules are printed as SetAngle statement and can be used for manual improvement of expressions.

## LaTeX output

LanHEP generates LaTeX output instead of CompHEP model files if the user set -tex in the command line to start LanHEP. Three files are produced: 'varsN.tex', 'prtclsN.tex' and 'lgrngN.tex'. The first file contains names of parameter used in physical model and their values. The second file describes the particles, together with propagators derived from the vertices.

The last file lists introduced vertices. LanHEP uses Greek letters ... for vector indices, letters ... for spinor ones and ... for color indices (and for indices of other groups, if they were defined).

It is possible to inscribe names for particles and parameters to use them in LaTeX output. It can be done by the statement

SetTexName([ ident=texname, ... ]).
Here ident is an identifier of particle or parameter, and texname is string constant containing LaTeX command. Note, that for introducing backslash '' in quoted string constant one should type it twice: ' '.

For example, if one has declared neutrino with name n1 (and name for antineutrino N1) than the statement

SetTexName([n1=' nu^e', N1=' bar{ nu}^e']).
makes LanHEP to use symbols and for neutrino and antineutrino in LaTeX tables.

Next: Declaration of new index Up: The LanHEP Handbook Previous: Checking the correctness of   Contents
Andrei Semenov 2008-02-16