HepPDT Reference Documentation

HepPDT

Measurement.icc

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------
00002 //
00003 // Measurement.icc
00004 // author:  Mark Fischler
00005 // ----------------------------------------------------------------------
00006 
00007 #include <algorithm>    // swap()
00008 
00009 namespace HepPDT {
00010 
00011 inline double NaN() {
00012   // A byte-order-independent way to return a non-signalling NaN
00013   struct Dib {
00014     union {
00015       double d;
00016       int   i[2];
00017     } u;
00018   };
00019   Dib pos3_2;
00020   Dib posTwo;
00021   pos3_2.u.d =  1.5;  // Leading bit of mantissa = 1 --> quiet NaN
00022   posTwo.u.d =  2.0;
00023   Dib value;
00024   value.u.i[0] = pos3_2.u.i[0] | posTwo.u.i[0];
00025   value.u.i[1] = pos3_2.u.i[1] | posTwo.u.i[1];
00026   return value.u.d;
00027 }
00028 
00029 
00030 Measurement::Measurement ( double value, double sigma ) : 
00031   val(value), sig(sigma)  {}
00032 
00033 Measurement::Measurement () : val(NaN()), sig(NaN())  {}
00034 
00035 Measurement::Measurement ( const Measurement &m ) : 
00036   val( m.val ), sig( m.sig )  {}
00037 
00038 void Measurement::swap( Measurement & other )
00039 {
00040   std::swap( val, other.val );
00041   std::swap( sig, other.sig );
00042 }
00043 
00044 Measurement& Measurement::operator = ( Measurement const & rhs )
00045 {
00046     Measurement temp( rhs );
00047     swap( temp );
00048     return *this;
00049 }
00050 
00051 bool  Measurement::operator <  ( Measurement const & other ) const
00052 {
00053   return val < other.val;
00054 }
00055 
00056 bool  Measurement::operator == ( Measurement const & other ) const
00057 {
00058   return val == other.val;
00059 }
00060 
00061 double Measurement::value() const { return val; }
00062 double Measurement::sigma() const { return sig; }
00063 
00064 Measurement::operator double() const { return value(); }
00065 
00066 
00067 }  // HepPDT

Generated on Fri Oct 24 13:41:36 2008 for HepPDT by  doxygen 1.5.1-3