gibuu is hosted by Hepforge, IPPP Durham
GiBUU

TABLE OF CONTENTS


/electronPionProduction_kine [ Modules ]

[ Top ] [ 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