Hydra  4.0.1
A header-only templated C++ framework to perform data analysis on massively parallel platforms.
Phase-Space Monte Carlo

Kinematics of particle decays and generation of phase-space Monte Carlo samples. More...

Files

file  IsAccepted.h
 
file  launch_decayers.inl
 
file  PhaseSpace.inl
 
file  Vector4R.h
 

Data Structures

class  hydra::Decays< Particles, Backend >
 
class  hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >
 This class provides storage for N-particle states. More...
 
class  hydra::PhaseSpace< N, GRND >
 This class implements phase-space Monte Carlo generation in hydra. More...
 
class  hydra::PhaseSpaceIntegrator< N, Backend, GRND >
 
class  hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >
 

Functions

class hydra::__hydra_align__ (16) Vector3R
 This class represents three-dimensional Euclidian vectors and implements common operation performed on it. More...
 

Detailed Description

Kinematics of particle decays and generation of phase-space Monte Carlo samples.


Data Structure Documentation

◆ hydra::Decays

class hydra::Decays

template<typename Particles, typename Backend>
class hydra::Decays< Particles, Backend >

Examples:
dalitz_plot.C, dalitz_plot.inl, phsp_basic.inl, phsp_chain.inl, phsp_reweighting.inl, phsp_unweighting.inl, and phsp_unweighting_functor.inl.
Collaboration diagram for hydra::Decays< Particles, Backend >:

◆ hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >

class hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >

template<typename ... Particles, hydra::detail::Backend Backend>
class hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >

This class provides storage for N-particle states.

Data is stored using SoA layout.

Template Parameters
Particleslist of particles in the final state
Backendmemory space to allocate storage for the particles.
Collaboration diagram for hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >:

Public Types

typedef storage_type::const_iterator const_iterator
 
typedef storage_type::const_reference const_reference
 
typedef storage_type::const_reverse_iterator const_reverse_iterator
 
typedef storage_type::iterator iterator
 
typedef storage_type::reference reference
 
typedef storage_type::reverse_iterator reverse_iterator
 
typedef storage_type::value_type value_type
 

Public Member Functions

 Decays ()=delete
 Default contstuctor. More...
 
 Decays (double motherMass, std::array< double, nparticles > const &daughtersMasses, size_t nentries=0)
 
 Decays (double motherMass, const double(&daughtersMasses)[nparticles], size_t nentries=0)
 
 Decays (Decays< tuple_type, system_type > const &other)
 Copy constructor. More...
 
 Decays (Decays< tuple_type, system_type > &&other)
 Move constructor. More...
 
template<hydra::detail::Backend BACKEND2>
 Decays (Decays< tuple_type, detail::BackendPolicy< BACKEND2 >> const &other)
 Copy constructor trans-backend. More...
 
template<typename Iterator >
 Decays (double motherMass, std::array< double, nparticles > const &daughtersMasses, Iterator first, Iterator last)
 Copy constructor iterator interface. More...
 
void AddEntry (tuple_type const &p)
 Add a decay to the container, increasing its size by one element. More...
 
reference back ()
 
const_reference back () const
 
template<typename Functor >
auto begin (Functor const &caster) -> decltype(std::declval< storage_type >() .begin(caster))
 
iterator begin ()
 
template<unsigned int I1, unsigned int ... IN>
auto begin (placeholders::placeholder< I1 > c1, placeholders::placeholder< IN > ...cn) -> decltype(std::declval< storage_type >().begin(c1, cn...))
 
const_iterator begin () const
 
size_t capacity () const
 
const_iterator cbegin () const
 
template<unsigned int I1, unsigned int ... IN>
auto cbegin (placeholders::placeholder< I1 > c1, placeholders::placeholder< IN > ...cn) const -> decltype(std::declval< storage_type >().cbegin(c1, cn...))
 
const_iterator cend () const
 
template<unsigned int I1, unsigned int ... IN>
auto cend (placeholders::placeholder< I1 > c1, placeholders::placeholder< IN > ...cn) const -> decltype(std::declval< storage_type >().cend(c1, cn...))
 
void clear ()
 
const_reverse_iterator crbegin () const
 
template<unsigned int I1, unsigned int ... IN>
auto crbegin (placeholders::placeholder< I1 > c1, placeholders::placeholder< IN > ...cn) const -> decltype(std::declval< storage_type >().crbegin(c1, cn...))
 
const_reverse_iterator crend () const
 
template<unsigned int I1, unsigned int ... IN>
auto crend (placeholders::placeholder< I1 > c1, placeholders::placeholder< IN > ...cn) const -> decltype(std::declval< storage_type >().crend(c1, cn...))
 
bool empty () const
 
template<typename Functor >
auto end (Functor const &caster) -> decltype(std::declval< storage_type >().end(caster))
 
iterator end ()
 
template<unsigned int I1, unsigned int ... IN>
auto end (placeholders::placeholder< I1 > c1, placeholders::placeholder< IN > ...cn) -> decltype(std::declval< storage_type >().end(c1, cn...))
 
const_iterator end () const
 
iterator erase (iterator pos)
 
iterator erase (iterator first, iterator last)
 
reference front ()
 
const_reference front () const
 
template<unsigned int I>
auto GetDaugtherRange (placeholders::placeholder< I > c) -> hydra::Range< decltype(std::declval< storage_type >().begin(c)) >
 
reference GetEntry (size_t i)
 
PhaseSpaceWeight< Particles... > GetEventWeightFunctor () const
 
