Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:15:45

0001     
0002 C***********************************************************************    
0003     
0004       FUNCTION PYHISPEN(XREIN,XIMIN,IREIM)    
0005     
0006 C...Calculates real and imaginary part of Spence function; see  
0007 C...G. 't Hooft and M. Veltman, Nucl. Phys. B153 (1979) 365.    
0008       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
0009       SAVE /LUDAT1/ 
0010       DIMENSION B(0:14) 
0011     
0012       DATA B/   
0013      & 1.000000E+00,        -5.000000E-01,         1.666667E-01,    
0014      & 0.000000E+00,        -3.333333E-02,         0.000000E+00,    
0015      & 2.380952E-02,         0.000000E+00,        -3.333333E-02,    
0016      & 0.000000E+00,         7.575757E-02,         0.000000E+00,    
0017      &-2.531135E-01,         0.000000E+00,         1.166667E+00/    
0018     
0019       XRE=XREIN 
0020       XIM=XIMIN 
0021       IF(ABS(1.-XRE).LT.1.E-6.AND.ABS(XIM).LT.1.E-6) THEN   
0022         IF(IREIM.EQ.1) PYHISPEN=PARU(1)**2/6. 
0023         IF(IREIM.EQ.2) PYHISPEN=0.    
0024         RETURN  
0025       ENDIF 
0026     
0027       XMOD=SQRT(XRE**2+XIM**2)  
0028       IF(XMOD.LT.1.E-6) THEN    
0029         IF(IREIM.EQ.1) PYHISPEN=0.    
0030         IF(IREIM.EQ.2) PYHISPEN=0.    
0031         RETURN  
0032       ENDIF 
0033     
0034       XARG=SIGN(ACOS(XRE/XMOD),XIM) 
0035       SP0RE=0.  
0036       SP0IM=0.  
0037       SGN=1.    
0038       IF(XMOD.GT.1.) THEN   
0039         ALGXRE=LOG(XMOD)    
0040         ALGXIM=XARG-SIGN(PARU(1),XARG)  
0041         SP0RE=-PARU(1)**2/6.-(ALGXRE**2-ALGXIM**2)/2.   
0042         SP0IM=-ALGXRE*ALGXIM    
0043         SGN=-1. 
0044         XMOD=1./XMOD    
0045         XARG=-XARG  
0046         XRE=XMOD*COS(XARG)  
0047         XIM=XMOD*SIN(XARG)  
0048       ENDIF 
0049       IF(XRE.GT.0.5) THEN   
0050         ALGXRE=LOG(XMOD)    
0051         ALGXIM=XARG 
0052         XRE=1.-XRE  
0053         XIM=-XIM    
0054         XMOD=SQRT(XRE**2+XIM**2)    
0055         XARG=SIGN(ACOS(XRE/XMOD),XIM)   
0056         ALGYRE=LOG(XMOD)    
0057         ALGYIM=XARG 
0058         SP0RE=SP0RE+SGN*(PARU(1)**2/6.-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))   
0059         SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)   
0060         SGN=-SGN    
0061       ENDIF 
0062     
0063       XRE=1.-XRE    
0064       XIM=-XIM  
0065       XMOD=SQRT(XRE**2+XIM**2)  
0066       XARG=SIGN(ACOS(XRE/XMOD),XIM) 
0067       ZRE=-LOG(XMOD)    
0068       ZIM=-XARG 
0069     
0070       SPRE=0.   
0071       SPIM=0.   
0072       SAVERE=1. 
0073       SAVEIM=0. 
0074       DO 100 I=0,14 
0075       TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/FLOAT(I+1) 
0076       TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/FLOAT(I+1) 
0077       SAVERE=TERMRE 
0078       SAVEIM=TERMIM 
0079       SPRE=SPRE+B(I)*TERMRE 
0080   100 SPIM=SPIM+B(I)*TERMIM 
0081     
0082       IF(IREIM.EQ.1) PYHISPEN=SP0RE+SGN*SPRE  
0083       IF(IREIM.EQ.2) PYHISPEN=SP0IM+SGN*SPIM  
0084     
0085       RETURN    
0086       END