Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001     
0002 C*********************************************************************  
0003     
0004       FUNCTION KLU(I,J) 
0005     
0006 C...Purpose: to provide various integer-valued event related data.  
0007       COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0008       SAVE /LUJETS/ 
0009       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
0010       SAVE /LUDAT1/ 
0011       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)    
0012       SAVE /LUDAT2/ 
0013     
0014 C...Default value. For I=0 number of entries, number of stable entries  
0015 C...or 3 times total charge.    
0016       KLU=0 
0017       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN 
0018       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN    
0019         KLU=N   
0020       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN    
0021         DO 100 I1=1,N   
0022         IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+1 
0023         IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+  
0024      &  LUCHGE(K(I1,2)) 
0025   100   CONTINUE    
0026       ELSEIF(I.EQ.0) THEN   
0027     
0028 C...For I > 0 direct readout of K matrix or charge. 
0029       ELSEIF(J.LE.5) THEN   
0030         KLU=K(I,J)  
0031       ELSEIF(J.EQ.6) THEN   
0032         KLU=LUCHGE(K(I,2))  
0033     
0034 C...Status (existing/fragmented/decayed), parton/hadron separation. 
0035       ELSEIF(J.LE.8) THEN   
0036         IF(K(I,1).GE.1.AND.K(I,1).LE.10) KLU=1  
0037         IF(J.EQ.8) KLU=KLU*K(I,2)   
0038       ELSEIF(J.LE.12) THEN  
0039         KFA=IABS(K(I,2))    
0040         KC=LUCOMP(KFA)  
0041         KQ=0    
0042         IF(KC.NE.0) KQ=KCHG(KC,2)   
0043         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) KLU=K(I,2)   
0044         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) KLU=K(I,2)  
0045         IF(J.EQ.11) KLU=KC  
0046         IF(J.EQ.12) KLU=KQ*ISIGN(1,K(I,2))  
0047     
0048 C...Heaviest flavour in hadron/diquark. 
0049       ELSEIF(J.EQ.13) THEN  
0050         KFA=IABS(K(I,2))    
0051         KLU=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10)   
0052         IF(KFA.LT.10) KLU=KFA   
0053         IF(MOD(KFA/1000,10).NE.0) KLU=MOD(KFA/1000,10)  
0054         KLU=KLU*ISIGN(1,K(I,2)) 
0055     
0056 C...Particle history: generation, ancestor, rank.   
0057       ELSEIF(J.LE.16) THEN  
0058         I2=I    
0059         I1=I    
0060   110   KLU=KLU+1   
0061         I3=I2   
0062         I2=I1   
0063         I1=K(I1,3)  
0064         IF(I1.GT.0.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110 
0065         IF(J.EQ.15) KLU=I2  
0066         IF(J.EQ.16) THEN    
0067           KLU=0 
0068           DO 120 I1=I2+1,I3 
0069   120     IF(K(I1,3).EQ.I2.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) KLU=KLU+1    
0070         ENDIF   
0071     
0072 C...Particle coming from collapsing jet system or not.  
0073       ELSEIF(J.EQ.17) THEN  
0074         I1=I    
0075   130   KLU=KLU+1   
0076         I3=I1   
0077         I1=K(I1,3)  
0078         I0=MAX(1,I1)    
0079         KC=LUCOMP(K(I0,2))  
0080         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN    
0081           IF(KLU.EQ.1) KLU=-1   
0082           IF(KLU.GT.1) KLU=0    
0083           RETURN    
0084         ENDIF   
0085         IF(KCHG(KC,2).EQ.0) GOTO 130    
0086         IF(K(I1,1).NE.12) KLU=0 
0087         IF(K(I1,1).NE.12) RETURN    
0088         I2=I1   
0089   140   I2=I2+1 
0090         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 140  
0091         K3M=K(I3-1,3)   
0092         IF(K3M.GE.I1.AND.K3M.LE.I2) KLU=0   
0093         K3P=K(I3+1,3)   
0094         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) KLU=0   
0095     
0096 C...Number of decay products. Colour flow.  
0097       ELSEIF(J.EQ.18) THEN  
0098         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) KLU=MAX(0,K(I,5)-K(I,4)+1) 
0099         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) KLU=0    
0100       ELSEIF(J.LE.22) THEN  
0101         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN    
0102         IF(J.EQ.19) KLU=MOD(K(I,4)/MSTU(5),MSTU(5)) 
0103         IF(J.EQ.20) KLU=MOD(K(I,5)/MSTU(5),MSTU(5)) 
0104         IF(J.EQ.21) KLU=MOD(K(I,4),MSTU(5)) 
0105         IF(J.EQ.22) KLU=MOD(K(I,5),MSTU(5)) 
0106       ELSE  
0107       ENDIF 
0108     
0109       RETURN    
0110       END