### TABLE OF CONTENTS

- 1. assMass/throwDice
- 2. assMass/checkMaximum
- 3. assMass/getMaximum
- 4. massAss/throwDice
- 5. massAss/checkMaximum
- 6. massAss/getMaximum
- 7. massAss/writeInput
- 8. /finalState_Full

## /finalState_Full [ Modules ]

NAME

module **finalState_Full**

PURPOSE

This module contains the routines "massAss" and "assMass" which are used to choose the momentum and masses in a final state prescription. Read chapter 4.7 of Lehr's Dr. thesis to understand the principles of this decision.

## finalState_Full/maxbwd_scalingFactor [ Global module-variables ]

[ Top ] [ finalState_Full ] [ Global module-variables ]

SOURCE

real, save ::maxbwd_scalingFactor=1.

PURPOSE

- Rescales maxBWD

## finalState_Full/silentMode [ Global module-variables ]

[ Top ] [ finalState_Full ] [ Global module-variables ]

SOURCE

` logical, save :: `**silentMode**=.true.

PURPOSE

- Switches error messages off in massAss. Errors can still be seen looking at massAssStatus.dat

## finalState_Full/NYK_isotropic [ Global module-variables ]

[ Top ] [ finalState_Full ] [ Global module-variables ]

SOURCE

` logical, save :: `**NYK_isotropic** = .false.

PURPOSE

If .true., the angular distribution in Nucleon-Hyperon-Kaon production is assumed to be isotropic. If .false., a non-isotropic distribution is used, as described in Larionov/Mosel, Phys.Rev. C 72 (2005) 014901. See also momenta_in_3Body_BYK.

## finalState_Full/readinput [ Subroutines ]

[ Top ] [ finalState_Full ] [ Subroutines ]

NAME

subroutine **readinput**

PURPOSE

This subroutine reads in the namelist "FinalState_Full". Only called once to initialize the module.

## finalState_Full/FinalState_Full [ Namelists ]

[ Top ] [ finalState_Full ] [ Namelists ]

NAME

NAMELIST /**FinalState_Full**/

PURPOSE

This namelist includes the following switches:

## finalState_Full/massAss_Full [ Subroutines ]

[ Top ] [ finalState_Full ] [ Subroutines ]

NAME

subroutine **massAss_Full** (srts, medium_AtCollision, pairIn, pairOut, betaToLRF, betaToCM, L, successFlag)

PURPOSE

This routine selects the masses of a 2 particle final state according to phase space x spectral functions, simultaneously the scattering angle is choosen (necessary if spectral functions are momentum dependent). See J. Lehr Dr. Thesis. We regard the process a+b->c+d.

INPUTS

