| # Gaudi Framework, version v23r1 |

Home |  | Generated: Wed Feb 29 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