|
See also the return address
http://zfitter.com and
and http://www.cern.ch/Gfitter, official Gfitter webpage http://gfitter.desy.de, kind of mirror at DESY The webpage at DESY contains a bit bizarre contents under `Download, gsm'. A legalized Gfitter/GSM sub-package does not exist; the authors of the potential package were agreed upon to be 14 of the ZFITTER authors and 4 of the Gfitter authors [and not what is written there], and the future licence cannot be the GPL license because of contradiction to the CPC licence of ZFITTER; etc. [made public at DESY webpages since 21 July 2011, later also at CERN webpages, last check of contents: 04 Aug 2011]. The release of http://gfitter.desy.de/download/ with its misleading informations on Gfitter/GSM triggered the creation and release of this webpage. |
Foto: Copyright (2011) tordriemann@googlemail.com The webmaster: "Wo ZFITTER drin ist, soll auch ZFITTER draufstehen!" |
FUNCTION XL(Q2,AM12,AM22)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
*
COMMON/CDZCON/PI,PI2,F1,D3,ALFAI,AL4PI,AL2PI,AL1PI
*
* XL(Q2,M12,M22)=L(Q2,M12,M22)=ALAM(Q2,-M12,-M22)*J(Q2,M12,M22)
*
ALAM=(Q2+AM12+AM22)**2-4.D0*AM12*AM22
REL=ALAM*FJJ(Q2,AM12,AM22)
AIL=0.D0
TRES=(SQRT(AM12)+SQRT(AM22))**2
IF(-Q2.LE.TRES.OR.ALAM.LT.0D0) GO TO 1
SLAM=SQRT(ALAM)
AIL=2.D0*PI*SLAM
1 XL=DCMPLX(REL,AIL)
and in Gfitter/gsm/GSMmath.cxx [language c++]:
// eq. (A.8) Z. Phys. C44, 493-502 (1989) std::complexSimilarly, one might discuss equation (C.6) for the ZFITTER function XJ:GSM::GSMMath::L( const Double_t& Q2, const Double_t& m12, const Double_t& m22 ) { Double_t LAM = (Q2 + m12 + m22)*(Q2 + m12 + m22) - 4.0*m12*m22; std::complex REL = LAM*JJ(Q2,m12,m22); Double_t IL = 0; if (-Q2 > Gfitter::GMath::IPow(sqrt(m12)+sqrt(m22),2) && LAM >= 0) IL = 2.0*TMath::Pi()*sqrt(LAM); std::complex l(real(REL),IL); return l; }
FUNCTION XDL(Q2,Q2SBT,AM12,AM22)
*
* XDL(Q2,AMQ2,AM12,AM22)=(L(Q2,AM12,AM22)-L(Q2SBT,AM12,AM22))/(Q2-Q2SBT)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
*
DATA EPS/1.D-3/
*
Q2S=Q2SBT+AM12+AM22
ALAM=Q2S**2-4.D0*AM12*AM22
DSLAM=DSQRT(DABS(ALAM))
QD=Q2-Q2SBT
RQD=DABS(QD/DSLAM)
IF(RQD.LE.EPS) GO TO 1
XDL=(XL(Q2,AM12,AM22)-XL(Q2SBT,AM12,AM22))/QD
RETURN
1 R=4.D0*AM12/AM22
IF(R-1.D0)2,3,2
2 XJS=XJ(Q2SBT,AM12,AM22)
XDL=2.D0+Q2S*XJS+QD/ALAM*(Q2S-2.D0*AM12*AM22*XJS)
* +(QD/ALAM)**2*(-Q2S**2/3.D0-8.D0/3.D0*AM12*AM22*Q2S*XJS)
RETURN
3 CONTINUE
RAT=QD/AM22
XDL=4.D0+2.D0/3.D0*RAT-2.D0/15.D0*RAT*RAT
*
END
and in Gfitter/gsm/GSMmath.cxx [language c++]:
// Delta L std::complexGSM::GSMMath::DL( const Double_t& Q2, const Double_t& Q2SBT, const Double_t& m12, const Double_t& m22 ) { std::complex dl(0,0); Double_t Q2S = Q2SBT + m12 + m22; Double_t LAM = Q2S*Q2S - 4.0*m12*m22; Double_t SLAM = TMath::Sqrt(TMath::Abs(LAM)); Double_t QD = Q2 -Q2SBT; Double_t RQD = TMath::Abs(QD/SLAM); if (RQD < 1e-3) { Double_t R = 4.0*m12/m22; if (R-1.0 != 0) { std::complex JS = J(Q2SBT,m12,m22); dl = ( 2.0 + Q2S*JS + QD/LAM*(Q2S - 2.0*m12*m22*JS) + (QD/LAM)*(QD/LAM)*(-Q2S*Q2S/3.0 - 8.0/3.0*m12*m22*Q2S*JS) ); } else dl = 4.0 + 2.0/3.0*QD/m22 - 2.0/15.0*QD*QD/(m22*m22); } else dl = (L(Q2,m12,m22) - L(Q2SBT,m12,m22))/QD; return dl; }
FUNCTION XAMF(Q2)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
COMMON/CDZWSM/AMW2,AMZ2,R,R1,R12,R2,AMH2,RW,RW1,RW12,RW2,RZ,RZ1,
* RZ12,RZ2,ALR,ALRW,ALRZ,SW2M,CW2M,AKSX,R1W,R1W2
COMMON/CDZFER/CLM(8),AML(8),CQM(8),AMQ(8),VB,VT,VB2,VB2T,VT2,VT2T
*
NG=3
XCHMQ1=DCMPLX(0.D0,0.D0)
DO 1 I=1,NG
AML2=AML(2*I)**2
XCHMQ1=XCHMQ1+XI3(AMW2,Q2,AML2,AML2)
1 CONTINUE
XCHQ21=XCHMQ1
* equal for leptons
INQ=2*NG
DO 2 I=1,INQ
AMQ2=AMQ(I)**2
XCHMQ1=XCHMQ1+3.D0*CQM(I)*XI3(AMW2,Q2,AMQ2,AMQ2)
XCHQ21=XCHQ21+3.D0*CQM(I)**2*XI3(AMW2,Q2,AMQ2,AMQ2)
2 CONTINUE
XAMF=8.D0*R1*XCHQ21-2.D0*XCHMQ1
*
END
and in Gfitter/gsm/ZFitterFermionPart.cxx [language c++]:
// eq. (264) of hep-ph/9709229v1 // see ZFitter package dizet6_42.f line 1329-1352 ( function XAMF ) complexGSM::ZFitterFermionPart::MfphoZ( const Double_t& Q2 ) const { complex chmQ1 (0,0); // leptons for (Int_t i=0; i<3 ; i++) { Double_t ml2 = m_ml[1][i]*m_ml[1][i]; chmQ1 = chmQ1 + GSMMath::I3(m_MW2, Q2, ml2, ml2); } complex chmQ2 = chmQ1; // quarks for (Int_t i=0; i<3; i++) { for (Int_t j=0; j<2; j++) { Double_t mq2 = m_mq[j][i]*m_mq[j][i]; chmQ1 = chmQ1 + 3.0*m_chq[j]*GSMMath::I3(m_MW2, Q2, mq2, mq2); chmQ2 = chmQ2 + 3.0*m_chq[j]*m_chq[j]*GSMMath::I3(m_MW2, Q2, mq2, mq2); } } return 8.0*m_R1*chmQ2 - 2.0*chmQ1; }
ZFITTER/dizet6_42.f, lines 4547 ff.
FUNCTION FBARB(X)
IMPLICIT REAL*8(A-Z)
COMMON/CDZCON/PI,PI2,F1,D3,ALFAI,AL4PI,AL2PI,AL1PI
DATA P1/-0.74141D0/,P2/ -11.483D0 /,P3/ 9.6577D0/,
& P4/ -6.7270D0/,P5/ 3.0659D0 /,P6/-0.82053D0/,
& P7/ 0.11659D0/,P8/-0.67712D-02/
IF(X.LE.4D0) THEN
FBARB=P1+P2*X+P3*X**2+P4*X**3+P5*X**4+P6*X**5+P7*X**6+P8*X**7
ELSE
RBTH=1/X**2
ALRB=LOG(RBTH)
FBARB=49D0/4D0+PI2+27D0/2D0*ALRB+3D0/2D0*ALRB**2
& +RBTH/3D0*(2D0-12D0*PI2+12D0*ALRB-27D0*ALRB**2)
& +RBTH**2/48D0*(1613-240*PI2-1500*ALRB-720 *ALRB**2)
ENDIF
*
END
Gfitter/GSM/GSMMATH.cxx, lines 266 ff.
// mtop^4 contribution from Barbieri et. al.
// Nucl. Phys. B409(1993) 105-107
Double_t GSM::GSMMath::BarbMc( const Double_t& x )
{
Double_t P[8] = {-0.74141, -11.483, 9.6577, -6.727, 3.0659, -0.82053, 0.11659, -0.67712e-2};
Double_t Barb = 0;
if (x < 4) {
for (Int_t i = 0; i < 8; i++) { Barb += P[i]*Gfitter::GMath::IPow(x,i); }
}
else {
Double_t Pi2 = Gfitter::GMath::IPow(TMath::Pi(),2);
Double_t Inv2 = 1/(x*x);
Double_t LogInv2 = TMath::Log(Inv2);
Barb = ( 49/4.0 + Pi2 + 27/2.0*LogInv2 + 3/2.0*LogInv2*LogInv2
+ Inv2/3.0*(2.0 - 12.0*Pi2 + 12.0*LogInv2 -27.0*LogInv2*LogInv2)
+ Inv2*Inv2/48.0*(1613.0 - 240.0*Pi2 - 1500.0*LogInv2 -
720.0*LogInv2*LogInv2) );
}
return Barb;
}
ZFITTER/dizet6_42.f, lines 4565 ff
FUNCTION FBARBB(X)
C 13/10/1992 - Barbieri's m_t^4 are implemented
IMPLICIT REAL*8(A-Z)
COMMON/CDZCON/PI,PI2,F1,D3,ALFAI,AL4PI,AL2PI,AL1PI
* Approximation from 0 to 4 (Mhiggs/mtop)
DATA P1/ 5.6807D0/,P2/ -11.015D0 /,P3/ 12.814D0/,
& P4/-9.2954D0/,P5/ 4.3305D0 /,P6/-1.2125D0/,
& P7/0.18402D0/,P8/-0.11582D-01/
IF(X.LE.4D0) THEN
FBARBB=P1+P2*X+P3*X**2+P4*X**3+P5*X**4+P6*X**5+P7*X**6+P8*X**7
ELSE
RBTH=1/X**2
ALRB=LOG(RBTH)
FBARBB=1D0/144*(311D0+24*PI2+282*ALRB+90*ALRB**2
& -4D0*RBTH*(40D0+ 6*PI2+ 15*ALRB+18*ALRB**2)
& +3D0*RBTH**2*(242.09D0-60*PI2-454.2D0*ALRB-180*ALRB**2))
ENDIF
*
END
Gfitter/GSM/GSMMATH.cxx, lines 287 ff.
{
Double_t P[8] = {5.6807, -11.015, 12.814, -9.2954, 4.3305, -1.2125, 0.18402, -0.11582e-1};
Double_t Barb = 0;
if (x < 4) {
for (Int_t i = 0; i < 8; i++) { Barb += P[i]*Gfitter::GMath::IPow(x,i); }
}
else {
Double_t Pi2 = Gfitter::GMath::IPow(TMath::Pi(),2);
Double_t Inv2 = 1/(x*x);
Double_t LogInv2 = TMath::Log(Inv2);
Barb = 1/144.0*( 311.0 + 24.0*Pi2 + 282.0*LogInv2 + 90.0*LogInv2*LogInv2
- 4.0*Inv2*(40.0 + 6.0*Pi2 + 15.0*LogInv2 + 18.0*LogInv2*LogInv2)
+ 3.0*Inv2*Inv2*(242.09 - 60.0*Pi2 - 454.2*LogInv2 - 180.0*LogInv2*LogInv2) );
}
return Barb;
}
SUBROUTINE PROW (QI,ROW)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
COMMON/CDZCON/PI,PI2,F1,D3,ALFAI,AL4PI,AL2PI,AL1PI
COMMON/CDZWSM/AMW2,AMZ2,R,R1,R12,R2,AMH2,RW,RW1,RW12,RW2,RZ,RZ1,
* RZ12,RZ2,ALR,ALRW,ALRZ,SW2M,CW2M,AKSX,R1W,R1W2
COMMON/CDZWSC/SL2,SQ2,W0,W0F,Z0,Z0F,DWZ0R1,DWZ0F,XWM1,XWM1F,XZM1,
& XZM1F,XWZ1R1,XDWZ1F,XZFM1,XZFM1F,XAMM1,XAMM1F,XWFM1,XWFM1F
COMMON/CDZVZW/V1ZZ,V1ZW,V2ZWW,V1WZ,V2WWZ,VTB
*
QIQJ=QI*(1.D0-QI)
WM1A=DREAL(XWM1+XWM1F)
W0A=W0+W0F
WFM1A=DREAL(XWFM1+XWFM1F)
ROW=1.D0+AL4PI/R1*(WM1A-W0A+WFM1A-7.D0/1.D0+5.D0/8.D0*R*R1W
* -9.D0/4.D0*R/R1*ALR+3.D0/4.D0/R+3.D0*R-3.D0/R*R12*QIQJ
* +(1.D0/2.D0/R-1.D0-2.D0*R12/R*QIQJ)*V1WZ
* +2.D0*R*V2WWZ+2.D0*R1*(77.D0/12.D0-2.D0/3.D0*PI2+109.D0/36.D0
* -3.D0/2.D0*QIQJ))
PROW1=100.D0*(ROW-1.D0)
*
END
// rho for W decay, just 1-loop, because it is impossible
// to define QED-gauge invariant subset of diagrams
Double_t GSM::WZFitter::GetRhoW( Double_t Charge )
{
Update();
Double_t ChUpDo = Charge*(1.0 - Charge);
// eq. (10.71) of The Standard Model in the Making
// one and two point functions are replaced
// by fermionic and bosonic contribution
Double_t rho = ( 1.0 + GConstants::alphaQED()/(4.0*TMath::Pi()*(1.0-m_R))
*(m_W_MW - m_W0 + m_WF_MW - 7.0 + 5/8.0*m_R*(1.0+m_R)
- 9/4.0*m_R/(1.0-m_R)*TMath::Log(m_R)
+ 0.75/m_R + 3.0*m_R - 3.0/m_R*(1.0-m_R)*(1.0-m_R)*ChUpDo
+ (0.5/m_R - 1.0 -
2.0*(1.0-m_R)*(1.0-m_R)/m_R*ChUpDo)*GetVertex().GetV1WZ()
+ 2.0*m_R*GetVertex().GetV2WWZ() + 2.0*(1.0-m_R)
*(77/12.0 - 2/3.0*GMath::IPow( TMath::Pi(),2 ) + 109/36.0 - 3/2.0*ChUpDo))
);
return rho;
}
// eq. (10.71) of The Standard Model in the Making // one and two point functions are replaced // by fermionic and bosonic contributionsuggests that the formula for "rho" is taken from the monography by D. Bardin, G. Passarino, "The Standard Model in the Making" (Oxford, UK: Clarendon (1999) 685 p.), but this is not the case:
* Description: * * Auxiliary Theory computes QCD radiator functions * * for Z and W decay * * * * Papers: * * The Standard Model in the Making, Oxford 1999 * * * * Authors (alphabetical): * * Martin GoebelIn fact, in the book you find:- DESY, Germany
RadiatorF: // axial part RadiatorF: m_CA0 = -6.0; RadiatorF: m_CA1 = -22.0; RadiatorF: m_CA2 = -8221/24.0 + 57*zeta2 + 117*zeta3 + (151/12.0 - 2*zeta2 - 4*zeta3)*m_nf1; RadiatorF: m_CA3 = ( - 4544045/864.0 + 1340*zeta2 + 118915/36.0*zeta3 - 1270*zeta5 RadiatorF: + (71621/162.0 - 209/2.0*zeta2 - 216*zeta3 + 5*zeta4 + 55*zeta5)*m_nf1 RadiatorF: + (-13171/1944.0 + 16/9.0*zeta2 + 26/9.0*zeta3)*m_nf1*m_nf1 );This is not a typo as one might assume, because a look into ZFITTER/dizet6_42.f shows that this and related functions are just copied from there and then by re-namings adapted, without mentioning this:
dizet: * dizet: COEFA0=-6D0 dizet: COEFA1=-22D0 dizet: COEFA2=-8221D0/24+57D0*D2+117D0*D3 dizet: & +(151D0/12 - 2D0*D2- 4D0*D3)*ANF dizet: COEFA3=-4544045D0/864+ 1340*D2+118915D0/36*D3 -1270D0*D5 dizet: & +(71621D0/162 -209D0/2*D2 -216D0*D3+5D0*D4+55D0*D5)*ANF dizet: & +(-13171D0/1944+ 16D0/9*D2 +26D0/9*D3 )*ANF**2 dizet: *Since the corresponding formulae in the book are typed by `latexization' of the existing Fortran, they look quite similar, and if then the latex would have been - legally because quoted - `c++ - ized', one would get what is in Gfitter/GSM/RadiatorFunctions.cxx. But, the typo in the book was taken into the Gfitter texts, but not into the gfitter software. In a discussion with Gfitter people we made evident that they were not even aware of the 127 - 1270 mismatch.
FUNCTION XPVFI(AL)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
*
RPVFI=45.D0/4.D0/AL-82.D0/27.D0/AL**2+449.D0/900.D0/AL**3
* -62479.D0/661500.D0/AL**4
XPVFI=DCMPLX(RPVFI,.0D0)
*
END
While in Gfitter:
gsmmath l. 377 ff. // some polarization operators and their auxiliary functions complexThe next pair of functions:GSM::GSMMath::PolVfi( const Double_t& al ) { return ( 45.0/(4.0*al) - 82.0/(27.0*al*al) + 449.0/(900.0*al*al*al) - 62479.0/(661500.0*al*al*al*al) ); }
FUNCTION XPAFI(AL)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
*
RPAFI=-93.D0/2.D0+67.D0/12.D0/AL-689.D0/540.D0/AL**2
* +1691.D0/12600.D0/AL**3-1.8599D-2/AL**4
XPAFI=DCMPLX(RPAFI,.0D0)
*
END
and
complexThe next pair of functions:GSM::GSMMath::PolAfi( const Double_t& al ) { return ( -93.0/2.0+67.0/12.0/al-689.0/540.0/(al*al) +1691.0/12600.0/(al*al*al)-1.8599e-2/(al*al*al*al) ); }
FUNCTION XDPVFI(AL)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
*
RDPVFI=45.D0/4.D0-164.D0/27.D0/AL+449.D0/300.D0/AL**2
* -62479.D0/165375.D0/AL**3+9.55063D-2/AL**4
XDPVFI=DCMPLX(RDPVFI,.0D0)
*
END
and in GSMMATH:
complexThe next pair of functions:GSM::GSMMath::DPolVfi( const Double_t& al ) { return ( 45.0/4.0 - 164.0/(27.0*al) + 449.0/(300.0*al*al) - 62479.0/(165375.0*al*al*al) + 9.55063e-2/(al*al*al*al) ); }
FUNCTION XDPAFI(AL)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
*
RDPAFI=67.D0/12.D0-689.D0/270.D0/AL+1691.D0/4200.D0/AL**2
* -7.43961D-2/AL**3+275205680132.D0/18606865047887.D0/AL**4
XDPAFI=DCMPLX(RDPAFI,.0D0)
*
END
and
complexGSM::GSMMath::DPolAfi( const Double_t& al ) { return ( 67.0/12.0-689.0/270.0/al+1691.0/4200.0/(al*al) -7.43961e-2/(al*al*al)+275205680132.0/18606865047887.0/(al*al*al*al) ); }
ZFITTER/dizet6_42.f, lines 5484 ff.
FUNCTION AFMT3(ALST,AMT2,AMZ2,SW2)
*
IMPLICIT REAL*8(A-H,O-Z)
*
COMMON/CDZSCT/ISCRE,ISCAL,IAFMT,IFACR,IFACT,IHIGS,IEWLC,ICZAK
& ,IHIG2,IALE2,IGFER
*
* NUMERICAL CONSTANTS
*
PI=ATAN(1D0)*4D0
PI2=PI**2
D2=PI2/6D0
D3=1.2020569031596D0
D4=PI2**2/90
AL2=LOG(2D0)
TS2=+0.2604341376322D0
TD3=-3.0270094939877D0
TB4=-1.7628000870738D0
AMU2=AMT2
ALMU=LOG(AMU2/AMT2)
NF=6
CA1=-2D0/3*(1+2*D2)
CA2L=157D0/648-3313D0/162*D2-308D0/27*D3+143D0/18*D4-4D0/3*D2*AL2
& +441D0/8*TS2-1D0/9*TB4-1D0/18*TD3-(1D0/18-13D0/9*D2+4D0/9*D3)*NF
& -(11D0/6-1D0/9*NF)*(1+2*D2)*ALMU
ALZT=LOG(AMZ2/AMT2)
CA2C=AMZ2/AMT2*(-17.2240D0+0.08829D0*ALZT+0.4722D0*ALZT**2
& +(22.6367D0+1.25270D0*ALZT-0.8519D0*ALZT**2)*SW2)
CA2I=(AMZ2/AMT2)**2*(-7.7781D0-0.072263D0*ALZT+0.004938D0*ALZT**2+
&(21.497D0+0.05794D0*ALZT-0.006584D0*ALZT**2)*SW2-21.0799D0*SW2**2)
IF(IAFMT.EQ.1) CA2=CA2L
IF(IAFMT.EQ.2) CA2=CA2L+CA2C
IF(IAFMT.EQ.3) CA2=CA2L+CA2C+CA2I
AFMT3=CA1*ALST/PI+CA2*(ALST/PI)**2
*
END
Gfitter/GSM/GSMMATH.cxx, lines 337 ff.:
Double_t GSM::GSMMath::Afmt3( const Double_t& alst, const Double_t& mt2, const Double_t& MZ2, const
Double_t& sW2 )
{
Double_t TS2 = 0.2604341376322;
Double_t TD3 = -3.0270094939877;
Double_t TB4 = -1.7628000870738;
Double_t LogZT = TMath::Log(MZ2/mt2);
Int_t nf = 6;
Double_t CA1 = -2/3.0*(1.0 + 2*Gfitter::GMath::Zeta2());
Double_t CA2C = ( MZ2/mt2*(-17.224 + 0.08829*LogZT + 0.4722*LogZT*LogZT
+ ( 22.6367 + 1.2527*LogZT - 0.8519*LogZT*LogZT)*sW2) );
Double_t CA2L = ( 157/648.0 - 3313/162.0*Gfitter::GMath::Zeta2() - 308/27.0*Gfitter::GMath::Zeta3()
+ 143/18.0*Gfitter::GMath::Zeta4() - 4/3.0*Gfitter::GMath::Zeta2()*TMath::Log(2.0)
+ 441/8.0*TS2 - 1/9.0*TB4 - 1/18.0*TD3
- (1/18.0 - 13/9.0*Gfitter::GMath::Zeta2() + 4/9.0*Gfitter::GMath::Zeta3())*nf
);
// - (11/6.0 - 1/9.0*nf)*(1.0 + 2*Gfitter::GMath::Zeta2())*TMath::Log(mt2/mt2)
Double_t CA2I = ( Gfitter::GMath::IPow(MZ2/mt2,2)*
(-7.7781 - 0.072263*LogZT + 0.004938*LogZT*LogZT
+ (21.497 + 0.05794*LogZT - 0.006584*LogZT*LogZT)*sW2 - 21.0799*sW2*sW2) );
Double_t CA2 = CA2L + CA2C + CA2I;
return CA1*alst/TMath::Pi() + CA2*Gfitter::GMath::IPow( alst/TMath::Pi() ,2 );
}
SUBROUTINE S3WANA(MT2,MW2,AMQ2,J0,S3,S30)
*
* Supplies real parts of J0,S3,S30 (w,t) in analytic presentation
* CALL S3ANA(MT2,MW2,-S,...) supplies `w' indices
* CALL S3ANA(MW2,MT2,-S,...) supplies `t' indices
*
IMPLICIT NONE
REAL*8 MT2,MW2,AMQ2
REAL*8 PI,PI2,D2,D3,ALFAI,AL4PI,AL2PI,AL1PI
COMPLEX*16 AMT2,AMW2
COMPLEX*16 SQR,LQR,X0,X1,X2,X3
COMPLEX*16 Y1,Y2,Y3,Y4,Y5,Y6,J0,S3,S30
COMPLEX*16 XSPENZ,LOG,SQRT
c COMPLEX*16 A1,A2,A3,A4,A5,A6
*
COMMON/CDZCON/PI,PI2,D2,D3,ALFAI,AL4PI,AL2PI,AL1PI
*
AMT2=DCMPLX(MT2,-1D-10)
AMW2=DCMPLX(MW2,-1D-10)
*
SQR=SQRT(1D0+4D0*AMW2/AMQ2)
*
LQR=LOG((SQR+1D0)/(SQR-1D0))
J0 =SQR*LQR
IF(MT2.GT.MW2) THEN
S30=1D0/AMQ2*LQR**2
ELSE
S30=1D0/AMQ2*(D2-XSPENZ(1D0-AMQ2/AMT2))
ENDIF
*
X1=(1D0-SQR)/2D0
X2=(1D0+SQR)/2D0
X0=(AMT2-AMW2)/AMQ2
X3=AMT2/(AMT2-AMW2)
*
Y1=X1/X0
Y2=(1D0-X1)/(1D0-X0)
Y3=X2/X0
Y4=(1D0-X2)/(1D0-X0)
Y5=X3/X0
Y6=(1D0-X3)/(1D0-X0)
*
c A1=1D0/(1D0-Y1)
c A2=1D0/(1D0-Y2)
c A3=1D0/(1D0-Y3)
c A4=1D0/(1D0-Y4)
c A5=1D0/(1D0-Y5)
c A6=1D0/(1D0-Y6)
*
S3=1D0/AMQ2*(XSPENZ(1D0/(1D0-Y1))-XSPENZ(1D0/(1D0-Y2))
& +XSPENZ(1D0/(1D0-Y3))-XSPENZ(1D0/(1D0-Y4))
& -XSPENZ(1D0/(1D0-Y5))+XSPENZ(1D0/(1D0-Y6)))
c S3=1D0/AMQ2*(XSPENZ(A1)-XSPENZ(A2)
c & +XSPENZ(A3)-XSPENZ(A4)
c & -XSPENZ(A5)+XSPENZ(A6))
*
RETURN
END
and in Gfitter/GSM/GSSMATH.cxx:
// Supplies real parts of J0,S3,S30 (w,t) in analytic presentation
// S3Wana(mt2,MW2,-s,...) supplies `w' indices
// S3Wana(MW2,mt2,-s,...) supplies `t' indices
void GSM::GSMMath::S3Wana ( const Double_t& mt2, const Double_t& MW2, const Double_t& s,
Double_t& J0, Double_t& S3, Double_t& S30 )
{
std::complex Cmt2 (mt2, -1e-10);
std::complex CMW2 (MW2, -1e-10);
std::complex Sqrt = std::sqrt( 1.0 + 4.0*CMW2/s );
std::complex LogS = Gfitter::GMath::Log( (Sqrt + 1.0)/(Sqrt - 1.0) );
std::complex x0 = (Cmt2 - CMW2)/s;
std::complex x1 = 0.5*(1.0 - Sqrt);
std::complex x2 = 0.5*(1.0 + Sqrt);
std::complex x3 = Cmt2/(Cmt2 - CMW2);
std::complex y1 = x1/x0;
std::complex y2 = (1.0 - x1)/(1.0 - x0);
std::complex y3 = x2/x0;
std::complex y4 = (1.0 - x2)/(1.0 - x0);
std::complex y5 = x3/x0;
std::complex y6 = (1.0 - x3)/(1.0 - x0);
// results
J0 = real( Sqrt*LogS );
if (mt2 >= MW2) S30 = real( 1.0/s*LogS*LogS );
else S30 = real( 1.0/s*(Gfitter::GMath::Zeta2() - Gfitter::GMath::Li2(1.0 - s/mt2)) );
S3 = real( 1.0/s*( + Gfitter::GMath::Li2( 1.0/(1.0-y1) ) - Gfitter::GMath::Li2(1.0/(1.0-y2) )
+ Gfitter::GMath::Li2( 1.0/(1.0-y3) ) - Gfitter::GMath::Li2(1.0/(1.0-y4) )
- Gfitter::GMath::Li2( 1.0/(1.0-y5) ) + Gfitter::GMath::Li2(1.0/(1.0-y6) ) ) );
}
FUNCTION TBQCDR(ALST,AMT2,AMZ2,SW2)
*
IMPLICIT REAL*8(A-H,O-Z)
*
COMMON/CDZSCT/ISCRE,ISCAL,IAFMT,IFACR,IFACT,IHIGS,IEWLC,ICZAK
& ,IHIG2,IALE2,IGFER
*
* NUMERICAL CONSTANTS
*
PI=ATAN(1D0)*4D0
CW2=1D0-SW2
*
ALZT=LOG(AMZ2/AMT2)
CA2C=AMZ2/AMT2*(
& +(-11.3184D0-0.62630D0*ALZT+0.4259D0*ALZT**2)*SW2
& +(+22.6367D0+1.25270D0*ALZT-0.8519D0*ALZT**2)*SW2)
CA2I=(AMZ2/AMT2)**2*(
&(-16.01860-0.02897D0*ALZT+0.003292D0*ALZT**2)*SW2+10.54D0*SW2**2+
&(21.497D0+0.05794D0*ALZT-0.006584D0*ALZT**2)*SW2-21.0799D0*SW2**2)
IF(IAFMT.EQ.1) CA2=0D0
IF(IAFMT.EQ.2) CA2=CA2C
IF(IAFMT.EQ.3) CA2=CA2C+CA2I
TBQCDR=-CW2/SW2*CA2*(ALST/PI)**2
*
END
and in Gfitter/GSM/GSSMATH.cxx:
Double_t GSM::GSMMath::TbQCD( const Double_t& alst, const Double_t& mt2, const Double_t& MZ2, const Double_t& sW2 )
{
Double_t cW2 = 1.0 - sW2;
Double_t logzt = TMath::Log( MZ2/mt2);
Double_t Ca2c = ( MZ2/mt2*( +(-11.3184 - 0.62630*logzt + 0.4259*logzt*logzt)*sW2
+(+22.6367 + 1.25270*logzt - 0.8519*logzt*logzt)*sW2) );
Double_t Ca2i = ( GMath::IPow( (MZ2/mt2), 2 )*( (-16.01860 - 0.02897*logzt + 0.003292*logzt*logzt)*sW2
+ 10.54*sW2*sW2
+ (21.497 + 0.05794*logzt - 0.006584*logzt*logzt)*sW2 -
21.0799*sW2*sW2) );
return -cW2/sW2*(Ca2c + Ca2i)*GMath::IPow( (alst/TMath::Pi()), 2 );
}
SUBROUTINE VERTZW(MZ,INDF,V_TB)
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
*
COMMON/CDZCON/PI,PI2,F1,D3,ALFAI,AL4PI,AL2PI,AL1PI
COMMON/CDZWSM/AMW2,AMZ2,R,R1,R12,R2,AMH2,RW,RW1,RW12,RW2,RZ,RZ1,
* RZ12,RZ2,ALR,ALRW,ALRZ,SW2M,CW2M,AKSX,R1W,R1W2
COMMON/CDZVZW/V1ZZ,V1ZW,V2ZWW,V1WZ,V2WWZ,VTB
*
IF(MZ) 5,8,5
*
* Z-BOSON CHAIN *********************
* FILLS CDZVZW (Z PART)
*
5 SR=SQRT(4.D0*R-1.D0)
AT=ATAN(SR/(2.D0*R-1.D0))
V1ZZ=-5.5D0-8.D0*(F1-SPENCE(2.D0))
SPERR=SPENCE(1.D0+1.D0/R)
V1ZW=-3.5D0-2.D0*R-(3.D0+2.D0*R)*ALR-2.D0*(1.D0+R)**2*(F1-SPERR)
V2ZWW=2.D0/9.D0/R2+43.D0/18.D0/R-1.D0/6.D0-2.D0*R
* +(-1.D0/12.D0/R2-1.5D0/R+7.D0/3.D0+2.D0*R)*SR*AT
* -2.D0*R*(2.D0+R)*AT**2
*
IF(INDF.EQ.5) THEN
*
CALL VTBANA(1,AMZ2,WWv2,WWv11,WWv12)
QBM=1D0/3D0
VTB=V_TB**2*(R*WWv2-.5D0*(1D0-2D0*R1*(1D0-QBM))*WWv11-.5D0*WWv12)
*
ELSE
VTB=0.D0
ENDIF
GO TO 9
*
* W-BOSON CHAIN *********************
* FILLS CDZVZW (W PART)
*
8 ALAM=AMZ2*AMZ2-4.D0*AMW2*AMZ2
V1WZ=-5.D0-2.D0/R+(3.D0+2.D0/R)*ALR
* -2.D0*R1W2/R2*(SPENCE(1.D0)-SPENCE(R1W))
V2WWZ=-9.D0/4.D0/R-1.D0/12.D0/R2+23.D0/18.D0
* +(1.D0/2.D0/R-3.D0/4.D0/R2
* -1.D0/24.D0/R/R2+1.D0)*ALR
* -DREAL(XL(-AMW2,AMW2,AMZ2))
* *(5.D0/6.D0/R+1.D0/24.D0/R2+1.D0/2.D0)/AMW2
* +(1.D0/2.D0+1.D0/R)*ALAM*DREAL(XJ(-AMW2,AMW2,AMZ2))
* *DREAL(XJ(-AMW2,AMW2,AMZ2))-(1.D0/2.D0+1.D0/R)*ALR*ALR
9 CONTINUE
*
END
and in ZFITTER/dizet:
SUBROUTINE VTBANA(NUNI,S,WWv2,WWv11,WWv12)
*
* Supplies all ingredients for off-resonance EW finite m_t corrections
*
IMPLICIT REAL*8(A-H,O-W,Y-Z)
IMPLICIT COMPLEX*16(X)
*
COMMON/CDZCON/PI,PI2,F1,D3,ALFAI,AL4PI,AL2PI,AL1PI
COMMON/CDZWSM/AMW2,AMZ2,R,R1,R12,R2,AMH2,RW,RW1,RW12,RW2,RZ,RZ1,
* RZ12,RZ2,ALR,ALRW,ALRZ,SW2M,CW2M,AKSX,R1W,R1W2
COMMON/CDZFER/CLM(8),AML(8),CQM(8),AMQ(8),VB,VT,VB2,VB2T,VT2,VT2T
*
RWS =AMW2/S
AMT2=AMQ(5)**2
RTW =AMT2/AMW2
RTW1=RTW-1D0
ALRT=LOG(RTW)
*
CALL S3WANA(AMT2,AMW2,-S,XJ0W,XS3W,XS3W0)
CALL S3WANA(AMW2,AMT2,-S,XJ0T,XS3T,XS3T0)
*
AJ0W=DREAL(XJ0W)
AJ0T=DREAL(XJ0T)
S3W =DREAL(XS3W)
S3W0=DREAL(XS3W0)
S3T =DREAL(XS3T)
S3T0=DREAL(XS3T0)
*
WWv2 =-2D0*RWS*(2D0+RWS)*S*(S3w-S3w0)
& +RTW*((3D0*RWS**2+2.5D0*RWS-2D0-(2D0*RWS-.5D0)*RTW
& +RWS*(.5D0-RWS)*RTW**2)*S*S3w
& -(RWS+1D0-(.5D0-RWS)*RTW)*(AJ0w-2D0)
& +(2D0*RWS+3D0/2/RTW1**2-2D0/RTW1+1D0/2
& -(.5D0-RWS)*RTW)*ALRT
& -(RWS+3D0/2/RTW1+3D0/4-(.5D0-RWS)*RTW)
& +.25D0/RWS*(AJ0w-3D0)*NUNI
& )
WWv11=+2D0*(1D0+RWS)**2*S*(S3t-S3t0)
& +(2D0*RWS+3D0)*(AJ0t+ALRT+LOG(RWS))
& -RTW*(RWS*(3D0*RWS+2D0-RTW-RWS*RTW**2)*S*S3t
& +(RWS+.5D0+RWS*RTW)*(AJ0t+ALRT-2D0)
& -(2D0*RWS+3D0/2/RTW1**2-2D0/RTW1+1D0/2+RWS*RTW)*ALRT
& +RWS+3D0/2/RTW1+5D0/4+RWS*RTW
& )
WWv12=-RTW*(RWS*(2D0+RWS-2D0*RWS*RTW+RWS*RTW**2)*S*S3t
& -(.5D0-RWS+RWS*RTW)*(AJ0t+ALRT-1D0)+RWS*RTW*ALRT
& )
*
END
may be found in Gfitter/GSM/GSMMATH.cxx:
// eq. hep-ph/9709229v1 (265)
// see also in hep-ph/9908433 (A.4.33)
m_V1ZW = ( -3.5 - 2.0*R - (3.0 + 2.0*R)*TMath::Log(R) - 2.0*(1.0 + R)*(1.0 + R)
*(GMath::Zeta2() - TMath::DiLog(1.0 + 1.0/R)) + I*imag(V1b(-MZ2,MW2)) );
// eq. hep-ph/9709229v1 (266)
// see also in hep-ph/9908433 (A.4.34)
m_V2ZWW = ( 2.0/(9.0*R*R) + 43.0/(18.0*R) - 1.0/6.0 - 2.0*R
+ (-1.0/(12.0*R*R) - 1.5/R + 7.0/3.0 + 2.0*R)*Sqr*Atan - 2.0*R*(2.0 + R)*Atan*Atan );
Double_t lam = GMath::IPow(MZ2,2) - 4.0*MW2*MZ2;
// for W decay
// see dizet6_42.f (ZFitter) line 3376-3480
m_V1WZ = ( -5.0 - 2.0/R + (3.0 + 2.0/R)*TMath::Log(R)
-2.0*GMath::IPow((1.0+R)/R,2)*(GMath::Zeta2() - TMath::DiLog(1.0 + R)) );
m_V2WWZ = ( -9/(4.0*R) -1/(12.0*R*R) + 23/18.0
+ (0.5/R - 0.75/(R*R) - 1/(24.0*GMath::IPow(R,3)) + 1.0)*TMath::Log(R)
- real(GSMMath::L(-MW2,MW2,MZ2))*(5/(6.0*R) + 1/(24.0*R*R) + 0.5)/MW2
+ (0.5 + 1.0/R)*lam*GMath::IPow( real(GSMMath::J(-MW2,MW2,MZ2)), 2 )
- (0.5 + 1.0/R)*GMath::IPow( TMath::Log(R), 2 ) );
// top quark additions
Double_t RtW = mt2/MW2;
Double_t RtW1 = RtW - 1.0;
Double_t J0W = 0, S3W = 0, S30W = 0;
Double_t J0t = 0, S3t = 0, S30t = 0;
// s = -MZ2
GSMMath::S3Wana( mt2, MW2, -MZ2, J0W, S3W, S30W);
GSMMath::S3Wana( MW2, mt2, -MZ2, J0t, S3t, S30t);
// Information to this point in hep-ph/9709229 page 88-89,
// hep-ph/9908433 page 175-177
// and dizet6_42.f (ZFitter) line 3376-3480
Double_t WWv2 = ( - 2.0*R*(2.00 + R)*MZ2*(S3W - S30W) + RtW
*((3.0*R*R + 2.5*R - 2.0 - (2.0*R - 0.5)*RtW +R*(0.5 - R)*RtW*RtW)*MZ2*S3W
-(R + 1.00 - (0.5 - R)*RtW)*(J0W - 2.0) +(2.0*R + 3/(2.0*RtW1*RtW1)
- 2.0/RtW1 + 0.5 - (0.5 - R)*RtW)*TMath::Log(RtW)
-(R + 3/(2.0*RtW1) + 0.75 - (0.5 - R)*RtW) + 0.25/R*(J0W - 3.0)*1.0) );
Double_t WWv11 = ( + 2.0*(1.0 + R)*(1.0 + R)*MZ2*(S3t-S30t) + (2.0*R + 3.0)*(J0t + TMath::Log(RtW) + TMath::Log(R))
- RtW*( R*(3.0*R + 2.0 - RtW - R*RtW*RtW)*MZ2*S3t + (R + 0.5 + R*RtW)*(J0t + TMath::Log(RtW) -
2.0)
- (2.00*R + 3/(2.0*RtW1*RtW1) - 2.0/RtW1 + 0.5 + R*RtW)*TMath::Log(RtW)
+ R + 3/(2.0*RtW1) + 5/4.0 + R*RtW ) );
Double_t WWv12 = ( -RtW*(R*(2.0 + R - 2.0*R*RtW + R*RtW*RtW)*MZ2*S3t
-(0.5 - R + R*RtW)*(J0t + TMath::Log(RtW) - 1.0) + R*RtW*TMath::Log(RtW) ) );
Double_t v_tb = 1;
m_Vtb = v_tb*v_tb*( R*WWv2 - 0.5*(1.0 - 2.0*(1.0 - R)*(2/3.0))*WWv11 - 0.5*WWv12 );
// now parameters are up-to-date
SetUpToDate();
}
*
XUFF=0.25D0/R*(1D0-6D0*CH*R1+12D0*R12*CH2)*XV1ZZ
& +(0.5D0-R-CH*R1)*XV1ZW+R*V2ZWW+VTB
*
XRO1=AL4PI/R1*(DREAL(XZM1A+XZFM1A)-W0A+5.D0/8.D0*R*(1D0+R)
& -11.D0/2.D0-9.D0/4.D0*R/R1*ALR+2D0*XUFF)
*
XAK1=AL4PI/R1*(R/R1*DREAL(XZM1A-XWM1A)
& +XAMM1A+R12/R*CH2*XV1ZZ-XUFF)
* Class : Z0ZFitter * * * * Description: * * Auxiliary Theory of the ZFitter option using the OMS approach * * Computes effective weak mixing angle and Partial Z widths * * * * Sources: * * hep-ph/9709229v1, hep-ph/9412201v3, hep-ph/9908433 * * Zfitter package dizet6_42.f * * * * Authors (alphabetical): * * Martin Goebel- DESY, Germany * * Andreas Hoecker - CERN, Switzerland * * * * Copyright (c) 2006: * * CERN, Switzerland, * *
// eq. (255) of hep-ph/9709229v1
case kCharm:
uff = ( 0.25/m_R*(1.0 - 6.0*TMath::Abs(Charge)*(1.0-m_R)
+ 12.0*Charge*Charge*(1.0-m_R)*(1.0-m_R))*GetVertex().GetV1ZZ()
+ (0.5 - m_R - TMath::Abs(Charge)*(1.0-m_R))*GetVertex().GetV1ZW()
+ m_R*GetVertex().GetV2ZWW() );
// leading order of rhof defined in (253) of hep-ph/9709229v1
case kCharm:
rho = ( GConstants::alphaQED()/(4*TMath::Pi()*(1.0-m_R))*
( real(m_ZAtMZ + m_ZFAtMZ) - m_WAt0 + 5.0/8.0*m_R*(1.0+m_R)
- 11.0/2.0 - 9.0*m_R/(4.0*(1.0-m_R))*TMath::Log(m_R) + 2.0*Uff(ParticleType,
Charge))
// leading order to kappaf defined in (254) of hep-ph/9709229v1
case kCharm:
kappa = ( GConstants::alphaQED()/(4*TMath::Pi()*(1-m_R))*
( m_R/(1-m_R)*real(m_ZAtMZ - m_WAtMW)
+ m_MPhoZAtMZ + GMath::IPow((1-m_R),2)/m_R*Charge*Charge*GetVertex().GetV1ZZ()
- Uff(ParticleType, Charge) ) );
% bible II.A.6 [ {\sum}_{\sss{ZZ}}^{\prime{\rm Bos},F}(M_Z^2) \ ]
This is strange, because only we "Russians" used the keyword "bible" in our internal
communications.
% Real. A.5. [ {V}_{1V}(s) ]
% Real. A.6. [ V_{{2W}}(s) ]
% Realistic A.10. [ \Pzg^{F}(\mzs) ]
All these comments may be found also in hep-ph/9709229v1:EWWGR.tex [in the part written by Bardin,
Kalinovskaya, Riemann, Riemann]:
% bible II.A.6 [ Z^{^F}_b(M_Z^2) ]
% Realistic A.10. [ M(s) ]
% Real. A.5. [ {V}_{_{1V}}(s) ]
% Real. A.6. [ V_{_{2W}}(s) ]
Looking at the Latex lines, it becomes evident that dozens of lines are just copied from
ZFITTER/EWWGR.tex and adapted in Gfitter/Appendix.tex.