LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenBase - EvtValError.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 64 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 23 0.0 %

          Line data    Source code
       1             : #include "EvtGenBase/EvtPatches.hh"
       2             : /*******************************************************************************
       3             :  * Project: BaBar detector at the SLAC PEP-II B-factory
       4             :  * Package: EvtGenBase
       5             :  *    File: $Id: EvtValError.cpp,v 1.3 2009-03-16 15:39:28 robbep Exp $
       6             :  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
       7             :  *
       8             :  * Copyright (C) 2002 Caltech
       9             :  *******************************************************************************/
      10             : 
      11             : #include <assert.h>
      12             : #include <math.h>
      13             : #include <iostream>
      14             : #include "EvtGenBase/EvtValError.hh"
      15             : using std::endl;
      16             : using std::ostream;
      17             : 
      18             : EvtValError::EvtValError() 
      19           0 :   : _valKnown(0), _val(0.), _errKnown(0), _err(0.)
      20           0 : {}
      21             : 
      22             : EvtValError::EvtValError(double val)
      23           0 :   : _valKnown(1), _val(val), _errKnown(0), _err(0.)
      24           0 : {}
      25             : 
      26             : EvtValError::EvtValError(double val, double err)
      27           0 :   : _valKnown(1), _val(val), _errKnown(1), _err(err)
      28           0 : {}
      29             :   
      30             : EvtValError::EvtValError(const EvtValError& other) 
      31           0 :   : _valKnown(other._valKnown), _val(other._val), 
      32           0 :   _errKnown(other._errKnown), _err(other._err)
      33           0 : {}
      34             : 
      35             : EvtValError::~EvtValError()
      36           0 : {}
      37             : 
      38             : double EvtValError::prec() const 
      39             : { 
      40           0 :   assert(_valKnown && _errKnown); 
      41           0 :   return ( _val != 0) ? _err/_val : 0; 
      42             : }
      43             : 
      44             : void EvtValError::operator=(const EvtValError& other)
      45             : {
      46           0 :   _valKnown = other._valKnown;
      47           0 :   _val = other._val;
      48           0 :   _errKnown = other._errKnown;
      49           0 :   _err = other._err;
      50           0 : }
      51             : 
      52             : void EvtValError::operator*=(const EvtValError& other)
      53             : {
      54           0 :   assert(_valKnown && other._valKnown);
      55             : 
      56             :   // Relative errors add in quadrature
      57           0 :   if(_errKnown && other._errKnown)
      58           0 :     _err = _val * other._val * sqrt(prec()*prec() + other.prec() * other.prec());
      59           0 :   else _errKnown = 0;
      60             :   
      61             :   // Modify the value  
      62           0 :   _val *= other._val;
      63           0 : }
      64             : 
      65             : void EvtValError::operator/=(const EvtValError& other)
      66             : {
      67           0 :   assert(_valKnown && other._valKnown && other._val != 0.);
      68             : 
      69             :   // Relative errors add in quadrature
      70           0 :   if(_errKnown && other._errKnown)
      71           0 :     _err = _val/other._val * sqrt(prec()*prec() + other.prec() * other.prec());
      72           0 :   else _errKnown = 0;
      73             :   
      74             :   // Modify the value  
      75           0 :   _val /= other._val;
      76           0 : }
      77             : 
      78             : 
      79             : void EvtValError::print(ostream& os) const
      80             : {
      81           0 :   if(_valKnown) os << _val;
      82           0 :   else os << "Undef";
      83           0 :   os << " +/- ";
      84           0 :   if(_errKnown) os << _err;
      85           0 :   else os << "Undef";
      86           0 :   os << endl;
      87           0 : }
      88             : 
      89             : 
      90             : void EvtValError::operator+=(const EvtValError& other)
      91             : {
      92           0 :   assert(_valKnown); assert(other._valKnown);
      93           0 :   _val += other._val;
      94             :   
      95             :     // add errors in quadrature
      96             :   
      97           0 :   if(_errKnown && other._errKnown) {
      98             : 
      99           0 :     _err = sqrt(_err*_err + other._err*other._err);
     100           0 :   }
     101             :   else {
     102             :     
     103           0 :       _errKnown = 0;
     104             :   }
     105           0 : }
     106             : 
     107             : void EvtValError::operator*=(double c) {
     108             :   
     109           0 :   assert(_valKnown);
     110           0 :   _val *= c;
     111           0 :   if(_errKnown) _err*=c;
     112           0 : }
     113             : 
     114             : 
     115             : EvtValError operator*(const EvtValError& x1, const EvtValError& x2)
     116             : {
     117           0 :   EvtValError ret(x1);
     118           0 :   ret *= x2;
     119             :   return ret;
     120           0 : }
     121             : 
     122             : EvtValError operator/(const EvtValError& x1, const EvtValError& x2)
     123             : {
     124           0 :   EvtValError ret(x1);
     125           0 :   ret /= x2;
     126             :   return ret;
     127           0 : }
     128             : 
     129             : 
     130             : EvtValError operator+(const EvtValError& x1, const EvtValError& x2)
     131             : {
     132           0 :   EvtValError ret(x1);
     133           0 :   ret += x2;
     134             :   return ret;
     135           0 : }
     136             : 
     137             : 
     138             : EvtValError operator*(const EvtValError& x,double c) 
     139             : {
     140           0 :   EvtValError ret(x);
     141           0 :   ret*=c;
     142             :   return ret;
     143           0 : }
     144             : 
     145             : 
     146             : EvtValError operator*(double c,const EvtValError& x) 
     147             : {
     148           0 :   EvtValError ret(x);
     149           0 :   ret*=c;
     150             :   return ret;
     151           0 : }
     152             : 
     153             : 
     154             : ostream& operator<<(ostream& os, const EvtValError& other)
     155             : {
     156           0 :   other.print(os);
     157           0 :   return os;
     158             : }
     159             : 
     160             : 

Generated by: LCOV version 1.11