]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HIJING/hipyset1_35/luxkfl_hijing.F
This commit was generated by cvs2svn to compensate for changes in r1073,
[u/mrichter/AliRoot.git] / HIJING / hipyset1_35 / luxkfl_hijing.F
diff --git a/HIJING/hipyset1_35/luxkfl_hijing.F b/HIJING/hipyset1_35/luxkfl_hijing.F
new file mode 100644 (file)
index 0000000..ec10c9e
--- /dev/null
@@ -0,0 +1,66 @@
+* $Id$
+    
+C*********************************************************************  
+    
+      SUBROUTINE LUXKFL_HIJING(KFL,ECM,ECMC,KFLC)  
+    
+C...Purpose: to select flavour for produced qqbar pair. 
+#include "ludat1_hijing.inc"
+#include "ludat2_hijing.inc"
+    
+C...Calculate maximum weight in QED or QFD case.    
+      IF(MSTJ(102).LE.1) THEN   
+        RFMAX=4./9. 
+      ELSE  
+        POLL=1.-PARJ(131)*PARJ(132) 
+        SFF=1./(16.*PARU(102)*(1.-PARU(102)))   
+        SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)    
+        SFI=SFW*(1.-(PARJ(123)/ECMC)**2)    
+        VE=4.*PARU(102)-1.  
+        HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))  
+        HF1W=SFW*SFF**2*((VE**2+1.)*POLL+2.*VE*(PARJ(132)-PARJ(131)))   
+        RFMAX=MAX(4./9.*POLL-4./3.*(1.-8.*PARU(102)/3.)*HF1I+   
+     &  ((1.-8.*PARU(102)/3.)**2+1.)*HF1W,1./9.*POLL+2./3.* 
+     &  (-1.+4.*PARU(102)/3.)*HF1I+((-1.+4.*PARU(102)/3.)**2+1.)*HF1W)  
+      ENDIF 
+    
+C...Choose flavour. Gives charge and velocity.  
+      NTRY=0    
+  100 NTRY=NTRY+1   
+      IF(NTRY.GT.100) THEN  
+         CALL LUERRM_HIJING(14
+     $        ,'(LUXKFL_HIJING:) caught in an infinite loop')  
+        KFLC=0  
+        RETURN  
+      ENDIF 
+      KFLC=KFL  
+      IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*RLU_HIJING(0)) 
+      MSTJ(93)=1    
+      PMQ=ULMASS_HIJING(KFLC)  
+      IF(ECM.LT.2.*PMQ+PARJ(127)) GOTO 100  
+      QF=KCHG(KFLC,1)/3.    
+      VQ=1. 
+      IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0.,1.-(2.*PMQ/ECMC)**2))    
+    
+C...Calculate weight in QED or QFD case.    
+      IF(MSTJ(102).LE.1) THEN   
+        RF=QF**2    
+        RFV=0.5*VQ*(3.-VQ**2)*QF**2 
+      ELSE  
+        VF=SIGN(1.,QF)-4.*QF*PARU(102)  
+        RF=QF**2*POLL-2.*QF*VF*HF1I+(VF**2+1.)*HF1W 
+        RFV=0.5*VQ*(3.-VQ**2)*(QF**2*POLL-2.*QF*VF*HF1I+VF**2*HF1W)+    
+     &  VQ**3*HF1W  
+      ENDIF 
+    
+C...Weighting or new event (radiative photon). Cross-section update.    
+      IF(KFL.LE.0.AND.RF.LT.RLU_HIJING(0)*RFMAX) GOTO 100  
+      PARJ(158)=PARJ(158)+1.    
+      IF(ECMC.LT.2.*PMQ+PARJ(127).OR.RFV.LT.RLU_HIJING(0)*RF) KFLC=0   
+      IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100 
+      IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1.  
+      PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158)   
+      PARJ(148)=PARJ(144)*86.8/ECM**2   
+    
+      RETURN    
+      END