PARM(3)='NSET'
VALUE(3)=MOD(MSTP(55),1000)
IF(MINT(93).NE.3000000+MSTP(55)) THEN
- CALL PDFSET(PARM,VALUE)
+ CALL PDFSET_ALICE(PARM,VALUE)
MINT(93)=3000000+MSTP(55)
ENDIF
XX=X
PARM(3)='NSET'
VALUE(3)=MOD(MSTP(53),1000)
IF(MINT(93).NE.2000000+MSTP(53)) THEN
- CALL PDFSET(PARM,VALUE)
+ CALL PDFSET_ALICE(PARM,VALUE)
MINT(93)=2000000+MSTP(53)
ENDIF
XX=X
PARM(3)='NSET'
VALUE(3)=MOD(MSTP(51),1000)
IF(MINT(93).NE.1000000+MSTP(51)) THEN
- CALL PDFSET(PARM,VALUE)
+ CALL PDFSET_ALICE(PARM,VALUE)
MINT(93)=1000000+MSTP(51)
ENDIF
XX=X
PARM(3)='NSET'
VALUE(3)=MOD(MSTP(55),1000)
IF(MINT(93).NE.3000000+MSTP(55)) THEN
- CALL PDFSET(PARM,VALUE)
+ CALL PDFSET_ALICE(PARM,VALUE)
MINT(93)=3000000+MSTP(55)
ENDIF
ENDIF
RETURN
END
+C... ALICE interface to PDFLIB with possibility to select nuclear structure
+C... functions.
+C...
+C... The MSTP array in the PYPARS common block is used to enable and
+C... select the nuclear structure functions.
+C... MSTP(52) : (D=1) choice of proton and nuclear structure-function library
+C... =1: internal PYTHIA acording to MSTP(51)
+C... =2: PDFLIB proton s.f., with MSTP(51) = 1000xNGROUP+NSET
+C... MSTP( 51) = 1000xNPGROUP+NPSET
+C... MSTP(151) = 1000xNAGROUP+NASET
+C... MSTP(192) : Mass number of nucleus side 1
+C... MSTP(193) : Mass number of nucleus side 2
+C...
+C...
+C... MINT(124) : side (1 or 2)
+
+
+ SUBROUTINE PDFSET_ALICE(PARM, VALUE)
+C...
+ IMPLICIT DOUBLE PRECISION(A-H, O-Z)
+ IMPLICIT INTEGER(I-N)
+C...Interface to PDFLIB.
+ COMMON/LW50512/QCDL4,QCDL5
+ SAVE /LW50512/
+ DOUBLE PRECISION QCDL4,QCDL5
+ COMMON/LW50513/XMIN,XMAX,Q2MIN,Q2MAX
+ SAVE /LW50513/
+ DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
+C...
+ COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
+ COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
+ DOUBLE PRECISION VALUE(20)
+ CHARACTER*20 PARM(20)
+ write(6,*) MSTP(52)
+ write(6,*) PARM
+ write(6,*) VALUE
+
+ IF (MSTP(192) .GT. 0 .AND. MSTP(193) .GT. 0) THEN
+ PARM(5)='NATYPE'
+ VALUE(5)=4
+ PARM(6)='NAGROUP'
+ VALUE(6)=MSTP(191)/1000
+ PARM(7)='NASET'
+ VALUE(7)=MOD(MSTP(191),1000)
+ CALL PDFSET(PARM,VALUE,
+ > MSTU(11),MSTP(51),MSTP(53),MSTP(55),
+ > QCDL4,QCDL5,
+ > XMIN,XMAX,Q2MIN,Q2MAX)
+ IF (MSTP(194) .EQ. 0) THEN
+ CALL SETLHAPARM("EKS98")
+ ELSE
+ CALL SETLHAPARM("EPS08")
+ ENDIF
+ ELSE
+ write(6,*) "-> pdfset"
+ CALL PDFSET(PARM,VALUE,
+ > MSTU(11),MSTP(51),MSTP(53),MSTP(55),
+ > QCDL4,QCDL5,
+ > XMIN,XMAX,Q2MIN,Q2MAX)
+ ENDIF
+ write(6,*) "done"
+ END
+
+
+
+ SUBROUTINE STRUCTM_ALICE
+ + (XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
+C...
+ IMPLICIT DOUBLE PRECISION(A-H, O-Z)
+ IMPLICIT INTEGER(I-N)
+ COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
+ COMMON/PYINT1/MINT(400),VINT(400)
+C write(6,*) "structm_alice->"
+ IF (MSTP(192) .GT. 0 .AND. MSTP(193) .GT. 0) THEN
+ A=MSTP(191+MINT(124))
+C write(6,*) mint(124), "-> structa ", A
+ CALL STRUCTA(XX,QQ,A,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
+ ELSE
+C write(6,*) mint(124), "-> structm "
+ CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
+ ENDIF
+ END
+
+