29   using TMath::PoissonI;
 
   41   inline result_type 
g1(
const JGauss& 
gauss, 
const JElement_t& point) 
 
   45     const double u  = (point.getX() - 
gauss.mean) / 
gauss.sigma;
 
   46     const double fs =  
gauss.signal * exp(-0.5*
u*
u) / (sqrt(2.0*
PI) * 
gauss.sigma);
 
   47     const double fb =  
gauss.background;
 
   48     const double f1 =  fs + fb;
 
   50     const double p  =  PoissonI(point.getY(), 
f1);
 
   57     result.gradient.background = 1.0;                                              
 
   59     result.gradient *= 1.0 - point.getY()/
f1;                                      
 
   72 int main(
int argc, 
char **argv)
 
   85     JParser<> zap(
"Program to test JGandalf algorithm.");
 
   95   catch(
const exception& error) {
 
   96     FATAL(error.what() << endl);
 
  101   ASSERT(numberOfEvents > 0);
 
  105   TF1 fs(
"fs", 
"exp(-0.5 * (x-[0])*(x-[0]) / ([1]*[1]))");
 
  108   fs.FixParameter(0, 
gauss.mean);
 
  109   fs.FixParameter(1, 
gauss.sigma);
 
  112   const Double_t 
xmin = -5.0;
 
  113   const Double_t 
xmax = +5.0;
 
  120   TH1D      
H[] = { TH1D(
"ha", 
"", 101,   -0.1,    +0.1),
 
  121                     TH1D(
"hb", 
"", 101,   -0.1,    +0.1),
 
  122                     TH1D(
"hc", 
"", 101, -100.0,  +100.0),
 
  123                     TH1D(
"hd", 
"", 101, -100.0,  +100.0) };
 
  127   for (
int i = 0; i != numberOfEvents; ++i) {
 
  129     STATUS(
"event: " << setw(10) << i << 
'\r'); 
DEBUG(endl);
 
  131     TH1D h0(
"h0", NULL, nx, 
xmin, 
xmax);
 
  135     h0.FillRandom(
"fs", (Int_t) 
gauss.signal);
 
  136     h0.FillRandom(
"fb", (Int_t) 
gauss.background);
 
  140     for (Int_t i = 1; i <= h0.GetNbinsX(); ++i) {
 
  141       data.push_back(JElement_t(h0.GetBinCenter (i),
 
  142                                 h0.GetBinContent(i)));
 
  149     fit.parameters.resize(4);
 
  151     fit.parameters[0] = &JGauss::mean;
 
  153     fit.parameters[2] = &JGauss::signal;
 
  154     fit.parameters[3] = &JGauss::background;
 
  156     fit.value = 
JGauss(h0.GetMean(),
 
  158                        h0.GetEntries() * (
xmax - 
xmin) / nx - h0.GetMinimum(),
 
  161     DEBUG(
"Start value " << fit.value << endl);
 
  165     const double chi2 = fit(
g1, 
data.begin(), 
data.end());
 
  169     DEBUG(
"Final value " << fit.value << endl);
 
  170     DEBUG(
"Chi2 " << chi2 << endl);
 
  172     const double Y[] = { fit.value.mean                             - 
gauss.mean,
 
  173                          fit.value.sigma                            - 
gauss.sigma,
 
  175                          fit.value.background * nx                  - 
gauss.background };
 
  177     for (
int i = 0; i != 
sizeof(Q)/
sizeof(Q[0]); ++i) {
 
  183   for (
int i = 0; i != 
sizeof(Q)/
sizeof(Q[0]); ++i) {
 
  195     for (
int i = 0; i != 
sizeof(
H)/
sizeof(
H[0]); ++i) {
 
  203   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.
 
Place holder for custom implementation.
 
Auxiliary class for CPU timing and usage.
 
void print(std::ostream &out, const JScale_t scale=milli_t) const
Print timer data.
 
Utility class to parse command line options.
 
const JPolynome f1(1.0, 2.0, 3.0)
Function.
 
Auxiliary classes and methods for linear and iterative data regression.
 
static const double PI
Mathematical constants.
 
double gauss(const double x, const double sigma)
Gauss function (normalised to 1 at x = 0).
 
static const double H
Planck constant [eV s].
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Data structure for return value of fit function.