### 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,particles,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(:) :: particles ! 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**(particles,finalState,collisionFlag,time,HiEnergyFlag,HiEnergyType)

PURPOSE

simulates a 3-body collision of baryons

INPUTS

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

OUTPUT

- type(particle), dimension(:) :: finalState ! outgoing particles
- logical, intent(out) :: collisionFlag ! .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 ! =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,particles,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), intent(in) :: index ! indices of colliding pair
- real, intent(in) :: time ! current time in calc. frame
- type(particle), dimension(:) :: particles ! all particles from the ensemble of the colliding pair
- integer, intent(in) :: n_found ! number of particles found in vicinity of the colliding pair
- integer, dimension(:) :: ind_found ! array of indices of the found particles
- real, intent(in) :: sigma, gamma ! total cross section (mbarn) and gamma-factor in CM frame of colliding particles
- logical, optional, intent(in) :: flag ! if .true. --- do output