npstat is hosted by Hepforge, IPPP Durham
NPStat  5.10.0
TransformedDistribution1D.hh
Go to the documentation of this file.
1 #ifndef NPSTAT_TRANSFORMEDDISTRIBUTION1D_HH_
2 #define NPSTAT_TRANSFORMEDDISTRIBUTION1D_HH_
3 
4 /*!
5 // \file TransformedDistribution1D.hh
6 //
7 // \brief Distribution in x for the given transform y(x) and distribution in y
8 //
9 // Author: I. Volobouev
10 //
11 // April 2015
12 */
13 
16 
17 namespace npstat {
19  {
20  public:
22  const AbsDistribution1D& distro);
23 
26 
27  inline virtual TransformedDistribution1D* clone() const
28  {return new TransformedDistribution1D(*this);}
29 
30  inline virtual ~TransformedDistribution1D() {cleanup();}
31 
32  inline AbsDistributionTransform1D& getTransform() {return *t_;}
33  inline const AbsDistributionTransform1D& getTransform() const
34  {return *t_;}
35 
36  inline AbsDistribution1D& getUnderlyingDistro() {return *d_;}
37  inline const AbsDistribution1D& getUnderlyingDistro() const
38  {return *d_;}
39 
40  /** Probability density */
41  virtual double density(double x) const;
42 
43  /** Cumulative distribution function */
44  virtual double cdf(double x) const;
45 
46  /** 1 - cdf, implementations should avoid subtractive cancellation */
47  virtual double exceedance(double x) const;
48 
49  /** The quantile function */
50  virtual double quantile(double x) const;
51 
52  //@{
53  /** Prototype needed for I/O */
54  inline virtual gs::ClassId classId() const {return gs::ClassId(*this);}
55  virtual bool write(std::ostream&) const;
56  //@}
57 
58  static inline const char* classname()
59  {return "npstat::TransformedDistribution1D";}
60  static inline unsigned version() {return 1;}
61  static TransformedDistribution1D* read(
62  const gs::ClassId& id, std::istream& is);
63 
64  protected:
65  virtual bool isEqual(const AbsDistribution1D&) const;
66 
67  private:
69  void cleanup();
70 
73  };
74 }
75 
76 #endif // NPSTAT_TRANSFORMEDDISTRIBUTION1D_HH_
Interface definition for 1-d continuous statistical distributions.
Interface definition for 1-d coordinate transformations used to build statistical distributions.
Definition: AbsDistributionTransform1D.hh:29
Definition: TransformedDistribution1D.hh:19
virtual double exceedance(double x) const
virtual double density(double x) const
virtual TransformedDistribution1D * clone() const
Definition: TransformedDistribution1D.hh:27
virtual double cdf(double x) const
virtual bool isEqual(const AbsDistribution1D &) const
virtual double quantile(double x) const
virtual gs::ClassId classId() const
Definition: TransformedDistribution1D.hh:54
Definition: AbsArrayProjector.hh:14
Definition: AbsDistribution1D.hh:31