Feyncalc Installation

(* 아래 줄을 선택한 후, (mac) cmd+/ (win) ctrl+/ 로 주석 해제 *)
(*Import["https://raw.githubusercontent.com/FeynCalc/feyncalc/master/install.m"];
InstallFeynCalc[]*)

Notebook Initialization

Quit

(* Feyncalc 로드 *)
<<FeynCalc`

Main Code

이 Notebook은 WW->WW scattering amplitude에 대해 다룹니다. 여기서 모든 W boson들은 Longitudinally polarized되어있다 생각합니다.

(* external Kinematics *)
e = ((Sqrt[s])/2); (* COM frame에서 각 particle의 energy. *)
p = (Sqrt[(s/4)-(mW^2)]); (* COM frame에서 각 particle의 momentum. *)
cθ = 1 + ((2 t)/(s- 4 (mW^2))) ;(* scattering angle의 cosine *)

(* momentum 사이 scalar product들 *)
FCClearScalarProducts[];
ScalarProduct[p1,p1]=(mW^2);
ScalarProduct[p2,p2]=(mW^2);
ScalarProduct[p3,p3]=(mW^2);
ScalarProduct[p4,p4]=(mW^2);

ScalarProduct[p1,p2]=(s/2)-(mW^2);
ScalarProduct[p3,p4]=(s/2)-(mW^2);
ScalarProduct[p1,p3]=(mW^2)-(t/2);
ScalarProduct[p2,p4]=(mW^2)-(t/2);
ScalarProduct[p1,p4]=((s+t)/2)-(mW^2);
ScalarProduct[p2,p3]=((s+t)/2)-(mW^2);

(* momentum과 polarization의 scalar product들: SP로 선언됨 *)
(* Feynrule의 출력 방식 (FCE) 때문에, Mathematica의 기본 내장 함수인 Replace (/.)를 그냥 사용하면 scalar product가 replace되지 않음. 
따라서 FCI로 scalar product의 replacement rule의 형식을 바꿔줄 필요가 있음. *)
polRules=FCI[{
SP[ϵ1,p1]->0,SP[ϵ2,p2]->0,SP[ϵ3,p3]->0,SP[ϵ4,p4]->0, (* 여기까지 ϵ·p = 0 condition *)
SP[ϵ1,ϵ2]->(((p^2)+(e^2))/(mW^2)),SP[ϵ3,ϵ4]->(((p^2)+(e^2))/(mW^2)), (* Eq 30 *)
SP[ϵ1,p2]->((2 p e)/mW),SP[ϵ2,p1]->((2 p e)/mW),SP[ϵ3,p4]->((2 p e)/mW),SP[ϵ4,p3]->((2 p e)/mW), (* Eq 31 *)
SP[ϵ1,ϵ3]->(((p^2)-(e^2)cθ)/(mW^2)),SP[ϵ2,ϵ4]->(((p^2)-(e^2)cθ)/(mW^2)), (* Eq 42 *)
SP[ϵ1,p3]->((e p(1-cθ))/mW),SP[ϵ3,p1]->((e p(1-cθ))/mW),SP[ϵ2,p4]->((e p(1-cθ))/mW),SP[ϵ4,p2]->((e p(1-cθ))/mW), (* Eq 43 *)
SP[ϵ1,ϵ4]->(((p^2)+(e^2)cθ)/(mW^2)),SP[ϵ2,ϵ3]->(((p^2)+(e^2)cθ)/(mW^2)), (* Eq 56 *)
SP[ϵ1,p4]->((e p(1+cθ))/mW),SP[ϵ4,p1]->((e p(1+cθ))/mW),
SP[ϵ2,p3]->((e p(1+cθ))/mW),SP[ϵ3,p2]->((e p(1+cθ))/mW) 
}];

(* Amplitude의 external polarization factor: ℳ=(Subscript[ℳ, abmn])(ϵ^a)(ϵ^b)(ϵ^m)(ϵ^n) *)
(* 여기서 FV는 4-vector를 나타냄. a, b, m, n이 4-vector의 indice *)
extPols=FV[ϵ1,a]*FV[ϵ2,b]*FV[ϵ3,m]*FV[ϵ4,n];

(*-------------------------------------------------*)
(*-------- s-channel amplitude via Z and A --------*)
(*-------------------------------------------------*)

(* MT는 metric tensor *)
ks=p1+p2;
sVert1=MT[a,b] FV[p1-p2,g]+MT[b,g] FV[ks+p2,a]-MT[g,a] FV[p1+ks,b];
sVert2=MT[m,n] FV[p3-p4,lam]+MT[n,lam] FV[ks+p4,m]-MT[lam,m] FV[p3+ks,n];
iAmpSAZ=I*(((ee^2)/s)+(((gg^2) (cW^2))/((s-mZ^2))))*Contract[extPols*sVert1*(-MT[lam,g])*sVert2];
(* 무시한 (Subscript[k, λ])(Subscript[k, γ])항 *)
iAmpSAZkk=I*((((gg^2) (cW^2))/((s-mZ^2))))*Contract[extPols*sVert1*(FV[ks,lam] FV[ks,g])*sVert2];
AmpSAZ = -I iAmpSAZ/. polRules //Simplify
iAmpSAZkk/. polRules//Simplify

(*-------------------------------------------------*)
(*-------- t-channel amplitude via Z and A --------*)
(*-------------------------------------------------*)
kt=p1-p3;
tVert1=MT[a,m] FV[p1+p3,g]+MT[m,g] FV[kt-p3,a]-MT[g,a] FV[kt+p1,m];
tVert2=-MT[b,n] FV[p2+p4,lam]+MT[n,lam] FV[kt+p4,b]+MT[lam,b] FV[p2-kt,n];
AmpTAZ = I*(((ee^2)/t)+(((gg^2) (cW^2))/((t-mZ^2))))*Contract[extPols*tVert1*(-MT[lam,g])*tVert2];
(* 무시한 (Subscript[k, λ])(Subscript[k, γ])항 *)
iAmpTAZkk=((((gg^2) (cW^2))/((t-mZ^2))))*Contract[extPols*tVert1*(FV[kt,lam] FV[kt,g])*tVert2];
AmpTAZ = I AmpTAZ/. polRules //Simplify
iAmpTAZkk/. polRules//Simplify

(*-------------------------------------------------*)
(*--------------- 4-point amplitude ---------------*)
(*-------------------------------------------------*)
iAmp4=I gg^2*Contract[extPols*(2 MT[m,b] MT[n,a]-MT[m,a] MT[b,n]-MT[m,n] MT[a,b])];

Amp4 = I iAmp4/. polRules //Simplify

(*-------------------------------------------------*)
(*------------- Amp High Energy Limit -------------*)
(*-------------------------------------------------*)

(* 이제 s, t가 mW보다 매우 크다 가정해, amplitude를 s와 t에 대한 polynomial로 기술하고자 함. *)
(* Gemini 왈: mass에 x를 곱하고 x에 대해 series expansion을 하세요. *)
HELim[amp_]:=Module[{scaledAmp,seriesAmp},
(*1. 모든 질량(mW,mZ,mh)에 임시 파라미터 x를 곱함*)
scaledAmp=amp/. {mW->x*mW,mZ->x*mZ,mh->x*mh};
(*2. x가 0으로 가는 극한으로 Series 전개.(가장 발산하는 1/x^4 항부터 상수항인 x^0 항까지만 전개하여 O(1/s) 이하를 버림)*)
seriesAmp=Normal[Series[scaledAmp,{x,0,0}]];
(*3. 파라미터 x를 다시 1로 되돌리고 식을 깔끔하게 정리*)
Simplify[seriesAmp/. x->1]
];
HELim2[amp_]:=Module[{scaledAmp,seriesAmp},
(*1. 모든 질량(mW,mZ,mh)에 임시 파라미터 x를 곱함*)
scaledAmp=amp/. {mW->x*mW,mZ->x*mZ,mh->x*mh};
(*2. x가 0으로 가는 극한으로 Series 전개.(여기서는 1/x^4 항부터 상수항인 x^2 항까지 전개)*)
seriesAmp=Normal[Series[scaledAmp,{x,0,2}]];
(*3. 파라미터 x를 다시 1로 되돌리고 식을 깔끔하게 정리*)
Simplify[seriesAmp/. x->1]
];

Collect[HELim[AmpSAZ],{s,t}]
Collect[HELim[AmpTAZ],{s,t}]
Collect[HELim[Amp4],{s,t}]

Collect[HELim[AmpSAZ]+HELim[AmpTAZ]+HELim[Amp4],{s,t}]

(* Electroweak Cancellation! *)
EWcondition = {(ee^2)-> (gg^2)(1-(cW^2)), mZ-> (mW/cW)};
Collect[HELim[AmpSAZ]+HELim[AmpTAZ]+HELim[Amp4]/.EWcondition //Simplify,{s,t}]

(*-------------------------------------------------*)
(*---------------- Higgs Amplitude ----------------*)
(*-------------------------------------------------*)
iAmpSH=Contract[extPols*MT[a,b] MT[m,n]]*((-I (gg^2) (mW^2))/(s-(mh^2)));
iAmpTH=Contract[extPols*MT[a,m] MT[b,n]]*((-I (gg^2) (mW^2))/(t-(mh^2)));
AmpSH = I iAmpSH/. polRules //Simplify
AmpTH = I iAmpTH/. polRules //Simplify

(*-------------------------------------------------*)
(*------------ Higgs High Energy Limit ------------*)
(*-------------------------------------------------*)
Collect[HELim[AmpSH],{s,t}]
Collect[HELim[AmpTH],{s,t}]

(*-------------------------------------------------*)
(*----------------- All Summation -----------------*)
(*-------------------------------------------------*)
Collect[HELim[AmpSAZ]+HELim[AmpTAZ]+HELim[Amp4]+HELim[AmpSH]+HELim[AmpTH]/.EWcondition //Simplify,{s,t}]