NTuplePearsonFCN.cxx
Go to the documentation of this file.
1 
12 #ifdef _MSC_VER
13 #include "msdevstudio/MSconfig.h"
14 #endif
15 
16 #include "NTuplePearsonFCN.h"
17 
18 #include "functions/FunctionBase.h"
19 
21 #include "datasrcs/DataSource.h"
22 
23 using std::vector;
24 
25 using namespace hippodraw;
26 
29 {
30 }
31 
34  : NTupleFCN ( fcn )
35 {
36 }
37 
38 StatedFCN *
40 clone () const
41 {
42  return new NTuplePearsonFCN ( *this );
43 }
44 
45 double
47 #ifdef HAVE_MINUIT2
48 Up () const
49 #else
50 up () const
51 #endif
52 {
53  return 1.0;
54 }
55 
56 namespace dp = hippodraw::DataPoint2DTuple;
57 
58 double
61 {
62  double result = 0.0;
63 
64  unsigned int size = m_indices.size ();
65 
66  if ( size == dp::SIZE ) { // 1D coordinate
67  int ix = m_indices [ dp::X ];
68  int iy = m_indices [ dp::Y ];
69 
70  unsigned int rows = m_ntuple -> rows ();
71 
72  for ( unsigned int i = 0; i < rows; i++ ) {
73  if ( acceptRow ( i ) ) {
74  const vector < double > & row = m_ntuple -> getRow ( i );
75  double function_value = m_function -> operator () ( row [ ix ] );
76  double diff = function_value - row [ iy ];
77  result += diff * diff / (function_value + 10e-6);
78  }
79  }
80  }
81  else {
82  unsigned int dimen = size - 2;
83  vector < double > coord ( dimen );
84 
85  int iy = m_indices [ size / 2 - 1 ];
86  int ie = m_indices [ size - 1 ];
87 
88  unsigned int rows = m_ntuple -> rows ();
89 
90  for ( unsigned int i = 0; i < rows; i++ ) {
91  if ( acceptRow ( i ) ) {
92  const vector < double > & row = m_ntuple -> getRow ( i );
93 
94  double err = ie < 0 ? 0. : row [ ie ];
95  if ( err == 0.0 && m_has_errors ) continue;
96  if ( m_has_errors == false ) err = 1.0;
97 
98  for ( unsigned int j = 0; j < dimen; j++ ) {
99  coord [ j ] = row [ m_indices [ j ] ];
100  }
101  double value = m_function -> operator () ( coord );
102  double diff = value - row [ iy ];
103  result += diff * diff / ( value * 10e-6 );
104  }
105  }
106  }
107 
108  return result;
109 }
110 
111 bool
114 {
115  return false;
116 }

Generated for HippoDraw Class Library by doxygen