a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
OptimizedObservablesSMEFTd6.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#ifndef OPTIMIZEDOBSERVABLESSMEFTD6_H
9#define OPTIMIZEDOBSERVABLESSMEFTD6_H
10
11class StandardModel;
12#include "ThObservable.h"
13#include "QCD.h"
14#include "OrderScheme.h"
15#include <complex>
16
17class eeWW : public ThObservable {
18public:
23 eeWW(const StandardModel& SM_i);
24
30 double computeThValue();
31
32
33protected:
34
35 void updateParameters();
36
37 // Define "zero"
38 double zero, ZERO;
39 // Model parameters independent of aS
41 double ymtau, ymt, ymb;
42 double aS, Gf, aEWM1;
43 double MH, MZ, MTA, MT, MB;
45 double MZ2, MZ4, MH2, aEW, MW, sqrt__aEW, ee, MW2;
46 double sw2, cw, sqrt__sw2, sw, g1, gw, vev, vev2, lam;
47 double yb, yt, ytau, muH, ee2, cw2;
48 std::complex<double> complexi, I1x33, I2x33, I3x33, I4x33;
49 // Model parameters dependent on aS
50 double sqrt__aS, G, G2;
51 // Model couplings independent of aS
52 std::complex<double> GC_3, GC_51, GC_53, GC_59, GC_100;
53
54private:
55
56 // Calculate flavour-independent parts of cross section.
57 virtual void sigmaKin();
58
59 // Evaluate sigmaHat(sHat).
60 virtual double sigmaHat();
61
62 // Info on the subprocess.
63 virtual std::string name() const
64 {
65 return "e+ e- > mu+ vm u~ d (sm)";
66 }
67
68 virtual int code() const
69 {
70 return 1;
71 }
72
73 const std::vector<double> & getMasses() const
74 {
75 return mME;
76 }
77
78 // Get and set momenta for matrix element evaluation
79 std::vector < double * > getMomenta()
80 {
81 return p;
82 }
83
84 void setMomenta(std::vector < double * > & momenta)
85 {
86 p = momenta;
87 }
88
89 void setInitial(int inid1, int inid2)
90 {
91 id1 = inid1;
92 id2 = inid2;
93 }
94
95 // Get matrix element vector
96 const double * getMatrixElements() const
97 {
98 return matrix_element;
99 }
100
101 // Constants for array limits
102 static const int ninitial = 2;
103 static const int nexternal = 6;
104 static const int nprocesses = 1;
105 static const int nwavefuncs = 11;
106 static const int namplitudes = 3;
107
109
110 // Private functions to calculate the matrix element for all subprocesses
111 // Calculate wavefunctions
112 void calculate_wavefunctions(const int perm[], const int hel[]);
113
114 std::complex<double> w[nwavefuncs][18];
115 std::complex<double> amp[namplitudes];
116
118
119 // Store the matrix element value from sigmaKin
121
122 // Color flows, used when selecting color
123 double * jamp2[nprocesses];
124
125 // vector with external particle masses
126 std::vector<double> mME;
127
128 // vector with momenta (to be changed each event)
129 std::vector <double * > p;
130
131 // Initial particle ids
132 int id1, id2;
133
134 double Sgn(double e, double f);
135
136 void oxxxxx(double p[4], double fmass, int nhel, int nsf, std::complex<double> fo[6]);
137
138 void sxxxxx(double p[4], int nss, std::complex<double> sc[3]);
139
140 void ixxxxx(double p[4], double fmass, int nhel, int nsf, std::complex<double> fi[6]);
141
142 void txxxxx(double p[4], double tmass, int nhel, int nst, std::complex<double> fi[18]);
143
144 void vxxxxx(double p[4], double vmass, int nhel, int nsv, std::complex<double> v[6]);
145
146 void VVV1_0(std::complex<double> V1[], std::complex<double> V2[],
147 std::complex<double> V3[], std::complex<double> COUP, std::complex<double>& vertex);
148
149 void FFV4_3(std::complex<double> F1[], std::complex<double> F2[],
150 std::complex<double> COUP, double M3, double W3, std::complex<double> V3[]);
151
152 void FFV2_3(std::complex<double> F1[], std::complex<double> F2[],
153 std::complex<double> COUP, double M3, double W3, std::complex<double> V3[]);
154 void FFV2_4_3(std::complex<double> F1[], std::complex<double> F2[],
155 std::complex<double> COUP1, std::complex<double> COUP2, double M3, double
156 W3, std::complex<double> V3[]);
157
158 void FFV1P0_3(std::complex<double> F1[], std::complex<double> F2[],
159 std::complex<double> COUP, double M3, double W3, std::complex<double> V3[]);
160
161 void FFV2_1(std::complex<double> F2[], std::complex<double> V3[],
162 std::complex<double> COUP, double M1, double W1, std::complex<double> F1[]);
163
164 void FFV2_0(std::complex<double> F1[], std::complex<double> F2[],
165 std::complex<double> V3[], std::complex<double> COUP, std::complex<double>
166 & vertex);
167
168};
169
170#endif /* OPTIMIZEDOBSERVABLESSMEFTD6_H */
171
A model class for the Standard Model.
A class for a model prediction of an observable.
Definition: ThObservable.h:25
std::complex< double > GC_100
void FFV2_4_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP1, std::complex< double > COUP2, double M3, double W3, std::complex< double > V3[])
std::complex< double > GC_3
std::vector< double > mME
static const int nexternal
const std::vector< double > & getMasses() const
void calculate_wavefunctions(const int perm[], const int hel[])
double computeThValue()
hep-ph/9512380v2
static const int nwavefuncs
std::complex< double > w[nwavefuncs][18]
std::complex< double > GC_59
std::complex< double > GC_53
virtual std::string name() const
void FFV4_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
std::vector< double * > getMomenta()
virtual void sigmaKin()
double Sgn(double e, double f)
std::complex< double > I1x33
void sxxxxx(double p[4], int nss, std::complex< double > sc[3])
virtual int code() const
std::vector< double * > p
std::complex< double > GC_51
std::complex< double > I2x33
double matrix_1_epem_wpwm_wp_mupvm_wm_uxd()
std::complex< double > I3x33
std::complex< double > amp[namplitudes]
int perm[nexternal]
void VVV1_0(std::complex< double > V1[], std::complex< double > V2[], std::complex< double > V3[], std::complex< double > COUP, std::complex< double > &vertex)
void FFV2_0(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > V3[], std::complex< double > COUP, std::complex< double > &vertex)
static const int nprocesses
eeWW(const StandardModel &SM_i)
void ixxxxx(double p[4], double fmass, int nhel, int nsf, std::complex< double > fi[6])
void txxxxx(double p[4], double tmass, int nhel, int nst, std::complex< double > fi[18])
void vxxxxx(double p[4], double vmass, int nhel, int nsv, std::complex< double > v[6])
double * jamp2[nprocesses]
void FFV2_1(std::complex< double > F2[], std::complex< double > V3[], std::complex< double > COUP, double M1, double W1, std::complex< double > F1[])
void setMomenta(std::vector< double * > &momenta)
std::complex< double > complexi
const double * getMatrixElements() const
static const int namplitudes
static const int ninitial
void setInitial(int inid1, int inid2)
void FFV1P0_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
double matrix_element[nprocesses]
void FFV2_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
void oxxxxx(double p[4], double fmass, int nhel, int nsf, std::complex< double > fo[6])
virtual double sigmaHat()
std::complex< double > I4x33