// @(#)root/spectrum:$Id$
// Author: Miroslav Morhac   25/09/06

/*************************************************************************
 * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/
#ifndef ROOT_TSpectrum2Fit
#define ROOT_TSpectrum2Fit

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TSpectrum2Fit                                                        //
//                                                                      //
// Class for fitting 2D spectra using AWMI (algorithm without matrix    //
// inversion) and conjugate gradient algorithms for symmetrical         //
// matrices (Stiefel-Hestens method). AWMI method allows to fit         //
// simulaneously 100s up to 1000s peaks. Stiefel method is very stable, //
// it converges faster, but is more time consuming                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TNamed
#include "TNamed.h"
#endif

class TSpectrum2Fit : public TNamed {
protected:
   Int_t     fNPeaks;                        //number of peaks present in fit, input parameter, it should be > 0
   Int_t     fNumberIterations;              //number of iterations in fitting procedure, input parameter, it should be > 0
   Int_t     fXmin;                          //first fitted channel in x direction
   Int_t     fXmax;                          //last fitted channel in x direction
   Int_t     fYmin;                          //first fitted channel in y direction
   Int_t     fYmax;                          //last fitted channel in y direction
   Int_t     fStatisticType;                 //type of statistics, possible values kFitOptimChiCounts (chi square statistics with counts as weighting coefficients), kFitOptimChiFuncValues (chi square statistics with function values as weighting coefficients),kFitOptimMaxLikelihood
   Int_t     fAlphaOptim;                    //optimization of convergence algorithm, possible values kFitAlphaHalving, kFitAlphaOptimal
   Int_t     fPower;                         //possible values kFitPower2,4,6,8,10,12, for details see references. It applies only for Awmi fitting function.
   Int_t     fFitTaylor;                     //order of Taylor expansion, possible values kFitTaylorOrderFirst, kFitTaylorOrderSecond. It applies only for Awmi fitting function.
   Double_t  fAlpha;                         //convergence coefficient, input parameter, it should be positive number and <=1, for details see references
   Double_t  fChi;                           //here the fitting functions return resulting chi square
   Double_t *fPositionInitX;                 //[fNPeaks] array of initial values of x positions of 2D peaks, input parameters
   Double_t *fPositionCalcX;                 //[fNPeaks] array of calculated values of x positions of 2D peaks, output parameters
   Double_t *fPositionErrX;                  //[fNPeaks] array of error values of x positions of 2D peaks, output parameters
   Double_t *fPositionInitY;                 //[fNPeaks] array of initial values of y positions of 2D peaks, input parameters
   Double_t *fPositionCalcY;                 //[fNPeaks] array of calculated values of y positions of 2D peaks, output parameters
   Double_t *fPositionErrY;                  //[fNPeaks] array of error values of y positions of 2D peaks, output parameters
   Double_t *fPositionInitX1;                //[fNPeaks] array of initial x positions of 1D ridges, input parameters
   Double_t *fPositionCalcX1;                //[fNPeaks] array of calculated x positions of 1D ridges, output parameters
   Double_t *fPositionErrX1;                 //[fNPeaks] array of x positions errors of 1D ridges, output parameters
   Double_t *fPositionInitY1;                //[fNPeaks] array of initial y positions of 1D ridges, input parameters
   Double_t *fPositionCalcY1;                //[fNPeaks] array of calculated y positions of 1D ridges, output parameters
   Double_t *fPositionErrY1;                 //[fNPeaks] array of y positions errors of 1D ridges, output parameters
   Double_t *fAmpInit;                       //[fNPeaks] array of initial values of amplitudes of 2D peaks, input parameters
   Double_t *fAmpCalc;                       //[fNPeaks] array of calculated values of amplitudes of 2D peaks, output parameters
   Double_t *fAmpErr;                        //[fNPeaks] array of amplitudes errors of 2D peaks, output parameters
   Double_t *fAmpInitX1;                     //[fNPeaks] array of initial values of amplitudes of 1D ridges in x direction, input parameters
   Double_t *fAmpCalcX1;                     //[fNPeaks] array of calculated values of amplitudes of 1D ridges in x direction, output parameters
   Double_t *fAmpErrX1;                      //[fNPeaks] array of amplitudes errors of 1D ridges in x direction, output parameters
   Double_t *fAmpInitY1;                     //[fNPeaks] array of initial values of amplitudes of 1D ridges in y direction, input parameters
   Double_t *fAmpCalcY1;                     //[fNPeaks] array of calculated values of amplitudes of 1D ridges in y direction, output parameters
   Double_t *fAmpErrY1;                      //[fNPeaks] array of amplitudes errors of 1D ridges in y direction, output parameters
   Double_t *fVolume;                        //[fNPeaks] array of calculated volumes of 2D peaks, output parameters
   Double_t *fVolumeErr;                     //[fNPeaks] array of volumes errors of 2D peaks, output parameters
   Double_t  fSigmaInitX;                    //initial value of sigma x parameter
   Double_t  fSigmaCalcX;                    //calculated value of sigma x parameter
   Double_t  fSigmaErrX;                     //error value of sigma x parameter
   Double_t  fSigmaInitY;                    //initial value of sigma y parameter
   Double_t  fSigmaCalcY;                    //calculated value of sigma y parameter
   Double_t  fSigmaErrY;                     //error value of sigma y parameter
   Double_t  fRoInit;                        //initial value of correlation coefficient
   Double_t  fRoCalc;                        //calculated value of correlation coefficient
   Double_t  fRoErr;                         //error value of correlation coefficient
   Double_t  fTxyInit;                       //initial value of t parameter for 2D peaks (relative amplitude of tail), for details see html manual and references
   Double_t  fTxyCalc;                       //calculated value of t parameter for 2D peaks
   Double_t  fTxyErr;                        //error value of t parameter for 2D peaks
   Double_t  fSxyInit;                       //initial value of s parameter for 2D peaks (relative amplitude of step), for details see html manual and references
   Double_t  fSxyCalc;                       //calculated value of s parameter for 2D peaks
   Double_t  fSxyErr;                        //error value of s parameter for 2D peaks
   Double_t  fTxInit;                        //initial value of t parameter for 1D ridges in x direction (relative amplitude of tail), for details see html manual and references
   Double_t  fTxCalc;                        //calculated value of t parameter for 1D ridges in x direction
   Double_t  fTxErr;                         //error value of t parameter for 1D ridges in x direction
   Double_t  fTyInit;                        //initial value of t parameter for 1D ridges in y direction (relative amplitude of tail), for details see html manual and references
   Double_t  fTyCalc;                        //calculated value of t parameter for 1D ridges in y direction
   Double_t  fTyErr;                         //error value of t parameter for 1D ridges in y direction
   Double_t  fSxInit;                        //initial value of s parameter for 1D ridges in x direction (relative amplitude of step), for details see html manual and references
   Double_t  fSxCalc;                        //calculated value of s parameter for 1D ridges in x direction
   Double_t  fSxErr;                         //error value of s parameter for 1D ridges in x direction
   Double_t  fSyInit;                        //initial value of s parameter for 1D ridges in y direction (relative amplitude of step), for details see html manual and references
   Double_t  fSyCalc;                        //calculated value of s parameter for 1D ridges in y direction
   Double_t  fSyErr;                         //error value of s parameter for 1D ridges in y direction
   Double_t  fBxInit;                        //initial value of b parameter for 1D ridges in x direction (slope), for details see html manual and references
   Double_t  fBxCalc;                        //calculated value of b parameter for 1D ridges in x direction
   Double_t  fBxErr;                         //error value of b parameter for 1D ridges in x direction
   Double_t  fByInit;                        //initial value of b parameter for 1D ridges in y direction (slope), for details see html manual and references
   Double_t  fByCalc;                        //calculated value of b parameter for 1D ridges in y direction
   Double_t  fByErr;                         //error value of b parameter for 1D ridges in y direction
   Double_t  fA0Init;                        //initial value of background a0 parameter(backgroud is estimated as a0+ax*x+ay*y)
   Double_t  fA0Calc;                        //calculated value of background a0 parameter
   Double_t  fA0Err;                         //error value of background a0 parameter
   Double_t  fAxInit;                        //initial value of background ax parameter(backgroud is estimated as a0+ax*x+ay*y)
   Double_t  fAxCalc;                        //calculated value of background ax parameter
   Double_t  fAxErr;                         //error value of background ax parameter
   Double_t  fAyInit;                        //initial value of background ay parameter(backgroud is estimated as a0+ax*x+ay*y)
   Double_t  fAyCalc;                        //calculated value of background ay parameter
   Double_t  fAyErr;                         //error value of background ay parameter
   Bool_t   *fFixPositionX;                  //[fNPeaks] array of logical values which allow to fix appropriate x positions of 2D peaks (not fit). However they are present in the estimated functional
   Bool_t   *fFixPositionY;                  //[fNPeaks] array of logical values which allow to fix appropriate y positions of 2D peaks (not fit). However they are present in the estimated functional
   Bool_t   *fFixPositionX1;                 //[fNPeaks] array of logical values which allow to fix appropriate x positions of 1D ridges (not fit). However they are present in the estimated functional
   Bool_t   *fFixPositionY1;                 //[fNPeaks] array of logical values which allow to fix appropriate y positions of 1D ridges (not fit). However they are present in the estimated functional
   Bool_t   *fFixAmp;                        //[fNPeaks] array of logical values which allow to fix appropriate amplitudes of 2D peaks (not fit). However they are present in the estimated functional
   Bool_t   *fFixAmpX1;                      //[fNPeaks] array of logical values which allow to fix appropriate amplitudes of 1D ridges in x direction (not fit). However they are present in the estimated functional
   Bool_t   *fFixAmpY1;                      //[fNPeaks] array of logical values which allow to fix appropriate amplitudes of 1D ridges in y direction (not fit). However they are present in the estimated functional
   Bool_t    fFixSigmaX;                     //logical value of sigma x parameter, which allows to fix the parameter (not to fit).
   Bool_t    fFixSigmaY;                     //logical value of sigma y parameter, which allows to fix the parameter (not to fit).
   Bool_t    fFixRo;                         //logical value of correlation coefficient, which allows to fix the parameter (not to fit).
   Bool_t    fFixTxy;                        //logical value of t parameter for 2D peaks, which allows to fix the parameter (not to fit).
   Bool_t    fFixSxy;                        //logical value of s parameter for 2D peaks, which allows to fix the parameter (not to fit).
   Bool_t    fFixTx;                         //logical value of t parameter for 1D ridges in x direction, which allows to fix the parameter (not to fit).
   Bool_t    fFixTy;                         //logical value of t parameter for 1D ridges in y direction, which allows to fix the parameter (not to fit).
   Bool_t    fFixSx;                         //logical value of s parameter for 1D ridges in x direction, which allows to fix the parameter (not to fit).
   Bool_t    fFixSy;                         //logical value of s parameter for 1D ridges in y direction, which allows to fix the parameter (not to fit).
   Bool_t    fFixBx;                         //logical value of b parameter for 1D ridges in x direction, which allows to fix the parameter (not to fit).
   Bool_t    fFixBy;                         //logical value of b parameter for 1D ridges in y direction, which allows to fix the parameter (not to fit).
   Bool_t    fFixA0;                         //logical value of a0 parameter, which allows to fix the parameter (not to fit).
   Bool_t    fFixAx;                         //logical value of ax parameter, which allows to fix the parameter (not to fit).
   Bool_t    fFixAy;                         //logical value of ay parameter, which allows to fix the parameter (not to fit).
public:
   enum {
       kFitOptimChiCounts =0,
       kFitOptimChiFuncValues =1,
       kFitOptimMaxLikelihood =2,
       kFitAlphaHalving =0,
       kFitAlphaOptimal =1,
       kFitPower2 =2,
       kFitPower4 =4,
       kFitPower6 =6,
       kFitPower8 =8,
       kFitPower10 =10,
       kFitPower12 =12,
       kFitTaylorOrderFirst =0,
       kFitTaylorOrderSecond =1,
       kFitNumRegulCycles =100
   };
   TSpectrum2Fit(void); //default constructor
   TSpectrum2Fit(Int_t numberPeaks);
   virtual ~TSpectrum2Fit();
   //auxiliary functions for 2. parameter fit functions
protected:
   Double_t            Deramp2(Double_t x,Double_t y,Double_t x0,Double_t y0,Double_t sigmax,Double_t sigmay,Double_t ro,Double_t txy,Double_t sxy,Double_t bx,Double_t by);
   Double_t            Derampx(Double_t x,Double_t x0,Double_t sigmax,Double_t tx,Double_t sx,Double_t bx);
   Double_t            Derbx(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay,Double_t txy,Double_t tx,Double_t bx,Double_t by);
   Double_t            Derby(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay,Double_t txy,Double_t ty,Double_t bx,Double_t by);
   Double_t            Derderi01(Double_t x,Double_t ax,Double_t x0,Double_t sigmax);
   Double_t            Derderi02(Double_t x,Double_t y,Double_t a,Double_t x0,Double_t y0,Double_t sigmax,Double_t sigmay,Double_t ro);
   Double_t            Derderj02(Double_t x,Double_t y,Double_t a,Double_t x0,Double_t y0,Double_t sigmax,Double_t sigmay,Double_t ro);
   Double_t            Derdersigmax(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay,Double_t ro);
   Double_t            Derdersigmay(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay,Double_t ro);
   Double_t            Derfc(Double_t x);
   Double_t            Deri01(Double_t x,Double_t ax,Double_t x0,Double_t sigmax,Double_t tx,Double_t sx,Double_t bx);
   Double_t            Deri02(Double_t x,Double_t y,Double_t a,Double_t x0,Double_t y0,Double_t sigmax,Double_t sigmay,Double_t ro,Double_t txy,Double_t sxy,Double_t bx,Double_t by);
   Double_t            Derj02(Double_t x,Double_t y,Double_t a,Double_t x0,Double_t y0,Double_t sigmax,Double_t sigmay,Double_t ro,Double_t txy,Double_t sxy,Double_t bx,Double_t by);
   Double_t            Derpa2(Double_t sx,Double_t sy,Double_t ro);
   Double_t            Derpro(Double_t a,Double_t sx,Double_t sy,Double_t ro);
   Double_t            Derpsigmax(Double_t a,Double_t sy,Double_t ro);
   Double_t            Derpsigmay(Double_t a,Double_t sx,Double_t ro);
   Double_t            Derro(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sx,Double_t sy,Double_t r);
   Double_t            Dersigmax(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay,Double_t ro,Double_t txy,Double_t sxy,Double_t tx,Double_t sx,Double_t bx,Double_t by);
   Double_t            Dersigmay(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay,Double_t ro,Double_t txy,Double_t sxy,Double_t ty,Double_t sy,Double_t bx,Double_t by);
   Double_t            Dersx(Int_t numOfFittedPeaks,Double_t x,const Double_t *parameter,Double_t sigmax);
   Double_t            Dersxy(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay);
   Double_t            Dersy(Int_t numOfFittedPeaks,Double_t x,const Double_t *parameter,Double_t sigmax);
   Double_t            Dertx(Int_t numOfFittedPeaks,Double_t x,const Double_t *parameter,Double_t sigmax,Double_t bx);
   Double_t            Dertxy(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay,Double_t bx,Double_t by);
   Double_t            Derty(Int_t numOfFittedPeaks,Double_t x,const Double_t *parameter,Double_t sigmax,Double_t bx);
   Double_t            Erfc(Double_t x);
   Double_t            Ourpowl(Double_t a,Int_t pw);
   Double_t            Shape2(Int_t numOfFittedPeaks,Double_t x,Double_t y,const Double_t *parameter,Double_t sigmax,Double_t sigmay,Double_t ro,Double_t a0,Double_t ax,Double_t ay,Double_t txy,Double_t sxy,Double_t tx,Double_t ty,Double_t sx,Double_t sy,Double_t bx,Double_t by);
   void                StiefelInversion(Double_t **a,Int_t size);
   Double_t            Volume(Double_t a,Double_t sx,Double_t sy,Double_t ro);

public:
   void                FitAwmi(Double_t **source);
   void                FitStiefel(Double_t **source);
   void                GetAmplitudes(Double_t *amplitudes, Double_t *amplitudesX1, Double_t *amplitudesY1);
   void                GetAmplitudeErrors(Double_t *amplitudeErrors, Double_t *amplitudeErrorsX1, Double_t *amplitudeErrorsY1);
   void                GetBackgroundParameters(Double_t &a0, Double_t &a0Err, Double_t &ax, Double_t &axErr, Double_t &ay, Double_t &ayErr);
   Double_t            GetChi() const {return fChi;}
   void                GetPositions(Double_t *positionsX, Double_t *positionsY, Double_t *positionsX1, Double_t *positionsY1);
   void                GetPositionErrors(Double_t *positionErrorsX, Double_t *positionErrorsY, Double_t *positionErrorsX1, Double_t *positionErrorsY1);
   void                GetRo(Double_t &ro, Double_t &roErr);
   void                GetSigmaX(Double_t &sigmaX, Double_t &sigmaErrX);
   void                GetSigmaY(Double_t &sigmaY, Double_t &sigmaErrY);
   void                GetTailParameters(Double_t &txy, Double_t &txyErr, Double_t &tx, Double_t &txErr, Double_t &ty, Double_t &tyErr, Double_t &bx, Double_t &bxErr, Double_t &by, Double_t &byErr, Double_t &sxy, Double_t &sxyErr, Double_t &sx, Double_t &sxErr, Double_t &sy, Double_t &syErr);
   void                GetVolumes(Double_t *volumes);
   void                GetVolumeErrors(Double_t *volumeErrors);
   void                SetBackgroundParameters(Double_t a0Init, Bool_t fixA0, Double_t axInit, Bool_t fixAx, Double_t ayInit, Bool_t fixAy);
   void                SetFitParameters(Int_t xmin,Int_t xmax,Int_t ymin,Int_t ymax, Int_t numberIterations, Double_t alpha, Int_t statisticType, Int_t alphaOptim, Int_t power, Int_t fitTaylor);
   void                SetPeakParameters(Double_t sigmaX, Bool_t fixSigmaX, Double_t sigmaY, Bool_t fixSigmaY, Double_t ro, Bool_t fixRo, const Double_t *positionInitX, const Bool_t *fixPositionX, const Double_t *positionInitY, const Bool_t *fixPositionY, const Double_t *positionInitX1, const Bool_t *fixPositionX1, const Double_t *positionInitY1, const Bool_t *fixPositionY1, const Double_t *ampInit, const Bool_t *fixAmp, const Double_t *ampInitX1, const Bool_t *fixAmpX1, const Double_t *ampInitY1, const Bool_t *fixAmpY1);
   void                SetTailParameters(Double_t tInitXY, Bool_t fixTxy, Double_t tInitX, Bool_t fixTx, Double_t tInitY, Bool_t fixTy, Double_t bInitX, Bool_t fixBx, Double_t bInitY, Bool_t fixBy, Double_t sInitXY, Bool_t fixSxy, Double_t sInitX, Bool_t fixSx, Double_t sInitY, Bool_t fixSy);

   ClassDef(TSpectrum2Fit,1)  //Spectrum2 Fitter using algorithm without matrix inversion and conjugate gradient method for symmetrical matrices (Stiefel-Hestens method)
};

#endif

 TSpectrum2Fit.h:1
 TSpectrum2Fit.h:2
 TSpectrum2Fit.h:3
 TSpectrum2Fit.h:4
 TSpectrum2Fit.h:5
 TSpectrum2Fit.h:6
 TSpectrum2Fit.h:7
 TSpectrum2Fit.h:8
 TSpectrum2Fit.h:9
 TSpectrum2Fit.h:10
 TSpectrum2Fit.h:11
 TSpectrum2Fit.h:12
 TSpectrum2Fit.h:13
 TSpectrum2Fit.h:14
 TSpectrum2Fit.h:15
 TSpectrum2Fit.h:16
 TSpectrum2Fit.h:17
 TSpectrum2Fit.h:18
 TSpectrum2Fit.h:19
 TSpectrum2Fit.h:20
 TSpectrum2Fit.h:21
 TSpectrum2Fit.h:22
 TSpectrum2Fit.h:23
 TSpectrum2Fit.h:24
 TSpectrum2Fit.h:25
 TSpectrum2Fit.h:26
 TSpectrum2Fit.h:27
 TSpectrum2Fit.h:28
 TSpectrum2Fit.h:29
 TSpectrum2Fit.h:30
 TSpectrum2Fit.h:31
 TSpectrum2Fit.h:32
 TSpectrum2Fit.h:33
 TSpectrum2Fit.h:34
 TSpectrum2Fit.h:35
 TSpectrum2Fit.h:36
 TSpectrum2Fit.h:37
 TSpectrum2Fit.h:38
 TSpectrum2Fit.h:39
 TSpectrum2Fit.h:40
 TSpectrum2Fit.h:41
 TSpectrum2Fit.h:42
 TSpectrum2Fit.h:43
 TSpectrum2Fit.h:44
 TSpectrum2Fit.h:45
 TSpectrum2Fit.h:46
 TSpectrum2Fit.h:47
 TSpectrum2Fit.h:48
 TSpectrum2Fit.h:49
 TSpectrum2Fit.h:50
 TSpectrum2Fit.h:51
 TSpectrum2Fit.h:52
 TSpectrum2Fit.h:53
 TSpectrum2Fit.h:54
 TSpectrum2Fit.h:55
 TSpectrum2Fit.h:56
 TSpectrum2Fit.h:57
 TSpectrum2Fit.h:58
 TSpectrum2Fit.h:59
 TSpectrum2Fit.h:60
 TSpectrum2Fit.h:61
 TSpectrum2Fit.h:62
 TSpectrum2Fit.h:63
 TSpectrum2Fit.h:64
 TSpectrum2Fit.h:65
 TSpectrum2Fit.h:66
 TSpectrum2Fit.h:67
 TSpectrum2Fit.h:68
 TSpectrum2Fit.h:69
 TSpectrum2Fit.h:70
 TSpectrum2Fit.h:71
 TSpectrum2Fit.h:72
 TSpectrum2Fit.h:73
 TSpectrum2Fit.h:74
 TSpectrum2Fit.h:75
 TSpectrum2Fit.h:76
 TSpectrum2Fit.h:77
 TSpectrum2Fit.h:78
 TSpectrum2Fit.h:79
 TSpectrum2Fit.h:80
 TSpectrum2Fit.h:81
 TSpectrum2Fit.h:82
 TSpectrum2Fit.h:83
 TSpectrum2Fit.h:84
 TSpectrum2Fit.h:85
 TSpectrum2Fit.h:86
 TSpectrum2Fit.h:87
 TSpectrum2Fit.h:88
 TSpectrum2Fit.h:89
 TSpectrum2Fit.h:90
 TSpectrum2Fit.h:91
 TSpectrum2Fit.h:92
 TSpectrum2Fit.h:93
 TSpectrum2Fit.h:94
 TSpectrum2Fit.h:95
 TSpectrum2Fit.h:96
 TSpectrum2Fit.h:97
 TSpectrum2Fit.h:98
 TSpectrum2Fit.h:99
 TSpectrum2Fit.h:100
 TSpectrum2Fit.h:101
 TSpectrum2Fit.h:102
 TSpectrum2Fit.h:103
 TSpectrum2Fit.h:104
 TSpectrum2Fit.h:105
 TSpectrum2Fit.h:106
 TSpectrum2Fit.h:107
 TSpectrum2Fit.h:108
 TSpectrum2Fit.h:109
 TSpectrum2Fit.h:110
 TSpectrum2Fit.h:111
 TSpectrum2Fit.h:112
 TSpectrum2Fit.h:113
 TSpectrum2Fit.h:114
 TSpectrum2Fit.h:115
 TSpectrum2Fit.h:116
 TSpectrum2Fit.h:117
 TSpectrum2Fit.h:118
 TSpectrum2Fit.h:119
 TSpectrum2Fit.h:120
 TSpectrum2Fit.h:121
 TSpectrum2Fit.h:122
 TSpectrum2Fit.h:123
 TSpectrum2Fit.h:124
 TSpectrum2Fit.h:125
 TSpectrum2Fit.h:126
 TSpectrum2Fit.h:127
 TSpectrum2Fit.h:128
 TSpectrum2Fit.h:129
 TSpectrum2Fit.h:130
 TSpectrum2Fit.h:131
 TSpectrum2Fit.h:132
 TSpectrum2Fit.h:133
 TSpectrum2Fit.h:134
 TSpectrum2Fit.h:135
 TSpectrum2Fit.h:136
 TSpectrum2Fit.h:137
 TSpectrum2Fit.h:138
 TSpectrum2Fit.h:139
 TSpectrum2Fit.h:140
 TSpectrum2Fit.h:141
 TSpectrum2Fit.h:142
 TSpectrum2Fit.h:143
 TSpectrum2Fit.h:144
 TSpectrum2Fit.h:145
 TSpectrum2Fit.h:146
 TSpectrum2Fit.h:147
 TSpectrum2Fit.h:148
 TSpectrum2Fit.h:149
 TSpectrum2Fit.h:150
 TSpectrum2Fit.h:151
 TSpectrum2Fit.h:152
 TSpectrum2Fit.h:153
 TSpectrum2Fit.h:154
 TSpectrum2Fit.h:155
 TSpectrum2Fit.h:156
 TSpectrum2Fit.h:157
 TSpectrum2Fit.h:158
 TSpectrum2Fit.h:159
 TSpectrum2Fit.h:160
 TSpectrum2Fit.h:161
 TSpectrum2Fit.h:162
 TSpectrum2Fit.h:163
 TSpectrum2Fit.h:164
 TSpectrum2Fit.h:165
 TSpectrum2Fit.h:166
 TSpectrum2Fit.h:167
 TSpectrum2Fit.h:168
 TSpectrum2Fit.h:169
 TSpectrum2Fit.h:170
 TSpectrum2Fit.h:171
 TSpectrum2Fit.h:172
 TSpectrum2Fit.h:173
 TSpectrum2Fit.h:174
 TSpectrum2Fit.h:175
 TSpectrum2Fit.h:176
 TSpectrum2Fit.h:177
 TSpectrum2Fit.h:178
 TSpectrum2Fit.h:179
 TSpectrum2Fit.h:180
 TSpectrum2Fit.h:181
 TSpectrum2Fit.h:182
 TSpectrum2Fit.h:183
 TSpectrum2Fit.h:184
 TSpectrum2Fit.h:185
 TSpectrum2Fit.h:186
 TSpectrum2Fit.h:187
 TSpectrum2Fit.h:188
 TSpectrum2Fit.h:189
 TSpectrum2Fit.h:190
 TSpectrum2Fit.h:191
 TSpectrum2Fit.h:192
 TSpectrum2Fit.h:193
 TSpectrum2Fit.h:194
 TSpectrum2Fit.h:195
 TSpectrum2Fit.h:196
 TSpectrum2Fit.h:197
 TSpectrum2Fit.h:198
 TSpectrum2Fit.h:199
 TSpectrum2Fit.h:200
 TSpectrum2Fit.h:201
 TSpectrum2Fit.h:202
 TSpectrum2Fit.h:203
 TSpectrum2Fit.h:204
 TSpectrum2Fit.h:205
 TSpectrum2Fit.h:206
 TSpectrum2Fit.h:207
 TSpectrum2Fit.h:208