]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - LHAPDF/lhapdf-5.9.1/src/wrapgsg.f
LHAPDF veraion 5.9.1
[u/mrichter/AliRoot.git] / LHAPDF / lhapdf-5.9.1 / src / wrapgsg.f
diff --git a/LHAPDF/lhapdf-5.9.1/src/wrapgsg.f b/LHAPDF/lhapdf-5.9.1/src/wrapgsg.f
new file mode 100644 (file)
index 0000000..0c1b768
--- /dev/null
@@ -0,0 +1,225 @@
+! -*- F90 -*-
+
+
+      subroutine GSGevolvep0(xin,qin,p2in,ip2in,pdf) 
+      include 'parmsetup.inc' 
+      real*8 xin,qin,q2in,p2in,pdf(-6:6),xval(45),qcdl4,qcdl5 
+      real*8 upv,dnv,usea,dsea,str,chm,bot,top,glu 
+      real*8 SIG,QNS,GL 
+      real*8 holdit 
+      common/gsgdat/SIG(78,11,3),QNS(78,11,3),GL(78,11,3) 
+      character*16 name(nmxset) 
+      integer nmem(nmxset),ndef(nmxset),mmem 
+      common/NAME/name,nmem,ndef,mmem 
+      integer nset 
+      save 
+                                                                        
+      call getnset(iset) 
+      call getnmem(iset,iimem) 
+! -- this is LO 2 --> 3 0/1 --> 2                                       
+      if(iimem.eq.2) iimem = 3 
+      if(iimem.eq.0) iimem = 2 
+      if(iimem.eq.1) iimem = 2 
+                                                                        
+      call SFGSHL(iimem,xin,qin,upv,dnv,usea,dsea,str,chm,bot,glu) 
+                                                                        
+      pdf(-6)= 0.0d0 
+      pdf(6)= 0.0d0 
+      pdf(-5)= bot 
+      pdf(5 )= bot 
+      pdf(-4)= chm 
+      pdf(4 )= chm 
+      pdf(-3)= str 
+      pdf(3 )= str 
+      pdf(-2)= usea 
+      pdf(2 )= upv 
+      pdf(-1)= dsea 
+      pdf(1 )= dnv 
+      pdf(0 )= glu 
+                                                                        
+      return 
+!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 
+      entry GSGevolvep1(xin,qin,p2in,ip2in,pdf) 
+                                                                        
+!--- this is HO --- iimem=1                                             
+      iimem = 1 
+       call SFGSHL(iimem,xin,qin,upv,dnv,usea,dsea,str,chm,bot,glu) 
+                                                                        
+                                                                        
+      pdf(-6)= 0.0d0 
+      pdf(6)= 0.0d0 
+      pdf(-5)= bot 
+      pdf(5 )= bot 
+      pdf(-4)= chm 
+      pdf(4 )= chm 
+      pdf(-3)= str 
+      pdf(3 )= str 
+      pdf(-2)= usea 
+      pdf(2 )= upv 
+      pdf(-1)= dsea 
+      pdf(1 )= dnv 
+      pdf(0 )= glu 
+                                                                        
+      return 
+!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 
+      entry GSGread(nset) 
+      read(1,*)nmem(nset),ndef(nset) 
+      do j=1,3 
+      do k=1,78 
+      do m=1,11 
+         read(1,*)SIG(k,m,j),QNS(k,m,j),GL(k,m,j) 
+      enddo 
+      enddo 
+      enddo 
+      return 
+!                                                                       
+!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 
+      entry GSGalfa(alfas,qalfa) 
+        call getnset(iset) 
+        call getnmem(iset,imem) 
+        call GetOrderAsM(iset,iord) 
+        call Getlam4M(iset,imem,qcdl4) 
+        call Getlam5M(iset,imem,qcdl5) 
+        call aspdflib(alfas,Qalfa,iord,qcdl5) 
+!        call aspdflib(alfas,Qalfa,iord,qcdl5)                          
+                                                                        
+      return 
+!                                                                       
+!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 
+      entry GSGinit(Eorder,Q2fit) 
+      return 
+!                                                                       
+!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 
+      entry GSGpdf(mem) 
+      call getnset(iset) 
+      call setnmem(iset,mem) 
+!      imem = mem                                                       
+      return 
+!                                                                       
+ 1000 format(5e13.5) 
+      END                                           
+!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 
+!      SUBROUTINE SFGSHO(X,Q,U,D,US,DS,S,C,B,G)                         
+      SUBROUTINE SFGSHL(iset,X,Q,U,D,US,DS,S,C,B,G) 
+!                                                                       
+!****************************************************************       
+! Subroutine returns the parton distributions in the photon in  *       
+! higher  order. u,d etc. gives the actual distributions and    *       
+! not x times the distributions; Q2 means Q 2. The distributions*       
+! are valid for 5.0e -4< x < 1.0 and 5.3 GeV 2 < Q 2 < 1.0e 8.  *       
+! if higher Q 2 or lower x is required, these may be obtained   *       
+! from the authors on request.                                  *       
+! Lionel Gordon July 1991 : Gordon@uk.ac.man.ph.v2              *       
+!****************************************************************       
+!                                                                       
+      implicit real*8 (a-h,o-z) 
+      PARAMETER(NP=78,NQ=11,NARG=2) 
+      double precision                                                  &
+     &       DBFINT,                                                    &
+     &       Y(NP),                                                     &
+     &       XT(NARG),A(NP+NQ),QT(NQ)                                   
+!     +       SIG(NP,NQ),QNS(NP,NQ),GL(NP,NQ),Y(NP),                    
+      common/gsgdat/SIG(78,11,3),QNS(78,11,3),GL(78,11,3) 
+      DIMENSION NA(NARG) 
+      EXTERNAL GSXCOR 
+!      SAVE SIG,QNS,GL,Y,ICALL                                          
+      SAVE Y,ICALL 
+      DATA QT /5.3D0,20.0D0,50.0D0,1.0D2,5.0D2,1.0D3,1.0D4,1.0D5,       &
+     & 1.0D6,1.0D7,1.0D8/                                               
+      DATA ZEROD/0.D0/ 
+      DATA ICALL/0/ 
+!*****************************************************************      
+       U = ZEROD 
+       D = ZEROD 
+       S = ZEROD 
+       C = ZEROD 
+       B = ZEROD 
+       G = ZEROD 
+!if x is out of range                                                   
+      if(iset.eq.1) then 
+        IF((X.LT.5.0D-4).OR.(X.GT.0.95D0)) GOTO 90 
+      else 
+        IF((X.LT.5.0D-4).OR.(X.GT.0.99D0)) GOTO 90 
+      endif 
+                                                                        
+!******************************************************************     
+       IF (ICALL.NE.1) THEN 
+! get the x coordinates                                                 
+          CALL GSXCOR(Y,NP) 
+          ICALL=1 
+        END IF 
+!                                                                       
+      DO 30 IX=1,NP 
+        A(IX)=Y(IX) 
+   30 END DO 
+      DO 40 IQ=1,NQ 
+        A(NP+IQ)=QT(IQ) 
+   40 END DO 
+!                                                                       
+      Q2 = Q*Q 
+      NA(1)=NP 
+      NA(2)=NQ 
+       XT(1)=X 
+       XT(2)=Q2 
+      XSIG=DBFINT(2,XT,NA,A,SIG(1,1,iset)) 
+      XQNS=DBFINT(2,XT,NA,A,QNS(1,1,iset)) 
+        G =DBFINT(2,XT,NA,A,GL(1,1,iset)) 
+!                                                                       
+      IF (Q2.LT.50.0D0) THEN 
+! Use three flavour evolution.                                          
+       U=(XSIG+9.0D0*XQNS)/6.0D0 
+       D=(XSIG-4.5D0*XQNS)/6.0D0 
+       S=D 
+       C=ZEROD 
+       B=ZEROD 
+!                                                                       
+      ELSE IF((Q2.GT.50.0D0).AND.(Q2.LT.250.0D0)) THEN 
+! Use four flavour evolution                                            
+      U=(XSIG+6.0D0*XQNS)/8.0D0 
+      D=(XSIG-6.0D0*XQNS)/8.0D0 
+      S=D 
+      C=U 
+      B=ZEROD 
+      ELSE 
+! Use five flavour evolution                                            
+      U=(XSIG+7.5D0*XQNS)/10.0D0 
+      D=(XSIG-5.0D0*XQNS)/10.0D0 
+      S=D 
+      C=U 
+      B=D 
+      ENDIF 
+      U=X*U 
+      US=U 
+      D=X*D 
+      DS=D 
+      S=X*S 
+      C=X*C 
+      B=X*B 
+      G=X*G 
+   90 RETURN 
+      END                                           
+!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 
+      SUBROUTINE GSXCOR(Y,NP) 
+!                                                                       
+      implicit real*8 (a-h,o-z) 
+      double precision                                                  &
+     &       Y(NP)                                                      
+      N=1 
+      DO 10 IX=1,20,2 
+         Y(N)=    (IX)/2000.0D0 
+      N=N+1 
+   10 END DO 
+      DO 20 IX=30,200,10 
+         Y(N)=    (IX)/2000.0D0 
+           N=N+1 
+   20 END DO 
+      DO 30 IX=240,1600,40 
+         Y(N)=    (IX)/2000.0D0 
+      N=N+1 
+   30 END DO 
+      DO 40 IX=1625,1980,25 
+         Y(N)=    (IX)/2000.0D0 
+      N=N+1 
+   40 END DO 
+      RETURN 
+      END