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