00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ROO_NONCENTRALCHISQUARE
00012 #define ROO_NONCENTRALCHISQUARE
00013
00014 #include "RooAbsPdf.h"
00015 #include "RooRealProxy.h"
00016 #include "RooCategoryProxy.h"
00017 #include "RooAbsReal.h"
00018 #include "RooAbsCategory.h"
00019
00020 class RooNonCentralChiSquare : public RooAbsPdf {
00021 public:
00022 RooNonCentralChiSquare() {} ;
00023 RooNonCentralChiSquare(const char *name, const char *title,
00024 RooAbsReal& _x,
00025 RooAbsReal& _k,
00026 RooAbsReal& _lambda);
00027 RooNonCentralChiSquare(const RooNonCentralChiSquare& other, const char* name=0) ;
00028 virtual TObject* clone(const char* newname) const { return new RooNonCentralChiSquare(*this,newname); }
00029 inline virtual ~RooNonCentralChiSquare() { }
00030
00031 void SetErrorTolerance(Double_t t) {fErrorTol = t;}
00032 void SetMaxIters(Int_t mi) {fMaxIters = mi;}
00033 void SetForceSum(Bool_t flag);
00034
00035
00036 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
00037 Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;
00038
00039 protected:
00040
00041 RooRealProxy x ;
00042 RooRealProxy k ;
00043 RooRealProxy lambda ;
00044 Double_t fErrorTol;
00045 Int_t fMaxIters;
00046 Bool_t fForceSum;
00047 mutable Bool_t fHasIssuedConvWarning;
00048 mutable Bool_t fHasIssuedSumWarning;
00049 Double_t evaluate() const ;
00050
00051 private:
00052
00053 ClassDef(RooNonCentralChiSquare,1)
00054 };
00055
00056 #endif