ROOT
master
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
#include "
RooFitImplHelpers.h
"
17
18
#include <array>
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::Detail
{
28
29
void
RooNormalizedPdf::doEval
(
RooFit::EvalContext
&ctx)
const
30
{
31
auto
nums
= ctx.
at
(
_pdf
);
32
auto
integralSpan
= ctx.
at
(
_normIntegral
);
33
34
// We use the extraArgs as output parameter to count evaluation errors.
35
std::array<double, 3>
extraArgs
{0.0, 0.0, 0.0};
36
37
RooBatchCompute::compute
(ctx.
config
(
this
),
RooBatchCompute::NormalizedPdf
, ctx.
output
(), {nums, integralSpan},
38
extraArgs
);
39
40
std::size_t
nEvalErrorsType0
=
extraArgs
[0];
41
std::size_t
nEvalErrorsType1
=
extraArgs
[1];
42
std::size_t
nEvalErrorsType2
=
extraArgs
[2];
43
44
for
(std::size_t i = 0; i <
nEvalErrorsType0
; ++i) {
45
logEvalError
(
"p.d.f normalization integral is zero or negative"
);
46
}
47
for
(std::size_t i = 0; i <
nEvalErrorsType1
; ++i) {
48
logEvalError
(
"p.d.f value is less than zero, trying to recover"
);
49
}
50
for
(std::size_t i = 0; i <
nEvalErrorsType2
; ++i) {
51
logEvalError
(
"p.d.f value is Not-a-Number"
);
52
}
53
}
54
55
double
RooNormalizedPdf::getValV
(
const
RooArgSet
*
/*normSet*/
)
const
56
{
57
return
normalizeWithNaNPacking
(*
_pdf
,
_pdf
->
getVal
(),
_normIntegral
->
getVal
());
58
}
59
60
}
// namespace RooFit::Detail
RooBatchCompute.h
RooFitImplHelpers.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:360
ROOT::Detail::TRangeCast
Definition
TCollection.h:313
RooAbsReal::getVal
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
Definition
RooAbsReal.h:107
RooAbsReal::logEvalError
void logEvalError(const char *message, const char *serverValueString=nullptr) const
Log evaluation error message.
Definition
RooAbsReal.cxx:3358
RooArgSet
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition
RooArgSet.h:24
RooFit::Detail::RooNormalizedPdf::_normIntegral
RooRealProxy _normIntegral
Definition
RooNormalizedPdf.h:89
RooFit::Detail::RooNormalizedPdf::_pdf
RooTemplateProxy< RooAbsPdf > _pdf
Definition
RooNormalizedPdf.h:88
RooFit::Detail::RooNormalizedPdf::getValV
double getValV(const RooArgSet *normSet) const override
Return current value, normalized by integrating over the observables in nset.
Definition
RooNormalizedPdf.cxx:55
RooFit::Detail::RooNormalizedPdf::doEval
void doEval(RooFit::EvalContext &) const override
Base function for computing multiple values of a RooAbsReal.
Definition
RooNormalizedPdf.cxx:29
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::Detail
Definition
CodegenImpl.h:73
RooFit::Detail::normalizeWithNaNPacking
double normalizeWithNaNPacking(RooAbsPdf const &pdf, double rawVal, double normVal)
Definition
RooFitImplHelpers.h:114
roofit
roofitcore
src
RooNormalizedPdf.cxx
ROOTmaster - Reference Guide Generated on Tue Mar 17 2026 03:28:00 (GVA Time) using Doxygen 1.10.0