DDVCS and TCS event generator

From Hall A Wiki
Jump to: navigation, search

This page has been moved to https://solid.jlab.org/wiki/index.php/DDVCS_and_TCS_event_generator in the new SoLID Wiki. Please do not edit this page.

Update > Dec. 2018, see new webpage on DEEPGen event generator

Principle

This event generator was developed for JLab@12 GeV TCS and DDVCS future experiments. The main options are the generation of:

- "TCS" events with a real photon beam,

- "TCS" events with an electron beam, and a quasi-real photon emitted (default cut is Q2<0.3 GeV2) originating from interaction with the target or from bremsstrahlung in the target,

- "DDVCS" events where the final virtual photon decays into a muons pair

These processes also interfere with Bethe-Heitler (BH). Each generated event contains weight for TCS (or DDVCS) cross section, BH cross section, TCS (or DDVCS) + BH cross section. For TCS (DDVCS) and BH "only" weights, only unpolarized cross section is provided. Their calculation can be switch off to gain time. For BH+TCS, unpolarized and all kind of polarized cross sections are calculated according to polarization setup in the input file. Polarized cross sections are corrected for dilution factors. Several options allow for calculations of beam-only, target-only, beam+target polarized cross sections. Spin directions of beam and target can be modified. Asymmetries are also provided but are not corrected for dilution factors. In the case of TCS with a quasi-real photon, two weights are given: the corresponding weight for photoproduction, and the cross section accounting the photon emission.

For DDVCS, unpolarized and beam polarized cross sections are provided (with dilution factor correction) as well as the beam spin asymmetry (without dilution).

Units for cross sections for both processes are picobarn.

Cross sections and GPD parametrization are calculated according to VGG model (1-2). Reference articles for these processes using VGG model are, for DDVCS: (3), and for TCS: (4).

Kinematics

The generator is developed for some specific JLab experiment, also the kinematic range it handle was choosen according to these experiments. The default beam energy is 11 GeV for an electron beam, and in a range between 5 and 11 GeV for the case of TCS with a real or a quasi-real photon beam. Limits of the generator are given in the user's files.

Default is a proton target. The lenght of the target is an user choice. (other targets in development).

For TCS, the user can choose the beam type (electron or photon) and the range in energy of the photon. The user also defines the range in Q'2 (emitted photon virtuality), t, theta (polar decay angles for the lepton pair). In case of an electron beam, its default energy is 11 GeV. The cross section also depends on phi (azimuthal decay angles for the lepton pair), ranging by default in [0°, 360°].

For DDVCS, the beam energy is 11 GeV by default. The user can define the range in Xbj, Q2 (initial photon virtuality), Q'2 (final photon virtuality), t, theta_cm (equivalent as TCS theta angle). The cross section also depends on phi_LH (corresponding to DVCS angle), and phi_cm (corresponding to TCS angle).

Usage

To run the code: use root ./DEEPGen (process = tcs or ddvcs) (index = any integer) (seed = optionnal, user provided and/or internal)

input files: TCS.input and DDVCS.input. The user can change any parameter, and define the kinematics and the number of events in ouput file.

output file: DEEPGen_(index).root. Contains TCS_Tree (only for tcs option), DDVCS_Tree (only for DDVCS option) and Debug_Tree (a verbose mode Tree with all the 50 first events four-vectors and parameters for each step of the generation).

Output

The root format output file contains the four-vectors of the final state particle, where the energy and momentum are provided in the "lab" frame. It also contains the weights of events and kinematic variables.

Main variables contained in the Tree.

TCS

ALV_minus_lab   = 4-vector or outgoing lepton- in lab frame (all 4-vector "ALV_xxx" are arrays containing: E, px, py, pz)
ALV_plus_lab    = outgoing lepton+ in lab frame
ALV_gamma_in    = incoming photon in lab frame
ALV_el_in       = incoming electron in lab frame (case of quasi-real beam)
ALV_Recoil_lab  = recoil proton in lab frame
ALV_el_out      = scattered beam electron in lab frame (case of quasi-real beam)
Q2              = incoming photon virtuality in case of quasi real beam
theta_gamma     = polar angle of incoming photon in case of quasi real beam
theta_beam      = scattered electron polar angle in case of quasi real beam
phi_beam        = azimuthal angle of electron and incoming photon versus x-axis in case of quasi real beam
Psi_s           = angle between reaction plane and spin direction of linearly polarized incoming photon (option linear polarization only)
yy              = electron beam energy loss
Qp2             = final photon virtuality
tt              = t Mandelstam
RotAxis         = arbitrary rotation of all planes versus x-axis
ttmin           = minimal t allowed at this kinematic
Phi_CMV         = azimuthal angle of decay leptons plane versus reaction plane
Theta_CMV       = polar angle of decay electron versus reaction plane and virtual photon direction
Egamma          = energy of incoming photon
cross_tot_unpol = unpolarized cross section for real photon beam
cross_BH        = Bethe-Heitler "only" unpolarized cross section for real photon beam
cross_TCS       = TCS "only" unpolarized cross section for real photon beam
W_tot_unpol     = actual total unpolarized cross section with flux factor for quasi real beam
W_BH            = B-H "only" unpolarized cross section with flux factor for quasi real beam
W_TCS           = TCS "only" unpolarized cross section with flux factor for quasi real beam
VirtualFlag     = if 0 the incoming photon is real (real beam or bremsstrahlung in target), if 1 the incoming photon is quasi real
Flux_qr         = quasi real equivalent flux
Flux_bmr        = bremsstrahlung in the target equivalent flux
epsilon         = polarization
BSA             = single beam spin asymmetry at this kinematic (no dilution)
TSA             = single target spin asymmetry (no dilution)
BTSA            = double beam and target spin asymmetry (no dilution)
EventNumber     = event number
TrueEventNumber = actual number of events generated in hyper cubical space (for normalization)
cross_tot_pol   = beam + target polarized cross section (real photon / dilution factors)
W_tot_pol       = beam + target actual polarized cross section (quasi real beam + flux / dilution factors)
cross_tot_pol_beam = beam only polarized cross section (real photon / dilution factor)
cross_tot_pol_beam_circ = circular beam polarized cross section (real photon / dilution factor)
cross_tot_pol_beam_lin = linearly polarized beam cross section (real photon / dilution factor)
W_tot_pol_beam  = beam only polarized cross section (quasi real photon + flux / dilution factor)
W_tot_pol_beam_circ = circular beam polarized cross section (quasi real photon + flux / dilution factor)
W_tot_pol_beam_lin = linearly polarized beam cross section (quasi real photon + flux / dilution factor)
cross_tot_pol_target = target polarized cross section (real photon / dilution factor)
W_tot_pol_target = target polarized cross section (quasi real photon + flux  / dilution factor)
phi_s           = target spin azimuthal angle versus x+z plane in lab frame
theta_s         = target spin polar angle versus z-axis in lab frame
target_spindir  = spin orientation of target (+1 or -1)
beam_spindir    = spin orientation of beam (+1 or -1)
poltargetdeg    = dilution factor of target polarization
polbeamdeg_circ = dilution factor for circularly polarized beam (includes energy dependence)
polbeamdeg_lin  = dilution factor for linearly polarized beam (averaged, no energy dependence)
polbeamdeg      = dilution factor of initial beam: real photon or electron

DDVCS

