22namespace TestStatistics {
45 bool applyTrackingOpt)
59 if (applyTrackingOpt) {
63 <<
", dataset: " << dataset->GetName()
64 <<
") WARNING Cache-and-track optimization (Optimize level 2) is only available for datasets"
65 <<
" implemented in terms of RooVectorDataStore - ignoring this option for current dataset" << std::endl;
66 applyTrackingOpt =
false;
70 if (applyTrackingOpt) {
73 for (
const auto arg : branches) {
74 arg->setCacheAndTrackHints(trackNodes);
78 trackNodes.
remove(*constNodes);
94 dataset->cacheArgs(
nullptr, cached_nodes, norm_set, !
function->
getAttribute(
"BinnedLikelihood"));
97 for (
const auto cacheArg : cached_nodes) {
101 std::unique_ptr<RooArgSet> constNodes {
static_cast<RooArgSet *
>(cached_nodes.
selectByAttrib(
"ConstantExpressionCached",
true))};
102 RooArgSet actualTrackNodes(cached_nodes);
103 actualTrackNodes.
remove(*constNodes);
104 if (!constNodes->empty()) {
105 if (constNodes->size() < 20) {
107 <<
" The following expressions have been identified as constant and will be precalculated and cached: "
108 << *constNodes << std::endl;
111 <<
" expressions have been identified as constant and will be precalculated and cached."
115 if (!actualTrackNodes.
empty()) {
116 if (actualTrackNodes.
size() < 20) {
117 oocoutI(
nullptr,
Minimization) <<
" The following expressions will be evaluated in cache-and-track mode: "
118 << actualTrackNodes << std::endl;
121 <<
" expressions will be evaluated in cache-and-track-mode." << std::endl;
133 dataset->resetCache();
136 dataset->setArgStatus(*dataset->get(),
true);
142 dataset->setDirtyProp(
false);
159 dataset->setDirtyProp(
false);
bool findConstantNodes(const RooArgSet &observables, RooArgSet &cacheList)
Find branch nodes with all-constant parameters, and add them to the list of nodes that can be cached ...
bool getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
virtual void optimizeCacheMode(const RooArgSet &observables)
Activate cache mode optimization with given definition of observables.
void branchNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=nullptr, bool recurseNonDerived=false) const
Fill supplied list with all branch nodes of the arg tree starting with ourself as top node.
RooAbsCollection * selectByAttrib(const char *name, bool value) const
Create a subset of the current collection, consisting only of those elements with the specified attri...
virtual bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false)
Remove the specified argument from our list.
void setAttribAll(const Text_t *name, bool value=true)
Set given attribute in each element of the collection by calling each elements setAttribute() functio...
Storage_t::size_type size() const
Abstract base class for binned and unbinned datasets.
Abstract base class for objects that represent a real value and implements functionality common to al...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Uses std::vector to store data columns.
const char * GetName() const override
Returns name of object.
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
static RooArgSet requiredExtraObservables()
static void optimizeCaching(RooAbsReal *function, RooArgSet *norm_set, RooArgSet *observables, RooAbsData *dataset)
static void enableConstantTermsOptimization(RooAbsReal *function, RooArgSet *norm_set, RooAbsData *dataset, bool applyTrackingOpt)
static void disableConstantTermsOptimization(RooAbsReal *function, RooArgSet *norm_set, RooArgSet *observables, RooAbsData *dataset)