a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
eeWW Class Reference

#include <OptimizedObservablesSMEFTd6.h>

+ Inheritance diagram for eeWW:

Detailed Description

Definition at line 17 of file OptimizedObservablesSMEFTd6.h.

Public Member Functions

double computeThValue ()
 hep-ph/9512380v2 More...
 
 eeWW (const StandardModel &SM_i)
 
- Public Member Functions inherited from ThObservable
double getBinMax ()
 A get method to get the maximum value of the bin. More...
 
double getBinMin ()
 A get method to get the minimum value of the bin. More...
 
const StandardModelgetModel ()
 A get method to get the model. More...
 
const std::vector< std::string > getParametersForObservable ()
 A get method to get the parameters for the specific observable. More...
 
void setBinMax (double max)
 A set method to set the maximum value of the bin. More...
 
void setBinMin (double min)
 A set method to set the minimum value of the bin. More...
 
void setParametersForObservable (std::vector< std::string > parametersForObservable_i)
 A set method to get the parameters for the specific observable. More...
 
 ThObservable (const StandardModel &SM_i)
 Constructor. More...
 
 ThObservable (const ThObservable &orig)
 The copy constructor. More...
 
virtual ~ThObservable ()
 The default destructor. More...
 

Protected Member Functions

void updateParameters ()
 

Protected Attributes

double aEW
 
double aEWM1
 
double aS
 
double CKM3x3
 
std::complex< double > complexi
 
double conjg__CKM1x1
 
double conjg__CKM3x3
 
double cw
 
double cw2
 
double ee
 
double ee2
 
double G
 
double g1
 
double G2
 
double Gamma_H
 
double Gamma_T
 
double Gamma_W
 
double Gamma_Z
 
std::complex< double > GC_100
 
std::complex< double > GC_3
 
std::complex< double > GC_51
 
std::complex< double > GC_53
 
std::complex< double > GC_59
 
double Gf
 
double gw
 
std::complex< double > I1x33
 
std::complex< double > I2x33
 
std::complex< double > I3x33
 
std::complex< double > I4x33
 
double lam
 
double MB
 
double MH
 
double MH2
 
double MT
 
double MTA
 
double muH
 
double MW
 
double MW2
 
double MZ
 
double MZ2
 
double MZ4
 
double sqrt__aEW
 
double sqrt__aS
 
double sqrt__sw2
 
double sw
 
double sw2
 
double vev
 
double vev2
 
double yb
 
double ymb
 
double ymt
 
double ymtau
 
double yt
 
double ytau
 
double zero
 
double ZERO
 
- Protected Attributes inherited from ThObservable
double max
 the bin maximum. More...
 
double min
 The bin minimum. More...
 
std::vector< std::string > parametersForObservable
 a vector of parameter namesfor the specific observable More...
 
const StandardModelSM
 A reference to an object of StandardMode class. More...
 

Private Member Functions

void calculate_wavefunctions (const int perm[], const int hel[])
 
virtual int code () const
 
void FFV1P0_3 (std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
 
void FFV2_0 (std::complex< double > F1[], std::complex< double > F2[], std::complex< double > V3[], std::complex< double > COUP, std::complex< double > &vertex)
 
void FFV2_1 (std::complex< double > F2[], std::complex< double > V3[], std::complex< double > COUP, double M1, double W1, std::complex< double > F1[])
 
void FFV2_3 (std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
 
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[])
 
void FFV4_3 (std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
 
const std::vector< double > & getMasses () const
 
const double * getMatrixElements () const
 
std::vector< double * > getMomenta ()
 
void ixxxxx (double p[4], double fmass, int nhel, int nsf, std::complex< double > fi[6])
 
double matrix_1_epem_wpwm_wp_mupvm_wm_uxd ()
 
virtual std::string name () const
 
void oxxxxx (double p[4], double fmass, int nhel, int nsf, std::complex< double > fo[6])
 
void setInitial (int inid1, int inid2)
 
void setMomenta (std::vector< double * > &momenta)
 
double Sgn (double e, double f)
 
virtual double sigmaHat ()
 
virtual void sigmaKin ()
 
void sxxxxx (double p[4], int nss, std::complex< double > sc[3])
 
void txxxxx (double p[4], double tmass, int nhel, int nst, std::complex< double > fi[18])
 
void VVV1_0 (std::complex< double > V1[], std::complex< double > V2[], std::complex< double > V3[], std::complex< double > COUP, std::complex< double > &vertex)
 
void vxxxxx (double p[4], double vmass, int nhel, int nsv, std::complex< double > v[6])
 

Private Attributes

std::complex< double > amp [namplitudes]
 
int id1
 
int id2
 
double * jamp2 [nprocesses]
 
double matrix_element [nprocesses]
 
std::vector< double > mME
 
std::vector< double * > p
 
int perm [nexternal]
 
std::complex< double > w [nwavefuncs][18]
 

Static Private Attributes

static const int namplitudes = 3
 
static const int nexternal = 6
 
static const int ninitial = 2
 
static const int nprocesses = 1
 
static const int nwavefuncs = 11
 

Constructor & Destructor Documentation

◆ eeWW()

eeWW::eeWW ( const StandardModel SM_i)

constructor

Parameters
Flavour

Definition at line 12 of file OptimizedObservablesSMEFTd6.cpp.

13: ThObservable(SM_i)
14{
15}
ThObservable(const StandardModel &SM_i)
Constructor.
Definition: ThObservable.h:32

Member Function Documentation

◆ calculate_wavefunctions()

void eeWW::calculate_wavefunctions ( const int  perm[],
const int  hel[] 
)
private

Definition at line 828 of file OptimizedObservablesSMEFTd6.cpp.

829{
830 // Calculate wavefunctions for all processes
831
832 // Calculate all wavefunctions
833 oxxxxx(p[perm[0]], mME[0], hel[0], -1, w[0]);
834 ixxxxx(p[perm[1]], mME[1], hel[1], +1, w[1]);
835 ixxxxx(p[perm[2]], mME[2], hel[2], -1, w[2]);
836 oxxxxx(p[perm[3]], mME[3], hel[3], +1, w[3]);
837 FFV2_3(w[2], w[3], GC_100, MW, Gamma_W, w[4]);
838 ixxxxx(p[perm[4]], mME[4], hel[4], -1, w[5]);
839 oxxxxx(p[perm[5]], mME[5], hel[5], +1, w[6]);
840 FFV2_3(w[5], w[6], GC_100, MW, Gamma_W, w[7]);
841 FFV1P0_3(w[1], w[0], GC_3, ZERO, ZERO, w[8]);
842 FFV2_4_3(w[1], w[0], -GC_51, GC_59, MZ, Gamma_Z,
843 w[9]);
844 FFV2_1(w[0], w[4], GC_100, ZERO, ZERO, w[10]);
845
846 // Calculate all amplitudes
847 // Amplitude(s) for diagram number 0
848 VVV1_0(w[8], w[7], w[4], -GC_3, amp[0]);
849 VVV1_0(w[7], w[4], w[9], GC_53, amp[1]);
850 FFV2_0(w[1], w[10], w[7], GC_100, amp[2]);
851
852}
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
std::complex< double > w[nwavefuncs][18]
std::complex< double > GC_59
std::complex< double > GC_53
std::vector< double * > p
std::complex< double > GC_51
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)
void ixxxxx(double p[4], double fmass, int nhel, int nsf, std::complex< double > fi[6])
void FFV2_1(std::complex< double > F2[], std::complex< double > V3[], std::complex< double > COUP, double M1, double W1, std::complex< double > F1[])
void FFV1P0_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
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])

◆ code()

virtual int eeWW::code ( ) const
inlineprivatevirtual

Definition at line 68 of file OptimizedObservablesSMEFTd6.h.

69 {
70 return 1;
71 }

◆ computeThValue()

double eeWW::computeThValue ( )
virtual

hep-ph/9512380v2

Returns
theoretical value of | \( BR(B_s \rightarrow \mu \bar{\mu}) \)|

Implements ThObservable.

Definition at line 17 of file OptimizedObservablesSMEFTd6.cpp.

18{
19// double energy = 1500;
20// double weight;
21
22 // Get phase space point
23// std::vector<double*> p = get_momenta(ninitial, energy, getMasses(), weight);
24 std::vector<double*> pp(1, new double[4]);
25 pp[0][0] = 7.500000e+02;
26 pp[0][1] = 0.;
27 pp[0][2] = 0.;
28 pp[0][3] = 7.500000e+02;
29 pp.push_back(new double[4]);
30 pp[1][0] = 7.500000e+02;
31 pp[1][1] = 0.;
32 pp[1][2] = 0.;
33 pp[1][3] = -7.500000e+02;
34 pp.push_back(new double[4]);
35 pp[2][0] = 1.328270e+02;
36 pp[2][1] = -3.315104e+01;
37 pp[2][2] = 6.012053e+01;
38 pp[2][3] = -1.137081e+02;
39 pp.push_back(new double[4]);
40 pp[3][0] = 4.924941e+02;
41 pp[3][1] = -1.557744e+02;
42 pp[3][2] = -4.529006e+02;
43 pp[3][3] = 1.147424e+02;
44 pp.push_back(new double[4]);
45 pp[4][0] = 2.285372e+02;
46 pp[4][1] = -1.588214e+02;
47 pp[4][2] = -1.465645e+02;
48 pp[4][3] = 7.432258e+01;
49 pp.push_back(new double[4]);
50 pp[5][0] = 6.461417e+02;
51 pp[5][1] = 3.477469e+02;
52 pp[5][2] = 5.393446e+02;
53 pp[5][3] = -7.535681e+01;
55
56 for (int i = 0; i < 1000000; i++) {
57
58
59 // Set momenta for this event
60 setMomenta(pp);
61
62 // Evaluate matrix element
63 sigmaKin();
64 }
65 return *getMatrixElements();
66}
virtual void sigmaKin()
void setMomenta(std::vector< double * > &momenta)
const double * getMatrixElements() const

◆ FFV1P0_3()

void eeWW::FFV1P0_3 ( std::complex< double >  F1[],
std::complex< double >  F2[],
std::complex< double >  COUP,
double  M3,
double  W3,
std::complex< double >  V3[] 
)
private

Definition at line 592 of file OptimizedObservablesSMEFTd6.cpp.

594{
595 static std::complex<double> cI = std::complex<double> (0., 1.);
596 double P3[4];
597 std::complex<double> denom;
598 V3[0] = +F1[0] + F2[0];
599 V3[1] = +F1[1] + F2[1];
600 P3[0] = -V3[0].real();
601 P3[1] = -V3[1].real();
602 P3[2] = -V3[1].imag();
603 P3[3] = -V3[0].imag();
604 denom = COUP / ((P3[0] * P3[0]) - (P3[1] * P3[1]) - (P3[2] * P3[2]) - (P3[3] *
605 P3[3]) - M3 * (M3 - cI * W3));
606 V3[2] = denom * (-cI) * (F1[2] * F2[4] + F1[3] * F2[5] + F1[4] * F2[2] +
607 F1[5] * F2[3]);
608 V3[3] = denom * (-cI) * (F1[4] * F2[3] + F1[5] * F2[2] - F1[2] * F2[5] -
609 F1[3] * F2[4]);
610 V3[4] = denom * (-cI) * (-cI * (F1[2] * F2[5] + F1[5] * F2[2]) + cI * (F1[3]
611 * F2[4] + F1[4] * F2[3]));
612 V3[5] = denom * (-cI) * (F1[3] * F2[5] + F1[4] * F2[2] - F1[2] * F2[4] -
613 F1[5] * F2[3]);
614}

◆ FFV2_0()

void eeWW::FFV2_0 ( std::complex< double >  F1[],
std::complex< double >  F2[],
std::complex< double >  V3[],
std::complex< double >  COUP,
std::complex< double > &  vertex 
)
private

Definition at line 646 of file OptimizedObservablesSMEFTd6.cpp.

649{
650 static std::complex<double> cI = std::complex<double> (0., 1.);
651 std::complex<double> TMP0;
652 TMP0 = (F1[2] * (F2[4] * (V3[2] + V3[5]) + F2[5] * (V3[3] + cI * (V3[4]))) +
653 F1[3] * (F2[4] * (V3[3] - cI * (V3[4])) + F2[5] * (V3[2] - V3[5])));
654 vertex = COUP * - cI * TMP0;
655}

◆ FFV2_1()

void eeWW::FFV2_1 ( std::complex< double >  F2[],
std::complex< double >  V3[],
std::complex< double >  COUP,
double  M1,
double  W1,
std::complex< double >  F1[] 
)
private

Definition at line 616 of file OptimizedObservablesSMEFTd6.cpp.

618{
619 static std::complex<double> cI = std::complex<double> (0., 1.);
620 double P1[4];
621 std::complex<double> denom;
622 F1[0] = +F2[0] + V3[0];
623 F1[1] = +F2[1] + V3[1];
624 P1[0] = -F1[0].real();
625 P1[1] = -F1[1].real();
626 P1[2] = -F1[1].imag();
627 P1[3] = -F1[0].imag();
628 denom = COUP / ((P1[0] * P1[0]) - (P1[1] * P1[1]) - (P1[2] * P1[2]) - (P1[3] *
629 P1[3]) - M1 * (M1 - cI * W1));
630 F1[2] = denom * cI * M1 * (F2[4] * (V3[2] + V3[5]) + F2[5] * (V3[3] + cI *
631 (V3[4])));
632 F1[3] = denom * - cI * M1 * (F2[4] * (+cI * (V3[4]) - V3[3]) + F2[5] * (V3[5]
633 - V3[2]));
634 F1[4] = denom * (-cI) * (F2[4] * (P1[0] * (V3[2] + V3[5]) + (P1[1] * (+cI *
635 (V3[4]) - V3[3]) + (P1[2] * (-1.) * (V3[4] + cI * (V3[3])) - P1[3] *
636 (V3[2] + V3[5])))) + F2[5] * (P1[0] * (V3[3] + cI * (V3[4])) + (P1[1] *
637 (V3[5] - V3[2]) + (P1[2] * (-cI * (V3[2]) + cI * (V3[5])) - P1[3] *
638 (V3[3] + cI * (V3[4]))))));
639 F1[5] = denom * (-cI) * (F2[4] * (P1[0] * (V3[3] - cI * (V3[4])) + (P1[1] *
640 (-1.) * (V3[2] + V3[5]) + (P1[2] * (+cI * (V3[2] + V3[5])) + P1[3] *
641 (V3[3] - cI * (V3[4]))))) + F2[5] * (P1[0] * (V3[2] - V3[5]) + (P1[1] *
642 (-1.) * (V3[3] + cI * (V3[4])) + (P1[2] * (+cI * (V3[3]) - V3[4]) + P1[3]
643 * (V3[2] - V3[5])))));
644}

◆ FFV2_3()

void eeWW::FFV2_3 ( std::complex< double >  F1[],
std::complex< double >  F2[],
std::complex< double >  COUP,
double  M3,
double  W3,
std::complex< double >  V3[] 
)
private

Definition at line 548 of file OptimizedObservablesSMEFTd6.cpp.

550{
551 static std::complex<double> cI = std::complex<double> (0., 1.);
552 std::complex<double> denom;
553 std::complex<double> TMP1;
554 double P3[4];
555 double OM3;
556 OM3 = 0.;
557 if (M3 != 0.)
558 OM3 = 1. / (M3 * M3);
559 V3[0] = +F1[0] + F2[0];
560 V3[1] = +F1[1] + F2[1];
561 P3[0] = -V3[0].real();
562 P3[1] = -V3[1].real();
563 P3[2] = -V3[1].imag();
564 P3[3] = -V3[0].imag();
565 TMP1 = (F1[2] * (F2[4] * (P3[0] + P3[3]) + F2[5] * (P3[1] + cI * (P3[2]))) +
566 F1[3] * (F2[4] * (P3[1] - cI * (P3[2])) + F2[5] * (P3[0] - P3[3])));
567 denom = COUP / ((P3[0] * P3[0]) - (P3[1] * P3[1]) - (P3[2] * P3[2]) - (P3[3] *
568 P3[3]) - M3 * (M3 - cI * W3));
569 V3[2] = denom * (-cI) * (F1[2] * F2[4] + F1[3] * F2[5] - P3[0] * OM3 * TMP1);
570 V3[3] = denom * (-cI) * (-F1[2] * F2[5] - F1[3] * F2[4] - P3[1] * OM3 *
571 TMP1);
572 V3[4] = denom * (-cI) * (-cI * (F1[2] * F2[5]) + cI * (F1[3] * F2[4]) - P3[2]
573 * OM3 * TMP1);
574 V3[5] = denom * (-cI) * (F1[3] * F2[5] - F1[2] * F2[4] - P3[3] * OM3 * TMP1);
575}

◆ FFV2_4_3()

void eeWW::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[] 
)
private

Definition at line 577 of file OptimizedObservablesSMEFTd6.cpp.

580{
581 int i;
582 std::complex<double> Vtmp[6];
583 FFV2_3(F1, F2, COUP1, M3, W3, V3);
584 FFV4_3(F1, F2, COUP2, M3, W3, Vtmp);
585 i = 2;
586 while (i < 6) {
587 V3[i] = V3[i] + Vtmp[i];
588 i++;
589 }
590}
void FFV4_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])

◆ FFV4_3()

void eeWW::FFV4_3 ( std::complex< double >  F1[],
std::complex< double >  F2[],
std::complex< double >  COUP,
double  M3,
double  W3,
std::complex< double >  V3[] 
)
private

Definition at line 510 of file OptimizedObservablesSMEFTd6.cpp.

512{
513 static std::complex<double> cI = std::complex<double> (0., 1.);
514 std::complex<double> denom;
515 std::complex<double> TMP11;
516 double P3[4];
517 double OM3;
518 std::complex<double> TMP1;
519 OM3 = 0.;
520 if (M3 != 0.)
521 OM3 = 1. / (M3 * M3);
522 V3[0] = +F1[0] + F2[0];
523 V3[1] = +F1[1] + F2[1];
524 P3[0] = -V3[0].real();
525 P3[1] = -V3[1].real();
526 P3[2] = -V3[1].imag();
527 P3[3] = -V3[0].imag();
528 TMP1 = (F1[2] * (F2[4] * (P3[0] + P3[3]) + F2[5] * (P3[1] + cI * (P3[2]))) +
529 F1[3] * (F2[4] * (P3[1] - cI * (P3[2])) + F2[5] * (P3[0] - P3[3])));
530 TMP11 = (F1[4] * (F2[2] * (P3[0] - P3[3]) - F2[3] * (P3[1] + cI * (P3[2]))) +
531 F1[5] * (F2[2] * (+cI * (P3[2]) - P3[1]) + F2[3] * (P3[0] + P3[3])));
532 denom = COUP / ((P3[0] * P3[0]) - (P3[1] * P3[1]) - (P3[2] * P3[2]) - (P3[3] *
533 P3[3]) - M3 * (M3 - cI * W3));
534 V3[2] = denom * (-2. * cI) * (OM3 * -1. / 2. * P3[0] * (TMP1 + 2. * (TMP11)) +
535 (+1. / 2. * (F1[2] * F2[4] + F1[3] * F2[5]) + F1[4] * F2[2] + F1[5] *
536 F2[3]));
537 V3[3] = denom * (-2. * cI) * (OM3 * -1. / 2. * P3[1] * (TMP1 + 2. * (TMP11)) +
538 (-1. / 2. * (F1[2] * F2[5] + F1[3] * F2[4]) + F1[4] * F2[3] + F1[5] *
539 F2[2]));
540 V3[4] = denom * 2. * cI * (OM3 * 1. / 2. * P3[2] * (TMP1 + 2. * (TMP11)) +
541 (+1. / 2. * cI * (F1[2] * F2[5]) - 1. / 2. * cI * (F1[3] * F2[4]) - cI *
542 (F1[4] * F2[3]) + cI * (F1[5] * F2[2])));
543 V3[5] = denom * 2. * cI * (OM3 * 1. / 2. * P3[3] * (TMP1 + 2. * (TMP11)) +
544 (+1. / 2. * (F1[2] * F2[4]) - 1. / 2. * (F1[3] * F2[5]) - F1[4] * F2[2] +
545 F1[5] * F2[3]));
546}

◆ getMasses()

const std::vector< double > & eeWW::getMasses ( ) const
inlineprivate

Definition at line 73 of file OptimizedObservablesSMEFTd6.h.

74 {
75 return mME;
76 }

◆ getMatrixElements()

const double * eeWW::getMatrixElements ( ) const
inlineprivate

Definition at line 96 of file OptimizedObservablesSMEFTd6.h.

97 {
98 return matrix_element;
99 }
double matrix_element[nprocesses]

◆ getMomenta()

std::vector< double * > eeWW::getMomenta ( )
inlineprivate

Definition at line 79 of file OptimizedObservablesSMEFTd6.h.

80 {
81 return p;
82 }

◆ ixxxxx()

void eeWW::ixxxxx ( double  p[4],
double  fmass,
int  nhel,
int  nsf,
std::complex< double >  fi[6] 
)
private

Definition at line 138 of file OptimizedObservablesSMEFTd6.cpp.

