DipoleCascade
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
- PYTHIA 8.317, built and installed with
pythia8-configavailable. - A C++11 compiler and GNU Make.
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:
build/lib/libDipoleCascade.so;- the test and example programs in
build/bin/.
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:
testEvolution: cascade multiplicity and geometry;testSingleCascade: one cascade-pair amplitude versus impact parameter;testSigmaPP: pp Good--Walker observables anddsigma_el/dt;testSigmaGammaP: virtual-photon--proton total cross sections.
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.
