npstat is hosted by Hepforge, IPPP Durham
NPStat  5.10.0
ScalableDensityConstructor1D.hh
Go to the documentation of this file.
1 #ifndef NPSI_SCALABLEDENSITYCONSTRUCTOR1D_HH_
2 #define NPSI_SCALABLEDENSITYCONSTRUCTOR1D_HH_
3 
4 /*!
5 // \file ScalableDensityConstructor1D.hh
6 //
7 // \brief Constructor of location-scale models for use with Minuit fitting
8 // functions
9 //
10 // Author: I. Volobouev
11 //
12 // October 2013
13 */
14 
15 #include <vector>
16 #include <stdexcept>
17 
19 
20 namespace npsi {
22  {
23  public:
24  inline explicit ScalableDensityConstructor1D(
25  const npstat::AbsDistribution1D& fcn)
26  : density_(0)
27  {
29  dynamic_cast<const npstat::AbsScalableDistribution1D*>(&fcn);
30  if (!d) throw std::invalid_argument(
31  "In npsi::ScalableDensityConstructor1D::constructor : "
32  "input distribution is not scalable");
33  density_ = d->clone();
34  }
35 
38  : density_(r.density_->clone()) {}
39 
42  {
43  if (&r != this)
44  {
45  delete density_;
46  density_ = 0;
47  density_ = r.density_->clone();
48  }
49  return *this;
50  }
51 
52  inline ~ScalableDensityConstructor1D() {delete density_;}
53 
54  inline const npstat::AbsDistribution1D& operator()(
55  const std::vector<double>& x) const
56  {
57  if (x.size() != 2U) throw std::invalid_argument(
58  "In npsi::ScalableDensityConstructor1D::operator() : "
59  "unexpected number of parameters");
60 
61  density_->setScale(x[1]);
62  density_->setLocation(x[0]);
63 
64  return *density_;
65  }
66 
67  private:
68  // Disable default constructor
70 
71  mutable npstat::AbsScalableDistribution1D* density_;
72  };
73 }
74 
75 #endif // NPSI_SCALABLEDENSITYCONSTRUCTOR1D_HH_
Interface definition for 1-d continuous statistical distributions.
Definition: ScalableDensityConstructor1D.hh:22
Definition: AbsDistribution1D.hh:165
void setLocation(const double v)
Definition: AbsDistribution1D.hh:186
void setScale(const double v)
Definition: AbsDistribution1D.hh:189
virtual AbsScalableDistribution1D * clone() const =0
Definition: fitCompositeJohnson.hh:16
Definition: AbsDistribution1D.hh:31