1 | (* ::Package:: *)
|
---|
2 |
|
---|
3 | (*add properties to the scalar product*)
|
---|
4 | ScalarProduct[xx_,yy_+zz_] := ScalarProduct[xx,yy]+ScalarProduct[xx,zz];
|
---|
5 | ScalarProduct[xx_,aa_*yy_/;NumberQ[aa] ] := aa*ScalarProduct[xx,yy];
|
---|
6 | ScalarProduct[xx_,0] := 0;
|
---|
7 |
|
---|
8 | log = 0;(*if 0 no log terms in the integrals, if 1 ok*)
|
---|
9 | l4 = 1;(*if 0 no \[CapitalLambda]^4 terms in the integrals, if 1 ok*)
|
---|
10 |
|
---|
11 | SimplifyAmpList::usage="Simplify the result return by FeynArts (a FeynAmpList) and compute the integrals for tree level
|
---|
12 | or one loop diagrams involving only scalars (TL simplify the result if #2==1)"
|
---|
13 | (*Begin["Private`"]*)
|
---|
14 | SimplifyAmpList:=(Module[{k,i,result,gen,result2},
|
---|
15 | SimplifyAmpList::mt1l="More than one loop, not implemented";result=0;
|
---|
16 | (*run over the FeynAmps*)
|
---|
17 | For[k=1,k<=Length[#],k++,
|
---|
18 | result2=0;
|
---|
19 | If[Length[#[[k,2]]]==0,gen = #[[k,3]];,
|
---|
20 | (*integrate if one loop*)
|
---|
21 | If[Length[#[[k,2]]]==1,gen=LoopIntegrate[#[[k,3]],#[[k,2,1]]];,Message[SimplifyAmpList::mt1l]](*end if*)
|
---|
22 | ](*end if*);
|
---|
23 | (*make the different replacement du to the different particles in the loop*)
|
---|
24 | For[i=1,i<=Length[#[[k,4,2]]],i++,result2 = result2+(gen)/.MakeReplaceList[#[[k,4,1]],#[[k,4,2,i]]];
|
---|
25 | ];(*end for*)
|
---|
26 | If[#2==1,
|
---|
27 | result2 = TLSimplify[result2/.M$FACouplings];,result2 = Simplify[result2/.M$FACouplings];];
|
---|
28 | result = result+result2;
|
---|
29 | ];(*end for*)
|
---|
30 | Simplify[result]
|
---|
31 | ](*end module*))&(*end SimpifyAmpList*)
|
---|
32 |
|
---|
33 |
|
---|
34 | LoopIntegrate::usage="takes a generic one loop amplitude FeynAmp[[3]] and the momentum in the loop FeynAmp[[2,1]]
|
---|
35 | and return the result of the integration"
|
---|
36 | LoopIntegrate:=(Module[{n,res,temp,dP,D},
|
---|
37 | LoopIntegrate::tlnp="Too large number of propagtor(not implemented)";
|
---|
38 | (*number of propagators<=2*)
|
---|
39 | If[Length[#[[4]]]<=2,
|
---|
40 | (*number of propagator=2*)
|
---|
41 | If[Length[#[[4]]]==2,
|
---|
42 | res=0;
|
---|
43 | temp = (#[[5]]*#[[6]]);
|
---|
44 | ScalarProduct[xx_,x*yy_] := x*ScalarProduct[xx,yy];
|
---|
45 | dP = Simplify[(Coefficient[#[[4,1,1]]^2*(1-x)/2+#[[4,2,1]]^2*x,#2,1]/2)];
|
---|
46 | D = Simplify[(ScalarProduct[Coefficient[#[[4,1,1]],#2,0],Coefficient[#[[4,1,1]],#2,0]]+#[[4,1,2]]^2)*(1-x)
|
---|
47 | +(ScalarProduct[Coefficient[#[[4,2,1]],#2,0],Coefficient[#[[4,2,1]],#2,0]]+#[[4,2,2]]^2)*x-ScalarProduct[dP,dP]];
|
---|
48 | (*Check change of variable : Print[(ScalarProduct[#[[4,1,1]],#[[4,1,1]]]+#[[4,1,2]]^2)*(1-x)+(ScalarProduct[#[[4,2,1]],#[[4,2,1]]]+#[[4,2,2]]^2)*x];
|
---|
49 | Print[Simplify[(((ScalarProduct[#[[4,1,1]],#[[4,1,1]]]+#[[4,1,2]]^2)*(1-x)+(ScalarProduct[#[[4,2,1]],#[[4,2,1]]]+#[[4,2,2]]^2)*x)/.{#2->#2-dP})-D]];*)
|
---|
50 | temp = temp/.{#2->#2-dP};temp=ExpandAll[temp];
|
---|
51 | For[n=1,n<=Length[temp],n++,
|
---|
52 | Switch[temp[[n]],
|
---|
53 | _*ScalarProduct[#2,#2]*ScalarProduct[#2,#2],
|
---|
54 | (*Print[temp[[n]]];*)res = res+(l4*\[CapitalLambda]^4/2-2*Integrate[((D)/.ScalarProduct[xx_,yy_]->-ScalarProduct[xx,yy]),{x,0,1}]*\[CapitalLambda]^2)*temp[[n]]/ScalarProduct[#2,#2]/ScalarProduct[#2,#2];
|
---|
55 | (*Print[(l4*\[CapitalLambda]^4/2-2Integrate[D,{x,0,1}]*\[CapitalLambda]^2)*temp[[n]]/ScalarProduct[#2,#2]/ScalarProduct[#2,#2]];*),
|
---|
56 | _*ScalarProduct[#2,#2]*ScalarProduct[#2,_],
|
---|
57 | (*Print[temp[[n]]];*)res = res-(2*\[CapitalLambda]^2/d)*Integrate[(temp[[n]]/ScalarProduct[#2,#2])/.ScalarProduct[#2,xx_]->ScalarProduct[dP,xx],{x,0,1}];
|
---|
58 | (*Print[(2*\[CapitalLambda]^2/d)*Integrate[(temp[[n]]/ScalarProduct[#2,#2])/.ScalarProduct[#2,xx_]->ScalarProduct[dP,xx],{x,0,1}]];*),
|
---|
59 | _*ScalarProduct[#2,#2],
|
---|
60 | res = res-(\[CapitalLambda]^2)*Integrate[(temp[[n]]/ScalarProduct[#2,#2]),{x,0,1}];(*-sign, wick*)
|
---|
61 | (*Print[temp[[n]]];Print[-(\[CapitalLambda]^2)*Integrate[(temp[[n]]/ScalarProduct[#2,#2]),{x,0,1}]];*),
|
---|
62 | _*ScalarProduct[#2,_]*ScalarProduct[#2,bof_],
|
---|
63 | res = res+(-\[CapitalLambda]^2/d)*Integrate[(temp[[n]])/.{ScalarProduct[#2,xx_]*ScalarProduct[#2,yy_]->ScalarProduct[yy,xx]},{x,0,1}];
|
---|
64 | (*Print[temp[[n]]];Print[(-\[CapitalLambda]^2/d)*Integrate[(temp[[n]])/.ScalarProduct[#2,xx_]*ScalarProduct[#2,yy_]->ScalarProduct[yy,xx],{x,0,1}]];*),
|
---|
65 | _*ScalarProduct[#2,_]*ScalarProduct[#2,_],
|
---|
66 | res = res+(-\[CapitalLambda]^2/d)*Integrate[(temp[[n]])/.{ScalarProduct[#2,xx_]->(ScalarProduct[xx,xx])^(1/2)},{x,0,1}];
|
---|
67 | ](*end switch*)
|
---|
68 | ];(*end for*)
|
---|
69 | res=(\[ImaginaryI]*\[Pi]^2*res),
|
---|
70 | (*number of propagator=1*)
|
---|
71 | res=0;For[n=1,n<=Length[#[[5]]],n++,
|
---|
72 | Switch[#[[5,n]],(*on the kinematic factor of the numerator*)
|
---|
73 | _*ScalarProduct[#2,#2],
|
---|
74 | res = res+#[[5,n]]/ScalarProduct[#2,#2]*\[ImaginaryI] \[Pi]^2(l4*(\[CapitalLambda]^4)/2-#[[4,1,2]]^2*\[CapitalLambda]^2+#[[4,1,2]]^4*log*Log[1+\[CapitalLambda]^2/#[[4,1,2]]^2]);,
|
---|
75 | _*ScalarProduct[#2,_],
|
---|
76 | res =res;,
|
---|
77 | _,
|
---|
78 | res=res+#[[5,n]](-\[ImaginaryI]) \[Pi]^2(\[CapitalLambda]^2-#[[4,1,2]]^2*log*Log[1+\[CapitalLambda]^2/#[[4,1,2]]^2])];](*end for*)];(*end if*),
|
---|
79 | Message[LoopIntegrate::tlnp]
|
---|
80 | ];(*end if*)
|
---|
81 | res*#[[1]]*#[[2]]*#[[3]]](*end module*))&(*end LoopIntegrate*)
|
---|
82 |
|
---|
83 | MakeReplaceList::usage="takes 2 lists of the same length, l1 and l2 and return a list of replacement L[[i]]=l1[[i]]->l2[[i]]"
|
---|
84 | MakeReplaceList:=(Module[{i,Rep},MakeReplaceList::dll="The lists are not of the same length";
|
---|
85 | If[Length[#]==Length[#2],
|
---|
86 | Rep = {};
|
---|
87 | For[i=1,i<=Length[#],i++,Rep = Append[Rep,#[[i]]-> #2[[i]]];];Rep,
|
---|
88 | Message[MakeReplaceList::dll]](*end if*)
|
---|
89 | ](*end module*))&(*end MakeReplaceList*)
|
---|
90 |
|
---|
91 | (*End[]
|
---|
92 | EndPackage[]*)
|
---|
93 |
|
---|
94 |
|
---|
95 | TLSimplify::usage="return the expression after simplification using the tree level relation
|
---|
96 | for the masses and the parameters m0, rmu, rmd, rms in the isospin limit"
|
---|
97 | TLSimplify:=(Module[{res},
|
---|
98 | m0=Sqrt[2/3(mk^2-mp^2)(1-2Sqrt[2]/Tan[2T])];
|
---|
99 | mup=mp^2/r;
|
---|
100 | md=mp^2/r;
|
---|
101 | ms = (2mk^2-mp^2)/r;
|
---|
102 | res = Simplify[#/.{MK0 ->mk, MKm->mk,Mpi0->mp,Mpim->mp,Meta->Sqrt[1/3(4mk^2-mp^2+2Sqrt[2](mk^2-mp^2)Tan[T])],
|
---|
103 | Metap->Sqrt[1/3(4mk^2-mp^2-2Sqrt[2](mk^2-mp^2)Cot[T])]}];
|
---|
104 | Clear[m0,mup,md,ms];
|
---|
105 | res
|
---|
106 | ](*end module*))&(*end TLSimplify*)
|
---|
107 |
|
---|
108 |
|
---|
109 | MomSimplify::usage="return the expression after simplification using momentum conservation and p^2=m^2 for the process #2(FeynAmpList[[0,8,2]])"
|
---|
110 | MomSimplify:=(Module[{temp},
|
---|
111 | temp = #/.MomConservation[Join[-#2[[1]],#2[[2]]]];temp = Simplify[temp/.MomConservation[Join[-#2[[1]],#2[[2]]]]];(*Print[MomConservation[Join[-#2[[1]],#2[[2]]]]];*)
|
---|
112 | temp = Simplify[temp/.MakeMomentumRL[Join[-#2[[1]],#2[[2]]]]];temp
|
---|
113 | ](*end Module*)
|
---|
114 | )&(*end MomSimplify*)
|
---|
115 |
|
---|
116 | MakeMomentumRL::usage="For a process, make the replacement list, p^2->m^2"
|
---|
117 | MakeMomentumRL:=(Module[{list,k},
|
---|
118 | list = {};
|
---|
119 | For[k=2,k<=Length[#],k++,list = Append[list,ScalarProduct[#[[k,2]],#[[k,2]]]->#[[k,3]]^2];
|
---|
120 | ];(*end for*)
|
---|
121 | list
|
---|
122 | ](*end module*)
|
---|
123 | )&(*end momentumRL*)
|
---|
124 |
|
---|
125 | MomConservation::usage="p1->sum of outgoing momentum-sum of ingoing momentum+p1 and p1^2=m1^2"
|
---|
126 | MomConservation:=(Module[{p1,k},
|
---|
127 | p1=0;
|
---|
128 | For[k=2,k<=Length[#],k++,p1 = p1 +#[[k,2]];];
|
---|
129 | If[Length[#]>=3,
|
---|
130 | {-#[[1,2]]->p1,ScalarProduct[#[[Length[#],2]],#[[Length[#]-1,2]]]->Simplify[#[[1,3]]^2/2-ScalarProduct[p1,p1]/2+ScalarProduct[#[[Length[#],2]],#[[Length[#]-1,2]]]]},
|
---|
131 | -#[[1,2]]->p1
|
---|
132 | ](*end if*)
|
---|
133 |
|
---|
134 | ](*end module*)
|
---|
135 | )&(*end MomConservation*)
|
---|