Annotated Jobcard "jobHARP"
The jobcard explained here in some detail is the file "jobHARP" from Release 1.2. This jobcard may be used in order to calculate particle spectra in pion or proton induced reaction on nuclei. The designated energies are 3 upto 50 GeV, as e.g. possible within the HARP and NA61/Shine experiments.
The given jobcard is shrinked to a minimal set of parameters to give. There are many other possible namelists and also in the namelists given here many other possible parameters. All these are set to sensible default values in the code and therefore omitted in this file.
Please note:
- Text after an exclamation mark is considered as a remark.
- This file is not conform with fortran standard. Code compiled with some compilers complains about our convention starting and ending a namelist by "$NameOfNamelist" and "$end"
- Distances are given in fm, Energies and momenta in GeV, cross sections in mb.
For more information of the given switches and parameters we refer to our online documentation.
!************************************************************ -*- fortran -*- !* A JobCard for BUU: !* ================== !* !* This JobCard tries to be a template for all !* "HiEnergy pion+Nucleus" !* collisions. !* Selected parameters are suitable for HARP and NA61/SHINE !* calculations !* !************************************************************ !************************************************************ ! General Input : !************************************************************ $input eventtype = 12 ! HiPion
Here we select the initialization routine which is responsible for pion/proton induced reactions. The final state particles are treated perturbatively.
numEnsembles= 100 ! number of ensembles
The number of ensembles the code treats in one run. Together with num_runs_SameEnergy (see below) responsible for the statistics to collect in the total run. If no potentials are switched on and also the particle density is calculated analytically (as given here), only the total number numEnsembles*num_runs_SameEnergy matters. Nevertheless, the larger numEnsembles, the more memory the code occupies. (see also discussions below.)
numTimeSteps= 100 ! number of time steps delta_T = 0.10 ! time step size
How many time steps the propagation calculates after the first collision before it assumes, that the detector has been reached (and the size in fm). Here we propagate in total 10 fm after the first collision. After this instable particles are forced to decay and the analysis routines are called.
set_length_perturbative = .TRUE. ! length_perturbative = 500 ! adjust according target nucleus length_perturbative = 2000 ! adjust according target nucleus ! length_perturbative = 4000 ! adjust according target nucleus
Here we set the size the code should allocate for the perturbative particle vector of the final state particles. The actual array size is numEnsembles*length_perturbative times the number of bytes we need to store all information for one individual particle. For larger target nuclei you need more possible entries. On the other hand you should not choose the vector too large, since you may run into problems with memory. Additionally, although almost empty, a particle vector chosen too large slows down the code. Depending on energy, process type and size of target nucleus one should find a compromise. A good hint is the line #### pertParticles is occupied by xxx% with yyy% ensembles over 80% the code prints every timestep.
! num_runs_SameEnergy=10000 ! number of runs per energy num_runs_SameEnergy=2 ! number of runs per energy
See above. The given value 2 is just for test purposes. Real production runs (approx 2 weeks CPU time) need values as the also given 10000.
localEnsemble = .TRUE.
BUU calculations may be done in parallel ensemble method, full ensemble method and (in our code) in local ensemble method, which is a full ensemble method with local collision criteria (see e.g. A.Lang, phd thesis, Gießen, 1991 (in german)).
freezeRealParticles = .TRUE.
The testparticles for the nucleons are kept fix at their spatial position during the time evolution, albeit carrying Fermi momentum.
DoPrLevel(1) = .FALSE. DoPrLevel(2) = .FALSE.
These lines reduce the verbosity of the code, necessary for long calculations.
path_To_Input = '~/WC/buuinput'
The path to the directory, where the code finds the directory "buuinput" in the local installation.
$end $LesHouches ! LesHouchesFinalParticles_Pert=.true. ! if you want that output $end
Setting this flag to true will print for every subsequent run a XML file according the Les Houches Event Files Standard, holding the perturbative particle vector after the last time step and all particle decays.
$initRandom SEED=45678 ! Seed for the random number $end
The seed for the random number generator.
$initDensity densitySwitch=2 ! 1=dynamic, 2=analytic $end
This selects the kind of calculating the nuclear density during the run. Here we choose to have it via a Woods--Saxon--density profile. The other choice would recalculate the density in every timestep according the spatial distribution of the testparticles for the nucleons.
$initPauli pauliSwitch=2 ! 1=dynamic, 2=analytic $end
As for the density above we select the option that Pauli Blocking is based on a analytic description contrary to actual phase space densities of testparticles.
$propagation coulomb=.false. ! Whether to use coulomb in propagation predictorCorrector=.false. ! Whether to use a predictor/corrector algorithm $end !************************************************************ ! Input for potentials !************************************************************ $Coulomb CoulombFlag=.false. $end $mesonPotential noPerturbativePotential=.true. ! perturbative mesons feel no potential $end $baryonPotential noPerturbativePotential=.true. ! perturbative baryons feel no potential $end $Yukawa yukawaFlag=.false. ! whether Yukawa is switched on/off $end $width_Baryon mediumSwitch_coll=.false. $end $baryonWidthVacuum use_cutoff=.true. $end
All definitions above are given in the context that we switch off potentials in these calculations. Has been tested to be a good approximation for the energies covered by this jobcard: several GeV upto tens of GeV.
!************************************************************ ! Input specific for the reactions !************************************************************ $target ! fermiMotion = .FALSE. ! target_Z= 1, target_A= 1 ! proton,neutron, deuterium ! target_Z= 4, target_A= 9, densitySwitch_Static=4 ! Be ! target_Z= 6, target_A= 12, densitySwitch_Static=4 ! C target_Z= 6, target_A= 12 ! C ! target_Z= 7, target_A= 14 ! N ! target_Z= 10, target_A= 20 ! Ne ! target_Z= 16, target_A= 32 ! S ! target_Z= 26, target_A= 56 ! Fe ! target_Z= 29, target_A= 64 ! Cu ! target_Z= 36, target_A= 84 ! Kr ! target_Z= 54, target_A=131 ! Xe ! target_Z= 82, target_A=208 ! Pb $end
Here we provide a (not complete) list of possible target nuclei. Above A=12 all (A,Z) combinations are possible. The first line indicates the possibility to switch on/off Fermi motion of the nucleons. (In the case of A<2 this is a necessary option.)
!************************************************************ $HiPionNucleus ! EVENTTYPE = 12
Here we start the namelist directly connected with the event type we selected at the very top: High energetic pions/protons on a nucleus. This steers the initialization of the testparticles.
distance=10. ! distance of pions to nucleus
All projectile testparticles are initialized 10 fm apart from the nucleus in (negative) beam direction.
impact_parameter=-99 ! impact-parameter<0: impact-parameter integration
This selects the impact parameter. A negative value indicates, that we average over all impact parameters; the beam test particles are initialized in a disk around the beam direction.
DoProton=.TRUE.
Since historically this kind of init was for pions on nuclei, this flag tells the code that the "pion" is indeed a nucleon.
charge=1 ! charge of pions
This selects the charge of the beam particle (being a pion or a proton, as selected above).
numberPions= 25 ! number of pions per ensemble
For every real pion (i.e. beam particle) we initialize 25 testparticles.
! ekin_lab=515. ! kinetic energy in system where nucleus rests ! ekin_lab = 2.205 ! p= 3GeV ekin_lab = 4.149 ! p= 5GeV ! ekin_lab = 7.117 ! p= 8GeV ! ekin_lab =11.099 ! p=12GeV
This gives a selection of beam energies (e.g. 3,5,8,12 GeV beam momentum for HARP)
doPerturbativeInit=.TRUE. ! Do perturbative init
In this special initialization type ("HiPion") we have the possibility to not only initialize the beam (test)particles (pions or nucleons) in some distance from the nucleus, which then have to propagate in every time step towards the nucleus until they first interact with some specific nucleon, but also run this in some "fast motion" mode and to hit the beam particle already to this nucleon immediately. This means, we first start at time 0 with a bunch of beam particles at some distance, then also at time 0 hit a selected nucleon, and also at time 0, the beam test particles are replaced by the particles produced in this interaction.
DoOnlyOne = .TRUE.
For some processes the cross section has been proven to follow a A1 dependence, instead of A2/3 as given by this transport approach. Setting the above flag to .false. attends for this possibility by allowing the beam particle to interact with many nucleons in beam direction.
minimumMomentum=0.1 ! minimum momentum for particles to propagate
Particles with momenta smaller the given value are simply erased from the particle vector in order to speed up the calculation.
$end !************************************************************ ! The collision term !************************************************************ $collisionTerm energyCheck=0.100 ! accuracy of energy check in GeV twoBodyProcessesRealReal = .FALSE. ! oneBodyProcesses=.false. ! twoBodyProcesses=.false. ! threeBodyProcesses=.false. $end
In this namelist one has the possibility to switch on/off particle decays, 2-Body collisions and 3-Body collisions in the propagation. The chosen values here represent a sensible choice for these kind of processes.
$insertion minimumEnergy=0.100 ! minimal kinetic energy of produced nucleons (GeV) $end
Here we decide, that protons and neutrons coming as outgoing particle from some collision during the propagation are erased from the particle vector, if their kinetic energies are below 100 MeV. This is one very essential speed up of the calculations, not changing particle spectra above some hundreds of MeV in energy or momentum.
$master_2Body correctEnergy_message=.false. $end
Reducing the verbosity.
!************************************************************ ! Temperature and thermodynamics !************************************************************ $initThermoDynamics temperatureSwitch=1 ! 1=groundstate calculations (T=0,mu=E_F) $end
Setting a default (do not touch).
!************************************************************ ! Additional Pythia Parameters !************************************************************ $pythia PARP( 91) = 0.44 ! width intrinsic kT MSTP( 21) = 21 ! selection of main routine $end
Here one sets steering parameters for the included PYTHIA implementation. Many of the common block parameters there are tunable here. We refer to the Pythia manual for the description of all of this bunch.
The above parameters select the value of intrinsic transverse momentum, and while compiled against a Pythia version 6.4 switches the handling of the collisions to the most recent behavior.