139{
140 std::complex<double> chi[2];
141 double sf[2], sfomega[2], omega[2], pp, pp3, sqp0p3, sqm[2];
142 int ip, im, nh;
143 fi[0] = std::complex<double> (-p[0] * nsf, -p[3] * nsf);
144 fi[1] = std::complex<double> (-p[1] * nsf, -p[2] * nsf);
145 nh = nhel * nsf;
146 if (fmass != 0.0) {
147 pp = std::min(p[0], sqrt(p[1] * p[1] + p[2] * p[2] + p[3] * p[3]));
148 if (pp == 0.0) {
149 sqm[0] = sqrt(std::abs(fmass));
150 sqm[1] = Sgn(sqm[0], fmass);
151 ip = (1 + nh) / 2;
152 im = (1 - nh) / 2;
153 fi[2] = ip * sqm[ip];
154 fi[3] = im * nsf * sqm[ip];
155 fi[4] = ip * nsf * sqm[im];
156 fi[5] = im * sqm[im];
157 } else {
158 sf[0] = (1 + nsf + (1 - nsf) * nh) * 0.5;
159 sf[1] = (1 + nsf - (1 - nsf) * nh) * 0.5;
160 omega[0] = sqrt(p[0] + pp);
161 omega[1] = fmass / omega[0];
162 ip = (1 + nh) / 2;
163 im = (1 - nh) / 2;
164 sfomega[0] = sf[0] * omega[ip];
165 sfomega[1] = sf[1] * omega[im];
166 pp3 = std::max(pp + p[3], 0.0);
167 chi[0] = std::complex<double> (sqrt(pp3 * 0.5 / pp), 0);
168 if (pp3 == 0.0) {
169 chi[1] = std::complex<double> (-nh, 0);
170 } else {
171 chi[1] = std::complex<double> (nh * p[1], p[2]) / sqrt(2.0 * pp * pp3);
172 }
173 fi[2] = sfomega[0] * chi[im];
174 fi[3] = sfomega[0] * chi[ip];
175 fi[4] = sfomega[1] * chi[im];
176 fi[5] = sfomega[1] * chi[ip];
177 }
178 } else {
179 if (p[1] == 0.0 and p[2] == 0.0 and p[3] < 0.0) {
180 sqp0p3 = 0.0;
181 } else {
182 sqp0p3 = sqrt(std::max(p[0] + p[3], 0.0)) * nsf;
183 }
184 chi[0] = std::complex<double> (sqp0p3, 0.0);
185 if (sqp0p3 == 0.0) {
186 chi[1] = std::complex<double> (-nhel * sqrt(2.0 * p[0]), 0.0);
187 } else {
188 chi[1] = std::complex<double> (nh * p[1], p[2]) / sqp0p3;
189 }
190 if (nh == 1) {
191 fi[2] = std::complex<double> (0.0, 0.0);
192 fi[3] = std::complex<double> (0.0, 0.0);
193 fi[4] = chi[0];
194 fi[5] = chi[1];
195 } else {
196 fi[2] = chi[1];
197 fi[3] = chi[0];
198 fi[4] = std::complex<double> (0.0, 0.0);
199 fi[5] = std::complex<double> (0.0, 0.0);
200 }
201 }
202 return;
203}
double Sgn(double e, double f)

◆ matrix_1_epem_wpwm_wp_mupvm_wm_uxd()

double eeWW::matrix_1_epem_wpwm_wp_mupvm_wm_uxd ( )
private

Definition at line 854 of file OptimizedObservablesSMEFTd6.cpp.

855{
856 int i, j;
857 // Local variables
858// const int ngraphs = 3;
859 const int ncolor = 1;
860 std::complex<double> ztemp;
861 std::complex<double> jamp[ncolor];
862 // The color matrix;
863 static const double denom[ncolor] = {1};
864 static const double cf[ncolor][ncolor] = {
865 {3}
866 };
867
868 // Calculate color flows
869 jamp[0] = -amp[0] - amp[1] - amp[2];
870
871 // Sum and square the color flows to get the matrix element
872 double matrix = 0;
873 for (i = 0; i < ncolor; i++) {
874 ztemp = 0.;
875 for (j = 0; j < ncolor; j++)
876 ztemp = ztemp + cf[i][j] * jamp[j];
877 matrix = matrix + real(ztemp * conj(jamp[i])) / denom[i];
878 }
879
880 // Store the leading color flows for choice of color
881 for (i = 0; i < ncolor; i++)
882 jamp2[0][i] += real(jamp[i] * conj(jamp[i]));
883
884 return matrix;
885}
double * jamp2[nprocesses]

◆ name()

virtual std::string eeWW::name ( ) const
inlineprivatevirtual

Definition at line 63 of file OptimizedObservablesSMEFTd6.h.

64 {
65 return "e+ e- > mu+ vm u~ d (sm)";
66 }

◆ oxxxxx()

void eeWW::oxxxxx ( double  p[4],
double  fmass,
int  nhel,
int  nsf,
std::complex< double >  fo[6] 
)
private

Definition at line 400 of file OptimizedObservablesSMEFTd6.cpp.

401{
402 std::complex<double> chi[2];
403 double sf[2], sfomeg[2], omega[2], pp, pp3, sqp0p3, sqm[2];
404 int nh, ip, im;
405 fo[0] = std::complex<double> (p[0] * nsf, p[3] * nsf);
406 fo[1] = std::complex<double> (p[1] * nsf, p[2] * nsf);
407 nh = nhel * nsf;
408 if (fmass != 0.000) {
409 pp = std::min(p[0], sqrt((p[1] * p[1]) + (p[2] * p[2]) + (p[3] * p[3])));
410 if (pp == 0.000) {
411 sqm[0] = sqrt(std::abs(fmass));
412 sqm[1] = Sgn(sqm[0], fmass);
413 ip = -((1 - nh) / 2) * nhel;
414 im = (1 + nh) / 2 * nhel;
415 fo[2] = im * sqm[std::abs(ip)];
416 fo[3] = ip * nsf * sqm[std::abs(ip)];
417 fo[4] = im * nsf * sqm[std::abs(im)];
418 fo[5] = ip * sqm[std::abs(im)];
419 } else {
420 pp = std::min(p[0], sqrt((p[1] * p[1]) + (p[2] * p[2]) + (p[3] * p[3])));
421 sf[0] = double(1 + nsf + (1 - nsf) * nh) * 0.5;
422 sf[1] = double(1 + nsf - (1 - nsf) * nh) * 0.5;
423 omega[0] = sqrt(p[0] + pp);
424 omega[1] = fmass / omega[0];
425 ip = (1 + nh) / 2;
426 im = (1 - nh) / 2;
427 sfomeg[0] = sf[0] * omega[ip];
428 sfomeg[1] = sf[1] * omega[im];
429 pp3 = std::max(pp + p[3], 0.00);
430 chi[0] = std::complex<double> (sqrt(pp3 * 0.5 / pp), 0.00);
431 if (pp3 == 0.00) {
432 chi[1] = std::complex<double> (-nh, 0.00);
433 } else {
434 chi[1] = std::complex<double> (nh * p[1], -p[2]) / sqrt(2.0 * pp * pp3);
435 }
436 fo[2] = sfomeg[1] * chi[im];
437 fo[3] = sfomeg[1] * chi[ip];
438 fo[4] = sfomeg[0] * chi[im];
439 fo[5] = sfomeg[0] * chi[ip];
440 }
441 } else {
442 if ((p[1] == 0.00) and (p[2] == 0.00) and (p[3] < 0.00)) {
443 sqp0p3 = 0.00;
444 } else {
445 sqp0p3 = sqrt(std::max(p[0] + p[3], 0.00)) * nsf;
446 }
447 chi[0] = std::complex<double> (sqp0p3, 0.00);
448 if (sqp0p3 == 0.000) {
449 chi[1] = std::complex<double> (-nhel, 0.00) * sqrt(2.0 * p[0]);
450 } else {
451 chi[1] = std::complex<double> (nh * p[1], -p[2]) / sqp0p3;
452 }
453 if (nh == 1) {
454 fo[2] = chi[0];
455 fo[3] = chi[1];
456 fo[4] = std::complex<double> (0.00, 0.00);
457 fo[5] = std::complex<double> (0.00, 0.00);
458 } else {
459 fo[2] = std::complex<double> (0.00, 0.00);
460 fo[3] = std::complex<double> (0.00, 0.00);
461 fo[4] = chi[1];
462 fo[5] = chi[0];
463 }
464 }
465 return;
466}

◆ setInitial()

void eeWW::setInitial ( int  inid1,
int  inid2 
)
inlineprivate

Definition at line 89 of file OptimizedObservablesSMEFTd6.h.

90 {
91 id1 = inid1;
92 id2 = inid2;
93 }

◆ setMomenta()

void eeWW::setMomenta ( std::vector< double * > &  momenta)
inlineprivate

Definition at line 84 of file OptimizedObservablesSMEFTd6.h.

