Docs | All | Real | Category | PDF | DataSet | Plot | Container | Misc | Aux | User

RooFit Toolkit for Data Modeling
#include "RooAddPdf.hh"

RooAddPdf


class description - source file - inheritance tree (.pdf)

class RooAddPdf : public RooAbsPdf

Inheritance Chart:
TObject
<-
TNamed
RooPrintable
<-
RooAbsArg
<-
RooAbsReal
<-
RooAbsPdf
<-
RooAddPdf

    protected:
virtual RooAbsGenContext* genContext(const RooArgSet& vars, const RooDataSet* prototype = 0, const RooArgSet* auxProto = 0, Bool_t verbose = kFALSE) const virtual void operModeHook() virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) virtual void selectNormalization(const RooArgSet* depSet = 0, Bool_t force = kFALSE) virtual void selectNormalizationRange(const char* rangeName = "0", Bool_t force = kFALSE) void syncCoefProjList(const RooArgSet* nset, const RooArgSet* iset = 0, const char* rangeName = "0") const void syncSuppNormList(const RooArgSet* nset, const char* rangeName) const void updateCoefCache(const RooArgSet* nset, const RooArgSet* snset, const char* rangeName) const public:
RooAddPdf(const char* name, const char* title) RooAddPdf(const char* name, const char* title, RooAbsPdf& pdf1, RooAbsPdf& pdf2, RooAbsReal& coef1) RooAddPdf(const char* name, const char* title, const RooArgList& pdfList) RooAddPdf(const char* name, const char* title, const RooArgList& pdfList, const RooArgList& coefList) RooAddPdf(const RooAddPdf& other, const char* name = "0") virtual ~RooAddPdf() virtual Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName = "0") const virtual Bool_t checkObservables(const RooArgSet* nset) const static TClass* Class() virtual TObject* clone(const char* newname) const const RooArgList& coefList() const virtual Double_t evaluate() const virtual Double_t expectedEvents(const RooArgSet* nset) const virtual Double_t expectedEvents(const RooArgSet& nset) const virtual RooAbsPdf::ExtendMode extendMode() const void fixCoefNormalization(const RooArgSet& refCoefNorm) void fixCoefRange(const char* rangeName) virtual Bool_t forceAnalyticalInt(const RooAbsArg&) const virtual Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& numVars, const RooArgSet* normSet, const char* rangeName = "0") const virtual TClass* IsA() const const RooArgList& pdfList() const virtual void resetErrorCounters(Int_t resetValue = 10) virtual Bool_t selfNormalized() const virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members


    protected:
RooSetProxy _refCoefNorm TNamed* _refCoefRangeName Bool_t _projectCoefs RooNormListManager _projListMgr RooArgList* _pdfProjList RooNormListManager _suppListMgr RooArgSet* _lastSupNormSet Double_t* _coefCache RooAICRegistry _codeReg Registry of component analytical integration codes RooListProxy _pdfList List of component PDFs RooListProxy _coefList List of coefficients RooArgList* _snormList List of supplemental normalization factors TIterator* _pdfIter ! Iterator over PDF list TIterator* _coefIter ! Iterator over coefficient list Bool_t _haveLastCoef Flag indicating if last PDFs coefficient was supplied in the ctor Bool_t _allExtendable Flag indicating if all PDF components are extendable Int_t _coefErrCount ! Coefficient error counter

Class Description

 RooAddPdf is an efficient implementation of a sum of PDFs of the form

  c_1*PDF_1 + c_2*PDF_2 + ... c_n*PDF_n

 or

  c_1*PDF_1 + c_2*PDF_2 + ... (1-sum(c_1...c_n-1))*PDF_n

 The first form is for extended likelihood fits, where the
 expected number of events is Sum(i) c_i. The coefficients c_i
 can either be explicitly provided, or, if all components support
 extended likelihood fits, they can be calculated the contribution
 of each PDF to the total number of expected events.

 In the second form, the sum of the coefficients is enforced to be one,
 and the coefficient of the last PDF is calculated from that condition.

 RooAddPdf relies on each component PDF to be normalized and will perform
 no normalization other than calculating the proper last coefficient c_n, if requested.
 An (enforced) condition for this assuption is that each PDF_i is independent
 of each coefficient_i.



RooAddPdf(const char *name, const char *title) : RooAbsPdf(name,title), _refCoefNorm("refCoefNorm","Reference coefficient normalization set",this,kFALSE,kFALSE), _refCoefRangeName(0), _projectCoefs(kFALSE), _projListMgr(10), _pdfProjList(0), _suppListMgr(10), _lastSupNormSet(0), _codeReg(10), _pdfList("pdfList","List of PDFs",this), _coefList("coefList","List of coefficients",this), _haveLastCoef(kFALSE), _allExtendable(kTRUE)
 Dummy constructor

RooAddPdf(const char *name, const char *title, RooAbsPdf& pdf1, RooAbsPdf& pdf2, RooAbsReal& coef1) : RooAbsPdf(name,title), _refCoefNorm("refCoefNorm","Reference coefficient normalization set",this,kFALSE,kFALSE), _refCoefRangeName(0), _projectCoefs(kFALSE), _projListMgr(10), _pdfProjList(0), _suppListMgr(10), _lastSupNormSet(0), _codeReg(10), _pdfList("pdfProxyList","List of PDFs",this), _coefList("coefList","List of coefficients",this), _haveLastCoef(kFALSE), _allExtendable(kFALSE)
 Special constructor with two PDFs and one coefficient (most frequent use case)

