Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooGenProdProj.h
Go to the documentation of this file.
1/*
2 * Project: RooFit
3 *
4 * Copyright (c) 2023, CERN
5 *
6 * Redistribution and use in source and binary forms,
7 * with or without modification, are permitted according to the terms
8 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)
9 */
10
11#ifndef ROO_GEN_PROD_PROJ
12#define ROO_GEN_PROD_PROJ
13
14#include <RooAbsReal.h>
15#include <RooSetProxy.h>
16#include <RooListProxy.h>
17
18/// General form of projected integral of product of PDFs, utility class for RooProdPdf.
19class RooGenProdProj : public RooAbsReal {
20public:
21 RooGenProdProj(const char *name, const char *title, const RooArgSet &_prodSet, const RooArgSet &_intSet,
22 const RooArgSet &_normSet, const char *isetRangeName, const char *normRangeName = nullptr,
23 bool doFactorize = true);
24
25 RooGenProdProj(const RooGenProdProj &other, const char *name = nullptr);
26 TObject *clone(const char *newname) const override { return new RooGenProdProj(*this, newname); }
27
28private:
29 RooAbsReal *makeIntegral(const char *name, const RooArgSet &compSet, const RooArgSet &intSet, RooArgSet &saveSet,
30 const char *isetRangeName, bool doFactorize);
31
32 void operModeHook() override;
33
34 double evaluate() const override;
35 std::unique_ptr<RooArgSet> _compSetOwnedN; ///< Owner of numerator components
36 std::unique_ptr<RooArgSet> _compSetOwnedD; ///< Owner of denominator components
37 RooSetProxy _compSetN; ///< Set proxy for numerator components
38 RooSetProxy _compSetD; ///< Set proxy for denominator components
39 RooListProxy _intList; ///< Master integrals representing numerator and denominator
40 bool _haveD = false; ///< Do we have a denominator term?
41};
42
43#endif
RooCollectionProxy< RooArgList > RooListProxy
Definition RooAbsArg.h:53
RooCollectionProxy< RooArgSet > RooSetProxy
Definition RooAbsArg.h:52
RooArgSet * _normSet
Pointer to set with observables used for normalization.
char name[80]
Definition TGX11.cxx:110
Abstract base class for objects that represent a real value and implements functionality common to al...
Definition RooAbsReal.h:59
RooAbsReal()
coverity[UNINIT_CTOR] Default constructor
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:55
void operModeHook() override
Intercept cache mode operation changes and propagate them to the components.
double evaluate() const override
Calculate and return value of normalization projection.
RooAbsReal * makeIntegral(const char *name, const RooArgSet &compSet, const RooArgSet &intSet, RooArgSet &saveSet, const char *isetRangeName, bool doFactorize)
Utility function to create integral for product over certain observables.
RooSetProxy _compSetD
Set proxy for denominator components.
RooListProxy _intList
Master integrals representing numerator and denominator.
std::unique_ptr< RooArgSet > _compSetOwnedN
Owner of numerator components.
TObject * clone(const char *newname) const override
std::unique_ptr< RooArgSet > _compSetOwnedD
Owner of denominator components.
bool _haveD
Do we have a denominator term?
RooGenProdProj(const char *name, const char *title, const RooArgSet &_prodSet, const RooArgSet &_intSet, const RooArgSet &_normSet, const char *isetRangeName, const char *normRangeName=nullptr, bool doFactorize=true)
Constructor for a normalization projection of the product of p.d.f.s _prodSet integrated over _intSet...
RooSetProxy _compSetN
Set proxy for numerator components.
Mother of all ROOT objects.
Definition TObject.h:41