]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HIJING/hipyset1_35/pykmap_hijing.F
New default values for baselines (F.Prino)
[u/mrichter/AliRoot.git] / HIJING / hipyset1_35 / pykmap_hijing.F
CommitLineData
e74335a4 1* $Id$
2
3C*********************************************************************
4
5 SUBROUTINE PYKMAP_HIJING(IVAR,MVAR,VVAR)
6
7C...Maps a uniform distribution into a distribution of a kinematical
8C...variable according to one of the possibilities allowed. It is
9C...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"
13
14C...Convert VVAR to tau variable.
15 ISUB=MINT(1)
16 IF(IVAR.EQ.1) THEN
17 TAUMIN=VINT(11)
18 TAUMAX=VINT(31)
19 IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
20 TAURE=VINT(73)
21 GAMRE=VINT(74)
22 ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
23 TAURE=VINT(75)
24 GAMRE=VINT(76)
25 ENDIF
26 IF(MINT(43).EQ.1.AND.(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.2)) THEN
27 TAU=1.
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)
35 ELSE
36 AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
37 ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
38 TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
39 ENDIF
40 VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
41
42C...Convert VVAR to y* variable.
43 ELSEIF(IVAR.EQ.2) THEN
44 YSTMIN=VINT(12)
45 YSTMAX=VINT(32)
46 IF(MINT(43).EQ.1) THEN
47 YST=0.
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)
58 ELSE
59 AUPP=ATAN(EXP(YSTMAX))
60 ALOW=ATAN(EXP(YSTMIN))
61 YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
62 ENDIF
63 VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
64
65C...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
68 RSQM=1.+RM34
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)))
71 CTNMIN=VINT(13)
72 CTNMAX=VINT(33)
73 CTPMIN=VINT(14)
74 CTPMAX=VINT(34)
75 IF(MVAR.EQ.1) THEN
76 ANEG=CTNMAX-CTNMIN
77 APOS=CTPMAX-CTPMIN
78 IF(ANEG.GT.0..AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
79 VCTN=VVAR*(ANEG+APOS)/ANEG
80 CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
81 ELSE
82 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
83 CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
84 ENDIF
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
95 ELSE
96 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
97 CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
98 ENDIF
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
109 ELSE
110 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
111 CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
112 ENDIF
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)
123 ELSE
124 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
125 CTH=RSQM-1./(1./RMPMIN+APOS*VCTP)
126 ENDIF
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
137 ELSE
138 VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
139 CTH=1./(1./RMPMIN-APOS*VCTP)-RSQM
140 ENDIF
141 ENDIF
142 IF(CTH.LT.0.) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
143 IF(CTH.GT.0.) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
144 VINT(23)=CTH
145
146C...Convert VVAR to tau' variable.
147 ELSEIF(IVAR.EQ.4) THEN
148 TAU=VINT(11)
149 TAUPMN=VINT(16)
150 TAUPMX=VINT(36)
151 IF(MINT(43).EQ.1) THEN
152 TAUP=1.
153 ELSEIF(MVAR.EQ.1) THEN
154 TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
155 ELSE
156 AUPP=(1.-TAU/TAUPMX)**4
157 ALOW=(1.-TAU/TAUPMN)**4
158 TAUP=TAU/(1.-(ALOW+(AUPP-ALOW)*VVAR)**0.25)
159 ENDIF
160 VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))
161 ENDIF
162
163 RETURN
164 END