Vincia Tools

This page contains documentation of some useful tools that are included with VINCIA, such as a clustering map, the Rambo flat phase-space genrator, and brief descriptions of some more technical aids such as numerical integrators, spliners, root finders, etc.

The VinClu clustering map

AB->arb The VinClu clustering map is a 3->2 clustering map rather similar to that of the Arclus jet clustering algorithm. Its principal advantage is that it contains the exact inverses of the Vincia kinematics mappings, and hence it can be used to "undo" branchings and/or reconstruct the exact intermediate shower states from a given momentum configuration. The clustering is invoked using: Here iMap is the index number of the kinematics map to be used (the numbering follows Vincia:kineMapType), pIn is a vector of arbitrary size containing the state of particles to be clustered, and the indices a, r, b represent the 3 particles to be clustered in the backwards reconstruction of AB->arb. pClu is initially set equal to p. The reconstructed momenta of the parents, A and B, are then stored in pClu[a] and pClu[b], respectively, and finally pClu[r] is erased. (Note that this last step may cause the indices of A and/or B in pClu to be different from those of a and b in p. For the most common case, a color-ordered clustering with r=a+1 and b=a+2, the indices of A and B after the clustering will be A=a and B=A+1.)

Rambo Generator

The Rambo algorithm for flat phase-space generation is a standalone utility which is not used by VINCIA internally (VINCIA uses the antenna shower as its phase space generator instead). We (the authors) use the Rambo implementation mostly to make (un)weighted phase-space scans for comparisons between matrix elements and antenna shower expansions, but it is obviously a tool with a great variety of possible uses. If you use it, please add a reference to

When the VINCIA plugin is constructed, a member object called rambo is automatically constructed and initialized inside the plugin. As mentioned, this object is not actually used by VINCIA, but is available to the user if needed.

A uniformly distributed (flat) n-particle phase-space point can then be generated by using the member function
rambo.genPoint(double S,int nPartons,double p[4][8]);
where S is the desired center-of-mass energy squared, nPartons <= 8 sets the multiplicity, and the momenta are returned in the double array p, whose entries can be converted to PYTHIA 8's Vec4 format in the following way:
Vec4 VecP;
VecP.px(p[1][iParton]);
VecP.py(p[2][iParton]);
VecP.pz(p[3][iParton]);
VecP.e(p[0][iParton]);
where 0 <= iParton <= nPartons-1.

If desired, further Rambo generators could in principle be created using the following Rambo constructor
Vincia::Rambo myRambo(myRndmPtr);
where myRndmPtr should be a pointer to an instance of PYTHIA's Rndm class. For most purposes, however, the automatically initialized rambo object already provided inside the VINCIA plugin should be sufficient.

Text Output Utilities

Mathematical Functions and Constants

Binomial and Factorial

The binomial coefficients, (n,m), and the factorial, n!, are available inside namespace Vincia as:

Dilogarithms

The dilogarithm, Li2(x), is available inside namespace Vincia as:

The Gamma Function

The Gamma function, Gamma(x) is implemented for x > 0, and is based on the approximation by Lanczos (see Numerical Recipes). Two function calls are availabe inside namespace Vincia: The former is often more useful in calculations involving ratios of the Gamma function with large numbers, which would be cast as differences of logs.

Numerical Integration and Root Finding

One-dimensional Splines

Last modified: