a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
MFV.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include <math.h>
9#include "MFV.h"
10
11const std::string MFV::MFVvars[NMFVvars] = {
12 "a1", "a2", "a3", "a4r", "a4i", "a5r", "a5i", "a6", "a7", "a8r", "a8i",
13 "x1", "x2",
14 "y1", "y2r", "y2i", "y3", "y4r", "y4i", "y5r", "y5i", "y6", "y7",
15 "w1r", "w1i", "w2r", "w2i", "w3r", "w3i", "w4r", "w4i", "w5r", "w5i"
16};
17
19: SUSY(), X()
20{
21}
22
24{
26 return (IsModelInitialized());
27}
28
29bool MFV::Init(const std::map<std::string, double>& DPars)
30{
31 return(SUSY::Init(DPars));
32}
33
35{
36 if(!SUSY::PreUpdate()) return (false);
37 return (true);
38}
39
40bool MFV::Update(const std::map<std::string, double>& DPars)
41{
42 if(!PreUpdate()) return (false);
43
44 UpdateError = false;
45
46 for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
47 setParameter(it->first, it->second);
48
49 if (UpdateError) return (false);
50
51 if(!PostUpdate()) return (false);
52
53 return (true);
54}
55
57{
58 if (!SUSY::PostUpdate()) return (false);
59 return (true);
60}
61
62void MFV::setParameter(const std::string name, const double& value)
63{
64 if(name.compare("a1") == 0)
65 a1 = value;
66 else if(name.compare("a2") == 0)
67 a2 = value;
68 else if(name.compare("a3") == 0)
69 a3 = value;
70 else if(name.compare("a4r") == 0)
71 a4.real() = value;
72 else if(name.compare("a4i") == 0)
73 a4.imag() = value;
74 else if(name.compare("a5r") == 0)
75 a5.real() = value;
76 else if(name.compare("a5i") == 0)
77 a5.imag() = value;
78 else if(name.compare("a6") == 0)
79 a6 = value;
80 else if(name.compare("a7") == 0)
81 a7 = value;
82 else if(name.compare("a8r") == 0)
83 a8.real() = value;
84 else if(name.compare("a8i") == 0)
85 a8.imag() = value;
86 else if(name.compare("x1") == 0)
87 x1 = value;
88 else if(name.compare("x2") == 0)
89 x2 = value;
90 else if(name.compare("y1") == 0)
91 y1 = value;
92 else if(name.compare("y2r") == 0)
93 y2.real() = value;
94 else if(name.compare("y2i") == 0)
95 y2.imag() = value;
96 else if(name.compare("y3") == 0)
97 y3 = value;
98 else if(name.compare("y4r") == 0)
99 y4.real() = value;
100 else if(name.compare("y4i") == 0)
101 y4.imag() = value;
102 else if(name.compare("y5r") == 0)
103 y5.real() = value;
104 else if(name.compare("y5i") == 0)
105 y5.imag() = value;
106 else if(name.compare("y6") == 0)
107 y6 = value;
108 else if(name.compare("y7") == 0)
109 y7 = value;
110 else if(name.compare("w1r") == 0)
111 w1.real() = value;
112 else if(name.compare("w1i") == 0)
113 w1.imag() = value;
114 else if(name.compare("w2r") == 0)
115 w2.real() = value;
116 else if(name.compare("w2i") == 0)
117 w2.imag() = value;
118 else if(name.compare("w3r") == 0)
119 w3.real() = value;
120 else if(name.compare("w3i") == 0)
121 w3.imag() = value;
122 else if(name.compare("w4r") == 0)
123 w4.real() = value;
124 else if(name.compare("w4i") == 0)
125 w4.imag() = value;
126 else if(name.compare("w5r") == 0)
127 w5.real() = value;
128 else if(name.compare("w5i") == 0)
129 w5.imag() = value;
130 else
131 SUSY::setParameter(name, value);
132}
133
134bool MFV::CheckParameters(const std::map<std::string, double>& DPars)
135{
136 for (int i = 0; i < NMFVvars; i++) {
137 if (DPars.find(MFVvars[i]) == DPars.end()) {
138 std::cout << "missing mandatory MFV parameter " << MFVvars[i] << std::endl;
141 }
142 }
144}
145
147{
148 // Colangelo's expressions in Colangelo's basis
149 X.Update(myCKM);
150 msQhat2 = gslpp::matrix<gslpp::complex>::Id(3) * a1 + X.GetX13() * x1 + X.GetX1() * y1 +
151 X.GetX5() * y2 + X.GetX9() * y2.conjugate();
152 msUhat2 = gslpp::matrix<gslpp::complex>::Id(3) * a2 + X.GetX1() * x2;
153 msDhat2 = gslpp::matrix<gslpp::complex>::Id(3) * a3 + X.GetX1() * y3 + X.GetX3() * w1 +
154 X.GetX4() * w1.conjugate();
155 TUhat = X.GetX5() * a4 + X.GetX1() * y4 + X.GetX6() * w2;
156 TDhat = X.GetX1() * a5 + X.GetX5() * y5 + X.GetX2() * w3 + X.GetX4() * w4;
157 msLhat2 = gslpp::matrix<gslpp::complex>::Id(3) * a6 + X.GetX1() * y6;
158 msEhat2 = gslpp::matrix<gslpp::complex>::Id(3) * a7 + X.GetX1() * y7;
159 TEhat = X.GetX1() * a8 + X.GetX2() * w5;
160
161 // rotation to the SCKM basis according to SLHA notation
162
163 TUhat = sqrt(2.) * TUhat * myCKM.getCKM().hconjugate();
164 TDhat = sqrt(2.) * TDhat;
165 TEhat = sqrt(2.) * TEhat;
166
167 // msNhat2 and TNhat remain 0.
168}
169
std::map< std::string, double > DPars
Definition: Minimal.cpp:11
const gslpp::matrix< gslpp::complex > getCKM() const
A member for returning the CKM matrix.
Definition: CKM.h:59
virtual void SetSoftTerms()
Definition: MFV.cpp:146
virtual bool PostUpdate()
Definition: MFV.cpp:56
virtual bool PreUpdate()
Definition: MFV.cpp:34
MFV()
Definition: MFV.cpp:18
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
Definition: MFV.cpp:134
static const std::string MFVvars[NMFVvars]
Definition: MFV.h:22
double y6
Definition: MFV.h:38
gslpp::complex w1
Definition: MFV.h:39
gslpp::complex y5
Definition: MFV.h:39
double a2
Definition: MFV.h:38
double y3
Definition: MFV.h:38
double a1
Definition: MFV.h:38
gslpp::complex w4
Definition: MFV.h:39
double a7
Definition: MFV.h:38
gslpp::complex y2
Definition: MFV.h:39
gslpp::complex a8
Definition: MFV.h:39
virtual void setParameter(const std::string, const double &)
Definition: MFV.cpp:62
double y1
Definition: MFV.h:38
gslpp::complex w5
Definition: MFV.h:39
virtual bool InitializeModel()
Definition: MFV.cpp:23
double x1
Definition: MFV.h:38
virtual bool Update(const std::map< std::string, double > &DPars)
Definition: MFV.cpp:40
gslpp::complex a4
Definition: MFV.h:39
gslpp::complex w2
Definition: MFV.h:39
double a3
Definition: MFV.h:38
double x2
Definition: MFV.h:38
double a6
Definition: MFV.h:38
gslpp::complex y4
Definition: MFV.h:39
double y7
Definition: MFV.h:38
virtual bool Init(const std::map< std::string, double > &DPars)
Definition: MFV.cpp:29
static const int NMFVvars
Definition: MFV.h:21
gslpp::complex a5
Definition: MFV.h:39
gslpp::complex w3
Definition: MFV.h:39
Xmatrices X
Definition: MFV.h:40
void addMissingModelParameter(const std::string &missingParameterName)
Definition: Model.h:250
void setModelInitialized(bool ModelInitialized)
A set method to fix the failure or success of the initialization of the model.
Definition: Model.h:145
bool IsModelInitialized() const
A method to check if the model is initialized.
Definition: Model.h:136
std::string name
The name of the model.
Definition: Model.h:285
bool UpdateError
A boolean set to false if update is successful.
Definition: Model.h:272
void raiseMissingModelParameterCount()
Definition: Model.h:260
A base class for SUSY models.
Definition: SUSY.h:33
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
Definition: SUSY.cpp:272
gslpp::matrix< gslpp::complex > msDhat2
Definition: SUSY.h:576
gslpp::matrix< gslpp::complex > TEhat
Definition: SUSY.h:577
gslpp::matrix< gslpp::complex > msUhat2
Definition: SUSY.h:576
gslpp::matrix< gslpp::complex > TUhat
Definition: SUSY.h:577
gslpp::matrix< gslpp::complex > msQhat2
Definition: SUSY.h:576
gslpp::matrix< gslpp::complex > msLhat2
Definition: SUSY.h:576
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of SUSY.
Definition: SUSY.cpp:246
virtual bool PreUpdate()
Definition: SUSY.cpp:93
gslpp::matrix< gslpp::complex > msEhat2
Definition: SUSY.h:576
virtual bool PostUpdate()
Definition: SUSY.cpp:116
virtual bool Init(const std::map< std::string, double > &DPars)
Definition: SUSY.cpp:88
virtual bool InitializeModel()
Definition: SUSY.cpp:68
gslpp::matrix< gslpp::complex > TDhat
Definition: SUSY.h:577
CKM myCKM
An object of type CKM.
gslpp::matrix< gslpp::complex > GetX1() const
Definition: Xmatrices.h:20
void Update(const CKM &)
Definition: Xmatrices.cpp:19
gslpp::matrix< gslpp::complex > GetX9() const
Definition: Xmatrices.h:48
gslpp::matrix< gslpp::complex > GetX13() const
Definition: Xmatrices.h:24
gslpp::matrix< gslpp::complex > GetX5() const
Definition: Xmatrices.h:40
gslpp::matrix< gslpp::complex > GetX3() const
Definition: Xmatrices.h:32
gslpp::matrix< gslpp::complex > GetX4() const
Definition: Xmatrices.h:36
gslpp::matrix< gslpp::complex > GetX2() const
Definition: Xmatrices.h:28
gslpp::matrix< gslpp::complex > GetX6() const
Definition: Xmatrices.h:44