Logo ROOT   6.08/07
Reference Guide
TSpectrumFit.h
Go to the documentation of this file.
1 // @(#)root/spectrum:$Id$
2 // Author: Miroslav Morhac 25/09/06
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 #ifndef ROOT_TSpectrumFit
12 #define ROOT_TSpectrumFit
13 
14 #ifndef ROOT_TNamed
15 #include "TNamed.h"
16 #endif
17 
18 class TH1;
19 
20 class TSpectrumFit : public TNamed {
21 protected:
22  Int_t fNPeaks; ///< number of peaks present in fit, input parameter, it should be > 0
23  Int_t fNumberIterations; ///< number of iterations in fitting procedure, input parameter, it should be > 0
24  Int_t fXmin; ///< first fitted channel
25  Int_t fXmax; ///< last fitted channel
26  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
27  Int_t fAlphaOptim; ///< optimization of convergence algorithm, possible values kFitAlphaHalving, kFitAlphaOptimal
28  Int_t fPower; ///< possible values kFitPower2,4,6,8,10,12, for details see references. It applies only for Awmi fitting function.
29  Int_t fFitTaylor; ///< order of Taylor expansion, possible values kFitTaylorOrderFirst, kFitTaylorOrderSecond. It applies only for Awmi fitting function.
30  Double_t fAlpha; ///< convergence coefficient, input parameter, it should be positive number and <=1, for details see references
31  Double_t fChi; ///< here the fitting functions return resulting chi square
32  Double_t *fPositionInit; ///< [fNPeaks] array of initial values of peaks positions, input parameters
33  Double_t *fPositionCalc; ///< [fNPeaks] array of calculated values of fitted positions, output parameters
34  Double_t *fPositionErr; ///< [fNPeaks] array of position errors
35  Double_t *fAmpInit; ///< [fNPeaks] array of initial values of peaks amplitudes, input parameters
36  Double_t *fAmpCalc; ///< [fNPeaks] array of calculated values of fitted amplitudes, output parameters
37  Double_t *fAmpErr; ///< [fNPeaks] array of amplitude errors
38  Double_t *fArea; ///< [fNPeaks] array of calculated areas of peaks
39  Double_t *fAreaErr; ///< [fNPeaks] array of errors of peak areas
40  Double_t fSigmaInit; ///< initial value of sigma parameter
41  Double_t fSigmaCalc; ///< calculated value of sigma parameter
42  Double_t fSigmaErr; ///< error value of sigma parameter
43  Double_t fTInit; ///< initial value of t parameter (relative amplitude of tail), for details see html manual and references
44  Double_t fTCalc; ///< calculated value of t parameter
45  Double_t fTErr; ///< error value of t parameter
46  Double_t fBInit; ///< initial value of b parameter (slope), for details see html manual and references
47  Double_t fBCalc; ///< calculated value of b parameter
48  Double_t fBErr; ///< error value of b parameter
49  Double_t fSInit; ///< initial value of s parameter (relative amplitude of step), for details see html manual and references
50  Double_t fSCalc; ///< calculated value of s parameter
51  Double_t fSErr; ///< error value of s parameter
52  Double_t fA0Init; ///< initial value of background a0 parameter(backgroud is estimated as a0+a1*x+a2*x*x)
53  Double_t fA0Calc; ///< calculated value of background a0 parameter
54  Double_t fA0Err; ///< error value of background a0 parameter
55  Double_t fA1Init; ///< initial value of background a1 parameter(backgroud is estimated as a0+a1*x+a2*x*x)
56  Double_t fA1Calc; ///< calculated value of background a1 parameter
57  Double_t fA1Err; ///< error value of background a1 parameter
58  Double_t fA2Init; ///< initial value of background a2 parameter(backgroud is estimated as a0+a1*x+a2*x*x)
59  Double_t fA2Calc; ///< calculated value of background a2 parameter
60  Double_t fA2Err; ///< error value of background a2 parameter
61  Bool_t *fFixPosition; ///< [fNPeaks] array of logical values which allow to fix appropriate positions (not fit). However they are present in the estimated functional
62  Bool_t *fFixAmp; ///< [fNPeaks] array of logical values which allow to fix appropriate amplitudes (not fit). However they are present in the estimated functional
63  Bool_t fFixSigma; ///< logical value of sigma parameter, which allows to fix the parameter (not to fit).
64  Bool_t fFixT; ///< logical value of t parameter, which allows to fix the parameter (not to fit).
65  Bool_t fFixB; ///< logical value of b parameter, which allows to fix the parameter (not to fit).
66  Bool_t fFixS; ///< logical value of s parameter, which allows to fix the parameter (not to fit).
67  Bool_t fFixA0; ///< logical value of a0 parameter, which allows to fix the parameter (not to fit).
68  Bool_t fFixA1; ///< logical value of a1 parameter, which allows to fix the parameter (not to fit).
69  Bool_t fFixA2; ///< logical value of a2 parameter, which allows to fix the parameter (not to fit).
70 
71 public:
72  enum {
87  };
88  TSpectrumFit(void); //default constructor
89  TSpectrumFit(Int_t numberPeaks);
90  virtual ~TSpectrumFit();
91 
92  //auxiliary functions for 1. parameter fit functions
93 protected:
98  Double_t Derb(Int_t num_of_fitted_peaks,Double_t i,const Double_t* parameter,Double_t sigma,Double_t t,Double_t b);
100  Double_t Derdersigma(Int_t num_of_fitted_peaks,Double_t i,const Double_t* parameter,Double_t sigma);
107  Double_t Ders(Int_t num_of_fitted_peaks,Double_t i,const Double_t* parameter,Double_t sigma);
108  Double_t Dersigma(Int_t num_of_fitted_peaks,Double_t i,const Double_t* parameter,Double_t sigma,Double_t t,Double_t s,Double_t b);
109  Double_t Dert(Int_t num_of_fitted_peaks,Double_t i,const Double_t* parameter,Double_t sigma,Double_t b);
112  Double_t Shape(Int_t num_of_fitted_peaks,Double_t i,const Double_t *parameter,Double_t sigma,Double_t t,Double_t s,Double_t b,Double_t a0,Double_t a1,Double_t a2);
113  void StiefelInversion(Double_t **a,Int_t rozmer);
114 
115 public:
116  void FitAwmi(Double_t *source);
117  void FitStiefel(Double_t *source);
118  Double_t *GetAmplitudes() const {return fAmpCalc;}
120  Double_t *GetAreas() const {return fArea;}
121  Double_t *GetAreasErrors() const {return fAreaErr;}
122  void GetBackgroundParameters(Double_t &a0, Double_t &a0Err, Double_t &a1, Double_t &a1Err, Double_t &a2, Double_t &a2Err);
123  Double_t GetChi() const {return fChi;}
126  void GetSigma(Double_t &sigma, Double_t &sigmaErr);
127  void GetTailParameters(Double_t &t, Double_t &tErr, Double_t &b, Double_t &bErr, Double_t &s, Double_t &sErr);
128  void SetBackgroundParameters(Double_t a0Init, Bool_t fixA0, Double_t a1Init, Bool_t fixA1, Double_t a2Init, Bool_t fixA2);
129  void SetFitParameters(Int_t xmin,Int_t xmax, Int_t numberIterations, Double_t alpha, Int_t statisticType, Int_t alphaOptim, Int_t power, Int_t fitTaylor);
130  void SetPeakParameters(Double_t sigma, Bool_t fixSigma, const Double_t *positionInit, const Bool_t *fixPosition, const Double_t *ampInit, const Bool_t *fixAmp);
131  void SetTailParameters(Double_t tInit, Bool_t fixT, Double_t bInit, Bool_t fixB, Double_t sInit, Bool_t fixS);
132 
133  ClassDef(TSpectrumFit,1) //Spectrum Fitter using algorithm without matrix inversion and conjugate gradient method for symmetrical matrices (Stiefel-Hestens method)
134 };
135 
136 #endif
137 
Double_t Shape(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma, Double_t t, Double_t s, Double_t b, Double_t a0, Double_t a1, Double_t a2)
This function calculates peaks shape function (see manual) Function parameters:
Double_t fAlpha
convergence coefficient, input parameter, it should be positive number and <=1, for details see refer...
Definition: TSpectrumFit.h:30
float xmin
Definition: THbookFile.cxx:93
Double_t * GetAmplitudes() const
Definition: TSpectrumFit.h:118
Double_t * fAreaErr
[fNPeaks] array of errors of peak areas
Definition: TSpectrumFit.h:39
Double_t GetChi() const
Definition: TSpectrumFit.h:123
virtual ~TSpectrumFit()
Destructor.
Bool_t fFixSigma
logical value of sigma parameter, which allows to fix the parameter (not to fit). ...
Definition: TSpectrumFit.h:63
Double_t Derpb(Double_t a, Double_t sigma, Double_t t, Double_t b)
This function calculates derivative of the area of peak according to b parameter. ...
void SetPeakParameters(Double_t sigma, Bool_t fixSigma, const Double_t *positionInit, const Bool_t *fixPosition, const Double_t *ampInit, const Bool_t *fixAmp)
This function sets the following fitting parameters of peaks:
Double_t * fAmpInit
[fNPeaks] array of initial values of peaks amplitudes, input parameters
Definition: TSpectrumFit.h:35
Int_t fXmax
last fitted channel
Definition: TSpectrumFit.h:25
Double_t * fPositionCalc
[fNPeaks] array of calculated values of fitted positions, output parameters
Definition: TSpectrumFit.h:33
Double_t Area(Double_t a, Double_t sigma, Double_t t, Double_t b)
This function calculates area of a peak Function parameters:
void StiefelInversion(Double_t **a, Int_t rozmer)
This function calculates solution of the system of linear equations.
Int_t fFitTaylor
order of Taylor expansion, possible values kFitTaylorOrderFirst, kFitTaylorOrderSecond. It applies only for Awmi fitting function.
Definition: TSpectrumFit.h:29
Int_t fStatisticType
type of statistics, possible values kFitOptimChiCounts (chi square statistics with counts as weightin...
Definition: TSpectrumFit.h:26
int Int_t
Definition: RtypesCore.h:41
Double_t Dert(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma, Double_t b)
This function calculates derivative of peaks shape function (see manual) according to relative amplit...
bool Bool_t
Definition: RtypesCore.h:59
TArc * a
Definition: textangle.C:12
Int_t fPower
possible values kFitPower2,4,6,8,10,12, for details see references. It applies only for Awmi fitting ...
Definition: TSpectrumFit.h:28
Double_t Derpsigma(Double_t a, Double_t t, Double_t b)
This function calculates derivative of the area of peak according to sigma of peaks.
Double_t * GetAreasErrors() const
Definition: TSpectrumFit.h:121
Double_t * fPositionErr
[fNPeaks] array of position errors
Definition: TSpectrumFit.h:34
Double_t fTErr
error value of t parameter
Definition: TSpectrumFit.h:45
void GetTailParameters(Double_t &t, Double_t &tErr, Double_t &b, Double_t &bErr, Double_t &s, Double_t &sErr)
This function gets the tail parameters and their errors.
Double_t fA0Init
initial value of background a0 parameter(backgroud is estimated as a0+a1*x+a2*x*x) ...
Definition: TSpectrumFit.h:52
Bool_t fFixS
logical value of s parameter, which allows to fix the parameter (not to fit).
Definition: TSpectrumFit.h:66
Int_t fAlphaOptim
optimization of convergence algorithm, possible values kFitAlphaHalving, kFitAlphaOptimal ...
Definition: TSpectrumFit.h:27
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:254
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:33
Double_t fA1Calc
calculated value of background a1 parameter
Definition: TSpectrumFit.h:56
Double_t fA2Init
initial value of background a2 parameter(backgroud is estimated as a0+a1*x+a2*x*x) ...
Definition: TSpectrumFit.h:58
void SetBackgroundParameters(Double_t a0Init, Bool_t fixA0, Double_t a1Init, Bool_t fixA1, Double_t a2Init, Bool_t fixA2)
This function sets the following fitting parameters of background:
Double_t * fPositionInit
[fNPeaks] array of initial values of peaks positions, input parameters
Definition: TSpectrumFit.h:32
Double_t Dera2(Double_t i)
Derivative of background according to a2.
const Double_t sigma
Double_t fSigmaCalc
calculated value of sigma parameter
Definition: TSpectrumFit.h:41
Int_t fNumberIterations
number of iterations in fitting procedure, input parameter, it should be > 0
Definition: TSpectrumFit.h:23
Double_t Derfc(Double_t x)
This function calculates derivative of error function of x.
Double_t fSCalc
calculated value of s parameter
Definition: TSpectrumFit.h:50
Double_t fChi
here the fitting functions return resulting chi square
Definition: TSpectrumFit.h:31
Double_t fA2Err
error value of background a2 parameter
Definition: TSpectrumFit.h:60
Bool_t fFixB
logical value of b parameter, which allows to fix the parameter (not to fit).
Definition: TSpectrumFit.h:65
Double_t fA1Init
initial value of background a1 parameter(backgroud is estimated as a0+a1*x+a2*x*x) ...
Definition: TSpectrumFit.h:55
Double_t fTInit
initial value of t parameter (relative amplitude of tail), for details see html manual and references...
Definition: TSpectrumFit.h:43
Double_t fSErr
error value of s parameter
Definition: TSpectrumFit.h:51
Double_t fBCalc
calculated value of b parameter
Definition: TSpectrumFit.h:47
Double_t * fAmpErr
[fNPeaks] array of amplitude errors
Definition: TSpectrumFit.h:37
Double_t Dersigma(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma, Double_t t, Double_t s, Double_t b)
This function calculates derivative of peaks shape function (see manual) according to sigma of peaks...
Int_t fXmin
first fitted channel
Definition: TSpectrumFit.h:24
Double_t fBInit
initial value of b parameter (slope), for details see html manual and references
Definition: TSpectrumFit.h:46
Double_t Erfc(Double_t x)
Double_t fBErr
error value of b parameter
Definition: TSpectrumFit.h:48
Double_t * GetPositions() const
Definition: TSpectrumFit.h:124
Double_t * GetAmplitudesErrors() const
Definition: TSpectrumFit.h:119
Double_t Deramp(Double_t i, Double_t i0, Double_t sigma, Double_t t, Double_t s, Double_t b)
This function calculates derivative of peak shape function (see manual) according to amplitude of pea...
float xmax
Definition: THbookFile.cxx:93
Double_t fA1Err
error value of background a1 parameter
Definition: TSpectrumFit.h:57
void SetFitParameters(Int_t xmin, Int_t xmax, Int_t numberIterations, Double_t alpha, Int_t statisticType, Int_t alphaOptim, Int_t power, Int_t fitTaylor)
This function sets the following fitting parameters:
Double_t Deri0(Double_t i, Double_t amp, Double_t i0, Double_t sigma, Double_t t, Double_t s, Double_t b)
This function calculates derivative of peak shape function (see manual) according to peak position...
Bool_t fFixA0
logical value of a0 parameter, which allows to fix the parameter (not to fit).
Definition: TSpectrumFit.h:67
Double_t Derpa(Double_t sigma, Double_t t, Double_t b)
This function calculates derivative of the area of peak according to its amplitude.
Double_t Ders(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma)
This function calculates derivative of peaks shape function (see manual) according to relative amplit...
Double_t * GetPositionsErrors() const
Definition: TSpectrumFit.h:125
Double_t fA0Err
error value of background a0 parameter
Definition: TSpectrumFit.h:54
Int_t fNPeaks
number of peaks present in fit, input parameter, it should be > 0
Definition: TSpectrumFit.h:22
double Double_t
Definition: RtypesCore.h:55
Double_t Dera1(Double_t i)
Derivative of background according to a1.
Double_t Derderi0(Double_t i, Double_t amp, Double_t i0, Double_t sigma)
This function calculates second derivative of peak shape function (see manual) according to peak posi...
The TH1 histogram class.
Definition: TH1.h:80
Double_t Derdersigma(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma)
This function calculates second derivative of peaks shape function (see manual) according to sigma of...
Double_t Derpt(Double_t a, Double_t sigma, Double_t b)
This function calculates derivative of the area of peak according to t parameter. ...
Bool_t * fFixPosition
[fNPeaks] array of logical values which allow to fix appropriate positions (not fit). However they are present in the estimated functional
Definition: TSpectrumFit.h:61
Bool_t * fFixAmp
[fNPeaks] array of logical values which allow to fix appropriate amplitudes (not fit). However they are present in the estimated functional
Definition: TSpectrumFit.h:62
Double_t fSInit
initial value of s parameter (relative amplitude of step), for details see html manual and references...
Definition: TSpectrumFit.h:49
Double_t * GetAreas() const
Definition: TSpectrumFit.h:120
TSpectrumFit(void)
Default constructor.
void SetTailParameters(Double_t tInit, Bool_t fixT, Double_t bInit, Bool_t fixB, Double_t sInit, Bool_t fixS)
This function sets the following fitting parameters of tails of peaks.
Double_t Ourpowl(Double_t a, Int_t pw)
Power function.
Advanced 1-dimensional spectra fitting functions.
Definition: TSpectrumFit.h:20
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
Double_t Derb(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma, Double_t t, Double_t b)
This function calculates derivative of peaks shape function (see manual) according to slope b...
void GetBackgroundParameters(Double_t &a0, Double_t &a0Err, Double_t &a1, Double_t &a1Err, Double_t &a2, Double_t &a2Err)
This function gets the background parameters and their errors.
Double_t * fArea
[fNPeaks] array of calculated areas of peaks
Definition: TSpectrumFit.h:38
Double_t fSigmaInit
initial value of sigma parameter
Definition: TSpectrumFit.h:40
Double_t fA2Calc
calculated value of background a2 parameter
Definition: TSpectrumFit.h:59
Double_t fA0Calc
calculated value of background a0 parameter
Definition: TSpectrumFit.h:53
Double_t fTCalc
calculated value of t parameter
Definition: TSpectrumFit.h:44
void GetSigma(Double_t &sigma, Double_t &sigmaErr)
This function gets the sigma parameter and its error.
void FitAwmi(Double_t *source)
This function fits the source spectrum.
void FitStiefel(Double_t *source)
This function fits the source spectrum.
Double_t * fAmpCalc
[fNPeaks] array of calculated values of fitted amplitudes, output parameters
Definition: TSpectrumFit.h:36
Double_t fSigmaErr
error value of sigma parameter
Definition: TSpectrumFit.h:42
Bool_t fFixT
logical value of t parameter, which allows to fix the parameter (not to fit).
Definition: TSpectrumFit.h:64
Bool_t fFixA1
logical value of a1 parameter, which allows to fix the parameter (not to fit).
Definition: TSpectrumFit.h:68
Bool_t fFixA2
logical value of a2 parameter, which allows to fix the parameter (not to fit).
Definition: TSpectrumFit.h:69