Add pdfset_alice and structm_alice handle calls to the nuclear structure
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Sep 2000 10:47:15 +0000 (10:47 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 18 Sep 2000 10:47:15 +0000 (10:47 +0000)
function package of PDF is this is required by the user.

PYTHIA6/Makefile
PYTHIA6/pdf_alice.F [new file with mode: 0644]

index c479b4b..7314bc5 100644 (file)
@@ -19,7 +19,7 @@ COBJS         = $(patsubst %.c,tgt_$(ALICE_TARGET)/%.o,$(CSRCS))
 
 ##### MACROS #####
 
-FSRCS  = pythia6150.F pythia6_common_block_address.F \
+FSRCS  = pythia6150.F pythia6_common_block_address.F pdf_alice.F\
           tpythia6_called_from_cc.F
 
 FOBJS  = $(patsubst %.F,tgt_$(ALICE_TARGET)/%.o,$(FSRCS))
diff --git a/PYTHIA6/pdf_alice.F b/PYTHIA6/pdf_alice.F
new file mode 100644 (file)
index 0000000..6e6e754
--- /dev/null
@@ -0,0 +1,64 @@
+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
+
+