MILOU is a Monte Carlo generator for deeply virtual Compton scattering (DVCS), ep → eYγ, developed by E. Perez, L. Schoeffel and L. Favart1. It is based on generalized parton distributions (GPDs) evolved to next-to-leading order.
Currently hosted on GitLab
Contact (for this version)
The MILOU code is written in Fortran. GPDs, evolved to next-to-leading order, provide the real and imaginary parts of Compton form factors (CFFs), which are used to calculate cross sections for DVCS and DVCS-BH interference. The package BASES/SPRING2 is used to generate events from these cross sections. First, the differential cross sections are integrated by the numerical integration package BASES to yield probability distributions. These distributions are used by the event generation package SPRING to generate the DVCS events. Proton dissociation (ep → eYγ) can be included, with hadronization of the system Y performed by PYTHIA.
A 32-bit installation of MILOU can be found in the EIC cmvfs region at
Note: At JLab, the 32-bit fortran libraries are unavailable. The simplest solution is to use singularity:
module load singularity export EIC_LEVEL=dev source /cvmfs/eic.opensciencegrid.org/x8664_sl7/MCEG/releases/etc/eic_bash.sh
The generator options are set via a “steering card” dvcs.steer. The options are described in the manual1.
Note that the executables expect the .dat files and the dvcs.steer file in the directory of execution. Easiest way to achieve this is a softlink (adapt to your location)
cp $EICDIRECTORY/PACKAGES/milou/dvcs.steer . ln -s $EICDIRECTORY/PACKAGES/milou/*.dat .
You can then run with:
The generated events are saved to a PAW ntuple, as well as to an ascii file compatible
with eicsmear. The output file names are hard-coded to
h2root can be used to produce a ROOT ntuple from the PAW ntuple:
h2root 15x50_dvcs.ntp <rootFileName>
The ascii output,
asc_15x50_dvcs.out, has the following structure:
"MILOU32 S. Fazio BNL"
|I:||0 (line index)|
|ievent:||eventnumber running from 1 to XXX|
|linesnum:||numbers of particles in the event (max value of line index); =5 if no radiative corrections applied, =6 otherwise|
|weight:||applied weight, default is 1.00000000|
|genprocess:||generated process (1=BH, 2=DVCS, 3=Interaction(btw BH and DVCS), 4=BH+DVCS+Interaction, 5=SSA without TW3)|
|radcorr:||radiative corrections (0= NO correction; 1= Initial State Radiation(ISR) )|
|truex, trueQ2, truey, truet, truephi:||are the kinematic variables of the event.|
|phibelgen:||azimuthal angle between the production and the scattering plane.|
|phibelres:||azimuthal angle (see above) resolution.|
|phibelrec:||reconstructedazimuthal angle between the production and the scattering plane.|
|If radiative corrections are turned on they are different from what is calculated from the scattered lepton.|
|If radiative corrections are turned off they are the same as what is calculated from the scattered lepton|
|I:||line index, runs from 1 to number of particles|
|K(I,1):||status code KS (1: stable particles 11: particles which decay 55; radiative photon)|
|K(I,2):||particle KF code (211: pion, 2112:n, ….)|
|K(I,3):||line number of parent particle|
|K(I,4):||normally the line number of the first daughter; it is 0 for an undecayed particle or unfragmented parton|
|K(I,5):||normally the line number of the last daughter; it is 0 for an undecayed particle or unfragmented parton.|
|P(I,1):||px of particle|
|P(I,2):||py of particle|
|P(I,3):||pz of particle|
|P(I,4):||Energy of particle|
|P(I,5):||mass of particle|
|V(I,1):||x vertex information|
|V(I,2):||y vertex information|
|V(I,3):||z vertex information|
The information from line 8 to X-1 repeats for each event.
Cannot currently be built with 64 bits. This is most likely fixable (it does compile, but the output contains NaNs).