Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
RooPoisson.h
Go to the documentation of this file.
1  /*****************************************************************************
2  * Project: RooFit *
3  * *
4  * Simple Poisson PDF
5  * author: Kyle Cranmer <cranmer@cern.ch>
6  * *
7  *****************************************************************************/
8 
9 #ifndef ROOPOISSON
10 #define ROOPOISSON
11 
12 #include "RooAbsPdf.h"
13 #include "RooRealProxy.h"
14 #include "RooCategoryProxy.h"
15 #include "RooAbsReal.h"
16 #include "RooAbsCategory.h"
17 #include "RooTrace.h"
18 
19 class RooPoisson : public RooAbsPdf {
20 public:
21  RooPoisson() { _noRounding = kFALSE ; } ;
22  RooPoisson(const char *name, const char *title, RooAbsReal& _x, RooAbsReal& _mean, Bool_t noRounding=kFALSE);
23  RooPoisson(const RooPoisson& other, const char* name=0) ;
24  virtual TObject* clone(const char* newname) const override { return new RooPoisson(*this,newname); }
25  inline virtual ~RooPoisson() { }
26 
27  Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const override;
28  Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const override;
29 
30  Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const override;
31  void generateEvent(Int_t code) override;
32 
33  void setNoRounding(bool flag = kTRUE) {_noRounding = flag;}
34  void protectNegativeMean(bool flag = kTRUE) {_protectNegative = flag;}
35 
36 protected:
37 
38  RooRealProxy x ;
39  RooRealProxy mean ;
40  Bool_t _noRounding ;
41  Bool_t _protectNegative ;
42 
43  Double_t evaluate() const override;
44  RooSpan<double> evaluateBatch(std::size_t begin, std::size_t batchSize) const override;
45 
46  ClassDefOverride(RooPoisson,3) // A Poisson PDF
47 };
48 
49 #endif