diff options
Diffstat (limited to 'test.c')
| -rw-r--r-- | test.c | 33 | 
1 files changed, 32 insertions, 1 deletions
| @@ -109,6 +109,36 @@ int isclose(double a, double b, double rel_tol, double abs_tol)      return fabs(a-b) <= fmax(rel_tol*fmax(fabs(a),fabs(b)),abs_tol);  } +int test_muon_get_E(char *err) +{ +    /* A very simple test to make sure the energy as a function of distance +     * along the track makes sense. Should include more detailed tests later. */ +    double T, E, range; + +    /* Assume initial kinetic energy is 1 GeV. */ +    T = 1000.0; +    E = get_E(T,1e-9,1.0); + +    /* At the beginning of the track we should have roughly the same energy. */ +    if (!isclose(E, T, 1e-5, 0)) { +        sprintf(err, "KE = %.5f, but expected %.5f", E, T); +        return 1; +    } + +    /* Assume initial kinetic energy is 1 GeV. */ +    T = 1000.0; +    range = get_range(T,1.0); +    E = get_E(T,range,1.0); + +    /* At the end of the track we should have roughly the same energy. */ +    if (!isclose(E, 0, 1e-5, 1e-5)) { +        sprintf(err, "KE = %.5f, but expected %.5f", E, 0.0); +        return 1; +    } + +    return 0; +} +  int test_muon_get_range(char *err)  {      /* A very simple test to make sure we read in the PDG table correctly. */ @@ -198,7 +228,8 @@ struct tests {      {test_solid_angle, "test_solid_angle"},      {test_refractive_index, "test_refractive_index"},      {test_muon_get_dEdx, "test_muon_get_dEdx"}, -    {test_muon_get_range, "test_muon_get_range"} +    {test_muon_get_range, "test_muon_get_range"}, +    {test_muon_get_E, "test_muon_get_E"}  };  int main(int argc, char **argv) | 
