Docs | All | Real | Category | PDF | DataSet | Plot | Container | Misc | Aux | User |
RooAddPdfclass description - source file - inheritance tree (.pdf) class RooAddPdf : public RooAbsPdf
protected: Data Membersprotected: Class DescriptionRooAddPdf 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 FunctionsTObject* 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)
|
Page maintained by Wouter Verkerke and David Kirkby |