/***************************************************************************** 
  * Project: RooFit                                                           * 
  * @(#)root/roofit:$Id$   *
  *                                                                           * 
  * RooFit NonCentralChisquare PDF                                            *
  *                                                                           * 
  * Author: Kyle Cranmer                                                      *
  *                                                                           * 
  *****************************************************************************/ 

#ifndef ROO_NONCENTRALCHISQUARE
#define ROO_NONCENTRALCHISQUARE

#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooCategoryProxy.h"
#include "RooAbsReal.h"
#include "RooAbsCategory.h"
 
class RooNonCentralChiSquare : public RooAbsPdf {
public:
   RooNonCentralChiSquare() {} ; 
   RooNonCentralChiSquare(const char *name, const char *title,
                          RooAbsReal& _x,
                          RooAbsReal& _k,
                          RooAbsReal& _lambda);
   RooNonCentralChiSquare(const RooNonCentralChiSquare& other, const char* name=0) ;
   virtual TObject* clone(const char* newname) const { return new RooNonCentralChiSquare(*this,newname); }
   inline virtual ~RooNonCentralChiSquare() { }

   void SetErrorTolerance(Double_t t) {fErrorTol = t;}
   void SetMaxIters(Int_t mi) {fMaxIters = mi;}
   void SetForceSum(Bool_t flag); 


   Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
   Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;

protected:

   RooRealProxy x ;
   RooRealProxy k ;
   RooRealProxy lambda ;
   Double_t fErrorTol;
   Int_t fMaxIters;
   Bool_t fForceSum;
   mutable Bool_t fHasIssuedConvWarning;
   mutable Bool_t fHasIssuedSumWarning;
   Double_t evaluate() const ;

private:

   ClassDef(RooNonCentralChiSquare,1) // non-central chisquare pdf
};
 
#endif
 RooNonCentralChiSquare.h:1
 RooNonCentralChiSquare.h:2
 RooNonCentralChiSquare.h:3
 RooNonCentralChiSquare.h:4
 RooNonCentralChiSquare.h:5
 RooNonCentralChiSquare.h:6
 RooNonCentralChiSquare.h:7
 RooNonCentralChiSquare.h:8
 RooNonCentralChiSquare.h:9
 RooNonCentralChiSquare.h:10
 RooNonCentralChiSquare.h:11
 RooNonCentralChiSquare.h:12
 RooNonCentralChiSquare.h:13
 RooNonCentralChiSquare.h:14
 RooNonCentralChiSquare.h:15
 RooNonCentralChiSquare.h:16
 RooNonCentralChiSquare.h:17
 RooNonCentralChiSquare.h:18
 RooNonCentralChiSquare.h:19
 RooNonCentralChiSquare.h:20
 RooNonCentralChiSquare.h:21
 RooNonCentralChiSquare.h:22
 RooNonCentralChiSquare.h:23
 RooNonCentralChiSquare.h:24
 RooNonCentralChiSquare.h:25
 RooNonCentralChiSquare.h:26
 RooNonCentralChiSquare.h:27
 RooNonCentralChiSquare.h:28
 RooNonCentralChiSquare.h:29
 RooNonCentralChiSquare.h:30
 RooNonCentralChiSquare.h:31
 RooNonCentralChiSquare.h:32
 RooNonCentralChiSquare.h:33
 RooNonCentralChiSquare.h:34
 RooNonCentralChiSquare.h:35
 RooNonCentralChiSquare.h:36
 RooNonCentralChiSquare.h:37
 RooNonCentralChiSquare.h:38
 RooNonCentralChiSquare.h:39
 RooNonCentralChiSquare.h:40
 RooNonCentralChiSquare.h:41
 RooNonCentralChiSquare.h:42
 RooNonCentralChiSquare.h:43
 RooNonCentralChiSquare.h:44
 RooNonCentralChiSquare.h:45
 RooNonCentralChiSquare.h:46
 RooNonCentralChiSquare.h:47
 RooNonCentralChiSquare.h:48
 RooNonCentralChiSquare.h:49
 RooNonCentralChiSquare.h:50
 RooNonCentralChiSquare.h:51
 RooNonCentralChiSquare.h:52
 RooNonCentralChiSquare.h:53
 RooNonCentralChiSquare.h:54
 RooNonCentralChiSquare.h:55
 RooNonCentralChiSquare.h:56