a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
GeneralTHDMEffectivePot.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016 HEPfit Collaboration
3  * All rights reserved.
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
9 #include <Math/Minimizer.h>
10 #include <Math/Factory.h>
11 #include <Math/Functor.h>
12 #include "GeneralTHDM.h"
13 #include "GeneralTHDMcache.h"
14 
16 //: myGTHDM(static_cast<const GeneralTHDM&> (SM_i)),
17 : mat_neutral(4,4,0.)
18 {}
19 
20 const double* EffectivePot_GTHDM::potentialminimizer(double S1_start, double S2_start, double S3_start)
21 {
22  ROOT::Math::Minimizer *minimizer = ROOT::Math::Factory::CreateMinimizer("Minuit","Migrad");
23 
24  minimizer->SetMaxFunctionCalls(10000);
25  minimizer->SetMaxIterations(1000);
26  minimizer->SetTolerance(0.01);
27 
28  ROOT::Math::Functor fwrap(this,&EffectivePot_GTHDM::potentialfunction,3);
29 
30  minimizer->SetFunction(fwrap);
31  minimizer->SetVariable(0, "S1", S1_start, 0.1);
32  minimizer->SetVariable(1, "S2", S2_start, 0.1);
33  minimizer->SetVariable(2, "S3", S3_start, 0.1);
34 
35  minimizer->Minimize();
36 
37  const double *minimum = minimizer->X();
38 
39 // std::cout << "min_S1 = " << minimum[0] << std::endl;
40 // std::cout << "min_S2 = " << minimum[1] << std::endl;
41 // std::cout << "min_S3 = " << minimum[2] << std::endl << std::endl;
42 
43  return(minimum);
44 }
45 
46 double EffectivePot_GTHDM::potentialfunction(const double *Svec)
47 {
48  const double S1 = Svec[0];
49  const double S2 = Svec[1];
50  const double S3 = Svec[2];
51 
52  double Func = 3./2.*S1*S1*S1*S1 + 3.*S1*S1*S1 - 5.*S1 + S2*S2;
53 
54  double TraceMn2 = (Mneutral_2(S1,S2,S3))(0,0) + (Mneutral_2(S1,S2,S3))(1,1) +
55  (Mneutral_2(S1,S2,S3))(2,2) + (Mneutral_2(S1,S2,S3))(3,3);
56 
57  return Func + TraceMn2;
58 }
59 
60 gslpp::matrix<double> EffectivePot_GTHDM::Mneutral_2(const double S1, const double S2, const double S3)
61 {
62 
63  mat_neutral.assign(0,0, S1);
64  mat_neutral.assign(1,1, 2.*S2);
65  mat_neutral.assign(2,2, 3.*S1);
66  mat_neutral.assign(3,3, 4.*S3*S3);
67 
68  return mat_neutral;
69 }
70 
72 : ThObservable(SM_i), myEffectivePot_GTHDM(SM_i)
73 {}
74 
76 {
77  return (myEffectivePot_GTHDM.potentialminimizer(-0.39,0.,0.))[0];
78 }
79 
81 : ThObservable(SM_i), myEffectivePot_GTHDM(SM_i)
82 {}
83 
85 {
86  return (myEffectivePot_GTHDM.potentialminimizer(-0.38,0.,0.))[0];
87 }
EffectivePot_GTHDM::potentialminimizer
const double * potentialminimizer(double S1_start, double S2_start, double S3_start)
Definition: GeneralTHDMEffectivePot.cpp:20
gslpp::matrix< double >::assign
void assign(const size_t &i, const size_t &j, const double &a)
Definition: gslpp_matrix_double.cpp:108
gslpp::matrix< double >
A class for constructing and defining operations on real matrices.
Definition: gslpp_matrix_double.h:48
EffectivePot_GTHDM::Mneutral_2
gslpp::matrix< double > Mneutral_2(const double S1, const double S2, const double S3)
Definition: GeneralTHDMEffectivePot.cpp:60
EffectivePotMin2_GTHDM::EffectivePotMin2_GTHDM
EffectivePotMin2_GTHDM(const StandardModel &SM_i)
EffectivePotMin2_GTHDM constructor.
Definition: GeneralTHDMEffectivePot.cpp:80
EffectivePotMin2_GTHDM::myEffectivePot_GTHDM
EffectivePot_GTHDM myEffectivePot_GTHDM
Definition: GeneralTHDMEffectivePot.h:77
EffectivePot_GTHDM::mat_neutral
gslpp::matrix< double > mat_neutral
Definition: GeneralTHDMEffectivePot.h:37
EffectivePot_GTHDM::EffectivePot_GTHDM
EffectivePot_GTHDM(const StandardModel &SM_i)
EffectivePot_GTHDM constructor.
Definition: GeneralTHDMEffectivePot.cpp:15
StandardModel
A model class for the Standard Model.
Definition: StandardModel.h:474
EffectivePotMin1_GTHDM::EffectivePotMin1_GTHDM
EffectivePotMin1_GTHDM(const StandardModel &SM_i)
EffectivePotMin1_GTHDM constructor.
Definition: GeneralTHDMEffectivePot.cpp:71
EffectivePotMin1_GTHDM::computeThValue
double computeThValue()
Definition: GeneralTHDMEffectivePot.cpp:75
GeneralTHDMEffectivePot.h
GeneralTHDM.h
GeneralTHDMcache.h
ThObservable
A class for a model prediction of an observable.
Definition: ThObservable.h:25
EffectivePot_GTHDM::potentialfunction
double potentialfunction(const double *Svec)
Definition: GeneralTHDMEffectivePot.cpp:46
EffectivePotMin1_GTHDM::myEffectivePot_GTHDM
EffectivePot_GTHDM myEffectivePot_GTHDM
Definition: GeneralTHDMEffectivePot.h:57
EffectivePotMin2_GTHDM::computeThValue
double computeThValue()
Definition: GeneralTHDMEffectivePot.cpp:84