Skip to content

Latest commit

 

History

History
140 lines (111 loc) · 6.27 KB

README.md

File metadata and controls

140 lines (111 loc) · 6.27 KB

A charged particle at rest is surrounded by electric field which can be represented as a bunch of virtual photons with zero time component of the photons momenta. If the particle is moving with the speed close to the speed of light, momenta of the photons of its field acquire longitudinal component, so that the photons virtuality q2 ≪ ω2, where q is the photon 4-momentum, ω is the photon energy. Under the equivalent photon approximation (EPA) these photons are threated as real and are assumed to be distributed according to a known spectrum.

In many experiments in high energy physics, collisions of two ultrarelativistic charged particles are studied. Particles often do not collide head-on, but rather pass at some distance from each other and collide with their electromagnetic fields. If both particles survive in the collision, such collision is called ultraperipheral. Ultraperipheral collisions (UPC) can be considered as photon-photon collisions with the photons meeting the requirements of the equivalent photon approximation.

libepa is a library for calculations of cross sections of ultraperipheral collisions under the equivalent photon approximation. The cross sections are calculated as integrals over the convolution of the photon EPA spectra with the photon-photon cross section provided by the user. By default, the integration is performed with the help of GNU Scientific Library (GSL). The user can supply their own integration routines.

The documentation is available as doc/libepa.html. An overview of the theory of EPA and UPC can be found in papers[1-3]. Paper [3] in particular is devoted to the libepa approach and discusses the examples that can be found in the examples directory. Cite paper [3] if you want to make a reference to libepa.

A Python API is available.

Installation

Requirements:

  • A C++ compiler supporting the C++17 standard.
  • GNU Make.
  • GNU Scientific Library (GSL).
  • Boost test for tests.
  • pkg-config for tests and examples.
  • Python module cffi for the Python interface.
  • TeX Live for the documentation (should be possible to compile manually with any other TeX distribution).
  • TeX Live, Perl and Gnuplot for the plots in examples.

To compile, execute make in the project directory. Makefile supports the following targets:

  • default: compiles libepa.so and the Python interface.
  • all: also compiles doc/notes.pdf.
  • libepa.so: the libepa shared object file.
  • ffi: foreign function interface (FFI) for Python.
  • test: compile and run inexpensive tests; see test/README.md.
  • test_all: compile and run all tests; see test/README.md.
  • install: compile and install libepa.so, the headers and the Python modules.
  • uninstall: do the reverse of install: delete libepa.so, the headers and the Python modules from the system.

Also Makefile supports the standard GNU Make conventions:

  • prefix: installation root. Used to construct the variables below. Default is /usr/local.
  • exec_prefix: prefix for machine-specific files. Used for libdir. Default is $(prefix).
  • includedir: the directory for installing header files. Default is $(prefix)/include.
  • libdir: the directory for the library shared object file. Default is $(exec_prefix)/lib.
  • DESTDIR: prefix prepended to each file name during installation.

So, to compile and install the library and the FFI to the default locations, execute

make install

To compile and install the library and the FFI to ~/usr, execute

make prefix=$HOME/usr install

To compile and install the library to /usr/lib64 and the header files to /usr/include, execute

make prefix=/usr libdir=/usr/lib64 install

When installing system-wide, do remember to execute ldconfig as root; the target directory (/usr/local/lib by default) should be included in /etc/ld.so.conf.

Note that Python modules are installed via simple file copying to platlib with $(prefix) as platbase (this usually resolves to something like /usr/lib/python3.11/site-packages). If you want to have them installed into a different location, modify ffi/python/install.py or do it manually (see the script for the list of files). If you want to have them installed by pip, you can use ffi/python/setup.py.

To uninstall, execute make uninstall.

Directory structure

  • doc: library documentation.
  • examples: examples of how to use the library.
  • ffi: foreign function interface implementations.
  • include: headers.
  • src: sources.
  • test: tests.

See README.md in each of the directories for more.

Acknowledgements

libepa development was supported by the Russian Science Foundation grant No 19-12-00123.

References

  1. M. I. Vysotsky, E. V. Zhemchugov. Equivalent photons in proton-proton and ion-ion collisions at the LHC. Physics Uspekhi 62, 910 (2019); arXiv:1806.07238.
  2. S. I. Godunov, V. A. Novikov, A. N. Rozanov, M. I. Vysotsky, E. V. Zhemchugov. Production of heavy charged particles in proton-proton ultraperipheral collisions at the Large Hadron Collider: survival factor. Journal of High Energy Physics 2021, 234 (2021); arXiv:2106.14842.
  3. E. V. Zhemchugov, S. I. Godunov, E. K. Karkaryan, V. A. Novikov, A. N. Rozanov, M. I. Vysotsky. libepa — a C++/Python library for calculations of cross sections of ultraperipheral collisions. Computer Physics Communications 305, 109347 (2024); arxiv:2311.01353.