TABLE OF CONTENTS
- 1. /twoBodyTools
- 1.1. twoBodyTools/pCM
- 1.2. twoBodyTools/velocity_correction
- 1.3. twoBodyTools/get_PInitial
- 1.4. twoBodyTools/sqrtS_Free
- 1.5. twoBodyTools/searchInInput
- 1.6. twoBodyTools/pCM_sqr
- 1.7. twoBodyTools/p_lab
- 1.8. twoBodyTools/MomentumTransfer2
- 1.9. twoBodyTools/convertToAntiParticles
- 1.10. twoBodyTools/IsElastic
- 1.11. twoBodyTools/IsChargeExchange
- 1.12. twoBodyTools/LogicMatrix
/twoBodyTools [ Modules ]
NAME
module twoBodyTools
PURPOSE
This module contains some auxiliary routines for two-body collisions.
twoBodyTools/pCM [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
real function pCM(srts, mass1, mass2)
real function pCM(srts, mass1, mass2, flagOK)
PURPOSE
This routine evaluates the CM-momentum of two particles, asssuming vacuum kinematics.
The formula used here looks different than the standard formula given in PDG, but the are actually the same. In particular, pCM is of course invariant with respect to an exchange of 'mass1' and 'mass2'.
If the no logical 'falgOK' is given, the routine aims for performance, and does not check whether the argument of the sqrt is positive. If you need to check this, give this logical.
INPUTS
- real :: mass1, mass2 ! masses of both particles
- real :: srts ! SQRT(s)
OUTPUT
twoBodyTools/velocity_correction [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
real function velocity_correction(pair)
PURPOSE
Evaluates relative velocity/relative velocity in vacuum
INPUTS
- type(particle), dimension(1:2) :: pair
OUTPUT
function value
twoBodyTools/get_PInitial [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
real function get_PInitial(teilchenIn)
PURPOSE
return CM momentum of 2 particles
INPUTS
- type(particle),intent(in),dimension(1:2) :: teilchenIn
- integer, intent(in) :: mode
NOTES
Return value depends on mode:
- mode=0 : getP_Pinitial returns CM-momentum of two particles
- mode=1 : getP_Pinitial returns old ikodama=1 prescription [not yet implemented]
- mode=2 : getP_Pinitial returns old ikodama=2 prescription [not yet implemented]
twoBodyTools/sqrtS_Free [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
function sqrtS_Free(teilchen)
PURPOSE
return the "free" sqrt(s) of 2 particles
INPUTS
- type(particle),intent(in),dimension(1:2) :: teilchen
NOTES
The name "free Sqrt(s)" is according to standard BUU prescription the following: Transform everything to CM system and define there the sqrt(s) by neglecting the potentials. Therefore one wants to take care of the fact, that also the Xsections are measured in vacuum, therefore without potentials.
RESULT
- Real : The free Sqrt(s)
twoBodyTools/searchInInput [ Subroutines ]
[ Top ] [ twoBodyTools ] [ Subroutines ]
NAME
subroutine searchInInput(teilchenIn,id1,id2,particle_1,particle_2,failFlag)
PURPOSE
Given two IDs and a particleVector of dimension 2, this routine tries to find the given IDs in the particleVector.
INPUTS
- type(particle),dimension(1,2), intent(in) :: teilchenIn
- integer, intent(in) :: id1,id2
OUTPUT
- type(particle), intent(out) :: particle_1 ! copy of particle which has id1
- type(particle), intent(out) :: particle_2 ! copy of particle which has id2
- logical, intent(out) :: failFlag ! .true. if id1 or id2 could not be found in the particleVector
twoBodyTools/pCM_sqr [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
real function pCM_sqr(s, msqr1, msqr2)
PURPOSE
This routine evaluates the CM-momentum of two particles, asssuming vacuum kinematics.
Attention: Takes all arguments as squared quantities!!!
This routine does almost the same as 'pCM', but without taking the sqrt. Useful if a validity check is needed.
INPUTS
- real :: msqr1, msqr2 ! squared masses of both particles
- real :: s ! Mandelstam s
OUTPUT
twoBodyTools/p_lab [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
real function p_lab(srts, mass1, mass2)
PURPOSE
This routine evaluates the momentum of the 1-st particle in the rest frame of the 2-nd particle, asssuming vacuum kinematics.
INPUTS
- real :: mass1, mass2 ! masses of both particles
- real :: srts ! SQRT(s)
OUTPUT
- real :: p_lab ! laboratory momentum
twoBodyTools/MomentumTransfer2 [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
real function MomentumTransfer2(part1,part2)
PURPOSE
This routine evaluates the momentum transfer squared, i.e. -t=-(p1-p2)^2
INPUTS
- type(particle), intent(in) :: part1,part2 ! Incoming and outgoing particles, respectively
OUTPUT
- function value
twoBodyTools/convertToAntiParticles [ Subroutines ]
[ Top ] [ twoBodyTools ] [ Subroutines ]
NAME
subroutine convertToAntiParticles(a)
PURPOSE
Converts a given preEvent to AntiParticles
INPUTS
OUTPUT
twoBodyTools/IsElastic [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
logical function IsElastic (in, out)
PURPOSE
Given two ingoing and two outgoing particles, check if this is an elastic collision.
INPUTS
- type(particle), dimension(2), intent(in) :: in,out
twoBodyTools/IsChargeExchange [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
logical function IsChargeExchange(part1,part2,part3,part4)
PURPOSE
Compare incoming particles part1, part2 with outgoing particles part3, part4 and return .TRUE., if this is a charge exchange reaction.
INPUTS
- type(particle), intent(in) :: part1,part2,part3,part4
OUTPUT
- function value
twoBodyTools/LogicMatrix [ Functions ]
[ Top ] [ twoBodyTools ] [ Functions ]
NAME
integer function LogicMatrix(flag1,flag2)
PURPOSE
convert the 4 possibilities of two logical variables into 3 integer values:
| flag1 = .FALSE. ! flag1 = .TRUE. ----------------+-----------------+--------------- flag2 = .FALSE. | 1 ! 2 flag2 = .TRUE. | 2 ! 3 ----------------+-----------------+---------------
NOTES
- flag(i)=isMeson(partIn(i)%ID) -> 1,2,3 == BarBar,BarMes,MesMes
- flag(i)=partIn(i)%antiparticle -> 1,2,3 == BarBar,BarAntiBar,AntiBarAntiBar