a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
Loading...
Searching...
No Matches
RGEvolutor.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 "RGEvolutor.h"
9
10RGEvolutor::RGEvolutor(unsigned int dim, schemes scheme, orders order)
11: WilsonTemplate<gslpp::matrix<double> >(dim, scheme, order)
12{}
13
14RGEvolutor::RGEvolutor(unsigned int dim, schemes scheme, orders order, orders_qed order_qed)
15: WilsonTemplate<gslpp::matrix<double> >(dim, scheme, order, order_qed)
16{}
17
20
21void RGEvolutor::setEvol(unsigned int i, unsigned int j, double x, orders order_i)
22{
23 if (i > size || j > size) {
24 std::stringstream out;
25 out << i << " " << j;
26 throw std::runtime_error("RGEvolutor::setEvol(): matrix indices " + out.str() + " out of range");
27 }
28 if (order_i > order) {
29 std::stringstream out;
30 out << order_i;
31 throw std::runtime_error("RGEvolutor::setEvol(): order " + out.str() +" not implemented ");
32 }
33 (*elem[order_i])(i,j) = x;
34}
35
36void RGEvolutor::setEvol(unsigned int i, unsigned int j, double x, orders order_i, orders_qed order_qed_i)
37{
38 if (i > size || j > size) {
39 std::stringstream out;
40 out << i << " " << j;
41 throw std::runtime_error("RGEvolutor::setEvol(): matrix indices " + out.str() + " out of range");
42 }
43 if (order_i > order) {
44 std::stringstream out;
45 out << order_i;
46 throw std::runtime_error("RGEvolutor::setEvol(): order " + out.str() +" not implemented ");
47 }
48 (*elem[order_i])(i,j) = x;
49
50 if (order_qed != NO_QED){
51 if (i > size || j > size) {
52 std::stringstream out;
53 out << i << " " << j;
54 throw std::runtime_error("RGEvolutor::setEvol(): matrix indices " + out.str() + " out of range");
55 }
56 if (order_qed_i > order_qed) {
57 std::stringstream out;
58 out << order_i;
59 throw std::runtime_error("RGEvolutor::setEvol(): order " + out.str() +" not implemented ");
60 }
61 (*elem[order_qed_i])(i,j) = x;
62 }
63}
64
65void RGEvolutor::setEvol(const gslpp::matrix<double>& m, orders order_i)
66{
67 setElem(m, order_i);
68}
69
70void RGEvolutor::setEvol(const gslpp::matrix<double>& m, orders_qed order_qed_i)
71{
72 setElem(m, order_qed_i);
73}
74
75gslpp::matrix<double>** RGEvolutor::getEvol() const
76{
77 return (gslpp::matrix<double>**) elem;
78}
79
80double RGEvolutor::getM() const
81{
82 return M;
83}
84
85void RGEvolutor::setScales(double mu, double M)
86{
87 this->M = M;
88 this->mu = mu;
90 *(elem[LO]) = gslpp::matrix<double>::Id(size);
91}
92
93void RGEvolutor::setM(double M)
94{
95 setScales(mu, M);
96}
97
98void RGEvolutor::setMu(double mu)
99{
100 setScales(mu, M);
101}
102
103gslpp::matrix<double>* RGEvolutor::Evol(orders order)
104{
105 return Elem(order);
106}
107
108gslpp::matrix<double>* RGEvolutor::Evol(orders_qed order_qed)
109{
110 return Elem(order_qed);
111}
orders
Definition OrderScheme.h:33
@ LO
Definition OrderScheme.h:34
schemes
Definition OrderScheme.h:20
orders_qed
Definition OrderScheme.h:56
@ NO_QED
Definition OrderScheme.h:57
void setMu(double mu)
Sets the lower scale for the running of the Wilson Coefficients.
void setEvol(unsigned int i, unsigned int j, double x, orders order_i)
RGEvolutor(unsigned int dim, schemes scheme, orders order)
constructor
virtual ~RGEvolutor()
destructor
gslpp::matrix< double > ** getEvol() const
void setScales(double mu, double M)
Sets the upper and lower scale for the running of the Wilson Coefficients.
void setM(double M)
Sets the upper scale for the running of the Wilson Coefficients.
gslpp::matrix< double > * Evol(orders order)
Evolution matrix set at a fixed order of QCD coupling.
double getM() const
Retrieve the upper scale of the Wilson Coefficients.
A template class for the Wilson coefficients.
gslpp::matrix< double > * elem[MAXORDER_QED+1]
gslpp::matrix< double > * Elem(orders order) const
void setElem(const gslpp::matrix< double > &v, orders order_i)