8 #ifndef Pythia8_HelicityMatrixElements_H 9 #define Pythia8_HelicityMatrixElements_H 11 #include "Pythia8/Basics.h" 12 #include "Pythia8/Event.h" 13 #include "Pythia8/HelicityBasics.h" 14 #include "Pythia8/PythiaComplex.h" 15 #include "Pythia8/PythiaStdlib.h" 16 #include "Pythia8/StandardModel.h" 40 virtual double decayWeight(vector<HelicityParticle>&);
50 virtual void calculateD(vector<HelicityParticle>&);
53 virtual void calculateRho(
unsigned int, vector<HelicityParticle>&);
85 vector< vector< Wave4 > >
u;
91 virtual void initWaves(vector<HelicityParticle>&) {};
105 void calculateRho(
unsigned int, vector<HelicityParticle>&,
106 vector<int>&, vector<int>&,
unsigned int);
109 void calculateD(vector<HelicityParticle>&, vector<int>&, vector<int>&,
113 void decayWeight(vector<HelicityParticle>&, vector<int>&, vector<int>&,
117 complex calculateProductD(
unsigned int,
unsigned int,
118 vector<HelicityParticle>&, vector<int>&, vector<int>&);
121 complex calculateProductD(vector<HelicityParticle>&,
122 vector<int>&, vector<int>&);
139 void initWaves(vector<HelicityParticle>&);
146 double p0CA, p2CA, p0CV, p2CV;
160 p0CAZp(), p2CAZp(), p0CVZp(), p2CVZp(), cos2W(), sin2W(), zG(), zM(),
161 zpG(), zpM(), s(), p0Q(), p2Q(), sMin(), zaxis(), includeGamma(),
162 includeZ(), includeZp() {}
166 void initWaves(vector<HelicityParticle>&);
173 complex calculateGammaME(vector<int>);
176 complex calculateZME(vector<int>,
double,
double,
double,
double,
180 complex calculateZMEMasslessFermions(vector<int>,
double,
double,
double,
181 double,
double,
double);
184 double zpCoupling(
int id,
string type);
187 double p0CAZ, p2CAZ, p0CVZ, p2CVZ, p0CAZp, p2CAZp, p0CVZp, p2CVZp;
190 double cos2W, sin2W, zG, zM, zpG, zpM, s;
199 bool zaxis, includeGamma, includeZ, includeZp;
212 void initWaves(vector<HelicityParticle>&);
231 void initWaves(vector<HelicityParticle>&);
285 double zpCoupling(
int id,
string type);
306 void initWaves(vector<HelicityParticle>&);
325 virtual void initWaves(vector<HelicityParticle>&);
333 virtual void initHadronicCurrent(vector<HelicityParticle>&) {};
335 virtual void calculateResonanceWeights(vector<double>&, vector<double>&,
350 void initHadronicCurrent(vector<HelicityParticle>&);
364 void initWaves(vector<HelicityParticle>&);
381 void initHadronicCurrent(vector<HelicityParticle>&);
386 vector<double> vecM, vecG, vecP, vecA;
387 vector<complex> vecW;
404 void initHadronicCurrent(vector<HelicityParticle>&);
412 vector<double> scaM, scaG, scaP, scaA, vecM, vecG, vecP, vecA;
413 vector<complex> scaW, vecW;
429 void initHadronicCurrent(vector<HelicityParticle>&);
434 enum Mode{Pi0Pi0Pim, PimPimPip, Pi0PimK0b, PimPipKm, Pi0PimEta, PimKmKp,
435 Pi0K0Km, KlPimKs, Pi0Pi0Km, KlKlPim, PimKsKs, PimK0bK0, Uknown};
439 virtual void initMode();
440 virtual void initResonances() {;}
443 virtual void initMomenta(vector<HelicityParticle>&);
446 double s1{}, s2{}, s3{}, s4{};
447 Wave4 q{}, q2{}, q3{}, q4{};
459 virtual double a1PhaseSpace(
double);
460 virtual complex a1BreitWigner(
double);
463 complex T(
double m0,
double m1,
double s,
464 vector<double>& M, vector<double>& G, vector<double>& W);
465 complex T(
double s, vector<double>& M, vector<double>& G, vector<double>& W);
478 f2A(), sigM(), sigG(), sigP(), sigA() {}
482 void initResonances();
485 vector<double> rhoM, rhoG, rhoPp, rhoAp, rhoPd, rhoAd;
486 double f0M, f0G, f0P, f0A, f2M, f2G, f2P, f2A;
487 double sigM, sigG, sigP, sigA;
488 vector<complex> rhoWp, rhoWd;
497 double a1PhaseSpace(
double);
514 void initResonances();
517 vector<double> rhoMa, rhoGa, rhoWa, rhoMv, rhoGv, rhoWv;
518 vector<double> kstarMa, kstarGa, kstarWa, kstarMv, kstarGv, kstarWv;
519 vector<double> k1Ma, k1Ga, k1Wa, k1Mb, k1Gb, k1Wb;
520 vector<double> omegaM, omegaG, omegaW;
542 void initResonances();
545 vector<double> rhoMa, rhoGa, rhoWa, rhoMv, rhoGv, rhoWv;
546 vector<double> kstarM, kstarG, kstarW, k1M, k1G, k1W;
568 void initWaves(vector<HelicityParticle>&);
575 vector<double>
rhoM, rhoG, rhoW, omegaM, omegaG, omegaW;
579 complex F(
double s, vector<double> M, vector<double> G, vector<double> W);
592 omeG(), picM(), pinM(), sigA(), sigP(), omeA(), omeP(), lambda2() {}
596 void initHadronicCurrent(vector<HelicityParticle>& p);
601 double G(
int i,
double s);
615 double a1FormFactor(
double s);
616 double rhoFormFactor1(
double s);
617 double rhoFormFactor2(
double s);
618 double omeFormFactor(
double s);
621 double a1M, a1G, rhoM, rhoG, sigM, sigG, omeM, omeG;
627 double sigA, sigP, omeA, omeP;
644 omegaW(), sigmaM(), sigmaG(), sigmaW() {}
648 void initHadronicCurrent(vector<HelicityParticle>&);
660 double a1M, a1G, rhoM, rhoG, omegaM, omegaG, omegaW, sigmaM, sigmaG, sigmaW;
vector< vector< Wave4 > > u
Wave functions.
Definition: HelicityMatrixElements.h:85
std::complex< double > complex
Convenient typedef for double precision complex numbers.
Definition: PythiaComplex.h:17
Definition: HelicityMatrixElements.h:208
vector< GammaMatrix > gamma
Physics matrices.
Definition: HelicityMatrixElements.h:73
Definition: HelicityMatrixElements.h:155
ParticleData * particleDataPtr
Pointer to particle data.
Definition: HelicityMatrixElements.h:91
virtual complex sBreitWigner(double m0, double m1, double s, double M, double G)
Return an s-wave BreitWigner.
Definition: HelicityMatrixElements.cc:274
virtual void initPointers(ParticleData *, CoupSM *, Settings *=0)
Initialize the physics matrices and pointers.
Definition: HelicityMatrixElements.cc:21
Definition: HelicityBasics.h:24
vector< int > pID
Particle ID vector.
Definition: HelicityMatrixElements.h:79
Helicity matrix element for the hard process of Z/Z' -> two fermions.
Definition: HelicityMatrixElements.h:272
vector< int > pMap
Particle map vector.
Definition: HelicityMatrixElements.h:76
vector< double > pM
Particle mass vector.
Definition: HelicityMatrixElements.h:82
Helicity matrix element for the hard process of W/W' -> two fermions.
Definition: HelicityMatrixElements.h:239
virtual complex dBreitWigner(double m0, double m1, double s, double M, double G)
Return a d-wave BreitWigner.
Definition: HelicityMatrixElements.cc:300
CoupSM * coupSMPtr
Pointer to Standard Model constants.
Definition: HelicityMatrixElements.h:97
Definition: HelicityBasics.h:182
virtual void initConstants()
Initialize the constants for the matrix element (called by initChannel).
Definition: HelicityMatrixElements.h:88
Definition: StandardModel.h:135
Helicity matrix element for the hard process of X -> two fermions.
Definition: HelicityMatrixElements.h:227
virtual complex pBreitWigner(double m0, double m1, double s, double M, double G)
Return a p-wave BreitWigner.
Definition: HelicityMatrixElements.cc:287
virtual double decayWeightMax(vector< HelicityParticle > &)
Calculate the maximum matrix element decay weight.
Definition: HelicityMatrixElements.h:43
virtual double decayWeight(vector< HelicityParticle > &)
Calculate the matrix element weight for a decay.
Definition: HelicityMatrixElements.cc:163
virtual void calculateD(vector< HelicityParticle > &)
Calculate the decay matrix for a particle.
Definition: HelicityMatrixElements.cc:54
double DECAYWEIGHTMAX
Maximum decay weight. WARNING: hardcoded constant.
Definition: HelicityMatrixElements.h:70
virtual complex calculateME(vector< int >)
Calculate the helicity matrix element.
Definition: HelicityMatrixElements.h:47
virtual complex breitWigner(double s, double M, double G)
Calculate Breit-Wigner's with running widths and fixed.
Definition: HelicityMatrixElements.cc:264
HelicityMatrixElement()
Constructor and destructor.
Definition: HelicityMatrixElements.h:29
virtual HelicityMatrixElement * initChannel(vector< HelicityParticle > &)
Initialize the channel.
Definition: HelicityMatrixElements.cc:36
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
double m(const Vec4 &v1)
Invariant mass and its square.
Definition: Basics.cc:595
void setFermionLine(int, HelicityParticle &, HelicityParticle &)
Set a fermion line.
Definition: HelicityMatrixElements.cc:239
Settings * settingsPtr
Pointer to Settings.
Definition: HelicityMatrixElements.h:100
Helicity matrix element for the hard process of photon -> two fermions.
Definition: HelicityMatrixElements.h:260
virtual void calculateRho(unsigned int, vector< HelicityParticle > &)
Calculate the density matrix for a particle.
Definition: HelicityMatrixElements.cc:103
virtual void initWaves(vector< HelicityParticle > &)
Initialize the wave functions (called by decayWeight and calculateRho/D).
Definition: HelicityMatrixElements.h:91
This class holds a map of all ParticleDataEntries.
Definition: ParticleData.h:422
The helicity matrix element class.
Definition: HelicityMatrixElements.h:24
Definition: HelicityMatrixElements.h:131
Helicity matrix element for the decay of a Higgs -> two fermions.
Definition: HelicityMatrixElements.h:300
Definition: Settings.h:195