template<typename Functor >
std::enable_if< detail::is_hydra_functor< Functor >::value||detail::is_hydra_lambda< Functor >::value||detail::is_hydra_composite_functor< Functor >::value, PhaseSpaceReweight< Functor, Particles... > >::type GetEventWeightFunctor (Functor const &functor) const
 
const std::array< double, nparticles > GetMasses () const
 
double GetMaxWeight () const
 
double GetMotherMass () const
 
const storage_typeGetStorage () const
 
iterator insert (iterator position, const value_type &x)
 
void insert (iterator position, size_t n, const value_type &x)
 
template<typename InputIterator >
void insert (iterator position, InputIterator first, InputIterator last)
 
template<typename Iterable >
std::enable_if< detail::is_iterable< Iterable >::value, void >::type insert (iterator position, Iterable range)
 
template<typename ... Iterables>
auto Meld (Iterables &&... iterable) -> typename std::enable_if< detail::all_true< detail::is_iterable< Iterables >::value... >::value, decltype(std::declval< storage_type >().meld(std::forward< Iterables >(iterable) ...)) >::type
 
storage_type && MoveStorage ()
 
Decays< tuple_type, system_type > & operator= (Decays< tuple_type, system_type > const &other)
 Assignment operator. More...
 
Decays< tuple_type, system_type > & operator= (Decays< tuple_type, system_type > &&other)
 Move assignment operator. More...
 
template<hydra::detail::Backend BACKEND2>
Decays< tuple_type, system_type > & operator= (Decays< tuple_type, detail::BackendPolicy< BACKEND2 > > const &other)
 Assignment operator. More...
 
reference operator[] (size_t n)
 
const_reference operator[] (size_t n) const
 
void pop_back ()
 
void push_back (const value_type &particles)
 
template<typename Functor >
auto rbegin (Functor const &caster) -> decltype(std::declval< storage_type >().rbegin(caster))
 
reverse_iterator rbegin ()
 
template<unsigned int I1, unsigned int ... IN>
auto rbegin (placeholders::placeholder< I1 > c1, placeholders::placeholder< IN > ...cn) -> decltype(std::declval< storage_type >().rbegin(c1, cn...))
 
const_reverse_iterator rbegin () const
 
template<typename Functor >
auto rend (Functor const &caster) -> decltype(std::declval< storage_type >().rend(caster))
 
reverse_iterator rend ()
 
template<unsigned int I1, unsigned int ... IN>
auto rend (placeholders::placeholder< I1 > c1, placeholders::placeholder< IN > ...cn) -> decltype(std::declval< storage_type >().rend(c1, cn...))
 
const_reverse_iterator rend () const
 
void reserve (size_t size)
 
void resize (size_t size)
 
void shrink_to_fit ()
 
size_t size () const
 
hydra::Range< iteratorUnweight (size_t seed=0x180ec6d33cfd0aba)
 
template<typename Functor >
std::enable_if< detail::is_hydra_functor< Functor >::value||detail::is_hydra_lambda< Functor >::value||detail::is_hydra_composite_functor< Functor >::value, hydra::Range< iterator > >::type Unweight (Functor const &functor, double weight=-1.0, size_t seed=0x39abdc4529b1661c)
 

Member Typedef Documentation

◆ const_iterator

template<typename ... Particles, hydra::detail::Backend Backend>
typedef storage_type::const_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::const_iterator

◆ const_reference

template<typename ... Particles, hydra::detail::Backend Backend>
typedef storage_type::const_reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::const_reference

◆ const_reverse_iterator

template<typename ... Particles, hydra::detail::Backend Backend>
typedef storage_type::const_reverse_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::const_reverse_iterator

◆ iterator

template<typename ... Particles, hydra::detail::Backend Backend>
typedef storage_type::iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::iterator

◆ reference

template<typename ... Particles, hydra::detail::Backend Backend>
typedef storage_type::reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::reference

◆ reverse_iterator

template<typename ... Particles, hydra::detail::Backend Backend>
typedef storage_type::reverse_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::reverse_iterator

◆ value_type

template<typename ... Particles, hydra::detail::Backend Backend>
typedef storage_type::value_type hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::value_type

Constructor & Destructor Documentation

◆ Decays() [1/7]

template<typename ... Particles, hydra::detail::Backend Backend>
hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Decays ( )
delete

Default contstuctor.

◆ Decays() [2/7]

template<typename ... Particles, hydra::detail::Backend Backend>
hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Decays ( double  motherMass,
std::array< double, nparticles > const &  daughtersMasses,
size_t  nentries = 0 
)
inline

◆ Decays() [3/7]

template<typename ... Particles, hydra::detail::Backend Backend>
hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Decays ( double  motherMass,
const double(&)  daughtersMasses[nparticles],
size_t  nentries = 0 
)
inline

◆ Decays() [4/7]

template<typename ... Particles, hydra::detail::Backend Backend>
hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Decays ( Decays< tuple_type, system_type > const &  other)
inline

Copy constructor.

Parameters
other

◆ Decays() [5/7]

template<typename ... Particles, hydra::detail::Backend Backend>
hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Decays ( Decays< tuple_type, system_type > &&  other)
inline

Move constructor.

Parameters
other

◆ Decays() [6/7]

template<typename ... Particles, hydra::detail::Backend Backend>
template<hydra::detail::Backend BACKEND2>
hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Decays ( Decays< tuple_type, detail::BackendPolicy< BACKEND2 >> const &  other)
inline

Copy constructor trans-backend.

Parameters
other

◆ Decays() [7/7]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename Iterator >
hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Decays ( double  motherMass,
std::array< double, nparticles > const &  daughtersMasses,
Iterator  first,
Iterator  last 
)
inline

