### TABLE OF CONTENTS

- 1. /masterNBody

## /masterNBody [ Modules ]

NAME

module **masterNBody**

PURPOSE

Implements N-body collisions.

## masterNBody/check_for_Nbody [ Subroutines ]

[ Top ] [ masterNBody ] [ Subroutines ]

NAME

subroutine **check_for_Nbody**(index,time,coll_time,parts,n_found,ind_found,ind_min,sigma,gamma)

PURPOSE

searches for a third particle (or more particles) in proximity of the colliding pair

INPUTS

- integer, dimension(1:2), intent(in) :: index -- indices of colliding pair
- real, intent(in) :: time -- current time in calc. frame
- real, intent(in) :: coll_time -- collision time instant in calc. frame
- type(particle), dimension(:) :: parts -- all particles from the ensemble of the colliding pair

OUTPUT

- integer, intent(out) :: n_found -- number of particles found in vicinity of the colliding pair
- integer, dimension(:) :: ind_found -- array of indices of the found particles
- integer, intent(out) :: ind_min -- index of the closest particle to the collision point
- real, intent(out) :: sigma, gamma -- total cross section (mbarn) and gamma-factor in CM frame of colliding particles

NOTES

Only baryons are looked for in an interaction volume around colliding pair of baryons 1 and 2. The interaction volume is an ellipsoid centered in the center-of-mass of 1 and 2. The ellipsoid is symmetric with respect to the collision axis and compressed by gamma-factor along this axis. The transverse half-axis of the ellipsoid is sqrt(sigma/pi/10.), where sigma is the total cross section of 1 and 2 (mbarn).

## masterNBody/generate_3body_collision [ Subroutines ]

[ Top ] [ masterNBody ] [ Subroutines ]

NAME

subroutine **generate_3body_collision**(parts,finalState,collFlag,time,HiEnergyFlag,HiEnergyType)

PURPOSE

simulates a 3-body collision of baryons

INPUTS

- type(particle), dimension(1:3) ,intent(in) :: parts --- Incoming particles
- real, intent(in) :: time ! current time

OUTPUT

- type(particle), dimension(:) :: finalState --- outgoing particles
- logical, intent(out) :: collFlag --- .true. if collision happens
- logical, intent(out) :: HiEnergyFlag --- .true. if fritiof was used
- integer, intent(out) :: HiEnergyType --- 0:LowEnergy, 1:Fritiof, 2:Pythia

NOTES

Incoming particles 1 and 2 are actually colliding. The incoming particle 3 is the closest one to the c.m. of 1 and 2, which is determined before by the subroutine 'check_for_Nbody'. The energy and momentum of the particles 1,2 and 3 in their c.m. system are redistributed in such a way that the particle 3 stops in that system and gives its energy to the relative motion of 1 and 2. Then a 2-body collision of 1 and 2 is simulated in a usual way.

## generate_3body_collision/threeBodyMomenta [ Subroutines ]

[ Top ] [ generate_3body_collision ] [ Subroutines ]

NAME

subroutine **threeBodyMomenta**(imode)

PURPOSE

Chooses randomly momenta of incoming three particles in their common CM frame. Also free energies of particles and the new sqrts_12 of colliding particles 1 and 2 are computed.

INPUTS

- integer, intent(in) :: imode --- see below

possible values of imode:

- 1: 3-body phase space sampling,
- 2: 3-d particle is stopped, momenta of 1-st and 2-nd particles are randomly rotated,
- 3: 3-d particle is stopped, momenta of 1-st and 2-nd particles do not change their direction.

## masterNBody/Nbody_analysis [ Subroutines ]

[ Top ] [ masterNBody ] [ Subroutines ]

NAME

subroutine **Nbody_analysis**(index,time,parts,n_found,ind_found,sigma,gamma,flag)

PURPOSE

Performs statistical analysis of many-body collisions using the output information from subroutine check_for_Nbody.

INPUTS

- integer, dimension(1:2) :: index --- indices of colliding pair
- real :: time --- current time in calc. frame
- type(particle), dimension(:) :: parts --- all particles from the ensemble of the colliding pair
- integer :: n_found --- number of particles found in vicinity of the colliding pair
- integer, dimension(:) :: ind_found --- array of indices of the found particles
- real :: sigma --- total cross section (mbarn)
- real :: gamma --- gamma-factor in CM frame of colliding particles
- logical, optional :: flag --- if .true. --- do output