67{
68 double sumx, sumx2, sumx3, sumx4, sumy, sumyx, sumyx2, det;
69 float chi;
70
71
72
73
74 long i;
75
76 chi = 99999999.0;
77 *a = 0;
78 *b = 0;
79 *c = 0;
80 *half = 0;
81
82
84 {
85
86 return -1;
87 }
88
89
90 sumx = 0.0;
91 sumx2 = 0.0;
92 sumx3 = 0.0;
93 sumx4 = 0.0;
94 sumy = 0.0;
95 sumyx = 0.0;
96 sumyx2 = 0.0;
97
98
99 for ( i = 0; i <
n; i++ )
100 {
101 sumx = sumx +
w[i] *
x[i];
102 sumx2 = sumx2 +
w[i] *
x[i] *
x[i];
103 sumx3 = sumx3 +
w[i] *
x[i] *
x[i] *
x[i];
104 sumx4 = sumx4 +
w[i] *
x[i] *
x[i] *
x[i] *
x[i];
105 sumy = sumy +
w[i] * y[i];
106 sumyx = sumyx +
w[i] * y[i] *
x[i];
107 sumyx2 = sumyx2 +
w[i] * y[i] *
x[i] *
x[i];
108
109 }
110
111
112
113 HepMatrix D( 3, 3, 1 );
114 HepMatrix
C( 3, 1 ),
ABC( 3, 1 );
115 D( 1, 1 ) = sumx4;
116 D( 1, 2 ) = D( 2, 1 ) = sumx3;
117 D( 1, 3 ) = D( 3, 1 ) = D( 2, 2 ) = sumx2;
118 D( 3, 2 ) = D( 2, 3 ) = sumx;
123
124 int ierr;
125 ABC = ( D.inverse( ierr ) ) *
C;
126
130
131
132 float center = *b / ( -2 * ( *a ) );
133 float mean_x = 0.0;
134 for ( i = 0; i <
n; i++ ) { mean_x +=
x[i] /
n; }
135
136 if ( mean_x > center ) *half = 2;
137 else *half = 1;
138
139
140
141
142 chi = 0.0;
143 for ( i = 0; i <
n; i++ )
144 {
145 chi =
146 chi + (
w[i] ) * ( ( y[i] ) - *a * (
x[i] ) - *b ) * ( ( y[i] ) - *a * (
x[i] ) - *b );
147 }
148
149
150
151
152 *chisq = chi;
153 return 1;
154}
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA all others are from PDG *Only resonances with known widths into electron pairs are sept ************************************************************************C Declarations C