Copy constructor iterator interface.

Parameters
other

Member Function Documentation

◆ AddEntry()

template<typename ... Particles, hydra::detail::Backend Backend>
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::AddEntry ( tuple_type const &  p)
inline

Add a decay to the container, increasing its size by one element.

Parameters
pis a tuple with N final state particles.

◆ back() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::back ( )
inline

◆ back() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
const_reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::back ( ) const
inline

◆ begin() [1/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename Functor >
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::begin ( Functor const &  caster) -> decltype( std::declval<storage_type>() .begin(caster))
inline

◆ begin() [2/4]

template<typename ... Particles, hydra::detail::Backend Backend>
iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::begin ( )
inline

◆ begin() [3/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I1, unsigned int ... IN>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::begin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< IN > ...  cn 
) -> decltype( std::declval<storage_type>().begin(c1, cn...) )
inline

◆ begin() [4/4]

template<typename ... Particles, hydra::detail::Backend Backend>
const_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::begin ( ) const
inline

◆ capacity()

template<typename ... Particles, hydra::detail::Backend Backend>
size_t hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::capacity ( ) const
inline

◆ cbegin() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
const_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::cbegin ( ) const
inline

◆ cbegin() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I1, unsigned int ... IN>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::cbegin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< IN > ...  cn 
) const -> decltype( std::declval<storage_type>().cbegin(c1, cn...) )
inline

◆ cend() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
const_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::cend ( ) const
inline

◆ cend() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I1, unsigned int ... IN>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::cend ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< IN > ...  cn 
) const -> decltype( std::declval<storage_type>().cend(c1, cn...) )
inline

◆ clear()

template<typename ... Particles, hydra::detail::Backend Backend>
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::clear ( )
inline

◆ crbegin() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
const_reverse_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::crbegin ( ) const
inline

◆ crbegin() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I1, unsigned int ... IN>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::crbegin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< IN > ...  cn 
) const -> decltype( std::declval<storage_type>().crbegin(c1, cn...) )
inline

◆ crend() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
const_reverse_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::crend ( ) const
inline

◆ crend() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I1, unsigned int ... IN>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::crend ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< IN > ...  cn 
) const -> decltype( std::declval<storage_type>().crend(c1, cn...) )
inline

◆ empty()

template<typename ... Particles, hydra::detail::Backend Backend>
bool hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::empty ( ) const
inline

