APFEL 4.8.0
A PDF evolution library in C++
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | Friends | List of all members
apfel::DoubleObject< T, U > Class Template Reference

The DoubleObject class is a collection of pairs of single objects (Distributions or Operators) accompained by a multiplicative constant. This mother class provides the basic ingredients for the computation double convolutions required in SIDIS and DY. More...

#include <doubleobject.h>

Public Member Functions

void AddTerm (term< T, U > const &newterm)
 Function to add more terms.
 
std::vector< term< T, U > > GetTerms () const
 Function to get the terms.
 
double Evaluate (double const &x, double const &z) const
 Function that evaluates the double distribution.
 
Evaluate1 (double const &x) const
 Function that evaluates the double object in the first variable leaving the second undetermined.
 
Evaluate2 (double const &z) const
 Function that evaluates the double object in the second variable leaving the first undetermined.
 
double Derive (double const &x, double const &z) const
 Function that evaluates the derivative of the double distribution.
 
Derive1 (double const &x) const
 Function that evaluates the derivative of the double object in the first variable leaving the second undetermined.
 
Derive2 (double const &z) const
 Function that evaluates the derivative of the double object in the second variable leaving the first undetermined.
 
double Integrate (double const &xl, double const &xu, double const &zl, double const &zu) const
 Function that evaluates the integral of the double distribution.
 
Integrate1 (double const &xl, double const &xu) const
 Function that evaluates the integral of the double object in the first variable leaving the second undetermined.
 
Integrate2 (double const &zl, double const &zu) const
 Function that evaluates the derivative of the double object in the second variable leaving the first undetermined.
 
double Integrate (double const &xl, double const &xu, std::function< double(double const &)> zlx, std::function< double(double const &)> zux) const
 Function that evaluates the integral of the double distribution.
 
double Integrate (std::function< double(double const &)> xlz, std::function< double(double const &)> xuz, double const &zl, double const &zu) const
 Function that evaluates the integral of the double distribution.
 
DoubleObject< T, U > & MultiplyBy (std::function< double(double const &)> const &fx, std::function< double(double const &)> const &fz)
 This function multiplies the objects of the single terms of the DoubleObject by a respective function.
 
void Print () const
 Print the Operator object.
 
Constructors

List of constructors.

 DoubleObject ()
 The DoubleObject constructor.
 
 DoubleObject (std::vector< term< T, U > > const &terms)
 The DoubleObject constructor.
 
Binary operators
template<class V >
DoubleObject< V > operator*= (DoubleObject< V > const &o) const
 
DoubleObject< T, U > & operator*= (double const &s)
 this *= scalar
 
DoubleObject< T, U > & operator*= (DoubleObject< T, U > const &o)
 this *= DoubleObject
 
DoubleObject< T, U > & operator*= (std::function< double(double const &)> const &f)
 this *= Function of the integration variable
 
DoubleObject< T, U > & operator/= (double const &s)
 this /= scalar
 
DoubleObject< T, U > & operator+= (DoubleObject< T, U > const &o)
 this += DoubleObject
 
DoubleObject< T, U > & operator-= (DoubleObject< T, U > const &o)
 this -= DoubleObject
 

Private Attributes

std::vector< term< T, U > > _terms
 

Friends

template<class V , class W >
std::ostream & operator<< (std::ostream &os, DoubleObject< V, W > const &dob)
 

Detailed Description

template<class T, class U = T>
class apfel::DoubleObject< T, U >

The DoubleObject class is a collection of pairs of single objects (Distributions or Operators) accompained by a multiplicative constant. This mother class provides the basic ingredients for the computation double convolutions required in SIDIS and DY.

Examples
distribution_test.cc, and doubleobjint_test.cc.

Constructor & Destructor Documentation

◆ DoubleObject() [1/2]

template<class T , class U = T>
apfel::DoubleObject< T, U >::DoubleObject ( )

The DoubleObject constructor.

◆ DoubleObject() [2/2]

template<class T , class U = T>
apfel::DoubleObject< T, U >::DoubleObject ( std::vector< term< T, U > > const & terms)

The DoubleObject constructor.

Parameters
termsvector of term objects of the T kind

Member Function Documentation

◆ AddTerm()

template<class T , class U = T>
void apfel::DoubleObject< T, U >::AddTerm ( term< T, U > const & newterm)

Function to add more terms.

Parameters
newtermnew term to be appended to the vector of terms

◆ Derive()

template<class T , class U = T>
double apfel::DoubleObject< T, U >::Derive ( double const & x,
double const & z ) const

Function that evaluates the derivative of the double distribution.

Parameters
xvalue of the first variable
zvalue of the second variable
Returns
The value of the derivative of the double distribution in (x, z)

◆ Derive1()

template<class T , class U = T>
T apfel::DoubleObject< T, U >::Derive1 ( double const & x) const

Function that evaluates the derivative of the double object in the first variable leaving the second undetermined.

Parameters
xvalue of the first variable

◆ Derive2()

template<class T , class U = T>
U apfel::DoubleObject< T, U >::Derive2 ( double const & z) const

Function that evaluates the derivative of the double object in the second variable leaving the first undetermined.

Parameters
zvalue of the second variable

◆ Evaluate()

template<class T , class U = T>
double apfel::DoubleObject< T, U >::Evaluate ( double const & x,
double const & z ) const

Function that evaluates the double distribution.

