PYTHIA
8.312
|
Simple struct to store information about a 3 -> 2 clustering. More...
#include <VinciaCommon.h>
Public Member Functions | |
void | setDaughters (const Event &state, int dau1In, int dau2In, int dau3In) |
Set information about daughters from current event and daughters indices. More... | |
void | setDaughters (const vector< Particle > &state, int dau1In, int dau2In, int dau3In) |
void | setMothers (int idMot1In, int idMot2In) |
Set mother particle ids. | |
void | setAntenna (bool isFSRin, enum AntFunType antFunTypeIn) |
Set antenna information. | |
bool | initInvariantAndMassVecs () |
Initialise vectors of invariants and masses. More... | |
void | setInvariantsAndMasses (const Event &state) |
Set invariants and masses. More... | |
void | setInvariantsAndMasses (const vector< Particle > &state) |
void | swap13 () |
Swap 1 <-> 3, including information about parents. | |
bool | isFF () const |
Methods to get antenna type. | |
bool | isRF () const |
bool | isII () const |
bool | isIF () const |
string | getAntName () const |
Get Vincia name of current antenna. | |
bool | is2to3 () const |
Methods to get branching type (currently only 2 -> 3). | |
Public Attributes | |
int | dau1 {} |
Branching daughter information (indices in event record). | |
int | dau2 {} |
int | dau3 {} |
bool | isFSR {true} |
Antenna information. | |
AntFunType | antFunType {NoFun} |
int | idMot1 {} |
Mother ids. | |
int | idMot2 {} |
vector< int > | helDau = {9, 9, 9} |
Helicities. | |
vector< int > | helMot = {9, 9} |
vector< double > | mDau |
Masses. | |
vector< double > | mMot |
double | saj {} |
Invariants. | |
double | sjb {} |
double | sab {} |
vector< double > | invariants |
Vector of invariants (stored as sAB, saj, sjb, sab). | |
double | q2res {} |
Value of sector resolution variable that this clustering produces. | |
double | q2evol {} |
Value of evolution variable that this clustering produces. | |
int | kMapType {} |
Kinematic map (only used for FF). | |
Simple struct to store information about a 3 -> 2 clustering.
bool initInvariantAndMassVecs | ( | ) |
Initialise vectors of invariants and masses.
Save masses of daughters.
Calculate sAB and masses of mothers according to configuration.
Final-final gluon splitting.
Final-final gluon emission.
Resonance-final gluon splitting.
Resonance-final gluon emission.
IF initial-state gluon splitting.
IF quark conversion.
IF final-state gluon splitting.
IF gluon emission.
II initial-state gluon splitting.
II quark conversion.
II Gluon emission.
Check if masses and antenna invariant make sense.
Check if we have phase space left for this emission.
Save masses and invariants
void setDaughters | ( | const Event & | state, |
int | dau1In, | ||
int | dau2In, | ||
int | dau3In | ||
) |
Set information about daughters from current event and daughters indices.
}
Sector resolution function for 3->4 branchings (currently only used for gluon splitting, with m2qq as the measure). TODO: currently disabled. double Resolution::q2sector3to4(const Particle*, const Particle* , const Particle* j1, const Particle* j2) { Vec4 pqq = j1->p() + j2->p(); double m2qq = pqq.m2Calc(); return m2qq; } Sector resolution function for 2->4 branchings (double emission). Assume j1 and j2 are colour connected, with a and b hard recoilers. TODO: currently disabled. double Resolution::q2sector2to4(const Particle* a, const Particle* b, const Particle* j1, const Particle* j2) { /// Double gluon emissions. if (j1->isGluon() && j2->isGluon()) { return min(q2sector2to3(a,j2,j1,a->id(),j2->id()), q2sector2to3(j1,b,j2,j1->id(),b->id())); } /// Gluon Splittings. else { /// Final-Final. if (a->isFinal() && b->isFinal()) { return -1.; } /// Initial-Final with b in final state. else if (b->isFinal()) { return -1.; } /// Initial-Final with a in final state. else if (a->isFinal()) { return -1.; } /// Initial-Initial. else { return -1.; } } return -1.; } Sector resolution function for 3->5 branchings (emission + splitting). TODO: currently disabled. double Resolution::q2sector3to5(Particle* a, Particle* b, Particle* j1, Particle* j2, Particle* j3) { /// j3 is gluon. Particle* gluPtr; Particle* qPtr; Particle* qBarPtr; if (j1->id() == 21) { gluPtr = j1; qPtr = (j2->id() > 0 ? j2 : j3); qBarPtr = (j2->id() < 0 ? j2 : j3); } else if (j2->id() == 21) { gluPtr = j2; qPtr = (j1->id() > 0 ? j1 : j3); qBarPtr = (j1->id() < 0 ? j1 : j3); } else if (j3->id() == 21) { gluPtr = j3; qPtr = (j2->id() > 0 ? j2 : j1); qBarPtr = (j2->id() < 0 ? j2 : j1); } else { cout << " q2sector3to5: unable to identify branching type" << endl; return 1.e19; } Vec4 pqq = qPtr->p() + qBarPtr->p(); double m2qq = pqq.m2Calc(); Particle* colPtr = a; if (a->col() != gluPtr->acol()) colPtr = j1; if (j1->col() != gluPtr->acol()) colPtr = j2; if (j2->col() != gluPtr->acol()) colPtr = j3; if (j3->col() != gluPtr->acol()) colPtr = b; Particle* acolPtr = b; if (b->acol() != gluPtr->col()) acolPtr = j3; if (j3->acol() != gluPtr->col()) acolPtr = j2; if (j2->acol() != gluPtr->col()) acolPtr = j1; if (j1->acol() != gluPtr->col()) acolPtr = a; double q2emit = q2sector2to3(colPtr,acolPtr,gluPtr,21,gluPtr->id()); return min(q2emit,m2qq);The VinciaClustering struct. Set information based on current state and indices of daughters.
Store indices of daughters.
void setDaughters | ( | const vector< Particle > & | state, |
int | dau1In, | ||
int | dau2In, | ||
int | dau3In | ||
) |
Store indices of daughters.
void setInvariantsAndMasses | ( | const Event & | state | ) |
Set invariants and masses.
Save masses.
Calculate invariants.
void setInvariantsAndMasses | ( | const vector< Particle > & | state | ) |
Save masses.
Calculate invariants.