67 const RooArgSet& _normSet,
const char* isetRangeName,
const char* normRangeName,
Bool_t doFactorize) :
71 _compSetN(
"compSetN",
"Set of integral components owned by numerator",this,
kFALSE),
72 _compSetD(
"compSetD",
"Set of integral components owned by denominator",this,
kFALSE),
73 _intList(
"intList",
"List of integrals",this,
kTRUE),
111 _compSetN(
"compSetN",
"Set of integral components owned by numerator",this),
112 _compSetD(
"compSetD",
"Set of integral components owned by denominator",this),
113 _intList(
"intList",
"List of integrals",this)
184 for (
const auto arg : intSet) {
185 auto count = std::count_if(compSet.
begin(), compSet.
end(), [arg](
const RooAbsArg* pdfAsArg){
186 auto pdf = static_cast<const RooAbsPdf*>(pdfAsArg);
187 return (pdf->dependsOn(*arg));
191 anaIntSet.
add(*arg) ;
197 numIntSet.
add(intSet) ;
199 for (
const auto pdfAsArg : compSet) {
200 auto pdf =
static_cast<const RooAbsPdf*
>(pdfAsArg);
202 if (doFactorize && pdf->dependsOn(anaIntSet)) {
204 Int_t code = pdf->getAnalyticalIntegralWN(anaIntSet,anaSet,0,isetRangeName) ;
214 numIntSet.
remove(anaSet) ;
243 prodSet.
snapshot(prodSetClone,
false);
245 auto prod = std::make_unique<RooProduct>(prodName,
"product", prodSetClone);
250 std::unique_ptr<RooAbsReal> integral{prod->createIntegral(numIntSet,isetRangeName)};
252 auto ret = integral.get();
255 saveSet.
addOwned(std::move(prodSetClone));
257 saveSet.
addOwned(std::move(integral)) ;
char * Form(const char *fmt,...)
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
RooExpensiveObjectCache & expensiveObjectCache() const
virtual void setExpensiveObjectCache(RooExpensiveObjectCache &cache)
void setOperMode(OperMode mode, Bool_t recurseADirty=kTRUE)
Set the operation mode of this node.
void removeServer(RooAbsArg &server, Bool_t force=kFALSE)
Unregister another RooAbsArg as a server to us, ie, declare that we no longer depend on its value and...
TIterator * serverIterator() const
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
const_iterator end() const
virtual Bool_t addOwned(RooAbsArg &var, Bool_t silent=kFALSE)
Add an argument and transfer the ownership to the collection.
RooAbsArg * first() const
const_iterator begin() const
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list.
TIterator * createIterator(Bool_t dir=kIterForward) const
TIterator-style iteration over contained elements.
RooAbsArg * find(const char *name) const
Find object with given name in list.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
RooAbsReal * createIntegral(const RooArgSet &iset, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
Create an object that represents the integral of the function over one or more observables listed in ...
Double_t getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
RooGenProdProj is an auxiliary class for RooProdPdf that calculates a general normalised projection o...
virtual ~RooGenProdProj()
Destructor.
RooGenProdProj()
Default constructor.
virtual void operModeHook()
Intercept cache mode operation changes and propagate them to the components.
Double_t evaluate() const
Calculate and return value of normalization projection.
RooArgSet * _compSetOwnedD
RooAbsReal * makeIntegral(const char *name, const RooArgSet &compSet, const RooArgSet &intSet, RooArgSet &saveSet, const char *isetRangeName, Bool_t doFactorize)
Utility function to create integral for product over certain observables.
RooArgSet * _compSetOwnedN
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE) override
Reimplementation of standard RooArgList::add()
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE) override
Overloaded RooArgSet::add() method inserts 'var' into set and registers 'var' as server to owner with...
Iterator abstract base class.
virtual TObject * Next()=0
virtual const char * GetName() const
Returns name of object.