122{
125
126 int numberOfEvents;
131
132 try {
133
135
141
143 }
144 catch(const exception& error) {
146 }
147
149
150 if (numberOfEvents == 0) {
151
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));
165
167
168
169
170 fit =
JGauss(0.5, 0.5, 700.0, 0.0);
171
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));
176
178
179 } else {
180
186 };
187
188 const size_t nx = 21;
189 const double xmin = -5.0;
190 const double xmax = +5.0;
191
192 for (int i = 0; i != numberOfEvents; ++i) {
193
195
196 buffer.clear();
197
198 for (
double x = xmin,
dx = (xmax - xmin) / (
nx - 1);
x < xmax + 0.5*
dx;
x +=
dx) {
199
200 const double value =
gauss(x);
201
202 buffer.push_back(element_type(x,
gRandom->Poisson(value)));
203 }
204
206
207
208
209 fit =
JGauss(0.5, 0.5, 700.0, 0.0);
210
211 gradient.push_back(
JModifier_t(
"mean",
new JGaussEditor(fit,
JGauss(1.0, 0.0, 0.0, 0.0)), 1.0e-2));
212 gradient.push_back(
JModifier_t(
"sigma",
new JGaussEditor(fit,
JGauss(0.0, 1.0, 0.0, 0.0)), 1.0e-2));
213 gradient.push_back(
JModifier_t(
"signal",
new JGaussEditor(fit,
JGauss(0.0, 0.0, 1.0, 0.0)), 5.0e-0));
214 gradient.push_back(
JModifier_t(
"background",
new JGaussEditor(fit,
JGauss(0.0, 0.0, 0.0, 1.0)), 5.0e-1));
215
216 const double chi2 = gradient(
getChi2);
217
220
223 Q[2].
put(fit.signal -
gauss.signal);
224 Q[3].
put(fit.background -
gauss.background);
225 }
226
227 for (int i = 0; i != sizeof(Q)/sizeof(Q[0]); ++i) {
229 }
230
231 for (int i = 0; i != sizeof(Q)/sizeof(Q[0]); ++i) {
233 }
234
239 }
240
241 return 0;
242}
double getMean(vector< double > &v)
get mean of vector content
std::ostream & longprint(std::ostream &out)
Set long printing.
std::ostream & shortprint(std::ostream &out)
Set short printing.
#define DEBUG(A)
Message macros.
#define ASSERT(A,...)
Assert macro.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Template definition of a multi-dimensional oscillation probability interpolation table.
double getChi2(const double P)
Get chi2 corresponding to given probability.
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).
Auxiliary data structure for editable parameter.