How to generate polarized particles at LO

Created by Olivier Mattelaer on on 2013-03-05
Keywords:
polarisation
Last updated by:
Olivier Mattelaer on on 2019-12-04

Starting in MG5aMC 2.7.0 (to be confirmed).

We introduce a new syntax to handle the polarization state from initial and final particles: the {} flag
generate e+{L} e-{R} > w+{0} w-{T}

The argument in the {} can be any combination of the following one:

spin 1/2:
"L" or "+" for the left handed helicity
"R" or "-" for the right handed helicity

spin 1:
"0" for longitudinal polarization
"T" for transverse polarization
"A" for the auxiliary polarization (for offshell particle)

The syntax is also available in conjunction of decay-chain formalism in the following way:
generate p p> w+{0} w-{T}, w+ > e+ ve, w- > mu- vm~

For MadEvent, you can choose the frame in which the matrix-element is evaluated allowing you
to define uniquely what is L/R/T/0 via the run_card parameter "me_frame". The (no so smart) default is the partonic center of mass.

If you want to use reweighting feature to pass from a not polarised sample to a polarised one, the re-weighting interface allow you to define a lambda function that will select the particle to include in the boost. Here is an example:
change boost lambda part: part.pdg in [23, 24, -23]

=========================================================================================================
For previous version, the manual method is still available for initial/final state:

In this FAQ, we are going to focus on a specific example:
How to generate the cross-section/event for p p > W_L W_L

1) generate the full square matrix element (no restriction on the polarization)
./bin/mg5
generate p p > w+ w-
output madevent WW_polarized
exit

2) edit by hand the allowed polarization:
emacs WW_polarized/SubProcesses/P0_qq_wpwm/matrix1.f

You have line like:
      DATA (NHEL(I, 1),I=1,4) /-1,-1,-1,-1/
      DATA (NHEL(I, 2),I=1,4) /-1,-1,-1, 0/
      DATA (NHEL(I, 3),I=1,4) /-1,-1,-1, 1/
      DATA (NHEL(I, 4),I=1,4) /-1,-1, 0,-1/
      DATA (NHEL(I, 5),I=1,4) /-1,-1, 0, 0/
      DATA (NHEL(I, 6),I=1,4) /-1,-1, 0, 1/
      DATA (NHEL(I, 7),I=1,4) /-1,-1, 1,-1/
      DATA (NHEL(I, 8),I=1,4) /-1,-1, 1, 0/
      DATA (NHEL(I, 9),I=1,4) /-1,-1, 1, 1/
      DATA (NHEL(I, 10),I=1,4) /-1, 1,-1,-1/
      DATA (NHEL(I, 11),I=1,4) /-1, 1,-1, 0/
      DATA (NHEL(I, 12),I=1,4) /-1, 1,-1, 1/
      DATA (NHEL(I, 13),I=1,4) /-1, 1, 0,-1/
      DATA (NHEL(I, 14),I=1,4) /-1, 1, 0, 0/
      DATA (NHEL(I, 15),I=1,4) /-1, 1, 0, 1/
      DATA (NHEL(I, 16),I=1,4) /-1, 1, 1,-1/
      DATA (NHEL(I, 17),I=1,4) /-1, 1, 1, 0/
      DATA (NHEL(I, 18),I=1,4) /-1, 1, 1, 1/
      DATA (NHEL(I, 19),I=1,4) / 1,-1,-1,-1/
      DATA (NHEL(I, 20),I=1,4) / 1,-1,-1, 0/
      DATA (NHEL(I, 21),I=1,4) / 1,-1,-1, 1/
      DATA (NHEL(I, 22),I=1,4) / 1,-1, 0,-1/
      DATA (NHEL(I, 23),I=1,4) / 1,-1, 0, 0/
      DATA (NHEL(I, 24),I=1,4) / 1,-1, 0, 1/
      DATA (NHEL(I, 25),I=1,4) / 1,-1, 1,-1/
      DATA (NHEL(I, 26),I=1,4) / 1,-1, 1, 0/
      DATA (NHEL(I, 27),I=1,4) / 1,-1, 1, 1/
      DATA (NHEL(I, 28),I=1,4) / 1, 1,-1,-1/
      DATA (NHEL(I, 29),I=1,4) / 1, 1,-1, 0/
      DATA (NHEL(I, 30),I=1,4) / 1, 1,-1, 1/
      DATA (NHEL(I, 31),I=1,4) / 1, 1, 0,-1/
      DATA (NHEL(I, 32),I=1,4) / 1, 1, 0, 0/
      DATA (NHEL(I, 33),I=1,4) / 1, 1, 0, 1/
      DATA (NHEL(I, 34),I=1,4) / 1, 1, 1,-1/
      DATA (NHEL(I, 35),I=1,4) / 1, 1, 1, 0/
      DATA (NHEL(I, 36),I=1,4) / 1, 1, 1, 1/
      DATA IDEN/36/

Which correspond to the all set of allowed helicities,
you can rewrite this part to the set of helicities of interest so in this case takes only the longitudinal helicities (0)
      DATA (NHEL(I, 1),I=1,4) /-1,-1, 0, 0/
      DATA (NHEL(I, 2),I=1,4) /-1, 1, 0, 0/
      DATA (NHEL(I, 3),I=1,4) / 1,-1, 0, 0/
      DATA (NHEL(I, 4),I=1,4) / 1, 1, 0, 0/
      DATA IDEN/36/

The IDEN factor is the number of color * number of helicity of the initial states * potential symmetry factor.
Since in this case we didn't touch to the helicity of the initial particles we don't have to modify this factor.

But on the other hand we have to modify the size of the vector:
replace
      INTEGER NCOMB
      PARAMETER ( NCOMB=36)
by
      INTEGER NCOMB
      PARAMETER ( NCOMB=4)

3) Do the same for
all matrix.f
to have the list of the files to modify:
ls SubProcesses/P*/matrix*.f

4) Compile each of the modify files to check that everything is fine.
cd SubProcesses/P0_qq_wpwm/
make

5) launch the generation of events as usual
cd ../../
./bin/generate_events