Ariadne version 4.04 Reference Manual L. L"onnblad Deutsches Elektronen-Synchrotron, Hamburg, Germany lonnblad@ips102.desy.de (internet) LONNBLAD@DESYVAX (bitnet) (original manual published in Computer Physics Communication[1]) Abstract The fourth version of the Ariadne program for generating QCD cascades in the Colour Dipole Approximation is presented. The under- lying physics issues are discussed and a manual for using the program is given together with a few sample programs. The major changes from previous versions are the introduction of photon radiation from quarks and inclusion of interfaces to the LEPTO and PYTHIA programs. NOTE: This ASCII file was produced from the original LaTeX doc- ument by the dvi2tty program and does not contain all the sections of the original paper. As a consequence some figures and equations ref- ered to in the text are missing. The original document can be obtained from the author in LaTeX or PostScript format. 1 Introduction The Colour Dipole Model (CDM) [2, 3, 4] as implemented in the Ariadne program has had considerable success in describing data from both e+e- [5] and lepto-production [6] experiments. The CDM differs from other QCD cascade models in that it in a natural way correctly treats most QCD coherence effects by describing the gluon bremsstrahlung in terms of radiation from colour dipoles between partons, instead of treating partons as independent emitters. Ariadne is one of the "Lund family of Monte Carlo programs" and is not a complete event generator. It only generates the QCD cascade process and has to be interfaced to other programs which handles hard interactions, hadronization and particle decays. Standard interfaces to the JETSET [7], LEPTO [8] and PYTHIA [9] programs are included in the version presented in this paper. 1.1 Update history The first version of Ariadne [10] only handled gluon radiation from primary quarks in e+e- collisions. Since then the program has evolved as follows o version 2 [11]: Included gluon emission from extended emitters to describe the QCD showers in lepto-production. o version 3 [12]: Included also production of QQ^bar pairs from gluon splitting. o version 3.1: Adopted the new event record of JETSET version 7.1. o version 3.2: Included preliminary facilities for generating dipole show- ers in hadron-hadron collisions. o version 3.3: Included a preliminary treatment of electro-magnetic dipole radiation of photons. o version 4.01: Completely rewritten, built around a new internal dipole oriented event record. The preliminary features of sub-versions 3.2 and 3.3 are properly included. Streamlined interfaces to the JETSET, LEPTO and PYTHIA are introduced as well as a new jet clustering routine, inspired by the CDM. o version 4.02: Fixed bugs in connection with phase space restrictions (in 4.01 the switch MSTA(11) was inactive and effectively set to 4 - see section 3.4). Also a bug related to the option MSTA(20) = 2, and to the quark masses and charges in QED emissions was fixed. o version 4.03: Added options for emissions from extended dipoles (see description of MSTA(18), MSTA(25) and PARA(25) in section 3.4). Also introduced two new sets of tuned parameters ('ALEPH' and 'EMC') in subroutine ARTUNE. Please note that, in connection with this, a few parameters and switches were given new default values. Note especially that the default is to automatically call ARTUNE('EMC)' in subroutine ARINIT, hence the switch MSTA(3) must be set to 0 before the call to ARINIT if the user wants to modify any parameters or switches. In previous releases, increased precision could be obtained by removing the comment of an implicit double precision statement. From this release on, increased precision will be the default (see appendix A). o version 4.04: Fixed minor bug in ARCLUS and speeded up the clus- tering algorithm. Added minor features to ARCLUS to make it more compatible with the LUCLUS routine. 1.2 Programming philosophy The program is a library of FORTRAN 77 subroutines to be called from a user supplied main program. Although there exist over fifty subroutines, only a handful are meant to be explicitly called by the user. The interface to the main program as well as to other programs are handled through the event record in JETSET's LUJETS common block. The communication between different Ariadne routines is however handled by an internal dipole oriented event record in the ARSTRS, ARDIPS and ARPART common blocks, where the dipoles and partons are linked together to form "Lund-type" strings. 1.3 About this manual This paper is divided into three parts. The first part, section ??, explain the underlying physics processes modeled in Ariadne. Section 3 describes the actual program components and in section 4 a couple of sample main programs are given to illustrate how Ariadne is used. In the appendix in- formation on how to obtain, install and test the program is given. 2 The Colour Dipole Model This section has been left out as contains a lot of figures and equations which are not possible to reproduce in this ASCII file. 3 Program Components The program consists of a large number of routines performing different, well defined, operations on an internal dipole oriented event record, consisting of the three common blocks /ARPART/, /ARDIPS/ and /ARSTRS/. Externally the program however use the event record of JETSET in the /LUJETS/ common block. Most of these routines are only used internally by the program and are of no real interest for the ordinary user. They are however all described briefly in appendix B, mainly to give the user some idea of how the program works. In short Ariadne works as follows: After it has been initialized with the ARINIT subroutine, it can be made to act on partonic states in the /LUJETS/ common block by calling AREXEC. AREXEC makes some initial modifications to /LUJETS/ depending on which program it is initialized to run with and then calls ARPARS which performs the translation to the internal event record. In ARCASC the main loop over emissions is found, where first ARGPT2 is called to generate a p_T^2 for a possible emission from each dipole. The dipole with largest p_T^2 is then allowed to radiate by a call to AREMIT. The loop is continued until all generated p_T^2:s are below the cut-off after which a call to ARDUMP translates the formed parton state back to /LUJETS/. 3.1 The main routines The following routines are the ones normally called by the user: o SUBROUTINE ARINIT(MODE) Before Ariadne can be used, it has to be initialized with ARINIT. ARINIT takes one argument which is a character string indicating which program Ariadne is used with; 'JETSET', 'LEPTO', 'PYTHIA' or by itself - 'ARIADNE'. o SUBROUTINE AREXEC This is the main routine in Ariadne. Given a partonic state in /LUJETS/ it administers the dipole radiation according to the options and pa- rameters set in /ARDAT1/. AREXEC assumes that the partonic state has been produced by the program for which Ariadne has been initialized, and reformats the event-record accordingly. o SUBROUTINE ARPRDA Prints out the values of the parameters and switches used by Ariadne. o SUBROUTINE ARTUNE(SET) Sets the parameters in Ariadne to the values tuned by different ex- perimental collaborations. The argument is a character string and should be set to 'ALEPH', 'DELPHI' or 'OPAL' to use the tuning of references [17], [18] and [5] respectively. Giving the argument 'EMC' will set parameters relevant for e+ e- -annihilation in the same way as for 'DELPHI' but in addition parameters relevant for lepto-production will be set to fit EMC data. Note that ARTUNE also changes some pa- rameters and switches in JETSET (PARJ(21), PARJ(41), PARJ(42), PARJ(54), PARJ(55)and MSTJ(11)), and in LEPTO (PARL(3)). o SUBROUTINE ARTEST(IPRINT) A test program to check that Ariadne has been installed properly, disguised as a subroutine (see appendix A.3). 3.2 A jet clustering routine In addition to the generation of dipole emission, Ariadne also provides a routine for jet-clustering called ARCLUS [19]. It implements a CDM inspired jet algorithm which is very different from conventional algorithms. Conventional algorithms are typically based on some measure defining the distance between two jets. This measure can be the invariant mass as in the JADE algorithm [21] or some mutual p_T as in the LUCLUS algorithm[7]. The procedure would then be to find the two jets which are closest together according to this measure, replacing these with a new jet by summing their momenta. This would then be repeated until no two jets are closer together than some cut-off. The algorithm used in ARCLUS is different in the sense that it looks at all combinations of three jets, looking at the invariant p_T^2 of one w.r.t. the two others. The combination which gives the smallest p_T^2 is then selected and these three jets are then clustered together into two, where the orientation of the two new jets are determined by equation ??. An inverse dipole emission if you like. The procedure is repeated until no p_T^2 is below a cut-off. The algorithm is obviously inspired by the CDM but it also fits well into the Lund Sting Fragmentation [20] picture where a hadron is not produced by one parton but rather in the string between two partons. The algorithm is invoked by CALL ARCLUS(NJET) and is used in the same way as the LUCLUS algorithm and also uses some of the switches in JETSET's /LUDAT1/ common block for compatibility. The cut-off in invariant p_T^2 is given by PARA(31) in /ARDAT1/. With MSTU(47) one can require a minimum number of jets to be reconstructed. MSTU(41) determines which particles are used if MSTU(48)=0 otherwise the clusters already in /LUJETS/ from an earlier cluster search are used. After the call, NJET is equal to the number of jets found, or negative to indicate that something went wrong. The energy and momentum of the jets are stored in positions N+1 through N+MSTU(3) in /LUJETS/. In addition, after the call MSTU(62) will be set to the number and PARU(61) to the total invariant mass of particles used in the analysis, and PARU(63) will be equal to the smalles p_T among the final jets. 3.3 Main Common Blocks In appendix B a full list and short description is given for all common blocks used in Ariadne, here only the main ones are described. COMMON /ARDAT1/ PARA(40),MSTA(40) The parameters and switches used by Ariadne. See below for a full descrip- tion. COMMON /ARDAT2/ PQMAS(10) The quark masses used by Ariadne. These are by default set by ARINIT to the values of PARF(101) - PARF(108) in the /LUDAT2/ common block of JETSET. (See switch MSTA(24) below for more details.) COMMON /LUJETS/ N,K(4000,5),P(4000,5),V(4000,5) This is the standard JETSET event record used to communicate with the Ariadne program. When run together with the JETSET, LEPTO or PYTHIA programs AREXEC will automatically handle the encoding of the partonic states which should be treated by Ariadne. When Ariadne is used by it- self the user must ensure that these partonic states are correctly encoded. Ariadne will then perform dipole radiation for all un-decayed strings of par- tons in /LUJETS/ where all partons have the code K(I,1)=2 except for the last one in a string which should have K(I,1)=1 (the standard JETSET encoding). In addition, all partons with K(I,4) between 1 and 3 will be treated extended with the given by PARA(10+K(I,4)). After the call to AREXEC the initial partons will have K(I,1)=12 or K(I,1)=11 to indicate that they have decayed, and K(I,4) and K(I,5) will point to the first and last parton in the cascaded string. The partons in the produced string will be properly encoded for a subsequent call to LUEXEC for fragmentation. In addition K(5,I) will give information about in which order the partons were emitted in the cascade. A gluon produced in emission number NO will have K(I,5)=NO, a recoil gluon from the same emission will have K(I,5)=-NO. If in emission NO a gluon, previously produced in emission NOG, is split into a qq^bar pair, both quarks will have K(I,5)=NOG*1000+NO. 3.4 Parameters and switches The following parameters are used by Ariadne: o PARA(1) (Default value = 0.22 GeV) The lambda_QCD used in the running coupling alpha_s. o PARA(2) (D = 0.2) Value of constant alpha_s for MSTA(12) = 0. o PARA(3) (D = 0.6 GeV) The cut-off in invariant p_T for emissions from colour dipoles. o PARA(4) (D = 1/137) Value of electro-weak coupling constant al- pha_EM used for photon emissions. o PARA(5) (D = 0.6 GeV) The cut-off in invariant p_T for emissions from electro-magnetic dipoles. o PARA(6) (D = -1.0 GeV) If larger than zero this gives the maximum allowed invariant p_T, otherwise the maximum is given by phase space limits. o PARA(7-9) Not used. o PARA(10) (D =1.0) Power in soft suppression - alpha (the dimension- ality of the extended source). o PARA(11) (D = 0.6 GeV) Soft suppression parameter for partons with K(I,4)=1. o PARA(12) (D = 0.6 GeV) Soft suppression parameter for partons with K(I,4)=2. o PARA(13) (D = 0.6 GeV) Soft suppression parameter for partons with K(I,4)=3. o PARA(14-19) Not used. o PARA(20) (D = 0.0) When used together with LEPTO 6.1 - the mini- mum value of p_T^2/Q^2 of a qq^bar pair in a boson-gluon fusion event. If below the event is treated as a sea-quark interaction. o PARA(21-24) Not used. o PARA(25) (D = 0.0) For MSTA(25) > 0 gives the power beta = 1/b in equation ??. o PARA(26-30) Not used. o PARA(31) (D = 25.0 GeV^2) The maximum invariant p_T^2 for cluster- ing three jets into two in ARCLUS. o PARA(32-38) Not used. o PARA(39) (D = 0.001) Tolerance factor for momentum conservation. If any component of the total energy and momentum for a partonic state has changed more than this factor times the total invariant mass of the state during the cascade, a warning is produced. o PARA(40) (D = 10^32) Maximum floating point number allowed by the machine which Ariadne is run on. The following switches are used by Ariadne: o MSTA(1) The mode set by ARINIT for correct treatment of incoming partons. 0 No special treatment. 1 The incoming partons are treated as if produced by JETSET. 2 The incoming partons are treated as if produced by PYTHIA. 3 The incoming partons are treated as if produced by LEPTO. o MSTA(2) Flag set by ARINIT to indicate that initialization has been done. o MSTA(3) (D=1) Setting of parameters in Ariadne, JETSET, PYTHIA and LEPTO to suitable values in ARINIT. 0 Off. 1 On. o MSTA(4) Number of calls to AREXEC so far. o MSTA(5) (D=0) Perform fragmentation at the end of each call to AREXEC. When running with JETSET, LEPTO or PYTHIA, this switch is set by ARINIT to the value of the corresponding switch in these pro- grams. 0 Off. 1 On. o MSTA(6) (D=-1) If larger than zero, sets the maximum number of emissions allowed per string in a AREXEC call. o MSTA(7) (D=6) File number for output from Ariadne. (Is set by ARINIT to the value of MSTU(11) in the /LUDAT1/ common block of JETSET.) o MSTA(8) (D=6) File number for error messages and warnings from Ariadne. o MSTA(9) (D=1) Determines how carefully Ariadne checks momentum conservation etc. 0 No checking of momentum conservation. Only serious errors are reported by Ariadne. 1 Momentum conservation is checked after each call to AREXEC. 2 Momentum conservation is checked after each emission. 3 As for 2 but in addition the current parton state is copied into the /LUJETS/ event record after each emission. o MSTA(10) (D=5) Maximum number of warnings (of each kind) issued by Ariadne. o MSTA(11) (D=0) Phase space restrictions; The maximum p_T^2 of an emission is set to the p_T^2 of the last emission for: 0 all emissions 1 all emissions from colour dipoles 2 only for gluon and photon emissions 3 only for gluon emissions 4 no restriction. o MSTA(12) (D=1) Treatment of alpha_s. 0 Constant alpha_s given by PARA(2). 1 Running alpha_s=12pi/(33-2n_f)ln(p_T^2/lambda^2). o MSTA(13) If non-zero, a warning was issued in the last call to AREXEC or ARCLUS. (See description of subroutine ARERRM in appendix B) o MSTA(14) (D=1) Setting of the maximum invariant p_T^2 to the mini- mum p_T^2 of all incoming gluons in a string. 0 Off. 1 On. o MSTA(15) (D=5) Maximum number of flavors allowed in qq^bar emis- sions. o MSTA(16) (D=2) Recoil Strategy: 0 Use equation ?? for all emissions. 1 As 0, but point-like quarks take full recoil. 2 As 1, but also extended quarks takes full recoil if a > 1. o MSTA(17) (D=2) Treatment of recoil gluons: 0 No recoil gluons are emitted. 1 Emit recoil gluon except if other dipole end is a point-like quark for MSTA(16)=1. 2 Emit recoil gluon according to equation ??. o MSTA(18) (D=3) p_T-ordering of recoil gluons: 0 Off. 1 On and require p_T> max(mu,p_Tcut) 2 as 1 but allow p_T< mu 3 as 2 but allow p_T< p_Tcut o MSTA(19) (D=1) Treatment of emissions from heavy quarks. 0 Simple treatment, changing the denominator in equations ??, ?? and ?? to m21- m23 m23- m21 (1 - x1 + _________)(1 - x3 + _________) (1) Sdip Sdip 1 A more elaborate treatment taking into account the "dead-cone" effect in reference [22]. o MSTA(20) (D=0) Electro-magnetic dipole radiation: 0 Off. 1 On. 2 On, but turned off at the first occurrence of qq^bar emission in a string (c.f. section ??). o MSTA(21-23) Not used. o MSTA(24) (D=2) Quark masses to be used in qq^bar emissions 0 as specified in PQMAS(1-8) in /ARDAT2/. 1 "bare" quark masses as specified in PMAS(1-8) in /LUDAT2/. 2 "constituent" quark masses as specified in PARF (101 - 108) in /LUDAT2/. o MSTA(25) (D=0) Phase space treatment for extended dipoles 0 using a restricted phase space according to equation ??. 1 using full phase space with suppression according to equation ??. 2 as 1 but with p_T^2 defined as (1 - x1)(1 - x3) Sdip_______________ (2) 1 - x2 o MSTA(26-29) Not used. o MSTA(30) (D=1) Options when running with LEPTO 0 Struck quark point-like, remnant extended with mu=PARA(11). 1 Struck quark point-like, remnant extended with mu=PARA(11)/(1- x). 2 as 1, but also struck quark extended with mu= Q. o MSTA(31) (D=1) Treatment of masses of extended partons 0 Make extended partons mass-less (for compatibility with previous versions). 1 Extended partons allowed to be massive. o MSTA(32-40) Not used. 4 Sample Programs The easiest way to learn how to use Ariadne is of course by looking at examples. In the following three sample programs are given illustrating how to use Ariadne together with the JETSET, LEPTO and PYTHIA programs. For simplicity they are all assuming that the user have supplied routines for setting parameters and switches and for analyzing the produced events. The general strategy is to first set all parameters and switches in Ariadne and the program it is running with and then initialize Ariadne with ARINIT before initializing the other program. In this way Ariadne can set up the other program so that after it has generated an event the dipole shower can be applied with a simple call to AREXEC. This of course is relying on that the user doesn't change any parameters and switches in the other program which influence the way its events are produced, after the call to ARINIT. Note that these sample programs are included in the distribution as described in appendix A.3. 4.1 Generating LEP events with JETSET PROGRAM LEP C...Call a user supplied routine setting C...the parameters and switches in JETSET CALL SETJET C...Call a user supplied routine setting C...the parameters and switches in Ariadne CALL ARISET C...Initialize Ariadne to run with JETSET CALL ARINIT('JETSET') C...Loop over a number of events DO 100 IEVE=1,10000 C...Generate an LEP event with JETSET CALL LUEEVT(0,91.0) C...Apply the Dipole Cascade CALL AREXEC C...Call a user supplied analysis routine CALL LEPANA 100 CONTINUE END In the call to ARINIT the parton evolution is completely switched off in JETSET and so is the fragmentation. If fragmentation previously was switched on in JETSET it will instead be switched on in Ariadne so that AREXEC will end with a call to LUEXEC. Note that by commenting out the calls to ARINIT and AREXEC, this pro- gram will produce events with JETSET as set up in SETJET. 4.2 Generating HERA events with LEPTO PROGRAM HERA C...Call a user supplied routine setting C...the parameters and switches in LEPTO CALL LEPSET C...Call a user supplied routine setting C...the parameters and switches in Ariadne CALL ARISET C...Initialize Ariadne to run with LEPTO CALL ARINIT('LEPTO') C...Initialize LEPTO for HERA CALL LINIT(0,11,30.0,-820.0,4) C...Loop over a number of events DO 100 IEVE=1,10000 C...Call generate an event with LEPTO CALL LEPTO C...Apply the Dipole Cascade CALL AREXEC C...Call a user supplied analysis routine CALL HERANA 100 CONTINUE END The comments made for the JETSET case also applies here. 4.3 Generating LHC events with PYTHIA PROGRAM LHC C...Call a user supplied routine setting C...the parameters and switches in PYTHIA CALL PYTSET C...Call a user supplied routine setting C...the parameters and switches in Ariadne CALL ARISET C...Initialize Ariadne to run with PYTHIA CALL ARINIT('PYTHIA') C...Initialize PYTHIA for LHC CALL PYINIT('CMS','p+','p+',17000.0) C...Loop over a number of events DO 100 IEVE=1,10000 C...Call generate an event with PYTHIA CALL PYEVNT C...Apply the Dipole Cascade CALL AREXEC C...Call a user supplied analysis routine CALL LHCANA 100 CONTINUE END Again the comments in the JETSET case also applies here. Note however that Ariadne presently only can handle a small subset of the sub-processes available in PYTHIA, and attempts to use Ariadne for other sub-processes will result in a warning from Ariadne. References [1]L. L"onnblad, Comp. Phys. Comm. 71 (1992) 15. [2]G. Gustafson, Phys. Lett. B175 (1986) 453, G. Gustafson, U. Pettersson, Nucl. Phys. B306 (1988) 746. [3]B. Andersson, G. Gustafson, L. L"onnblad, U. Pettersson, Z. Phys. C43 (1989) 621. [4]B. Andersson, G. Gustafson, L. L"onnblad, Nucl. Phys. B339 (1990) 393. [5]OPAL collaboration, M.Z. Akrawy et. al., Phys. Lett. B246 (1990) 285. [6]N. Magnussen, "Generators for Deep Inelastic Scattering", Talk pre- sented at the "Physics at HERA" workshop, Hamburg, October 1991, to be published in the proceedings. [7]T. Sj"ostrand, JETSET 7.3 program and manual see e.g. B. Bambah et. al., QCD Generators for LEP, CERN-TH.5466/89, T. Sj"ostrand, Computer Phys. Comm. 39 (1986) 347; T. Sj"ostrand and M. Bengtsson, Computer Phys. Comm. 43 (1987) 367. [8]G. Ingelman, LEPTO 6.1 Program and Manual, Private communica- tion, to be published. [9]H-U. Bengtsson and T. Sj"ostrand, PYTHIA 5.5 Program and Manual, H-U. Bengtsson and T. Sj"ostrand, Comp. Phys. Comm. 46 (1987) 43 [10]U. Pettersson, "ARIADNE - A Monte Carlo for QCD Cascades in the Colour Dipole Formulation", Lund Preprint LU-TP 88-5 (1988). [11]L. L"onnblad, U. Pettersson, "ARIADNE 2", Lund Preprint LU-TP 88- 15 (1988). [12]L. L"onnblad, "ARIADNE 3", Lund Preprint LU TP 89-10 (1989). [13]R. Kleiss, Phys. Lett. 180B (1986) 400 [14]B. Andersson, L. L"onnblad, "The Dipole Model Structure Functions", Lund Preprint 92-21 and DESY 92-098. [15]L. L"onnblad, "Photon Radiation in the Dipole Model and in the Ariadne Program", Preprint DESY 92-032, to be published in the proceedings of the "Workshop on Photon Radiation from Quarks", Annecy, France, December 1991. [16]UA1 collaboration, G. Arnison et. al., Lett. Nuovo Cimento 44 (1985) 1. UA2 collaboration, J.A. Appel et. al.,Z. Phys. C30 (1986) 1 [17]G. Cowan, private communication. [18]W. de Boer, H. Fuerstenau, "DELPHI data in comparison with QCD models...", IEKA-KA/91-07, July 1991. [19]L. L"onnblad, "ARCLUS - A new jet clustering algorithm inspired by the Colour Dipole Model", DESY 92-181 (submitted to Z. Phys. C). [20]B. Andersson and G. Gustafson, Z. Phys. C3 (1980) 223; B. Andersson, G. Gustafson, G. Ingelman, T. Sj"ostrand, Phys. Rep. 97 (1983) 31. [21]JADE Collaboration, W. Bartel et. al., Z. Phys. C33 (1986) 23, S. Bethke, Habilitation thesis, LBL 50-208 (1987) [22]Yu.L. Dokshitzer, V.A. Khoze, S.I. Troyan, Proc. 6th Int. Conf. on Physics in Collision, ed. M. Derrick (World Scientific, Singapore, 1987). A Appendix: Technical Information The Ariadne program is written according to the FORTRAN 77 standard and should work on any platform with a FORTRAN 77 compiler. To avoid name clashes when run together with other programs, all exter- nal names in Ariadne begins with the two character AR. All internal identi- fiers conforms to the standard FORTRAN 77 implicit declarations except for double precision and logical variables which are declared in all subroutines as IMPLICIT DOUBLE PRECISION (D) IMPLICIT LOGICAL (Q) Ariadne performs a large amount of boost to and from the center of mass frames of the radiating dipoles which may give rise to precision problem when the program is used for simulations at very high energies. To avoid these Ariadne has an additional declaration of double precision variables IMPLICIT DOUBLE PRECISION (B) On some machines double precision arithmetic is much slower than single precision, and if you feel that speed is more important than precision this latter double precision declaration may be commented out (in every routine). Note that possible warnings about non-conservation of four-momentum may be avoided by adjusting MSTA(9) and PARA(39) (see section 3.4). The internal event record of Ariadne has a maximum number of partons, dipoles and strings which it can handle. These number are defined in the parameter statement in each routine and are by default set to: PARAMETER(MAXDIP=500,MAXPAR=500,MAXSTR=100) These limits can of course be changed by the user, but it should be noted that generation of more than 500 partons in Ariadne most probably is an indication that an error has occurred. Ariadne contains a block data routine ARDATA for setting the default values of the parameters and switches used. When compiling Ariadne in separate modules, this block data routine should be compiled in the same module as ARINIT. Otherwise, since ARDATA is never actually referenced, it will not be linked and Ariadne will not be properly initialized. Ariadne has to be loaded together with version 7.1 or later of the JET- SET program. In addition when run in 'LEPTO' mode it should be loaded together with version 6.1 or later of the LEPTO program and when run in 'PYTHIA' mode together with version 5.3 or later of the PYTHIA program. A.1 Availability The program is available on E-mail request from the author (lonnblad@- ips102.desy.de). The program will then be sent as an E-mail message containing the latest revision of the code together with the latest revision of this manual in LaTEX format. The program is also available via anonymous ftp to thep.lu.se (IP num- ber 130.235.92.57). Here the program resides in the directory pub/LundPrograms as the compressed tar-archive file ariadne-4.04.tar.Z (Forthcoming revi- sions will be numbered 4.05, 4.06 etc.). The same distribution is also avail- able by anonymous ftp to freehep.scri.fsu.edu in the directory freehep/event_ge* *nerators/ariadne. A.2 Installation If the program has been obtained through E-mail correspondence it should simply be extracted into a file and be compiled. To install the program obtained via anonymous ftp, the compressed tar- file should be "un-compressed" and "un-tarred" which will create a directory called ariadne-4.04. This directory will contain, besides the actual code, a file called README containing all instructions needed to install the pro- gram. In addition there will be the files ariadne.tex, ariadne.man and ariadne.ps containing the latest revision of this manual in LaTEX, ASCII and Postscript format respectively. A.3 Test Programs Ariadne contains a subroutine called ARTEST intended to be used for con- firming that the installation has been successful. To use it, write a small program calling the routine (this program is included in the tar-distribution as the file atest.f): PROGRAM TEST CALL ARTEST(0) END When run, ARTEST will generate 10000 events randomly distributed in center of mass energy and check their consistency w.r.t. momentum conser- vation and colour flow. If Ariadne was successfully installed, a message No errors experienced by Ariadne. will be printed. If anything else is printed, such as 2 errors occurred in Ariadne. please consult the author. In the tar-distribution the sample programs described in section 4 are also included as the files jtest.f, ltest.f and ptest.f including dummy routines for parameter settings and analysis. B Appendix: Description of Subroutines and Com- mon Blocks This is a complete list of the subroutines in Ariadne. o SUBROUTINE ARRADG(ID) Administers the emission of a gluon from dipole ID. o REAL FUNCTION ARANGL(I1,I2) Returns the angle between partons I1 and I2 in radians. o SUBROUTINE ARBOCM(ID) Boosts the partons in dipole ID to their center of mass frame. o SUBROUTINE ARCASC Contains the main loop over dipole emissions. o SUBROUTINE ARCHEM(IMOD) Checks that energy and momentum is conserved in Ariadne. o SUBROUTINE ARCHKI(ID) Checks that the emission generated for dipole ID is kinematically al- lowed. o SUBROUTINE ARCLUS(NJET) Jet-clustering routine implementing the "inverse dipole radiation" al- gorithm. o SUBROUTINE ARCOPA(IJ,IP,ITYP) Copies a parton from position IJ in /LUJETS/ to position IP in /ARPART/. o SUBROUTINE ARCOPJ Copies particles to be considered jet-initiators to the end of /LUJETS/. o SUBROUTINE ARCRDI(ID,IPA1,IPA3,IS,QED) Creates a dipole entry in ID /ARDIPS/ from the partons at position IPA1 and IPA3 in /ARPART/. o SUBROUTINE ARDUMP Copies a partonic state from the internal event record to /LUJETS/. o SUBROUTINE ARDUPH Copies a photon radiated by Ariadne to /LUJETS/. o SUBROUTINE AREMIT Administers the actual emission from dipole ID. o SUBROUTINE ARERRM Prints out an error message and optionally stops the execution. If the execution is allowed to continue the value of MSTA(13) will be set to a value corresponding to the warning produced: 3 /LUJETS/ event record was not properly formatted. 9 Total four-momentum was not conserved in Ariadne. 10 A particle was found to have inconsistent four-momentum. 13 A dipole was found to have inconsistent invariant mass. 20 Selected sub-process in PYTHIA is not supported by Ariadne. 21 ARCLUS was not performed due to too many jet-initiators. o SUBROUTINE AREXEC This is the main routine in Ariadne. Given a partonic state in /LUJETS/ it administers the dipole radiation according to the options and pa- rameters set in /ARDAT1/. o SUBROUTINE AREXMA(I1,I3) Makes partons I1 and I3 mass-less if extended. o REAL FUNCTION ARGPT2(ID) Returns the generated p_T^2 for a possible emission from dipole ID. If necessary it calls the relevant procedure to generate this p_T^2. o SUBROUTINE ARGQCD(ID) Calculates the p_T^2 of a possible emission from the colour dipole ID. o SUBROUTINE ARGQED(ID) Calculates the p_T^2 of a possible emission from the electro-magnetic dipole ID. o SUBROUTINE ARGTYP(I,ITYP) Determines the colour state of a particle in /LUJETS/. o SUBROUTINE ARINIT(MODE) Initializes the Ariadne program. The argument is a character string indicating which program Ariadne is used with; 'JETSET', 'LEPTO', 'PYTHIA' or by itself - 'ARIADNE'. o REAL FUNCTION ARIPT2(I1,I2,I3) Returns the invariant p_T^2 of parton I2 w.r.t. the partons I1 and I3. o SUBROUTINE ARJOIN(J1,J2,J3) Clusters the three jet-entries J1, J2 and J3 in /LUJETS/ into two according to a "reversed" dipole emission scenario. o SUBROUTINE ARMADE Determined some mass-dependent factors for use in the veto-algorithm. o REAL FUNCTION ARMASS(N,I) Returns the square of the invariant mass of the N partons pointed to in the vector I(N). o SUBROUTINE ARMCDI(ARRNDX,ARRNDY,ARVETO) Implements the veto-algorithm for generating a p_T^2 for any dipole given the functions ARRNDX, ARRNDY and ARVETO. o REAL FUNCTION ARMIPT(IF,IL) Returns the minimum invariant p_T^2 of the partons between positions IF and IL in /ARPART/. o REAL FUNCTION ARNOFL(W,MNOFW) Returns the number of flavors to be used to calculate alpha_s at a scale W. o SUBROUTINE ARORDJ Orders the jet entries in /LUJETS/ according to their energy. o SUBROUTINE ARORIE(I1,I2,I3, BS,B1,B3,QR1,QR3,PT21,PT23) Orients the partons I1, I2 and I3 in their center of mass frame, given their energy fractions and their total invariant mass. o SUBROUTINE ARPARS(NSTART,NEND) Parses the /LUJETS/ common block between positions NSTART and NEND, copying partons to be cascaded into the internal event record. o SUBROUTINE ARPRDA Prints out the values of the parameters and switches used by Ariadne. o SUBROUTINE ARRADG(ID,NREM,SNR) Performs the emission of a gluon from dipole ID. o SUBROUTINE ARRADP(ID) Performs the emission of a photon from dipole ID. o SUBROUTINE ARRADQ(ID) Performs the splitting of a gluon into a qq^bar pair in dipole ID. o SUBROUTINE ARRECA(ID,IDS,IS1,IS3) Recalls a full dipole entry to the internal event record, previously stored away by ARSTOR. o REAL FUNCTION ARNDX1(), ARNDX2() etc. Different functions for generating a p_T^2 according to a Sudakov- suppressed suppression, to be used by ARMCDI. o REAL FUNCTION ARNDY1(), ARNDY2() etc. Different functions for generating a rapidity according to a flat distri- bution, to be used by ARMCDI. o SUBROUTINE ARROBO(THE,PHI, DBEX,DBEY,DBEZ,N,I) Rotates and boost the N partons pointed to by the vector I(N). The polar rotation is performed first (THE) followed by the azimuth rotation (PHI) and the boost. o SUBROUTINE ARSPLG(IG,IFLAV) Splits the gluon entry IG into a quark and an anti-quark entry with flavors determined by IFLAV. o SUBROUTINE ARSTOR(ID,IDS,IS1,IS3) Stores away a full dipole entry in the internal event record for later use. o SUBROUTINE ARTEST(IPRINT) A test program to check that Ariadne has been installed properly, disguised as a subroutine. o SUBROUTINE ARTUNE(SET) Sets the parameters in Ariadne as described in section 3.1. o SUBROUTINE ARUPDJ(I2,I1,I3) Calculates the minimum invariant p_T^2 of a jet entry in /LUJETS/ with respect to any other pair of jet-entries. o REAL FUNCTION ARVET1(), ARVET2() etc. Different routines for calculating the veto factor to be used by ARMCDI. The following common blocks are used in Ariadne: COMMON /ARDAT1/ PARA(40),MSTA(40) The parameters and switches used in Ariadne as explained in section 3.4. COMMON /ARDAT2/ PQMAS(10) The quark masses used in Ariadne as described in section 3.3. COMMON /ARDAT3/ IWRN(40) The number of errors and warnings of each kind experienced by Ariadne. COMMON /ARPART/ BP(MAXPAR,5),IFL(MAXPAR),IEX(MAXPAR), $ QQ(MAXPAR),IDI(MAXPAR),IDO(MAXPAR), $ INO(MAXPAR),IPART The internal representation of partons in Ariadne: o BP(I,1) x-component of the momentum of parton I. o BP(I,2) y-component of the momentum of parton I. o BP(I,3) z-component of the momentum of parton I. o BP(I,4) energy of parton I. o BP(I,5) mass of parton I. o IFL(I) flavor code of parton I. o IEX(I) indicates if parton I is to be considered extended. o QQ(I) is .TRUE. if parton I is in a colour-3 or 3^bar state. o IDI(I) position of "incoming" dipole in /ARDIPS/. o IDO(I) position of "outgoing" dipole in /ARDIPS/. o INO(I) The number of the emission in which parton I was produced. o IPART The number of partons presently in /ARPART/. COMMON /ARDIPS/ BX1(MAXDIP),BX3(MAXDIP), $ PT2IN(MAXDIP),SDIP(MAXDIP),IP1(MAXDIP), $ IP3(MAXDIP),AEX1(MAXDIP),AEX3(MAXDIP), $ QDONE(MAXDIP),QEM(MAXDIP),IRAD(MAXDIP), $ ISTR(MAXDIP),IDIPS The internal representation of dipoles in Ariadne. o BX1(ID) value of x1 generated for dipole ID. o BX3(ID) value of x3 generated for dipole ID. o PT2IN(ID) invariant p_T^2 generated for dipole ID. o SDIP(ID) invariant mass squared of dipole ID. o IP1(ID) position of parton 1 in /ARPART/. o IP3(ID) position of parton 3 in /ARPART/. o AEX1(ID) value of a=(mu/p_T)^alpha for parton 1. o AEX3(ID) value of a=(mu/p_T)^alpha for parton 3. o QDONE(ID) is .TRUE. if a p_Thas been generated for dipole ID. o QEM(ID) is .TRUE. if ID corresponds to an EM-dipole. o IRAD(ID) the type of emission generated for dipole ID. 0: gluon radi- ation (or photon radiation for EM dipole). (-)n: qq^bar radiation of flavor n splitting gluon 1 (3). o ISTR(ID) The string entry in common block /ARSTRS/ to which dipole ID belongs. o IDIPS The number of dipoles currently in /ARDIPS/. COMMON /ARSTRS/ IPF(MAXSTR),IPL(MAXSTR), $ IFLOW(MAXSTR),PT2LST,IMF,IML,IO,QDUMP,ISTRS The internal representation of strings in Ariadne o IPF(IS) position of the first parton in /ARPART/. o IPL(IS) position of the last parton in /ARPART/. o IFLOW(IS) the direction of colour flow in string IS. A positive value corresponds to IPF(ID) being a colour-3 parton. o PT2LST p_T^2 of the last emission in Ariadne o IMF The position of the first parton in the parent string in /LUJETS/. o IML The position of the first parton in the parent string in /LUJETS/. o IO The number of emissions performed for the parent string. o QDUMP is .TRUE. if current event information has been copied into the /LUJETS/ common block. o ISTRS The number of strings currently in /ARSTRS/. COMMON /ARINT1/ BC1,BC3,BZM,BZP,BP1,BM1,BP3,BM3, $ B1,B2,B3,XT2,XT,Y,QQ1,QQ3,NE1,NE3, $ S,W,C,CN,ALPHA0,XLAM2,IFLG, $ XT2MP,XT2ME,XT2M,XT2C,XTS,XT3,XT1, $ YINT,YMAX,YMIN, $ Y1,Y2,Y3,SY1,SY2,SY3,SSY, $ AE1,AE3,NXP1,NXP3,FQ1,FQ3 The common variables needed for the veto-algorithm in subroutine ARMCDI. COMMON /ARINT2/ DBEX,DBEY,DBEZ,PHI,THE Information of the boost vector and rotation angles for transformation of the radiating dipole back to the original Lorenz-frame. COMMON /ARINT3/ DPTOT(5) The total energy and momentum of the parton state being considered by Ariadne. 1