◆ end() [1/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename Functor >
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::end ( Functor const &  caster) -> decltype( std::declval<storage_type>().end(caster))
inline

◆ end() [2/4]

template<typename ... Particles, hydra::detail::Backend Backend>
iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::end ( )
inline

◆ end() [3/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I1, unsigned int ... IN>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::end ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< IN > ...  cn 
) -> decltype( std::declval<storage_type>().end(c1, cn...) )
inline

◆ end() [4/4]

template<typename ... Particles, hydra::detail::Backend Backend>
const_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::end ( ) const
inline

◆ erase() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::erase ( iterator  pos)
inline

◆ erase() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::erase ( iterator  first,
iterator  last 
)
inline

◆ front() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::front ( )
inline

◆ front() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
const_reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::front ( ) const
inline

◆ GetDaugtherRange()

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::GetDaugtherRange ( placeholders::placeholder< I >  c) -> hydra::Range< decltype ( std::declval< storage_type >().begin(c)) >
inline

◆ GetEntry()

template<typename ... Particles, hydra::detail::Backend Backend>
reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::GetEntry ( size_t  i)
inline

◆ GetEventWeightFunctor() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
PhaseSpaceWeight<Particles...> hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::GetEventWeightFunctor ( ) const
inline

◆ GetEventWeightFunctor() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename Functor >
std::enable_if< detail::is_hydra_functor<Functor>::value || detail::is_hydra_lambda<Functor>::value || detail::is_hydra_composite_functor<Functor>::value, PhaseSpaceReweight<Functor, Particles...> >::type hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::GetEventWeightFunctor ( Functor const &  functor) const
inline

◆ GetMasses()

template<typename ... Particles, hydra::detail::Backend Backend>
const std::array<double,nparticles> hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::GetMasses ( ) const
inline

◆ GetMaxWeight()

template<typename ... Particles, hydra::detail::Backend Backend>
double hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::GetMaxWeight ( ) const
inline

◆ GetMotherMass()

template<typename ... Particles, hydra::detail::Backend Backend>
double hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::GetMotherMass ( ) const
inline

◆ GetStorage()

template<typename ... Particles, hydra::detail::Backend Backend>
const storage_type& hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::GetStorage ( ) const
inline

◆ insert() [1/4]

template<typename ... Particles, hydra::detail::Backend Backend>
iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::insert ( iterator  position,
const value_type x 
)
inline

◆ insert() [2/4]

template<typename ... Particles, hydra::detail::Backend Backend>
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::insert ( iterator  position,
size_t  n,
const value_type x 
)
inline

◆ insert() [3/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename InputIterator >
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::insert ( iterator  position,
InputIterator  first,
InputIterator  last 
)
inline

◆ insert() [4/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename Iterable >
std::enable_if<detail::is_iterable<Iterable>::value, void>::type hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::insert ( iterator  position,
Iterable  range 
)
inline

◆ Meld()

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename ... Iterables>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Meld ( Iterables &&...  iterable) -> typename std::enable_if< detail::all_true<detail::is_iterable<Iterables>::value...>::value, decltype(std::declval<storage_type>().meld( std::forward<Iterables>(iterable) ...)) >::type
inline

◆ MoveStorage()

template<typename ... Particles, hydra::detail::Backend Backend>
storage_type&& hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::MoveStorage ( )
inline

◆ operator=() [1/3]

template<typename ... Particles, hydra::detail::Backend Backend>
Decays<tuple_type, system_type>& hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::operator= ( Decays< tuple_type, system_type > const &  other)
inline

Assignment operator.

Parameters
other

◆ operator=() [2/3]

template<typename ... Particles, hydra::detail::Backend Backend>
Decays<tuple_type, system_type>& hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::operator= ( Decays< tuple_type, system_type > &&  other)
inline

Move assignment operator.

Parameters
other
Returns

◆ operator=() [3/3]

template<typename ... Particles, hydra::detail::Backend Backend>
template<hydra::detail::Backend BACKEND2>
Decays<tuple_type, system_type>& hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::operator= ( Decays< tuple_type, detail::BackendPolicy< BACKEND2 > > const &  other)
inline

Assignment operator.

Parameters
other
Returns

◆ operator[]() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::operator[] ( size_t  n)
inline

◆ operator[]() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
const_reference hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::operator[] ( size_t  n) const
inline

◆ pop_back()

template<typename ... Particles, hydra::detail::Backend Backend>
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::pop_back ( )
inline

◆ push_back()

template<typename ... Particles, hydra::detail::Backend Backend>
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::push_back ( const value_type particles)
inline

◆ rbegin() [1/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename Functor >
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::rbegin ( Functor const &  caster) -> decltype( std::declval<storage_type>().rbegin(caster))
inline

◆ rbegin() [2/4]

template<typename ... Particles, hydra::detail::Backend Backend>
reverse_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::rbegin ( )
inline

◆ rbegin() [3/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I1, unsigned int ... IN>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::rbegin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< IN > ...  cn 
) -> decltype( std::declval<storage_type>().rbegin(c1, cn...) )
inline

◆ rbegin() [4/4]

template<typename ... Particles, hydra::detail::Backend Backend>
const_reverse_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::rbegin ( ) const
inline

◆ rend() [1/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename Functor >
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::rend ( Functor const &  caster) -> decltype( std::declval<storage_type>().rend(caster))
inline

◆ rend() [2/4]

template<typename ... Particles, hydra::detail::Backend Backend>
reverse_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::rend ( )
inline

◆ rend() [3/4]

template<typename ... Particles, hydra::detail::Backend Backend>
template<unsigned int I1, unsigned int ... IN>
auto hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::rend ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< IN > ...  cn 
) -> decltype( std::declval<storage_type>().rend(c1, cn...) )
inline

◆ rend() [4/4]

template<typename ... Particles, hydra::detail::Backend Backend>
const_reverse_iterator hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::rend ( ) const
inline

◆ reserve()

template<typename ... Particles, hydra::detail::Backend Backend>
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::reserve ( size_t  size)
inline

◆ resize()

template<typename ... Particles, hydra::detail::Backend Backend>
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::resize ( size_t  size)
inline

◆ shrink_to_fit()

template<typename ... Particles, hydra::detail::Backend Backend>
void hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::shrink_to_fit ( )
inline

◆ size()

template<typename ... Particles, hydra::detail::Backend Backend>
size_t hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::size ( ) const
inline

◆ Unweight() [1/2]

template<typename ... Particles, hydra::detail::Backend Backend>
hydra::Range< typename Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::iterator > hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Unweight ( size_t  seed = 0x180ec6d33cfd0aba)

◆ Unweight() [2/2]

template<typename ... Particles, hydra::detail::Backend Backend>
template<typename Functor >
std::enable_if< detail::is_hydra_functor< Functor >::value||detail::is_hydra_lambda< Functor >::value||detail::is_hydra_composite_functor< Functor >::value, hydra::Range< typename Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::iterator > >::type hydra::Decays< hydra::tuple< Particles... >, hydra::detail::BackendPolicy< Backend > >::Unweight ( Functor const &  functor,
double  weight = -1.0,
size_t  seed = 0x39abdc4529b1661c 
)

◆ hydra::PhaseSpace

class hydra::PhaseSpace

template<size_t N, typename GRND = hydra::default_random_engine>
class hydra::PhaseSpace< N, GRND >

This class implements phase-space Monte Carlo generation in hydra.

The events are generated in the center-of-mass frame, but the decay products are finally boosted using the betas of the original particle. The code is based on the Raubold and Lynch method as documented in F. James, Monte Carlo Phase Space, CERN 68-15 (1968).

Note that Momentum, Energy units are \(GeV/C\) , \(GeV/C^2\) .

Template Parameters
Nis the number of particles in final state.
GRNDunderlying random number generator. See the options in hydra::thrust::random namespace.
Examples:
dalitz_plot.C, dalitz_plot.inl, phsp_averaging_functor.inl, phsp_basic.inl, phsp_chain.inl, phsp_reweighting.inl, phsp_unweighting.inl, and phsp_unweighting_functor.inl.
Collaboration diagram for hydra::PhaseSpace< N, GRND >:

Public Member Functions

 PhaseSpace (double motherMass, const double(&daughtersMasses)[N])
 PhaseSpace ctor. More...
 
 PhaseSpace (double motherMass, std::array< GReal_t, N > const &daughtersMasses)
 PhaseSpace ctor. More...
 
 PhaseSpace (double motherMass, std::initializer_list< GReal_t > const &daughtersMasses)
 PhaseSpace ctor. More...
 
 PhaseSpace (PhaseSpace< N, GRND >const &other)
 Copy constructor. More...
 
template<typename GRND2 >
 PhaseSpace (PhaseSpace< N, GRND2 >const &other)
 Copy constructor. More...
 
template<typename FUNCTOR , hydra::detail::Backend BACKEND>
std::pair< GReal_t, GReal_tAverageOn (hydra::detail::BackendPolicy< BACKEND >const &policy, Vector4R const &mother, FUNCTOR const &functor, size_t n)
 Calculate the mean and the \( \sqrt(variance)\) of a functor over the phase-space with n-samples. More...
 
template<typename FUNCTOR , typename Iterator >
std::pair< GReal_t, GReal_tAverageOn (Iterator begin, Iterator end, FUNCTOR const &functor)
 Calculate the mean and the \( \sqrt(\sigma)\) of a functor over the phase-space given a list of mother particles. More...
 
template<typename Iterator , typename ... FUNCTOR>
void Evaluate (Vector4R const &mother, Iterator begin, Iterator end, FUNCTOR const &...functors)
 Evaluate a list of functors over the phase-space. More...
 
template<typename ... FUNCTOR, typename IteratorMother , typename Iterator >
void Evaluate (IteratorMother mbegin, IteratorMother mend, Iterator begin, FUNCTOR const &...functors)
 Evaluate a list of functors over the phase-space given a list vectors. More...
 
template<typename ... FUNCTOR, typename Iterable >
std::enable_if< hydra::detail::is_iterable< Iterable >::value, hydra::Range< decltype(std::declval< Iterable >).begin())> >::type Evaluate (Vector4R const &mother, Iterable &&iterable, FUNCTOR const &...functors)
 Evaluate a list of functors over the phase-space. More...
 
template<typename ... FUNCTOR, typename IterableMother , typename Iterable >
std::enable_if< hydra::detail::is_iterable< Iterable >::value &&hydra::detail::is_iterable< IterableMother >::value, hydra::Range< decltype(std::declval< Iterable >).begin())> >::type Evaluate (IterableMother &&mothers, Iterable &&result, FUNCTOR const &...functors)
 Evaluate a list of functors over the phase-space given a list vectors. More...
 
template<typename Iterator >
void Generate (Vector4R const &mother, Iterator begin, Iterator end)
 Generate a phase-space given a mother particle and a output range. More...
 
template<typename Iterator1 , typename Iterator2 >
void Generate (Iterator1 begin, Iterator1 end, Iterator2 daughters_begin)
 Generate a phase-space given a range of mother particles and a output range. More...
 
template<typename Iterator , hydra::detail::Backend BACKEND>
void Generate (hydra::detail::BackendPolicy< BACKEND > const &exec_policy, Vector4R const &mother, Iterator begin, Iterator end)
 Generate a phase-space given a mother particle and a output range. More...
 
template<typename Iterator1 , typename Iterator2 , hydra::detail::Backend BACKEND>
void Generate (hydra::detail::BackendPolicy< BACKEND > const &exec_policy, Iterator1 begin, Iterator1 end, Iterator2 daughters_begin)
 Generate a phase-space given a range of mother particles and a output range. More...
 
template<typename Iterable >
std::enable_if< hydra::detail::is_iterable< Iterable >::value, hydra::Range< decltype(std::declval< Iterable >).begin())> >::type Generate (Vector4R const &mother, Iterable &&events)
 Generate a phase-space given a mother particle and a output range. More...
 
template<typename IterableMothers , typename Iterable >
std::enable_if< hydra::detail::is_iterable< Iterable >::value &&hydra::detail::is_iterable< IterableMothers >::value, hydra::Range< decltype(std::declval< Iterable >).begin())> >::type Generate (IterableMothers &&mothers, Iterable &&daughters)
 Generate a phase-space given a range of mother particles and a output range. More...
 
