65 if (exclLVBranches.
empty())
77 for (
const auto client : server->valueClients()) {
79 if (!(exclLVBranches.
find(client->GetName()) == client)) {
80 if (allBranches.
find(client->GetName()) == client) {
81 if (!servesExclusively(client, exclLVBranches, allBranches)) {
92 return (numLVServ == 1);
96 ServerToAdd(
RooAbsArg *theArg,
bool isShape) : arg{theArg}, isShapeServer{isShape} {}
98 bool isShapeServer =
false;
102 const char *rangeName)
105 if (leaflv && leaflv->getBinning(rangeName).isParameterized()) {
108 <<
" has parameterized binning, add value dependence of boundary objects rather than shape of leaf"
110 if (leaflv->getBinning(rangeName).lowBoundFunc()) {
111 serversToAdd.emplace_back(leaflv->getBinning(rangeName).lowBoundFunc(),
false);
113 if (leaflv->getBinning(rangeName).highBoundFunc()) {
114 serversToAdd.emplace_back(leaflv->getBinning(rangeName).highBoundFunc(),
false);
118 <<
" as shape dependent" << std::endl;
119 serversToAdd.emplace_back(&leaf,
true);
126 if (!isShapeServer) {
128 <<
" as value dependent" << std::endl;
131 <<
" as shape dependent" << std::endl;
133 serversToAdd.emplace_back(&leaf, isShapeServer);
136enum class MarkedState { Dependent, Independent, AlreadyAdded };
139void unmarkDepValueClients(
RooAbsArg const &dep,
RooArgSet const &args, std::vector<MarkedState> &marked)
141 assert(args.
size() == marked.size());
144 marked[
index] = MarkedState::Dependent;
145 for (
RooAbsArg *client : dep.valueClients()) {
146 unmarkDepValueClients(*client, args, marked);
151std::vector<ServerToAdd>
154 std::vector<ServerToAdd> serversToAdd;
165 RooArgSet allValueArgs{allValueArgsList};
168 std::vector<MarkedState> marked(allArgs.size(), MarkedState::Independent);
169 marked.back() = MarkedState::Dependent;
177 unmarkDepValueClients(*depInArgs, allArgs, marked);
178 addObservableToServers(
function, *depInArgs, serversToAdd, rangeName);
184 for (std::size_t i = 0; i < allArgs.size(); ++i) {
185 if (marked[i] == MarkedState::Dependent) {
186 for (
RooAbsArg *server : allArgs[i]->servers()) {
188 if (
index >= 0 && marked[
index] == MarkedState::Independent) {
189 addParameterToServers(
function, *server, serversToAdd, !allValueArgs.find(*server));
190 marked[
index] = MarkedState::AlreadyAdded;
213 if (intDep->namePtr() != branch->namePtr() && branch->dependsOnValue(*intDep)) {
219 filteredIntDeps.
add(*intDep);
223 for (
const auto arg :
function.servers()) {
226 if (!arg->dependsOnValue(filteredIntDeps)) {
228 }
else if (!arg->isValueServer(
function) && !arg->isShapeServer(
function)) {
236 if (arg->isDerived()) {
239 if ((realArgLV && filteredIntDeps.
find(realArgLV->
GetName()) &&
247 bool overlapOK =
true;
248 for (
const auto otherArg :
function.servers()) {
254 if (arg->overlaps(*otherArg,
true)) {
268 anIntOKDepList.
add(*arg,
true);
271 <<
" is suitable for analytical integration (if supported by p.d.f)" << std::endl;
303 const char* rangeName) :
306 _respectCompSelect{!_globalSelectComp},
307 _sumList(
"!sumList",
"Categories to be summed numerically",this,false,false),
308 _intList(
"!intList",
"Variables to be integrated numerically",this,false,false),
309 _anaList(
"!anaList",
"Variables to be integrated analytically",this,false,false),
310 _jacList(
"!jacList",
"Jacobian product term",this,false,false),
311 _facList(
"!facList",
"Variables independent of function",this,false,true),
312 _function(
"!func",
"Function to be integrated",this,false,false),
314 _sumCat(
"!sumCat",
"SuperCategory for summation",this,false,false),
339 <<
function.
GetName() <<
" over observables" << depList <<
" with normalization "
341 << (rangeName?rangeName:
"<none>") << std::endl ;
371 for (
auto arg : intDepList) {
372 if(!arg->isLValue()) {
378 std::unique_ptr<RooAbsArg> argClone{
static_cast<RooAbsArg*
>(arg->Clone())};
396 RooArgSet exclLVBranches(
"exclLVBranches") ;
401 for (
auto branch: branchList) {
404 if ((realArgLV && (realArgLV->
isJacobianOK(intDepList)!=0)) || catArgLV) {
405 exclLVBranches.
add(*branch) ;
408 branchListVD.
add(*branch) ;
411 exclLVBranches.
remove(depList,
true,
true) ;
415 RooArgSet exclLVServers(
"exclLVServers") ;
419 bool converged(
false) ;
424 std::vector<RooAbsArg*> toBeRemoved;
425 for (
auto server : exclLVServers) {
426 if (!servesExclusively(server,exclLVBranches,branchListVD)) {
427 toBeRemoved.push_back(server);
431 exclLVServers.
remove(toBeRemoved.begin(), toBeRemoved.end());
435 for (std::size_t i=0; i < exclLVBranches.
size(); ++i) {
436 const RooAbsArg* branch = exclLVBranches[i];
440 bsList.
remove(exclLVServers,
true,
true) ;
441 if (!bsList.
empty()) {
442 exclLVBranches.
remove(*branch,
true,
true) ;
451 for (std::size_t i=0; i < exclLVBranches.
size(); ++i) {
452 const RooAbsArg* branch = exclLVBranches[i];
454 exclLVBranches.
remove(*branch,
true,
true) ;
462 intDepList.
remove(exclLVServers) ;
463 intDepList.
add(exclLVBranches) ;
473 for (
auto arg : intDepList) {
475 anIntOKDepList.
add(*arg) ;
479 if (!anIntOKDepList.
empty()) {
480 oocxcoutI(&
function,Integration) <<
function.
GetName() <<
": Observables that function forcibly requires to be integrated internally " << anIntOKDepList << std::endl ;
489 auto serversToAdd = getValueAndShapeServers(
function, depList, rangeName);
490 fillAnIntOKDepList(
function, intDepList, anIntOKDepList, branchListVD);
533 std::unique_ptr<RooArgSet> argDepList{arg->getObservables(&intDepList)};
534 for (
const auto argDep : *argDepList) {
545 if (!exclLVServers.
empty()) {
547 intDepList.
remove(exclLVBranches) ;
548 intDepList.
add(exclLVServers) ;
566 auto argDeps = std::unique_ptr<RooArgSet>(arg->getObservables(&intDepList));
570 for (
const auto dep : *argDeps) {
621 for(
auto const& toAdd : serversToAdd) {
622 addServer(*toAdd.arg, !toAdd.isShapeServer, toAdd.isShapeServer);
640 for (
const auto leaf : leafSet) {
682 coutE(Integration) <<
ClassName() <<
"::" <<
GetName() <<
": failed to create valid integrand." << std::endl;
692 coutE(Integration) <<
ClassName() <<
"::" <<
GetName() <<
": failed to create valid integrator." << std::endl;
696 cxcoutI(NumIntegration) <<
"RooRealIntegral::init(" <<
GetName() <<
") using numeric integrator "
697 << integratorName <<
" to calculate Int" <<
_intList << std::endl ;
700 cxcoutI(NumIntegration) <<
"RooRealIntegral::init(" <<
GetName() <<
") evaluation requires " <<
_intList.
size() <<
"-D numeric integration step. Evaluation may be slow, sufficient numeric precision for fitting & minimization is not guaranteed" << std::endl ;
712 _valid(other._valid),
713 _respectCompSelect(other._respectCompSelect),
714 _sumList(
"!sumList", this, other._sumList),
715 _intList(
"!intList", this, other._intList),
716 _anaList(
"!anaList", this, other._anaList),
717 _jacList(
"!jacList", this, other._jacList),
718 _facList(
"!facList", this, other._facList),
719 _function(
"!func", this, other._function),
720 _iconfig(other._iconfig),
721 _sumCat(
"!sumCat", this, other._sumCat),
723 _intOperMode(other._intOperMode),
761 std::unique_ptr<RooArgSet> tmp;
767 tmp = std::make_unique<RooArgSet>();
770 newNormSet = tmp.get();
831 <<
":evaluate: cannot initialize numerical integrator" << std::endl;
863 cxcoutD(Tracing) <<
"RooRealIntegral::evaluate_analytic(" <<
GetName()
897 retVal *= argLV->numTypes() ;
910 ccxcoutD(Tracing) <<
"raw*fact = " << retVal << std::endl ;
928 jacProd *= arg->jacobian() ;
933 return std::abs(jacProd) ;
946 for (
const auto& nameIdx : *sumCat) {
979 bool mustReplaceAll,
bool nameChange,
bool isRecursive)
1002 _params = std::make_unique<RooArgSet>(
"params") ;
1043 std::stringstream errorMsg;
1044 errorMsg <<
"Only analytical integrals and 1D numeric integrals are supported for AD for class"
1046 coutE(Minimization) << errorMsg.str() << std::endl;
1047 throw std::runtime_error(errorMsg.str().c_str());
1059 std::stringstream ss;
1065 ss <<
"double " << paramsName <<
"[] = {";
1071 if (param->namePtr() == intVar.namePtr()) {
1073 }
else if (!param->isConstant()) {
1078 if (!args.empty()) {
1081 ss << args <<
"};\n";
1087 <<
" const int n = 1000; // number of sampling points\n"
1088 <<
" double d = " << intVar.getMax(
intRange()) <<
" - " << intVar.getMin(
intRange()) <<
";\n"
1089 <<
" double eps = d / n;\n"
1090 <<
" for (int i = 0; i < n; ++i) {\n"
1091 <<
" " << paramsName <<
"[" << intVarIdx <<
"] = " << intVar.getMin(
intRange()) <<
" + eps * i;\n"
1092 <<
" double tmpA = " << ctx.
buildCall(wrapper.funcName(), paramsName,
nullptr,
nullptr) <<
";\n"
1093 <<
" " << paramsName <<
"[" << intVarIdx <<
"] = " << intVar.getMin(
intRange()) <<
" + eps * (i + 1);\n"
1094 <<
" double tmpB = " << ctx.
buildCall(wrapper.funcName(), paramsName,
nullptr,
nullptr) <<
";\n"
1095 <<
" " << resName <<
" += (tmpA + tmpB) * 0.5 * eps;\n"
1120 os <<
"d[Ana]" << tmp <<
" ";
1126 if (!tmp2.
empty()) {
1127 os <<
" d[Num]" << tmp2 <<
" ";
1137 os <<
indent <<
"--- RooRealIntegral ---" << std::endl;
1138 os <<
indent <<
" Integrates ";
1142 os <<
indent <<
" operating mode is "
1144 os <<
indent <<
" Summed discrete args are " <<
_sumList << std::endl ;
1145 os <<
indent <<
" Numerically integrated args are " <<
_intList << std::endl;
1146 os <<
indent <<
" Analytically integrated args using mode " <<
_mode <<
" are " <<
_anaList << std::endl ;
1147 os <<
indent <<
" Arguments included in Jacobian are " <<
_jacList << std::endl ;
1148 os <<
indent <<
" Factorized arguments are " <<
_facList << std::endl ;
1149 os <<
indent <<
" Function normalization set " ;
1175std::unique_ptr<RooAbsArg>
std::string _rangeName
Name of range in which to calculate test statistic.
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
static void indent(ostringstream &buf, int indent_level)
static unsigned int total
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Common abstract base class for objects that represent a value and a "shape" in RooFit.
RooExpensiveObjectCache & expensiveObjectCache() const
TIterator Use servers() and begin()
bool dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=nullptr, bool valueOnly=false) const
Test whether we depend on (ie, are served by) any object in the specified collection.
void setOperMode(OperMode mode, bool recurseADirty=true)
Set the operation mode of this node.
RooFit::OwningPtr< RooArgSet > getParameters(const RooAbsData *data, bool stripDisconnected=true) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
virtual void setExpensiveObjectCache(RooExpensiveObjectCache &cache)
bool addOwnedComponents(const RooAbsCollection &comps)
Take ownership of the contents of 'comps'.
static void setDirtyInhibit(bool flag)
Control global dirty inhibit mode.
virtual std::unique_ptr< RooAbsArg > compileForNormSet(RooArgSet const &normSet, RooFit::Detail::CompileContext &ctx) const
bool dependsOnValue(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=nullptr) const
Check whether this object depends on values from an element in the serverList.
void addServer(RooAbsArg &server, bool valueProp=true, bool shapeProp=false, std::size_t refCount=1)
Register another RooAbsArg as a server to us, ie, declare that we depend on it.
virtual bool isDerived() const
Does value or shape of this arg depend on any other arg?
bool getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
bool isValueOrShapeDirtyAndClear() const
bool inhibitDirty() const
Delete watch flag.
void setProxyNormSet(const RooArgSet *nset)
Forward a change in the cached normalization argset to all the registered proxies.
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.
RefCountList_t _serverList
void leafNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=nullptr, bool recurseNonDerived=false) const
Fill supplied list with all leaf nodes of the arg tree, starting with ourself as top node.
bool isValueServer(const RooAbsArg &arg) const
Check if this is serving values to arg.
void treeNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=nullptr, bool doBranch=true, bool doLeaf=true, bool valueOnly=false, bool recurseNonDerived=false) const
Fill supplied list with nodes of the arg tree, following all server links, starting with ourself as t...
OperMode operMode() const
Query the operation mode of this node.
Abstract base class for objects that represent a discrete value that can be set from the outside,...
Abstract container object that can hold multiple RooAbsArg objects.
RooFit::UniqueId< RooAbsCollection > const & uniqueId() const
Returns a unique ID that is different for every instantiated RooAbsCollection.
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
virtual bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false)
Remove the specified argument from our list.
Storage_t const & get() const
Const access to the underlying stl container.
void sortTopologically()
Sort collection topologically: the servers of any RooAbsArg will be before that RooAbsArg in the coll...
bool contains(const RooAbsArg &var) const
Check if collection contains an argument with the same name as var.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
Int_t index(const RooAbsArg *arg) const
Returns index of given arg, or -1 if arg is not in the collection.
void assign(const RooAbsCollection &other) const
Sets the value, cache and constant attribute of any argument in our set that also appears in the othe...
Storage_t::size_type size() const
RooAbsArg * first() const
RooAbsArg * find(const char *name) const
Find object with given name in list.
void Print(Option_t *options=nullptr) const override
This method must be overridden when a class wants to print itself.
Abstract base class for objects that are lvalues, i.e.
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
virtual bool isJacobianOK(const RooArgSet &depList) const
Abstract base class for objects that represent a real value and implements functionality common to al...
RooFit::OwningPtr< RooAbsReal > createIntegral(const RooArgSet &iset, const RooCmdArg &arg1, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}) const
Create an object that represents the integral of the function over one or more observables listed in ...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
virtual Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=nullptr) const
Variant of getAnalyticalIntegral that is also passed the normalization set that should be applied to ...
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Structure printing.
bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursiveStep) override
Function that is called at the end of redirectServers().
virtual bool forceAnalyticalInt(const RooAbsArg &) const
double _value
Cache for current value of object.
double traceEval(const RooArgSet *set) const
Calculate current value of object, with error tracing wrapper.
virtual std::string buildCallToAnalyticIntegral(Int_t code, const char *rangeName, RooFit::Detail::CodeSquashContext &ctx) const
This function defines the analytical integral translation for the class.
RooFit::UniqueId< RooArgSet >::Value_t _lastNormSetId
Component selection flag for RooAbsPdf::plotCompOn.
virtual double analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=nullptr) const
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
const RooNumIntConfig * getIntegratorConfig() const
Return the numeric integration configuration used for this object.
virtual bool isBinnedDistribution(const RooArgSet &) const
Tests if the distribution is binned. Unless overridden by derived classes, this always returns false.
RooArgList is a container object that can hold multiple RooAbsArg objects.
bool _valueServer
If true contents is value server of owner.
bool isValueServer() const
Returns true of contents is value server of owner.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
void removeAll() override
Remove all argument inset using remove(const RooAbsArg&).
bool addOwned(RooAbsArg &var, bool silent=false) override
Overloaded RooCollection_t::addOwned() method insert object into owning set and registers object as s...
bool add(const RooAbsArg &var, bool valueServer, bool shapeServer, bool silent)
Overloaded RooCollection_t::add() method insert object into set and registers object as server to own...
Represents a constant real-valued object.
Minimal implementation of a TObject holding a double value.
bool registerObject(const char *ownerName, const char *objectName, TObject &cacheObject, const RooArgSet ¶ms)
Register object associated with given name and given associated parameters with given values in cache...
const TObject * retrieveObject(const char *name, TClass *tclass, const RooArgSet ¶ms)
Retrieve object from cache that was registered under given name with given parameters,...
A class to maintain the context for squashing of RooFit models into code.
std::string buildCall(std::string const &funcname, Args_t const &...args)
Build the code to call the function with name funcname, passing some arguments.
void addResult(RooAbsArg const *key, std::string const &value)
A function to save an expression that includes/depends on the result of the input node.
std::string getTmpVarName() const
Get a unique variable name to be used in the generated code.
std::string const & getResult(RooAbsArg const &arg)
Gets the result for the given node using the node name.
void addToGlobalScope(std::string const &str)
Adds the given string to the string block that will be emitted at the top of the squashed function.
A wrapper class to store a C++ function of type 'double (*)(double*, double*)'.
Registry for const char* names.
static const char * str(const TNamed *ptr)
Return C++ string corresponding to given TNamed pointer.
Holds the configuration parameters of the various numeric integrators used by RooRealIntegral.
std::unique_ptr< RooAbsIntegrator > createIntegrator(RooAbsFunc &func, const RooNumIntConfig &config, int ndim=0, bool isBinned=false) const
Construct a numeric integrator instance that operates on function 'func' and is configured with 'conf...
std::string getIntegratorName(RooAbsFunc &func, const RooNumIntConfig &config, int ndim=0, bool isBinned=false) const
static RooNumIntFactory & instance()
Static method returning reference to singleton instance of factory.
virtual void printStream(std::ostream &os, Int_t contents, StyleOption style, TString indent="") const
Print description of object on ostream, printing contents set by contents integer,...
Performs hybrid numerical/analytical integrals of RooAbsReal objects.
RooNumIntConfig * _iconfig
bool initNumIntegrator() const
(Re)Initialize numerical integration engine if necessary.
RooArgSet const * funcNormSet() const
RooFit::OwningPtr< RooAbsReal > createIntegral(const RooArgSet &iset, const RooArgSet *nset=nullptr, const RooNumIntConfig *cfg=nullptr, const char *rangeName=nullptr) const override
Create an object that represents the integral of the function over one or more observables listed in ...
void translate(RooFit::Detail::CodeSquashContext &ctx) const override
This function defines a translation for each RooAbsReal based object that can be used to express the ...
void setAllowComponentSelection(bool allow)
Set component selection to be allowed/forbidden.
RooRealProxy _function
Function being integrated.
RooArgSet intVars() const
RooSetProxy _intList
Set of continuous observables over which is integrated numerically.
virtual double sum() const
Perform summation of list of category dependents to be integrated.
RooSetProxy _facList
Set of observables on which function does not depends, which are integrated nevertheless.
std::unique_ptr< RooArgSet > _params
! cache for set of parameters
static void setCacheAllNumeric(Int_t ndim)
Global switch to cache all integral values that integrate at least ndim dimensions numerically.
IntOperMode _intOperMode
integration operation mode
bool _cacheNum
Cache integral if numeric.
double evaluate() const override
Perform the integration and return the result.
const RooArgSet & parameters() const
std::unique_ptr< RooAbsFunc > _numIntegrand
!
void addNumIntDep(RooAbsArg const &arg)
Sort numeric integration variables in summation and integration lists.
RooSetProxy _jacList
Set of lvalue observables over which is analytically integration that have a non-unit Jacobian.
bool isValidReal(double value, bool printError=false) const override
Check if current value is valid.
double getValV(const RooArgSet *set=nullptr) const override
Return value of object.
RooSetProxy _anaList
Set of observables over which is integrated/summed analytically.
bool _restartNumIntEngine
!
bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursive) override
Intercept server redirects and reconfigure internal object accordingly.
RooSetProxy _sumList
Set of discrete observable over which is summed numerically.
~RooRealIntegral() override
void printMetaArgs(std::ostream &os) const override
Customized printing of arguments of a RooRealIntegral to more intuitively reflect the contents of the...
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Print the state of this object to the specified output stream.
std::unique_ptr< RooAbsIntegrator > _numIntEngine
!
virtual double integrate() const
Perform hybrid numerical/analytical integration over all real-valued dependents.
virtual double jacobianProduct() const
Return product of jacobian terms originating from analytical integration.
static Int_t getCacheAllNumeric()
Return minimum dimensions of numeric integration for which values are cached.
static Int_t _cacheAllNDim
! Cache all integrals with given numeric dimension
RooArgSet const * actualFuncNormSet() const
std::unique_ptr< RooArgSet > _funcNormSet
Optional normalization set passed to function.
std::unique_ptr< RooAbsArg > compileForNormSet(RooArgSet const &normSet, RooFit::Detail::CompileContext &ctx) const override
void autoSelectDirtyMode()
Set appropriate cache operation mode for integral depending on cache operation mode of server objects...
const char * intRange() const
bool getAllowComponentSelection() const
Check if component selection is allowed.
Joins several RooAbsCategoryLValue objects into a single category.
bool setIndex(value_type index, bool printError=true) override
Set the value of the super category to the specified index.
bool inRange(const char *rangeName) const override
Check that all input category states are in the given range.
bool setArg(T &newRef)
Change object held in proxy into newRef.
const T & arg() const
Return reference to object held in proxy.
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
TString & Append(const char *cs)
std::string makeValidVarName(std::string const &in)
T * OwningPtr
An alias for raw pointers for indicating that the return type of a RooFit function is an owning point...
constexpr Value_t value() const
Return numerical value of ID.