00001
00002
00014 #ifndef _Bins1DBase_H_
00015 #define _Bins1DBase_H_
00016
00017 #include "BinsBase.h"
00018
00019 #include "BinnerAxis.h"
00020
00034 class MDL_HIPPOPLOT_API Bins1DBase : public BinsBase
00035 {
00036 private:
00037
00039 void resize ();
00040
00041 protected:
00042
00044 BinnerAxis * binner_axis;
00045
00047 Bins1DBase ( const char * name );
00048
00050 Bins1DBase ( const Bins1DBase & binner );
00051
00052 virtual double getLow ( hippodraw::Axes::Type axis ) const;
00053
00055 virtual void resize ( int number ) = 0;
00056
00061 virtual NTuple * prepareNTuple ( unsigned int rows ) const;
00062
00063 public:
00064
00066 virtual ~Bins1DBase ();
00067
00068 virtual int getNumberOfAxes () const;
00069
00070 virtual int numberOfBins ( hippodraw::Axes::Type axis ) const;
00071
00072 virtual bool hasEqualWidths () const;
00073
00078 double binWidth ( int i ) const;
00079
00080 virtual const BinnerAxis * getBinnerOn ( hippodraw::Axes::Type axis ) const;
00081
00084 virtual void setBinnerOn ( BinnerAxis *, hippodraw::Axes::Type axis );
00085
00087 double getHigh() const;
00088
00089 virtual void setNumberOfBins ( hippodraw::Axes::Type axis, int num_bins );
00090
00093 inline int binNumber(double x);
00094
00095 virtual const Range & setBinWidth ( hippodraw::Axes::Type axis,
00096 double value );
00097
00099 double calcBinWidth ( const std::string & axis,
00100 int parm,
00101 bool dragging ) const;
00102
00104 virtual double calcOffset ( const std::string &,
00105 int parm,
00106 bool dragging ) const;
00107
00109 virtual double getOffset ( hippodraw::Axes::Type axis ) const;
00110
00113 virtual void setOffset ( hippodraw::Axes::Type axis, double value );
00114
00115 virtual const Range & setRange ( hippodraw::Axes::Type axis,
00116 const Range &,
00117 bool hold_width = true );
00118
00120 virtual const Range & getRange ( hippodraw::Axes::Type axis );
00121
00125 virtual double scaleFactor () const;
00126
00127
00128 virtual double binWidth ( hippodraw::Axes::Type axis ) const;
00129
00134 virtual int getNumberOfEntries ( int i ) const = 0;
00135
00136 };
00137
00138 inline
00139 int
00140 Bins1DBase::binNumber(double x)
00141 {
00142 return binner_axis->axisBinNumber(x);
00143 }
00144
00145
00146 #endif // _Bins1DBase_H_