00001
00002
00014 #ifndef _Bins1DBase_H_
00015 #define _Bins1DBase_H_
00016
00017 #include "BinsBase.h"
00018
00019 #include "BinnerAxis.h"
00020
00021 namespace hippodraw {
00022
00030 class MDL_HIPPOPLOT_API Bins1DBase : public BinsBase
00031 {
00032 private:
00033
00035 void resize ();
00036
00037 protected:
00038
00040 BinnerAxis * binner_axis;
00041
00043 Bins1DBase ( const char * name );
00044
00046 Bins1DBase ( const Bins1DBase & binner );
00047
00048 virtual double getLow ( hippodraw::Axes::Type axis ) const;
00049
00051 virtual void resize ( int number ) = 0;
00052
00057 virtual NTuple * prepareNTuple ( unsigned int rows ) const;
00058
00059 public:
00060
00062 virtual ~Bins1DBase ();
00063
00064 virtual int getNumberOfAxes () const;
00065
00066 virtual int numberOfBins ( hippodraw::Axes::Type axis ) const;
00067
00068 virtual bool hasEqualWidths () const;
00069
00074 double binWidth ( int i ) const;
00075
00076 virtual const BinnerAxis * getBinnerOn ( hippodraw::Axes::Type axis ) const;
00077
00080 virtual void setBinnerOn ( BinnerAxis *, hippodraw::Axes::Type axis );
00081
00083 double getHigh() const;
00084
00085 virtual void setNumberOfBins ( hippodraw::Axes::Type axis, int num_bins );
00086
00089 inline int binNumber(double x);
00090
00091 virtual const Range & setBinWidth ( hippodraw::Axes::Type axis,
00092 double value );
00093
00096 double calcBinWidth ( hippodraw::Axes::Type axis,
00097 int parm,
00098 bool dragging ) const;
00099
00101 virtual double calcOffset ( const std::string &,
00102 int parm,
00103 bool dragging ) const;
00104
00106 virtual double getOffset ( hippodraw::Axes::Type axis ) const;
00107
00110 virtual void setOffset ( hippodraw::Axes::Type axis, double value );
00111
00112 virtual const Range & setRange ( hippodraw::Axes::Type axis,
00113 const Range &,
00114 bool hold_width = true );
00115
00117 virtual const Range & getRange ( hippodraw::Axes::Type axis );
00118
00122 virtual double scaleFactor () const;
00123
00124
00125 virtual double binWidth ( hippodraw::Axes::Type axis ) const;
00126
00131 virtual int getNumberOfEntries ( int i ) const = 0;
00132
00133 };
00134
00135 inline
00136 int
00137 Bins1DBase::binNumber(double x)
00138 {
00139 return binner_axis->axisBinNumber(x);
00140 }
00141
00142
00143 }
00144
00145 #endif // _Bins1DBase_H_