30 PronyFitter(
int model_order,
int exponent_number,
int gate_beg,
int gate_end);
32 void Initialize(
int model_order,
int exponent_number,
int gate_beg,
int gate_end);
37 float GoToLevel(
float Level,
int *point,
int iterator,
int iLastPoint);
53 std::complex<float> *b,
int n);
56 std::vector<float> &a_b);
58 std::vector<float> &a_b);
77 float GetX(
float level,
int first_sample,
int last_sample);
78 float GetX(
float level,
int first_sample,
int last_sample,
float step);
95 bool fIsDebug =
false;
105 std::vector<float> fWfm;
107 std::complex<float> *fz =
nullptr;
108 std::complex<float> *fh =
nullptr;
109 std::vector<float> fFitWfm;
Class to fit waveform using Prony least squares method.
int ChooseBestSignalBeginHarmonics(int first_sample, int last_sample)
void MakeZpowerMatrix(int signal_length, std::complex< float > **output)
std::complex< float > * GetAmplitudes()
int CalcSignalBeginStraight()
float GetDeltaInSample(int sample)
int ChooseBestSignalBeginFast(int first_sample, int last_sample, int signal_length, std::complex< float > **InvHarmoMatrix)
float GetIntegral(int gate_beg, int gate_end)
float GetRSquare(int gate_beg, int gate_end)
float GetChiSquare(int gate_beg, int gate_end, int time_max)
void SolveSLECholesky(float *x, float **a, float *b, int n)
int CalcSignalBegin(float front_time_beg_03, float front_time_end)
float GetFitValue(float x)
void CalculateFitAmplitudesFast(int signal_length, std::complex< float > **InvHarmoMatrix)
void SetSignalBegin(int SignalBeg)
void SetDebugMode(bool IsDebug)
void CalculateFitAmplitudes()
float GetSignalBeginFromPhase()
std::complex< float > * GetHarmonics()
void CalculateFitHarmonics()
PronyFitter(int model_order, int exponent_number, int gate_beg, int gate_end)
float GoToLevel(float Level, int *point, int iterator, int iLastPoint)
void SetHarmonics(std::complex< float > *z)
void SetWaveform(std::vector< float > &Wfm, float ZeroLevel)
void CovarianceDirect(float &rho_f, std::vector< float > &a_f, float &rho_b, std::vector< float > &a_b)
void MakePileUpRejection(int time_max)
int SearchSignalBeginByHarmo(int first_sample, int last_sample, int signal_length, std::complex< float > **Zpower)
void SolveSLEGauss(float *x, float **r, float *b, int n)
void Initialize(int model_order, int exponent_number, int gate_beg, int gate_end)
std::vector< float > GetFitWfm()
void SetExternalHarmonics(std::vector< std::complex< float > > harmonics)
float GetX(float level, int first_sample, int last_sample)
void CovarianceQRmod(float &rho_f, std::vector< float > &a_f, float &rho_b, std::vector< float > &a_b)
float GetFitValue(int sample_number)
float LevelBy2Points(float X1, float Y1, float X2, float Y2, float Y0)
int ChooseBestSignalBegin(int first_sample, int last_sample)
void MakeInvHarmoMatrix(int signal_length, std::complex< float > **output)
void SolveSLEGauss(std::complex< float > *x, std::complex< float > **r, std::complex< float > *b, int n)
float GetX(float level, int first_sample, int last_sample, float step)