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