10 #endif // _MSC_VER > 1000
21 #define M12(i1, i2, l2) (i1*l2+i2)
41 const double m_pi = 4.*atan(1.);
44 const double s2fwhm = sqrt(8.*log(2.));
45 const double s2fwtm = sqrt(8.*log(10.));
59 double Chi2() {
return (m_bValid) ? m_dChi2 : -1.;}
61 int From() {
return (m_bValid) ? m_nChanA : 0;}
62 int To() {
return (m_bValid) ? m_nChanB : 0;}
64 int BgFrom() {
return (m_bValid) ? m_nBgChanA : 0;}
65 int BgTo() {
return (m_bValid) ? m_nBgChanB : 0;}
67 int Npeaks() {
return (m_bValid) ? m_nNpeaks : 0;}
72 double Back0 () {
return (m_bBckgr) ? m_dBack0 : 0.;}
73 double Back0Err() {
return (m_bBckgr) ? m_dBack0Err : 0.;}
75 double Back1 () {
return (m_bBckgr) ? m_dBack1 : 0.;}
76 double Back1Err() {
return (m_bBckgr) ? m_dBack1Err : 0.;}
78 double BackL1 () {
return (m_bBckgr) ? m_dBackL1 : 0.;}
79 double BackL2 () {
return (m_bBckgr) ? m_dBackL2 : 0.;}
81 double Area (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
Area : 0.;}
82 double AreaErr(
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pErr[np].
Area : 0.;}
84 double Amplitude (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
Ampli : 0.;}
85 double AmplitudeErr(
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pErr[np].
Ampli : 0.;}
87 double Position (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
Posi : 0.;}
88 double PositionErr(
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pErr[np].
Posi : 0.;}
90 double Sigma (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
Sigma : 0.;}
91 double SigmaErr(
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pErr[np].
Sigma : 0.;}
93 double Fwhm (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
Fwhm : 0.;}
94 double FwhmErr(
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pErr[np].
Fwhm : 0.;}
96 double Fw05 (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
Fw05 : 0.;}
97 double Fw01 (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
Fw01 : 0.;}
99 double W01L (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
W01L : 0.;}
100 double W01R (
int np) {
return (m_bGauss && np >=0 && np < m_nNpeaks) ? m_pRes[np].
W01R : 0.;}
102 double Step (
int np) {
return (m_bStep && np >=0 && np < m_nNpeaks) ? m_pRes[np].
Step : 0.;}
103 double StepErr(
int np) {
return (m_bStep && np >=0 && np < m_nNpeaks) ? m_pErr[np].
Step : 0.;}
105 double TailLeft (
int np) {
return (m_bTailL && np >=0 && np < m_nNpeaks) ? m_pRes[np].
TailL : 0.;}
106 double TailLeftErr (
int np) {
return (m_bTailL && np >=0 && np < m_nNpeaks) ? m_pErr[np].
TailL : 0.;}
108 double TailRight (
int np) {
return (m_bTailR && np >=0 && np < m_nNpeaks) ? m_pRes[np].
TailR : 0.;}
109 double TailRightErr(
int np) {
return (m_bTailR && np >=0 && np < m_nNpeaks) ? m_pErr[np].
TailR : 0.;}
111 double ExpAmpli() {
return (m_bExp) ? m_dExpAmpli : 0.;}
112 double ExpDecay() {
return (m_bExp) ? m_dExpDecay : 0.;}
126 bool tTailL = m_bTailL;
bool tTailR = m_bTailR;
127 m_bTailL = m_bTailR =
false;
129 m_bTailL = tTailL; m_bTailR = tTailR;
140 bool CalcPeakMoments(
float *pSpek,
int chanA,
int chanB,
int nChanBack);
141 int CalcGaussianFit(
float *pSpek,
int chanA,
int chanB, std::vector<double>&vPeaks);
143 bool CalcExponential(
float *pSpek,
int chanA,
int chanB,
int bgA = -1,
int bgB = -1);
144 int CalcSinusoid (
float *pSpek,
int chanA,
int chanB,
double period,
bool bFlat,
bool bSlope);
212 double LineFunc(
double xx);
214 double ExpFunc(
double xx);
215 double ExpPeak(
double xx,
int);
217 double GFitFunc(
double xx);
218 double GFitBack(
double xx);
219 double GFitPeak(
double xx,
int nn);
220 double GFfunF(
double xx,
double *par);
221 void GFderF(
int id,
double *fpar,
double *deriv,
double &deltay,
double &weight);
223 double GF_erf(
double);
224 double GF_y2w(
int np,
double yval,
int side = 0);
226 double SFitFunc(
double xx);
227 double SFitWave(
double xx,
int nn);
228 double SFfunF(
double xx,
double *par);
229 void SFderF(
int id,
double *fpar,
double *deriv,
double &deltay,
double &weight);
231 double Curfit(
int ndat,
int npar,
int mpar);
232 double Chisqr(
double *par);
233 void Manage(
double *par,
int type);
234 double Matinv(
double *array,
int nord,
int mpar);
289 #endif // !defined(AFX_FITSPEK_H__F2A2E380_9934_11D5_B3CF_000000000000__INCLUDED_)
double TailLeftErr(int np)
double(CFitSpek::* m_pfFunct)(double, double *)
double(CFitSpek::* m_pfFitFunc)(double)
double FitFuncS(double x)
double AmplitudeErr(int np)
double(CFitSpek::* m_pfFitBack)(double)
int CalcGaussianFit(float *pSpek, int chanA, int chanB, std::vector< double > &vPeaks)
bool CalcStrightLine(float *pSpek, int chanA, int chanB, int doSlope)
int CalcSinusoid(float *pSpek, int chanA, int chanB, double period, bool bFlat, bool bSlope)
void(CFitSpek::* m_pfDeriv)(int, double *, double *, double &, double &)
bool CalcPeakMoments(float *pSpek, int chanA, int chanB, int nChanBack)
double PositionErr(int np)
double TailRightErr(int np)
double FitPeak(double x, int n=0)
double(CFitSpek::* m_pfFitPeak)(double, int)
bool CalcExponential(float *pSpek, int chanA, int chanB, int bgA=-1, int bgB=-1)