TABLE OF CONTENTS
- 1. /initHiLepton
- 1.1. initHiLepton/iExperiment
- 1.2. initHiLepton/iDetector
- 1.3. initHiLepton/shadow
- 1.4. initHiLepton/minimumMomentum
- 1.5. initHiLepton/ModusCalcFluxNorm
- 1.6. initHiLepton/realRun
- 1.7. initHiLepton/DoStatistics
- 1.8. initHiLepton/Ebeam
- 1.9. initHiLepton/user_ymax
- 1.10. initHiLepton/user_numin
- 1.11. initHiLepton/user_numax
- 1.12. initHiLepton/user_costmin
- 1.13. initHiLepton/user_costmax
- 1.14. initHiLepton/user_smin
- 1.15. initHiLepton/user_xBmin
- 1.16. initHiLepton/user_qsqmin
- 1.17. initHiLepton/user_qsqmax
- 1.18. initHiLepton/user_maxw
- 1.19. initHiLepton/earlyPauli
- 1.20. initHiLepton/EIC_Ee
- 1.21. initHiLepton/EIC_EA
- 1.22. initHiLepton/equalWeights_Mode
- 1.23. initHiLepton/equalWeights_Max
- 1.24. initHiLepton/HiLepton_getRealRun
- 1.25. initHiLepton/InitHiLeptonInduced
- 1.26. initHiLepton/initInput
- 1.27. initHiLepton/HiLeptonNucleus
- 1.28. initHiLepton/initExperiment
- 1.29. initHiLepton/initFixedKin
- 1.29.1. initFixedKin/nu
- 1.29.2. initFixedKin/Q2
- 1.29.3. initFixedKin/eps
- 1.29.4. initFixedKin/srts
- 1.29.5. initFixedKin/W
- 1.29.6. initFixedKin/xBj
- 1.30. initHiLepton/HiPhotonKinematics
- 1.31. initHiLepton/GetiExperiment
- 1.32. initHiLepton/GetEnergies
- 1.33. initHiLepton/GetPhotonKin
- 1.34. initHiLepton/photonFluxMC
- 1.35. initHiLepton/AccWeight
- 1.35.1. AccWeight/CLAS
- 1.35.2. AccWeight/CLASpi0
- 1.36. initHiLepton/checkConservation
/initHiLepton [ Modules ]
NAME
module initHiLepton
PURPOSE
This module is for high-energetic lepton-nucleus collisions. The kinematical setup is such that the exchanged virtual photon runs in z direction, while the leptons (incoming/outgoing) move in the x-z plane.
INPUTS
The namelists "HiLeptonNucleus" and "HiPhotonKinematics".
initHiLepton/iExperiment [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
integer,save :: iExperiment=0
PURPOSE
choice of experiment, detector and energy
possible values are:
- 0: no experiment/fixed kinematics
- 1: Hermes, 27GeV, D,N,Kr
- 2: Hermes, 27GeV, Ne
- 3: Hermes, 27GeV, H
- 4: JLAB, 12GeV
- 5: JLAB, 5GeV
- 6: EMC, 100GeV
- 7: EMC, 120GeV
- 8: EMC, 200GeV
- 9: EMC, 280GeV
- 10: Hermes, 12GeV
- 11: Hermes, 27GeV, arXiv:0704.3270
- 12: Mainz, Yoon: Ebeam=1.5GeV
- 13: Hermes, 27GeV, arXiv:0704.3712 (pT-broadening)
- 14: JLAB, 5GeV, rho0 experiment
- 15: JLAB, 4GeV, rho0 experiment
- 16: EIC, E_e and E_A given explicit (3+30,11+30,4+100)
- 17: no detector, total cross section, Ebeam
- 18: E665, 470GeV
- 19: CLAS/JLAB, 12GeV RunGroupA optimized 10.6 GeV
- 20: CLAS/JLAB, 12GeV RunGroupA theoterical
please note: The entry "iExperiment == 0" replaces the old HiPhoton event type.
initHiLepton/iDetector [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
integer,save :: iDetector = -1
PURPOSE
This sets the treatment of the detector:
- -1 : not valid/not initialized/use default
- 0 : no detector, as AccFlag=.false.
- 1 : HERMES, full efficiency
- 2 : EMC, full efficiency
- 3 : CLAS, only cuts (th_e=12°..50°, th_hadron=6°..143°)
- 4 : CLAS, full efficiency + cuts as for 5GeV
- 5 : CLAS, electron: cuts (th_e=12°..50°), hadrons: efficiency+cuts as for 5GeV
- 90 : full acceptance
initHiLepton/shadow [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
logical,save :: shadow=.true.
PURPOSE
flag: Consider shadowing or not
initHiLepton/minimumMomentum [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real,save :: minimumMomentum=0.1
PURPOSE
minimal momentum considered. (in GeV)
initHiLepton/ModusCalcFluxNorm [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
logical,save :: ModusCalcFluxNorm=.false.
PURPOSE
if this flag is true, than we do not really generate events. We only select nu and Q2 according an equal distribution and plot the flux (and the flux multiplied with AccWeight). Normally we choose nu and Q2 according flux*Accweight via von-Neumann- rejection method (where we loose access to the absolute normalisation).
initHiLepton/realRun [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
logical,save :: realRun=.false.
PURPOSE
Flag to indicate, whether we produce real or perturbative particles.
NOTES
run with real particles untested !!!
initHiLepton/DoStatistics [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
logical,save :: DoStatistics=.false.
PURPOSE
switch on/off statistical output of init routines
initHiLepton/Ebeam [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real, save :: Ebeam
PURPOSE
electron beam energy [GeV]
initHiLepton/user_ymax [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_ymax = -99.9
PURPOSE
user given value for ymax, overrides default value if reasonable
initHiLepton/user_numin [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_numin = -99.9 ! GeV
PURPOSE
user given value for numin, overrides default value if reasonable
initHiLepton/user_numax [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_numax = -99.9 ! GeV
PURPOSE
user given value for numax, overrides default value if reasonable
initHiLepton/user_costmin [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_costmin = -99.9
PURPOSE
user given value for costmin, overrides default value if reasonable
initHiLepton/user_costmax [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_costmax = 99.9
PURPOSE
user given value for costmax, overrides default value if reasonable
initHiLepton/user_smin [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_smin = -99.9
PURPOSE
user given value for smin, overrides default value if reasonable
initHiLepton/user_xBmin [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_xBmin = -99.9
PURPOSE
user given value for xBmin, overrides default value if reasonable
initHiLepton/user_qsqmin [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_qsqmin = -99.9
PURPOSE
user given value for qsqmin, overrides default value if reasonable
initHiLepton/user_qsqmax [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_qsqmax = -99.9
PURPOSE
user given value for qsqmax, overrides default value if reasonable
initHiLepton/user_maxw [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real :: user_maxw = -99.9
PURPOSE
user given value for maxw, overrides default value if reasonable
initHiLepton/earlyPauli [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
logical,save :: earlyPauli=.false.
PURPOSE
Flag to indicate, whether we should check Pauli blocking already during generation or only at the end.
if .false. (default), events will be generated in a first stage without Pauli blocking. This is then tested afterwards. If the generated event is blocked, it will be redone! Thus Pauli blocking does *not* change the total cross section, only the relative strength will be reshuffled.
if .true., then blocked events will be excluded from the Monte Carlo decision and the total cross section will be reduced.
NOTES
The behaviour, if no event at all is possible, is at the moment a little bit unpredictable ;)
initHiLepton/EIC_Ee [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real, save :: EIC_Ee = -99.9
PURPOSE
the electron beam energy, if iExperiment=EIC
initHiLepton/EIC_EA [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real, save :: EIC_EA = -99.9
PURPOSE
the hadron beam energy, if iExperiment=EIC
initHiLepton/equalWeights_Mode [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
integer, save :: equalWeights_Mode = 0
PURPOSE
possible values are:
- 0: default perweight mode is used (default)
- 1: default perweight mode is used, but max is printed
- 2: MC rejection method is used.
In the default mode, the perweights of the final particles are given by cross section/(A * numEnsembles)
If equalWeightsMode==2, then the perweights are given by equalWeights_Max/(A * numEnsembles)
initHiLepton/equalWeights_Max [ Global module-variables ]
[ Top ] [ initHiLepton ] [ Global module-variables ]
SOURCE
real, save :: equalWeights_Max = -1e99
PURPOSE
The maximum value the MC-rejection method is done against.
initHiLepton/HiLepton_getRealRun [ Functions ]
[ Top ] [ initHiLepton ] [ Functions ]
NAME
logical function HiLepton_getRealRun()
PURPOSE
return the value of realRun
initHiLepton/InitHiLeptonInduced [ Subroutines ]
[ Top ] [ initHiLepton ] [ Subroutines ]
NAME
subroutine InitHiLeptonInduced(rParts,pParts,targetNuc)
PURPOSE
This routine initializes the total given perturbative particle vector "pParts" by calling "genHiPhotonEvent" for every nucleon given in "rParts" and inserting the output of every successful event into "pParts".
For every incoming "photon" a new set of the kinematic variables according the constraints of the given experiment/detector is choosen.
Particle weights are set by the total XS of the generating event.
Outgoing particles are in a system, where the (intermediate) PHOTON defines the z-axis, not the (incoming) LEPTON. The scattering happens in a plane (except fermi motion), where the second momentum component (i.e. y-direction) vanishes.
INPUTS
OUTPUT
- type(particle),dimension(:,:) :: pParts
initHiLepton/initInput [ Subroutines ]
[ Top ] [ initHiLepton ] [ Subroutines ]
NAME
subroutine initInput
PURPOSE
read initialisation of "InitHiLeptonInduced" from input file, namelist "HiLeptonNucleus"
initHiLepton/HiLeptonNucleus [ Namelists ]
[ Top ] [ initHiLepton ] [ Namelists ]
NAME
NAMELIST /HiLeptonNucleus/
PURPOSE
Namelist for initHiLepton includes:
- iExperiment
- shadow
- minimumMomentum
- ModusCalcFluxNorm
- iDetector
- EIC_Ee
- EIC_EA
- realRun
- DoStatistics
- user_numin
- user_numax,
- user_costmin
- user_costmax
- user_ymax
- user_smin
- user_xBmin
- user_qsqmin
- user_qsqmax
- user_maxw
- earlyPauli
- equalWeights_Mode
- equalWeights_Max
initHiLepton/initExperiment [ Subroutines ]
[ Top ] [ initHiLepton ] [ Subroutines ]
NAME
subroutine initExperiment
PURPOSE
set kinematical constraints according the given experiment
initHiLepton/initFixedKin [ Subroutines ]
[ Top ] [ initHiLepton ] [ Subroutines ]
NAME
subroutine initFixedKin
PURPOSE
set kinematical constraints according to no experiment but to given fixed kinematics. The namelist 'HiPhotonKinematics' is read.
NOTES
you also have to set e.g. numin,numax etc. in order to ensure correct treatment of histograms
initFixedKin/nu [ Global module-variables ]
[ Top ] [ initFixedKin ] [ Global module-variables ]
SOURCE
real :: nu = -99.9
PURPOSE
Photon energy [GeV]
initFixedKin/Q2 [ Global module-variables ]
[ Top ] [ initFixedKin ] [ Global module-variables ]
SOURCE
real :: Q2 = -99.9
PURPOSE
transfer four momentum squared [GeV^2]
initFixedKin/eps [ Global module-variables ]
[ Top ] [ initFixedKin ] [ Global module-variables ]
SOURCE
real :: eps =-99.9
PURPOSE
Photon polarisation [1]
initFixedKin/srts [ Global module-variables ]
[ Top ] [ initFixedKin ] [ Global module-variables ]
SOURCE
real :: srts = -99.9
PURPOSE
sqrt(s) of electron nucleon system [GeV]
initFixedKin/W [ Global module-variables ]
[ Top ] [ initFixedKin ] [ Global module-variables ]
SOURCE
real :: W = -99.9
PURPOSE
sqrt(s) of photon nucleon system [GeV]
initFixedKin/xBj [ Global module-variables ]
[ Top ] [ initFixedKin ] [ Global module-variables ]
SOURCE
real :: xBj = -99.9
PURPOSE
Bjorken x [1]
initHiLepton/HiPhotonKinematics [ Namelists ]
[ Top ] [ initHiLepton ] [ Namelists ]
NAME
NAMELIST /HiPhotonKinematics/
PURPOSE
Namelist for initHiLepton in the case of iExperiment=0 includes:
NOTES
you have to give a valid combination of three of them.
initHiLepton/GetiExperiment [ Functions ]
[ Top ] [ initHiLepton ] [ Functions ]
NAME
integer function GetiExperiment()
PURPOSE
return value of variable "iExperiment"
needed e.g. in analysis routines
initHiLepton/GetEnergies [ Subroutines ]
[ Top ] [ initHiLepton ] [ Subroutines ]
NAME
real GetEnergies(Ebeam_,EIC_Ee_,EIC_EA_)
PURPOSE
return value of variables Ebeam and (if given) EIC_Ee, EIC_EA
needed e.g. in analysis routines
initHiLepton/GetPhotonKin [ Subroutines ]
[ Top ] [ initHiLepton ] [ Subroutines ]
NAME
subroutine GetPhotonKin(nu,Q2,W)
PURPOSE
in the case of Experiment==0, this returns the given kinematics
needed e.g. in analysis routines
initHiLepton/photonFluxMC [ Functions ]
[ Top ] [ initHiLepton ] [ Functions ]
NAME
function photonFluxMC(pTarget) result(eNev)
PURPOSE
Choose randomly some nu, Q2 and eps values corresponding to "iExperiment". Then calculate the flux for this given kinematics. Take the flux and some weight (called AccWeight) representing (averaged) probabilities of detecting the scattered lepton in the detector in order to accept or reject the choice accoring Monte Carlo techniques.
INPUTS
OUTPUT
- type(electronNucleon_event) :: eNev -- The incoming electron
NOTES
- since we changed the definition according the MC selection, the values given for "maxW" are not valid anymore. We have done some preliminary runs for some configurations to readjust he values. All non-checked values are set to zero. You may get a lot of "adjust maxW"-messages in first runs. See the file "initHiLep.AdjustMaxW.txt" for the largest value used so far, readjust the values in the code, recompile, restart.
- depending on the flag "eN_event/restingNucleon" the flux is calculated as average over the fermi momentum or using the momentum of the target nucleon for fT and epsilon.
initHiLepton/AccWeight [ Functions ]
[ Top ] [ initHiLepton ] [ Functions ]
NAME
real function AccWeight(iDetector,partID,partCharge,momentum,theta)
PURPOSE
Return the probability to detect the scattered lepton or produced hadrons with a given detector symmetry.
The detctor is rotated around the lepton beam axis and only the angle between particle vector and beam axis is taken into account. Therefore not only boolean values (1: detected, 0:not detected) are possible but all values inbetween.
INPUTS
- integer :: iDetector -- choice of detector (see below)
- integer :: partID -- id of the particle
- integer :: partCharge -- charge of the particle
- real :: momentum -- particle momentum
- real :: theta -- angle of particle vector to beam axis
OUTPUT
probability to detect the particle
NOTES
The variable "iDetector" can take the values:
AccWeight/CLAS [ Functions ]
[ Top ] [ AccWeight ] [ Functions ]
NAME
real FUNCTION CLAS(part_type,p,theta_rad)
PURPOSE
detector efficiency of CLAS @ 5 GeV
NOTES
- W.Brooks, private communication
AccWeight/CLASpi0 [ Functions ]
[ Top ] [ AccWeight ] [ Functions ]
NAME
real FUNCTION CLASpi0(p,theta_rad)
PURPOSE
detector efficiency for pi0 of CLAS @ 5 GeV
NOTES
- Taya Mineeva, private communications
- own approximation from photon acceptance
initHiLepton/checkConservation [ Functions ]
[ Top ] [ initHiLepton ] [ Functions ]
NAME
logical function checkConservation(eNev,outPart,channel)
PURPOSE
Perform checks about conservation of:
- Charge
- Baryon number
- Energy
on the given event.
INPUTS
- type(electronNucleon_event) :: eNev
- type(particle),dimension(:) :: outPart
- integer :: channel
OUTPUT
- .true. if all checks okay
NOTES