Gaudi Framework, version v23r4

Home   Generated: Mon Sep 17 2012

H1.h

Go to the documentation of this file.
00001 #ifndef GAUDIUTILS_H1_H
00002 #define GAUDIUTILS_H1_H 1
00003 // ============================================================================
00004 // Include files
00005 // ============================================================================
00006 namespace
00007 {
00008   // ==========================================================================
00010   typedef std::pair<double,double> Bin ;
00012   typedef std::vector<Bin>         Bins ;
00013   // ==========================================================================
00019   struct Edges
00020   {
00021     //
00022     void setHighEdge ( const double               value ) { high  = value ; }
00023     void setLowEdge  ( const double               value ) { low   = value ; }
00024     void setNBins    ( const unsigned int         value ) { nbins = value ; }
00025     void setEdges    ( const std::vector<double>& value ) { edges = value ; }
00026     //
00027     Edges& operator -= ( const double value )
00028     { setLowEdge  ( value ) ; return *this ; }
00029     Edges& operator += ( const double value )
00030     { setHighEdge ( value ) ; return *this ; }
00031     Edges& operator *= ( const std::vector<double>& value )
00032     { setEdges    ( value ) ; return *this ; }
00033     Edges& operator /= ( const unsigned int value  )
00034     { setNBins    ( value ) ; return *this ; }
00035     //
00036     bool ok () const
00037     {
00038       return
00039         edges.empty() ?  low < high && 0 < nbins : 2 < edges.size() ;
00040     }
00041     unsigned int nBins() const
00042     {
00043       return
00044         edges.empty() ? nbins : edges.size() - 1 ;
00045     }
00046     //
00047     double       low   ;
00048     double       high  ;
00049     unsigned int nbins ;
00050     std::vector<double> edges ;
00051   };
00052   // ==========================================================================
00058   struct H1
00059   {
00060     //
00061     void setName  ( const std::string& value ) { m_name   = value ; }
00062     void setTitle ( const std::string& value ) { m_title  = value ; }
00063 
00064     void setEdges ( const Edges&       value ) { m_edges  = value ; }
00065     void setHighEdge ( const double value ) { m_edges.setHighEdge(value ); }
00066     void setLowEdge ( const double value ) { m_edges.setLowEdge(value ); }
00067     void setNBins ( const unsigned int value ) { m_edges.setNBins(value );}
00068 
00069 
00070     void setBins  ( const Bins&        value ) { m_bins   = value ; }
00071     //
00072     H1& operator*=( const std::string& value ) { setName  ( value ) ; return *this ; }
00073     H1& operator/=( const std::string& value ) { setTitle ( value ) ; return *this ; }
00074     H1& operator^=( const double value ) { setHighEdge(value) ; return *this ; }
00075     H1& operator-=( const double value ) { setLowEdge(value) ; return *this ; }
00076     H1& operator|=( const unsigned int value) { setNBins(value) ; return *this ; }
00077 
00078     H1& operator&=( const Edges&       value ) { setEdges ( value ) ; return *this ; }
00079     H1& operator+=( const Bins&        value ) { setBins  ( value ) ; return *this ; }
00080     //
00081     bool ok  () const
00082     {
00083       if (  m_bins.empty() ) { return false ; }
00084       if ( !m_edges.ok  () ) { return false ; }
00085       if (  m_bins.size() != m_edges.nBins()  + 2 ) { return false ; }
00086       return true ;
00087     }
00088     //
00089     std::string m_name  ;
00090     std::string m_title ;
00091     Edges       m_edges ;
00092     Bins        m_bins  ;
00093 
00094   } ;
00095   // ==========================================================================
00101   struct H2
00102   {
00103     //
00104     void setName   ( const std::string& value ) { m_name   = value ; }
00105     void setTitle  ( const std::string& value ) { m_title  = value ; }
00106     void setXEdges ( const Edges&       value ) { m_xedges = value ; }
00107     void setYEdges ( const Edges&       value ) { m_yedges = value ; }
00108     void setBins   ( const Bins&        value ) { m_bins   = value ; }
00109     //
00110     H2& operator*=( const std::string& value ) { setName   ( value ) ; return *this ; }
00111     H2& operator/=( const std::string& value ) { setTitle  ( value ) ; return *this ; }
00112     H2& operator&=( const Edges&       value ) { setXEdges ( value ) ; return *this ; }
00113     H2& operator|=( const Edges&       value ) { setYEdges ( value ) ; return *this ; }
00114     H2& operator+=( const Bins&        value ) { setBins   ( value ) ; return *this ; }
00115     //
00116     bool ok  () const
00117     {
00118       if (  m_bins.empty () ) { return false ; }
00119       if ( !m_xedges.ok  () ) { return false ; }
00120       if ( !m_yedges.ok  () ) { return false ; }
00121       if (  m_bins.size() !=
00122             ( m_xedges.nBins()  + 2 ) *
00123             ( m_yedges.nBins()  + 2 ) ) { return false ; }
00124       return true ;
00125     }
00126     //
00127     //
00128     std::string m_name   ;
00129     std::string m_title  ;
00130     Edges       m_xedges ;
00131     Edges       m_yedges ;
00132     Bins        m_bins   ;
00133   } ;
00134   // ==========================================================================
00135 } // end of anonymous namespace
00136 // ============================================================================
00137 // The END
00138 // ============================================================================
00139 #endif // GAUDIUTILS_H1_H
00140 // ============================================================================
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Mon Sep 17 2012 13:49:37 for Gaudi Framework, version v23r4 by Doxygen version 1.7.2 written by Dimitri van Heesch, © 1997-2004