npstat is hosted by Hepforge, IPPP Durham
NPStat  5.10.0
ExpTiltedDistribution1D.hh
Go to the documentation of this file.
1 #ifndef NPSTAT_EXPTILTEDDISTRIBUTION1D_HH_
2 #define NPSTAT_EXPTILTEDDISTRIBUTION1D_HH_
3 
4 /*!
5 // \file ExpTiltedDistribution1D.hh
6 //
7 // \brief Exponentially tilted distribution. Only density calculation
8 // is currently implemented but not cdf, quantile, I/O, etc.
9 //
10 // Author: I. Volobouev
11 //
12 // December 2019
13 */
14 
16 #include "npstat/stat/AbsCGF1D.hh"
17 
18 namespace npstat {
20  {
21  public:
22  /**
23  // The cumulant generating function argument, "cgf", should
24  // be the CGF of the distribution "distro"
25  */
27  const AbsDistribution1D& distro,
28  double s_tilt);
31 
32  inline virtual ExpTiltedDistribution1D* clone() const
33  {return new ExpTiltedDistribution1D(*this);}
34 
35  inline virtual ~ExpTiltedDistribution1D() {cleanup();}
36 
37  /** Set the s-tilt parameter */
38  void setTilt(double s);
39 
40  inline double tilt() const {return s_;}
41  inline double Ks() const {return Ks_;}
42 
43  inline AbsCGF1D& getCGF() {return *cgf_;}
44  inline const AbsCGF1D& getCGF() const {return *cgf_;}
45 
46  inline AbsDistribution1D& getUnderlyingDistro() {return *d_;}
47  inline const AbsDistribution1D& getUnderlyingDistro() const
48  {return *d_;}
49 
50  inline double mean() const {return cgf_->derivative(1U, s_);}
51  inline double variance() const {return cgf_->derivative(2U, s_);}
52 
53  /** Probability density */
54  virtual double density(double x) const;
55 
56  /** Cumulative distribution function */
57  virtual double cdf(double x) const;
58 
59  /** 1 - cdf, implementations should avoid subtractive cancellation */
60  virtual double exceedance(double x) const;
61 
62  /** The quantile function */
63  virtual double quantile(double x) const;
64 
65  /** Prototype needed for I/O */
66  inline virtual gs::ClassId classId() const {return gs::ClassId(*this);}
67  virtual bool write(std::ostream&) const;
68  //@}
69 
70  static inline const char* classname()
71  {return "npstat::ExpTiltedDistribution1D";}
72  static inline unsigned version() {return 1;}
73  static ExpTiltedDistribution1D* read(
74  const gs::ClassId& id, std::istream& is);
75 
76  protected:
77  virtual bool isEqual(const AbsDistribution1D&) const;
78 
79  private:
81  void cleanup();
82 
83  AbsCGF1D* cgf_;
85  double s_;
86  double Ks_;
87  };
88 }
89 
90 #endif // NPSTAT_EXPTILTEDDISTRIBUTION1D_HH_
Interface definition for univariate cumulant generating functions.
Interface definition for 1-d continuous statistical distributions.
Definition: ExpTiltedDistribution1D.hh:20
virtual gs::ClassId classId() const
Definition: ExpTiltedDistribution1D.hh:66
virtual double exceedance(double x) const
virtual double density(double x) const
ExpTiltedDistribution1D(const AbsCGF1D &cgf, const AbsDistribution1D &distro, double s_tilt)
virtual bool isEqual(const AbsDistribution1D &) const
virtual double cdf(double x) const
virtual double quantile(double x) const
virtual ExpTiltedDistribution1D * clone() const
Definition: ExpTiltedDistribution1D.hh:32
Definition: AbsArrayProjector.hh:14
Definition: AbsCGF1D.hh:18
virtual double derivative(unsigned order, double s) const =0
Definition: AbsDistribution1D.hh:31