ALV_minus_lab   = 4-vector or outgoing lepton- in lab frame (all 4-vector "ALV_xxx" are arrays containing: E, px, py, pz)
ALV_plus_lab    = outgoing lepton+ in lab frame
ALV_gamma_in    = incoming photon in lab frame
ALV_el_in       = incoming electron in lab frame
ALV_Recoil_lab  = recoil proton in lab frame
ALV_el_out      = scattered beam electron in lab frame
Q2              = initial photon virtuality
theta_beam      = scattered electron polar angle
phi_beam        = azimuthal angle of electron and incoming photon versus x-axis
yy              = electron beam energy loss
Xbj             = bjorken variable
Qp2             = final photon virtuality
tt              = t Mandelstam
RotAxis         = arbitrary rotation of all planes versus x-axis
ttmin           = minimal t allowed at this kinematic
Phi_CMV         = azimuthal angle of decay leptons plane versus reaction plane
Theta_CMV       = polar angle of decay electron versus reaction plane and virtual photon direction
Phi_LH          = angle between leptonic (beam, scattered) and reaction plane
W_tot_unpol     = unpolarized total cross section
W_BH            = Bethe-Heitler "only" unpolarized cross section
W_DDVCS         = DDVCS "only" unpolarized cross section
BSA_ddvcs       = beam spin asymmetry with no dilution factor at this kinematic
cross_tot_pol_beam = polarized cross section for specific spin and dilution factor
polbeamdeg_lin  = degree of linear polarization (assume average, didn't included dependences in this version)
beam_spindir    = spin direction of the incoming electron
EventNumber     = event number
TrueEventNumber = actual event number generated in hyper-cubical space for normalization purpose

Debug Tree

ALV_minus_lab   = 4-vector or outgoing lepton- in lab frame (all 4-vector "ALV_xxx" are arrays containing: E, px, py, pz)
ALV_plus_lab    = outgoing lepton+ in lab frame
ALV_gamma_in    = incoming photon in lab frame
ALV_el_in       = incoming electron in lab frame (case of quasi-real beam if tcs, or ddvcs)
ALV_Recoil_lab  = recoil proton in lab frame
ALV_el_out      = scattered beam electron in lab frame (case of quasi-real beam if tcs, or ddvcs)
ALV_minus_CMV   = lepton- in virtual photon center of mass frame
ALV_plus_CMV    = lepton+ in virtual photon center of mass frame
ALV_minus_CMeP  = lepton- in photon-proton center of mass frame
ALV_plus_CMeP   = lepton+ in photon-proton center of mass frame
ALV_gamma_CMeP  = incoming photon in photon-proton center of mass frame
ALV_Recoil_CMeP = recoil proton in photon-proton center of mass frame
ALV_Virtual_CMeP = final virtual photon in photon-proton center of mass frame
ALV_Virtual     = final virtual photon in lab frame
ALV_Target_CMeP = incoming proton in photon-proton center of mass frame
Q2              = incoming photon virtuality in case of tcs quasi real beam or ddvcs
RotAxis         = random azimuthal rotation of reaction plane
theta_beam      = scattered electron polar angle in case of tcs quasi real beam or ddvcs
phi_beam        = azimuthal angle of scattered electron and photon plane in case of tcs quasi real beam or ddvcs
yy              = beam electron energy loss
Xbj             = valid for ddvcs
Qp2             = final photon virtuality
tt              = t Mandelstam
ttmin           = minimal t at this kinematic
Phi_CMV         = azimuthal angle of decay lepton plane versus reaction plane
Phi_LH          = azimuthal angle of scattered electron plane versus virtual photon (reaction) plane for ddvcs
Theta_CMV       = polar angle of decay lepton minus versus virtual photon orientation
EventNumber     = event number
TrueEventNumber = number of events actually generated at this step (for normalization purpose)

Where to find the generator (version 3.1 and 3.0)

Public version 3.1 (Feb. 2018)

Generator: /work/halla/solid/mboer/public/Generator_publicversion/version3.1

A copy is also available on: /work/hallc/nps/mboer/public_files/Generator_publicversion/version3.1

To run the generator, copy the full directory, run set.sh and generate events with: ./DEEPGen tcs (int number) (seed) The seed has to be provided by the user when running the code. It has to be set to run multiple jobs on the farm. If not, a seed is provided inside the code but may not be valid for parallel jobs starting at the same time.

Instructions in the README file. Example on: /work/halla/solid/mboer/public/Generator_publicversion/examples/version3.1

The directory on solid disk contains one generated file and the corresponding input file as example.

Note: to run tests, or to run unpolarized cross sections, set target polarization at 0 or 3 (unpolarized or linearly polarized) and set beam polarization as circular (option 0). The code runs much faster with these options.

Remark: DDVCS is disabled in this version. TCS has been tested for all polarization cases. Example files on demand.

Public TEST version 3.0 (June 2017)

Generator: /work/halla/solid/mboer/public/Generator_publicversion/version3.0_slow development version FOR TEST ONLY. PLEASE DON'T RUN IT ON IFARM.

More instructions on: /work/halla/solid/mboer/public/Generator_publicversion/version3.0_slow/README

Check files used for testing version 3.0: /work/halla/solid/mboer/public/Generator_publicversion/examples/version3.0_slow_testfiles

Normalization

Use a phase space factor equal to the product of the range of each kinematic variable used to calculate the cross section. Depends on user defined phase space. Weights of the generator are differential cross sections dσ/(dQ'2dtdφdcos(θ)). They are unpolarized or polarized, for different scenarios.

Nevent = W_BH*sin(Theta_CMV)*luminosity*Δ(t)*Δ(Q'2)*Δ(theta)*Δ(phi)/sum(TrueEventNumber of last event of each files)

If events are not generated at fix beam energy, they have to be rescaled to beam profile. For convenience, events are generated flat over the range in ΔE and can be rescaled to the integrated luminosity over the realistic energy distribution.

Presentations and slides about updates

- July 6th, 2017. Few update on version 3.0, polar angle for bremsstrahlung photons in TCS

/work/halla/solid/mboer/public/Presentations/2017/updategenerator_6juillet2017.pdf

- Presentation for ee meeting, June 29, 2017. General presentation on the generator, how to run and public version

/work/halla/solid/mboer/public/Presentations/2017/mboer_eemeeting_29juin2017.pdf

- Instructions on how to run the generator, checks of test version 3.0 for TCS and DDVCS:

/work/halla/solid/mboer/public/Presentations/2017/generator_testversion30_14juin2017.pdf

History and past versions

version 1.0: April 2015

- used for PAC 44 proposals/ LOI

- discretisation effects in cross sections

- include luminosity and actual targets for direct counting rates predictions

version 2.xx: 2015 / 2016

- (Summer 2015) faster: use of grids with specific indexations for faster read and less memory use

- (Fall 2015) more precise with extrapolations/ interpolation of cross sections, spin asymmetries but no particle's spin dependences and no corrections to the polarized cross sections

- (2016) several versions, slower and faster, more or less precise. Discretisation accuracy shown at % level

- (Jan. 2016) flags used to prevent divergencies of BH cross section in some part of the phase space. Calculations at several "safe" points to prevent such effect

Last updates on version 3.0

TCS

Updates on the web on June 15, 2017:

- polarization vector for beam and for target: phi_s, theta_s (target) and Psi_s (linearly polarized beam) dependences

- transversally and linearly polarized targets

- corrections in polarized cross sections for spin not aligned along beam or target axis

- spin asymmetries (raw) and polarized cross sections (corrected for dilutions factor (s) of beam and/or target )

- circular polarization rate

- non zero polar angle from sampling for bremsstrahlung photons

- spin of incoming particles

Updates July 6, 2017:

- target choices updated: H, He, NH3... see input file.

- correction for theta_s in case of transverse polarization

- correction for angular dependence of bremsstrahlung for TCS with an electron beam

DDVCS

- beam spin asymmetry (raw) and polarized cross sections (corrected for beam dilution factor)

General:

- faster than last "slow" version

- new options in input files

- option to run only BH to go faster

- calculations with VGG GPD model, no interpolation/extrapolations in this version ("slow")

Instructions for version 2 - deprecated (2015-2016)

Principle

The main options are the generation of:

- "TCS" events with a real photon beam,

- "TCS" events with an electron beam, and a quasi-real photon emitted (default cut is Q2<0.3 GeV2) originating from interaction with the target or from bremsstrahlung in the target,

- "DDVCS" events where the final virtual photon decays into a muons pair

These processes also interfere with Bethe-Heitler (BH). Each generated event contains weight for TCS (or DDVCS) cross section, BH cross section, TCS (or DDVCS) + BH cross section. The weights are calculated before the use of the generator and saved in data grids. To avoid strong discretization effects, a linear interpolation is done between the adjacent bins (5 dim for TCS and 7 dim for DDVCS).

The generator also gives a "weight" for beam and target spin asymmetries (warning: in development). In the case of DDVCS, linearly polarized electron beam spin asymmetry is provided. In the case of TCS, all beam+target combinations of single and double spin asymmetries are provided. These weights are indicative and should only be use to give an estimation of the spin asymmetry for a given event kinematic.

In the case of TCS with a quasi-real photon, two weights are given: the corresponding weight for photoproduction, and the cross section accounting the photon emission.

Output for TCS (similar for DDVCS)

- ALV_minus_lab, ALV_plus_lab: final lepton pair (array, 0=E, 1, 2, 3 = px, py, pz)

- ALV_gamma_in, ALV_el_in (if electron beam): initial particles, photon and/or electron from the beam

- ALV_Recoil_lab: final proton

- ALV_el_out: scattered electron in case of an electron beam

- Q2, yy, phi_beam, theta_beam: virtuality of the initial photon, beam energy loss fraction, scatteting angle of the electron in case of an electron beam and a quasi-real photon

- theta_gamma: polar angle of the quasi-real photon in case of an electron beam

- RotAxis: angle between lab x-axis and reaction plane

- tt = t, Qp2 = Q'2, Egamma: kinematics

- ttmin = t_min: maximal value of t allowed by the kinematic

- CosThetagg: cosine of the angle between initial and final photon

- Phi_CMV and Theta_CMV: angles of the electron from the decay of the virtual photons, between e- direction and the reaction plane

- Flux_qr, Flux_bmr: quasi real photon flux and bremsstrahlung flux for the given kinematic

- W_TCS, W_BH, W_tot_unpol: unpolarized cross section for TCS, BH, TCS+BH

- cross_TCS, cross_BH, cross_tot_unpol: cross section accounting the photon flux

- EventNumber: event number in the file. The last event correspond number correspond to the user request of number of events in a file.

- TrueEventNumber: number of the event in the generation process. The last event gives the total number of events that have been generated in a hypercubical space in kinematic variables to provide in the ouput file the required number of events by the user. Used for normalization.

- Flags: see below.

Flags

Some flags are given as information to prevent numerical divergencies.

- FlagEdge: only informative, the higher this number is, the closer it is from kinematic limits of the process or of the cross section grid.

- FlagStab: should be = 0, otherwise it indicates possible numerical divergences when calculating the cross sections.

- FlagVar: should be as low as possible. If > 1000, it indicates that the weight is not correct (numerical divergence). Otherwise it indicates that the cross section had strong variation between the given kinematic bin (of the grid) and its N-1 and N+1.

References

(1) M. Vanderhaeghen, P.A.M. Guichon and M. Guidal, "Deeply virtual electroproduction of photons and mesons on the nucleon: Leading order amplitudes and power corrections", Phys. Rev. D 60 (1999) 094017.

(2) M. Guidal, VGG code, (private communication).

(3) M. Guidal and M.Vanderhaeghen, "Double deeply virtual Compton scattering off the nucleon" Phys. Rev. Lett. 90 (2003).

(4) M. Boër, M. Guidal and M. Vanderhaeghen, "Timelike Compton scattering off the proton and generalized parton distributions" Eur. Phys. J. A 51 (2015) no.8, 103.