ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/JetFitAnalyzer/interface/jetfit.h
Revision: 1.4
Committed: Wed Nov 11 22:24:40 2009 UTC (15 years, 5 months ago) by dnisson
Content type: text/plain
Branch: MAIN
Changes since 1.3: +8 -10 lines
Log Message:
T`

File Contents

# User Rev Content
1 dnisson 1.1 /* jetfit.h - User-callable function prototypes from jetfit */
2    
3     #ifndef JETFIT_H
4     #define JETFIT_H
5    
6     #include <string>
7     #include <vector>
8    
9     #include <TFormula.h>
10     #include <TString.h>
11     #include <TMinuit.h>
12     #include <TH2.h>
13    
14     namespace jetfit {
15 dnisson 1.3
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 dnisson 1.1 class model_def {
39     public:
40 dnisson 1.3 int get_ngauss();
41     void set_ngauss(int _ngauss);
42    
43     double fit_fcn(double, double, double *);
44    
45 dnisson 1.1 TFormula *get_formula();
46     void set_formula(TFormula *);
47     void get_indiv_par(int, std::string&, double&, double&, double&, double&);
48     void set_indiv_par(int, std::string, double, double, double, double);
49     void get_special_par(int, int, double&, double&, double&, double&);
50     void set_special_par(int, int, double, double, double, double);
51     unsigned get_n_special_par_sets();
52     int get_indiv_max_E();
53     void set_indiv_max_E(int);
54     int get_indiv_max_x();
55     void set_indiv_max_x(int);
56     int get_indiv_max_y();
57     void set_indiv_max_y(int);
58     virtual double chisquare_error(double) = 0;
59 dnisson 1.3 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 dnisson 1.4
65    
66     private:
67 dnisson 1.1 TFormula *indiv_formula; // formula for individual Gaussian
68     std::vector<std::string> indiv_par_names;
69     std::vector<double> indiv_par_starts;
70     std::vector<double> indiv_par_start_steps;
71     std::vector<double> indiv_par_lo;
72     std::vector<double> indiv_par_hi;
73     std::vector< std::vector<double> > special_par_starts;
74     std::vector< std::vector<double> > special_par_start_steps;
75     std::vector< std::vector<double> > special_par_lo;
76     std::vector< std::vector<double> > special_par_hi;
77     int indiv_max_E;
78     int indiv_max_x;
79     int indiv_max_y;
80 dnisson 1.3 int ngauss;
81 dnisson 1.1 };
82    
83 dnisson 1.4 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 dnisson 1.1
89     model_def& curr_model_def();
90     void set_model_def(model_def *_mdef);
91    
92     bool get_ignorezero();
93     void set_ignorezero(bool);
94 dnisson 1.3
95     double fit_fcn_TF2(double *, double *);
96 dnisson 1.1 }
97    
98     #endif