gibuu is hosted by Hepforge, IPPP Durham
GiBUU

TABLE OF CONTENTS


/eN_event [ Modules ]

[ Top ] [ Modules ]

NAME

module eN_event

PURPOSE

Handle the data type which is used to store the lepton-nucleon event.


eN_event/selectFrame [ Global module-variables ]

[ Top ] [ eN_event ] [ Global module-variables ]

SOURCE

  integer,  save :: selectFrame = 2

PURPOSE

select frame, in which the calculaton of W_free is done:

  • 0 = doNOT --- do NOT remove
  • 1 = CM
  • 2 = CALC
  • 3 = THRE prescription from correct threshold behaviour, used in heavy ion collisions
  • 4 = NucleonRest : boost nucleon in the rest frame, set free mN, recalculate boson momentum
  • 5 = THRE2 threshold with m^2: sfree=s+m^2-m*^2


eN_event/restingNucleon [ Global module-variables ]

[ Top ] [ eN_event ] [ Global module-variables ]

SOURCE

  logical, save :: restingNucleon = .true.

PURPOSE

if this flag is .false., we use the momentum of the target nucleon in the calculation of the flux


eN_event/readInput [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine readInput


eN_event/eN_Event [ Namelists ]

[ Top ] [ eN_event ] [ Namelists ]

NAME

NAMELIST /eN_Event/

PURPOSE

Namelist for stuff connected with the storage of the lepton-nucleon event:


eN_event/eNev_SetProcess [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_SetProcess(e, idProcess,idFamily)

PURPOSE

Set the process and the lepton family for the initialisation

INPUTS

  • idProcess: +-1=(anti-)EM, +-2=(anti-)CC, +-3=(anti-)NC
  • idFamily: 1=e-, 2=mu-, 3=tau-


eN_event/eNev_init_sWQ [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_sWQ(e, sqrts,W,Q2, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given sqrts,W,Q2. The target particle is a free nucleon.


eN_event/eNev_init_sxQ [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

suroutine eNev_init_sxQ(e, sqrts,xB,Q2, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given sqrts,xB,Q2. The target particle is a free nucleon.


eN_event/eNev_init_snQ [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

suroutine eNev_init_snQ(e, sqrts,nu,Q2, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given sqrts,nu,Q2. The target particle is a free nucleon.

NOTES

  • This is the one routine from all the same ones labeled by "..._s?Q", which does the actual work
  • The used kinematical relations can be derived via four-momenta squared: m^2 = (p_out)^2 = (p_in-q)^2 = m^2 - Q^2 - 2 p0 q0 + 2 pZ qZ and pX^2 = E^2 - m^2 - pZ^2
  • You see: this routine is only valid for EM and NC case !
  • Please note: the case pX^2<0 corresponds to the boundary Q^2 > 4 E (E-nu) (for m->0) which represents the case, that the 3-momenta of lepton and photon are identical. Violation of this boundary produces unphysical kinematics.


eN_event/eNev_init_exW [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_exW(e, eps,xB,W, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given eps,xB,W. The target particle is a free nucleon.


eN_event/eNev_init_eWQ [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_eWQ(e, eps,W,Q2, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given eps,W,Q2. The target particle is a free nucleon.


eN_event/eNev_init_exQ [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_exQ(e, eps,xB,Q2, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given eps,xB,Q2. The target particle is a free nucleon.


eN_event/eNev_init_enQ [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_enQ(e, eps,nu,Q2, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given eps,nu,Q2. The target particle is a free nucleon.


eN_event/eNev_init_BWQ [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_BWQ(e, Ebeam,W,Q2, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given Ebeam,W,Q2. The target particle is a free nucleon.

NOTES

This routine is used by initHiLepton.


eN_event/eNev_init_BWx [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_BWx(e, Ebeam,W,xB, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given Ebeam,W,xB. The target particle is a free nucleon.

NOTES

This routine is used by initHiLepton.


eN_event/eNev_init_BWt [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_BWt(e, Ebeam,W,theta, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given Ebeam,W,theta. (theta given in degrees) The target particle is a free nucleon.

NOTES

This routine is used by initHiLepton.


eN_event/eNev_init_BnQ [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_BnQ(e, Ebeam,nu,Q2, flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via given Ebeam,nu,Q2. The target particle is a free nucleon.

NOTES

This routine is used by initHiLepton.


eN_event/eNev_init_Target [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_Target(e,pTarget,flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". The purpose of this routine is to specify the target nucleon and/or to calculate W etc..

INPUTS

OUTPUT

  • type(electronNucleon_event) :: e -- the event to modify
  • logical :: flagOK -- .true., if everything was okay

NOTES

You may call this routine, if all momenta are set. If yo do not give a new target nucleon, the nucleon as given in e0 is used.


eN_event/eNev_init_nuStep1 [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_nuStep1(e,pTarget)

PURPOSE

Step 1 of "neutrino init": Set the target nucleon. In Step 0 we have set the type of incoming and outgoing lepton, but not the kinematics. Therefore we can not use "init_Target" here.

INPUTS

OUTPUT


eN_event/eNev_init_nuStep2 [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_nuStep2(e,Enu,IP,flagOK)

PURPOSE

Step 2 of "neutrino init": Set the kinematic of the incoming neutrino. Additionaly, it is checked whether the energy is above threshold

The neutrino is aligned along the z-axis.

INPUTS

  • type(electronNucleon_event) :: e -- the event to modify
  • real :: Enu -- Energy of incoming lepton
  • integer :: IP -- ID of process (needed for check)

OUTPUT

  • type(electronNucleon_event) :: e -- the event to modify
  • logical :: flagOK -- .true., if everything was okay


eN_event/eNev_init_nuStep3a [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_nuStep3a(e,Eprime,costheta,flagOK)

PURPOSE

Step 3 of "neutrino init": Set the kinematic of the outgoing lepton. Now we have fixed everything (comparable to "eNev_init_Target")

INPUTS

  • type(electronNucleon_event) :: e -- the event to modify
  • real :: Eprime -- Energy of scattered lepton
  • real :: costheta -- Angle of scattered lepton

OUTPUT

  • type(electronNucleon_event) :: e -- the event to modify
  • logical :: flagOK -- .true., if everything was okay


eN_event/eNev_init_nuStep3b [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_nuStep3b(e,Eprime,Q2,flagOK)

PURPOSE

Step 3 of "neutrino init": Set the kinematic if the outgoing lepton. Now we have fixed everything (comparable to "eNev_init_Target")

INPUTS

  • type(electronNucleon_event) :: e -- the event to modify
  • real :: Eprime -- Energy of scattered lepton
  • real :: Q2 -- 4-mom squared of boson

OUTPUT

  • type(electronNucleon_event) :: e -- the event to modify
  • logical :: flagOK -- .true., if everything was okay


eN_event/eNev_init_nuStep3c [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_init_nuStep3c(e,x,y,flagOK)

PURPOSE

Step 3 of "neutrino init": Set the kinematic if the outgoing lepton. Now we have fixed everything (comparable to "eNev_init_Target")

INPUTS

OUTPUT

  • type(electronNucleon_event) :: e -- the event to modify
  • logical :: flagOK -- .true., if everything was okay

NOTES

we use the lorentz invariant definitions

    x = -(qq)/2(pq),  y = (pq)/(pk)

and not the assumptions for resting target nucleon,

    x -> Q^2/2Mnu,  y = nu/E .


eN_event/init_electronNucleon_event [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine init_electronNucleon_event(e, k_in,k_out,nuc,flagOK)

PURPOSE

Initialize an instance of "type(electronNucleon_event)". Here via incoming and outgoing lepton momenta

OUTPUT

  • type(electronNucleon_event) :: e -- fully initialized event
  • logical, optional :: flagOK -- .true. if all okay

NOTES

  • This is used by Olli for the low energy lepton routines
  • This routine is only valid for EM and e-


eN_event/eNev_readFixedKin [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNev_readFixedKin(e, flagOK)

PURPOSE

Read values from the namelist 'HiPhotonKinematics' to set the fixed kinematics for a electron induced event


eNev_readFixedKin/nu [ Global module-variables ]

[ Top ] [ eNev_readFixedKin ] [ Global module-variables ]

SOURCE

    real :: nu = -99.9

PURPOSE

Photon energy [GeV]


eNev_readFixedKin/Q2 [ Global module-variables ]

[ Top ] [ eNev_readFixedKin ] [ Global module-variables ]

SOURCE

    real :: Q2 = -99.9

PURPOSE

transfer four momentum squared [GeV^2]


eNev_readFixedKin/eps [ Global module-variables ]

[ Top ] [ eNev_readFixedKin ] [ Global module-variables ]

SOURCE

    real :: eps =-99.9

PURPOSE

Photon polarisation [1]


eNev_readFixedKin/srts [ Global module-variables ]

[ Top ] [ eNev_readFixedKin ] [ Global module-variables ]

SOURCE

    real :: srts = -99.9

PURPOSE

sqrt(s) of electron nucleon system [GeV]


eNev_readFixedKin/W [ Global module-variables ]

[ Top ] [ eNev_readFixedKin ] [ Global module-variables ]

SOURCE

    real :: W = -99.9

PURPOSE

sqrt(s) of photon nucleon system [GeV]


eNev_readFixedKin/xBj [ Global module-variables ]

[ Top ] [ eNev_readFixedKin ] [ Global module-variables ]

SOURCE

    real :: xBj = -99.9

PURPOSE

Bjorken x [1]


eNev_readFixedKin/Ebeam [ Global module-variables ]

[ Top ] [ eNev_readFixedKin ] [ Global module-variables ]

SOURCE

    real :: Ebeam = -99.9

PURPOSE

energy of electron beam [GeV]


eNev_readFixedKin/theta [ Global module-variables ]

[ Top ] [ eNev_readFixedKin ] [ Global module-variables ]

SOURCE

    real :: theta = -99.9

PURPOSE

scattering angle of electron beam (in lab frame) [°]


eN_event/HiPhotonKinematics [ Namelists ]

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


eN_event/RemovePot_DoNOT [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

function RemovePot_DoNOT(e)

PURPOSE

Calculate the "FREE" kinematics by assuming the same kinematics as in the InMedium case. I.e., we do not remove the potential at all.


eN_event/RemovePot_THRE [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

function RemovePot_THRE(e)

PURPOSE

Calculate the "FREE" kinematics by setting the free W according

   W_free = W - m* + m ,

i.e. assuring the threshold behaviour. The momenta of the 'free' target nucleon are set in the CM frame.


eN_event/RemovePot_THRE2 [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

function RemovePot_THRE2(e)

PURPOSE

Calculate the "FREE" kinematics by setting the free W according

   W_free^2 = W^2 - m*^2 + m^2 ,

i.e. assuring the threshold behaviour as expected for neutrinos. The momenta of the 'free' target nucleon are set in the CM frame.


eN_event/RemovePot_CALC [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

function RemovePot_CALC(e)

PURPOSE

Calculate the "FREE" kinematics, while removing the potential in the CALC frame


eN_event/RemovePot_CM [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

function RemovePot_CM(e)

PURPOSE

Calculate the "FREE" kinematics, while removing the potential in the CM frame

NOTES

All the discussions in Juergen Lehr, PhD thesis, pages 159ff are obsolete


eN_event/RemovePot_NucleonRest [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

function RemovePot_NucleonRest(e)

PURPOSE

Calculate the "FREE" kinematics, while removing the potential and adjusting the photon 4-momentum in the nucleon rest frame

NOTES

Recipe proposed on a group meeting May 2011


eN_event/eNeV_GetKinV [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNeV_GetKinV(e, nu,Q2,W, Wfree, eps, fT)

PURPOSE

return the kinematical variables buried in the event type. additionally calculate :

  • real :: fT -- transversal flux fT in GeV^-3
  • real :: eps -- epsilon = fL/fT

NOTES

the flux calculation was taken from PyVP:

  • the original formulae were implemented by Thomas Falter for Q2 << 4*E^2(PhD, eq.(3.15),(3.16)). Here they are extended to the general case

* The flux factors are (we use the Hand convention)

     K = (W^2-M^2)/2M = (1-x)*nu = (1-x)*y*Ebeam  [Hand]
     K = sqrt[nu^2+Q^2] [Gilman]

* if the global variable "restingNucleon" is true, then we assume a

   resting nucleon for the calculation of fT and eps. Otherwise we use
   the target four momentum (the returned value of nu is not influenced
   by this)

* the returned flux fT corresponds to (c_T = 1+(1-y)^2)

      f_T = \frac{\alpha}{2\pi} \frac{K}{Q^2\nu^2} c_T
   In order to get d\sigma/dE'd\Omega = \Gamma \sigma^*, one has to use
      \Gamma = f_T \frac{E E'}{\pi}


eN_event/eNeV_Get_LightX [ Functions ]

[ Top ] [ eN_event ] [ Functions ]

NAME

real function eNeV_Get_LightX(e)

PURPOSE

return the lightcone x, not Bjorken x !!


eN_event/eNeV_Get_CostLepton [ Functions ]

[ Top ] [ eN_event ] [ Functions ]

NAME

real function eNeV_Get_CostLepton(e)

PURPOSE

return the cosine of the angle between ncoming and outgoing lepton

NOTES

  • TODO: This is probably already defined elsewhere. Replace!


eN_event/eNev_Set_PhiLepton [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

real function eNeV_Set_PhiLepton(e,phi)

PURPOSE

rotate the lepton vectors around z-axis

NOTES

We assume, that before rotation, the transverse direction was the x-axis and thee y-component was zero!


eN_event/eNev_CheckForDIS [ Functions ]

[ Top ] [ eN_event ] [ Functions ]

NAME

logical function eNeV_CheckForDIS()

PURPOSE

Apply cuts, which are also tested in PYGAGA and may leed to infinite loops or program abortion.

NOTES

One of the cuts in PYTHIA we commented out, so it is also not used here anymore


eN_event/eNev_GetLeptonCM [ Subroutines ]

[ Top ] [ eN_event ] [ Subroutines ]

NAME

subroutine eNeV_GetLeptonCM(e, betacm,phi,theta,phiLepton)

PURPOSE

NOTES

The pcm stored in the event type is the pcm of the boson-nucleon system. Here we return the pcm of the lepton-nucleon system.

This is e.g. used in DoColl_nuN_Py.


eN_event/nuclearFluxFactor_correction [ Functions ]

[ Top ] [ eN_event ] [ Functions ]

NAME

real function nuclearFluxFactor_correction(p_initial,l_initial)

PURPOSE

Evaluates the correction factor due to considering the nuclear flux factor instead of the ones of the single nucleons. Outputs |v_e-v_n|=l^\mu p_\mu /(l_0 p_0)

INPUTS

  • real, dimension(0:3) :: p_initial, l_initial -- initial nucleon and lepton momenta

OUTPUT

  • real :: nuclearFluxFactor_correction