TABLE OF CONTENTS
- 1. /collisionTerm
- 1.1. collisionTerm/useStatistics
- 1.2. collisionTerm/noNucNuc
- 1.3. collisionTerm/energyCheck
- 1.4. collisionTerm/oneBodyProcesses
- 1.5. collisionTerm/oneBodyAdditional
- 1.6. collisionTerm/twoBodyProcesses
- 1.7. collisionTerm/twoBodyProcessesRealReal
- 1.8. collisionTerm/twoBodyProcessesRealPert
- 1.9. collisionTerm/threeBodyProcesses
- 1.10. collisionTerm/twoPlusOneBodyProcesses
- 1.11. collisionTerm/maxOut
- 1.12. collisionTerm/printPositions
- 1.13. collisionTerm/storeRho0Info
- 1.14. collisionTerm/storeRho0InfoOnlyDifr
- 1.15. collisionTerm/DoJustAbsorptive
- 1.16. collisionTerm/annihilate
- 1.17. collisionTerm/annihilationTime
- 1.18. collisionTerm/justDeleteDelta
- 1.19. collisionTerm/debug
- 1.20. collisionTerm/readInput
- 1.21. collisionTerm/collisionterm
- 1.22. collisionTerm/ForceDecays
- 1.23. collisionTerm/collideMain
- 1.24. collisionTerm/oneBody
- 1.25. collisionTerm/twoBody
- 1.26. collisionTerm/twoBody_local
- 1.27. collisionTerm/positionPrinter
- 1.28. collisionTerm/threeBody
- 1.29. collisionTerm/finalCheck
/collisionTerm [ Modules ]
NAME
module collisionTerm
PURPOSE
Includes the collision term.
collisionTerm/useStatistics [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical, save :: useStatistics=.false.
PURPOSE
Generate statistical information using the module statistics.
collisionTerm/noNucNuc [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical, save :: noNucNuc=.false.
PURPOSE
Switch off perturbative NN reactions.
collisionTerm/energyCheck [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
real, save :: energyCheck=0.01
PURPOSE
Precision of energy check for each collision in GeV.
collisionTerm/oneBodyProcesses [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: oneBodyProcesses=.true.
PURPOSE
Switch to turn off one-body-induced processes.
collisionTerm/oneBodyAdditional [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: oneBodyAdditional=.true.
PURPOSE
Switch to turn off additional Pythia one-body-induced processes.
collisionTerm/twoBodyProcesses [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: twoBodyProcesses=.true.
PURPOSE
Switch to turn off two-body-induced processes.
collisionTerm/twoBodyProcessesRealReal [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: twoBodyProcessesRealReal=.true.
PURPOSE
Switch to turn of two-body-induced processes between two real particles.
collisionTerm/twoBodyProcessesRealPert [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: twoBodyProcessesRealPert=.true.
PURPOSE
Switch to turn off two-body-induced processes between a real and a perturbative particle.
collisionTerm/threeBodyProcesses [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: threeBodyProcesses=.true.
PURPOSE
Switch to turn off three-body-induced processes.
collisionTerm/twoPlusOneBodyProcesses [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: twoPlusOneBodyProcesses=.false.
PURPOSE
Switch to turn off 2+1 body processes (two really colliding particles plus one nearby).
collisionTerm/maxOut [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
integer,save :: maxOut=100
PURPOSE
Maximal number of produced particles in one process.
collisionTerm/printPositions [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: printPositions=.false.
PURPOSE
Switch to turn of output of positions in real-pert collisions. Produces statistical output.
collisionTerm/storeRho0Info [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical, save :: storeRho0Info = .false.
PURPOSE
Flag whether in a rho0 decay the particle numbers of the resulting charged pions are stored or not.
collisionTerm/storeRho0InfoOnlyDifr [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical, save :: storeRho0InfoOnlyDifr = .false.
PURPOSE
Flag, whether the flag storeRho0Info is valid for all decays or only for rho0, which are marked to be diffractive.
collisionTerm/DoJustAbsorptive [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical, save :: DoJustAbsorptive = .false.
PURPOSE
If this flag is true, then: for perturbative simulations all final state particles in a collision are set to zero; for real simulations %event index of incoming hadron is changed in the case of collision, but actual collision is not simulated. This is a way to mimick Glauber like calculations.
NOTES
The "absorption" is done with sigmaTot, not just by sigmaInEl.
collisionTerm/annihilate [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical, save :: annihilate = .false.
PURPOSE
If this flag is true, then an annihilation of the antibaryons with the closest baryons will be simulated (by hand) starting from annihilationTime.
collisionTerm/annihilationTime [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
real, save :: annihilationTime = 1000.
PURPOSE
Time moment (in fm/c) when the annihilation will be started.
NOTES
This flag has an influence only when annihilate = .true. Before annihilationTime all the collision processes are not activated. They start to act (if the corresponding switches oneBodyProcesses,twoBodyProcesses etc. are .true.) only after annihilationTime.
collisionTerm/justDeleteDelta [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical, save :: justDeleteDelta = .false.
PURPOSE
Deletes final-state products in Delta N N -> NNN and Delta N -> N N. NOTE: Only for testing and comparing with the old Effenberger code! DO NOT USE OTHERWISE: Violates energy conservation! This switch is meant to simulate the treatment of the Delta in the old code. Only implemented for perturbative runs.
collisionTerm/debug [ Global module-variables ]
[ Top ] [ collisionTerm ] [ Global module-variables ]
SOURCE
logical,save :: debug=.false.
PURPOSE
Switch for debug information.
collisionTerm/readInput [ Subroutines ]
[ Top ] [ collisionTerm ] [ Subroutines ]
NAME
subroutine readInput
PURPOSE
Reads input in jobcard out of namelist "collisionTerm".
collisionTerm/collisionterm [ Namelists ]
[ Top ] [ collisionTerm ] [ Namelists ]
PURPOSE
Namelist for collisionTerm includes:
- oneBodyProcesses
- twoBodyProcesses
- threeBodyProcesses
- twoPlusOneBodyProcesses
- twoBodyProcessesRealReal
- twoBodyProcessesRealPert
- oneBodyAdditional
- energyCheck
- maxOut
- debug
- printPositions
- useStatistics
- noNucNuc
- storeRho0Info
- storeRho0InfoOnlyDifr
- DoJustAbsorptive
- annihilate
- annihilationTime
- justDeleteDelta
collisionTerm/ForceDecays [ Subroutines ]
[ Top ] [ collisionTerm ] [ Subroutines ]
NAME
subroutine ForceDecays (teilchenPert, teilchenReal, time)
PURPOSE
This routine forces all instable particles to decay in the last timestep. We loop over the particle vectors several times in order to allow for multi-step decay chains and to make sure that everything has decayed.
INPUTS
- type(particle), dimension(:,:) :: teilchenReal -- real particles
- type(particle), dimension(:,:) :: teilchenPert -- perturbative particles
- real :: time
collisionTerm/collideMain [ Subroutines ]
[ Top ] [ collisionTerm ] [ Subroutines ]
NAME
subroutine collideMain (teilchenPert, teilchenReal, time)
PURPOSE
Evaluates the collision term for a given real and perturbative particle vector. There are reactions induced by a single particle (decays), two particles and even three particles.
INPUTS
- type(particle), dimension(:,:) :: teilchenReal -- real particles
- type(particle), dimension(:,:) :: teilchenPert -- perturbative particles
- real :: time
collisionTerm/oneBody [ Subroutines ]
[ Top ] [ collisionTerm ] [ Subroutines ]
NAME
logical function oneBody (teilchenPert, teilchenReal, time, ForceFlag)
PURPOSE
Administrates the 1-body processes (i.e. decays).
INPUTS
- type(particle),dimension(:,:) :: teilchenPert -- perturbative particles
- type(particle),dimension(:,:) :: teilchenReal -- real particles
- real :: time -- actual time step
- logical :: ForceFlag -- .true. = let particles decay (decay probability=1), do not consider the width anymore for the decay probability. This is useful at the end of a run.
OUTPUT
- teilchenPert and teilchenReal are changed.
- The return value indicates whether any decays have occurred.
collisionTerm/twoBody [ Subroutines ]
[ Top ] [ collisionTerm ] [ Subroutines ]
NAME
subroutine twoBody (teilchenPert, teilchenReal, time)
PURPOSE
Administrates the 2-body processes. The collision criteria is based upon the Kodama criteria.
INPUTS
- type(particle),dimension(:,:) :: teilchenPert -- perturbative particles
- type(particle),dimension(:,:) :: teilchenReal -- real particles
- real :: time -- actual time step
OUTPUT
- teilchenPert and teilchenReal are changed
collisionTerm/twoBody_local [ Subroutines ]
[ Top ] [ collisionTerm ] [ Subroutines ]
NAME
subroutine twoBody_local (teilchenPert, teilchenReal, time)
PURPOSE
- Administrates the 2-body processes.
- The collision criteria is based upon the local collision criteria. Therefore the volume elements (module VolumeElements) must be initialized. Only scatterings within one volume element are allowed.
NOTES
For real-real collisions there is still the Kodama procedure implemented. This shall be changed in the future.
INPUTS
- type(particle),intent(inOUT),target,dimension(:,:) :: teilchenReal -- real particles
- type(particle),intent(inOUT),target,dimension(:,:) :: teilchenPert -- perturbative particles
- real, intent(in) :: time
OUTPUT
- teilchenPert and teilchenReal are changed
collisionTerm/positionPrinter [ Subroutines ]
[ Top ] [ collisionTerm ] [ Subroutines ]
NAME
subroutine positionPrinter (p)
PURPOSE
This routine saves the position of a given particle into a 2D Histogram as a function of cylinder coordinates z and rho. Each new entry is added to the previous ones. The histograms are meant to be used as tables of all production points.
If no input is given, the histogrames are printed to file.
INPUTS
- type(particle), intent(in), optional :: p
OUTPUT
- file 'ProdPlaces_pionPlus.dat' -- All saved positions of pi^+
- file 'ProdPlaces_pionNull.dat' -- All saved positions of pi^0
- file 'ProdPlaces_pionMinus.dat' -- All saved positions of pi^-
- file 'ProdPlaces_nucleon.dat' -- All saved positions of nucleons
collisionTerm/threeBody [ Subroutines ]
[ Top ] [ collisionTerm ] [ Subroutines ]
NAME
subroutine threeBody (teilchenPert, teilchenReal, time)
PURPOSE
Administrates the 3-body processes.
INPUTS
- type(particle),dimension(:,:) :: teilchenPert -- perturbative particles
- type(particle),dimension(:,:) :: teilchenReal -- real particles
- real :: time -- actual time step
OUTPUT
- teilchenPert and teilchenReal are changed
collisionTerm/finalCheck [ Functions ]
[ Top ] [ collisionTerm ] [ Functions ]
NAME
function finalCheck (teilchenIn, teilchenOut, HiEnergyFlagge, woher) result(flag)
PURPOSE
Checks the final state of a collision for the conservation of all quantum numbers, also including momentum and energy conservation.
For HiEnergy events we do not check charge and momentum conservation, this MUST be done separately. The reason for this is, that some particles which are produced by Pythia/Fritiof can not be propagated by BUU and therefore do not show up in the final state vector "teilchenOut" ("unknown particles wont be propagated").
INPUTS
- type(particle),dimension(:) :: teilchenIn -- Incoming particles
- type(particle),dimension(:) :: teilchenOut -- Outgoing particles
- logical, optional :: HiEnergyFlag -- .true. if it was a HiEnergy event. if .true. then energy conservation is not checked and code does not stop if charge conservation is violated
- character(*), optional :: woher -- ...
OUTPUT
- logical :: flag -- .true. if quantum numbers are conserved