26 class RooFFTConvPdf :
public RooAbsCachedPdf {
32 RooFFTConvPdf(
const char *name,
const char *title, RooRealVar& convVar, RooAbsPdf& pdf1, RooAbsPdf& pdf2, Int_t ipOrder=2);
33 RooFFTConvPdf(
const char *name,
const char *title, RooAbsReal& pdfConvVar, RooRealVar& convVar, RooAbsPdf& pdf1, RooAbsPdf& pdf2, Int_t ipOrder=2);
34 RooFFTConvPdf(
const RooFFTConvPdf& other,
const char* name=0) ;
35 virtual TObject* clone(
const char* newname)
const {
return new RooFFTConvPdf(*
this,newname); }
36 virtual ~RooFFTConvPdf() ;
38 void setShift(Double_t val1, Double_t val2) { _shift1 = val1 ; _shift2 = val2 ; }
39 void setCacheObservables(
const RooArgSet& obs) { _cacheObs.removeAll() ; _cacheObs.add(obs) ; }
40 const RooArgSet& cacheObservables()
const {
return _cacheObs ; }
42 Double_t bufferFraction()
const {
48 enum BufStrat { Extend=0, Mirror=1, Flat=2 } ;
49 BufStrat bufferStrategy()
const {
56 void setBufferStrategy(BufStrat bs) ;
57 void setBufferFraction(Double_t frac) ;
59 void printMetaArgs(std::ostream& os)
const ;
62 virtual Int_t getMaxVal(
const RooArgSet& vars)
const {
return _pdf1.arg().getMaxVal(vars) ; }
63 virtual Double_t maxVal(Int_t code)
const {
return _pdf1.arg().maxVal(code) ; }
69 RooRealProxy _xprime ;
75 Bool_t redirectServersHook(
const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
77 Double_t* scanPdf(RooRealVar& obs, RooAbsPdf& pdf,
const RooDataHist& hist,
const RooArgSet& slicePos, Int_t& N, Int_t& N2, Int_t& zeroBin, Double_t shift)
const ;
79 class FFTCacheElem :
public PdfCacheElem {
81 FFTCacheElem(
const RooFFTConvPdf&
self,
const RooArgSet* nset) ;
84 virtual RooArgList containedArgs(Action) ;
86 TVirtualFFT* fftr2c1 ;
87 TVirtualFFT* fftr2c2 ;
90 RooAbsPdf* pdf1Clone ;
91 RooAbsPdf* pdf2Clone ;
93 RooAbsBinning* histBinning ;
94 RooAbsBinning* scanBinning ;
98 friend class FFTCacheElem ;
100 virtual Double_t evaluate()
const { RooArgSet dummy(_x.arg()) ;
return getVal(&dummy) ; } ;
101 virtual const char* inputBaseName()
const ;
102 virtual RooArgSet* actualObservables(
const RooArgSet& nset)
const ;
103 virtual RooArgSet* actualParameters(
const RooArgSet& nset)
const ;
104 virtual RooAbsArg& pdfObservable(RooAbsArg& histObservable)
const ;
105 virtual void fillCacheObject(PdfCacheElem& cache)
const ;
106 void fillCacheSlice(FFTCacheElem& cache,
const RooArgSet& slicePosition)
const ;
108 virtual PdfCacheElem* createCache(
const RooArgSet* nset)
const ;
109 virtual TString histNameSuffix()
const ;
118 virtual RooAbsGenContext* genContext(
const RooArgSet &vars,
const RooDataSet *prototype=0,
119 const RooArgSet* auxProto=0, Bool_t verbose= kFALSE)
const ;
121 friend class RooConvGenContext ;
122 RooSetProxy _cacheObs ;
126 void prepareFFTBinning(RooRealVar& convVar)
const;
128 ClassDef(RooFFTConvPdf,1)