#ifndef ROO_ABS_ANA_CONV_PDF
#define ROO_ABS_ANA_CONV_PDF
class TIterator  ;
#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooListProxy.h"
#include "RooDataSet.h"
#include "RooAICRegistry.h"
#include "RooObjCacheManager.h"
#include "RooAbsCacheElement.h"
class RooResolutionModel ;
class RooRealVar ;
class RooAbsGenContext ;
class RooConvGenContext ;
class RooAbsAnaConvPdf : public RooAbsPdf {
public:
  
  RooAbsAnaConvPdf() ;
  RooAbsAnaConvPdf(const char *name, const char *title, 
		   const RooResolutionModel& model, 
		   RooRealVar& convVar) ;
  RooAbsAnaConvPdf(const RooAbsAnaConvPdf& other, const char* name=0);
  virtual ~RooAbsAnaConvPdf();
  Int_t declareBasis(const char* expression, const RooArgList& params) ;
  virtual void printToStream(ostream& stream, PrintOption opt=Standard, TString indent= "") const ;
  
  inline Double_t getCoefNorm(Int_t coefIdx, const RooArgSet& nset, const char* rangeName) const { return getCoefNorm(coefIdx,&nset,rangeName) ; }
  Double_t getCoefNorm(Int_t coefIdx, const RooArgSet* nset=0, const char* rangeName=0) const ;
  
  virtual Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet, const char* rangeName=0) const ;
  virtual Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const ;
  
  
  virtual Int_t getCoefAnalyticalIntegral(Int_t coef, RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
  virtual Double_t coefAnalyticalIntegral(Int_t coef, Int_t code, const char* rangeName=0) const ;
  virtual Bool_t forceAnalyticalInt(const RooAbsArg& dep) const ; 
  
  virtual Double_t coefficient(Int_t basisIndex) const = 0 ;
  virtual RooArgSet* coefVars(Int_t coefIdx) const ;
  virtual Bool_t isDirectGenSafe(const RooAbsArg& arg) const ;
    
protected:
  Bool_t _isCopy ;
  virtual Double_t evaluate() const ;
  void makeCoefVarList(RooArgList&) const ;
  friend class RooConvGenContext ;
  Bool_t changeModel(const RooResolutionModel& newModel) ;
  virtual RooAbsGenContext* genContext(const RooArgSet &vars, const RooDataSet *prototype=0, 
                                       const RooArgSet* auxProto=0, Bool_t verbose= kFALSE) const ;
  
  
  RooResolutionModel* _model   ; 
  RooRealVar* _convVar ;         
  RooArgSet* parseIntegrationRequest(const RooArgSet& intSet, Int_t& coefCode, RooArgSet* analVars=0) const ;
  const RooRealVar* convVar() const ;  
  RooListProxy _convSet  ;             
  RooArgList _basisList ;              
  mutable RooArgSet* _convNormSet ;    
  mutable TIterator* _convSetIter ;    
  class CacheElem : public RooAbsCacheElement {
  public:
    virtual ~CacheElem() {} ;
    RooArgList containedArgs(Action) { 
      RooArgList l(_coefVarList) ; 
      l.add(_normList) ; 
      return l ; 
    }
    RooArgList _coefVarList ;
    RooArgList _normList ;
  } ;
  mutable RooObjCacheManager _coefNormMgr ; 
  mutable RooAICRegistry _codeReg ;   
  ClassDef(RooAbsAnaConvPdf,1) 
};
#endif
Last update: Thu Jan 17 08:43:25 2008
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.