a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
WilsonTemplateNew.h
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#ifndef WILSONTEMPLATENEW_H
9#define WILSONTEMPLATENEW_H
10
11#include "OrderScheme.h"
12#include "Expanded.h"
13#include <sstream>
14#include <stdexcept>
15
25// T is the type (double or complex) of the gslpp::vector of Wilson coefficients
26
27template <class T> class WilsonTemplateNew {
28public:
29
30 WilsonTemplateNew(unsigned int size_i, schemes scheme_i, qcd_orders order_qcd_i,
31 qed_orders order_qed_i = QED0) {
32 T el(size_i, 0.);
33
34 size = size_i;
35 scheme = scheme_i;
36 order_qcd = order_qcd_i;
37 order_qed = order_qed_i;
38 mu = -1.;
39
40 std::vector<std::vector<T> > obj;
41 std::vector<T> tmp;
43 for (int j = 0; j <= order_qed; j++)
44 tmp.push_back(el);
45 for (int i = 0; i <= order_qcd; i++)
46 obj.push_back(tmp);
47 } else
48 throw std::runtime_error("WilsonTemplate::WilsonTemplate(): order_qcd and/or order_qed out of range");
49
50 wilson = Expanded<T>(obj);
51 };
52
54 return order_qcd;
55 }
56
58 return order_qed;
59 }
60
61 double getMu() const {
62 return mu;
63 }
64
65 void resetWilson() {
66 T zz(size, 0.);
67
68 for (int i = LO; i <= order_qcd; i++)
69 for (int j = QED0; j <= order_qed; j++)
70 wilson.setOrd(i, j, zz);
71 }
72
73 void setMu(double mu) {
74 this->mu = mu;
76 }
77
79 return scheme;
80 }
81
83 this->scheme = scheme;
84 }
85
86 unsigned int getSize() const {
87 return size;
88 }
89
90 const T& getWilson(qcd_orders order_qcd_i, qed_orders order_qed_i = QED0) const {
91 if (order_qcd_i > order_qcd || order_qed_i > order_qed) {
92 std::stringstream out;
93 out << order_qcd_i << " and " << order_qed_i;
94 throw std::runtime_error("WilsonTemplate::getCoeff(): requested order " + out.str() +
95 " not present in the object");
96 }
97 return wilson.getOrd(order_qcd_i, order_qed_i);
98 };
99
100protected:
101 Expanded<T> getWilson() const {
102 return wilson;
103 }
104
105 void setWilson(const T& v, qcd_orders order_qcd_i, qed_orders order_qed_i = QED0) {
106 if (order_qcd_i > order_qcd || order_qed_i > order_qed) {
107 std::stringstream out;
108 out << order_qcd_i << " and " << order_qed_i;
109 throw std::runtime_error("WilsonTemplate::setElem(): order " + out.str() +
110 " not implemented ");
111 }
112 if (v.size() != size)
113 throw std::runtime_error("WilsonTemplate::setElem(): wrong size");
114
115 wilson.setOrd(order_qcd_i, order_qed_i, v);
116 };
117
118 Expanded<T> wilson;
119 unsigned int size;
120 double mu;
124
125};
126
127#endif /* WILSONTEMPLATE_H */
128
@ LO
Definition: OrderScheme.h:34
@ FULLQED1
Definition: OrderScheme.h:94
@ QED0
Definition: OrderScheme.h:91
@ FULLQCD1
Definition: OrderScheme.h:79
double getMu() const
void setMu(double mu)
qcd_orders getOrder_QCD() const
void setScheme(schemes scheme)
void setWilson(const T &v, qcd_orders order_qcd_i, qed_orders order_qed_i=QED0)
const T & getWilson(qcd_orders order_qcd_i, qed_orders order_qed_i=QED0) const
schemes getScheme() const
Expanded< T > getWilson() const
Expanded< T > wilson
WilsonTemplateNew(unsigned int size_i, schemes scheme_i, qcd_orders order_qcd_i, qed_orders order_qed_i=QED0)
qed_orders getOrder_QED() const
unsigned int getSize() const
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:20
qed_orders
An enum type for qed_orders in electroweak.
Definition: OrderScheme.h:90
qcd_orders
An enum type for qcd_orders in QCD.
Definition: OrderScheme.h:74