001 #ifndef HEPHIST1D_H
002 #define HEPHIST1D_H
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049 #ifdef HEP_SHORT_NAMES
050 #define Hist1D HepHist1D
051 #endif
052
053
054 #ifndef HEPHIST_H
055 #include "HepTuple/HepHist.h"
056 #endif
057
058
059 ZM_BEGIN_NAMESPACE( zmht )
060
061
062 class HepFileManager;
063 class HepRawHist;
064
065
066 class HepHist1D : public HepHist {
067
068 protected:
069
070
071 HepHist1D(
072 HepFileManager * manager
073 , const std::string& title
074 , const int nBins, const float low, const float high
075 , const int id_req = 0
076 );
077
078
079
080 HepHist1D( );
081
082 public:
083
084
085 static const char typeId;
086
087 virtual ~HepHist1D();
088
089 virtual ZM_COVARIANT_TYPE(HepObj,HepHist1D) & makeClone(
090 const std::string& title
091 , const int id = 0
092 ) const;
093
094 virtual ZM_COVARIANT_TYPE(HepObj,HepHist1D) & makeEmpty(
095 const std::string& title
096 , const int id = 0
097 ) const;
098
099 virtual ZM_COVARIANT_TYPE(HepObj,HepHist1D) & makeClone(
100 HepFileManager *manager
101 , const std::string& title
102 , const int id = 0
103 ) const;
104
105 virtual ZM_COVARIANT_TYPE(HepObj,HepHist1D) & makeEmpty(
106 HepFileManager *manager
107 , const std::string& title
108 , const int id = 0
109 ) const;
110
111 virtual void accumulate(
112 const float x
113 , const float weight = 1.0
114 );
115
116 virtual void reset();
117
118 virtual float bin(
119 const int binNum
120 ) const;
121
122 virtual void getContents(
123 float * values
124 ) const;
125
126 virtual void putContents(
127 float * values
128 ) const;
129
130 virtual void getErrors(
131 float * errors
132 ) const;
133
134 virtual void putErrors(
135 float * errors
136 ) const;
137
138 virtual float binError(
139 const int binNum
140 ) const;
141
142 virtual int nBins() const;
143
144 virtual float min() const;
145 virtual float max() const;
146
147 virtual int entries() const;
148
149 virtual float weight() const;
150 virtual float weight2() const;
151
152 virtual float sum() const;
153 virtual float sum2() const;
154
155 virtual void getStatistics( int & numEntries, float & sumW, float & sumW2,
156 double & sumWX, double & sumWX2 ) const;
157
158 virtual void getOverflows( float * numOver, float * numUnder ) const;
159
160 bool compatibleHist1D( const HepHist1D & h );
161
162 virtual HepRawHist importHist1D( const HepHist1D & h );
163
164 virtual void setXTitle( const std::string& label );
165 virtual void setYTitle( const std::string& label );
166 virtual void setZTitle( const std::string& label );
167 virtual void setTitle ( const std::string& label );
168
169 virtual void addHist1D( const HepRawHist & h );
170 virtual void multiplyHist1D( const HepRawHist & h );
171 virtual void subtractHist1D( const HepRawHist & h );
172 virtual void divideHist1D( const HepRawHist & h );
173
174 virtual void removeImportedHist1D( const HepRawHist & h );
175
176
177
178
179
180
181 float mean() const {
182 float w = weight();
183 return ( w!=0 ? ( sum()/w ) : 0 );
184 };
185
186 float variance() const {
187 float w = weight();
188 if (w==0) return 0;
189 float m = sum()/w;
190 return (sum2()/w-m*m);
191 };
192
193
194 HepHist1D & operator += ( const HepHist1D & );
195 HepHist1D & operator -= ( const HepHist1D & );
196 HepHist1D & operator *= ( const HepHist1D & );
197 HepHist1D & operator /= ( const HepHist1D & );
198
199
200 protected:
201
202 virtual void _accumulate(
203 const float x
204 , const float weight = 1.0
205 );
206
207
208 private:
209
210 const int _nBins;
211 const float _min;
212 const float _max;
213
214
215 HepHist1D( const HepHist1D & );
216 HepHist1D & operator=( const HepHist1D & );
217
218 };
219
220
221 ZM_END_NAMESPACE( zmht )
222
223 #endif
224
Send problems or questions to cdfcode@fnal.gov