ROOT
v6-36
Reference Guide
Loading...
Searching...
No Matches
RooNormalizedPdf.cxx
Go to the documentation of this file.
1
/*
2
* Project: RooFit
3
* Authors:
4
* Jonas Rembser, CERN 2022
5
*
6
* Copyright (c) 2022, CERN
7
*
8
* Redistribution and use in source and binary forms,
9
* with or without modification, are permitted according to the terms
10
* listed in LICENSE (http://roofit.sourceforge.net/license.txt)
11
*/
12
13
#include "
RooFit/Detail/RooNormalizedPdf.h
"
14
15
#include "
RooBatchCompute.h
"
16
17
#include <array>
18
19
20
/**
21
* \class RooNormalizedPdf
22
*
23
* A RooNormalizedPdf wraps a pdf divided by its integral for a given
24
* normalization set into a new self-normalized pdf.
25
*/
26
27
namespace
RooFit
{
28
namespace
Detail {
29
30
void
RooNormalizedPdf::doEval
(
RooFit::EvalContext
&ctx)
const
31
{
32
auto
nums
= ctx.
at
(
_pdf
);
33
auto
integralSpan
= ctx.
at
(
_normIntegral
);
34
35
// We use the extraArgs as output parameter to count evaluation errors.
36
std::array<double, 3>
extraArgs
{0.0, 0.0, 0.0};
37
38
RooBatchCompute::compute
(ctx.
config
(
this
),
RooBatchCompute::NormalizedPdf
, ctx.
output
(), {nums, integralSpan},
39
extraArgs
);
40
41
std::size_t
nEvalErrorsType0
=
extraArgs
[0];
42
std::size_t
nEvalErrorsType1
=
extraArgs
[1];
43
std::size_t
nEvalErrorsType2
=
extraArgs
[2];
44
45
for
(std::size_t i = 0; i <
nEvalErrorsType0
; ++i) {
46
logEvalError
(
"p.d.f normalization integral is zero or negative"
);
47
}
48
for
(std::size_t i = 0; i <
nEvalErrorsType1
; ++i) {
49
logEvalError
(
"p.d.f value is less than zero, trying to recover"
);
50
}
51
for
(std::size_t i = 0; i <
nEvalErrorsType2
; ++i) {
52
logEvalError
(
"p.d.f value is Not-a-Number"
);
53
}
54
}
55
56
}
// namespace Detail
57
}
// namespace RooFit
RooBatchCompute.h
RooNormalizedPdf.h
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:358
ROOT::Detail::TRangeCast
Definition
TCollection.h:311
RooAbsReal::logEvalError
void logEvalError(const char *message, const char *serverValueString=nullptr) const
Log evaluation error message.
Definition
RooAbsReal.cxx:3424
RooFit::Detail::RooNormalizedPdf::_normIntegral
RooRealProxy _normIntegral
Definition
RooNormalizedPdf.h:92
RooFit::Detail::RooNormalizedPdf::_pdf
RooTemplateProxy< RooAbsPdf > _pdf
Definition
RooNormalizedPdf.h:91
RooFit::Detail::RooNormalizedPdf::doEval
void doEval(RooFit::EvalContext &) const override
Base function for computing multiple values of a RooAbsReal.
Definition
RooNormalizedPdf.cxx:30
RooFit::EvalContext
Definition
EvalContext.h:84
RooFit::EvalContext::at
std::span< const double > at(RooAbsArg const *arg, RooAbsArg const *caller=nullptr)
Definition
EvalContext.cxx:35
RooFit::EvalContext::output
std::span< double > output()
Definition
EvalContext.h:112
RooFit::EvalContext::config
RooBatchCompute::Config config(RooAbsArg const *arg) const
Definition
EvalContext.cxx:73
RooBatchCompute::compute
void compute(Config cfg, Computer comp, std::span< double > output, VarSpan vars, ArgSpan extraArgs={})
Definition
RooBatchCompute.h:212
RooBatchCompute::NormalizedPdf
@ NormalizedPdf
Definition
RooBatchCompute.h:99
RooFit
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition
CodegenImpl.h:65
roofit
roofitcore
src
RooNormalizedPdf.cxx
ROOT v6-36 - Reference Guide Generated on Wed Aug 20 2025 04:39:57 (GVA Time) using Doxygen 1.10.0