DipoleCascade

Clone on GitLab

DipoleCascade

DipoleCascade is a PYTHIA 8 plugin implementing Mueller dipole evolution in transverse impact-parameter space. It generates proton, pion and virtual photon dipole states, evaluates their eikonal dipole--dipole interaction, and computes total, elastic and diffractive Good--Walker cross sections.

The implementation follows C. Bierlich and C. O. Rasmussen, Dipole evolution: perspectives for collectivity and gammaA collisions*, JHEP 03 (2020) 099.

Requirements

No other library is required.

Build

If pythia8-config is on PATH:

make

Otherwise give its absolute path:

make PYTHIA8_CONFIG=/path/to/pythia8-config

This produces:

The build intentionally supports only PYTHIA 8.317. Compatibility with a new PYTHIA release should be declared in src/Package.cc only after testing it.

Run

The plugin needs the PYTHIA XML directory, its own XML directory, and its shared library at runtime. For a shell session:

export PYTHIA8_CONFIG=/path/to/pythia8-config
export PYTHIA8DATA="$($PYTHIA8_CONFIG --xmldoc)"
export PYTHIA8CONTRIB="$PWD/share"
export LD_LIBRARY_PATH="$PWD/build/lib:$($PYTHIA8_CONFIG --libdir):${LD_LIBRARY_PATH:-}"

On macOS, set DYLD_LIBRARY_PATH in the same way. Then, for example:

build/bin/testSingleCascade examples/sigmaPP.cmnd 8
build/bin/testSigmaPP examples/sigmaPP.cmnd 40 200 7000

The command files load the plugin with Init:plugins = {libDipoleCascade.so}. Their parameter values are the confined pp and gamma*p reference configurations of Bierlich and Rasmussen, adapted to the current positive log-normal hadron-size sampler. They are reasonable examples, not universal tunes.

Public C++ interface

All classes are in Pythia8::Pythia8Contrib::DipoleCascade.

Include DipoleCascade/DipoleCascade.h for states and evolution:

CascadeGenerator generator(&pythia.settings, &pythia.rndm);
DipoleState proton = generator.evolveProton(yMax);
DipoleState pion = generator.evolveMeson(yMax);

Include DipoleCascade/GoodWalker.h for amplitudes and cross sections:

Amplitude amplitude(&pythia.settings);
double T = amplitude.T(projectile, target, impactParameter, 0.0);

DipoleCrossSections xs(&pythia.settings, &pythia.particleData, &pythia.rndm,
                       2212, 2212, 7000.0, -1.0, 40, 200);
xs.calculate();
double sigmaTot = xs.sigmaTot();
double sigmaEl = xs.sigmaEl();
double Bel = xs.Bel();
ElasticDsigmaDt dsdt = xs.dsigmadt({0.0, 0.1, 0.2});

Transverse distances are in fm, cross sections in mb, B_el in GeV^-2, and dsigma_el/dt in mb/GeV^2 with |t| in GeV^2. See PHYSICS.md for the model and conventions. Runtime settings and their defaults are documented in share/DipoleCascade/xmldoc/Settings.xml.

Test programs

make test builds and runs the self-check plus low-statistics smoke runs of:

The self-check verifies cascade generation, the amplitude bound, positive inclusive cross sections and the elastic optical-point identity. Test programs are examples of the supported C++ interface; their low-statistics outputs are not reference predictions.

Scope

The module uses PYTHIA for settings, random numbers, particle data and constants. It does not generate complete hadronic final states. The cascade has no nonlinear saturation term, dipole swing or real part of the scattering amplitude; these limitations are described in PHYSICS.md.

License

GPL-3.0-or-later; see COPYING. Please also observe the MCnet Guidelines.