double GetECM () const
 
const GReal_tGetMasses () const
 
double GetMaxWeight () const
 
double GetMotherMass () const
 
GInt_t GetSeed () const
 Get seed of the underlying generator;. More...
 
PhaseSpace< N, GRND > & operator= (PhaseSpace< N, GRND >const &other)
 Assignment operator. More...
 
template<typename GRND2 >
PhaseSpace< N, GRND > & operator= (PhaseSpace< N, GRND2 >const &other)
 Assignment operator. More...
 
void SetECM (double ecm)
 
void SetMaxWeight (double maxWeight)
 
void SetMotherMass (double motherMass)
 
void SetSeed (GInt_t _seed)
 Set seed of the underlying generator;. More...
 

Static Public Member Functions

static double PDK (double a, double b, double c)
 

Constructor & Destructor Documentation

◆ PhaseSpace() [1/5]

template<size_t N, typename GRND >
hydra::PhaseSpace< N, GRND >::PhaseSpace ( double  motherMass,
const double(&)  daughtersMasses[N] 
)

PhaseSpace ctor.

Constructor of the phase-space generator takes as input parameters:

Parameters
motherMassmass of the mother particle in Gev/c*c;
daughtersMassesarray with the masses of the daughter particles in Gev/c*c;

◆ PhaseSpace() [2/5]

template<size_t N, typename GRND >
hydra::PhaseSpace< N, GRND >::PhaseSpace ( double  motherMass,
std::array< GReal_t, N > const &  daughtersMasses 
)

PhaseSpace ctor.

Constructor of the phase-space generator takes as input parameters:

Parameters
motherMassmass of the mother particle in Gev/c*c;
daughtersMassesarray with the masses of the daughter particles in Gev/c*c;

◆ PhaseSpace() [3/5]

template<size_t N, typename GRND >
hydra::PhaseSpace< N, GRND >::PhaseSpace ( double  motherMass,
std::initializer_list< GReal_t > const &  daughtersMasses 
)