85 {
86 p = momenta;
87 }

◆ Sgn()

double eeWW::Sgn ( double  e,
double  f 
)
private

Definition at line 205 of file OptimizedObservablesSMEFTd6.cpp.

206{
207 return (b < 0) ? - abs(a) : abs(a);
208}

◆ sigmaHat()

double eeWW::sigmaHat ( )
privatevirtual

Definition at line 810 of file OptimizedObservablesSMEFTd6.cpp.

811{
812 // Select between the different processes
813 if (id1 == -11 && id2 == 11) {
814 // Add matrix elements for processes with beams (-11, 11)
815 return matrix_element[0];
816 } else {
817 // Return 0 if not correct initial state assignment
818 return 0.;
819 }
820}

◆ sigmaKin()

void eeWW::sigmaKin ( )
privatevirtual

Definition at line 668 of file OptimizedObservablesSMEFTd6.cpp.

669{
670 // Set the parameters which change event by event
671
672 // Reset color flows
673 for (int i = 0; i < 1; i++)
674 jamp2[0][i] = 0.;
675
676 // Local variables and constants
677 const int ncomb = 64;
678 static bool goodhel[ncomb] = {ncomb * false};
679 static int ntry = 0, sum_hel = 0, ngood = 0;
680 static int igood[ncomb];
681 static int jhel;
682 // std::complex<double> * * wfs;
683 double t[nprocesses];
684
685 // Helicities for the process
686 static const int helicities[ncomb][nexternal] = {
687 {-1, -1, -1, -1, -1, -1},
688 {-1, -1, -1, -1, -1, 1},
689 {-1, -1, -1, -1, 1, -1},
690 {-1, -1, -1, -1, 1, 1},
691 {-1, -1, -1, 1, -1, -1},
692 {-1, -1, -1, 1, -1, 1},
693 {-1, -1, -1, 1, 1, -1},
694 {-1, -1, -1, 1, 1, 1},
695 {-1, -1, 1, -1, -1, -1},
696 {-1, -1, 1, -1, -1, 1},
697 {-1, -1, 1, -1, 1, -1},
698 {-1, -1, 1, -1, 1, 1},
699 {-1, -1, 1, 1, -1, -1},
700 {-1, -1, 1, 1, -1, 1},
701 {-1, -1, 1, 1, 1, -1},
702 {-1, -1, 1, 1, 1, 1},
703 {-1,1, -1, -1, -1, -1},
704 {-1, 1, -1, -1, -1, 1},
705 {-1, 1, -1, -1, 1, -1},
706 {-1, 1, -1, -1, 1, 1},
707 {-1, 1, -1, 1, -1, -1},
708 {-1, 1, -1, 1, -1, 1},
709 {-1, 1, -1, 1, 1, -1},
710 {-1, 1, -1, 1, 1, 1},
711 {-1, 1, 1, -1, -1, -1},
712 {-1, 1, 1, -1, -1, 1},
713 {-1, 1, 1, -1, 1, -1},
714 {-1, 1, 1, -1, 1, 1},
715 {-1, 1, 1, 1, -1, -1},
716 {-1, 1, 1, 1, -1, 1},
717 {-1, 1, 1, 1, 1, -1},
718 {-1, 1, 1, 1, 1, 1},
719 {1, -1, -1, -1, -1, -1},
720 {1, -1, -1, -1, -1, 1},
721 {1, -1, -1, -1, 1, -1},
722 {1, -1, -1, -1, 1, 1},
723 {1, -1, -1, 1, -1, -1},
724 {1, -1, -1, 1, -1, 1},
725 {1, -1, -1, 1, 1, -1},
726 {1, -1, -1, 1, 1, 1},
727 {1, -1, 1, -1, -1, -1},
728 {1, -1, 1, -1, -1, 1},
729 {1, -1, 1, -1, 1, -1},
730 {1, -1, 1, -1, 1, 1},
731 {1, -1, 1, 1, -1, -1},
732 {1, -1, 1, 1, -1, 1},
733 {1, -1, 1, 1, 1, -1},
734 {1, -1, 1, 1, 1, 1},
735 {1, 1, -1, -1, -1, -1},
736 {1, 1, -1, -1, -1, 1},
737 {1, 1, -1, -1, 1, -1},
738 {1, 1, -1, -1, 1, 1},
739 {1, 1, -1, 1, -1, -1},
740 {1, 1, -1, 1, -1, 1},
741 {1, 1, -1, 1, 1, -1},
742 {1, 1, -1, 1, 1, 1},
743 {1, 1, 1, -1, -1, -1},
744 {1, 1, 1, -1, -1, 1},
745 {1, 1, 1, -1, 1, -1},
746 {1, 1, 1, -1, 1, 1},
747 {1, 1, 1, 1, -1, -1},
748 {1,1, 1, 1, -1, 1},
749 {1, 1, 1, 1, 1, -1},
750 {1, 1, 1, 1, 1, 1}};
751 // Denominators: spins, colors and identical particles
752 const int denominators[nprocesses] = {4};
753
754 ntry = ntry + 1;
755
756 // Reset the matrix elements
757 for (int i = 0; i < nprocesses; i++) {
758 matrix_element[i] = 0.;
759 }
760
761 // Define permutation
762 for (int i = 0; i < nexternal; i++) {
763 perm[i] = i;
764 }
765
766 if (sum_hel == 0 || ntry < 10) {
767 // Calculate the matrix element for all helicities
768 for (int ihel = 0; ihel < ncomb; ihel++) {
769 if (goodhel[ihel] || ntry < 2) {
770 calculate_wavefunctions(perm, helicities[ihel]);
772 double tsum = 0;
773 for (int iproc = 0; iproc < nprocesses; iproc++) {
774 matrix_element[iproc] += t[iproc];
775 tsum += t[iproc];
776 }
777 // Store which helicities give non-zero result
778 if (tsum != 0. && !goodhel[ihel]) {
779 goodhel[ihel] = true;
780 ngood++;
781 igood[ngood] = ihel;
782 }
783 }
784 }
785 jhel = 0;
786 sum_hel = std::min(sum_hel, ngood);
787 } else {
788 // Only use the "good" helicities
789 for (int j = 0; j < sum_hel; j++) {
790 jhel++;
791 if (jhel >= ngood) jhel = 0;
792 double hwgt = double(ngood) / double(sum_hel);
793 int ihel = igood[jhel];
794 calculate_wavefunctions(perm, helicities[ihel]);
796
797 for (int iproc = 0; iproc < nprocesses; iproc++) {
798 matrix_element[iproc] += t[iproc] * hwgt;
799 }
800 }
801 }
802
803 for (int i = 0; i < nprocesses; i++)
804 matrix_element[i] /= denominators[i];
805}
static const int nexternal
void calculate_wavefunctions(const int perm[], const int hel[])
double matrix_1_epem_wpwm_wp_mupvm_wm_uxd()
static const int nprocesses
Test Observable.

◆ sxxxxx()

void eeWW::sxxxxx ( double  p[4],
int  nss,
std::complex< double >  sc[3] 
)
private

Definition at line 392 of file OptimizedObservablesSMEFTd6.cpp.

393{
394 sc[2] = std::complex<double> (1.00, 0.00);
395 sc[0] = std::complex<double> (p[0] * nss, p[3] * nss);
396 sc[1] = std::complex<double> (p[1] * nss, p[2] * nss);
397 return;
398}

◆ txxxxx()

void eeWW::txxxxx ( double  p[4],
double  tmass,
int  nhel,
int  nst,
std::complex< double >  fi[18] 
)
private

Definition at line 210 of file OptimizedObservablesSMEFTd6.cpp.

212{
213 std::complex<double> ft[6][4], ep[4], em[4], e0[4];
214 double pt, pt2, pp, pzpt, emp, sqh, sqs;
215 int i, j;
216
217 sqh = sqrt(0.5);
218 sqs = sqrt(0.5 / 3);
219
220 pt2 = p[1] * p[1] + p[2] * p[2];
221 pp = std::min(p[0], sqrt(pt2 + p[3] * p[3]));
222 pt = std::min(pp, sqrt(pt2));
223
224 ft[4][0] = std::complex<double> (p[0] * nst, p[3] * nst);
225 ft[5][0] = std::complex<double> (p[1] * nst, p[2] * nst);
226
227 // construct eps+
228 if (nhel >= 0) {
229 if (pp == 0) {
230 ep[0] = std::complex<double> (0, 0);
231 ep[1] = std::complex<double> (-sqh, 0);
232 ep[2] = std::complex<double> (0, nst * sqh);
233 ep[3] = std::complex<double> (0, 0);
234 } else {
235 ep[0] = std::complex<double> (0, 0);
236 ep[3] = std::complex<double> (pt / pp * sqh, 0);
237
238 if (pt != 0) {
239 pzpt = p[3] / (pp * pt) * sqh;
240 ep[1] = std::complex<double> (-p[1] * pzpt, -nst * p[2] / pt * sqh);
241 ep[2] = std::complex<double> (-p[2] * pzpt, nst * p[1] / pt * sqh);
242 } else {
243 ep[1] = std::complex<double> (-sqh, 0);
244 ep[2] = std::complex<double> (0, nst * Sgn(sqh, p[3]));
245 }
246 }
247
248 }
249
250 // construct eps-
251 if (nhel <= 0) {
252 if (pp == 0) {
253 em[0] = std::complex<double> (0, 0);
254 em[1] = std::complex<double> (sqh, 0);
255 em[2] = std::complex<double> (0, nst * sqh);
256 em[3] = std::complex<double> (0, 0);
257 } else {
258 em[0] = std::complex<double> (0, 0);
259 em[3] = std::complex<double> (-pt / pp * sqh, 0);
260
261 if (pt != 0) {
262 pzpt = -p[3] / (pp * pt) * sqh;
263 em[1] = std::complex<double> (-p[1] * pzpt, -nst * p[2] / pt * sqh);
264 em[2] = std::complex<double> (-p[2] * pzpt, nst * p[1] / pt * sqh);
265 } else {
266 em[1] = std::complex<double> (sqh, 0);
267 em[2] = std::complex<double> (0, nst * Sgn(sqh, p[3]));
268 }
269 }
270 }
271
272 // construct eps0
273 if (std::labs(nhel) <= 1) {
274 if (pp == 0) {
275 e0[0] = std::complex<double> (0, 0);
276 e0[1] = std::complex<double> (0, 0);
277 e0[2] = std::complex<double> (0, 0);
278 e0[3] = std::complex<double> (1, 0);
279 } else {
280 emp = p[0] / (tmass * pp);
281 e0[0] = std::complex<double> (pp / tmass, 0);
282 e0[3] = std::complex<double> (p[3] * emp, 0);
283
284 if (pt != 0) {
285 e0[1] = std::complex<double> (p[1] * emp, 0);
286 e0[2] = std::complex<double> (p[2] * emp, 0);
287 } else {
288 e0[1] = std::complex<double> (0, 0);
289 e0[2] = std::complex<double> (0, 0);
290 }
291 }
292 }
293
294 if (nhel == 2) {
295 for (j = 0; j < 4; j++) {
296 for (i = 0; i < 4; i++)
297 ft[i][j] = ep[i] * ep[j];
298 }
299 } else if (nhel == -2) {
300 for (j = 0; j < 4; j++) {
301 for (i = 0; i < 4; i++)
302 ft[i][j] = em[i] * em[j];
303 }
304 } else if (tmass == 0) {
305 for (j = 0; j < 4; j++) {
306 for (i = 0; i < 4; i++)
307 ft[i][j] = 0;
308 }
309 } else if (tmass != 0) {
310 if (nhel == 1) {
311 for (j = 0; j < 4; j++) {
312 for (i = 0; i < 4; i++)
313 ft[i][j] = sqh * (ep[i] * e0[j] + e0[i] * ep[j]);
314 }
315 } else if (nhel == 0) {
316 for (j = 0; j < 4; j++) {
317 for (i = 0; i < 4; i++)
318 ft[i][j] = sqs * (ep[i] * em[j] + em[i] * ep[j]
319 + 2.0 * e0[i] * e0[j]);
320 }
321 } else if (nhel == -1) {
322 for (j = 0; j < 4; j++) {
323 for (i = 0; i < 4; i++)
324 ft[i][j] = sqh * (em[i] * e0[j] + e0[i] * em[j]);
325 }
326 } else {
327 std::cerr << "Invalid helicity in txxxxx.\n";
328 std::exit(1);
329 }
330 }
331
332 tc[0] = ft[4][0];
333 tc[1] = ft[5][0];
334
335 for (j = 0; j < 4; j++) {
336 for (i = 0; i < 4; i++)
337 tc[j * 4 + i + 2] = ft[j][i];
338 }
339}

◆ updateParameters()

void eeWW::updateParameters ( )
protected

Definition at line 68 of file OptimizedObservablesSMEFTd6.cpp.

69{
70
71 zero = 0;
72 ZERO = 0;
73
74 std::vector<int> indices(2, 0);
75 Gamma_H = 6.382339e-03;
76 Gamma_W = 2.047600e+00;
77 Gamma_Z = 2.441404e+00;
78 Gamma_T = 1.491500e+00;
79 ymtau = 1.777000e+00;
80 ymt = 1.730000e+02;
81 ymb = 4.700000e+00;
82 aS = 1.180000e-01;
83 Gf = 1.166390e-05;
84 aEWM1 = 1.325070e+02;
85 MH = 1.250000e+02;
86 MZ = 9.118800e+01;
87 MTA = 1.777000e+00;
88 MT = 1.730000e+02;
89 MB = 4.700000e+00;
90 conjg__CKM3x3 = 1.;
91 CKM3x3 = 1.;
92 conjg__CKM1x1 = 1.;
93 complexi = std::complex<double> (0., 1.);
94 MZ2 = MZ*MZ;
95 MZ4 = MZ2*MZ2;
96 MH2 = MH*MH;
97 aEW = 1. / aEWM1;
98 MW = sqrt(MZ2 / 2. + sqrt(MZ4 / 4. - (aEW * M_PI * MZ2) / (Gf * M_SQRT2)));
99 sqrt__aEW = sqrt(aEW);
100 ee = 2. * sqrt__aEW * sqrt(M_PI);
101 MW2 = MW*MW;
102 sw2 = 1. - MW2 / MZ2;
103 cw = sqrt(1. - sw2);
104 sqrt__sw2 = sqrt(sw2);
105 sw = sqrt__sw2;
106 g1 = ee / cw;
107 gw = ee / sw;
108 vev = (2. * MW * sw) / ee;
109 vev2 = vev * vev;
110 lam = MH2 / (2. * vev2);
111 yb = (ymb * M_SQRT2) / vev;
112 yt = (ymt * M_SQRT2) / vev;
113 ytau = (ymtau * M_SQRT2) / vev;
114 muH = sqrt(lam * vev2);
117 I3x33 = CKM3x3 * yt;
118 I4x33 = CKM3x3 * yb;
119 ee2 = ee*ee;
120 cw2 = 1. - sw2;
121
122
123 GC_3 = -(ee * complexi);
124 GC_51 = (cw * ee * complexi) / (2. * sw);
125 GC_53 = (cw * ee * complexi) / sw;
126 GC_59 = (ee * complexi * sw) / (2. * cw);
127 GC_100 = (ee * complexi * conjg__CKM1x1) / (sw * M_SQRT2);
128
129 sqrt__aS = sqrt(aS);
130 G = 2. * sqrt__aS * sqrt(M_PI);
131 G2 = G*G;
132
133 mME.assign(6, 0.);
134 jamp2[0] = new double[1];
135
136}
unsigned int indices
Definition: EvolDF1.h:21
std::complex< double > I1x33
std::complex< double > I2x33
std::complex< double > I3x33
std::complex< double > complexi
std::complex< double > I4x33

