TABLE OF CONTENTS
/master_NBody [ Modules ]
NAME
module master_NBody
PURPOSE
Implements N-body collisions.
master_NBody/check_for_Nbody [ Subroutines ]
[ Top ] [ master_NBody ] [ 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).
master_NBody/generate_3body_collision [ Subroutines ]
[ Top ] [ master_NBody ] [ 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.
master_NBody/Nbody_analysis [ Subroutines ]
[ Top ] [ master_NBody ] [ 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