3 C*********************************************************************
5 SUBROUTINE PYKMAP_HIJING(IVAR,MVAR,VVAR)
7 C...Maps a uniform distribution into a distribution of a kinematical
8 C...variable according to one of the possibilities allowed. It is
9 C...assumed that kinematical limits have been set by a PYKLIM call.
10 #include "ludat2_hijing.inc"
11 #include "pyint1_hijing.inc"
12 #include "pyint2_hijing.inc"
14 C...Convert VVAR to tau variable.
19 IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
22 ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
26 IF(MINT(43).EQ.1.AND.(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.2)) THEN
28 ELSEIF(MVAR.EQ.1) THEN
29 TAU=TAUMIN*(TAUMAX/TAUMIN)**VVAR
30 ELSEIF(MVAR.EQ.2) THEN
31 TAU=TAUMAX*TAUMIN/(TAUMIN+(TAUMAX-TAUMIN)*VVAR)
32 ELSEIF(MVAR.EQ.3.OR.MVAR.EQ.5) THEN
33 RATGEN=(TAURE+TAUMAX)/(TAURE+TAUMIN)*TAUMIN/TAUMAX
34 TAU=TAURE*TAUMIN/((TAURE+TAUMIN)*RATGEN**VVAR-TAUMIN)
36 AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
37 ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
38 TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
40 VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
42 C...Convert VVAR to y* variable.
43 ELSEIF(IVAR.EQ.2) THEN
46 IF(MINT(43).EQ.1) THEN
48 ELSEIF(MINT(43).EQ.2) THEN
49 IF(ISET(ISUB).LE.2) YST=-0.5*LOG(VINT(21))
50 IF(ISET(ISUB).GE.3) YST=-0.5*LOG(VINT(26))
51 ELSEIF(MINT(43).EQ.3) THEN
52 IF(ISET(ISUB).LE.2) YST=0.5*LOG(VINT(21))
53 IF(ISET(ISUB).GE.3) YST=0.5*LOG(VINT(26))
54 ELSEIF(MVAR.EQ.1) THEN
55 YST=YSTMIN+(YSTMAX-YSTMIN)*SQRT(VVAR)
56 ELSEIF(MVAR.EQ.2) THEN
57 YST=YSTMAX-(YSTMAX-YSTMIN)*SQRT(1.-VVAR)
59 AUPP=ATAN(EXP(YSTMAX))
60 ALOW=ATAN(EXP(YSTMIN))
61 YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
63 VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
65 C...Convert VVAR to cos(theta-hat) variable.
66 ELSEIF(IVAR.EQ.3) THEN
67 RM34=2.*VINT(63)*VINT(64)/(VINT(21)*VINT(2))**2
69 IF(2.*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001) RM34=MAX(RM34,
70 & 2.*VINT(71)**2/(VINT(21)*VINT(2)))
78 IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
79 VCTN=VVAR*(ANEG+APOS)/ANEG
80 CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
82 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
83 CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
85 ELSEIF(MVAR.EQ.2) THEN
86 RMNMIN=MAX(RM34,RSQM-CTNMIN)
87 RMNMAX=MAX(RM34,RSQM-CTNMAX)
88 RMPMIN=MAX(RM34,RSQM-CTPMIN)
89 RMPMAX=MAX(RM34,RSQM-CTPMAX)
90 ANEG=LOG(RMNMIN/RMNMAX)
91 APOS=LOG(RMPMIN/RMPMAX)
92 IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
93 VCTN=VVAR*(ANEG+APOS)/ANEG
94 CTH=RSQM-RMNMIN*(RMNMAX/RMNMIN)**VCTN
96 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
97 CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
99 ELSEIF(MVAR.EQ.3) THEN
100 RMNMIN=MAX(RM34,RSQM+CTNMIN)
101 RMNMAX=MAX(RM34,RSQM+CTNMAX)
102 RMPMIN=MAX(RM34,RSQM+CTPMIN)
103 RMPMAX=MAX(RM34,RSQM+CTPMAX)
104 ANEG=LOG(RMNMAX/RMNMIN)
105 APOS=LOG(RMPMAX/RMPMIN)
106 IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
107 VCTN=VVAR*(ANEG+APOS)/ANEG
108 CTH=RMNMIN*(RMNMAX/RMNMIN)**VCTN-RSQM
110 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
111 CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
113 ELSEIF(MVAR.EQ.4) THEN
114 RMNMIN=MAX(RM34,RSQM-CTNMIN)
115 RMNMAX=MAX(RM34,RSQM-CTNMAX)
116 RMPMIN=MAX(RM34,RSQM-CTPMIN)
117 RMPMAX=MAX(RM34,RSQM-CTPMAX)
118 ANEG=1./RMNMAX-1./RMNMIN
119 APOS=1./RMPMAX-1./RMPMIN
120 IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
121 VCTN=VVAR*(ANEG+APOS)/ANEG
122 CTH=RSQM-1./(1./RMNMIN+ANEG*VCTN)
124 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
125 CTH=RSQM-1./(1./RMPMIN+APOS*VCTP)
127 ELSEIF(MVAR.EQ.5) THEN
128 RMNMIN=MAX(RM34,RSQM+CTNMIN)
129 RMNMAX=MAX(RM34,RSQM+CTNMAX)
130 RMPMIN=MAX(RM34,RSQM+CTPMIN)
131 RMPMAX=MAX(RM34,RSQM+CTPMAX)
132 ANEG=1./RMNMIN-1./RMNMAX
133 APOS=1./RMPMIN-1./RMPMAX
134 IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
135 VCTN=VVAR*(ANEG+APOS)/ANEG
136 CTH=1./(1./RMNMIN-ANEG*VCTN)-RSQM
138 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
139 CTH=1./(1./RMPMIN-APOS*VCTP)-RSQM
142 IF(CTH.LT.0.) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
143 IF(CTH.GT.0.) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
146 C...Convert VVAR to tau' variable.
147 ELSEIF(IVAR.EQ.4) THEN
151 IF(MINT(43).EQ.1) THEN
153 ELSEIF(MVAR.EQ.1) THEN
154 TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
156 AUPP=(1.-TAU/TAUPMX)**4
157 ALOW=(1.-TAU/TAUPMN)**4
158 TAUP=TAU/(1.-(ALOW+(AUPP-ALOW)*VVAR)**0.25)
160 VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))