pdfset added.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Mar 2009 07:04:30 +0000 (07:04 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Mar 2009 07:04:30 +0000 (07:04 +0000)
PYTHIA6/QPYTHIA/pythia-6.4.14.f

index b2dd133..a0f6b94 100644 (file)
@@ -37380,7 +37380,7 @@ C...Call PDFLIB parton distributions.
           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
@@ -37486,7 +37486,7 @@ C...Call PDFLIB parton distributions.
           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
@@ -37593,7 +37593,7 @@ C...Call PDFLIB parton distributions.
           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
@@ -38259,7 +38259,7 @@ C...Initialize PDFLIB photon parton distributions.
           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
@@ -76364,6 +76364,90 @@ C...Common code to ensure right century.
       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
+
+