12 #ifndef PHASE_FITTER_H
13 #define PHASE_FITTER_H
43 : _phases(), _frequencies(), _weights(), _fittingAccuracy(1e-6) {}
52 : _phases(channelCount, 0.0),
53 _frequencies(channelCount, 0.0),
54 _weights(channelCount, 1.0),
55 _fittingAccuracy(1e-6) {}
65 void Initialize(
const std::vector<double>& frequencies) {
66 _phases.assign(frequencies.size(), 0.0);
67 _frequencies = frequencies;
68 _weights.assign(frequencies.size(), 1.0);
140 const double*
PhaseData()
const {
return _phases.data(); }
184 size_t Size()
const {
return _phases.size(); }
198 _fittingAccuracy = newAccuracy;
219 return alpha / nu + beta;
244 return fmod(alpha / nu + beta, 2.0 * M_PI);
268 return fmod(alpha / nu, 2.0 * M_PI);
271 static double AlphaToTEC(
double alpha) {
return alpha / -8.44797245e9; }
274 std::vector<double> _phases, _frequencies, _weights;
275 double _fittingAccuracy;
277 double fitTEC2ModelBeta(
double alpha,
double betaEstimate)
const;
278 void bruteForceSearchTEC2Model(
double& lowerAlpha,
double& upperAlpha,
280 double ternarySearchTEC2ModelAlpha(
double startAlpha,
double endAlpha,
282 void fillDataWithTEC2Model(
double alpha,
double beta);
283 void fillDataWithTEC1Model(
double alpha);
285 void bruteForceSearchTEC1Model(
double& lowerAlpha,
double& upperAlpha)
const;
286 double ternarySearchTEC1ModelAlpha(
double startAlpha,
double endAlpha)
const;
Phase fitter that can force phase solutions over frequency onto a TEC model.
Definition: PhaseFitter.h:40
void SetFittingAccuracy(double newAccuracy)
Definition: PhaseFitter.h:197
PhaseFitter(size_t channelCount)
Definition: PhaseFitter.h:51
double TEC1ModelCost(double alpha) const
double FitDataToTEC1ModelWithInitialValues(double &alpha)
Definition: PhaseFitter.h:247
static double AlphaToTEC(double alpha)
Definition: PhaseFitter.h:271
double FittingAccuracy() const
Definition: PhaseFitter.h:191
const double * WeightData() const
Definition: PhaseFitter.h:178
double FitDataToTEC2Model(double &alpha, double &beta)
void FitTEC2ModelParameters(double &alpha, double &beta) const
double * WeightData()
Definition: PhaseFitter.h:172
double TEC2ModelCost(double alpha, double beta) const
double FitDataToTEC1Model(double &alpha)
void Initialize(const std::vector< double > &frequencies)
Definition: PhaseFitter.h:65
static double TEC2ModelFuncWrapped(double nu, double alpha, double beta)
Definition: PhaseFitter.h:243
PhaseFitter()
Definition: PhaseFitter.h:42
double * PhaseData()
Definition: PhaseFitter.h:134
void FitTEC1ModelParameters(double &alpha) const
void FitDataToTEC2Model()
Definition: PhaseFitter.h:87
size_t Size() const
Definition: PhaseFitter.h:184
static double TEC1ModelFuncWrapped(double nu, double alpha)
Definition: PhaseFitter.h:267
static double TEC2ModelFunc(double nu, double alpha, double beta)
Definition: PhaseFitter.h:218
void FitDataToTEC1Model()
Definition: PhaseFitter.h:231
double FitDataToTEC2ModelWithInitialValues(double &alpha, double &beta)
Definition: PhaseFitter.h:104
const std::vector< double > & GetFrequencies() const
Definition: PhaseFitter.h:146
const double * PhaseData() const
Definition: PhaseFitter.h:140