Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001     
0002 C*********************************************************************  
0003     
0004       SUBROUTINE LUBOEI(NSAV)   
0005     
0006 C...Purpose: to modify event so as to approximately take into account   
0007 C...Bose-Einstein effects according to a simple phenomenological    
0008 C...parametrization.    
0009       IMPLICIT DOUBLE PRECISION(D)  
0010       COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0011       SAVE /LUJETS/ 
0012       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
0013       SAVE /LUDAT1/ 
0014       DIMENSION DPS(4),KFBE(9),NBE(0:9),BEI(100)    
0015       DATA KFBE/211,-211,111,321,-321,130,310,221,331/  
0016     
0017 C...Boost event to overall CM frame. Calculate CM energy.   
0018       IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN   
0019       DO 100 J=1,4  
0020   100 DPS(J)=0. 
0021       DO 120 I=1,N  
0022       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120  
0023       DO 110 J=1,4  
0024   110 DPS(J)=DPS(J)+P(I,J)  
0025   120 CONTINUE  
0026       CALL LUDBRB(0,0,0.,0.,-DPS(1)/DPS(4),-DPS(2)/DPS(4),  
0027      &-DPS(3)/DPS(4))   
0028       PECM=0.   
0029       DO 130 I=1,N  
0030   130 IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4) 
0031     
0032 C...Reserve copy of particles by species at end of record.  
0033       NBE(0)=N+MSTU(3)  
0034       DO 160 IBE=1,MIN(9,MSTJ(51))  
0035       NBE(IBE)=NBE(IBE-1)   
0036       DO 150 I=NSAV+1,N 
0037       IF(K(I,2).NE.KFBE(IBE)) GOTO 150  
0038       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150  
0039       IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN   
0040         CALL LUERRM(11,'(LUBOEI:) no more memory left in LUJETS')   
0041         RETURN  
0042       ENDIF 
0043       NBE(IBE)=NBE(IBE)+1   
0044       K(NBE(IBE),1)=I   
0045       DO 140 J=1,3  
0046   140 P(NBE(IBE),J)=0.  
0047   150 CONTINUE  
0048   160 CONTINUE  
0049     
0050 C...Tabulate integral for subsequent momentum shift.    
0051       DO 210 IBE=1,MIN(9,MSTJ(51))  
0052       IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 180   
0053       IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2)).   
0054      &LE.1) GOTO 180    
0055       IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5),    
0056      &NBE(7)-NBE(6)).LE.1) GOTO 180 
0057       IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 180    
0058       IF(IBE.EQ.1) PMHQ=2.*ULMASS(211)  
0059       IF(IBE.EQ.4) PMHQ=2.*ULMASS(321)  
0060       IF(IBE.EQ.8) PMHQ=2.*ULMASS(221)  
0061       IF(IBE.EQ.9) PMHQ=2.*ULMASS(331)  
0062       QDEL=0.1*MIN(PMHQ,PARJ(93))   
0063       IF(MSTJ(51).EQ.1) THEN    
0064         NBIN=MIN(100,NINT(9.*PARJ(93)/QDEL))    
0065         BEEX=EXP(0.5*QDEL/PARJ(93)) 
0066         BERT=EXP(-QDEL/PARJ(93))    
0067       ELSE  
0068         NBIN=MIN(100,NINT(3.*PARJ(93)/QDEL))    
0069       ENDIF 
0070       DO 170 IBIN=1,NBIN    
0071       QBIN=QDEL*(IBIN-0.5)  
0072       BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12.)/SQRT(QBIN**2+PMHQ**2)    
0073       IF(MSTJ(51).EQ.1) THEN    
0074         BEEX=BEEX*BERT  
0075         BEI(IBIN)=BEI(IBIN)*BEEX    
0076       ELSE  
0077         BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2)    
0078       ENDIF 
0079   170 IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1) 
0080     
0081 C...Loop through particle pairs and find old relative momentum. 
0082   180 DO 200 I1M=NBE(IBE-1)+1,NBE(IBE)-1    
0083       I1=K(I1M,1)   
0084       DO 200 I2M=I1M+1,NBE(IBE) 
0085       I2=K(I2M,1)   
0086       Q2OLD=MAX(0.,(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+  
0087      &P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2)    
0088       QOLD=SQRT(Q2OLD)  
0089     
0090 C...Calculate new relative momentum.    
0091       IF(QOLD.LT.0.5*QDEL) THEN 
0092         QMOV=QOLD/3.    
0093       ELSEIF(QOLD.LT.(NBIN-0.1)*QDEL) THEN  
0094         RBIN=QOLD/QDEL  
0095         IBIN=RBIN   
0096         RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1)  
0097         QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))*  
0098      &  SQRT(Q2OLD+PMHQ**2)/Q2OLD   
0099       ELSE  
0100         QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD    
0101       ENDIF 
0102       Q2NEW=Q2OLD*(QOLD/(QOLD+3.*PARJ(92)*QMOV))**(2./3.)   
0103     
0104 C...Calculate and save shift to be performed on three-momenta.  
0105       HC1=(P(I1,4)+P(I2,4))**2-(Q2OLD-Q2NEW)    
0106       HC2=(Q2OLD-Q2NEW)*(P(I1,4)-P(I2,4))**2    
0107       HA=0.5*(1.-SQRT(HC1*Q2NEW/(HC1*Q2OLD-HC2)))   
0108       DO 190 J=1,3  
0109       PD=HA*(P(I2,J)-P(I1,J))   
0110       P(I1M,J)=P(I1M,J)+PD  
0111   190 P(I2M,J)=P(I2M,J)-PD  
0112   200 CONTINUE  
0113   210 CONTINUE  
0114     
0115 C...Shift momenta and recalculate energies. 
0116       DO 230 IM=NBE(0)+1,NBE(MIN(9,MSTJ(51)))   
0117       I=K(IM,1) 
0118       DO 220 J=1,3  
0119   220 P(I,J)=P(I,J)+P(IM,J) 
0120   230 P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)  
0121     
0122 C...Rescale all momenta for energy conservation.    
0123       PES=0.    
0124       PQS=0.    
0125       DO 240 I=1,N  
0126       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 240  
0127       PES=PES+P(I,4)    
0128       PQS=PQS+P(I,5)**2/P(I,4)  
0129   240 CONTINUE  
0130       FAC=(PECM-PQS)/(PES-PQS)  
0131       DO 260 I=1,N  
0132       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 260  
0133       DO 250 J=1,3  
0134   250 P(I,J)=FAC*P(I,J) 
0135       P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)  
0136   260 CONTINUE  
0137     
0138 C...Boost back to correct reference frame.  
0139       CALL LUDBRB(0,0,0.,0.,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4))  
0140     
0141       RETURN    
0142       END