Some hick-up with common blocks solved.
[u/mrichter/AliRoot.git] / PYTHIA6 / pythia6.4.21 / pythia-6.4.21.f
index 80ab12bcc58a8779203a78f4c797edd192cdb0d1..5a0f360b11f64310ec446535f2ad23e30d4f79b7 100644 (file)
@@ -2873,8 +2873,8 @@ C...Local arrays and character variables.
  
 C...Interface to PDFLIB.
       COMMON/W50511/NPTYPE,NGROUP,NSET,MODE,NFL,LO,TMAS
-      COMMON/W50512/QCDL4,QCDL5
-      SAVE /W50511/,/W50512/
+      COMMON/LW50512/QCDL4,QCDL5
+      SAVE /W50511/,/LW50512/
       DOUBLE PRECISION VALUE(20),TMAS,QCDL4,QCDL5
       CHARACTER*20 PARM(20)
       DATA VALUE/20*0D0/,PARM/20*' '/
@@ -2956,7 +2956,6 @@ C...Initialize parton distributions: PDFLIB.
         CALL PDFSET_ALICE(PARM,VALUE)
         MINT(93)=1000000+MSTP(51)
       ENDIF
 C...Choose Lambda value to use in alpha-strong.
       MSTU(111)=MSTP(2)
       IF(MSTP(3).GE.2) THEN
@@ -2979,7 +2978,6 @@ C...Choose Lambda value to use in alpha-strong.
         MSTU(112)=NF
         IF(MSTP(3).EQ.3) PARJ(81)=ALAM
       ENDIF
 C...Initialize the UED masses and widths
       IF (IUED(1).EQ.1) CALL PYXDIN
 
@@ -78918,3 +78916,86 @@ 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
+