File indexing completed on 2025-08-05 08:21:19
0001
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE PYTHRG
0009
0010
0011 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0012 IMPLICIT INTEGER(I-N)
0013 INTEGER PYK,PYCHGE,PYCOMP
0014
0015 PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
0016 &KEXCIT=4000000,KDIMEN=5000000)
0017
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
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
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
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
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
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
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
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
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
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