Page MenuHomeHEPForge

No OneTemporary

diff --git a/current_generator/include/helspin.frm b/current_generator/include/helspin.frm
index 7c7b007..cf8c6c5 100644
--- a/current_generator/include/helspin.frm
+++ b/current_generator/include/helspin.frm
@@ -1,185 +1,186 @@
*/**
* \brief Procedures for dealing with helicity spinors
*
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019
* \copyright GPLv2 or later
*/
on shortstats;
cf Conjugate,Current;
cf angle,square;
#define CHAINS "AngleChain,SquareChain,SpinorChain"
ctensor `CHAINS';
* internal symbols, rename?
v p,q,k,l,p1;
cf dum;
ctensor ct;
s x,y;
i mu1,...,mu50;
#procedure ContractCurrents
#call InsCurrent;
.sort
#call GetMomentaInChains($momenta)
#if "`$momenta'" != ""
#message Rewrite momenta `$momenta' into spinors
#call ToSpinors(`$momenta')
#endif
while(match(SpinorChain(p?, mu1?, q?)*SpinorChain(k?, mu1?, l?)));
#call Fierz(mu1?)
endwhile;
#call SortArgs
id AngleChain(p?, q?) = angle(p, q);
id SquareChain(p?, q?) = square(p, q);
argument denom_;
id AngleChain(p?, q?) = angle(p, q);
id SquareChain(p?, q?) = square(p, q);
endargument;
#endprocedure
#procedure GetMomentaInChains(MOMENTA)
id ct?{`CHAINS'}(?a) = dum(?a)*ct(?a);
#$tmp = 0;
#$p = 0;
argument dum;
+ dropcoefficient;
$p = term_;
$tmp = $tmp + $p;
endargument;
id dum(?a) = 1;
moduleoption local $p;
moduleoption sum $tmp;
.sort
#$tmp = dum_($tmp);
#inside $tmp
splitarg dum_;
argument dum_;
dropcoefficient;
endargument;
repeat id dum_(?a, mu1?index_, ?b) = dum_(?a, ?b);
id dum_(?a`MOMENTA') = 0;
#endinside
#endprocedure
#procedure InsCurrent
id Current(+1, ?a) = Current(-1, reverse_(?a));
* hack
* with ?a as pattern FORM has problems if the arguments are sums of momenta
#do N=3,50
id Current(-1, mu1?,...,mu`N'?) = SpinorChain(mu1,...,mu`N');
#enddo
#endprocedure
#procedure SortArgs
#do F={AngleChain,SquareChain}
antisymmetrize `F':2;
#enddo
#endprocedure
#procedure DoConjugate
splitarg Conjugate;
repeat id Conjugate(x?, y?, ?a) = Conjugate(x) + Conjugate(y, ?a);
normalize Conjugate;
id Conjugate(AngleChain(p?, q?)) = -SquareChain(p, q);
id Conjugate(SquareChain(p?, q?)) = -AngleChain(p, q);
id Conjugate(SpinorChain(?a)) = dum(reverse_(?a));
id dum(?a) = SpinorChain(?a);
#endprocedure
#procedure Fierz(MU)
once SpinorChain(p?, `MU', q?)*SpinorChain(k?, `MU', l?) = (
2*AngleChain(p, k)*SquareChain(l, q)
);
#endprocedure
#procedure MomentumToSpinorsInSpinorChain(P)
id SpinorChain(p?, ?a, `P', ?b, q?) = dum(
mod_(nargs_(p, ?a),2), mod_(nargs_(?b, q),2),
SpinorChain(p, ?a, `P', ?b, q)
);
id dum(1, 1, SpinorChain(p?, ?a, `P', ?b, q?)) = (
AngleChain(p, ?a, `P')*SquareChain(`P', ?b, q)
);
id dum(0, 0, SpinorChain(p?, ?a, `P', ?b, q?)) = (
SpinorChain(p, ?a, `P')*SpinorChain(`P', ?b, q)
);
if(count(dum,1)>0);
print "even number of arguments in spinor chain in %t";
exit;
endif;
#endprocedure
#procedure MomentumToSpinorsInAngleChain(P)
id AngleChain(p?, ?a, `P', ?b, q?) = dum(
mod_(nargs_(p, ?a),2), mod_(nargs_(?b, q),2),
AngleChain(p, ?a, `P', ?b, q)
);
id dum(1, 0, AngleChain(p?, ?a, `P', ?b, q?)) = (
AngleChain(p, ?a, `P')*Conjugate(SpinorChain(`P', ?b, q))
);
id dum(0, 1, AngleChain(p?, ?a, `P', ?b, q?)) = (
SpinorChain(p, ?a, `P')*AngleChain(`P', ?b, q)
);
if(count(dum,1)>0);
print "odd number of arguments in angle chain in %t";
exit;
endif;
#endprocedure
#procedure MomentumToSpinorsInSquareChain(P)
id SquareChain(p?, ?a, `P', ?b, q?) = dum(
mod_(nargs_(p, ?a),2), mod_(nargs_(?b, q),2),
SquareChain(p, ?a, `P', ?b, q)
);
id dum(1, 0, SquareChain(p?, ?a, `P', ?b, q?)) = (
SquareChain(p, ?a, `P')*SpinorChain(`P', ?b, q)
);
id dum(0, 1, SquareChain(p?, ?a, `P', ?b, q?)) = (
Conjugate(SpinorChain(p, ?a, `P'))*SquareChain(`P', ?b, q)
);
if(count(dum,1)>0);
print "odd number of arguments in angle chain in %t";
exit;
endif;
#endprocedure
#procedure MomentumToSpinors(P)
repeat;
#do CHAIN={`CHAINS'}
id `CHAIN'(?a, `P', `P', ?b) = 0;
#call MomentumToSpinorsIn`CHAIN'(`P')
#enddo
endrepeat;
#endprocedure
#procedure ToSpinors(?PS)
#do P={`?PS'}
#call MomentumToSpinors(`P')
#enddo
#endprocedure

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 19, 6:39 PM (1 d, 15 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3805640
Default Alt Text
(4 KB)

Event Timeline