- real :: srts -- sqrt(s)
- type(medium) :: medium_AtCollision -- medium information : density, temperature,...
- type(particle), dimension(1:2) :: pairIn -- incoming particles a and b
- type(particle), dimension(1:2) :: pairOut -- outgoing particles c and d (only id's, charges and antiflags are used at input)
- real, dimension(1:3) :: betaToLRF -- beta for boost to LRF
- real, dimension(1:3) :: betaToCM -- beta for boost to CM-Frame
- integer :: L -- angular momentum in final state

OUTPUT

- logical :: successFlag -- .true. if mass assignment was successful
- type(particle), dimension(1:2) :: pairOut -- final state particles with full kinematics in the CM frame. ID, momentum(1:3),charge and mass are now defined.

## massAss/writeInput [ Subroutines ]

[ Top ] [ massAss ] [ Subroutines ]

NAME

subroutine **writeInput**()

PURPOSE

This subroutine prints the input to screen for debugging!

## massAss/getMaximum [ Subroutines ]

[ Top ] [ massAss ] [ Subroutines ]

NAME

subroutine **getMaximum**(maxBWD)

PURPOSE

This subroutine evaluates the maximal value of $\frac{p_{cd}}{p^vacuum_{cd}} \A_c \A_d \frac{d\mu_c}{dy_c} \frac{d\mu_d}{dy_d}$ in process a b -> c d. It's a purely empirical value.

RESULT

real :: maxBWD

## massAss/checkMaximum [ Subroutines ]

[ Top ] [ massAss ] [ Subroutines ]

NAME

subroutine **checkMaximum**(value, maxValue)

PURPOSE

This subroutine checks wether the maximal value is really the maximal value. If not, then error messages are written to standard out and 'massAssError.dat'. After a critical number of errors the program is terminated!!

## massAss/throwDice [ Subroutines ]

[ Top ] [ massAss ] [ Subroutines ]

NAME

subroutine **throwDice** (success, momentum, mass, massFailure_Nuc, treatNuc_onshell)

PURPOSE

We consider a + b -> c + d. The kinematics of c and d are determined. Here the masses and momenta of the particles are choosen by Monte-Carlo decision. Then p_cd/p_cd_vacuumMax*spectral(c)*spectral(d)/(intfac(c)*intfac(d)*maxValue) is evaluated which our probability to accept a choosen final state. We then decide to reject or accept the final state. If rejected new masses and momenta are choosen until we find a final state that is accepted. If it's not possible to find a final state, than successs=.false. is set and the routine is terminated.

INPUTS

- real :: maxValue -- maximum of the function
- logical :: treatNuc_onshell -- true: set nucleon masses to onshell value

OUTPUT

- real, dimension(1:3,1:2) :: momentum -- of the final state (first index: momentum, second: particle)
- real, dimension(1:2) :: mass -- of the final state
- logical :: success -- .true. if mass and momentum could be set
- logical :: massFailure_nuc -- .true. if process failed when setting the mass of a final state involving a nucleon

## finalState_Full/assMass_Full [ Subroutines ]

[ Top ] [ finalState_Full ] [ Subroutines ]

NAME

subroutine **assMass_Full** (srts, medium_AtCollision, pairIn, tripleOut, spotOut, betaToLRF, betaToCM, flag)

PURPOSE

This routine selects the masses of a 3 particle final state according to phase space x spectral functions, simultaneously the scattering angle is choosen (necessary if spectral functions are momentum dependent). See J. Lehr Dr. Thesis. We regard the process a+b->c+d+e.

INPUTS

- real :: srts ! sqrt(s)
- type(medium) :: medium_AtCollision ! medium information : density, temperature,...
- type(particle), dimension(1:2) :: pairIn ! incoming particles a and b
- type(particle), dimension(1:3) :: tripleOut ! outgoing particles c,d and e
- ! (only id's, charges and antiflags are used at input)
- real, dimension(1:3) :: spotOut ! scalar potential of produced particles
- real, dimension(1:3) :: betaToLRF ! beta for boost to LRF
- real, dimension(1:3) :: betaToCM ! beta for boost to CM-Frame

RESULT

- logical :: flag ! set to .true. is mass assignment was successful
- type(particle), dimension (1:3) ,intent(out) :: tripleOut ! final state particles with almost full kinematics in CM frame. ID, momentum(1:3),charge and mass are defined.

## assMass/getMaximum [ Subroutines ]

[ Top ] [ assMass ] [ Subroutines ]

NAME

subroutine **getMaximum**(maxBWD)

PURPOSE

This subroutine evaluates the maximal value for the phase space decision variable.

RESULT

real :: maxBWD

## assMass/checkMaximum [ Subroutines ]

[ Top ] [ assMass ] [ Subroutines ]

NAME

subroutine **checkMaximum**(value, maxValue)

PURPOSE

This subroutine checks wether the maximal value is really the maximal value. If not, then error messages are written to standard out and 'massAssError.dat'. After a critical number of errors the program is terminated!!

## assMass/throwDice [ Subroutines ]

[ Top ] [ assMass ] [ Subroutines ]

NAME

subroutine **throwDice** (maxValue, success, momentum, mass)

PURPOSE

We consider a + b -> c + d + e. The kinematics of c, d & e are determined. Here the masses and momenta of the particles are choosen by Monte-Carlo decision. pcmAbs(1)/ pcmAbs(3)/ecm(1)/eCM(3) *spectral(c)*spectral(d)*spectral(d)/ intfac(c) /intfac(d)/intfac(e) /maxValue is evaluated which is our probability to accept a chosen final state. We then decide to reject or accept the final state. If rejected new masses and momenta are choosen until we find a final state that is accepted. If it is not possible to find a final state, than successs=.false. is set and the routine is terminated.

## finalState_Full/massass_nBody [ Subroutines ]

[ Top ] [ finalState_Full ] [ Subroutines ]

NAME

subroutine **massass_nBody**(srts,betaToLRF,betaToCM,mediumAtCollision,finalState,success)

PURPOSE

Determines the masses and momenta of outgoing particles in the c.m. frame of incoming particles.

INPUTS

- real :: srts ! Invariant energy
- real, dimension(1:3) :: betaToLRF ! Boost from computational frame to LRF
- real, dimension(1:3) :: betaToCM ! Boost from computational frame to CM frame
- type(medium) :: mediumAtCollision ! Medium info at collision point
- type(particle), dimension(:) :: finalState ! Id's and charges of the outgoing particles

OUTPUT

- logical :: success ! .true. if masses and momenta are set
- type(particle), dimension(:) :: finalState ! Masses and four-momenta of the final state particles

NOTES

n=2,...,6 outgoing particles can be treated.

NOTES

This subroutine has a similar structure as subroutine massAss.