CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
value.py
Go to the documentation of this file.
1 # Copyright (C) 2014 Colin Bernet
2 # https://github.com/cbernet/heppy/blob/master/LICENSE
3 
4 import math
5 import copy
6 
7 class Value(object):
8  def __init__(self, val, err):
9  self.val = val
10  self.err = err
11 
12  def relerr(self):
13  return abs(self.err / self.val)
14 
15  def __eq__(self, other):
16  return self.val == other.val and self.err == other.err
17 
18  def __iadd__(self, other):
19  self.val += other.val
20  self.err = math.sqrt( self.err*self.err + other.err*other.err)
21  return self
22 
23  def __add__(self, other):
24  new = copy.deepcopy(self)
25  new += other
26  return new
27 
28  def __isub__(self, other):
29  self.val -= other.val
30  self.err = math.sqrt( self.err*self.err + other.err*other.err)
31  return self
32 
33  def __sub__(self, other):
34  new = copy.deepcopy(self)
35  new -= other
36  return new
37 
38  def __idiv__(self, other):
39  relerr = math.sqrt( self.relerr()*self.relerr() + other.relerr()*other.relerr())
40  self.val /= other.val
41  self.err = relerr * self.val
42  return self
43 
44  def __div__(self, other):
45  new = copy.deepcopy(self)
46  new /= other
47  return new
48 
49  def __str__(self):
50  return '{val:10.3f} +- {err:8.3f} ({relerr:5.2f}%)'.format(val=self.val,
51  err=self.err,
52  relerr=self.relerr()*100)
def __idiv__
Definition: value.py:38
def __eq__
Definition: value.py:15
def __div__
Definition: value.py:44
def __isub__
Definition: value.py:28
def __str__
Definition: value.py:49
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
def __init__
Definition: value.py:8
def __add__
Definition: value.py:23
def relerr
Definition: value.py:12
def __sub__
Definition: value.py:33
def __iadd__
Definition: value.py:18