APFEL 4.8.0
A PDF evolution library in C++
Loading...
Searching...
No Matches
distribution.h
Go to the documentation of this file.
1//
2// APFEL++ 2017
3//
4// Author: Valerio Bertone: valerio.bertone@cern.ch
5//
6
7#pragma once
8
10
11#include <map>
12#include <functional>
13
14namespace apfel
15{
22 {
23 public:
24 Distribution() = delete;
25
31
35 Distribution(Grid const& g);
36
42
50 std::vector<std::vector<double>> const& distsubgrid,
51 std::vector<double> const& distjointgrid);
52
60 std::vector<std::vector<double>> const& distsubgrid,
61 std::vector<double> const& distjointgrid);
62
69 std::function<double(double const&)> const& InDistFunc);
70
78 std::function<double(double const&, double const&)> const& InDistFunc,
79 double const& Q);
80
88 std::function<double(int const&, double const&)> const& InDistFunc,
89 int const& ipdf);
90
99 std::function<double(int const&, double const&, double const&)> const& InDistFunc,
100 int const& ipdf,
101 double const& Q);
103
109 void SetJointGrid(int const& ix, double const& x);
110
117 void SetSubGrid(int const& ig, int const& ix, double const& x);
118
123 void SetJointGrid(std::vector<double> const& jg);
124
130 void SetSubGrid(int const& ig, std::vector<double> const& sg);
131
136 void SetSubGrids(std::vector<std::vector<double>> const& sgs);
137
143
149 Distribution& operator *= (double const& s);
150 Distribution& operator *= (std::function<double(double const&)> const& f);
151 Distribution& operator /= (double const& s);
156 };
157
162 Distribution operator * (double const& s, Distribution rhs);
163 Distribution operator * (Distribution lhs, double const& s);
164 Distribution operator * (std::function<double(double const&)> const& f, Distribution rhs);
165 Distribution operator * (Distribution lhs, std::function<double(double const&)> const& f);
166 Distribution operator / (Distribution lhs, double const& s);
171
177
185 std::map<int, Distribution> DistributionMap(Grid const& g,
186 std::function<std::map<int, double>(double const&, double const&)> const& InDistFunc,
187 double const& Q,
188 std::vector<int> const& skip = {});
189
197 std::map<int, Distribution> DistributionMap(Grid const& g,
198 std::function<std::map<int, double>(double const&)> const& InDistFunc,
199 std::vector<int> const& skip = {});
200
208 std::map<int, Distribution> DistributionMap(Grid const& g,
209 std::function<std::vector<double>(double const&)> const& InDistFunc,
210 int const& NOutputs = 0);
211
219 double Sum(Distribution const& InDist);
220
228 double InnerProduct(Distribution const& d1, Distribution const& d2, double const& offset = 0);
230}
The Distribution class defines one of the basic objects of APFEL++. This is essentially the discretis...
Definition distribution.h:22
Distribution(Grid const &g, std::function< double(int const &, double const &)> const &InDistFunc, int const &ipdf)
The Distribution constructor.
Distribution & operator*=(double const &s)
this *= Scalar
Distribution & operator+=(Distribution const &d)
this += Distribution
void SetSubGrid(int const &ig, int const &ix, double const &x)
Function to push back the values of the subgrid.
Distribution(Grid const &g, std::vector< std::vector< double > > const &distsubgrid, std::vector< double > const &distjointgrid)
The Distribution constructor.
Distribution(Grid const &g, std::function< double(int const &, double const &, double const &)> const &InDistFunc, int const &ipdf, double const &Q)
The Distribution constructor.
void SetSubGrid(int const &ig, std::vector< double > const &sg)
Function to set the single sub-grid.
Distribution Derivative() const
Function that returns the derivative of the Distribution in the form of a Distribution object.
Distribution(Distribution const &obj, std::vector< std::vector< double > > const &distsubgrid, std::vector< double > const &distjointgrid)
The Distribution constructor.
void SetJointGrid(int const &ix, double const &x)
Function to set the values of the joint grid.
Distribution(Grid const &g, std::function< double(double const &)> const &InDistFunc)
The Distribution constructor.
Distribution(Grid const &g)
The Distribution constructor.
void SetJointGrid(std::vector< double > const &jg)
Function to set the joint grid.
Distribution & operator=(Distribution const &d)
this = Distribution
void SetSubGrids(std::vector< std::vector< double > > const &sgs)
Function to set all the sub-grids.
Distribution & operator-=(Distribution const &d)
this -= Distribution
Distribution & operator/=(double const &s)
this /= Scalar
Distribution(Grid const &g, std::function< double(double const &, double const &)> const &InDistFunc, double const &Q)
The Distribution constructor.
Distribution(Distribution const &obj)
The Distribution constructor.
The Grid class defines ab object that is essentially a collection of "SubGrid" objects plus other glo...
Definition grid.h:22
The LagrangeInterpolator class is a specialization of the Interpolator class using the lagrange inter...
Definition lagrangeinterpolator.h:18
Namespace for all APFEL++ functions and classes.
Definition alphaqcd.h:14
Distribution operator/(Distribution lhs, double const &s)
Distribution/Scalar.
std::map< int, Distribution > DistributionMap(Grid const &g, std::function< std::map< int, double >(double const &, double const &)> const &InDistFunc, double const &Q, std::vector< int > const &skip={})
Function that fills in a map of distributions from a map-valued function.
Distribution operator*(double const &s, Distribution rhs)
Scalar*Distribution.
double Sum(Distribution const &InDist)
Function that sums the element of a distribution. Specifically, it sums the elements of the joint gri...
double InnerProduct(Distribution const &d1, Distribution const &d2, double const &offset=0)
Function that computes the scala product bewteen two distributions. The product is computed using the...
Distribution operator+(Distribution lhs, Distribution const &rhs)
Distribution+Distribution.
Distribution operator-(Distribution lhs, Distribution const &rhs)
Distribution-Distribution.