/* This file is part of MAUS: http://micewww.pp.rl.ac.uk/projects/maus
*
* MAUS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MAUS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MAUS. If not, see .
*/
#ifndef BETAEVOLVER_HH
#define BETAEVOLVER_HH
#include
class BTFieldConstructor;
namespace MAUS {
// Class to integrate beta function through BTFields (using gsl numerical RK4 or other)
class BetaEvolver {
public:
static std::vector integrate(double target_z, double z_in, double beta_0,
double alpha_0, double p, double step_size);
static void rescale_step_4_lattice(double e2_us, double cc_us, double e1_us,
double m2_us, double m1_us, double fc_us,
double fc_ds, double m1_ds, double m2_ds,
double e1_ds, double cc_ds, double e2_ds);
static bool check_step_4_names();
private:
static int z_beta_differential_equation(double z, const double b[2],
double dbdz[2], void* params);
static BTFieldConstructor* _field;
static int _maxNSteps;
static double _p;
static double _absoluteError;
static double _relativeError;
};
}
#endif // ifndef BETAEVOLVER_HH