30int main(
int argc,
char **argv)
35 const char*
const count_t =
"count";
36 const char*
const value_t =
"value";
40 double background = 5;
79 catch(
const exception& error) {
88 const size_t nx = 20 *
ls;
89 const double xmin = -5.0 *
ls;
90 const double xmax = +5.0 *
ls;
92 const size_t ny = 20 *
ls;
93 const double ymin = -5.0 *
ls;
94 const double ymax = +5.0 *
ls;
98 if (inputFile ==
"") {
104 auto f2 = (
JGauss2X<1>(parameters.center, parameters.sigma) *
106 JP0<1>(parameters.signal) +
107 JP0<2>(parameters.background));
112 FillRandom(h2, f2, N);
116 TFile* in = TFile::Open(inputFile.c_str(),
"exist");
118 in->GetObject(
"h2", h2);
124 const double x0 = h2->GetMean(1);
125 const double y0 = h2->GetMean(2);
126 const double xs = h2->GetStdDev(1) * 0.33;
127 const double ys = h2->GetStdDev(2) * 0.33;
128 const double signal = h2->GetMaximum();
129 const double background = h2->GetMinimum() + 0.10;
139 typedef decltype(f2) function_type;
143 for (
size_t i = 0; i != getNumberOfParameters<function_type>(); ++i) {
145 <<
FIXED(15,9) << getParameter(f2, i) <<
endl;
149 const chrono::steady_clock::time_point t0 = chrono::steady_clock::now();
151 const auto result = (option ==
count_t ?
155 const chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
157 cout <<
"chi2/NDF " <<
FIXED(7,3) << result.getChi2() <<
"/" << result.getNDF() <<
endl;
158 cout <<
"Number of iterations " << result.numberOfIterations <<
endl;
159 cout <<
"Elapsed time [us] " <<
setw(8) << chrono::duration_cast<chrono::microseconds>(t1 - t0).count() <<
endl;
161 for (
size_t i = 0; i != result.getNumberOfParameters(); ++i) {
163 <<
FIXED(15,9) << result.getValue(i) <<
" +/- "
164 <<
FIXED(15,9) << result.getError(i) <<
endl;