SHORT USER MANUAL FOR THE MONTE CARLO GENERATOR RIDI 2.0 ************************************************************************* * * RIDI: A Monte Carlo generator for inelastic diffraction * dissociation of virtual photon in ep scattering, based * on a model by M. Ryskin. * Transverse and longitudinal cross sections are simulated. * Processes implemented: ep -> epX with X = q+qbar * or X = q+qbar+gluon * Fragmentation and parton shower done with JETSET. * * Author: Ada Solano * University of Torino & INFN, * Via P.Giuria 1, I-10125 Torino. * e-mail: solano@to.infn.it; solano@desy.de * ************************************************************************* 20/7/97: Release of RIDI 1.0 20/6/98: Release of RIDI 2.0 Simulation of QED radiative corrections added ************************************************************************* References: M.G. Ryskin, {\it Sov. J. Nucl. Phys.} {\bf 52} (1990) 529; M.G. Ryskin, M. Besancon, Proceedings of the Workshop `Physics at HERA', DESY, 29-30 October 1991, Edited by W. Buchm\"{u}ller and G. Ingelman, p.~215; M.G. Ryskin, S.Yu. Sivoklokov, A. Solano, Proceedings of the International Conference (5th ``Blois" Workshop) on Elastic and Diffractive Scattering, Ed. H.M. Fried, K. Kang and C-I. Tan, World Scientific, Singapore (1993); E.M. Levin {\it et al.}, hep-ph 9606443; E.M. Levin and M. W\"usthoff, {\it Phys. Rev.} {\bf D 50} (1994) 4306; M.G. Ryskin and A. Solano, paper in preparation. for JETSET: T. Sj\"{o}strand, {\it Comp. Phys. Comm.} {\bf 82} (1994) 74. ************************************************************************* Files needed to run the generator: +) ridi20.f Source code for RIDI 2.0 +) ridimain.f Steering program: main program + user routines +) rboost.inc Commons, included with the INCLUDE statement ridseq.inc ridkin.inc +) ridi.cards Cards (input file on unit 7) +) ridi.rnd Random number file (input file on unit 10) +) ridi.unix Example script for compiling and running Use option l to compile: ridi.unix l ************************************************************************* Description of the cards: * * ---------------- * RIDI cards * ---------------- * C C ------------------ Cards valid from version 2.0 -------------------- C C ** Radiative corrections: TRUE = yes C default = FALSE C RADCOR TRUE C C ** Minimum energy of the radiated photon in case of radiative events C (it should be >0) C default = 0.03 GeV C EPHMIN 0.03 C C ** Minimum angle of the radiated photon w.r.t. the incoming lepton C (FSR events only; it should be >0) C default = 0.0001 radiant C THPHMN 0.0001 C C ** Charm flavour only: TRUE = yes C default = FALSE C ONLYCH FALSE C C C ------------------ Cards valid from version 1.0 -------------------- C C ** Generation with weitghs: TRUE = yes C default = FALSE C WEIGHT FALSE C C ** q-qbar and/or q-qbar-gluon final state: TRUE = yes C default = TRUE C QQBAR TRUE QQBARG TRUE C C ** Transverse and/or longitudinal cross section: TRUE = yes C default = TRUE C TRANSV TRUE LONGIT TRUE C C ** Light flavours only: TRUE = yes C default = FALSE C LIGHTF FALSE C C ** High k_t only (q-qbar final state): TRUE = yes C default = FALSE C (change it only if you really know what you are doing!) C THLIM FALSE C C ** Fragmentation: TRUE = yes C default = TRUE C FRAGM TRUE C C ** Enlarged output with check variables: TRUE = yes C default = FALSE C CHECK FALSE C C ** User output: TRUE = yes C default = FALSE C USER FALSE C C ** Number of final events C default = 10000 C NEVENT 10000 C C ** Number of events to be used for the cross section determination C (for generation of unweighted events only) C default = 1000 C NEVWEI 1000 C C ** Number of events to be printed C default = 0 C NEVPRI 10 C C ** K-factor choice: 0 = constant k-factors C 1 = exp[alphas(MX^2)*pi*C_F(A)] C 2 = exp[alphas(MX^2/4)*pi*C_F(A)] C 3 = (1.+alphas(MX^2/4)*pi*C_F(A)/2.)**2 C default = 1 (change it only if you really know what you are doing!) C IKFACT 1 C C ** If IKFACT = 0 choose values of the constant K-factors: C first value for the q-qbar cross section C second value for the q-qbar-gluon cross section C default = 2.1 C 4. C (change it only if you really know what you are doing!) C KFS 2.1 4. C C ** w_g=(1-z')^3*(2z'+1)^2 with z'=x_Bj/((ex_Bj/x_gluon)*xpom) C takes into account a more precise form of the triple pomeron vertex C at not too small values of z' (Levin&Wusthoff 1994) C 0 = w_g NOT in the cross section evaluation C 1 = w_g in the cross section evaluation C default = 1 (change it only if you really know what you are doing!) C IWG 1 C C ** Type of parton shower for the q-qbar-gluon final state: C 0 = parton shower only for the q-qbar system :qmax=sqrt(m_f^2+p_t^2) C 1 = parton shower separately for the gluon jet | C (qmax=sqrt(m_g^2+k_t^2)) and the q-qbar system <-| C default = 1 (change it only if you really know what you are doing!) C IPSTYP 1 C C ** Lepton choice: 1=positron; -1=electron C default = 1 C LFLAG 1 C C ** EBEAM: Lepton beam momentum (positive!) C default = 27.5 C EBEAM 27.5 C C ** PBEAM: Proton beam momentum (positive!) C default = 820. C PBEAM 820. C C ** Kinematical limits on variables: default values set to the limits. C C .. Maximum x_Bjorken for diffractive events C xbjddc < 0.1 in HERA kinematics: xbjddc < xpom_max C XBJDDC 0.05 C C .. Q^2 , -(invariant mass of the virtual exchanged photon) C allowed range: 0.1 < qsqlim(1) < qsqlim(2) < 10000. GeV^2 C (note that for values of Q^2<2 GeV^2 results may be effected C by large correction factors) C Q2LIM 6. 80. C C .. t=(p-p')^2 , NEGATIVE invariant mass of the pomeron C allowed range: -1. < tlim(1) < tlim(2) < -0.00001 GeV^2 C TLIM -1. -0.00001 C C .. Mx^2 , invariant mass squared of the gamma-pomeron system C allowed range: 3. < mx2lim(1) < mx2lim(2) < 10000. GeV^2 C MX2LIM 9. 225. C C .. x_pom , fraction of the pomeron momentum w.r.t. the proton one C allowed range: 0.00001 < xpomlim(1) < xpomlim(2) < 0.1 C XPOLIM 0.0001 0.01 C C .. k'_t^2 , transverse momentum of the hard gluon inside the pomeron C (for q-qbar-gluon final states only) C it should be k'_t^2 > 0.001 C default range: 0.001 < kt2lim(1) < kt2lim(2) < 100. GeV^2 C (change it only if you really know what you are doing!) C KT2LIM 0.001 100. C C ** Slope of the p_t^2 distribution of the scattered proton C default = 6. GeV^-2 C BSLOPE 6. C C ** Charm mass C default = 1.35 GeV (it should be chmass e+p+2jets) 2.204052 +/- 0.4509797 nb * SIG_T(e+p -> e+p+2jets) 2.139479 +/- 0.4397790 nb * SIG_L(e+p -> e+p+2jets) 9.6216008E-02+/- 3.5915438E-02 nb * * SIG_BORN(e+p -> e+p+2jets) 1.171819 +/- 0.3603475 nb * SIG_ISR(e+p -> e+p+2jets) 0.7848675 +/- 0.2568210 nb * SIG_ABS(e+p -> e+p+2jets) 8.4544480E-02+/- 4.4022594E-02 nb * SIG_FSR(e+p -> e+p+2jets) 0.1628209 +/- 7.5082004E-02 nb * * SIG(gamma*+p -> p+2jets) 146.1547 +/- 31.59697 nb * SIG_T(gamma*+p -> p+2jets) 140.9071 +/- 30.67473 nb * SIG_L(gamma*+p -> p+2jets) 8.744013 +/- 4.253737 nb * *********************************************************************** * * STATISTICS OF Q-QBAR-GLUON EVENTS * * Number of final events 906 * Number of skipped events 174 * * * CROSS SECTIONS FOR THE Q-QBAR-GLUON DIAGRAM * * SIG(e+p -> e+p+3jets) 20.96934 +/- 2.530805 nb * SIG_T(e+p -> e+p+3jets) 18.80761 +/- 2.268202 nb * SIG_L(e+p -> e+p+3jets) 2.733941 +/- 0.3280143 nb * * SIG_BORN(e+p -> e+p+3jets) 11.16489 +/- 1.741909 nb * SIG_ISR(e+p -> e+p+3jets) 3.973600 +/- 0.9075845 nb * SIG_ABS(e+p -> e+p+3jets) 1.428333 +/- 0.8274401 nb * SIG_FSR(e+p -> e+p+3jets) 4.402531 +/- 1.364687 nb * * SIG(gamma*+p -> p+3jets) 4798.557 +/- 576.7850 nb * SIG_T(gamma*+p -> p+3jets) 4395.343 +/- 530.1185 nb * SIG_L(gamma*+p -> p+3jets) 618.1134 +/- 77.78971 nb * *********************************************************************** * * NUMBER OF FINAL EVENTS: 1000 * * TOTAL CROSS SECTION WITHIN THE CUTS: * * SIG(e+p -> e+p+X) 23.17339 +/- 2.570673 nb * SIG_T(e+p -> e+p+X) 20.94708 +/- 2.310443 nb * SIG_L(e+p -> e+p+X) 2.830157 +/- 0.3299747 nb * * SIG_BORN(e+p -> e+p+X) 12.33671 +/- 1.778791 nb * SIG_ISR(e+p -> e+p+X) 4.758468 +/- 0.9432214 nb * SIG_ABS(e+p -> e+p+X) 1.512878 +/- 0.8286104 nb * SIG_FSR(e+p -> e+p+X) 4.565352 +/- 1.366751 nb * * *********************************************************************** *********************************************************************** ************************************************************************* Initial and final state particles: Hadronization and fragmentation are done with JETSET7.4 Initial state particles are included in the COMMON/LUJETS/ following this scheme: define variable IRAD: if(.not.radcor) then * QED radiation not requested for the run (card RADCOR = FALSE) IRAD = 0 elseif(radcor_i.and.(.not.radcor_a)) then * Event with initial state radiation IRAD = 1 elseif(radcor_a) then * Event with vertex correction IRAD = 3 elseif(radcor_f) then * Event with final state radiation IRAD = 2 else * Event with no QED radiation IRAD = 0 endif IRAD = 0 or 3: Id = 1 : incoming lepton 2 : incoming proton 3 : scattered lepton 4 : scattered proton 5 : quark 6 : antiquark 7 : gluon for q-qbar-gluon events or first line of fragmentation for q-qbar events IRAD = 1: Id = 1 : incoming lepton 2 : incoming proton 3 : radiated photon 4 : virtual incoming lepton after initial state radiation 5 : scattered lepton 6 : scattered proton 7 : quark 8 : antiquark 9 : gluon for q-qbar-gluon events or first line of fragmentation for q-qbar events IRAD = 2: Id = 1 : incoming lepton 2 : incoming proton 3 : virtual scattered lepton before final state radiation 4 : radiated photon 5 : final scattered lepton 6 : scattered proton 7 : quark 8 : antiquark 9 : gluon for q-qbar-gluon events or first line of fragmentation for q-qbar events ************************************************************************* User routines: Three user routines are called if card USER = TRUE: +) SUBROUTINE USERINI, called once in the initialization phase (for analysis initialization, histogram and ntuple booking). +) SUBROUTINE USEREVT, called at the end of every event generation (for the event analysis, histogram and ntuple filling). +) SUBROUTINE USEROUT, called once at the end of the run (output of run informations, histograms and ntuples). User routines are in ridimain.f. Example routines are provided in the default file in this directory. ************************************************************************* Common files: +) ridseq.inc: in general commons in this file contain variables concerning the all run (configuration, kinematical cuts, cross sections, etc..) and the event type. +) ridkin.inc: in general commons in this file contain variables describing the kinematics of the current event. +) rboost.inc: common with boost variables, for internal use only. ************************************************************************* Variable description: +) In ridseq.inc: - Run configuration and kinematical cuts (see cards for variable description): wei = .true./.false. if card WEI is TRUE/FALSE duejet = .true./.false. if card QQBAR is TRUE/FALSE trejet = .true./.false. if card QQBARG is TRUE/FALSE transv = .true./.false. if card TRANSV is TRUE/FALSE longit = .true./.false. if card LONGIT is TRUE/FALSE radcor = .true./.false. if card RADCOR is TRUE/FALSE fragm = .true./.false. if card FRAGM is TRUE/FALSE user = .true./.false. if card USER is TRUE/FALSE checkout = .true./.false. if card CHECK is TRUE/FALSE onlych = .true./.false. if card ONLYCH is TRUE/FALSE lightf = .true./.false. if card LIGHTF is TRUE/FALSE thlim = .true./.false. if card THLIM is TRUE/FALSE nevent according to card NEVENT nevpri NEVPRI nevwei NEVWEI lflag LFLAG ebeam EBEAM pbeam PEBAM xbjddc XBJDDC qsqc(1:2) Q2LIM tcuts(1:2) TLIM amx2c(1:2) MX2LIM xpomc(1:2) XPOLIM akt2c(1:2) KT2LIM bslope BSLOPE ephmin EPHMIN thphmn THPHMN akt2cut KT2IC alpscut ALPSC ikfact IKFACT fks(1:2) KFS ips IPSTYP iwg IWG igluon IGLUON gpar(1:4) GPAR gval(1:2) GVAL gsfk02 GSFK02 - Constants and vectors: amg[sq] gluon mass [squared] (according to card GMASS) amp[sq] proton mass [squared] ame[sq] electron mass [squared] pi pigrec value alpha[2] = 1./134.5, alpha_em at about Q^2=10 GeV^2 [squared] effmas(4) current masses (down, up, strange, charm) values of down, up and strange according to JETSET charm mass according to card CHMASS vcuts(1:12) final kinematical cuts after initialization: vcuts(1) = xbjmin vcuts(2) = xbjmax vcuts(3) = qsqc(1) vcuts(4) = qsqc(2) vcuts(5) = tmin vcuts(6) = tmax vcuts(7) = amx2c(1) vcuts(8) = amx2c(2) vcuts(9) = xpomc(1) vcuts(10)= xpomc(2) if(trejet) then vcuts(11)= AKT2C(1) vcuts(12)= AKT2C(2) endif Particle vectors have components Vector (5) = ( p_x, p_y, p_z, energy, mass**2 ) eb_i(1:5) initial lepton vector pb(1:5) initial proton vector stot(1:5) stot = (eb_i + pb) - Event variables: ievent current event number iqqbar 1/0 according to the current event type q-qbar/q-qbar-gluon fk_2/3 K-factor for the current event: fk_2 if q-qbar fk_3 if q-qbar-gluon radcor_i = .true./.false. if event with initial state radiation radcor_f = .true./.false. if event with final state radiation radcor_a = .true./.false. if event with vertex correction iseed last random number seed for this event - Cross sections: twojets fraction of q-qbar/q-qbar-gluon events nevent2 number of final q-qbar events nevent3 q-qbar-gluon itoteve2 number of total q-qbar generated events itoteve3 q-qbar-gluon (different from nevent2/3 if events are generated without weight) nmass number of skipped q-qbar events nskip q-qbar-gluon (because of kinematics) weimax2 maximum weight for q-qbar events weimax3 q-qbar-gluon (for events generated without weight) tcs2(1) total ep cross section for q-qbar events tcs3(1) q-qbar-gluon tcse2(1) error on the total ep cross section tcse3(1) tcst2(1) transverse ep cross section tcst3(1) tcste2(1) error tcste3(1) tcsl2(1) longitudinal ep cross section tcsl3(1) tcsle2(1) error tcsle3(1) tcsb2 ep cross section for events with no QED radiation tcsb3 tcsbe2 error tcsbe3 tcsi2 ep cross section for events with initial state radiation tcsi3 tcsie2 error tcsie3 tcsf2 ep cross section for events with final state radiation tcsf3 tcsfe2 error tcsfe3 tcsa2 ep cross section for events with vertex correction tcsa3 tcsae2 error tcsae3 +) In ridkin.inc: - Event variables: iflav flavour of the q-qbar pair weight weight xbj x_Bjorken qsq Q^2 y y_Bjorken s c.m. energy available for the interaction zph fraction of radiated photon energy w.r.t. the lepton one vu vu = q.p/m_prot wsq W^2 t (p-p')^2, negative amx2 (gamma+pomeron)^2 xpom momentum fraction of the pomeron w.r.t. the proton xl x_L = |p'|/|p|: fraction of momentum carried by the scattered proton pt transverse momentum of the scattered proton thjcm theta of the quark in the q-qbar c.m.s. for q-qbar-gluon event only: akt k_t', transverse momentum of the gluon xg momentum fraction of the hard gluon inside the pomeron z argument of the gluon to quark splitting kernel - Vectors: Vector (5) = ( p_x, p_y, p_z, energy, mass**2 ) eb initial lepton, in case after initial state radiation es scattered lepton, in case before final state radiation es_f scattered lepton if final state radiation occured ps scattered proton phot radiated photon gam virtual photon (gamma) pom pomeron = (p-p') yvect (gamma+proton) xvect (gamma+pomeron) q quark qbar antiquark for q-qbar-gluon event only: qqbar q-qbar system ak final state gluon gluon virtual gluon which interacts with the gamma ************************************************************************* Event weight: The events can be generated with or without weight according to the value set with the card WEI. In case the events are generated WITH weight the sum of the weights divided by the total number of generated events is the cross section ( in nanobarn! ) In this case weights should be used in all the distributions. In case the events are generated WITHOUT weights, the cross sections can be found in the logfile. *************************************************************************