00001 // $Header: /nfs/slac/g/glast/ground/cvs/GaudiKernel/GaudiKernel/IHistogram.h,v 1.1.1.1 2001/04/18 18:14:18 tlindner Exp $ 00002 #ifndef INTERFACES_IHISTOGRAM_H 00003 #define INTERFACES_IHISTOGRAM_H 1 00004 00005 00006 // Include files 00007 #include <string> 00008 00009 00010 // Forward declarations 00011 class IAnnotation; 00012 00013 00014 //------------------------------------------------------------------------------ 00015 // 00016 // ClassName: IHistogram 00017 // 00018 // Description: Definition of the IHistogram interface class 00019 // 00020 // IHistogram is a base class for all other histogram interfaces. 00021 // It contains their common functionality. 00022 // 00023 // IHistogram is not a complete histogram interface, it cannot 00024 // be used as a standard histogram. It is ment to be used e.g. 00025 // for histogram managment (there, where the number of axes is 00026 // not important). 00027 // 00028 // Design principles : 00029 // 00030 // 1) Only interfaces, basic types, and types from foundation libraries 00031 // are allowed (STL is currently the only one foundation library) 00032 // - Uses only int and double as basic types 00033 // - Internals (classes, enums, or others) of concrete packages 00034 // do not appear in the interface 00035 // 2) Accessors - XXX() (no getXXX() functions) 00036 // 3) In member function names 00037 // - in-range bins are not specified explicitly (e.g. sumBinHeights()) 00038 // - ...All... mean all (in-range and extra) bins (e.g. sumAllBinHeights()) 00039 // - ...Extra... mean extra bins (e.g. sumExtraBinHeights()) 00040 // 00041 // 00042 // Authors: Pavel Binko, Dino Ferrero Merlino, Andreas Pfeiffer 00043 // Date: 22/03/2000 00044 // 00045 //------------------------------------------------------------------------------ 00046 00047 00048 class IHistogram { 00049 00050 public: 00051 00052 00056 00059 enum { UNDERFLOW_BIN = -2, OVERFLOW_BIN = -1 }; 00060 00061 00065 00070 virtual std::string title() const = 0; 00071 virtual void setTitle( std::string value ) = 0; 00072 00075 //PB virtual IAnnotation* annotation() = 0; 00076 //PB virtual const IAnnotation* annotation() const = 0; 00077 00080 virtual int dimensions() const = 0; 00081 00084 virtual void reset() = 0; 00085 00086 00090 00092 virtual int entries() const = 0; 00093 00096 virtual int allEntries() const = 0; 00097 00099 virtual int extraEntries() const = 0; 00100 00103 virtual double equivalentBinEntries() const = 0; 00104 00105 00109 00111 virtual double sumBinHeights() const = 0; 00112 00114 virtual double sumAllBinHeights() const = 0; 00115 00117 virtual double sumExtraBinHeights() const = 0; 00118 00119 }; 00120 00121 00122 #endif // INTERFACES_IHISTOGRAM_H
1.2.3 written by Dimitri van Heesch,
© 1997-2000