#ifndef ROO_REAL_INTEGRAL
#define ROO_REAL_INTEGRAL
#include "RooAbsReal.h"
#include "RooArgSet.h"
#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooSetProxy.h"
class RooArgSet ;
class TH1F ;
class RooAbsCategory ;
class RooRealVar ;
class RooAbsIntegrator ;
class RooNumIntConfig ;
class RooRealIntegral : public RooAbsReal {
public:
  
  inline RooRealIntegral() : _valid(kFALSE),_numIntEngine(0),_numIntegrand(0) { }
  RooRealIntegral(const char *name, const char *title, const RooAbsReal& function, const RooArgSet& depList,
		  const RooArgSet* funcNormSet=0, const RooNumIntConfig* config=0, const char* rangeName=0) ;
  RooRealIntegral(const RooRealIntegral& other, const char* name=0);
  virtual TObject* clone(const char* newname) const { return new RooRealIntegral(*this,newname); }
  virtual ~RooRealIntegral();
  Bool_t isValid() const { return _valid; }
  virtual void printToStream(ostream& stream, PrintOption opt=Standard, TString indent="") const ;
protected:
  mutable Bool_t _valid;
  enum OperMode { Hybrid, Analytic, PassThrough } ;
  
  Bool_t initNumIntegrator() const;
  void autoSelectDirtyMode() ;
  virtual Double_t sum() const ;
  virtual Double_t integrate() const ;
  virtual Double_t jacobianProduct() const ;
  
  Double_t evaluate() const ;
  virtual Bool_t isValidReal(Double_t value, Bool_t printError=kFALSE) const ;
  Bool_t servesExclusively(const RooAbsArg* server,const RooArgSet& exclLVBranches) const ;
  virtual Bool_t redirectServersHook(const RooAbsCollection& newServerList, 
				     Bool_t mustReplaceAll, Bool_t nameChange, Bool_t isRecursive) ;
  
  mutable RooSetProxy _sumList ;
  mutable RooSetProxy _intList ;
  mutable RooSetProxy _anaList ;
  mutable RooSetProxy _jacList ;
  mutable RooSetProxy _facList ;
  mutable RooArgSet   _facListOwned ;
  TIterator*          _facListIter ; 
  TIterator*          _jacListIter ; 
  RooRealProxy       _function ; 
  RooArgSet*      _funcNormSet ;
  RooNumIntConfig* _iconfig ;
  
  void prepareACleanFunc() const ;
  void restoreACleanFunc() const ;
  mutable RooArgSet _funcBranchList ;
  mutable RooArgSet _funcACleanBranchList ;
  TIterator*        _funcACleanBranchIter ; 
  Int_t _mode ;
  OperMode _operMode ;
  mutable Bool_t _restartNumIntEngine ; 
  mutable RooAbsIntegrator* _numIntEngine ;  
  mutable RooAbsFunc *_numIntegrand;         
  TNamed* _rangeName ; 
  ClassDef(RooRealIntegral,1) 
};
#endif
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.