Parameters
xvalue of the first variable
zvalue of the second variable
Returns
The value of the double distribution in (x, z)

◆ Evaluate1()

template<class T , class U = T>
T apfel::DoubleObject< T, U >::Evaluate1 ( double const & x) const

Function that evaluates the double object in the first variable leaving the second undetermined.

Parameters
xvalue of the first variable

◆ Evaluate2()

template<class T , class U = T>
U apfel::DoubleObject< T, U >::Evaluate2 ( double const & z) const

Function that evaluates the double object in the second variable leaving the first undetermined.

Parameters
zvalue of the second variable

◆ GetTerms()

template<class T , class U = T>
std::vector< term< T, U > > apfel::DoubleObject< T, U >::GetTerms ( ) const
inline

Function to get the terms.

Returns
The vector of terms

◆ Integrate() [1/3]

template<class T , class U = T>
double apfel::DoubleObject< T, U >::Integrate ( double const & xl,
double const & xu,
double const & zl,
double const & zu ) const

Function that evaluates the integral of the double distribution.

Parameters
xlvalue of the lower bound of the of the first variable
xuvalue of the upper bound of the of the first variable
zlvalue of the lower bound of the of the second variable
zuvalue of the upper bound of the of the second variable
Returns
The value of the integral of the double distribution

◆ Integrate() [2/3]

template<class T , class U = T>
double apfel::DoubleObject< T, U >::Integrate ( double const & xl,
double const & xu,
std::function< double(double const &)> zlx,
std::function< double(double const &)> zux ) const

Function that evaluates the integral of the double distribution.

Parameters
xlvalue of the lower bound of the of the first variable
xuvalue of the upper bound of the of the first variable
zlxfunction that delimits the lower bound of the integral in z as a function of x
zuxfunction that delimits the upper bound of the integral in z as a function of x
Returns
The value of the integral of the double distribution

◆ Integrate() [3/3]

template<class T , class U = T>
double apfel::DoubleObject< T, U >::Integrate ( std::function< double(double const &)> xlz,
std::function< double(double const &)> xuz,
double const & zl,
double const & zu ) const

Function that evaluates the integral of the double distribution.

Parameters
xlzfunction that delimits the lower bound of the integral in x as a function of z
xuzfunction that delimits the upper bound of the integral in x as a function of z
zlvalue of the lower bound of the of the second variable
zuvalue of the upper bound of the of the seconf variable
Returns
The value of the integral of the double distribution

◆ Integrate1()

template<class T , class U = T>
T apfel::DoubleObject< T, U >::Integrate1 ( double const & xl,
double const & xu ) const

Function that evaluates the integral of the double object in the first variable leaving the second undetermined.

Parameters
xlvalue of the lower bound of the of the first variable
xuvalue of the upper bound of the of the first variable

◆ Integrate2()

template<class T , class U = T>
U apfel::DoubleObject< T, U >::Integrate2 ( double const & zl,
double const & zu ) const

Function that evaluates the derivative of the double object in the second variable leaving the first undetermined.

Parameters
zlvalue of the lower bound of the of the second variable
zuvalue of the upper bound of the of the second variable

◆ MultiplyBy()

template<class T , class U = T>
DoubleObject< T, U > & apfel::DoubleObject< T, U >::MultiplyBy ( std::function< double(double const &)> const & fx,
std::function< double(double const &)> const & fz )

This function multiplies the objects of the single terms of the DoubleObject by a respective function.

Parameters
fxthat function that multiplies the first distribution
fzthat function that multiplies the second distribution

◆ operator*=() [1/4]

template<class T , class U = T>
DoubleObject< T, U > & apfel::DoubleObject< T, U >::operator*= ( double const & s)

this *= scalar

◆ operator*=() [2/4]

template<class T , class U = T>
DoubleObject< T, U > & apfel::DoubleObject< T, U >::operator*= ( DoubleObject< T, U > const & o)

this *= DoubleObject

◆ operator*=() [3/4]

template<class T , class U = T>
template<class V >
DoubleObject< V > apfel::DoubleObject< T, U >::operator*= ( DoubleObject< V > const & o) const

◆ operator*=() [4/4]

template<class T , class U = T>
DoubleObject< T, U > & apfel::DoubleObject< T, U >::operator*= ( std::function< double(double const &)> const & f)

this *= Function of the integration variable

◆ operator+=()

template<class T , class U = T>
DoubleObject< T, U > & apfel::DoubleObject< T, U >::operator+= ( DoubleObject< T, U > const & o)

this += DoubleObject

◆ operator-=()

template<class T , class U = T>
DoubleObject< T, U > & apfel::DoubleObject< T, U >::operator-= ( DoubleObject< T, U > const & o)

this -= DoubleObject

◆ operator/=()

template<class T , class U = T>
DoubleObject< T, U > & apfel::DoubleObject< T, U >::operator/= ( double const & s)

this /= scalar

◆ Print()

template<class T , class U = T>
void apfel::DoubleObject< T, U >::Print ( ) const
inline

Print the Operator object.

Friends And Related Symbol Documentation

◆ operator<<

template<class T , class U = T>
template<class V , class W >
std::ostream & operator<< ( std::ostream & os,
DoubleObject< V, W > const & dob )
friend

Member Data Documentation

◆ _terms

template<class T , class U = T>
std::vector<term<T, U> > apfel::DoubleObject< T, U >::_terms
private

The documentation for this class was generated from the following file: