NTupleProjector.h

Go to the documentation of this file.
00001 /* -*- mode: c++; -*-  */
00002 
00014 #ifndef _NTupleProjector_H_
00015 #define _NTupleProjector_H_
00016 
00017 #include "ProjectorBase.h"
00018 
00019 namespace hippodraw {
00020 
00021 class DataSource;
00022 
00044 class MDL_HIPPOPLOT_API NTupleProjector : virtual public ProjectorBase
00045 {
00046 
00049   typedef std::vector < const TupleCut * > CutList_t;
00050 
00053   mutable bool m_is_valid;
00054 
00058   NTuple * createEmptyNTuple () const;
00059 
00064   void fillNTuple ( NTuple * ntuple, const CutList_t & cut_list ) const;
00065 
00066 protected:
00067 
00077   std::vector< std::string > m_binding_options;
00078 
00080   mutable std::vector< std::string > m_bindings;
00081 
00086   std::vector< unsigned int > m_columns;
00087 
00089   CutList_t m_cut_list;
00090 
00093   const DataSource * m_ntuple;
00094 
00100   unsigned int m_min_bindings;
00101 
00104   NTupleProjector ( unsigned int columns );
00105 
00107   NTupleProjector ( const NTupleProjector & projector );
00108 
00111   Range dataRange ( int column ) const;
00112 
00114   Range dataRangeWithError ( int data, int error ) const;
00115 
00117   double getPos ( int column ) const;
00118 
00121   double getPosWithError ( int data, int error ) const;
00122 
00126   void setAxisBinding ( int axis, const std::string & label );
00127 
00128 public:
00129 
00131   virtual ~NTupleProjector();
00132 
00135   virtual void update ( const Observable * );
00136 
00141   virtual void willDelete ( const Observable * );
00142 
00145   virtual const std::vector< std::string > & bindingOptions () const;
00146 
00151   virtual const std::vector < std::string > & getAxisBindings () const;
00152 
00153 
00157   unsigned int indexOfBindingOption ( const std::string & axis ) const;
00158 
00162   virtual int indexOf ( const std::string & label ) const;
00163 
00166   virtual void setXErrorOption ( bool enable );
00167 
00170   virtual void setYErrorOption ( bool enable );
00171 
00176   virtual void setAxisBinding ( const std::string & axis, 
00177                                 const std::string & label );
00178 
00184   virtual void setAxisBindings ( const std::vector < std::string > & labels );
00185 
00190   virtual void setNTuple ( const DataSource * source );
00191 
00193   virtual const DataSource * getNTuple () const;
00194 
00196   virtual DataSource * getNTuple ();
00197 
00199   virtual const std::string & getNTupleName () const;
00200 
00205   virtual void changedNTuple() = 0;
00206 
00209   virtual Range dataRangeOn ( Axes::Type ) const = 0;
00210 
00212   virtual void addCut ( const TupleCut * cut );
00213 
00216   virtual void removeCut ( const TupleCut * cut );
00217 
00219   const std::vector < const TupleCut * > & getCutList () const;
00220 
00224   bool acceptRow ( unsigned int i, const CutList_t & cut_list ) const;
00225 
00229   virtual const std::string & getTitle() const;
00230 
00231   virtual const std::string & getXLabel() const;
00232   virtual const std::string & getYLabel ( bool flag = false ) const;
00233 
00236   int getNumberOfEntries () const;
00237 
00238 
00240   virtual int getUnderflow () const;
00241 
00243   virtual int getOverflow () const;
00244   
00247   virtual bool inRange ( int row ) const;
00248 
00250   virtual double getAverage ( Axes::Type axis ) const;
00251 
00252   /* Implements ProjectorBase. */
00253   virtual bool isEmpty () const;
00254 
00255   /* Create an DataSource given the present set of cuts.
00256    */
00257   virtual NTuple * getNTupleAfterCuts () const;
00258 
00262    virtual void fillColumnAfterCuts(const std::string & column,
00263                                     std::vector<double> & columnData) const;
00264 
00265   virtual 
00266   NTuple * createNTupleWith ( const std::vector< TupleCut > & cut_list ) const;
00267 
00270   bool isDataValid () const;
00271 
00275   virtual bool hasDataSourceBindings () const;
00276 
00277 };
00278 
00279 } // namespace hippodraw
00280 
00281 #endif // _NTupleProjector_H_

Generated for HippoDraw Class Library by doxygen