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

          Line data    Source code
       1             : /*******************************************************************************
       2             :  * Project: BaBar detector at the SLAC PEP-II B-factory
       3             :  * Package: EvtGenBase
       4             :  *    File: $Id: EvtValError.hh,v 1.2 2009-03-16 16:34:38 robbep Exp $
       5             :  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
       6             :  *
       7             :  * Copyright (C) 2002 Caltech
       8             :  *******************************************************************************/
       9             : 
      10             : // Value and its associated error. E.g. this could be interval size and 
      11             : // the error associated with numerical integration.
      12             : 
      13             : #ifndef EVT_VAL_ERROR_HH
      14             : #define EVT_VAL_ERROR_HH
      15             : 
      16             : #include <iostream>
      17             : #include <assert.h>
      18             : #include <math.h>
      19             : 
      20             : class EvtValError {
      21             : 
      22             : public:
      23             : 
      24             :   EvtValError();
      25             :   EvtValError(double val);
      26             :   EvtValError(double val, double err);
      27             :   EvtValError(const EvtValError& other);
      28             :   ~EvtValError();
      29             : 
      30           0 :   inline int valueKnown() const { return _valKnown; }
      31           0 :   inline double value() const { assert(_valKnown); return _val; }
      32             :   inline int errorKnown() const { return _errKnown; }
      33             :   inline double error() const { assert(_errKnown); return _err; }
      34             : 
      35             :   double prec() const;
      36             :   void operator=(const EvtValError& other);
      37             :   void operator*=(const EvtValError& other);
      38             :   void operator/=(const EvtValError& other);
      39             :   void operator+=(const EvtValError& other);
      40             :   void operator*=(double c);
      41             : 
      42             :   void print(std::ostream&) const;
      43             : 
      44             : private:
      45             : 
      46             :   int    _valKnown;
      47             :   double _val;
      48             :   int    _errKnown;
      49             :   double _err;
      50             : 
      51             : };
      52             : 
      53             : 
      54             : EvtValError operator*(const EvtValError& x1, const EvtValError& x2);
      55             : EvtValError operator/(const EvtValError& x1, const EvtValError& x2);
      56             : EvtValError operator+(const EvtValError& x1, const EvtValError& x2);
      57             : EvtValError operator*(const EvtValError& x,double c);
      58             : EvtValError operator*(double c,const EvtValError& x);
      59             : 
      60             : std::ostream& operator<<(std::ostream&, const EvtValError&);
      61             : 
      62             : // Perform an accept/reject fraction count
      63             : 
      64             : template <class InputIterator, class Predicate>
      65             : EvtValError accept_reject(InputIterator it, InputIterator end, Predicate pred)
      66             : {
      67             :   int itsTried = 0;
      68             :   int itsPassed = 0;
      69             :   while(it != end) {
      70             :     
      71             :     itsTried++;
      72             :     if(pred(*it++)) itsPassed++;
      73             :   }
      74             : 
      75             :   return EvtValError(((double) itsPassed)/((double) itsTried),sqrt(itsPassed)/((double) itsTried));
      76             : }
      77             : 
      78             : #endif

Generated by: LCOV version 1.11