#ifndef LIKELIHOOD_H #define LIKELIHOOD_H #include "event.h" #include /* for size_t */ /* Maximum number of PE to consider if the PMT was hit. */ #define MAX_PE 10000 /* Maximum number of PE to consider if the PMT wasn't hit. * * Note: This must be less than MAX_PE. */ #define MAX_PE_NO_HIT 10 /* To speed things up we quit calculating the probability of a hit when the * ratio between the current probability and the maximum probability is less * than 10**(-MIN_RATIO). So if MIN_RATIO is -10, that means that we ignore * probabilities which are 10 million times less likely than the most probable * value for n. */ #define MIN_RATIO -10 /* The fraction of reflected light which is detected. */ #define CHARGE_FRACTION 0.5 /* Dark rate of the PMTs (Hz). * * From pmt_response.dat in SNOMAN. */ #define DARK_RATE 1000.0 /* Single PE transit time spread (ns). * * From pmt_response.dat in SNOMAN. */ #define PMT_TTS 1.61 /* Event window (ns) */ #define GTVALID 400.0 #define BETA_MIN 0.8 typedef struct particle { double mass; double range; double *x; double *T; size_t n; } particle; particle *particle_init(int id, double T0, size_t n); double particle_get_energy(double x, particle *p); void particle_free(particle *p); double get_expected_charge(double x, double T, double T0, double *pos, double *dir, double *pmt_pos, double *pmt_normal, double r, int reflected); double nll_muon(event *ev, int id, double T0, double *pos, double *dir, double t0, double *z1, double *z2, size_t n, double epsrel, int fast); #endif