00001
00002
00014 #ifndef _NTupleFCN_H_
00015 #define _NTupleFCN_H_
00016
00017 #include "StatedFCN.h"
00018
00019 namespace hippodraw {
00020
00021 class DataSource;
00022 class Range;
00023 class TupleCut;
00024
00031 class MDL_HIPPOPLOT_API NTupleFCN : public StatedFCN
00032 {
00033 private:
00034
00037 TupleCut * m_fit_cut;
00038
00042 bool hasErrors () const;
00043
00048 void reset ( std::vector < std::vector < double > > & alpha,
00049 std::vector < double > & beta,
00050 unsigned int size );
00051
00052 protected:
00053
00060 std::vector < int > m_indices;
00061
00064 const DataSource * m_ntuple;
00065
00071 bool m_has_errors;
00072
00073 private:
00074
00077 bool m_fit_range;
00078
00079 protected:
00080
00084 NTupleFCN ();
00085
00088 NTupleFCN ( const NTupleFCN & );
00089
00090 virtual void copyFrom ( const StatedFCN * );
00091
00095 bool acceptRow ( unsigned int row ) const;
00096
00100 int getErrorColumn ( ) const;
00101
00102 public:
00103
00107 void setDataSource ( const DataSource * source );
00108
00109 virtual void setDataSource ( const DataSource * source,
00110 int dimension,
00111 const std::vector < int > & );
00112
00120 virtual bool setUseErrors ( bool yes=true );
00121
00126 virtual bool getUseErrors () const;
00127
00130 virtual void setFitCut ( TupleCut * cut );
00131
00134 virtual void setFitRange ( bool yes = true );
00135
00141 virtual int degreesOfFreedom ( ) const;
00142
00143 protected:
00144
00152 virtual void calcAlphaBeta ( std::vector < std::vector < double > > & alpha,
00153 std::vector < double > & beta );
00154
00155 };
00156
00157 }
00158
00159 #endif // _NTupleFCN_H_