]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/pykcut.F
added copyright, updated class description
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pykcut.F
1  
2 C*********************************************************************
3  
4       SUBROUTINE PYKCUT(MCUT)
5  
6 C...Dummy routine, which the user can replace in order to make cuts on
7 C...the kinematics on the parton level before the matrix elements are
8 C...evaluated and the event is generated. The cross-section estimates
9 C...will automatically take these cuts into account, so the given
10 C...values are for the allowed phase space region only. MCUT=0 means
11 C...that the event has passed the cuts, MCUT=1 that it has failed.
12       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
13       SAVE /LUDAT1/
14       COMMON/PYINT1/MINT(400),VINT(400)
15       COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
16       SAVE /PYINT1/,/PYINT2/
17  
18 C...Set default value (accepting event) for MCUT.
19       MCUT=0
20  
21 C...Read out subprocess number.
22       ISUB=MINT(1)
23       ISTSB=ISET(ISUB)
24  
25 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
26       TAU=VINT(21)
27       YST=VINT(22)
28       CTH=0.
29       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6) CTH=VINT(23)
30       TAUP=0.
31       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
32  
33 C...Calculate x_1, x_2, x_F.
34       IF(ISTSB.LE.2.OR.ISTSB.GE.6) THEN
35         X1=SQRT(TAU)*EXP(YST)
36         X2=SQRT(TAU)*EXP(-YST)
37       ELSE
38         X1=SQRT(TAUP)*EXP(YST)
39         X2=SQRT(TAUP)*EXP(-YST)
40       ENDIF
41       XF=X1-X2
42  
43 C...Calculate shat, that, uhat, p_T^2.
44       SHAT=TAU*VINT(2)
45       SQM3=VINT(63)
46       SQM4=VINT(64)
47       RM3=SQM3/SHAT
48       RM4=SQM4/SHAT
49       BE34=SQRT(MAX(0.,(1.-RM3-RM4)**2-4.*RM3*RM4))
50       RPTS=4.*VINT(71)**2/SHAT
51       BE34L=SQRT(MAX(0.,(1.-RM3-RM4)**2-4.*RM3*RM4-RPTS))
52       RM34=2.*RM3*RM4
53       RSQM=1.+RM34
54       RTHM=(4.*RM3*RM4+RPTS)/(1.-RM3-RM4+BE34L)
55       THAT=-0.5*SHAT*MAX(RTHM,1.-RM3-RM4-BE34*CTH)
56       UHAT=-0.5*SHAT*MAX(RTHM,1.-RM3-RM4+BE34*CTH)
57       PT2=MAX(VINT(71)**2,0.25*SHAT*BE34**2*(1.-CTH**2))
58  
59 C...Decisions by user to be put here.
60  
61 C...Stop program if this routine is ever called.
62 C...You should not copy these lines to your own routine.
63       WRITE(MSTU(11),5000)
64       IF(RLU(0).LT.10.) STOP
65  
66 C...Format for error printout.
67  5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
68      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
69      &1X,'Execution stopped!')
70  
71       RETURN
72       END