simple-tof-analysis
 All Classes Namespaces Functions Variables Groups Pages
TSBaseFunction.h
1 /*
2  * TSBaseFunction.h
3  *
4  * Created on: Aug 3, 2014
5  * Author: Silvestro di Luise
6  * Silvestro.Di.Luise@cern.ch
7  *
8  * ABC
9  *
10  *
11  * BaseFunction +
12  * DIM=1
13  * fX variable and cache
14  * Eval method ?
15  * TGraph (1D) builder
16  *
17  *
18  */
19 
20 #ifndef TSBASEFUNCTION_H_
21 #define TSBASEFUNCTION_H_
22 
23 #include <TObject.h>
24 #include <TString.h>
25 #include <TF1.h>
26 
27 #include <TH2.h>
28 #include <TH1.h>
29 
30 
31 #include "Math/IFunction.h"
32 #include "Math/IParamFunction.h"
33 
34 #include "TSNamed.h"
35 #include "TSParameter.h"
36 #include "TSParamFunction.h"
37 
38 #include "TSVariable.h"
39 
40 #include "TSArgList.h"
41 
42 
43 
44 //
45 //
46 //
47 //
48 class TSBaseFunction: public TSNamed {
49 
50 
51 public:
52 
54  TSBaseFunction(TString name, TString title);
55  virtual ~TSBaseFunction();
56 
57 
58  const TSParameter* GetParameter(int) const;
59  const TSParameter* GetParameter(TString name) const;
60 
61  void PrintParamList() const;
62 
63  virtual double DoEvalPar(const double *x, const double *p) const {return 0;};
64  virtual const double* Parameters() const {return 0;}
65  virtual void SetParameters(const double *p) {}
66 
67 
68  virtual unsigned int NDim() const {return fNDim;}
69  virtual unsigned int NPar() const {return fNPar;}
70 
71  virtual void SetNDim(int);
72  void SetNPar(int);
73 
74  virtual double Evaluate() const =0;
75  virtual double Eval(double x, double y=0) const =0;
76  virtual double Eval() const =0;
77 
78  double GetBinArea() const {return fBinArea;}
79  double GetBinWidthX() const {return fBinWidthX;}
80  double GetBinWidthY() const {return fBinWidthY;}
81 
82  void Init();
83 
84  //TString Name() const {return fName;}
85  //TString Title() const {return fTitle;}
86  // Overrides virtual TObject method to make the derived object
87  // searchable in the root containers.
88  //const char* GetName() const {return fName.Data();}
89  //const char* GetTitle() const {return fTitle.Data();}
90 
91 
92  TSArgList* GetPrimaryParamList() const { return fPrimaryParamList; }
93  void PrintPrimaryParamList() const;
94  int GetNumOfPrimPars() const {return fPrimaryParamList->GetSize();}
95 
96  void ResetBinWidths() const;
97  void SetBinWidths(double,double) const;
98  void SetBinWidths(const TH1 &) const;
99  void SetBinWidthX(double) const;
100  void SetBinWidthY(double) const;
101 
102 
103  static double GNorm;//=2.50662827463100024; //sqrt(2*Pi)=2.50662827463100024
104 
105 protected:
106 
107  int AddParameter(const TSParameter& p);
108 
109  virtual void fClearPrimaryParamList();
110 
111 private:
112 
113  //TString fName,fTitle;
114 
115  int fNDim;
116  int fNPar;
117 
118  mutable double fBinWidthX;
119  mutable double fBinWidthY;
120  mutable double fBinArea;
121 
122  TSArgList fParamSet;
123 
124  TSArgList *fPrimaryParamList;
125 
126  virtual void fBuildPrimaryParamList();
127  virtual void fUpdatePrimaryParamList(const TSParameter &);
128 
129  //plain array for O(1) access to params..if needed
130  //can be accessed with the method which retrieve the
131  //param via param number
132  static const int NMAX_FUNC_PARAMS=100;
133  const TSParameter *fParamArray[NMAX_FUNC_PARAMS];
134  const TSParameter *fPrimaryParamArray[NMAX_FUNC_PARAMS];
135 
136 
137 };
138 
139 #endif /* TSBASEFUNCTION_H_ */
Definition: TSArgList.h:30
Definition: TSBaseFunction.h:48
Definition: TSParameter.h:39
Definition: TSNamed.h:38