00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ROOPOISSON
00010 #define ROOPOISSON
00011
00012 #include "RooAbsPdf.h"
00013 #include "RooRealProxy.h"
00014 #include "RooCategoryProxy.h"
00015 #include "RooAbsReal.h"
00016 #include "RooAbsCategory.h"
00017
00018 class RooPoisson : public RooAbsPdf {
00019 public:
00020 RooPoisson() { _noRounding = kFALSE ; } ;
00021 RooPoisson(const char *name, const char *title, RooAbsReal& _x, RooAbsReal& _mean, Bool_t noRounding=kFALSE);
00022 RooPoisson(const RooPoisson& other, const char* name=0) ;
00023 virtual TObject* clone(const char* newname) const { return new RooPoisson(*this,newname); }
00024 inline virtual ~RooPoisson() { }
00025
00026 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
00027 Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;
00028
00029 Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const;
00030 void generateEvent(Int_t code);
00031
00032 void setNoRounding(bool flag = kTRUE){_noRounding = flag;}
00033 void protectNegativeMean(bool flag = kTRUE){_protectNegative = flag;}
00034
00035 protected:
00036
00037 RooRealProxy x ;
00038 RooRealProxy mean ;
00039 Bool_t _noRounding ;
00040 Bool_t _protectNegative ;
00041
00042 Double_t evaluate() const ;
00043 Double_t evaluate(Double_t k) const;
00044
00045
00046 private:
00047
00048 ClassDef(RooPoisson,3)
00049 };
00050
00051 #endif