The situation that is probably most common is that we know a
function
which is non-negative in the allowed
range
. We want to select an
`at random' so that the probability in a small interval
around a given
is proportional to
. Here
might be a fragmentation function, a differential cross section,
or any of a number of distributions.
One does not
have to assume that the integral of
is explicitly normalized
to unity: by the Monte Carlo procedure of picking exactly one
accepted
value, normalization is implicit in the final result.
Sometimes the integral of
does carry a physics content of
its own, as part of an overall weight factor
we want to keep track of. Consider, for instance, the case when
represents one or several phase-space variables and
a
differential cross section; here the integral has a meaning of total
cross section for the process studied. The task of a Monte Carlo is
then, on the one hand, to generate events one at a time, and, on the
other hand, to estimate the total cross section.
The discussion of this important example is
deferred to section
.
If it is possible to find a primitive function
which
has a known inverse
, an
can be found as
follows (method 1):
![]() |
|||
| (2) |
Special tricks can sometimes be found. Consider e.g. the generation
of a Gaussian
. This function is not integrable,
but if we combine it with the same Gaussian distribution of a second
variable
, it is possible to transform to polar coordinates
| (3) |
If the maximum of
is known,
in the
range considered, a hit-or-miss method will always yield the
correct answer (method 2):
Very often
does have narrow spikes, and it may not even be
possible to define an
. An example of the former
phenomenon is a
function with a singularity just outside the allowed region,
an example of the latter an integrable singularity just at the
and/or
borders.
Variable transformations may then be used to make a function
smoother. Thus a function
which blows up as
for
, with an
close to 0, would instead
be roughly constant if transformed to the variable
.
The variable transformation strategy may be seen as a combination
of methods 1 and 2, as follows. Assume the existence of a function
, with
over the
range of interest.
Here
is picked to be a `simple' function, such that the
primitive function
and its inverse
are known.
Then (method 3):
If
has several spikes, method 3 may work for each spike
separately, but it may not be possible to find a
that
covers all of them at the same time, and which still has an
invertible primitive function. However, assume that
we can find a function
,
such that
over
the
range considered, and such that the functions
each are non-negative and simple, in the sense that we can find
primitive functions and their inverses. In that case (method 4):
We have now arrived at an approach that is sufficiently powerful for
a large selection of problems. In general,
for a function
which is known to have sharp peaks in a few
different places, the generic behaviour at each peak separately
may be covered by one or a few simple functions
, to which
one adds a few more
to cover the basic behaviour away
from the peaks. By a suitable selection
of the relative strengths of the different
's, it is
possible to find a function
that matches well the general
behaviour of
, and thus achieve a reasonable Monte Carlo
efficiency.
The major additional complication is when
is a multidimensional
variable. Usually the problem is not so much
itself, but
rather that the phase-space boundaries may be very complicated.
If the boundaries factorize it is possible to pick phase-space
points restricted to the desired region. Otherwise the region may
have to be inscribed in a hyper-rectangle, with points picked within
the whole hyper-rectangle but only retained if they are inside the
allowed region. This may lead to a significant loss in efficiency.
Variable transformations may often make the allowed region easier to
handle.
There are two main methods to handle several dimensions, each with its
set of variations. The first method is based on a factorized ansatz,
i.e. one attempts to find a function
which is
everywhere larger than
, and which can be factorized
into
,
where
. Here each
may
in its turn be a sum of functions
, as in method 4 above.
First, each
is selected independently, and afterwards the ratio
is used to determine whether to retain the
point.
The second method is useful if the boundaries of the allowed region
can be written in a form where the maximum range of
is known,
the allowed range of
only depends on
, that of
only
on
and
, and so on until
, whose range may depend on
all the
preceding variables. In that case it may be possible to find a function
that can be integrated over
through
to yield
a simple function of
, according to which
is selected.
Having done that,
is selected according to a distribution
which now depends on
, but with
through
integrated
over. In particular, the allowed range for
is known.
The procedure is continued until
is reached, where now the
function depends on all the preceding
values. In the end, the
ratio
is again used to determine whether to
retain the point.