PYTHIA  8.312
Public Member Functions | Public Attributes | List of all members
AmpCalculator Class Reference

Calculator class for amplitudes, antennae, and Breit-Wigners. More...

#include <VinciaEW.h>

Public Member Functions

void initPtr (Info *infoPtrIn, AlphaEM *alphaPtrIn, AlphaStrong *alphaSPtrIn)
 Initialize the pointers.
 
void init (EWParticleData *dataIn, unordered_map< pair< int, int >, vector< pair< int, int > > > *cluMapFinalIn, unordered_map< pair< int, int >, vector< pair< int, int > > > *cluMapInitialIn)
 Initialize with maps. More...
 
void setVerbose (int verboseIn)
 Set verbosity level.
 
complex spinProd (int pol, const Vec4 &ka, const Vec4 &kb)
 Spinor products used for the calculation of the amplitudes. More...
 
complex spinProd (int pol, const Vec4 &ka, const Vec4 &pa, const Vec4 &kb)
 
complex spinProd (int pol, const Vec4 &ka, const Vec4 &pa, const Vec4 &pb, const Vec4 &kb)
 
complex spinProd (int pol, const Vec4 &ka, const Vec4 &pa, const Vec4 &pb, const Vec4 &pc, const Vec4 &kb)
 
complex spinProd (int pol, const Vec4 &ka, const Vec4 &pa, const Vec4 &pb, const Vec4 &pc, const Vec4 &pd, const Vec4 &kb)
 
Vec4 spinProdFlat (string method, const Vec4 &ka, const Vec4 &pa)
 
void initCoup (bool va, int id1, int id2, int pol, bool m)
 Initialize couplings.
 
void initFSRAmp (bool va, int id1, int id2, int pol, const Vec4 &pi, const Vec4 &pj, const double &mMot, const double &widthQ2)
 Initialize an FSR branching amplitude. More...
 
bool zdenFSRAmp (const string &method, const Vec4 &pi, const Vec4 &pj, bool check)
 Check for zero denominator in an FSR amplitude.
 
void initISRAmp (bool va, int id1, int id2, int pol, const Vec4 &pa, const Vec4 &pj, double &mA)
 Initialize an ISR branching amplitude. More...
 
bool zdenISRAmp (const string &method, const Vec4 &pa, const Vec4 &pj, bool check)
 Check for zero denominator in an ISR amplitude.
 
complex ftofvFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 Final-state branching amplitudes. More...
 
complex ftofhFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: f->fH. More...
 
complex fbartofbarvFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: fbar->fbarV. More...
 
complex fbartofbarhFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: fbar->fbarH. More...
 
complex vTtoffbarFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: VT->ffbar. More...
 
complex vTtovhFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: VT->VH. More...
 
complex vTtovvFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: VT->VV. More...
 
complex vLtoffbarFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: VL->ffbar. More...
 
complex vLtovhFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: VL->VH. More...
 
complex vLtovvFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: VL->VV. More...
 
complex htoffbarFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: H->ffbar. More...
 
complex htovvFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: H->VV. More...
 
complex htohhFSRAmp (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 FSR: H->HH. More...
 
complex ftofvISRAmp (const Vec4 &pa, const Vec4 &pj, int idA, int ida, int idj, double mA, int polA, int pola, int polj)
 Initial-state branching amplitudes. More...
 
complex ftofhISRAmp (const Vec4 &pa, const Vec4 &pj, int idA, int ida, int idj, double mA, int polA, int pola, int polj)
 ISR: f->fH. More...
 
complex fbartofbarvISRAmp (const Vec4 &pa, const Vec4 &pj, int idA, int ida, int idj, double mA, int polA, int pola, int polj)
 ISR: fbar->fbarV. More...
 
complex fbartofbarhISRAmp (const Vec4 &pa, const Vec4 &pj, int idA, int ida, int idj, double mA, int polA, int pola, int polj)
 ISR: fbar->fbarH. More...
 
complex branchAmpFSR (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli=9, int polj=9)
 Branching amplitude selector. More...
 
complex branchAmpISR (const Vec4 &pa, const Vec4 &pj, int idA, int ida, int idj, double mA, int polA, int pola=9, int polj=9)
 ISR amplitude selector. More...
 
double branchKernelFF (const Vec4 &pi, const Vec4 &pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot, int poli, int polj)
 Compute FF antenna function from amplitudes.
 
vector< AntWrapperbranchKernelFF (Vec4 pi, Vec4 pj, int idMot, int idi, int idj, double mMot, double widthQ2, int polMot)
 Compute FF antenna functions from amplitudes for all polarizations. More...
 
double branchKernelII (Vec4 pa, Vec4 pj, int idA, int ida, int idj, double mA, int polA, int pola, int polj)
 Compute II antenna function from amplitudes.
 
vector< AntWrapperbranchKernelII (Vec4 pa, Vec4 pj, int idA, int ida, int idj, double mA, int polA)
 Compute II antenna functions from amplitudes for all polarizations. More...
 
void initFFAnt (bool va, int id1, int id2, int pol, const double &Q2, const double &widthQ2, const double &xi, const double &xj, const double &mMot, const double &miIn, const double &mjIn)
 Initialize an FF antenna function. More...
 
void hmsgFFAnt (int polMot, int poli, int polj)
 Report helicity combination error for an FF antenna function.
 
void initIIAnt (int id1, int id2, int pol, const double &Q2, const double &xA, const double &xj, const double &mA, const double &maIn, const double &mjIn)
 Initialize an II antenna function. More...
 
void hmsgIIAnt (int polA, int pola, int polj)
 Report helicity combination error for an II antenna function.
 
double ftofvFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 Antenna functions. More...
 
double ftofhFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: f->fH. More...
 
double fbartofbarvFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: fbar->fbarV. More...
 
double fbartofbarhFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: fbar->fbarH. More...
 
double vtoffbarFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: V->ffbar. More...
 
double vtovhFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: V->VH. More...
 
double vtovvFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: V->VV. More...
 
double htoffbarFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: H->ffbar. More...
 
double htovvFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: H->VV. More...
 
double htohhFFAnt (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF: H->HH.
 
double ftofvIIAnt (double Q2, double xA, double xj, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA, int pola, int polj)
 II: f->fV. More...
 
double fbartofbarvIIAnt (double Q2, double xA, double xj, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA, int pola, int polj)
 II: fbar->fbarV. More...
 
double antFuncFF (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FF antenna function calculator. More...
 
vector< AntWrapperantFuncFF (double Q2, double widthQ2, double xi, double xj, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot)
 FF antenna function calculator for all outgoing polarizations. More...
 
double antFuncII (double Q2, double xA, double xj, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA, int pola, int polj)
 II antenna function calculator. More...
 
vector< AntWrapperantFuncII (double Q2, double xA, double xj, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA)
 II antenna function calculator for all outgoing polarizations. More...
 
void initFSRSplit (bool va, int id1, int id2, int pol, const double &mMot, const double &miIn, const double &mjIn)
 Initialize an FSR splitting kernel.
 
bool zdenFSRSplit (const string &method, const double &Q2, const double &z, bool check)
 Check for zero denominator in an FSR splitting kernel.
 
void hmsgFSRSplit (int polMot, int poli, int polj)
 Report helicty combination error for an FSR splitting kernel.
 
void initISRSplit (bool va, int id1, int id2, int pol, const double &mA, const double &maIn, const double &mjIn)
 Initialize an ISR splitting kernel.
 
bool zdenISRSplit (const string &method, const double &Q2, const double &z, bool flip, bool check)
 Check for zero denominator in an ISR splitting kernel.
 
void hmsgISRSplit (int polA, int pola, int polj)
 Report helicty combination error for an ISR splitting kernel.
 
double ftofvFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 Final-state splitting kernels. More...
 
double ftofhFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: f->fH. More...
 
double fbartofbarvFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: fbar->fbarV. More...
 
double fbartofbarhFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: fbar->fbarH. More...
 
double vTtoffbarFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: VT->ffbar. More...
 
double vTtovhFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: VT->ffbar. More...
 
double vTtovvFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: VT->VV. More...
 
double vLtoffbarFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: VL->ffbar. More...
 
double vLtovhFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: VL->VH. More...
 
double vLtovvFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: VL->VV. More...
 
double htoffbarFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: H->ffbar. More...
 
double htovvFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: H->VV. More...
 
double htohhFSRSplit (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 FSR: H->HH. More...
 
double ftofvISRSplit (double Q2, double z, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA, int pola, int polj)
 Initial-state splitting kernels. More...
 
double ftofhISRSplit (double Q2, double z, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA, int pola, int polj)
 ISR: f->fH. More...
 
double fbartofbarvISRSplit (double Q2, double z, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA, int pola, int polj)
 ISR: fbar->fbarV. More...
 
double fbartofbarhISRSplit (double Q2, double z, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA, int pola, int polj)
 ISR: fbar->fbarH. More...
 
double splitFuncFSR (double Q2, double z, int idMot, int idi, int idj, double mMot, double miIn, double mjIn, int polMot, int poli, int polj)
 Splitting kernel caller. More...
 
double splitFuncISR (double Q2, double z, int idA, int ida, int idj, double mA, double maIn, double mjIn, int polA, int pola, int polj)
 Splitting-function selector for ISR. More...
 
double getPartialWidth (int idMot, int idi, int idj, double mMot, int polMot)
 Compute partial decay width. More...
 
double getTotalWidth (int idMot, double mMot, int polMot)
 Compute total decay width. More...
 
double getBreitWigner (int id, double m, int pol)
 Breit-Wigner calculators. More...
 
double getBreitWignerOverestimate (int id, double m, int pol)
 Breit-Wigner overestimate.
 
double sampleMass (int id, int pol)
 Generate Breit-Wigner mass. More...
 
void applyBosonInterferenceFactor (Event &event, int XYEv, Vec4 pi, Vec4 pj, int idi, int idj, int poli, int polj)
 Bosonic interference factor. More...
 
bool polarise (vector< Particle > &state)
 Polarise a resonance decay. More...
 
double eventWeight ()
 EW event weight.
 
void eventWeight (double eventWeightIn)
 

Public Attributes

EWParticleDatadataPtr {}
 Public data members. More...
 
unordered_map< pair< int, int >, double > vMap
 
unordered_map< pair< int, int >, double > aMap
 
unordered_map< pair< int, int >, double > gMap
 
unordered_map< pair< int, int >, double > vCKM
 

Detailed Description

Calculator class for amplitudes, antennae, and Breit-Wigners.

Member Function Documentation

double antFuncFF ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF antenna function calculator.

Antenna-function selector for FF branchings.

I is fermion.

j is Higgs.

j is vector.

I is antifermion.

j is Higgs.

j is vector.

I is Higgs.

i is Higgs.

i is fermion.

i is vector.

I is vector.

i is fermion.

j is Higgs.

i is vector.

Add on factor 3 to fix colour counting for quarks.

vector< AntWrapper > antFuncFF ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot 
)

FF antenna function calculator for all outgoing polarizations.

Find appropriate spins for i and j.

Sum over all final-state spins.

double antFuncII ( double  Q2,
double  xA,
double  xj,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA,
int  pola,
int  polj 
)

II antenna function calculator.

Antenna-function selector for II branchings.

Fermion branching.

Antifermion branching.

vector< AntWrapper > antFuncII ( double  Q2,
double  xA,
double  xj,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA 
)

II antenna function calculator for all outgoing polarizations.

Find appropriate spins for a and j. Current implementation only has f -> fv.

Sum over all final-state spins.

void applyBosonInterferenceFactor ( Event event,
int  XYEv,
Vec4  pi,
Vec4  pj,
int  idi,
int  idj,
int  poli,
int  polj 
)

Bosonic interference factor.

Bosonic interference weight calculator.

The interfering bosons are X and Y. Get momentum and polarization.

For longitudinal bosons, X = Z, Y = Higgs. For transverse bosons, X = Z, Y = Gamma.

Interfering boson masses.

Compute splitting amplitudes X/Y -> idi, idj.

Now find all emission amplitudes for the emission of X/Y.

Find all particles that may be clustered with the X/Y boson.

Don't cluster with yourself.

Get all clusterings for each particle in the system. Compare with a Z because it clusters with the most things. Is the clustering candidate in the final state?

Compute emission amplitudes.

Don't add to weight if emit amplitudes are zero.

Contributions to the numerator and denominator.

Or is it in the initial state?

Always treat initial state as massless.

Compute emission amplitudes

Don't add to weight if emit amplitudes are zero.

Contributions to the numerator and denominator.

Don't do anything if there were no clusterings.

Protect against nan weights.

Get total weight.

Let weightContainer know that Vincia modified the (nominal) weight.

complex branchAmpFSR ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli = 9,
int  polj = 9 
)

Branching amplitude selector.

FSR amplitude selector.

I is fermion.

j is Higgs.

j is vector.

I is antifermion.

j is Higgs.

j is vector.

I is higgs.

i is Higgs.

i is fermion (add a factor sqrt(3) for splittings to quarks).

i is vector.

I is vector.

I is transverse.

i is fermion (add a factor sqrt(3) for splittings to quarks).

j is Higgs.

i is vector.

I is longitudinal.

i is fermion (add a factor sqrt(3) for splittings to quarks).

j is Higgs.

i is vector.

complex branchAmpISR ( const Vec4 pa,
const Vec4 pj,
int  idA,
int  ida,
int  idj,
double  mA,
int  polA,
int  pola = 9,
int  polj = 9 
)

ISR amplitude selector.

A is fermion.

j is Higgs.

j is vector.

A is antifermion.

j is Higgs.

j is vector.

vector< AntWrapper > branchKernelFF ( Vec4  pi,
Vec4  pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot 
)

Compute FF antenna functions from amplitudes for all polarizations.

Find appropriate spins for i and j.

Sum over all final-state spins.

Square amplitudes and check size.

vector< AntWrapper > branchKernelII ( Vec4  pa,
Vec4  pj,
int  idA,
int  ida,
int  idj,
double  mA,
int  polA 
)

Compute II antenna functions from amplitudes for all polarizations.

Find appropriate spins for a and j. Current implementation only has f -> fv.

Square amplitudes and check size.

double fbartofbarhFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF: fbar->fbarH.

Initialize.

Calculate antenna function.

complex fbartofbarhFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: fbar->fbarH.

Initialize.

Calculate amplitude.

double fbartofbarhFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: fbar->fbarH.

Initialize.

Calculate kernel.

complex fbartofbarhISRAmp ( const Vec4 pa,
const Vec4 pj,
int  idA,
int  ida,
int  idj,
double  mA,
int  polA,
int  pola,
int  polj 
)

ISR: fbar->fbarH.

Initialize.

Calculate amplitude.

double fbartofbarhISRSplit ( double  Q2,
double  z,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA,
int  pola,
int  polj 
)

ISR: fbar->fbarH.

Initialize.

Calculate kernel.

double fbartofbarvFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF: fbar->fbarV.

Initialize.

Calculate antenna function.

Multiply by CKM matrix - only for q+W.

complex fbartofbarvFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: fbar->fbarV.

Initialize.

Calculate amplitude. Transverse polarizations, all defined with hel pol.

Longitudinal polarizations.

Multiply by CKM matrix - only for q+W.

double fbartofbarvFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: fbar->fbarV.

Initialize.

Calculate kernel.

double fbartofbarvIIAnt ( double  Q2,
double  xA,
double  xj,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA,
int  pola,
int  polj 
)

II: fbar->fbarV.

Initialize.

Calculate antenna function.

Multiply by CKM matrix - only for q+W.

complex fbartofbarvISRAmp ( const Vec4 pa,
const Vec4 pj,
int  idA,
int  ida,
int  idj,
double  mA,
int  polA,
int  pola,
int  polj 
)

ISR: fbar->fbarV.

Initialize.

Calculate amplitude. All defined with hel pol.

Multiply by CKM matrix - only for q+W.

double fbartofbarvISRSplit ( double  Q2,
double  z,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA,
int  pola,
int  polj 
)

ISR: fbar->fbarV.

Initialize.

Calculate kernel.

double ftofhFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF: f->fH.

Initialize.

Calculate antenna function.

complex ftofhFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: f->fH.

Initialize.

Calculate amplitude.

double ftofhFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: f->fH.

Initialize.

Calculate kernel.

complex ftofhISRAmp ( const Vec4 pa,
const Vec4 pj,
int  idA,
int  ida,
int  idj,
double  mA,
int  polA,
int  pola,
int  polj 
)

ISR: f->fH.

Initialize.

Calculate amplitude.

double ftofhISRSplit ( double  Q2,
double  z,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA,
int  pola,
int  polj 
)

ISR: f->fH.

Initialize.

Calculate kernel.

double ftofvFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

Antenna functions.

FF Antenna functions for branching process I (K) -> i j (k). Q2 is the offshellness of I. xi and xj are energy fractions of pi and pj in the collinear limit.

FF: f->fV.

Initialize.

Calculate antenna function.

Multiply by CKM matrix - only for q+W.

complex ftofvFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

Final-state branching amplitudes.

Branching Amplitudes.

Branching amplitude formalism. Naming scheme: f = fermion, v = vector boson, h = higgs.

These functions still have the option to compute branching kernels with a width. FSR: f->fV.

Initialize.

Calculate amplitude. Transverse polarizations, all defined with hel -pol.

Longitudinal polarizations.

Multiply by CKM matrix - only for q+W.

double ftofvFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

Final-state splitting kernels.

Splitting functions.

FSR: f->fV.

Initialize.

Calculate kernel.

double ftofvIIAnt ( double  Q2,
double  xA,
double  xj,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA,
int  pola,
int  polj 
)

II: f->fV.

II Antenna functions for branching process A (B) -> a j (b). Q2 is the offshellness of A. xA and xj are energy fractions of pA and pj in the collinear limit.

Initialize.

Calculate antenna function.

Multiply by CKM matrix - only for q+W.

complex ftofvISRAmp ( const Vec4 pa,
const Vec4 pj,
int  idA,
int  ida,
int  idj,
double  mA,
int  polA,
int  pola,
int  polj 
)

Initial-state branching amplitudes.

ISR: f->fV.

Initialize.

Calculate amplitude (all defined with hel -pol).

Multiply by CKM matrix - only for q+W.

double ftofvISRSplit ( double  Q2,
double  z,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA,
int  pola,
int  polj 
)

Initial-state splitting kernels.

ISR: f->fV.

Initialize.

Calculate kernel.

double getBreitWigner ( int  id,
double  m,
int  pol 
)

Breit-Wigner calculators.

Breit-Wigner.

double getPartialWidth ( int  idMot,
int  idi,
int  idj,
double  mMot,
int  polMot 
)

Compute partial decay width.

Decay width calculators.

Compute Partial Width.

Compute the partial width for a single decay channel.

Check if there is any phase space available.

Compute values of running couplings.

W or Z width.

Longitudinal Z or W.

Transverse Z or W.

Quark correction.

CKM matrix.

Higgs width.

xi = xj always.

Quark correction.

Top width.

Expression are identical for top and antitop i is the bottom, j is the W.

AlphaS correction.

CKM Matrix

Check if width dropped below zero.

Return.

double getTotalWidth ( int  idMot,
double  mMot,
int  polMot 
)

Compute total decay width.

Sum over partial widths.

Top only decays to b W.

Z decays to all fermion pairs except top.

Z -> quarks.

Z - > leptons.

W decays to fermion doublets.

The vector boson width is symmetric in xi and xj So there is no difference between 24 and -24.

W -> leptons.

Higgs decays to all fermion pairs. Some are (almost) zero due to their small mass.

h-> quarks except top.

h->leptons.

Return.

double htoffbarFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF: H->ffbar.

Initialize.

Calculate antenna function.

complex htoffbarFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: H->ffbar.

Initialize.

Calculate amplitude (mi = mj).

double htoffbarFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: H->ffbar.

Initialize.

Calculate kernel.

complex htohhFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: H->HH.

Initialize.

Calculate amplitude.

double htohhFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: H->HH.

Initialize and calculate kernel.

double htovvFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF: H->VV.

Initialize.

Calculate antenna function.

complex htovvFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: H->VV.

Initialize.

Calculate amplitude.

double htovvFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: H->VV.

Initialize.

Calculate kernel. Double longitudinal.

Single longitudinal.

Transverse.

void init ( EWParticleData dataIn,
unordered_map< pair< int, int >, vector< pair< int, int > > > *  cluMapFinalIn,
unordered_map< pair< int, int >, vector< pair< int, int > > > *  cluMapInitialIn 
)

Initialize with maps.

Class calculating amplitudes.

Initialize with maps.

Store maps.

Set some global EW constants.

Store the Breit-Wigner matching mode.

Set EW event weight to one.

Get coupling constants - indices are i and j. Photon.

Z.

W.

Higgs (note that a mass factor is not included here).

Bosonic couplings.

CKM matrix.

Overestimate constants for Breit-Wigner sampling.

Compute total width for all resonances and set Breit-Wigner overestimate normalizations.

Compute width for the on-shell mass.

Update information.

Spin assignment vectors.

void initFFAnt ( bool  va,
int  id1,
int  id2,
int  pol,
const double &  Q2,
const double &  widthQ2,
const double &  xi,
const double &  xj,
const double &  mMot,
const double &  miIn,
const double &  mjIn 
)

Initialize an FF antenna function.

Masses and antenna function.

Couplings.

void initFSRAmp ( bool  va,
int  id1,
int  id2,
int  pol,
const Vec4 pi,
const Vec4 pj,
const double &  mMot,
const double &  widthQ2 
)

Initialize an FSR branching amplitude.

Masses.

Reference vectors.

Couplings.

void initIIAnt ( int  id1,
int  id2,
int  pol,
const double &  Q2,
const double &  xA,
const double &  xj,
const double &  mA,
const double &  maIn,
const double &  mjIn 
)

Initialize an II antenna function.

Masses and antenna function.

Couplings.

void initISRAmp ( bool  va,
int  id1,
int  id2,
int  pol,
const Vec4 pa,
const Vec4 pj,
double &  mA 
)

Initialize an ISR branching amplitude.

Masses (disable mass corrections in ISR).

Reference vectors.

Couplings.

bool polarise ( vector< Particle > &  state)

Polarise a resonance decay.

Polarise a decay.

TODO: Some check for state[0].

This must be a resonance decay: require one incoming particle.

Incoming particle must have a helicity (unless it is a Higgs).

Also, there must be a direction with respect to which to define hel.

Get the static weight to regularize the kernels

Branching kernels.

Check if we know this decay.

Didn't find it?

Status[1] and status[2] may be in the wrong order. Check flipped case

Didn't find it again? Give up.

Compute brKer with flipped arguments.

Compute brKer.

Select a helicity state.

double sampleMass ( int  id,
int  pol 
)

Generate Breit-Wigner mass.

Breit-Wigner Generator.

Function to generate masses for newly created particles. Returns on-shell masses for other particles.

Check if id is a resonance.

Get parameters for the overestimates.

Compute the normalizations of the two components of the Breit-Wigner overestimates.

Select one of the probs.

Do rejection sampling.

Check if the overestimate was right.

Otherwise just return the pole mass.

complex spinProd ( int  pol,
const Vec4 ka,
const Vec4 kb 
)

Spinor products used for the calculation of the amplitudes.

Check if k1 or k2 accidentally align with the direction of basis vectors.

Explicit expression for a spinor product.

Check result is valid.

double splitFuncFSR ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

Splitting kernel caller.

Splitting-function selector for FSR.

I is fermion.

j is Higgs.

j is vector.

I is antifermion.

j is Higgs.

j is vector.

I is higgs.

i is higgs.

i is fermion.

i is vector.

I is vector.

I is transverse.

i is fermion.

j is Higgs.

i is vector.

I is longitudinal.

i is fermion.

j is Higgs.

i is vector.

Factor 3 for splitting to quarks.

double splitFuncISR ( double  Q2,
double  z,
int  idA,
int  ida,
int  idj,
double  mA,
double  maIn,
double  mjIn,
int  polA,
int  pola,
int  polj 
)

Splitting-function selector for ISR.

A is fermion.

j is Higgs.

j is vector.

A is antifermion.

j is Higgs.

j is vector.

complex vLtoffbarFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: VL->ffbar.

Initialize.

Calculate amplitude.

Multiply by CKM matrix - only for W->qqbar.

double vLtoffbarFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: VL->ffbar.

Initialize.

Calculate kernel.

complex vLtovhFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: VL->VH.

Initialize.

Calculate amplitude.

double vLtovhFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: VL->VH.

Initialize.

Calculate kernel.

complex vLtovvFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: VL->VV.

Initialize.

u = pol, d = -pol, z = 0, p = mom.

Calculate amplitude.

double vLtovvFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: VL->VV.

Initialize.

Calculate kernel. Double longitudinal.

Single longitudinal.

All transverse.

double vtoffbarFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF: V->ffbar.

Initialize.

Calculate antenna function.

Multiply by CKM matrix - only for W->qqbar.

double vtovhFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF: V->VH.

Initialize.

Calculate antenna function. Check longitudinals first.

double vtovvFFAnt ( double  Q2,
double  widthQ2,
double  xi,
double  xj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FF: V->VV.

Initialize.

Triple vector coupling.

Calculate antenna function. Triple longitudinal.

Double longitudinal.

Single longitudinal.

All transverse.

complex vTtoffbarFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: VT->ffbar.

Initialize.

Calculate amplitude. All defined with hel -pol.

Multiply by CKM matrix - only for W->qqbar.

double vTtoffbarFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: VT->ffbar.

Initialize.

Calculate kernel.

complex vTtovhFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: VT->VH.

Initialize.

Calculate amplitude.

double vTtovhFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: VT->ffbar.

Initialize.

Calculate kernel.

complex vTtovvFSRAmp ( const Vec4 pi,
const Vec4 pj,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  widthQ2,
int  polMot,
int  poli,
int  polj 
)

FSR: VT->VV.

Initialize.

u = pol, d = -pol, z = 0, p = mom.

Calculate amplitude.

double vTtovvFSRSplit ( double  Q2,
double  z,
int  idMot,
int  idi,
int  idj,
double  mMot,
double  miIn,
double  mjIn,
int  polMot,
int  poli,
int  polj 
)

FSR: VT->VV.

Initialize.

Calculate kernel. Double longitudinal.

Single longitudinal.

All transverse.

Member Data Documentation

EWParticleData* dataPtr {}

Public data members.

EW data.

unordered_map<pair<int, int>, double> vMap

Maps of coupling constants. TODO: read this from data file (rather than hard code).


The documentation for this class was generated from the following files: