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 
27 template <class T> class WilsonTemplateNew {
28 public:
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;
42  if (order_qcd < FULLQCD1 && order_qed < FULLQED1) {
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;
75  resetWilson();
76  }
77 
78  schemes getScheme() const {
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 
100 protected:
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 
119  unsigned int size;
120  double mu;
124 
125 };
126 
127 #endif /* WILSONTEMPLATE_H */
128 
WilsonTemplateNew::WilsonTemplateNew
WilsonTemplateNew(unsigned int size_i, schemes scheme_i, qcd_orders order_qcd_i, qed_orders order_qed_i=QED0)
Definition: WilsonTemplateNew.h:30
WilsonTemplateNew::setScheme
void setScheme(schemes scheme)
Definition: WilsonTemplateNew.h:82
WilsonTemplateNew::getWilson
const T & getWilson(qcd_orders order_qcd_i, qed_orders order_qed_i=QED0) const
Definition: WilsonTemplateNew.h:90
WilsonTemplateNew::resetWilson
void resetWilson()
Definition: WilsonTemplateNew.h:65
WilsonTemplateNew::getScheme
schemes getScheme() const
Definition: WilsonTemplateNew.h:78
QED0
Definition: OrderScheme.h:83
WilsonTemplateNew::getOrder_QED
qed_orders getOrder_QED() const
Definition: WilsonTemplateNew.h:57
qcd_orders
qcd_orders
Definition: OrderScheme.h:65
LO
Definition: OrderScheme.h:33
WilsonTemplateNew::getSize
unsigned int getSize() const
Definition: WilsonTemplateNew.h:86
WilsonTemplateNew::size
unsigned int size
Definition: WilsonTemplateNew.h:119
WilsonTemplateNew::getWilson
Expanded< T > getWilson() const
Definition: WilsonTemplateNew.h:101
OrderScheme.h
WilsonTemplateNew::getOrder_QCD
qcd_orders getOrder_QCD() const
Definition: WilsonTemplateNew.h:53
WilsonTemplateNew::order_qed
qed_orders order_qed
Definition: WilsonTemplateNew.h:123
FULLQED1
Definition: OrderScheme.h:86
WilsonTemplateNew::wilson
Expanded< T > wilson
Definition: WilsonTemplateNew.h:116
WilsonTemplateNew::order_qcd
qcd_orders order_qcd
Definition: WilsonTemplateNew.h:122
WilsonTemplateNew
Definition: WilsonTemplateNew.h:27
schemes
schemes
An enum type for regularization schemes.
Definition: OrderScheme.h:19
Expanded.h
qed_orders
qed_orders
Definition: OrderScheme.h:81
Expanded
A template class for Taylor double expansion of several objects.
Definition: Expanded.h:55
WilsonTemplateNew::setWilson
void setWilson(const T &v, qcd_orders order_qcd_i, qed_orders order_qed_i=QED0)
Definition: WilsonTemplateNew.h:105
WilsonTemplateNew::scheme
schemes scheme
Definition: WilsonTemplateNew.h:121
WilsonTemplateNew::mu
double mu
Definition: WilsonTemplateNew.h:120
WilsonTemplateNew::setMu
void setMu(double mu)
Definition: WilsonTemplateNew.h:73
WilsonTemplateNew::getMu
double getMu() const
Definition: WilsonTemplateNew.h:61
FULLQCD1
Definition: OrderScheme.h:71