7 |
|
class HistoFitter { |
8 |
|
public: |
9 |
|
|
10 |
+ |
static double fcn(int &, double *, double &, double *, int); |
11 |
+ |
|
12 |
|
enum TroubleStage { |
13 |
|
T_NULL = 0, |
14 |
|
T_SIMPLEX, |
17 |
|
}; |
18 |
|
|
19 |
|
struct VectorHisto { |
20 |
< |
vector< vector<double> > bins; |
20 |
> |
std::vector< std::vector<double> > bins; |
21 |
|
double Xlo, Xhi, Ylo, Yhi; |
22 |
|
} energy; |
23 |
|
|
53 |
|
void setFormula(TFormula *); |
54 |
|
void indivParameter(int, std::string&, double&, double&, double&, double&); |
55 |
|
void setIndivParameter(int, std::string, double, double, double, double); |
56 |
< |
int indivEnergy(); |
57 |
< |
void setIndivEnergy(int); |
58 |
< |
int indivMeanX(); |
59 |
< |
void setIndivMeanX(int); |
60 |
< |
int indivMeanY(); |
61 |
< |
void setIndivMeanY(int); |
56 |
> |
unsigned indivEnergy(); |
57 |
> |
void setIndivEnergy(unsigned); |
58 |
> |
unsigned indivMeanX(); |
59 |
> |
void setIndivMeanX(unsigned); |
60 |
> |
unsigned indivMeanY(); |
61 |
> |
void setIndivMeanY(unsigned); |
62 |
|
virtual double chisquareSigma(double) = 0; |
63 |
|
double formulaIntegral(double, double, double, double, |
64 |
|
double*, double, double, double*); |
83 |
|
std::vector<double> indivParStarts; |
84 |
|
std::vector<double> indivParStartSteps; |
85 |
|
std::vector<double> indivParLowerLimit; |
84 |
– |
lo; |
86 |
|
std::vector<double> indivParUpperLimit; |
87 |
< |
int theIndivEnergy; |
88 |
< |
int theIndivMeanX; |
89 |
< |
int theIndivMeanY; |
87 |
> |
unsigned theIndivEnergy; |
88 |
> |
unsigned theIndivMeanX; |
89 |
> |
unsigned theIndivMeanY; |
90 |
|
int theNumberOfGaussians; |
91 |
|
int theMaxNumberOfGaussians; |
92 |
|
}; |
93 |
|
|
94 |
< |
FitResults fit_histo(TH2 *hist, std::vector<Trouble> &t, |
95 |
< |
void (*cc_minuit)(TMinuit *, TH2 *, int) = 0, |
96 |
< |
int start_theNumberOfGaussians = 0, |
97 |
< |
int rebinX = 1, int rebinY = 1, |
94 |
> |
int getNumberOfDegreesOfFreedom(VectorHisto, int); |
95 |
> |
|
96 |
> |
FitResults fit_histo(TH2 *hist, |
97 |
> |
std::vector<Trouble> &t, |
98 |
> |
int start_theNumberOfGaussians = 1, |
99 |
|
double P_cutoff_val = 0.5); |
100 |
|
|
101 |
|
ModelDefinition& curr_ModelDefinition(); |
102 |
|
void set_ModelDefinition(ModelDefinition *_mdef); |
103 |
|
|
104 |
< |
bool get_ignorezero(); |
105 |
< |
void set_ignorezero(bool); |
106 |
< |
|
107 |
< |
double fit_fcn_TF2(double *, double *); |
108 |
< |
// } |
107 |
< |
} |
104 |
> |
double fitFunction_TF2(double *, double *); |
105 |
> |
protected: |
106 |
> |
ModelDefinition *mdef; |
107 |
> |
static ModelDefinition *static_mdef; |
108 |
> |
}; |
109 |
|
|
110 |
|
#endif |