0%

Differential Cross Section in FormCalc

Updates on 2019-09-22

Afterwards, we checked the manual more carefully. We find the true usage of FCHSELN and FCHSELEPS which actually has nothing to do with the steps in differential cross section. So what I was talking about in the following is nonsense. The true meaning of these two environment variables is that they control the behavior that the program no longer probe some helicity combination with too small contributions. In our case, the reason that we will have the problem in differential cross section calculations is that our process is somehow different and we are look at one of the not dominant helicity combinations. I'll check this with more detailed calculation.

Version of FormCalc

9.6.0

Calculation of the Differential Cross Section in FormCalc

When using FeynArt/FormCalc, sometime, we will first generate the amplitude/matrix element inside Mathematica. Then we will dump the formula into Fortran code to do the numerical calculation.

Usually, there will be no problem. You can calculate the total cross section at some \(\sqrt{s}\) by evoking:

1
./run uuuu sqrts,to,step

or differential cross section (for \(2\to2\) process, it is \(\frac{d\sigma}{dc_\theta}\)) by

1
./run uuuu sqrts

Inside run.F, you can find the steps of \(c_\theta\)

1
2
3
4
5
6
#define COSTH1CUT .01D0
#ifdef DEBUG
#define XCOSTH1STEP 1/3D0
#else
#define XCOSTH1STEP .02D0
#endif

Which defines the step is 1/3 in debug mode or 0.02 otherwise. The #define COSTH1CUT .01D0 defines the cut at \(c_\theta\) such that the range is \(c_\theta\in[-1+0.01, 1-0.01]\).

The Problem

The problem appears when we want to do a more detailed calculation of the differential cross section, i.e. we want a much smaller step (more sample points).

By default, the maximum number of sample points is 50 which means if you set #define XCOSTH1STEP 1/100D0, only first 50 points will have reasonable results. The results for other points will either be 0 or some other non-sense value.

Solution

The maximum number is controlled by an environment variable FCHSELN. The default value is 50. If you want to increase the sample points, you need to set this environment variable before running the program.

1
export FCHSELN=1000; ./run uuuu sqrts

Note

There is another environment variable FCHSELEPS, which might have similar usage.

Thanks for Your Supports.