8 #ifndef Pythia8_HelicityMatrixElements_H
9 #define Pythia8_HelicityMatrixElements_H
13 #include "HelicityBasics.h"
14 #include "PythiaComplex.h"
15 #include "PythiaStdlib.h"
16 #include "StandardModel.h"
39 virtual double decayWeight(vector<HelicityParticle>&);
42 virtual double decayWeightMax(vector<HelicityParticle>&)
43 {
return DECAYWEIGHTMAX;}
46 virtual complex calculateME(vector<int>){
return complex(0,0);}
49 virtual void calculateD(vector<HelicityParticle>&);
52 virtual void calculateRho(
unsigned int, vector<HelicityParticle>&);
58 virtual complex sBreitWigner(
double m0,
double m1,
double s,
60 virtual complex pBreitWigner(
double m0,
double m1,
double s,
62 virtual complex dBreitWigner(
double m0,
double m1,
double s,
68 double DECAYWEIGHTMAX;
71 vector< GammaMatrix > gamma;
83 vector< vector< Wave4 > > u;
86 virtual void initConstants() {};
89 virtual void initWaves(vector<HelicityParticle>&) {};
100 void calculateRho(
unsigned int, vector<HelicityParticle>&,
101 vector<int>&, vector<int>&,
unsigned int);
104 void calculateD(vector<HelicityParticle>&, vector<int>&, vector<int>&,
108 void decayWeight(vector<HelicityParticle>&, vector<int>&, vector<int>&,
109 complex&,
unsigned int);
112 complex calculateProductD(
unsigned int,
unsigned int,
113 vector<HelicityParticle>&, vector<int>&, vector<int>&);
116 complex calculateProductD(vector<HelicityParticle>&,
117 vector<int>&, vector<int>&);
130 void initWaves(vector<HelicityParticle>&);
132 complex calculateME(vector<int>);
145 void initWaves(vector<HelicityParticle>&);
147 complex calculateME(vector<int>);
165 void initConstants();
167 void initWaves(vector<HelicityParticle>&);
169 complex calculateME(vector<int>);
174 double p0CA, p2CA, p0CV, p2CV;
177 double cos2W, sin2W, zG, zM, s;
200 void initWaves(vector<HelicityParticle>&);
202 complex calculateME(vector<int>);
222 void initWaves(vector<HelicityParticle>&);
224 complex calculateME(vector<int>);
241 void initWaves(vector<HelicityParticle>&);
243 complex calculateME(vector<int>);
260 void initWaves(vector<HelicityParticle>&);
262 complex calculateME(vector<int>);
280 void calculateRho(
unsigned int, vector<HelicityParticle>&);
292 virtual void initWaves(vector<HelicityParticle>&);
294 virtual complex calculateME(vector<int>);
296 virtual double decayWeightMax(vector<HelicityParticle>&);
300 virtual void initHadronicCurrent(vector<HelicityParticle>&) {};
302 virtual void calculateResonanceWeights(vector<double>&, vector<double>&,
315 void initConstants();
317 void initHadronicCurrent(vector<HelicityParticle>&);
329 void initConstants();
331 void initWaves(vector<HelicityParticle>&);
333 complex calculateME(vector<int>);
346 void initConstants();
348 void initHadronicCurrent(vector<HelicityParticle>&);
353 vector<double> vecM, vecG, vecP, vecA;
354 vector<complex> vecW;
367 void initConstants();
369 void initHadronicCurrent(vector<HelicityParticle>&);
377 vector<double> scaM, scaG, scaP, scaA, vecM, vecG, vecP, vecA;
378 vector<complex> scaW, vecW;
390 void initConstants();
392 void initHadronicCurrent(vector<HelicityParticle>& p);
397 vector<double> rhoM, rhoG, rhoPp, rhoAp, rhoPd, rhoAd;
398 double f0M, f0G, f0P, f0A, f2M, f2G, f2P, f2A;
399 double sigM, sigG, sigP, sigA;
400 vector<complex> rhoWp, rhoWd;
401 complex f0W, f2W, sigW;
404 double s1, s2, s3, s4;
412 double a1Width(
double);
413 complex a1BreitWigner(
double);
425 void initConstants();
427 void initHadronicCurrent(vector<HelicityParticle>& p);
432 double G(
int i,
double s);
435 Wave4 t1(
int,
int,
int,
int);
436 Wave4 t2(
int,
int,
int,
int);
437 Wave4 t3(
int,
int,
int,
int);
440 complex a1D(
double s);
441 complex rhoD(
double s);
442 complex sigD(
double s);
443 complex omeD(
double s);
446 double a1FormFactor(
double s);
447 double rhoFormFactor1(
double s);
448 double rhoFormFactor2(
double s);
449 double omeFormFactor(
double s);
452 double a1M, a1G, rhoM, rhoG, sigM, sigG, omeM, omeG;
458 double sigA, sigP, omeA, omeP;
474 void initWaves(vector<HelicityParticle>&) {};
476 complex calculateME(vector<int>) {
return 1;}
478 void calculateD(vector<HelicityParticle>&) {};
480 void calculateRho(
unsigned int, vector<HelicityParticle>&) {};
482 double decayWeight(vector<HelicityParticle>&) {
return 1.0;}
484 double decayWeightMax(vector<HelicityParticle>&) {
return 1.0;}
492 #endif // end Pythia8_HelicityMatrixElements_H