Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F9501770
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
View Options
diff --git a/current_generator/W_extremal_qqbar.frm b/current_generator/W_extremal_qqbar.frm
index 856fb9f..7305403 100644
--- a/current_generator/W_extremal_qqbar.frm
+++ b/current_generator/W_extremal_qqbar.frm
@@ -1,102 +1,105 @@
*/**
* \brief Calculation of W + extremal qqbar current contraction
*
* TODO: unify conventions with developer manual
* the current dictionary is as follows:
*
* code | manual
* pq | p_2
* pqbar | p_1
* pg | p_a
*
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2020
* \copyright GPLv2 or later
*/
#include- include/helspin.frm
#include- include/write.frm
s h,sgb,sgn,sqqbarW;
v pq,pqbar,pg,pl,plbar,pn,pb,pW,pr,q1,q2;
i mu,nu,rho,sigma;
i mu1,...,mu20;
cf epsg,m2,m2inv,sqrt;
#do h1={+,-}
* eq:U1tensorX in developer manual, up to factors 1/sij, 1/tij
l [U1X `h1'] = (
+ Current(`h1'1, pq, nu, pg-pq, mu, pqbar+pW, rho, pqbar)
+ Current(`h1'1, pq, nu, pg-pq, rho, pg-pq-pW, mu, pqbar)
- Current(`h1'1, pq, rho, pq+pW, nu, pg-pq-pW, mu, pqbar)
);
* eq:U2tensorX in developer manual, up to factors 1/sij, 1/tij
l [U2X `h1'] = (
- Current(`h1'1, pq, mu, pg-pqbar-pW, nu, pqbar+pW, rho, pqbar)
+ Current(`h1'1, pq, mu, pg-pqbar-pW, rho, pg-pqbar, nu, pqbar)
+ Current(`h1'1, pq, rho, pq+pW, mu, pg-pqbar, nu, pqbar)
);
* eq:LtensorX in developer manual, up to factors 1/sij, 1/tij
l [LX `h1'] = (
- Current(`h1'1, pq, sigma, pqbar+pW, rho, pqbar) +
+ Current(`h1'1, pq, rho, pq+pW, sigma, pqbar)
)*(
+ (-(pb(nu)/sgb + pn(nu)/sgn)*m2(q1 + pg) + 2*q1(nu) - pg(nu))*d_(mu, sigma)
- (2*pg(sigma) + q1(sigma))*d_(mu, nu)
+ 2*pg(mu)*d_(nu, sigma)
)/sqqbarW;
#enddo
.sort
* restore kinematic factors
id Current(h?, pq, mu?, q1?, nu?, q2?, rho?, pqbar) = (
Current(h, pq, mu, q1, nu, q2, rho, pqbar)*m2inv(q1)*m2inv(q2)
);
id Current(h?, pq, mu?, q1?, nu?, pqbar) = (
Current(h, pq, mu, q1, nu, pqbar)*m2inv(q1)
);
.sort
drop;
* multiply with polarisation vector and other currents
#do h1={+,-}
#do h2={+,-}
#do hg={+,-}
#do TENSOR={U1X,U2X,LX}
l [`TENSOR' `h1'`h2'`hg'] = (
[`TENSOR' `h1']
*epsg(`hg'1, nu)
*Current(`h2'1, pn, mu, pb)
*Current(-1, pl, rho, plbar)
);
#enddo
#enddo
#enddo
#enddo
-* TODO: choice of best reference vector (pn or pb)
-id epsg(h?, mu?) = epsg(h, mu, pn);
+* choice of reference vector (pn or pb)
+* this is not exactly the optimal choice for all helicities,
+* but it's pretty close and the logic is simple
+id epsg(h?, nu?)*Current(h?, pn, mu?, pb) = epsg(h, nu, pn)*Current(h, pn, mu, pb);
+also epsg(h?, nu?) = epsg(h, nu, pb);
id epsg(-1, mu?, pr?) = sqrt(2)/2*SpinorChain(pr, mu, pg)/AngleChain(pg,pr);
id epsg(+1, mu?, pr?) = sqrt(2)/2*SpinorChain(pg, mu, pr)/SquareChain(pg,pr);
multiply replace_(q1,-(pq+pqbar+pW));
multiply replace_(pW,pl+plbar);
.sort
#call ContractCurrents
multiply replace_(
sgn,m2(pg+pn),
sgb,m2(pg+pb),
sqqbarW,m2(pq+pqbar+pW)
);
id m2inv(q1?) = 1/m2(q1);
multiply replace_(pW,pl+plbar);
.sort
format O4;
format c;
#call WriteHeader(`OUTPUT')
#call WriteOptimised(`OUTPUT',U1X,3,pg,pq,plbar,pl,pqbar,pn,pb)
#call WriteOptimised(`OUTPUT',U2X,3,pg,pq,plbar,pl,pqbar,pn,pb)
#call WriteOptimised(`OUTPUT',LX,3,pg,pq,plbar,pl,pqbar,pn,pb)
#call WriteFooter(`OUTPUT')
.end
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sun, Feb 23, 3:03 PM (57 m, 50 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4480037
Default Alt Text
(3 KB)
Attached To
rHEJ HEJ
Event Timeline
Log In to Comment