library: libRooFit #include "RooAddPdf.h"

# 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 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 = 0) 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(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 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
                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 update: Tue Jun 28 18:10:47 2005
Copyright (c) 2000-2005, Regents of the University of California *