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) 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) ELSE write(6,*) "-> pdfset" CALL PDFSET(PARM,VALUE) 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