Documentation and Description:

MEVSIM is a stand alone code which generates ntuple output.

This replaces staf version which made xdf files.

Examples of input file for running ntuple mevsim look at

/afs/rhic/star/doc/www/comp/simu/evgen/mevsim/

Executable of mevsim $STAF/bin/mevtupl.x

This code is intended to provide a quick means of producing uncorrelated simulated events for event-by-event studies, detector acceptance and efficiency studies, etc. The user selects the number of events, the one-particle distribution model, the particles to include, the ranges in transverse momentum, pseudorapidity and azimuthal angle, the mean multiplicity for each particle type for the event run, the mean temperature, Rapidity width, etc., and the standard deviations for the event-to-event variation in the model parameters. Note that these events are produced in the c.m. frame only.

Anisotropic flow may also be simulated by introducing explicit phi-dependence (azimuthal angle) in the particle distributions. The assumed model is taken from Poskanzer and Voloshin, Phys. Rev. C58, 1671 (1998), Eq.(1), where we use,

E d^3N/dp^3 = (1/2*pi*pt)*[d^2N/dpt*dy]

* [1 + SUM(n=1,nflowterms){2*Vn*cos[n(phi-PSIr)]}]

with up to 'nflowterms' (currently set to 6, see file Parameter_values.inc) Fourier components allowed. Vn are coefficients and PSIr is the reaction plane angle. The algebraic signs of the Vn terms for n=odd are reversed from their input values for particles with rapidity (y) < 0 as suggested in Poskanzer and Voloshin.

The user may select either to have the same multiplicity per particle type for each event or to let the multiplicity vary randomly according to a Poisson distribution. Similarly the parameters of the one-particle distribution models may either be fixed to the same value for each event or allowed to randomly vary about a specified mean with a specified standard deviation and assuming a Gaussian distribution.

With respect to the reaction plane and anisotropic flow simulation, the user may select among four options:

(1) ignore reaction plane and anisotropic flow effects; all

distributions will be azimuthally invariant, on average.

(2) assume a fixed reaction plane angle, PSIr, for all events

in the run.

(3) assume a Gaussian distribution with specified mean and

standard deviation for the reaction plane angles for the

events in the run. PSIr is randomly determined for each

event.

(4) assume uniformly distributed, random values for the reaction

plane angles from 0 to 360 deg., for each event in the run.

The user may also select the anisotropic flow parameters, Vn, to either be fixed for each event, or to randomly vary from event to event according to a Gaussian distribution where the user must specify the mean and std. dev. For both cases the input file must list the 'nflowterms' (e.g. 6) values of the mean and Std.dev. for the Vn parameters for all particle ID types included in the run.

The input is from a file, named 'mult_gen.in'. The output is particle table for a given event. Header information is store in the first particle. Event header information store in the first particle includes: Impact parameter and phi angle of collision; Generator number 62 mev giving VENUS like central collision and number 80 giving VNI like central; Energy per nucleon-nucleon collision; Colliding system A.A; Run number; Event number; Day; and Time. A log file, 'mult_gen.log' is also written which contain config. messages.

The method for generating random multiplicities and model parameter values involves the following steps:

(1) The Poisson or Gaussian distributions are computed and

loaded into function f().