PhaseSpace ctor.

Constructor of the phase-space generator takes as input parameters:

Parameters
motherMassmass of the mother particle in Gev/c*c;
daughtersMasseslist with the masses of the daughter particles in Gev/c*c;

◆ PhaseSpace() [4/5]

template<size_t N, typename GRND >
hydra::PhaseSpace< N, GRND >::PhaseSpace ( PhaseSpace< N, GRND >const &  other)

Copy constructor.

Parameters
other

◆ PhaseSpace() [5/5]

template<size_t N, typename GRND >
template<typename GRND2 >
hydra::PhaseSpace< N, GRND >::PhaseSpace ( PhaseSpace< N, GRND2 >const &  other)

Copy constructor.

Parameters
other

Member Function Documentation

◆ AverageOn() [1/2]

template<size_t N, typename GRND >
template<typename FUNCTOR , hydra::detail::Backend BACKEND>
std::pair< GReal_t, GReal_t > hydra::PhaseSpace< N, GRND >::AverageOn ( hydra::detail::BackendPolicy< BACKEND >const &  policy,
Vector4R const &  mother,
FUNCTOR const &  functor,
size_t  n 
)

Calculate the mean and the \( \sqrt(variance)\) of a functor over the phase-space with n-samples.

Parameters
policyBack-end;
motherMother particle four-vector;
functorFunctor;
nNumber of samples;
Returns
std::pair with the mean and the \( \sqrt(variance)\)

◆ AverageOn() [2/2]

template<size_t N, typename GRND >
template<typename FUNCTOR , typename Iterator>
std::pair< GReal_t, GReal_t > hydra::PhaseSpace< N, GRND >::AverageOn ( Iterator  begin,
Iterator  end,
FUNCTOR const &  functor 
)

Calculate the mean and the \( \sqrt(\sigma)\) of a functor over the phase-space given a list of mother particles.

Parameters
policyBack-end;
beginIterator pointing to the begin of list of mother particles;
endIterator pointing to the end of list of mother particles;
functorFunctor;
Returns
std::pair with the mean and the \( \sqrt(\sigma)\)

◆ Evaluate() [1/4]

template<size_t N, typename GRND >
template<typename Iterator , typename ... FUNCTOR>
void hydra::PhaseSpace< N, GRND >::Evaluate ( Vector4R const &  mother,
Iterator  begin,
Iterator  end,
FUNCTOR const &...  functors 
)

Evaluate a list of functors over the phase-space.

Parameters
policyBack-end;
beginIterator pointing to the begin of list of output range;
endIterator pointing to the end of list of output range;
motherMother particle four-vector;
functorsFunctors;

◆ Evaluate() [2/4]

template<size_t N, typename GRND >
template<typename ... FUNCTOR, typename IteratorMother, typename Iterator >
void hydra::PhaseSpace< N, GRND >::Evaluate ( IteratorMother  mbegin,
IteratorMother  mend,
Iterator  begin,
FUNCTOR const &...  functors 
)

Evaluate a list of functors over the phase-space given a list vectors.

Parameters
policyBack-end;
mbeginIterator pointing to the begin of list of mother particles;
mendIterator pointing to the end of list of mother particles;
beginIterator pointing to the begin of list of output range;
functorsFunctors;

◆ Evaluate() [3/4]

template<size_t N, typename GRND >
template<typename ... FUNCTOR, typename Iterable>
std::enable_if< hydra::detail::is_iterable< Iterable >::value, hydra::Range< decltype(std::declval< Iterable >).begin())> >::type hydra::PhaseSpace< N, GRND >::Evaluate ( Vector4R const &  mother,
Iterable &&  iterable,
FUNCTOR const &...  functors 
)
inline

Evaluate a list of functors over the phase-space.

Parameters
mothermother particle
resultcontainer for store the results
functors
Returns
A Range object pointing to the
Parameters
resultcontainer

◆ Evaluate() [4/4]

template<size_t N, typename GRND >
template<typename ... FUNCTOR, typename IterableMother, typename Iterable >
std::enable_if< hydra::detail::is_iterable< Iterable >::value &&hydra::detail::is_iterable< IterableMother >::value, hydra::Range< decltype(std::declval< Iterable >).begin())> >::type hydra::PhaseSpace< N, GRND >::Evaluate ( IterableMother &&  mothers,
Iterable &&  result,
FUNCTOR const &...  functors 
)
inline

Evaluate a list of functors over the phase-space given a list vectors.

Parameters
motherslist of mother particles;
resultcontainer for store the results
functors
Returns
A Range object pointing to the
Parameters
resultcontainer

◆ Generate() [1/6]

template<size_t N, typename GRND >
template<typename Iterator >
void hydra::PhaseSpace< N, GRND >::Generate ( Vector4R const &  mother,
Iterator  begin,
Iterator  end 
)

Generate a phase-space given a mother particle and a output range.

Parameters
motherMother particle.
beginIterator pointing to the begin output range.
endIterator pointing to the end output range.

Run the generator and calculate the maximum weight. It takes as input the fourvector of the mother particle in any system of reference. The daughters will be generated in this system.

◆ Generate() [2/6]

template<size_t N, typename GRND >
template<typename Iterator1 , typename Iterator2 >
void hydra::PhaseSpace< N, GRND >::Generate ( Iterator1  begin,
Iterator1  end,
Iterator2  daughters_begin 
)

Generate a phase-space given a range of mother particles and a output range.

Parameters
beginIterator pointing to the begin of range of mother particles.
endIterator pointing to the end of range of mother particles.
daughters_beginIterator pointing to the begin of range of daughter particles.

