233 double m_2pi = 2.0 *
M_PI;
238 std::cout <<
"in MdcxFittedHel::DoFit() nfree = " <<
nfree <<
" nhits = " <<
nhits
243 double A[10][10] = { { 0. } }, B[10] = { 0. }, D[10] = { 0. }, det;
248 std::cout <<
"xHitList.length " <<
xHitList.length() <<
" ";
249 for (
int ii = 0; ii <
xHitList.length(); ii++ ) {
xHitList[ii]->print( std::cout, ii ); }
250 std::cout << std::endl <<
"sfac = " <<
sfac << std::endl;
253 for (
int i = 0; i <
nhits; i++ )
255 std::vector<float> derivs =
xHitList[i]->derivatives( *
this );
258 cout <<
"derivs " << i <<
" ";
259 for (
unsigned int ii = 0; ii < derivs.size(); ii++ )
260 { cout << setw( 15 ) << derivs[ii]; }
261 std::cout << std::endl;
265 for (
unsigned int ipar = 0; ipar < derivs.size(); ipar++ )
267 derivs[ipar] /=
sfac;
268 if ( 6 ==
debug ) cout <<
" derivs[" << ipar <<
"] = " << derivs[ipar];
270 if ( 6 ==
debug ) std::cout << std::endl;
272 chisq += derivs[0] * derivs[0];
274 for (
int ipar = 0; ipar < norder; ipar++ )
276 D[ipar] += derivs[0] * derivs[ipar + 1];
278 for (
int jpar = 0; jpar < norder; jpar++ )
279 { A[ipar][jpar] += derivs[ipar + 1] * derivs[jpar + 1]; }
282 if ( 6 ==
debug ) cout <<
"chisq = " <<
chisq << endl;
290 for (
int ii = 0; ii < norder; ii++ )
292 cout <<
"D[" << ii <<
"]: " << D[ii] <<
" A:";
293 for (
int jj = 0; jj < norder; jj++ ) cout <<
" " << A[ii][jj];
307 cout <<
"chisq " <<
chisq <<
" ndof " << ndof <<
" chiperdof " <<
chisq / ndof
308 <<
" >?chidofbail " << chidofbail << endl;
310 float chiperdof =
chisq / ndof;
311 if ( chiperdof > chidofbail )
return ftemp;
317 cout <<
" ndof <=0 : chisq " <<
chisq <<
" >? chidofbail/2.5 " << chidofbail / 2.5
320 if (
chisq > chidofbail / 2.5 )
return ftemp;
325 if ( 6 ==
debug ) cout <<
"ierr = " << ierr << endl;
328 for (
int ii = 0; ii < norder; ii++ )
329 for (
int jj = 0; jj < norder; jj++ ) B[ii] += A[ii][jj] * D[jj];
332 for (
int ii = 0; ii < norder; ii++ )
334 cout <<
"B[" << ii <<
"]: " << B[ii] <<
" A:";
335 for (
int jj = 0; jj < norder; jj++ ) cout <<
" " << A[ii][jj];
340 if (
qd0 )
d0 -= B[++bump];
354 if (
qz0 )
z0 -= B[++bump];
356 if (
qt0 )
t0 -= B[++bump];
364 if ( fabs(
omega ) > 10.0 ) ftemp = 1306;
366 else { ftemp = ierr; }