(2) The distribution f(x') is integrated from xmin to x

and saved from x = xmin to x = xmax. The range and mesh

spaces are specified by the user.

(3) The integral of f is normalized to unity where

integral[f(x')](at x = xmin) = 0.0

integral[f(x')](at x = xmax) = 1.0

(4) A random number generator is called which delivers values

between 0.0 and 1.0.

(5) We consider the coordinate x (from xmin to xmax) to be

dependent on the integral[f]. Using the random number

for the selected value of integral[f] the value of x

is obtained by interpolation.

An interpolation subroutine from Rubin Landau, Oregon State Univ., is used to do this interpolation; it involves uneven mesh point spacing.

The method for generating the particle momenta uses the standard random elimination method and involves the following steps:

For model_type = 1,2,3,4 which are functions of pt,y (see following):

(1) The y range is computed using the pseudorapidity (eta) range and includes ample cushioning around the sides along the eta acceptance edges.

(2) The transverse momentum (pt) and rapidity (y) are randomly chosen within the specified ranges.

(3) The pseudorapidity is computed for this (pt,y) value (and the mass for each pid) and checked against the pseudorapidity acceptance range.

(4) If the pseudorapidity is within range then the one-particle model distribution is calculated at this point and its ratio to the maximum value throughout (pt,eta) acceptance region is calculated.

(5) Another random number is called and if less than the ratio from step#4 the particle momentum is used; if not, then another trial value of (pt,y) is obtained.

(6) This continues until the required multiplicity for the specific event and particle type has been satisfied.

(7) This process is repeated for the requested number of particle types and events.

For model_type = 5,6 (see following) which are input bin-by-bin in pt,eta:

(1) The transverse momentum (pt) and pseudorapidity (eta) are randomly chosen within the specified ranges.

(2) The one-particle model distribution is calculated at this point and its ratio to the maximum value throughout the (pt,eta) region is calculated.

(3) Another random number is called and if less than the ratio from step(2) the particle momentum is used; if not then another trial value of (pt,eta) is obtained.

(4) This continues until the required multiplicity for the specific event and particle type has been satisfied.

(5) This process is repeated for the requested number of particle types and events.

Problematic parameter values are tested, bad input values are checked and in some cases may be changed so that the program will not crash. In some cases the code execution is stopped. Some distributions and/or unusual model parameter values may cause the code to hang up due to the poor performance of the "elimination" method for very strongly peaked distributions. These are tested for certain problematic values and if necessary these events are aborted. A message, "*** Event No. 2903 ABORTED:" for example is printed in the 'mult_gen.out' file. Temperatures .le. 0.01 GeV and rapidity width parameters .le. 0.01 will cause the event to abort. The input is described below in the 'read' statements and also in the sample input file. Some additional comments are as follows:

(1) n_events - Selected number of events in run. Can be anything .ge. 1.

(2) n_pid_type - Number of particle ID types to include in the particle list. e.g. pi(+) and pi(-) are counted separately. The limit is set by parameter npid in the accompanying include file 'Parameter_values.inc' and is presently set at 30.

(3) model_type - equals 1,2,3,4,5 or 6 so far. See comments in Function dNdpty to see what is calculated. The models included are:

= 1, Factorized mt exponential, Gaussian rapidity model

= 2, Pratt non-expanding, spherical thermal source model

= 3, Bertsch non-expanding spherical thermal source model

= 4, Pratt spherically expanding, thermally equilibrated source model.

= 5, Factorized pt and eta distributions input bin-by-bin.

= 6, Fully 2D pt,eta distributions input bin-by-bin.

NOTE: model_type = 1-4 are functions of (pt,y)

model_type = 5,6 are functions of (pt,eta)

(4) reac_plane_cntrl - Can be either 1,2,3 or 4 where:

= 1 to ignore reaction plane and anisotropic flow, all distributions will be azimuthally symm.

= 2 to use a fixed reaction plane angle for all events in the run.

= 3 to assume a randomly varying reaction plane angle for each event as determined by a Gaussian distribution.

= 4 to assume a randomly varying reaction plane for each event in the run as determined by a uniform distribution from 0 to 360 deg.

(5) PSIr_mean, PSIr_stdev - Reaction plane angle mean and Gaussian std.dev. (both are in degrees) for cases with reac_plane_cntrl = 2 (use mean value) and 3. Note: these are read in regardless of the value of reac_plane_cntrl.

(6) pt_cut_min,pt_cut_max - Range of transverse momentum in GeV/c.

(7) eta_cut_min,eta_cut_max - Pseudorapidity range

(8) phi_cut_min,phi_cut_max - Azimuthal angular range in degrees.

(9) n_stdev_mult - Number of standard deviations about the mean value of multiplicity to include in the random event-to- event selection process. The maximum number of steps that can be covered is determined by parameter n_mult_max_steps in the accompanying include file 'Parameter_values.inc' which is presently set at 1000, but the true upper limit for this is n_mult_max_steps - 1 = 999.

(10) n_stdev_temp - Same, except for the "Temperature" parameter.

(11) n_stdev_sigma- Same, except for the rapidity width parameter.

(12) n_stdev_expvel - Same, except for the expansion velocity parameter.

(13) n_stdev_PSIr - Same, except for the reaction plane angle

(14) n_stdev_Vn - Same, except for the anisotropy coefficients, Vn.

(15) n_integ_pts - Number of mesh points to use in the random model parameter selection process. The upper limit is set by parameter nmax_integ in the accompanying include file 'Parameter_values.inc' which is presently set at 100, but the true upper limit for n_integ_pts is nmax_integ - 1 = 99.

(16) n_scan_pts - Number of mesh points to use to scan the (pt,y) dependence of the model distributions looking for the maximum value. The 2-D grid has n_scan_pts * n_scan_pts points; no limit to size of n_scan_pts.

**************************************************************************

FOR MODEL_TYPE = 1,2,3 or 4:

Input the following 7 lines for each particle type; repeat these set of lines n_pid_type times:

(a) gpid - Geant Particle ID code number

(b) mult_mean,mult_variance_control - Mean multiplicity and variance control where: mult_variance_control = 0 for no variance in multiplicity mult_variance_control = 1 to allow Poisson distribution for particle multiplicities for all events. Note that a hard limit exists for the maximum possible multiplicity for a given particle type per event. This is determined by parameter factorial_max in accompanying include file 'common_facfac.inc' and is presently set at 5000.

(c) Temp_mean, Temp_stdev - Temperature parameter mean (in GeV) and standard deviation (Gaussian distribution assumed).

(d) sigma_mean, sigma_stdev - Rapidity distribution width (sigma) parameter mean and standard deviation (Gaussian distribution assumed).

(e) expvel_mean, expvel_stdev - S. Pratt expansion velocity (in units of c) mean and standard deviation (Gaussian distribution assumed).

(f) Vn_mean(i); i=1,nflowterms - Anisotropic flow parameters, mean values.

(g) Vn_stdev(i); i=1,nflowterms - Anisotropic flow parameters, Gaussian std.dev. values.

**************************************************************************

FOR MODEL_TYPE = 5 input the following set of lines for each particle type; repeat these n_pid_type times.

(a) gpid - Geant Particle ID code number

(b) mult_mean,mult_variance_control - Mean multiplicity and variance control where: mult_variance_control = 0 for no variance in multiplicity mult_variance_control = 1 to allow Poisson distribution for particle multiplicities for all events.

(c) pt_start, eta_start - minimum starting values for pt, eta input for the bin-by-bin distributions.

(d) n_pt_bins, n_eta_bins - # input pt and eta bins.

(e) delta_pt, pt_bin - pt bin size and function value, repeat for each pt bin.

(f) delta_eta, eta_bin - eta bin size and function value, repeat for each eta bin.

(g) Vn_mean(i); i=1,nflowterms - Anisotropic flow parameters, mean values.

(h) Vn_stdev(i); i=1,nflowterms - Anisotropic flow parameters, Gaussian std.dev. values.

NOTE: The pt, eta ranges must fully include the requested ranges in input #4 and 5 above; else the code execution will stop.

Also, variable bin sizes are permitted for the input distributions.

Also, this input distribution is used for all events in the run; no fluctuations in this "parent" distribution are allowed from event-to-event.

**************************************************************************

FOR MODEL_TYPE = 6 input the following set of lines for each particle type; repeat these n_pid_type times.

(a) gpid - Geant Particle ID code number

(b) mult_mean,mult_variance_control - Mean multiplicity and variance control where: mult_variance_control = 0 for no variance in multiplicity mult_variance_control = 1 to allow Poisson distribution for particle multiplicities for all events.

(c) pt_start, eta_start - minimum starting values for pt, eta input for the bin-by-bin distributions.

(d) n_pt_bins, n_eta_bins - # input pt and eta bins.

(e) delta_pt - pt bin size, repeat for each pt bin.

(f) delta_eta - eta bin size, repeat for each eta bin.

(g) i,j,pt_eta_bin(i,j) - read pt (index = i) and eta (index = j) bin numbers and bin value for full 2D space.

(h) Vn_mean(i); i=1,nflowterms - Anisotropic flow parameters, mean values.

(i) Vn_stdev(i); i=1,nflowterms - Anisotropic flow parameters, Gaussian std.dev. values.

NOTE: The pt, eta ranges must fully include the requested ranges in input #4 and 5 above; else the code execution will stop.

Also, variable bin sizes are permitted for the input distributions.

Also, this input distribution is used for all events in the run; no fluctuations in this "parent" distribution are allowed from event-to-event.