Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:21:19

0001  
0002 C*********************************************************************
0003  
0004 C...PYTHRG
0005 C...Calculates the mass eigenstates of the third generation sfermions.
0006 C...Created:  5-31-96
0007  
0008       SUBROUTINE PYTHRG
0009  
0010 C...Double precision and integer declarations.
0011       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0012       IMPLICIT INTEGER(I-N)
0013       INTEGER PYK,PYCHGE,PYCOMP
0014 C...Parameter statement to help give large particle numbers.
0015       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
0016      &KEXCIT=4000000,KDIMEN=5000000)
0017 C...Commonblocks.
0018       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0019       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0020       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
0021       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
0022      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
0023       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
0024  
0025 C...Local variables.
0026       DOUBLE PRECISION BETA
0027       DOUBLE PRECISION AM2(2,2),RT(2,2),DI(2,2)
0028       DOUBLE PRECISION XMZ2,XMW2,TANB,XMU,COS2B,XMQL2,XMQR2
0029       DOUBLE PRECISION XMF,XMF2,DIFF,SAME,XMF12,XMF22,SMALL
0030       DOUBLE PRECISION ATR,AMQR,AMQL
0031       INTEGER ID1(3),ID2(3),ID3(3),ID4(3)
0032       INTEGER IF,I,J,II,JJ,IT,L
0033       LOGICAL DTERM
0034       DATA SMALL/1D-3/
0035       DATA ID1/10,10,13/
0036       DATA ID2/5,6,15/
0037       DATA ID3/15,16,17/
0038       DATA ID4/11,12,14/
0039       DATA DTERM/.TRUE./
0040  
0041       XMZ2=PMAS(23,1)**2
0042       XMW2=PMAS(24,1)**2
0043       TANB=RMSS(5)
0044       XMU=-RMSS(4)
0045       BETA=ATAN(TANB)
0046       COS2B=COS(2D0*BETA)
0047  
0048 C...OPTION TO FIX T1, T2, B1 MASSES AND MIXINGS
0049  
0050       IOPT=IMSS(5)
0051       IF(IOPT.EQ.1) THEN
0052         CTT=DCOS(RMSS(27))
0053         CTT2=CTT**2
0054         STT=DSIN(RMSS(27))
0055         STT2=STT**2
0056         XM12=RMSS(10)**2
0057         XM22=RMSS(12)**2
0058         XMQL2=CTT2*XM12+STT2*XM22
0059         XMQR2=STT2*XM12+CTT2*XM22
0060         XMF2=PYMRUN(6,PMAS(6,1)**2)**2
0061         ATOP=-XMU/TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
0062         RMSS(16)=ATOP
0063 C......SUBTRACT OUT D-TERM AND FERMION MASS
0064         XMQL2=XMQL2-XMF2-(4D0*XMW2-XMZ2)*COS2B/6D0
0065         XMQR2=XMQR2-XMF2+(XMW2-XMZ2)*COS2B*2D0/3D0
0066         IF(XMQL2.GE.0D0) THEN
0067           RMSS(10)=SQRT(XMQL2)
0068         ELSE
0069           RMSS(10)=-SQRT(-XMQL2)
0070         ENDIF
0071         IF(XMQR2.GE.0D0) THEN
0072           RMSS(12)=SQRT(XMQR2)
0073         ELSE
0074           RMSS(12)=-SQRT(-XMQR2)
0075         ENDIF
0076  
0077 C SAME FOR BOTTOM SQUARK
0078         CTT=DCOS(RMSS(26))
0079         CTT2=CTT**2
0080         STT=DSIN(RMSS(26))
0081         STT2=STT**2
0082         XM22=RMSS(11)**2
0083         XMF2=PYMRUN(5,PMAS(6,1)**2)**2
0084         XMQL2=SIGN(RMSS(10)**2,RMSS(10))-(2D0*XMW2+XMZ2)*COS2B/6D0+XMF2
0085         IF(ABS(CTT).GE..9999D0) THEN
0086           ABOT=-XMU*TANB
0087           XMQR2=RMSS(11)**2
0088         ELSEIF(ABS(CTT).LE.1D-4) THEN
0089           ABOT=-XMU*TANB
0090           XMQR2=RMSS(11)**2
0091         ELSE
0092           XM12=(XMQL2-STT2*XM22)/CTT2
0093           XMQR2=STT2*XM12+CTT2*XM22
0094           ABOT=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
0095         ENDIF
0096         RMSS(15)=ABOT
0097 C......SUBTRACT OUT D-TERM AND FERMION MASS
0098         XMQR2=XMQR2-(XMW2-XMZ2)*COS2B/3D0-XMF2
0099         IF(XMQR2.GE.0D0) THEN
0100           RMSS(11)=SQRT(XMQR2)
0101         ELSE
0102           RMSS(11)=-SQRT(-XMQR2)
0103         ENDIF
0104 C SAME FOR TAU SLEPTON
0105         CTT=DCOS(RMSS(28))
0106         CTT2=CTT**2
0107         STT=DSIN(RMSS(28))
0108         STT2=STT**2
0109         XM12=RMSS(13)**2
0110         XM22=RMSS(14)**2
0111         XMQL2=CTT2*XM12+STT2*XM22
0112         XMQR2=STT2*XM12+CTT2*XM22
0113         XMFR=PMAS(15,1)
0114         XMF2=XMFR**2
0115         ATAU=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
0116         RMSS(17)=ATAU
0117 C......SUBTRACT OUT D-TERM AND FERMION MASS
0118         XMQL2=XMQL2-XMF2+(-.5D0*XMZ2+XMW2)*COS2B
0119         XMQR2=XMQR2-XMF2+(XMZ2-XMW2)*COS2B
0120         IF(XMQL2.GE.0D0) THEN
0121           RMSS(13)=SQRT(XMQL2)
0122         ELSE
0123           RMSS(13)=-SQRT(-XMQL2)
0124         ENDIF
0125         IF(XMQR2.GE.0D0) THEN
0126           RMSS(14)=SQRT(XMQR2)
0127         ELSE
0128           RMSS(14)=-SQRT(-XMQR2)
0129         ENDIF
0130       ENDIF
0131       DO 170 L=1,3
0132         AMQL=RMSS(ID1(L))
0133         IF(AMQL.LT.0D0) THEN
0134           XMQL2=-AMQL**2
0135         ELSE
0136           XMQL2=AMQL**2
0137         ENDIF
0138         ATR=RMSS(ID3(L))
0139         AMQR=RMSS(ID4(L))
0140         IF(AMQR.LT.0D0) THEN
0141           XMQR2=-AMQR**2
0142         ELSE
0143           XMQR2=AMQR**2
0144         ENDIF
0145         IF=ID2(L)
0146         XMF=PYMRUN(IF,PMAS(6,1)**2)
0147         XMF2=XMF**2
0148         AM2(1,1)=XMQL2+XMF2
0149         AM2(2,2)=XMQR2+XMF2
0150         IF(AM2(1,1).EQ.AM2(2,2)) AM2(2,2)=AM2(2,2)*1.00001D0
0151         IF(DTERM) THEN
0152           IF(L.EQ.1) THEN
0153             AM2(1,1)=AM2(1,1)-(2D0*XMW2+XMZ2)*COS2B/6D0
0154             AM2(2,2)=AM2(2,2)+(XMW2-XMZ2)*COS2B/3D0
0155             AM2(1,2)=XMF*(ATR+XMU*TANB)
0156           ELSEIF(L.EQ.2) THEN
0157             AM2(1,1)=AM2(1,1)+(4D0*XMW2-XMZ2)*COS2B/6D0
0158             AM2(2,2)=AM2(2,2)-(XMW2-XMZ2)*COS2B*2D0/3D0
0159             AM2(1,2)=XMF*(ATR+XMU/TANB)
0160           ELSEIF(L.EQ.3) THEN
0161             IF(IMSS(8).EQ.1) THEN
0162               AM2(1,1)=RMSS(6)**2
0163               AM2(2,2)=RMSS(7)**2
0164               AM2(1,2)=0D0
0165               RMSS(13)=RMSS(6)
0166               RMSS(14)=RMSS(7)
0167             ELSE
0168               AM2(1,1)=AM2(1,1)-(-.5D0*XMZ2+XMW2)*COS2B
0169               AM2(2,2)=AM2(2,2)-(XMZ2-XMW2)*COS2B
0170               AM2(1,2)=XMF*(ATR+XMU*TANB)
0171             ENDIF
0172           ENDIF
0173         ENDIF
0174         AM2(2,1)=AM2(1,2)
0175         DETM=AM2(1,1)*AM2(2,2)-AM2(2,1)**2
0176         IF(DETM.LT.0D0) THEN
0177           WRITE(MSTU(11),*) ID2(L),DETM,AM2
0178           CALL PYERRM(30,' NEGATIVE**2 MASS FOR SFERMION IN PYTHRG ')
0179         ENDIF
0180         SAME=0.5D0*(AM2(1,1)+AM2(2,2))
0181         DIFF=0.5D0*SQRT((AM2(1,1)-AM2(2,2))**2+4D0*AM2(1,2)*AM2(2,1))
0182         XMF12=SAME-DIFF
0183         XMF22=SAME+DIFF
0184         IT=0
0185         IF(XMF22-XMF12.GT.0D0) THEN
0186           RT(1,1) = SQRT(MAX(0D0,(XMF22-AM2(1,1))/(XMF22-XMF12)))
0187           RT(2,2) = RT(1,1)
0188           RT(1,2) = -SIGN(SQRT(MAX(0D0,1D0-RT(1,1)**2)),
0189      &    AM2(1,2)/(XMF22-XMF12))
0190           RT(2,1) = -RT(1,2)
0191         ELSE
0192           RT(1,1) = 1D0
0193           RT(2,2) = RT(1,1)
0194           RT(1,2) = 0D0
0195           RT(2,1) = -RT(1,2)
0196         ENDIF
0197   100   CONTINUE
0198         IT=IT+1
0199  
0200         DO 140 I=1,2
0201           DO 130 JJ=1,2
0202             DI(I,JJ)=0D0
0203             DO 120 II=1,2
0204               DO 110 J=1,2
0205                 DI(I,JJ)=DI(I,JJ)+RT(I,J)*AM2(J,II)*RT(JJ,II)
0206   110         CONTINUE
0207   120       CONTINUE
0208   130     CONTINUE
0209   140   CONTINUE
0210  
0211         IF(DI(1,1).GT.DI(2,2)) THEN
0212           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION '
0213           WRITE(MSTU(11),*) L,SQRT(XMF12),SQRT(XMF22)
0214           WRITE(MSTU(11),*) AM2
0215           WRITE(MSTU(11),*) DI
0216           WRITE(MSTU(11),*) RT
0217           DI(1,1)=-RT(2,1)
0218           DI(2,2)=RT(1,2)
0219           DI(1,2)=-RT(2,2)
0220           DI(2,1)=RT(1,1)
0221           DO 160 I=1,2
0222             DO 150 J=1,2
0223               RT(I,J)=DI(I,J)
0224   150       CONTINUE
0225   160     CONTINUE
0226           GOTO 100
0227         ELSEIF(ABS(DI(1,2)*DI(2,1)/DI(1,1)/DI(2,2)).GT.SMALL) THEN
0228           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
0229      &    ' OFF DIAGONAL ELEMENTS '
0230           WRITE(MSTU(11),*) 'MASSES = ',L,SQRT(XMF12),SQRT(XMF22)
0231           WRITE(MSTU(11),*) DI
0232           WRITE(MSTU(11),*) ' ROTATION = ',RT
0233 C...STOP
0234         ELSEIF(DI(1,1).LT.0D0.OR.DI(2,2).LT.0D0) THEN
0235           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
0236      &    ' NEGATIVE MASSES '
0237           CALL PYSTOP(111)
0238         ENDIF
0239         PMAS(PYCOMP(KSUSY1+IF),1)=SQRT(XMF12)
0240         PMAS(PYCOMP(KSUSY2+IF),1)=SQRT(XMF22)
0241         SFMIX(IF,1)=RT(1,1)
0242         SFMIX(IF,2)=RT(1,2)
0243         SFMIX(IF,3)=RT(2,1)
0244         SFMIX(IF,4)=RT(2,2)
0245   170 CONTINUE
0246  
0247 C.....TAU SNEUTRINO MASS...L=3
0248  
0249       XARG=AM2(1,1)+XMW2*COS2B
0250       IF(XARG.LT.0D0) THEN
0251         WRITE(MSTU(11),*) ' PYTHRG:: TAU SNEUTRINO MASS IS NEGATIVE'//
0252      &  ' FROM THE SUM RULE. '
0253         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
0254         RETURN
0255       ELSE
0256         PMAS(PYCOMP(KSUSY1+16),1)=SQRT(XARG)
0257       ENDIF
0258  
0259       RETURN
0260       END