ROOT logo
/*!\class TPeakFit
\author Alexandre A. P. Suaide 
*/
#ifndef TPeakFit_HH

#define TPeakFit_HH

#include "TObject.h"

#include "TH1.h"

#include "TF1.h"

#include "TGraph.h"

#include "TContainer.h"
#include "TMinuit.h"

#include "TCanvas.h"

#include "TROOT.h"

#include <fstream>

#include <math.h>

#include "TGTextView.h"

#include <iostream>

#include "log.hh"

using namespace std;

#define MAXFUNC1 1000


class TPeakFit : public TObject
{
  private:    
    
    float            mPeakVar;
    float            mWidVar;
    float            mMinArea;
    float            mMaxArea;
    float            mMinAssym;
    float            mMaxAssym;
    float            mBackVar;
    bool             mAssym;
    bool             mSameWid;
    bool             mBackMode;
    
    int              mBackDegree;
    int              mMaxBackDegree;
    
    float            mFitMin;
    float            mFitMax;
    
    float            mChi;
    float            mNDF;
    
    int              mNP;
    int              mNF;
    
    TH1*             mHist;
    TH1F*            mSum;
    TGraph*          mBack;
    TContainer*      mFunctions;
		
		double*          fCov;
		double*          fCovSqrt;
	  void  					 CalcCOVSqrt(int );
		int              mNPAR;

  public:
                     TPeakFit();
    virtual         ~TPeakFit();
    
    void             fit();
    void             fitBack();
    void             draw(TVirtualPad* = gPad);
    void             print();
    
    void             removeAll() { mNP=0; mFunctions->empty();}
    
    void             setBackground(int,float*,float*);
    void             addPeak(float,float,float,float=1);
    
    void             setHist(TH1* h)      { mHist = h;}
        
    void             setPeakVar(float a)  { mPeakVar = a;}
    void             setWidthVar(float a) { mWidVar = a;}
    void             setMinArea(float a)  { mMinArea = a;}
    void             setMaxArea(float a)  { mMaxArea = a;}
    void             setMinAssym(float a) { mMinAssym = a;}
    void             setMaxAssym(float a) { mMaxAssym = a;}
    
    void             setAssymOnOff(bool a){ mAssym = a;}
    void             setSameWidth(bool a) { mSameWid = a;}
        
    void             setBackDegree(int a) { mBackDegree = a;}
    void             setBackVar(float a)  { mBackVar = a;}
    void             setIndependentBack(bool a) { mBackMode = a;}
    
    void             setXmin(float a)     { mFitMin = a;}
    void             setXmax(float a)     { mFitMax = a;}
    
    float            getPeakVar()         { return mPeakVar;}
    float            getWidthVar()        { return mWidVar;}
    float            getMinArea()         { return mMinArea;}
    float            getMaxArea()         { return mMaxArea;}
    float            getMinAssym()        { return mMinAssym;}
    float            getMaxAssym()        { return mMaxAssym;}
    
    float            getXmin()            { return mFitMin;}
    float            getXmax()            { return mFitMax;}
    
    TF1*             getBack()            { return (TF1*)mFunctions->get("back");}
    TF1*             getPeak(int);
    
    float            getChiSqr()          { return mChi;}
    float            getNDF()             { return mNDF;}
       
    int              getBackDegree()      { return mBackDegree;}
    float            getBackVar()         { return mBackVar;}
   
  ClassDef(TPeakFit,1)
};

#endif

 TPeakFit.h:1
 TPeakFit.h:2
 TPeakFit.h:3
 TPeakFit.h:4
 TPeakFit.h:5
 TPeakFit.h:6
 TPeakFit.h:7
 TPeakFit.h:8
 TPeakFit.h:9
 TPeakFit.h:10
 TPeakFit.h:11
 TPeakFit.h:12
 TPeakFit.h:13
 TPeakFit.h:14
 TPeakFit.h:15
 TPeakFit.h:16
 TPeakFit.h:17
 TPeakFit.h:18
 TPeakFit.h:19
 TPeakFit.h:20
 TPeakFit.h:21
 TPeakFit.h:22
 TPeakFit.h:23
 TPeakFit.h:24
 TPeakFit.h:25
 TPeakFit.h:26
 TPeakFit.h:27
 TPeakFit.h:28
 TPeakFit.h:29
 TPeakFit.h:30
 TPeakFit.h:31
 TPeakFit.h:32
 TPeakFit.h:33
 TPeakFit.h:34
 TPeakFit.h:35
 TPeakFit.h:36
 TPeakFit.h:37
 TPeakFit.h:38
 TPeakFit.h:39
 TPeakFit.h:40
 TPeakFit.h:41
 TPeakFit.h:42
 TPeakFit.h:43
 TPeakFit.h:44
 TPeakFit.h:45
 TPeakFit.h:46
 TPeakFit.h:47
 TPeakFit.h:48
 TPeakFit.h:49
 TPeakFit.h:50
 TPeakFit.h:51
 TPeakFit.h:52
 TPeakFit.h:53
 TPeakFit.h:54
 TPeakFit.h:55
 TPeakFit.h:56
 TPeakFit.h:57
 TPeakFit.h:58
 TPeakFit.h:59
 TPeakFit.h:60
 TPeakFit.h:61
 TPeakFit.h:62
 TPeakFit.h:63
 TPeakFit.h:64
 TPeakFit.h:65
 TPeakFit.h:66
 TPeakFit.h:67
 TPeakFit.h:68
 TPeakFit.h:69
 TPeakFit.h:70
 TPeakFit.h:71
 TPeakFit.h:72
 TPeakFit.h:73
 TPeakFit.h:74
 TPeakFit.h:75
 TPeakFit.h:76
 TPeakFit.h:77
 TPeakFit.h:78
 TPeakFit.h:79
 TPeakFit.h:80
 TPeakFit.h:81
 TPeakFit.h:82
 TPeakFit.h:83
 TPeakFit.h:84
 TPeakFit.h:85
 TPeakFit.h:86
 TPeakFit.h:87
 TPeakFit.h:88
 TPeakFit.h:89
 TPeakFit.h:90
 TPeakFit.h:91
 TPeakFit.h:92
 TPeakFit.h:93
 TPeakFit.h:94
 TPeakFit.h:95
 TPeakFit.h:96
 TPeakFit.h:97
 TPeakFit.h:98
 TPeakFit.h:99
 TPeakFit.h:100
 TPeakFit.h:101
 TPeakFit.h:102
 TPeakFit.h:103
 TPeakFit.h:104
 TPeakFit.h:105
 TPeakFit.h:106
 TPeakFit.h:107
 TPeakFit.h:108
 TPeakFit.h:109
 TPeakFit.h:110
 TPeakFit.h:111
 TPeakFit.h:112
 TPeakFit.h:113
 TPeakFit.h:114
 TPeakFit.h:115