12 |
|
#include <TH2.h> |
13 |
|
|
14 |
|
namespace jetfit { |
15 |
+ |
|
16 |
+ |
enum trouble_occ_t { |
17 |
+ |
T_NULL = 0, |
18 |
+ |
T_SIMPLEX, |
19 |
+ |
T_MIGRAD, |
20 |
+ |
T_MINOS |
21 |
+ |
}; |
22 |
+ |
|
23 |
+ |
struct trouble { |
24 |
+ |
trouble_occ_t occ; |
25 |
+ |
int istat; |
26 |
+ |
}; |
27 |
+ |
|
28 |
+ |
struct results { |
29 |
+ |
TH2 *hist_rebinned; |
30 |
+ |
std::vector< double > chisquare; |
31 |
+ |
std::vector< std::vector<TString> > pars; |
32 |
+ |
std::vector< std::vector<double> > pval; |
33 |
+ |
std::vector< std::vector<double> > perr; |
34 |
+ |
std::vector< std::vector<double> > plo; |
35 |
+ |
std::vector< std::vector<double> > phi; |
36 |
+ |
}; |
37 |
+ |
|
38 |
|
class model_def { |
39 |
|
public: |
40 |
+ |
int get_ngauss(); |
41 |
+ |
void set_ngauss(int _ngauss); |
42 |
+ |
|
43 |
+ |
double fit_fcn(double, double, double *); |
44 |
+ |
|
45 |
|
TFormula *get_formula(); |
46 |
|
void set_formula(TFormula *); |
47 |
|
void get_indiv_par(int, std::string&, double&, double&, double&, double&); |
56 |
|
int get_indiv_max_y(); |
57 |
|
void set_indiv_max_y(int); |
58 |
|
virtual double chisquare_error(double) = 0; |
59 |
+ |
double formula_int(double, double, double, double, |
60 |
+ |
double*, double, double, double*); |
61 |
+ |
void par_init(TH2 *, TMinuit *, std::vector<TString> &, |
62 |
+ |
double *, double *, double *, double *, |
63 |
+ |
int, results); |
64 |
+ |
|
65 |
+ |
|
66 |
|
private: |
67 |
|
TFormula *indiv_formula; // formula for individual Gaussian |
68 |
|
std::vector<std::string> indiv_par_names; |
77 |
|
int indiv_max_E; |
78 |
|
int indiv_max_x; |
79 |
|
int indiv_max_y; |
80 |
+ |
int ngauss; |
81 |
|
}; |
82 |
|
|
83 |
< |
enum trouble_occ_t { |
84 |
< |
T_NULL = 0, |
85 |
< |
T_SIMPLEX, |
86 |
< |
T_MIGRAD, |
87 |
< |
T_MINOS |
52 |
< |
}; |
53 |
< |
|
54 |
< |
struct trouble { |
55 |
< |
trouble_occ_t occ; |
56 |
< |
int istat; |
57 |
< |
}; |
58 |
< |
|
59 |
< |
struct results { |
60 |
< |
TH2 *hist_rebinned; |
61 |
< |
std::vector< std::vector<TString> > pars; |
62 |
< |
std::vector< std::vector<double> > pval; |
63 |
< |
std::vector< std::vector<double> > perr; |
64 |
< |
std::vector< std::vector<double> > plo; |
65 |
< |
std::vector< std::vector<double> > phi; |
66 |
< |
}; |
83 |
> |
results fit_histo(TH2 *hist, std::vector<trouble> &t, |
84 |
> |
void (*cc_minuit)(TMinuit *, TH2 *, int) = 0, |
85 |
> |
int start_ngauss = 0, |
86 |
> |
int rebinX = 1, int rebinY = 1, |
87 |
> |
double P_cutoff_val = 0.5); |
88 |
|
|
89 |
|
model_def& curr_model_def(); |
90 |
|
void set_model_def(model_def *_mdef); |
91 |
|
|
71 |
– |
int get_ngauss(); |
72 |
– |
void set_ngauss(int _ngauss); |
73 |
– |
double fit_fcn(double, double, double *); |
74 |
– |
double fit_fcn_TF2(double *, double *); |
92 |
|
bool get_ignorezero(); |
93 |
|
void set_ignorezero(bool); |
94 |
< |
|
95 |
< |
results fit_histo(TH2 *hist, std::vector<trouble> &t, |
79 |
< |
void (*cc_minuit)(TMinuit *, TH2 *, int) = 0, |
80 |
< |
int start_ngauss = 0, |
81 |
< |
int rebinX = 1, int rebinY = 1, |
82 |
< |
double P_cutoff_val = 0.5); |
94 |
> |
|
95 |
> |
double fit_fcn_TF2(double *, double *); |
96 |
|
} |
97 |
|
|
98 |
|
#endif |