/usr/include/root/RooAddPdf.h is in libroot-roofit-dev 5.34.30-0ubuntu8.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | /*****************************************************************************
* Project: RooFit *
* Package: RooFitCore *
* File: $Id: RooAddPdf.h,v 1.46 2007/07/12 20:30:28 wouter Exp $
* Authors: *
* WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
* DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
* *
* Copyright (c) 2000-2005, Regents of the University of California *
* and Stanford University. All rights reserved. *
* *
* Redistribution and use in source and binary forms, *
* with or without modification, are permitted according to the terms *
* listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
*****************************************************************************/
#ifndef ROO_ADD_PDF
#define ROO_ADD_PDF
#include "RooAbsPdf.h"
#include "RooListProxy.h"
#include "RooSetProxy.h"
#include "RooAICRegistry.h"
#include "RooNormSetCache.h"
#include "RooNameSet.h"
#include "RooCacheManager.h"
#include "RooObjCacheManager.h"
#include "RooNameReg.h"
class RooAddPdf : public RooAbsPdf {
public:
RooAddPdf() ;
RooAddPdf(const char *name, const char *title=0);
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, Bool_t recursiveFraction=kFALSE) ;
RooAddPdf(const RooAddPdf& other, const char* name=0) ;
virtual TObject* clone(const char* newname) const { return new RooAddPdf(*this,newname) ; }
virtual ~RooAddPdf() ;
Double_t evaluate() const ;
virtual Bool_t checkObservables(const RooArgSet* nset) const ;
virtual Bool_t forceAnalyticalInt(const RooAbsArg& /*dep*/) const {
// Force RooRealIntegral to offer all observables for internal integration
return kTRUE ;
}
Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& numVars, const RooArgSet* normSet, const char* rangeName=0) const ;
Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const ;
virtual Bool_t selfNormalized() const {
// P.d.f is self normalized
return kTRUE ;
}
virtual ExtendMode extendMode() const {
// Return extended mode capabilities
return ((_haveLastCoef&&!_recursive) || _allExtendable) ? MustBeExtended : CanNotBeExtended;
}
virtual Double_t expectedEvents(const RooArgSet* nset) const ;
virtual Double_t expectedEvents(const RooArgSet& nset) const {
// Return expected number of events for extended likelihood calculation
// which is the sum of all coefficients
return expectedEvents(&nset) ;
}
const RooArgList& pdfList() const {
// Return list of component p.d.fs
return _pdfList ;
}
const RooArgList& coefList() const {
// Return list of coefficients of component p.d.f.s
return _coefList ;
}
void fixCoefNormalization(const RooArgSet& refCoefNorm) ;
void fixCoefRange(const char* rangeName) ;
const RooArgSet& getCoefNormalization() const { return _refCoefNorm ; }
const char* getCoefRange() const { return _refCoefRangeName?RooNameReg::str(_refCoefRangeName):"" ; }
virtual void resetErrorCounters(Int_t resetValue=10) ;
virtual std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi) const ;
virtual std::list<Double_t>* binBoundaries(RooAbsRealLValue& /*obs*/, Double_t /*xlo*/, Double_t /*xhi*/) const ;
Bool_t isBinnedDistribution(const RooArgSet& obs) const ;
void printMetaArgs(std::ostream& os) const ;
virtual CacheMode canNodeBeCached() const { return RooAbsArg::NotAdvised ; } ;
virtual void setCacheAndTrackHints(RooArgSet&) ;
protected:
virtual void selectNormalization(const RooArgSet* depSet=0, Bool_t force=kFALSE) ;
virtual void selectNormalizationRange(const char* rangeName=0, Bool_t force=kFALSE) ;
mutable RooSetProxy _refCoefNorm ; // Reference observable set for coefficient interpretation
mutable TNamed* _refCoefRangeName ; // Reference range name for coefficient interpreation
Bool_t _projectCoefs ; // If true coefficients need to be projected for use in evaluate()
mutable Double_t* _coefCache ; //! Transiet cache with transformed values of coefficients
class CacheElem : public RooAbsCacheElement {
public:
virtual ~CacheElem() {} ;
RooArgList _suppNormList ; // Supplemental normalization list
Bool_t _needSupNorm ; // Does the above list contain any non-unit entries?
RooArgList _projList ; // Projection integrals to be multiplied with coefficients
RooArgList _suppProjList ; // Projection integrals to be multiplied with coefficients for supplemental normalization terms
RooArgList _refRangeProjList ; // Range integrals to be multiplied with coefficients (reference range)
RooArgList _rangeProjList ; // Range integrals to be multiplied with coefficients (target range)
virtual RooArgList containedArgs(Action) ;
} ;
mutable RooObjCacheManager _projCacheMgr ; // Manager of cache with coefficient projections and transformations
CacheElem* getProjCache(const RooArgSet* nset, const RooArgSet* iset=0, const char* rangeName=0) const ;
void updateCoefficients(CacheElem& cache, const RooArgSet* nset) const ;
friend class RooAddGenContext ;
virtual RooAbsGenContext* genContext(const RooArgSet &vars, const RooDataSet *prototype=0,
const RooArgSet* auxProto=0, Bool_t verbose= kFALSE) const ;
mutable RooAICRegistry _codeReg ; //! Registry of component analytical integration codes
RooListProxy _pdfList ; // List of component PDFs
RooListProxy _coefList ; // List of coefficients
mutable 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
Bool_t _recursive ; // Flag indicating is fractions are treated recursively
mutable Int_t _coefErrCount ; //! Coefficient error counter
private:
ClassDef(RooAddPdf,3) // PDF representing a sum of PDFs
};
#endif
|