diff options
Diffstat (limited to 'src/fit.c')
-rw-r--r-- | src/fit.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -22,8 +22,14 @@ static size_t iter; +typedef struct fitParams { + event *ev; + double epsrel; +} fitParams; + double nll(unsigned int n, const double *x, double *grad, void *params) { + fitParams *fpars = (fitParams *) params; double T, theta, phi, t0; double pos[3], dir[3]; double fval; @@ -48,7 +54,7 @@ double nll(unsigned int n, const double *x, double *grad, void *params) z2[0] = x[8]; gettimeofday(&tv_start, NULL); - fval = nll_muon((event *) params, T, pos, dir, t0, z1, z2, 1); + fval = nll_muon(fpars->ev, T, pos, dir, t0, z1, z2, 1, fpars->epsrel); gettimeofday(&tv_stop, NULL); long long elapsed = (tv_stop.tv_sec - tv_start.tv_sec)*1000 + (tv_stop.tv_usec - tv_start.tv_usec)/1000; @@ -72,11 +78,12 @@ double nll(unsigned int n, const double *x, double *grad, void *params) int fit_event(event *ev, double *xopt, double *fmin) { + fitParams fpars; double x[9], ss[9], lb[9], ub[9], fval, n; int rv; nlopt_opt opt = nlopt_create(NLOPT_LN_BOBYQA, 9); - nlopt_set_min_objective(opt,nll,ev); + nlopt_set_min_objective(opt,nll,&fpars); nlopt_set_ftol_abs(opt, 1e-5); x[0] = 1200.0; @@ -126,6 +133,9 @@ int fit_event(event *ev, double *xopt, double *fmin) nlopt_set_initial_step(opt, ss); + fpars.ev = ev; + fpars.epsrel = 1e-1; + iter = 0; rv = nlopt_optimize(opt,x,&fval); |