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 
23 template <class T> class WilsonTemplate {
24 public:
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 
59  virtual ~WilsonTemplate()
60  {
61  for (int i = LO; i <= MAXORDER_QED; i++)
62  if (elem[i] != NULL) delete elem[i];
63  };
64 
65  orders getOrder() const
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 
98  schemes getScheme() const
99  {
100  return scheme;
101  }
102 
104  {
105  this->scheme = scheme;
106  }
107 
108  unsigned int getSize() const
109  {
110  return size;
111  }
112 
113 protected:
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 
WilsonTemplate::scheme
schemes scheme
Definition: WilsonTemplate.h:117
WilsonTemplate::setScheme
void setScheme(schemes scheme)
Definition: WilsonTemplate.h:103
WilsonTemplate::Elem
T * Elem(orders order) const
Definition: WilsonTemplate.h:121
WilsonTemplate::order_qed
orders_qed order_qed
Definition: WilsonTemplate.h:119
NO_QED
Definition: OrderScheme.h:49
WilsonTemplate::Elem
T * Elem(orders_qed order_qed) const
Definition: WilsonTemplate.h:132
WilsonTemplate::mu
double mu
Definition: WilsonTemplate.h:116
WilsonTemplate::size
unsigned int size
Definition: WilsonTemplate.h:115
WilsonTemplate::getOrder_qed
orders_qed getOrder_qed() const
Definition: WilsonTemplate.h:70
WilsonTemplate::order
orders order
Definition: WilsonTemplate.h:118
LO
Definition: OrderScheme.h:33
WilsonTemplate::getMu
double getMu() const
Definition: WilsonTemplate.h:75
OrderScheme.h
WilsonTemplate::getScheme
schemes getScheme() const
Definition: WilsonTemplate.h:98
WilsonTemplate::setElem
void setElem(const T &v, orders_qed order_qed_i)
Definition: WilsonTemplate.h:154
WilsonTemplate::getOrder
orders getOrder() const
Definition: WilsonTemplate.h:65
schemes
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
LO_QED
Definition: OrderScheme.h:50
WilsonTemplate
A template class for the Wilson coefficients.
Definition: WilsonTemplate.h:23
WilsonTemplate::setMu
virtual void setMu(double mu)
Definition: WilsonTemplate.h:92
orders_qed
orders_qed
An enum type for orders in electroweak.
Definition: OrderScheme.h:47
WilsonTemplate::resetCoefficient
virtual void resetCoefficient()
Definition: WilsonTemplate.h:80
WilsonTemplate::setElem
void setElem(const T &v, orders order_i)
Definition: WilsonTemplate.h:143
orders
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:31
WilsonTemplate::WilsonTemplate
WilsonTemplate(unsigned int dim, schemes scheme_i, orders order_i, orders_qed order_qed_i=NO_QED)
Definition: WilsonTemplate.h:25
WilsonTemplate::getSize
unsigned int getSize() const
Definition: WilsonTemplate.h:108
WilsonTemplate::~WilsonTemplate
virtual ~WilsonTemplate()
Definition: WilsonTemplate.h:59
WilsonTemplate::elem
T * elem[MAXORDER_QED+1]
Definition: WilsonTemplate.h:114