RooAddPdf(const char *name, const char *title, const RooArgList& pdfList, const RooArgList& coefList) : RooAbsPdf(name,title), _refCoefNorm("refCoefNorm","Reference coefficient normalization set",this,kFALSE,kFALSE), _refCoefRangeName(0), _projectCoefs(kFALSE), _projListMgr(10), _pdfProjList(0), _suppListMgr(10), _lastSupNormSet(0), _codeReg(10), _pdfList("pdfProxyList","List of PDFs",this), _coefList("coefList","List of coefficients",this), _haveLastCoef(kFALSE), _allExtendable(kFALSE)
 Generic constructor from list of PDFs and list of coefficients.
 Each pdf list element (i) is paired with coefficient list element (i).
 The number of coefficients must be either equal to the number of PDFs,
 in which case extended MLL fitting is enabled, or be one less.

 All PDFs must inherit from RooAbsPdf. All coefficients must inherit from RooAbsReal

RooAddPdf(const char *name, const char *title, const RooArgList& pdfList) : RooAbsPdf(name,title), _refCoefNorm("refCoefNorm","Reference coefficient normalization set",this,kFALSE,kFALSE), _projectCoefs(kFALSE), _projListMgr(10), _pdfProjList(0), _suppListMgr(10), _lastSupNormSet(0), _codeReg(10), _pdfList("pdfProxyList","List of PDFs",this), _coefList("coefList","List of coefficients",this), _haveLastCoef(kFALSE), _allExtendable(kTRUE)
 Generic constructor from list of extended PDFs. There are no coefficients as the expected
 number of events from each components determine the relative weight of the PDFs.

 All PDFs must inherit from RooAbsPdf.

RooAddPdf(const RooAddPdf& other, const char* name) : RooAbsPdf(other,name), _refCoefNorm("refCoefNorm",this,other._refCoefNorm), _refCoefRangeName((TNamed*)other._refCoefRangeName), _projectCoefs(other._projectCoefs), _projListMgr(other._projListMgr), _pdfProjList(0), _suppListMgr(other._projListMgr), _lastSupNormSet(0), _codeReg(other._codeReg), _pdfList("pdfProxyList",this,other._pdfList), _coefList("coefList",this,other._coefList), _haveLastCoef(other._haveLastCoef), _allExtendable(other._allExtendable)
 Copy constructor

~RooAddPdf()
 Destructor

void fixCoefNormalization(const RooArgSet& refCoefNorm)

void fixCoefRange(const char* rangeName)

void syncCoefProjList(const RooArgSet* nset, const RooArgSet* iset, const char* rangeName) const
    cout << "syncCoefProjList called rangeName = " << (rangeName?rangeName:"<null>") << endl ;

void syncSuppNormList(const RooArgSet* nset, const char* /*rangeName*/) const
 Update the list of supplemental normalization objects

void updateCoefCache(const RooArgSet* nset, const RooArgSet* snset, const char* rangeName) const
   cout << "RAP::updateCC rangeName = " << (rangeName?rangeName:"<null>") << endl ;

Double_t evaluate() const
 Calculate the current value

void resetErrorCounters(Int_t resetValue)
 Reset error counter to given value, limiting the number
 of future error messages for this pdf to 'resetValue'

Bool_t checkObservables(const RooArgSet* nset) const
 Check if PDF is valid for given normalization set.
 Coeffient and PDF must be non-overlapping, but pdf-coefficient
 pairs may overlap each other

Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet, const char* rangeName) const
 Determine which part (if any) of given integral can be performed analytically.
 If any analytical integration is possible, return integration scenario code

 RooAddPdf queries each component PDF for its analytical integration capability of the requested
 set ('allVars'). It finds the largest common set of variables that can be integrated
 by all components. If such a set exists, it reconfirms that each component is capable of
 analytically integrating the common set, and combines the components individual integration
 codes into a single integration code valid for RooAddPdf.

Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName) const
 Return analytical integral defined by given scenario code

Double_t expectedEvents(const RooArgSet* nset) const
 Return the number of expected events, which is either the sum of all coefficients
 or the sum of the components extended terms

void selectNormalization(const RooArgSet* depSet, Bool_t force)
 Ignore automatic adjustments if an explicit reference normalization has been selected

void selectNormalizationRange(const char* rangeName, Bool_t force)
 Ignore automatic adjustments if an explicit reference range has been selected

RooAbsGenContext* genContext(const RooArgSet &vars, const RooDataSet *prototype, const RooArgSet* auxProto, Bool_t verbose) const

Bool_t redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t /*isRecursive*/)

void operModeHook()



Inline Functions


                     TObject* clone(const char* newname) const
                       Bool_t forceAnalyticalInt(const RooAbsArg&) const
                       Bool_t selfNormalized() const
        RooAbsPdf::ExtendMode extendMode() const
                     Double_t expectedEvents(const RooArgSet& nset) const
            const RooArgList& pdfList() const
            const RooArgList& coefList() const
                      TClass* Class()
                      TClass* IsA() const
                         void ShowMembers(TMemberInspector& insp, char* parent)
                         void Streamer(TBuffer& b)
                         void StreamerNVirtual(TBuffer& b)
Last CVS Update: v 1.71 2005/12/01 16:10:20 wverkerke Top
Copyright © 2000-2005 University of California, Stanford University

Page maintained by Wouter Verkerke and David Kirkby

SourceForge.net Logo