a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
WilsonTemplate.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 WILSONTEMPLATE_H
9#define WILSONTEMPLATE_H
10
11#include "OrderScheme.h"
12#include <sstream>
13#include <stdexcept>
14
23template <class T> class WilsonTemplate {
24public:
25 WilsonTemplate(unsigned int dim, schemes scheme_i, orders order_i ,
26 orders_qed order_qed_i = NO_QED)
27 {
28 size = dim;
29 scheme = scheme_i;
30 order = order_i;
31 order_qed = order_qed_i;
32 mu = -1.;
33
34 for (int i = LO; i <= MAXORDER; i++) {
35 if (i <= order) elem[i] = new T(size, 0.);
36 else elem[i] = NULL;
37 }
38
39 elem[orders_qed(NO_QED)] = NULL;
40 //for (int i = LO_QED; i <= NLO_QED; i++){
41 for (int i = LO_QED; i <= MAXORDER_QED; i++) {
42 if (i <= order_qed) elem[i] = new T(size, 0.);
43 else elem[i] = NULL;
44 }
45 };
46
48 {
49 size = orig.size;
50 scheme = orig.scheme;
51 order = orig.order;
52 order_qed = orig.order_qed;
53 mu = orig.mu;
54 for (int i = LO; i <= MAXORDER_QED; i++)
55 if (orig.elem[i]!= NULL) elem[i] = new T(*(orig.elem[i]));
56 else elem[i] = NULL;
57 }
58
60 {
61 for (int i = LO; i <= MAXORDER_QED; i++)
62 if (elem[i] != NULL) delete elem[i];
63 };
64
66 {
67 return order;
68 }
69
71 {
72 return order_qed;
73 }
74
75 double getMu() const
76 {
77 return mu;
78 }
79
80 virtual void resetCoefficient()
81 {
82 for(int i = LO; i <= order; i++){
83 *(elem[i]) = 0.;
84 }
85 if (order_qed != NO_QED){
86 for(int i = LO_QED; i <= order_qed; i++){
87 *(elem[i]) = 0.;
88 }
89 }
90 }
91
92 virtual void setMu(double mu)
93 {
94 this->mu = mu;
96 }
97
99 {
100 return scheme;
101 }
102
104 {
105 this->scheme = scheme;
106 }
107
108 unsigned int getSize() const
109 {
110 return size;
111 }
112
113protected:
114 T* elem[MAXORDER_QED+1];
115 unsigned int size;
116 double mu;
120
121 T * Elem(orders order) const
122 {
123 if (order > this->order) {
124 std::stringstream out;
125 out << order;
126 throw std::runtime_error("WilsonTemplate::getElem(): requested order " + out.str() +
127 " not present in the object");
128 }
129 return elem[order];
130 };
131
133 {
134 if ((order_qed > this->order_qed)) {
135 std::stringstream out;
136 out << order_qed;
137 throw std::runtime_error("WilsonTemplate::getElem(): requested order_qed " + out.str() +
138 "not present in the object");
139 }
140 return elem[order_qed];
141 };
142
143 void setElem(const T & v, orders order_i)
144 {
145 if (order_i > order) {
146 std::stringstream out;
147 out << order_i;
148 throw std::runtime_error("MatchingCondition::setElem(): order " + out.str() +
149 " not implemented ");
150 }
151 *elem[order_i] = v;
152 };
153
154 void setElem(const T & v, orders_qed order_qed_i)
155 {
156 if (order_qed_i > order_qed) {
157 std::stringstream out;
158 out << order_qed_i;
159 throw std::runtime_error("MatchingCondition::setElem(): order " + out.str() +
160 " not implemented ");
161 }
162 *elem[order_qed_i] = v;
163 };
164};
165
166#endif /* WILSONTEMPLATE_H */
167
@ LO
Definition: OrderScheme.h:34
@ LO_QED
Definition: OrderScheme.h:58
@ NO_QED
Definition: OrderScheme.h:57
A template class for the Wilson coefficients.
double getMu() const
WilsonTemplate(unsigned int dim, schemes scheme_i, orders order_i, orders_qed order_qed_i=NO_QED)
void setScheme(schemes scheme)
virtual ~WilsonTemplate()
T * elem[MAXORDER_QED+1]
unsigned int size
orders_qed order_qed
T * Elem(orders order) const
schemes getScheme() const
virtual void setMu(double mu)
T * Elem(orders_qed order_qed) const
unsigned int getSize() const
void setElem(const T &v, orders order_i)
orders_qed getOrder_qed() const
orders getOrder() const
void setElem(const T &v, orders_qed order_qed_i)
virtual void resetCoefficient()
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:33
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:20
orders_qed
An enum type for orders in electroweak.
Definition: OrderScheme.h:56