| The Gaudi Framework v28r2-patches (bc4ad17a)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

H1.h
Go to the documentation of this file.
1 #ifndef GAUDIUTILS_H1_H
2 #define GAUDIUTILS_H1_H 1
3 // ============================================================================
4 // Include files
5 // ============================================================================
6 namespace
7 {
8 // ==========================================================================
10 typedef std::pair<double,double> Bin ;
12 typedef std::vector<Bin> Bins ;
13 // ==========================================================================
19 struct Edges final
20 {
21 //
22 void setHighEdge ( double value ) { high = value ; }
23 void setLowEdge ( double value ) { low = value ; }
24 void setNBins ( unsigned int value ) { nbins = value ; }
25 void setEdges ( std::vector<double> value ) { edges = std::move(value) ; }
26 //
27 Edges& operator -= ( double value )
28 { setLowEdge ( value ) ; return *this ; }
29 Edges& operator += ( double value )
30 { setHighEdge ( value ) ; return *this ; }
31 Edges& operator *= ( std::vector<double> value )
32 { setEdges ( std::move(value) ) ; return *this ; }
33 Edges& operator /= ( unsigned int value )
34 { setNBins ( value ) ; return *this ; }
35 //
36 bool ok () const
37 {
38 return
39 edges.empty() ? low < high && 0 < nbins : 2 < edges.size() ;
40 }
41 unsigned int nBins() const
42 {
43 return
44 edges.empty() ? nbins : edges.size() - 1 ;
45 }
46 //
47 double low ;
48 double high ;
49 unsigned int nbins ;
50 std::vector<double> edges ;
51 };
52 // ==========================================================================
58 struct H1 final
59 {
60 //
61 void setName ( std::string value ) { m_name = std::move(value) ; }
62 void setTitle ( std::string value ) { m_title = std::move(value) ; }
63
64 void setEdges ( Edges value ) { m_edges = std::move(value) ; }
65 void setHighEdge ( const double value ) { m_edges.setHighEdge(value ); }
66 void setLowEdge ( const double value ) { m_edges.setLowEdge(value ); }
67 void setNBins ( const unsigned int value ) { m_edges.setNBins(value );}
68
69
70 void setBins ( Bins value ) { m_bins = std::move(value) ; }
71 //
72 H1& operator*=( std::string value ) { setName ( std::move(value) ) ; return *this ; }
73 H1& operator/=( std::string value ) { setTitle ( std::move(value) ) ; return *this ; }
74 H1& operator^=( const double value ) { setHighEdge(value) ; return *this ; }
75 H1& operator-=( const double value ) { setLowEdge(value) ; return *this ; }
76 H1& operator|=( const unsigned int value) { setNBins(value) ; return *this ; }
77
78 H1& operator&=( Edges value ) { setEdges ( std::move(value) ) ; return *this ; }
79 H1& operator+=( Bins value ) { setBins ( std::move(value) ) ; return *this ; }
80 //
81 bool ok () const
82 {
83 if ( m_bins.empty() ) { return false ; }
84 if ( !m_edges.ok () ) { return false ; }
85 if ( m_bins.size() != m_edges.nBins() + 2 ) { return false ; }
86 return true ;
87 }
88 //
89 std::string m_name ;
90 std::string m_title ;
91 Edges m_edges ;
92 Bins m_bins ;
93
94 } ;
95 // ==========================================================================
101 struct H2 final
102 {
103 //
104 void setName ( std::string value ) { m_name = std::move(value) ; }
105 void setTitle ( std::string value ) { m_title = std::move(value) ; }
106 void setXEdges ( Edges value ) { m_xedges = std::move(value) ; }
107 void setYEdges ( Edges value ) { m_yedges = std::move(value) ; }
108 void setBins ( Bins value ) { m_bins = std::move(value) ; }
109 //
110 H2& operator*=( std::string value ) { setName ( std::move(value) ) ; return *this ; }
111 H2& operator/=( std::string value ) { setTitle ( std::move(value) ) ; return *this ; }
112 H2& operator&=( Edges value ) { setXEdges ( std::move(value) ) ; return *this ; }
113 H2& operator|=( Edges value ) { setYEdges ( std::move(value) ) ; return *this ; }
114 H2& operator+=( Bins value ) { setBins ( std::move(value) ) ; return *this ; }
115 //
116 bool ok () const
117 {
118 if ( m_bins.empty () ) { return false ; }
119 if ( !m_xedges.ok () ) { return false ; }
120 if ( !m_yedges.ok () ) { return false ; }
121 if ( m_bins.size() !=
122 ( m_xedges.nBins() + 2 ) *
123 ( m_yedges.nBins() + 2 ) ) { return false ; }
124 return true ;
125 }
126 //
127 //
128 std::string m_name ;
129 std::string m_title ;
130 Edges m_xedges ;
131 Edges m_yedges ;
132 Bins m_bins ;
133 } ;
134 // ==========================================================================
135 } // end of anonymous namespace
136 // ============================================================================
137 // The END
138 // ============================================================================
139 #endif // GAUDIUTILS_H1_H
140 // ============================================================================
std::string
STL class.
std::move
T move(T...args)
std::pair
std::vector
STL class.