
   \CompHEP \C-output is  quite similar to the \Fortran~ one. 
Units and normalizations are also the same.
   Now we shall list the functions and the global constant parameters 
defined in this output and  called by the program {\it n\_comphep\_c}.   

  \subsubsection*{Parameter section}
 
\hspace*{1cm} {\tt const int  nvar\_}  is a number of independent physical parameters 
involved in  the evaluation of  squared matrix element.\\
\hspace*{1cm} {\tt const int nfunc\_}  is a number of constrained parameters involved 
in  the evaluation of  squared matrix element.\\
\hspace*{1cm}  {\tt int calcFunc(void)}  calculates all constrained parameters for current 
values of independent ones. It returns 0 in the case of success, otherwise 1.\\
\hspace*{1cm}{\tt int vinf\_(int numvar, char *name, double *val)}
 provides the  information about parameters. Here the incoming  
parameter   {\it numvar}  is a parameter number. The outgoing 
parameters {\it *name} and {\it *val} are the parameter name and  value, 
correspondingly.
If *name or {\it *val} is {\it NULL} no assignment for the  corresponding parameter 
will be done.

  The parameter  numbers in the range from 1 till {\it nvar\_} are 
reserved for independent parameters and the next  {\it nfunc\_} numbers are used  
for constraints.
  Equal-to-zero {\it numvar}  is associated with the center of mass energy.
If the {\tt numvar} value is out of this range, {\tt vinf\_(..)} returns 1.\\
\hspace*{1cm}  {\tt int asgn\_(int numvar, double valnew);}
assigns a new value {\it valnew}  to the   {\it numvar} parameter. 
It returns $0$ if $0 <= numvar <= nvar\_$, or $1$ otherwise.  


\subsubsection*{Process section}

\hspace*{1cm}  {\tt const int nin\_}   is a number of incoming particles\\
\hspace*{1cm}  {\tt  const int nout\_}  is a number of outgoing particles\\
\hspace*{1cm}  {\tt const int nprc\_}  is a total number of subprocesses \\
\hspace*{1cm}  {\tt char processch[]}   contains the process name. It is
needed to be only  displayed  on the  screen  during the {\it n\_comphep\_c} session.\\
\hspace*{1cm} {\tt int pinf\_(int nsub, int nprtcl, char *name, double * mass)} 
   returns the {\it name}   and  the {\it mass} of particle   with the 
{\it nprtcl} 
ordering number  for the subprocess {\it nsub}. First {\it nin\_}~  numbers are 
reserved for 
incoming particles, while next {\it nout\_} are assigned to  outgoing ones.
One  can  substitute the {\it NULL} constant  instead  of any  outgoing 
parameter  if the corresponding information is not needed.
The   function returns $0$ if $nsub <= nprc\_$ and $nprtcl <= nin\_+nout\_$,
  otherwise 1 is returned. 


\subsubsection*{The squared matrix element}
\hspace*{1cm} {\tt double sqme\_(int nsub,double * momenta, int * err)}
returns the numerical value of squared matrix element after   
summation over out-particle polarizations  and averaging over
in-particle polarizations.  Here 
 {\it nsub} is a  subprocess number,
 {\it momenta} is an array of particle momenta.   The $i^{th}$ Lorentz component 
of the particle number {\it N} corresponds to \mbox{\it momenta[4*N+i]},\\ 
 {\it *err} is a return parameter which does not equal  zero if   
{\it sqme\_} cannot be evaluated.  


  We assume that the zero Lorentz components of momenta  are positive
and  the sum of incoming particle momenta is equal to the sum of 
outgoing particle momenta.
   

\subsubsection*{Widths  implementation parameters}
    
\hspace*{1cm}  {\tt int rwidth, gwidth} are the logical variables which  
define a particle width 
treatment for calculations of the squared matrix element.  They mean 
 {\it running width} and {\it gauge invariant width}, correspondingly . 
See Section \ref{Breit-Wigner}  for details. The value of this variables can
 be changed  by means of the {\it n\_comphep\_c} menu.      
    