◆ VVV1_0()

void eeWW::VVV1_0 ( std::complex< double >  V1[],
std::complex< double >  V2[],
std::complex< double >  V3[],
std::complex< double >  COUP,
std::complex< double > &  vertex 
)
private

Definition at line 468 of file OptimizedObservablesSMEFTd6.cpp.

471{
472 static std::complex<double> cI = std::complex<double> (0., 1.);
473 std::complex<double> TMP2;
474 double P1[4];
475 std::complex<double> TMP10;
476 double P2[4];
477 std::complex<double> TMP7;
478 double P3[4];
479 std::complex<double> TMP6;
480 std::complex<double> TMP5;
481 std::complex<double> TMP4;
482 std::complex<double> TMP9;
483 std::complex<double> TMP3;
484 std::complex<double> TMP8;
485 P1[0] = V1[0].real();
486 P1[1] = V1[1].real();
487 P1[2] = V1[1].imag();
488 P1[3] = V1[0].imag();
489 P2[0] = V2[0].real();
490 P2[1] = V2[1].real();
491 P2[2] = V2[1].imag();
492 P2[3] = V2[0].imag();
493 P3[0] = V3[0].real();
494 P3[1] = V3[1].real();
495 P3[2] = V3[1].imag();
496 P3[3] = V3[0].imag();
497 TMP9 = (V1[2] * P2[0] - V1[3] * P2[1] - V1[4] * P2[2] - V1[5] * P2[3]);
498 TMP8 = (V3[2] * V2[2] - V3[3] * V2[3] - V3[4] * V2[4] - V3[5] * V2[5]);
499 TMP5 = (P1[0] * V2[2] - P1[1] * V2[3] - P1[2] * V2[4] - P1[3] * V2[5]);
500 TMP4 = (V3[2] * P2[0] - V3[3] * P2[1] - V3[4] * P2[2] - V3[5] * P2[3]);
501 TMP7 = (P3[0] * V2[2] - P3[1] * V2[3] - P3[2] * V2[4] - P3[3] * V2[5]);
502 TMP6 = (V3[2] * V1[2] - V3[3] * V1[3] - V3[4] * V1[4] - V3[5] * V1[5]);
503 TMP10 = (P3[0] * V1[2] - P3[1] * V1[3] - P3[2] * V1[4] - P3[3] * V1[5]);
504 TMP3 = (V3[2] * P1[0] - V3[3] * P1[1] - V3[4] * P1[2] - V3[5] * P1[3]);
505 TMP2 = (V2[2] * V1[2] - V2[3] * V1[3] - V2[4] * V1[4] - V2[5] * V1[5]);
506 vertex = COUP * (TMP2 * (-cI * (TMP3) + cI * (TMP4)) + (TMP6 * (-cI * (TMP7)
507 + cI * (TMP5)) + TMP8 * (-cI * (TMP9) + cI * (TMP10))));
508}

◆ vxxxxx()

void eeWW::vxxxxx ( double  p[4],
double  vmass,
int  nhel,
int  nsv,
std::complex< double >  v[6] 
)
private

Definition at line 341 of file OptimizedObservablesSMEFTd6.cpp.

342{
343 double hel, hel0, pt, pt2, pp, pzpt, emp, sqh;
344 int nsvahl;
345 sqh = sqrt(0.5);
346 hel = double(nhel);
347 nsvahl = nsv * std::abs(hel);
348 pt2 = (p[1] * p[1]) + (p[2] * p[2]);
349 pp = std::min(p[0], sqrt(pt2 + (p[3] * p[3])));
350 pt = std::min(pp, sqrt(pt2));
351 vc[0] = std::complex<double> (p[0] * nsv, p[3] * nsv);
352 vc[1] = std::complex<double> (p[1] * nsv, p[2] * nsv);
353 if (vmass != 0.0) {
354 hel0 = 1.0 - std::abs(hel);
355 if (pp == 0.0) {
356 vc[2] = std::complex<double> (0.0, 0.0);
357 vc[3] = std::complex<double> (-hel * sqh, 0.0);
358 vc[4] = std::complex<double> (0.0, nsvahl * sqh);
359 vc[5] = std::complex<double> (hel0, 0.0);
360 } else {
361 emp = p[0] / (vmass * pp);
362 vc[2] = std::complex<double> (hel0 * pp / vmass, 0.0);
363 vc[5] = std::complex<double> (hel0 * p[3] * emp + hel * pt / pp * sqh, 0.0);
364 if (pt != 0.0) {
365 pzpt = p[3] / (pp * pt) * sqh * hel;
366 vc[3] = std::complex<double> (hel0 * p[1] * emp - p[1] * pzpt, -nsvahl *
367 p[2] / pt * sqh);
368 vc[4] = std::complex<double> (hel0 * p[2] * emp - p[2] * pzpt, nsvahl *
369 p[1] / pt * sqh);
370 } else {
371 vc[3] = std::complex<double> (-hel * sqh, 0.0);
372 vc[4] = std::complex<double> (0.0, nsvahl * Sgn(sqh, p[3]));
373 }
374 }
375 } else {
376 pp = p[0];
377 pt = sqrt((p[1] * p[1]) + (p[2] * p[2]));
378 vc[2] = std::complex<double> (0.0, 0.0);
379 vc[5] = std::complex<double> (hel * pt / pp * sqh, 0.0);
380 if (pt != 0.0) {
381 pzpt = p[3] / (pp * pt) * sqh * hel;
382 vc[3] = std::complex<double> (-p[1] * pzpt, -nsv * p[2] / pt * sqh);
383 vc[4] = std::complex<double> (-p[2] * pzpt, nsv * p[1] / pt * sqh);
384 } else {
385 vc[3] = std::complex<double> (-hel * sqh, 0.0);
386 vc[4] = std::complex<double> (0.0, nsv * Sgn(sqh, p[3]));
387 }
388 }
389 return;
390}

Member Data Documentation

◆ aEW

double eeWW::aEW
protected

Definition at line 45 of file OptimizedObservablesSMEFTd6.h.

◆ aEWM1

double eeWW::aEWM1
protected

Definition at line 42 of file OptimizedObservablesSMEFTd6.h.

◆ amp

std::complex<double> eeWW::amp[namplitudes]
private

Definition at line 115 of file OptimizedObservablesSMEFTd6.h.

◆ aS

double eeWW::aS
protected

Definition at line 42 of file OptimizedObservablesSMEFTd6.h.

◆ CKM3x3

double eeWW::CKM3x3
protected

Definition at line 44 of file OptimizedObservablesSMEFTd6.h.

◆ complexi

std::complex<double> eeWW::complexi
protected

Definition at line 48 of file OptimizedObservablesSMEFTd6.h.

◆ conjg__CKM1x1

double eeWW::conjg__CKM1x1
protected

Definition at line 44 of file OptimizedObservablesSMEFTd6.h.

◆ conjg__CKM3x3

double eeWW::conjg__CKM3x3
protected