Run the generator and calculate the maximum weight. It takes as input the device vector with the four-vectors of the mother particle in any system of reference. The daughters will be generated in this system.

◆ Generate() [3/6]

template<size_t N, typename GRND >
template<typename Iterator , hydra::detail::Backend BACKEND>
void hydra::PhaseSpace< N, GRND >::Generate ( hydra::detail::BackendPolicy< BACKEND > const &  exec_policy,
Vector4R const &  mother,
Iterator  begin,
Iterator  end 
)

Generate a phase-space given a mother particle and a output range.

Parameters
motherMother particle.
beginIterator pointing to the begin output range.
endIterator pointing to the end output range.

Run the generator and calculate the maximum weight. It takes as input the fourvector of the mother particle in any system of reference. The daughters will be generated in this system.

◆ Generate() [4/6]

template<size_t N, typename GRND >
template<typename Iterator1 , typename Iterator2, hydra::detail::Backend BACKEND>
void hydra::PhaseSpace< N, GRND >::Generate ( hydra::detail::BackendPolicy< BACKEND > const &  exec_policy,
Iterator1  begin,
Iterator1  end,
Iterator2  daughters_begin 
)

Generate a phase-space given a range of mother particles and a output range.

Parameters
beginIterator pointing to the begin of range of mother particles.
endIterator pointing to the end of range of mother particles.
daughters_beginIterator pointing to the begin of range of daughter particles.

Run the generator and calculate the maximum weight. It takes as input the device vector with the four-vectors of the mother particle in any system of reference. The daughters will be generated in this system.

◆ Generate() [5/6]

template<size_t N, typename GRND >
template<typename Iterable >
std::enable_if< hydra::detail::is_iterable< Iterable >::value, hydra::Range< decltype(std::declval< Iterable >).begin())> >::type hydra::PhaseSpace< N, GRND >::Generate ( Vector4R const &  mother,
Iterable &&  events 
)
inline

Generate a phase-space given a mother particle and a output range.

Parameters
motherMother particle.
beginIterator pointing to the begin output range.
endIterator pointing to the end output range.

Run the generator and calculate the maximum weight. It takes as input the fourvector of the mother particle in any system of reference. The daughters will be generated in this system.

◆ Generate() [6/6]

template<size_t N, typename GRND >
template<typename IterableMothers , typename Iterable>
std::enable_if< hydra::detail::is_iterable< Iterable >::value &&hydra::detail::is_iterable< IterableMothers >::value, hydra::Range< decltype(std::declval< Iterable >).begin())> >::type hydra::PhaseSpace< N, GRND >::Generate ( IterableMothers &&  mothers,
Iterable &&  daughters 
)
inline

Generate a phase-space given a range of mother particles and a output range.

Parameters
beginIterator pointing to the begin of range of mother particles.
endIterator pointing to the end of range of mother particles.
daughters_beginIterator pointing to the begin of range of daughter particles.

Run the generator and calculate the maximum weight. It takes as input the device vector with the four-vectors of the mother particle in any system of reference. The daughters will be generated in this system.

◆ GetECM()

template<size_t N, typename GRND = hydra::default_random_engine>
double hydra::PhaseSpace< N, GRND >::GetECM ( ) const
inline

◆ GetMasses()

template<size_t N, typename GRND = hydra::default_random_engine>
const GReal_t* hydra::PhaseSpace< N, GRND >::GetMasses ( ) const
inline

◆ GetMaxWeight()

template<size_t N, typename GRND = hydra::default_random_engine>
double hydra::PhaseSpace< N, GRND >::GetMaxWeight ( ) const
inline

◆ GetMotherMass()

template<size_t N, typename GRND = hydra::default_random_engine>
double hydra::PhaseSpace< N, GRND >::GetMotherMass ( ) const
inline

◆ GetSeed()

template<size_t N, typename GRND >
GInt_t hydra::PhaseSpace< N, GRND >::GetSeed ( ) const
inline

Get seed of the underlying generator;.

Returns

◆ operator=() [1/2]

template<size_t N, typename GRND >
PhaseSpace< N, GRND > & hydra::PhaseSpace< N, GRND >::operator= ( PhaseSpace< N, GRND >const &  other)

Assignment operator.

Parameters
other

◆ operator=() [2/2]

template<size_t N, typename GRND >
template<typename GRND2 >
PhaseSpace< N, GRND > & hydra::PhaseSpace< N, GRND >::operator= ( PhaseSpace< N, GRND2 >const &  other)

Assignment operator.

Parameters
other

◆ PDK()

template<size_t N, typename GRND = hydra::default_random_engine>
static double hydra::PhaseSpace< N, GRND >::PDK ( double  a,
double  b,
double  c 
)
inlinestatic

◆ SetECM()

template<size_t N, typename GRND = hydra::default_random_engine>
void hydra::PhaseSpace< N, GRND >::SetECM ( double  ecm)
inline

◆ SetMaxWeight()

template<size_t N, typename GRND = hydra::default_random_engine>
void hydra::PhaseSpace< N, GRND >::SetMaxWeight ( double  maxWeight)
inline

◆ SetMotherMass()

template<size_t N, typename GRND = hydra::default_random_engine>
void hydra::PhaseSpace< N, GRND >::SetMotherMass ( double  motherMass)
inline

◆ SetSeed()

template<size_t N, typename GRND >
void hydra::PhaseSpace< N, GRND >::SetSeed ( GInt_t  _seed)
inline

Set seed of the underlying generator;.

Parameters
_seed

◆ hydra::PhaseSpaceIntegrator

