134 JParser<> zap(
"Program to test JGradient algorithm.");
144 catch(
const exception& error) {
145 FATAL(error.what() << endl);
148 gRandom->SetSeed(seed);
150 if (numberOfEvents == 0) {
152 buffer.push_back(element_type(-3.00000, 16.00000));
153 buffer.push_back(element_type(-2.50000, 22.00000));
154 buffer.push_back(element_type(-2.00000, 70.00000));
155 buffer.push_back(element_type(-1.50000, 152.00000));
156 buffer.push_back(element_type(-1.00000, 261.00000));
157 buffer.push_back(element_type(-0.50000, 337.00000));
158 buffer.push_back(element_type( 0.00000, 378.00000));
159 buffer.push_back(element_type( 0.50000, 360.00000));
160 buffer.push_back(element_type( 1.00000, 253.00000));
161 buffer.push_back(element_type( 1.50000, 129.00000));
162 buffer.push_back(element_type( 2.00000, 72.00000));
163 buffer.push_back(element_type( 2.50000, 22.00000));
164 buffer.push_back(element_type( 3.00000, 11.00000));
170 fit =
JGauss(0.5, 0.5, 700.0, 0.0);
172 gradient.push_back(
JModifier_t(
"mean",
new JGaussEditor(fit,
JGauss(1.0, 0.0, 0.0, 0.0)), 1.0e-2));
173 gradient.push_back(
JModifier_t(
"sigma",
new JGaussEditor(fit,
JGauss(0.0, 1.0, 0.0, 0.0)), 1.0e-2));
174 gradient.push_back(
JModifier_t(
"signal",
new JGaussEditor(fit,
JGauss(0.0, 0.0, 1.0, 0.0)), 5.0e-0));
175 gradient.push_back(
JModifier_t(
"background",
new JGaussEditor(fit,
JGauss(0.0, 0.0, 0.0, 1.0)), 5.0e-1));
186 const size_t nx = 21;
187 const double xmin = -5.0;
188 const double xmax = +5.0;
190 for (
int i = 0; i != numberOfEvents; ++i) {
192 STATUS(
"event: " << setw(10) << i <<
'\r');
DEBUG(endl);
196 for (
double x = xmin, dx = (xmax - xmin) / (nx - 1); x < xmax + 0.5*dx; x += dx) {
198 const double value =
gauss(x);
200 buffer.push_back(element_type(x, gRandom->Poisson(value)));
207 fit =
JGauss(0.5, 0.5, 700.0, 0.0);
209 gradient.push_back(
JModifier_t(
"mean",
new JGaussEditor(fit,
JGauss(1.0, 0.0, 0.0, 0.0)), 1.0e-2));
210 gradient.push_back(
JModifier_t(
"sigma",
new JGaussEditor(fit,
JGauss(0.0, 1.0, 0.0, 0.0)), 1.0e-2));
211 gradient.push_back(
JModifier_t(
"signal",
new JGaussEditor(fit,
JGauss(0.0, 0.0, 1.0, 0.0)), 5.0e-0));
212 gradient.push_back(
JModifier_t(
"background",
new JGaussEditor(fit,
JGauss(0.0, 0.0, 0.0, 1.0)), 5.0e-1));
214 const double chi2 = gradient(
getChi2);
216 DEBUG(
"Final value " << fit << endl);
217 DEBUG(
"Chi2 " << chi2 << endl);
225 for (
int i = 0; i !=
sizeof(Q)/
sizeof(Q[0]); ++i) {
229 for (
int i = 0; i !=
sizeof(Q)/
sizeof(Q[0]); ++i) {