- Orthogonal matrices
- Reducing trigonometric expressions
- Heuristics for trigonometric expressions
- LaTeX output

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

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.OrthMatrix( {{, , }, {, , }, {, , }} ).

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.

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:

One can find in the output expressions likeparameter 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'.

In order to force LanHEP to substitute the expressionparameter sapb=sa*cb+ca*sb:'sin(a+b)'.

It is possible also to substitute an expressions by any polynomial involving paramters, for example,SetAngle(sa*cb+ca*sb=sapb).

whereSetAngle((sa*cb+ca*sb)**2+(sa*cb-ca*sb)**2=sapb**2+samb**2).

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
):

HereWarning: undefined angle combination; use:

SetAngle(ca*cb-sa*sb=aa000).

option UndefAngleComb=1.

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:

Hereangle sin=p1, cos=p2, sin2=p3, cos2=p4, tan=p5, texname=name.

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

Here the parametersparameter 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'.

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

These parameters are recognized as trigonometric functions automatically, by analysis of the right-side expressions.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)'.

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

whereoption SmartAngleComb=N.

- 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.

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: `'vars N.tex'`,

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

HereSetTexName([ident=texname, ...]).

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

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