class hydra::PhaseSpaceIntegrator

template<size_t N, typename Backend, typename GRND = hydra::default_random_engine>
class hydra::PhaseSpaceIntegrator< N, Backend, GRND >

Examples:
dalitz_plot.C, and dalitz_plot.inl.
Collaboration diagram for hydra::PhaseSpaceIntegrator< N, Backend, GRND >:

◆ hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >

class hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >

template<size_t N, hydra::detail::Backend BACKEND, typename GRND>
class hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >

Template Parameters
BACKENDto perform the calculation.
Nis the number of particles in final state.
GRNDunderlying random number generator. See the options in hydra::thrust::random namespace.
Inheritance diagram for hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >:
Collaboration diagram for hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >:

Public Types

typedef void hydra_integrator_tag
 
- Public Types inherited from hydra::Integral< PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND > >
typedef void hydra_integrator_type
 

Public Member Functions

 PhaseSpaceIntegrator (const GReal_t motherMass, const GReal_t(&daughtersMasses)[N], size_t n)
 
 PhaseSpaceIntegrator (const GReal_t motherMass, std::array< GReal_t, N > const &daughtersMasses, size_t n)
 
 PhaseSpaceIntegrator (const GReal_t motherMass, std::initializer_list< GReal_t > const &daughtersMasses, size_t n)
 
 PhaseSpaceIntegrator (PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >const &other)
 
template<hydra::detail::Backend BACKEND2, typename GRND2 >
 PhaseSpaceIntegrator (PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND2 >, GRND2 >const &other)
 
const PhaseSpace< N, GRND > & GetGenerator () const
 
PhaseSpace< N, GRND > & GetGenerator ()
 
const Vector4R & GetMother () const
 
size_t GetNSamples () const
 
template<typename FUNCTOR >
std::pair< GReal_t, GReal_tIntegrate (FUNCTOR const &functor)
 
PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND > & operator= (PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >const &other)
 
template<hydra::detail::Backend BACKEND2, typename GRND2 >
PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND > & operator= (PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND2 >, GRND2 >const &other)
 
void SetGenerator (const PhaseSpace< N, GRND > &generator)
 
void SetMother (const Vector4R &mother)
 
void SetNSamples (size_t nSamples)
 
- Public Member Functions inherited from hydra::Integral< PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND > >
std::pair< GReal_t, GReal_toperator() (Functor const &functor)
 
std::pair< GReal_t, GReal_toperator() (Functor const &functor, double(&min)[N], double(&max)[N])
 

Member Typedef Documentation

◆ hydra_integrator_tag

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
typedef void hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::hydra_integrator_tag

Constructor & Destructor Documentation

◆ PhaseSpaceIntegrator() [1/5]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::PhaseSpaceIntegrator ( const GReal_t  motherMass,
const GReal_t(&)  daughtersMasses[N],
size_t  n 
)
inline

◆ PhaseSpaceIntegrator() [2/5]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::PhaseSpaceIntegrator ( const GReal_t  motherMass,
std::array< GReal_t, N > const &  daughtersMasses,
size_t  n 
)
inline

◆ PhaseSpaceIntegrator() [3/5]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::PhaseSpaceIntegrator ( const GReal_t  motherMass,
std::initializer_list< GReal_t > const &  daughtersMasses,
size_t  n 
)
inline

◆ PhaseSpaceIntegrator() [4/5]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::PhaseSpaceIntegrator ( PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >const &  other)
inline

◆ PhaseSpaceIntegrator() [5/5]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
template<hydra::detail::Backend BACKEND2, typename GRND2 >
hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::PhaseSpaceIntegrator ( PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND2 >, GRND2 >const &  other)
inline

Member Function Documentation

◆ GetGenerator() [1/2]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
const PhaseSpace<N, GRND>& hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::GetGenerator ( ) const
inline

◆ GetGenerator() [2/2]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
PhaseSpace<N, GRND>& hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::GetGenerator ( )
inline

◆ GetMother()

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
const Vector4R& hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::GetMother ( ) const
inline

◆ GetNSamples()

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
size_t hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::GetNSamples ( ) const
inline

◆ Integrate()

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
template<typename FUNCTOR >
std::pair< GReal_t, GReal_t > hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::Integrate ( FUNCTOR const &  functor)

◆ operator=() [1/2]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
PhaseSpaceIntegrator<N,hydra::detail::BackendPolicy<BACKEND>, GRND>& hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::operator= ( PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >const &  other)
inline

◆ operator=() [2/2]

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
template<hydra::detail::Backend BACKEND2, typename GRND2 >
PhaseSpaceIntegrator<N,hydra::detail::BackendPolicy<BACKEND>, GRND>& hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::operator= ( PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND2 >, GRND2 >const &  other)
inline

◆ SetGenerator()

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
void hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::SetGenerator ( const PhaseSpace< N, GRND > &  generator)
inline

◆ SetMother()

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
void hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::SetMother ( const Vector4R &  mother)
inline

◆ SetNSamples()

template<size_t N, hydra::detail::Backend BACKEND, typename GRND >
void hydra::PhaseSpaceIntegrator< N, hydra::detail::BackendPolicy< BACKEND >, GRND >::SetNSamples ( size_t  nSamples)
inline

Function Documentation

◆ __hydra_align__()

class hydra::__hydra_align__ ( 16  )

#include <Vector3R.h>

This class represents three-dimensional Euclidian vectors and implements common operation performed on it.

This class represents four-dimensional relativistic vectors and implements common operation performed on it.

This class is inspired on the corresponding EvtGen classes.