80{
81 double sumx, sumx2, sumx3, sumx4,sumy, sumyx, sumyx2, det;
82 float chi;
83
84
85
86
87 long i;
88
89 chi = 99999999.0;
90 *a = 0; *
b = 0; *c = 0;
92
93
94 if (n < 3)
95 {
96
97 return -1;
98 }
99
100
101 sumx = 0.0;
102 sumx2 = 0.0;
103 sumx3 = 0.0;
104 sumx4 = 0.0;
105 sumy = 0.0;
106 sumyx = 0.0;
107 sumyx2 = 0.0;
108
109
110
111 for (i = 0; i < n; i++)
112 {
113 sumx = sumx +
w[i] *
x[i];
114 sumx2 = sumx2 +
w[i] *
x[i] *
x[i];
115 sumx3 = sumx3 +
w[i] *
x[i] *
x[i] *
x[i];
116 sumx4 = sumx4 +
w[i] *
x[i] *
x[i] *
x[i] *
x[i];
117 sumy = sumy +
w[i] *
y[i];
118 sumyx = sumyx +
w[i] *
y[i] *
x[i];
119 sumyx2 = sumyx2 +
w[i] *
y[i] *
x[i] *
x[i];
120
121
122 }
123
124
125
126
127
128 HepMatrix D(3,3,1);
129 HepMatrix
C(3,1),
ABC(3,1);
130 D(1,1) = sumx4; D(1,2) = D(2,1) = sumx3; D(1,3) = D(3,1) = D(2,2) = sumx2;
131 D(3,2) = D(2,3) = sumx; D(3,3) = n;
132 C(1,1) = sumyx2;
C(2,1) = sumyx;
C(3,1) = sumy;
133
134 int ierr;
135 ABC = (D.inverse(ierr))*
C;
136
140
141
142 float center = *
b/(-2*(*a));
143 float mean_x;
144 for(i = 0; i < n; i++){
146 }
147
148 if(mean_x > center) *
half = 2;
150
151
152
153
154 chi = 0.0;
155 for (i=0; i<n; i++)
156 {
157 chi = chi+(
w[i])*((
y[i])-*a*(
x[i])-*
b)*
158 ((
y[i])-*a*(x[i])-*
b);
159 }
160
161
162
163
164 *chisq = chi;
165 return 1;
166}
***************************************************************************************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
double precision pisqo6 half