Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "TGo4FitModelGauss1.h"
00015
00016 #include "Riostream.h"
00017 #include "TMath.h"
00018
00019 #include "TGo4FitParameter.h"
00020
00021 TGo4FitModelGauss1::TGo4FitModelGauss1() : TGo4FitModel(), fiNaxis(0) {
00022 }
00023
00024 TGo4FitModelGauss1::TGo4FitModelGauss1(const char* iName, Double_t iPosition, Double_t iWidth, Int_t iNaxis) :
00025 TGo4FitModel(iName,"1-dimensional Gaussian", kTRUE), fiNaxis(iNaxis) {
00026 NewParameter("Pos","Gaussian position",iPosition);
00027 NewParameter("Width","Gaussian width",iWidth);
00028 }
00029
00030 TGo4FitModelGauss1::~TGo4FitModelGauss1() {
00031 }
00032
00033 Bool_t TGo4FitModelGauss1::BeforeEval(Int_t ndim) {
00034 Par_x0 = GetPar(1)->GetValue();
00035 Double_t w = GetPar(2)->GetValue();
00036 if (w==0.)
00037 { std::cout << "TGo4FitModelGauss1:: Invalid sigma value " << std::endl; return kFALSE; }
00038 Par_k = -0.5/w/w;
00039
00040 if (fiNaxis>=ndim)
00041 { std::cout << "TGo4FitModelGauss1: invalid index " << std::endl; return kFALSE; }
00042 return kTRUE;
00043 }
00044
00045 Double_t TGo4FitModelGauss1::EvalN(const Double_t* v) {
00046 return TMath::Exp(Par_k*(v[fiNaxis]-Par_x0)*(v[fiNaxis]-Par_x0));
00047 }
00048
00049 void TGo4FitModelGauss1::Print(Option_t* option) const {
00050 TGo4FitModel::Print(option);
00051 std::cout << " 1-dimensional Gauss for axis " << fiNaxis << std::endl;
00052 }
00053
00054 Double_t TGo4FitModelGauss1::Integral() {
00055 return GetAmplValue() * TMath::Sqrt(2.*TMath::Pi()) * GetPar(2)->GetValue();
00056 }