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
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
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:55
General form of projected integral of product of PDFs, utility class for RooProdPdf.
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?
RooSetProxy _compSetN
Set proxy for numerator components.
Mother of all ROOT objects.
Definition TObject.h:41