Possibility to change the collision system.
[u/mrichter/AliRoot.git] / PYTHIA6 / pdf_alice.F
1 C...  ALICE interface to PDFLIB with possibility to select nuclear structure 
2 C...  functions. 
3 C...  
4 C...  The MSTP array in the PYPARS common block is used to enable and 
5 C...  select the nuclear structure functions. 
6 C...  MSTP(52)  : (D=1) choice of proton and nuclear structure-function library
7 C...          =1: internal PYTHIA acording to MSTP(51) 
8 C...          =2: PDFLIB proton  s.f., with MSTP(51)  = 1000xNGROUP+NSET
9 C...              MSTP( 51)  = 1000xNPGROUP+NPSET
10 C...              MSTP(151)  = 1000xNAGROUP+NASET
11 C...  MSTP(192) : Mass number of nucleus side 1
12 C...  MSTP(193) : Mass number of nucleus side 2
13 C...
14 C...
15 C...  MINT(124) : side (1 or 2)
16
17
18       SUBROUTINE PDFSET_ALICE(PARM, VALUE)
19 C...
20       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
21       IMPLICIT INTEGER(I-N)
22 C...Interface to PDFLIB.
23       COMMON/LW50512/QCDL4,QCDL5
24       SAVE /LW50512/
25       DOUBLE PRECISION QCDL4,QCDL5
26       COMMON/LW50513/XMIN,XMAX,Q2MIN,Q2MAX
27       SAVE /LW50513/
28       DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
29 C...
30       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)  
32       DOUBLE PRECISION VALUE(20)
33       CHARACTER*20 PARM(20)
34       write(6,*) MSTP(52)
35       write(6,*) PARM
36       write(6,*) VALUE
37
38       IF (MSTP(192) .GT. 0 .AND. MSTP(193) .GT. 0) THEN
39          PARM(5)='NATYPE'
40          VALUE(5)=4
41          PARM(6)='NAGROUP'
42          VALUE(6)=MSTP(191)/1000
43          PARM(7)='NASET'
44          VALUE(7)=MOD(MSTP(191),1000)
45          CALL PDFSET(PARM,VALUE,
46      >        MSTU(11),MSTP(51),MSTP(53),MSTP(55),
47      >        QCDL4,QCDL5,
48      >        XMIN,XMAX,Q2MIN,Q2MAX)
49
50          IF (MSTP(194) .EQ. 0) THEN 
51             CALL SETLHAPARM("EKS98")
52          ELSE IF (MSTP(194) .EQ.  9) THEN
53             CALL SETLHAPARM("EPS09LO")
54          ELSE IF (MSTP(194) .EQ. 19) THEN
55             CALL SETLHAPARM("EPS09NLO")
56          ELSE IF (MSTP(194) .EQ.  8) THEN
57             CALL SETLHAPARM("EPS08")
58          ELSE
59             CALL SETLHAPARM("EPS09LO")
60          ENDIF
61        ELSE 
62          write(6,*) "-> pdfset"
63          CALL PDFSET(PARM,VALUE,
64      >        MSTU(11),MSTP(51),MSTP(53),MSTP(55),
65      >        QCDL4,QCDL5,
66      >        XMIN,XMAX,Q2MIN,Q2MAX)
67       ENDIF
68       write(6,*) "done"
69       END
70
71
72
73       SUBROUTINE STRUCTM_ALICE
74      +     (XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
75 C...
76       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77       IMPLICIT INTEGER(I-N)
78       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
79       COMMON/PYINT1/MINT(400),VINT(400)
80 C      write(6,*) "structm_alice->"
81       IF (MSTP(192) .GT. 0 .AND. MSTP(193) .GT. 0) THEN
82          A=MSTP(191+MINT(124))
83 C         write(6,*) mint(124), "-> structa ", A
84           CALL STRUCTA(XX,QQ,A,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
85       ELSE
86 C         write(6,*) mint(124), "-> structm "
87          CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
88       ENDIF
89       END
90
91