This website is no longer maintained. Its content may be obsolete. Please visit http://home.cern/ for current CERN information.
It is now possible use PYTHIA6 as an event generator, directly linked with SGV. Implementing this implies several changes in the code, due to the fact that PYTHIA6 works in double-precision by default, but to a large extent uses the same common-block variable names as the single-precision PYTHIA5. In addition, some utility routines have changed names (LUTABU becomes PYTABU, LURSET/GET becomes PYRSET/GET, LULIST becomes PYLIST) Hence, new conditional material has been added to several routines (ZAMVAL, ZXEND, ZXINI, and ZXLOOP). In these routines, the card-count has therefore changed: check Your cradles!
The patchy-steering flag to activate PYTHIA6 is "+USE,PYTHIA6". It will select the correct versions of ZEUGEN and ZEORD, in addition to activating the conditional executable code, and selecting the correct common-block definitions. The steering-flag PYTHIA should also be selected. (If PYTHIA, but not PYTHIA6, is selected, the PYTHIA5 version will be activated)
Different versions of PYTHIA6 have different size-definitions of the common- blocks. Therfore, the patchy flag "+USE,PYTHIA61" or "+USE,PYTHIA62" must be given in addition to "+USE,PYTHIA6" to select the pythia6.1xx or 6.2xx size-definitions, respectively. The size-definitions have been lifted out from the specification of the common-blocks, and are in parameter statements, in the KEEP-sequence PYPS in ZXCDE. If new versions of PYTHIA once more modify the sizes, a new conditional section can be created here (in SGVALL.CAR), to take that into account. Note that such a change does not affect the compiled routines in the libraries, only the routines selected for re-compilation by the PYTHIA6 patchy-flag. Hence, it is not needed to recompile the libraries, if such a change in pythia would arrise, only user-code.
Two new routines have been introduced to transfer double-precision arrays to single precision ZUCODS and vice-versa ZUCOSD .
A new sample title-file has been included: sgv_ex_pythia6.tit. The PYTHIA5 sample file has been renamed to sgv_ex_pythia5.tit.
It is now possible to make the association of charged tracks with calorimetric clusters based on the actual measured distance between the shower and the track-extrapolation, and hence to simulate the effects of errors in this procedure. The routine distance shower start-point to extrapolation is given by the new steering card MIN_SEP_CLU_TRACK, and the routine ZAUCSH is provided to make the association. If MIN_SEP_CLU_TRACK is no-zero, ZAUCSH will be called within ZAUSHO (which, as before, must be called by the user).
A simple visualisation of the detector-geometry is now included in SGV. It consists in a special format of printing the geometry, activated by setting the steering-card PLDET to TRUE, a kumac-script (showdet.kumac) to interpret this listing and plot it inside PAW, and a Perl-script (plotdef.pl) to assign colour and fill-area attributes to the plot (as read form the file plot_attrs.dat. Please refer to section 6.7 in the users-guide for more details.
The possibility to output the simulated events on an ZEBRA FZ-file, and later read them back for analysis has been revised. The steering-card IOMODE can now take the values 'FZUT' (output to FZ) and 'FZIN' (input from FZ), while the old values 'FZ ' has been removed. The I/O is directed to/from FORTRAN unit 67. (Note that also the geometry-file corresponding to the simulated events is needed by the analysis code.)
A new steering-card USE_HBOOK (default: TRUE) has been introduced, which gives the possibility to avoid unnecessary opening of the hbook output-file, in case no histograms or ntuples are to be created. Note that HBOOK still is initialised, even if USE_HBOOK is set to FALSE. so internal use of HBOOK (eg. by the event generator) is still possible.
Two new utility routines have been introduced: ZTCBNL and ZTCFNL to get the number of calorimeter-layers in the barrel and forward, respectively.
The script/comfile CRESGVEXE now has a nineth argument, where one can specify libraries to add to the end of the cernlib-command, i.e. to the end of the linker search-chain. (Argument 7 gives the possibility to add libraries to the b e g i n i n g of the chain, as before.)
A new steering card SHOW_SEP_LIM has been introduced. It regulates the smallest detectable separation between two calorimetric showers. See the description of ZAUSHO for details.
SGV is strongly typed (IMPLICIT NONE imposed everywhere), while PYTHIA/JETSET is not. Since SGV uses the Lund common-blocks internally to store the generated events, this can pose problems: In each inclusion of a common-block from JETSET, one must make sure that the correct types are also defined. This is done by redefining the JETSET common-blocks in SGV, with the same shape, but with explicit type-definitions. This, in turn, might pose problems if there is a t h i r d program doing the same thing (eg. an other generator). In this case, the SGV definition of the commons might take precedence over this third definition, and might not work. The problem is a PATCHY problem: KEEP-sequences cannot be redefined - the first seen definition will remain valid even if there is an attempt to change it later in the cradle. This problem is now solved, by explicitly defining the SGV versions of the commons to be valid only inside SGV, by defining which patch(es) they apply to.
The sample user-routine ZAUSER have been modified to show how to correctly loop charged and neutral particles in case ZAUSHO was called.
In order to cope with large LC events (ttbar,...) the sizes of various common-blocks has been increased: NTRMAX in PXFVX2 is set to MAXTRK (and hence ZXSIZ is included in this routine), the size of TRWT in ZAUVF1 is set to MAXTRK, and MAXTRK in the analysis patch has been synchronised with that of the steering patch (and hence increased form 250 to 1000). Thanks to Volker Adler.
It was sometimes confusing that the event-count printed during the execution referred to events generated, not events analysed. The event count has therefore been moved to the analysis patch. Note that the steering card MAXEV still refers to the number of events to generate, not the number that actually make it to the analysis.
In the common-block ZAUCLU, a new variable TRMAIN has been introduced. It points to the charged track with the highest momentum pointing to a calorimetric cluster, ie. the track that would probably be the one that the cluster would be assigned to if there are several charged tracks pointing to it.
A new steering-card PTLOSLIM has been introduced to specify what proportion of transverse momentum must be lost before it will be detected by the tracking that a brems has been emitted (ie. when the kink on the charged track is big enough). This was previously hard-wired in the code of ZDBREM .
The size of the common (/CFREAD/) that FFREAD uses to store the definitions of the steering-cards has been largely increased, and should now be enough for any needs.
The sample histogram-creation kumac SGV_EX.KUMAC has been modified, so that all hitograms are now created with pre-defined limits. This makes comparisions easier.
The default optimisation level on OSF/DigitalUNIX/True64 is now -O5.
On AIX, the option '-qmaxmem=16384' has been added to the compile command. This should ameliorate the code-optimisation.
The steering-card DOWNUP was mis-spelled in the FFKEY call. This has been fixed.
The formula calculating the electromagnetic component of a hadronic shower was wrong in ZDCALO . This has been fixed. (Thanks to Klas Hultquist).
A crash-protection has been introduced in PXTPPX and ZTTPLA for tracks along the z-axis. (Thanks to Klas Hultquist).
In ZADCHC , the variable PARCL1 was not correctly set for PARCL less than 30. This has been fixed. (Thanks to Volker Adler).
A crash-protection for array-overflow has been introduced in ZADECD . (Thanks to Klas Hultquist).
In ZAUVF2 , a check that the weight-matrix inversion worked was added before a track is included in the vertex. (Thanks to Klas Hultquist).
A protection against a potential (quasi-) infinite loop has been introduced in ZTCALO to avoid that low-momentum tracks almost perpendicular to the z-axis are followed to their intersection with a forward calorimeter. (Thanks to Klas Hultquist).
The variable CL in /ZATRS/ and CLG in /ZATRA/ was defined as REAL, while it's meaning is intrinsically INTEGER. While this is by no means formally incorrect, it made the code somewhat confusing, and has been modified.
In ZAUJID , the jet-pointers were wrong. This has been fixed.
In ZAUJSF , the charge of the calorimetric clusters was the true one, ie. it could happen that a cluster that had a charged track associated to it might be considered as neutral, namely if the charged track association was erroneous. This has been fixed.
In ZTTPLA , an overall sign-error in the azimuthal angle was corrected.
Previously, the event-generator initialisation was called even if fully simulated events were read in. This has been fixed.
The transfer of advanced user-steering to ZAUCLU was not correct. This has been fixed.
An un-needed equal-sign was present on the steering cards GSEED and DSEED in the sample steering-files. It has been removed.
On GNU/Linux, the postscript file of the reference-manual was automatically sent to the printer once created. This has been fixed.
The definition of the compile-command in cresgvexe was wrong on GNU/Linux. The superflous -o option has been removed.
The users guide and reference manual has been updated due to the changes above. Some typos have been fixed.