00001 /* -*- mode: c++ -*- */ 00002 00014 #ifndef _NTupleFCN_H_ 00015 #define _NTupleFCN_H_ 00016 00017 // #ifdef HAVE_CONFIG_H 00018 // #include "config.h" 00019 // #endif 00020 00021 #include "StatedFCN.h" 00022 00023 class DataSource; 00024 class Range; 00025 class TupleCut; 00026 00033 class MDL_HIPPOPLOT_API NTupleFCN : virtual public StatedFCN 00034 { 00035 private: 00036 00039 TupleCut * m_fit_cut; 00040 00043 bool m_fit_range; 00044 00048 bool hasErrors () const; 00049 00054 void reset ( std::vector < std::vector < double > > & alpha, 00055 std::vector < double > & beta, 00056 unsigned int size ); 00057 00058 protected: 00059 00066 std::vector < int > m_indices; 00067 00070 unsigned int m_dimen; 00071 00074 const DataSource * m_ntuple; 00075 00079 NTupleFCN (); 00080 00084 NTupleFCN ( const NTupleFCN & ); 00085 00089 bool acceptRow ( unsigned int row ) const; 00090 00095 int getErrorColumn ( ) const; 00096 00097 public: 00098 00101 NTupleFCN ( const DataSource * ntuple, FunctionBase * function ); 00102 00106 void setDataSource ( const DataSource * source ); 00107 00108 virtual void setDataSource ( const DataSource * source, 00109 int dimension, 00110 const std::vector < int > & ); 00111 00119 virtual bool setUseErrors ( bool yes = true ); 00120 00123 virtual void setFitCut ( TupleCut * cut ); 00124 00127 virtual void setFitRange ( bool yes = true ); 00128 00134 virtual int degreesOfFreedom ( ) const; 00135 00136 protected: 00137 00145 virtual void calcAlphaBeta ( std::vector < std::vector < double > > & alpha, 00146 std::vector < double > & beta ); 00147 00148 }; 00149 00150 #endif // _NTupleFCN_H_