WilsonTemplate.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  * All rights reserved.
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_ew order_ew_i = NULL_ew)
27  {
28  size = dim;
29  scheme = scheme_i;
30  order = order_i;
31  order_ew = order_ew_i;
32  mu = -1.;
33 
34  for (int i = LO; i <= MAXORDER; i++)
35  if (i <= order)
36  elem[i] = new T(size, 0.);
37  else
38  elem[i] = NULL;
39  elem[orders_ew(NULL_ew)] = NULL;
40  //for (int i = LO_ew; i <= NLO_ew; i++){
41  for (int i = LO_ew; i <= MAXORDER_EW; i++){
42  if (i <= order_ew)
43  elem[i] = new T(size, 0.);
44  else
45  elem[i] = NULL;
46  }
47  };
48 
50  {
51  size = orig.size;
52  scheme = orig.scheme;
53  order = orig.order;
54  order_ew = orig.order_ew;
55  mu = orig.mu;
56  for (int i = LO; i <= MAXORDER_EW; i++)
57  if (orig.elem[i]!= NULL)
58  elem[i] = new T(*(orig.elem[i]));
59  else
60  elem[i] = NULL;
61  }
62 
63  virtual ~WilsonTemplate()
64  {
65  for (int i = LO; i <= MAXORDER_EW; i++)
66  if (elem[i] != NULL)
67  delete elem[i];
68  };
69 
70  orders getOrder() const
71  {
72  return order;
73  }
74 
76  {
77  return order_ew;
78  }
79 
80  double getMu() const
81  {
82  return mu;
83  }
84 
85  virtual void resetCoefficient()
86  {
87  for(int i = LO; i <= order; i++){
88  *(elem[i]) = 0.;
89  }
90  if (order_ew != NULL_ew){
91  for(int i = LO_ew; i <= order_ew; i++){
92  *(elem[i]) = 0.;
93  }
94  }
95  }
96 
97  virtual void setMu(double mu)
98  {
99  this->mu = mu;
101  }
102 
104  {
105  return scheme;
106  }
107 
109  {
110  this->scheme = scheme;
111  }
112 
113  unsigned int getSize() const
114  {
115  return size;
116  }
117 
118 protected:
120  unsigned int size;
121  double mu;
125 
126  T * Elem(orders order) const
127  {
128  if (order > this->order) {
129  std::stringstream out;
130  out << order;
131  throw std::runtime_error("WilsonTemplate::getElem(): requested order " + out.str() +
132  " not present in the object");
133  }
134  return elem[order];
135  };
136 
137  T * Elem(orders_ew order_ew) const
138  {
139  if ((order_ew > this->order_ew)) {
140  std::stringstream out;
141  out << order_ew;
142  throw std::runtime_error("WilsonTemplate::getElem(): requested order_ew " + out.str() +
143  "not present in the object");
144  }
145  return elem[order_ew];
146  };
147 
148  void setElem(const T & v, orders order_i)
149  {
150  if (order_i > order) {
151  std::stringstream out;
152  out << order_i;
153  throw std::runtime_error("MatchingCondition::setElem(): order " + out.str() +
154  " not implemented ");
155  }
156  *elem[order_i] = v;
157  };
158 
159  void setElem(const T & v, orders_ew order_ew_i)
160  {
161  if (order_ew_i > order_ew) {
162  std::stringstream out;
163  out << order_ew_i;
164  throw std::runtime_error("MatchingCondition::setElem(): order " + out.str() +
165  " not implemented ");
166  }
167  *elem[order_ew_i] = v;
168  };
169 };
170 
171 #endif /* WILSONTEMPLATE_H */
172 
virtual void setMu(double mu)
T * Elem(orders order) const
void setElem(const T &v, orders_ew order_ew_i)
virtual void resetCoefficient()
void setElem(const T &v, orders order_i)
orders
An enum type for orders in QCD.
Definition: OrderScheme.h:31
schemes getScheme() const
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
A template class for the Wilson coefficients.
orders_ew getOrder_ew() const
orders_ew
An enum type for orders in electroweak.
Definition: OrderScheme.h:45
void setScheme(schemes scheme)
orders_ew order_ew
virtual ~WilsonTemplate()
Definition: OrderScheme.h:33
unsigned int size
double getMu() const
WilsonTemplate(unsigned int dim, schemes scheme_i, orders order_i, orders_ew order_ew_i=NULL_ew)
T * Elem(orders_ew order_ew) const
T * elem[MAXORDER_EW+1]
orders getOrder() const
#define MAXORDER_EW
Definition: OrderScheme.h:12
unsigned int getSize() const
#define MAXORDER
Definition: OrderScheme.h:11