TABLE OF CONTENTS
- 1. /electronPionProduction_kine
- 1.1. electronPionProduction_kine/pionPot
- 1.1.1. pionPot/pionPot_Main
- 1.1.2. pionPot/pionPot_DeltaHole
- 1.1.3. pionPot/pionPot_Kapusta
- 1.1.4. pionPot/pionPot_Smooth
- 1.1.5. pionPot/pionPot_Oset
- 1.2. electronPionProduction_kine/getKinematics_eN
- 1.3. electronPionProduction_kine/get_k_abs_improved
- 1.4. electronPionProduction_kine/get_k_abs
- 1.5. electronPionProduction_kine/error_energyConservation
/electronPionProduction_kine [ Modules ]
NAME
module electronPionProduction_kine
PURPOSE
Contains kinematical considerations for gamma* nucleon -> pion nucleon events.
electronPionProduction_kine/pionPot [ Global module-variables ]
[ Top ] [ electronPionProduction_kine ] [ Global module-variables ]
SOURCE
logical ,save :: pionPot=.true.
PURPOSE
- Switch pion potential explicitly on and off in this module.
- Only for debugging.
electronPionProduction_kine/getKinematics_eN [ Subroutines ]
[ Top ] [ electronPionProduction_kine ] [ Subroutines ]
NAME
subroutine getKinematics_eN(eN, pionCharge, nucleon_out_charge, phi_k, theta_k, k, pf, twoRoots, success, pionNucleonSystem, bothSolutions)
PURPOSE
Evaluates the full kinematics for a electron nucleon -> electron pion nucleon reaction.
The angles of the outgoing pion are measured relative to the momentum transfer "q". All angles in degree.
INPUTS
- type(electronNucleon_event) :: eN -- underlying electron nucleon event
- integer :: pionCharge --
- integer :: nucleon_out_charge --
- real :: phi_k,theta_k -- Pion angles [degrees]
- integer , OPTIONAL:: pionNucleonSystem -- 1 = pion angles phi_k and theta_k are defined in lab, 2 = they are defined in the CM frame of the incoming nucleon and photon
RESULT
- real, dimension(0:3) :: k -- Momentum of outgoing pion
- real, dimension(0:3) :: pf -- Momentum of outgoing nucleon
- logical :: twoRoots -- true if there were two possible kinematics
- logical :: success -- Flag shows whether the kinematics could be established.
- real, dimension(1:2,0:3), OPTIONAL :: bothSolutions -- if two roots are found then this variable returns both solutions
NOTES
Especially if the pionNucleonSystem is not chosen to be the CM-frame (=2), then two solutions for a given pair (phi_k,theta_k) may exist. If this is the case, then we choose randomly one of them and set twoRoots=.true.!
electronPionProduction_kine/get_k_abs_improved [ Subroutines ]
[ Top ] [ electronPionProduction_kine ] [ Subroutines ]
NAME
function get_k_abs_improved(numRoots, ak, bk, ck, q, initNuc, pionCharge, nucleon_out_charge, success, kout, betaToCF)
PURPOSE
Evaluates for gamma nucleon -> pion nucleon the absolute value of the pion momentum, when given a unit vector (ak,bk,ck) in its direction. The value of gamma momentum "q", the intial nucleus "initNuc" and the charge of the pion "pionCharge" are input.
The input momenta are given in the calculation system, and also the output k is given in this system.
INPUTS
- real,intent(in) :: ak,bk,ck -- unit-vector (ak,bk,ck) in direction of pion momentum
- real, dimension(0:3) :: q --
- type(particle) :: initNuc --
- integer :: pionCharge --
- integer :: nucleon_out_charge --
- real, dimension(1:3), OPTIONAL :: betaToCF -- Velocity of CF frame in the frame where initNuc, q and ak,bk,ck are defined
OUTPUT
- integer :: numRoots -- Number of roots
- logical :: success -- Flag if the kinematics could be established.
- real, dimension(1:2,0:3) :: kout -- found roots
NOTES
We use a Newton-Algorithm to solve the energy and momentum conservation condition. Searches also for two roots!!
Solves q(0)+pi(0)=pf(0)+k(0) at the position "position".
electronPionProduction_kine/get_k_abs [ Subroutines ]
[ Top ] [ electronPionProduction_kine ] [ Subroutines ]
NAME
real function get_k_abs(ak, bk, ck, q, initNuc, pionCharge, nucleon_out_charge, success, kout, betaToCF, low, high)
PURPOSE
Evaluates for gamma nucleon -> pion nucleon the absolute value of the pion momentum, when given a unit vector (ak,bk,ck) in its direction. The value of gamma momentum "q", the intial nucleus "initNuc" and the charge of the pion "pionCharge" are input.
The input (and output) momenta are given in the calculation system.
INPUTS
- real,intent(in) :: ak,bk,ck -- unit-vector (ak,bk,ck) in direction of pion momentum
- real, dimension(0:3) :: q --
- type(particle) :: initNuc --
- integer :: pionCharge --
- integer :: nucleon_out_charge --
- real, dimension(1:3), OPTIONAL :: betaToCF -- Velocity of CF frame in the frame where initNuc, q and ak,bk,ck are defined
- real ,OPTIONAL:: low,high --
OUTPUT
- logical :: success -- Flag if the kinematics could be established.
- real, dimension(0:3), OPTIONAL :: kout --
NOTES
- We use a Newton-Algorithm to solve the energy and momentum conservation condition.
- DOES NOT WORK IF THERE IS MORE THAN ONE SOLUTION, which happens if there are large boosts involved, i.e. if |q| and |q_0| are large.
- Solves q(0)+pi(0)=pf(0)+k(0) at the position "position".
electronPionProduction_kine/error_energyConservation [ Subroutines ]
[ Top ] [ electronPionProduction_kine ] [ Subroutines ]
NAME
real function error_energyConservation(k, q, initial_nucleon, pionCharge, nucleon_out_charge, betaToCF, kabs, low_in, high_in)
PURPOSE
Evaluates the errror in the energy conservation condition, after using momentum conservation :
error= [E(pion)+E(final nucleon) ] - [ E(virtual photon)+E(initial nucleon) ]
INPUTS
- real, dimension(0:3),intent(in) :: k
- real, dimension(0:3),intent(in) :: q
- type(particle),intent(in) :: initial_nucleon
- integer, intent(in) :: pionCharge
- integer, intent(in) :: nucleon_out_charge
- real, dimension(1:3),intent(in) :: betaToCF
- real, intent(in) :: kabs
- real, intent(in) :: low_in
- real, intent(in) :: high_in
OUTPUT
- function value: error
- logical :: flagOK