35   const char* 
const count_t = 
"count";
 
   36   const char* 
const value_t = 
"value";
 
   40     double background =   5;
 
   65     JParser<> zap(
"Program to test JRootfit algorithm.");
 
   74     zap[
'O'] = 
make_field(option)              = count_t, value_t;
 
   81   catch(
const exception& error) {
 
   82     FATAL(error.what() << endl);
 
   86   gRandom->SetSeed(seed);
 
   90   const size_t nx   = 20   * 
ls;
 
   91   const double xmin = -5.0 * 
ls;
 
   92   const double xmax = +5.0 * 
ls;
 
   94   const size_t ny   = 20   * 
ls;
 
   95   const double ymin = -5.0 * 
ls;
 
   96   const double ymax = +5.0 * 
ls;
 
   98   const size_t nz   = 20   * 
ls;
 
   99   const double zmin = -5.0 * 
ls;
 
  100   const double zmax = +5.0 * 
ls;
 
  104   if (inputFile == 
"") {
 
  106     h3 = 
new TH3D(
"h3", NULL, nx, 
xmin, 
xmax, ny, ymin, ymax, nz, zmin, zmax);
 
  110     auto f3 = (
JGauss3X<1>(parameters.center, parameters.sigma) * 
 
  113                JP0<1>(parameters.signal)                            +
 
  114                JP0<2>(parameters.background));
 
  123     TFile* in = TFile::Open(inputFile.c_str(), 
"exist");
 
  125     in->GetObject(
"h3", h3);
 
  131   const double x0         = h3->GetMean(1);
 
  132   const double y0         = h3->GetMean(2);
 
  133   const double z0         = h3->GetMean(3);
 
  134   const double xs         = h3->GetStdDev(1) * 0.17;
 
  135   const double ys         = h3->GetStdDev(2) * 0.17;
 
  136   const double zs         = h3->GetStdDev(3) * 0.17;
 
  137   const double signal     = h3->GetMaximum();
 
  138   const double background = h3->GetMinimum() + 0.10;
 
  148   typedef decltype(
f3)  function_type;
 
  152   for (
size_t i = 0; i != getNumberOfParameters<function_type>(); ++i) {
 
  153     cout << setw(2)     << i                   << 
' '  
  158     const chrono::steady_clock::time_point t0 = chrono::steady_clock::now();
 
  160     const auto result = (option == count_t ?
 
  161                          (writeFits ? Fit<m_count>(h3, 
f3, {}, X, Y, Z) : Fit<m_count>(*h3, 
f3, {}, X, Y, Z)) :
 
  162                          (writeFits ? 
Fit<
m_value>(h3, 
f3, {}, X, Y, Z) : Fit<m_value>(*h3, 
f3, {}, X, Y, Z)));
 
  164     const chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
 
  166     cout << 
"chi2/NDF " << 
FIXED(7,3) << 
result.getChi2() << 
"/" << 
result.getNDF() << endl;
 
  167     cout << 
"Number of iterations " << 
result.numberOfIterations << endl;
 
  168     cout << 
"Elapsed time [us] " << setw(8) << chrono::duration_cast<chrono::microseconds>(t1 - t0).count() << endl;
 
  170     for (
size_t i = 0; i != 
result.getNumberOfParameters(); ++i) {
 
  171       cout << setw(2)     << i                  << 
' '  
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
double f3(const double x, const double y, const double z)
3D function.
 
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
 
Utility class to parse parameter values.
 
Utility class to parse command line options.
 
int getParameter(const std::string &text)
Get parameter number from text string.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
void FillRandom(TH1 *h1, const T &f1)
Fill 1D histogram according Poisson statistics with expectation values from given 1D function.
 
JRootfit_t< JF1_t > Fit(const TH1 &h1, const JF1_t &f1, const index_list &ls=index_list(), const range_type &X=range_type())
Global fit fuction.
 
Auxiliary data structure for floating point format specification.
 
Make 3D function of x from 1D function.
 
Make 3D function of y from 1D function.
 
Make 3D function of z from 1D function.
 
Termination class for polynomial function.
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Data point for value with error.
 
Auxiliary data structure to list files in directory.