46 inline double g1(
const JGauss&
gauss,
const element_type& point)
48 const double u = (point.getX() -
gauss.mean) /
gauss.sigma;
49 const double fs =
gauss.signal * exp(-0.5*
u*
u) / (sqrt(2.0*
PI) *
gauss.sigma);
50 const double fb =
gauss.background;
51 const double f1 = fs + fb;
53 const double y = point.getY();
54 const double dy = (
f1 -
y) * (
f1 -
y);
69 double getChi2(
const int option)
73 for (buffer_type::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
104 virtual void apply(
const double step)
override
121 int main(
int argc,
char **argv)
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);
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) {
double getMean(vector< double > &v)
get mean of vector content
The elements in a collection are sorted according to their abscissa values and a given distance opera...
int main(int argc, char **argv)
std::ostream & shortprint(std::ostream &out)
Set short printing.
std::ostream & longprint(std::ostream &out)
Set long printing.
General purpose messaging.
#define DEBUG(A)
Message macros.
#define ASSERT(A,...)
Assert macro.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
I/O formatting auxiliaries.
Double_t g1(const Double_t x)
Function.
Auxiliary class for fit parameter with optional limits.
Utility class to parse command line options.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
double getChi2(const double P)
Get chi2 corresponding to given probability.
static const double PI
Mathematical constants.
double gauss(const double x, const double sigma)
Gauss function (normalised to 1 at x = 0).
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
std::vector< JHitW0 > buffer_type
hits
Auxiliary data structure for editable parameter.