Definition at line 44 of file OptimizedObservablesSMEFTd6.h.

◆ cw

double eeWW::cw
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ cw2

double eeWW::cw2
protected

Definition at line 47 of file OptimizedObservablesSMEFTd6.h.

◆ ee

double eeWW::ee
protected

Definition at line 45 of file OptimizedObservablesSMEFTd6.h.

◆ ee2

double eeWW::ee2
protected

Definition at line 47 of file OptimizedObservablesSMEFTd6.h.

◆ G

double eeWW::G
protected

Definition at line 50 of file OptimizedObservablesSMEFTd6.h.

◆ g1

double eeWW::g1
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ G2

double eeWW::G2
protected

Definition at line 50 of file OptimizedObservablesSMEFTd6.h.

◆ Gamma_H

double eeWW::Gamma_H
protected

Definition at line 40 of file OptimizedObservablesSMEFTd6.h.

◆ Gamma_T

double eeWW::Gamma_T
protected

Definition at line 40 of file OptimizedObservablesSMEFTd6.h.

◆ Gamma_W

double eeWW::Gamma_W
protected

Definition at line 40 of file OptimizedObservablesSMEFTd6.h.

◆ Gamma_Z

double eeWW::Gamma_Z
protected

Definition at line 40 of file OptimizedObservablesSMEFTd6.h.

◆ GC_100

std::complex<double> eeWW::GC_100
protected

Definition at line 52 of file OptimizedObservablesSMEFTd6.h.

◆ GC_3

std::complex<double> eeWW::GC_3
protected

Definition at line 52 of file OptimizedObservablesSMEFTd6.h.

◆ GC_51

std::complex<double> eeWW::GC_51
protected

Definition at line 52 of file OptimizedObservablesSMEFTd6.h.

◆ GC_53

std::complex<double> eeWW::GC_53
protected

Definition at line 52 of file OptimizedObservablesSMEFTd6.h.

◆ GC_59

std::complex<double> eeWW::GC_59
protected

Definition at line 52 of file OptimizedObservablesSMEFTd6.h.

◆ Gf

double eeWW::Gf
protected

Definition at line 42 of file OptimizedObservablesSMEFTd6.h.

◆ gw

double eeWW::gw
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ I1x33

std::complex<double> eeWW::I1x33
protected

Definition at line 48 of file OptimizedObservablesSMEFTd6.h.

◆ I2x33

std::complex<double> eeWW::I2x33
protected

Definition at line 48 of file OptimizedObservablesSMEFTd6.h.

◆ I3x33

std::complex<double> eeWW::I3x33
protected

Definition at line 48 of file OptimizedObservablesSMEFTd6.h.

◆ I4x33

std::complex<double> eeWW::I4x33
protected

Definition at line 48 of file OptimizedObservablesSMEFTd6.h.

◆ id1

int eeWW::id1
private

Definition at line 132 of file OptimizedObservablesSMEFTd6.h.

◆ id2

int eeWW::id2
private

Definition at line 132 of file OptimizedObservablesSMEFTd6.h.

◆ jamp2

double* eeWW::jamp2[nprocesses]
private

Definition at line 123 of file OptimizedObservablesSMEFTd6.h.

◆ lam

double eeWW::lam
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ matrix_element

double eeWW::matrix_element[nprocesses]
private

Definition at line 120 of file OptimizedObservablesSMEFTd6.h.

◆ MB

double eeWW::MB
protected

Definition at line 43 of file OptimizedObservablesSMEFTd6.h.

◆ MH

double eeWW::MH
protected

Definition at line 43 of file OptimizedObservablesSMEFTd6.h.

◆ MH2

double eeWW::MH2
protected

Definition at line 45 of file OptimizedObservablesSMEFTd6.h.

◆ mME

std::vector<double> eeWW::mME
private

Definition at line 126 of file OptimizedObservablesSMEFTd6.h.

◆ MT

double eeWW::MT
protected

Definition at line 43 of file OptimizedObservablesSMEFTd6.h.

◆ MTA

double eeWW::MTA
protected

Definition at line 43 of file OptimizedObservablesSMEFTd6.h.

◆ muH

double eeWW::muH
protected

Definition at line 47 of file OptimizedObservablesSMEFTd6.h.

◆ MW

double eeWW::MW
protected

Definition at line 45 of file OptimizedObservablesSMEFTd6.h.

◆ MW2

double eeWW::MW2
protected

Definition at line 45 of file OptimizedObservablesSMEFTd6.h.

◆ MZ

double eeWW::MZ
protected

Definition at line 43 of file OptimizedObservablesSMEFTd6.h.

◆ MZ2

double eeWW::MZ2
protected

Definition at line 45 of file OptimizedObservablesSMEFTd6.h.

◆ MZ4

double eeWW::MZ4
protected

Definition at line 45 of file OptimizedObservablesSMEFTd6.h.

◆ namplitudes

const int eeWW::namplitudes = 3
staticprivate

Definition at line 106 of file OptimizedObservablesSMEFTd6.h.

◆ nexternal

const int eeWW::nexternal = 6
staticprivate

Definition at line 103 of file OptimizedObservablesSMEFTd6.h.

◆ ninitial

const int eeWW::ninitial = 2
staticprivate

Definition at line 102 of file OptimizedObservablesSMEFTd6.h.

◆ nprocesses

const int eeWW::nprocesses = 1
staticprivate

Definition at line 104 of file OptimizedObservablesSMEFTd6.h.

◆ nwavefuncs

const int eeWW::nwavefuncs = 11
staticprivate

Definition at line 105 of file OptimizedObservablesSMEFTd6.h.

◆ p

std::vector<double * > eeWW::p
private

Definition at line 129 of file OptimizedObservablesSMEFTd6.h.

◆ perm

int eeWW::perm[nexternal]
private

Definition at line 108 of file OptimizedObservablesSMEFTd6.h.

◆ sqrt__aEW

double eeWW::sqrt__aEW
protected

Definition at line 45 of file OptimizedObservablesSMEFTd6.h.

◆ sqrt__aS

double eeWW::sqrt__aS
protected

Definition at line 50 of file OptimizedObservablesSMEFTd6.h.

◆ sqrt__sw2

double eeWW::sqrt__sw2
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ sw

double eeWW::sw
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ sw2

double eeWW::sw2
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ vev

double eeWW::vev
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ vev2

double eeWW::vev2
protected

Definition at line 46 of file OptimizedObservablesSMEFTd6.h.

◆ w

std::complex<double> eeWW::w[nwavefuncs][18]
private

Definition at line 114 of file OptimizedObservablesSMEFTd6.h.

◆ yb

double eeWW::yb
protected

Definition at line 47 of file OptimizedObservablesSMEFTd6.h.

◆ ymb

double eeWW::ymb
protected

Definition at line 41 of file OptimizedObservablesSMEFTd6.h.

◆ ymt

double eeWW::ymt
protected

Definition at line 41 of file OptimizedObservablesSMEFTd6.h.

◆ ymtau

double eeWW::ymtau
protected

Definition at line 41 of file OptimizedObservablesSMEFTd6.h.

◆ yt

double eeWW::yt
protected

Definition at line 47 of file OptimizedObservablesSMEFTd6.h.

◆ ytau

double eeWW::ytau
protected

Definition at line 47 of file OptimizedObservablesSMEFTd6.h.

◆ zero

double eeWW::zero
protected

Definition at line 38 of file OptimizedObservablesSMEFTd6.h.

◆ ZERO

double eeWW::ZERO
protected

Definition at line 38 of file OptimizedObservablesSMEFTd6.h.


The documentation for this class was generated from the following files: