Tomographer  v5.2
Tomographer C++ Framework Documentation
Tomographer::MHRWMultipleControllers< MHRWControllerTypes > Class Template Reference

A MHRWController Interface which combines several independent random walk controllers. More...

#include <tomographer/mhrw.h>

Public Types

enum  
 
typedef std::tuple< MHRWControllerTypes... > TupleType
 
typedef std::tuple< MHRWControllerTypes &... > TupleRefType
 

Public Member Functions

 MHRWMultipleControllers (MHRWControllerTypes &... controllers_)
 
template<int I>
const std::tuple_element< I, TupleRefType >::type getController () const
 
template<typename MHRWParamsType , typename MHWalker , typename MHRandomWalkType , int I = 0, ENABLED_IF( I< NumControllers) >
void init (MHRWParamsType &params, const MHWalker &mhwalker, const MHRandomWalkType &mhrw)
 
template<typename MHRWParamsType , typename MHWalker , typename MHRandomWalkType , int I = 0, ENABLED_IF( I==NumControllers) >
void init (const MHRWParamsType &, const MHWalker &, const MHRandomWalkType &) const
 
template<typename MHRWParamsType , typename MHWalker , typename MHRandomWalkType , int I = 0, ENABLED_IF( I< NumControllers) >
void thermalizingDone (MHRWParamsType &params, const MHWalker &mhwalker, const MHRandomWalkType &mhrw)
 
template<typename MHRWParamsType , typename MHWalker , typename MHRandomWalkType , int I = 0, ENABLED_IF( I==NumControllers) >
void thermalizingDone (const MHRWParamsType &, const MHWalker &, const MHRandomWalkType &) const
 
template<typename MHRWParamsType , typename MHWalker , typename MHRandomWalkType , int I = 0, ENABLED_IF( I< NumControllers) >
void done (MHRWParamsType &params, const MHWalker &mhwalker, const MHRandomWalkType &mhrw)
 
template<typename MHRWParamsType , typename MHWalker , typename MHRandomWalkType , int I = 0, ENABLED_IF( I==NumControllers) >
void done (const MHRWParamsType &, const MHWalker &, const MHRandomWalkType &) const
 
template<bool IsThermalizing, bool IsAfterSample, typename MHRWParamsType , typename CountIntType , typename MHWalker , typename MHRandomWalkType , int I = 0, ENABLED_IF( I< NumControllers) >
void adjustParams (MHRWParamsType &params, const MHWalker &mhwalker, CountIntType iter_k, const MHRandomWalkType &mhrw)
 
template<bool IsThermalizing, bool IsAfterSample, typename MHRWParamsType , typename CountIntType , typename MHWalker , typename MHRandomWalkType , int I = 0, ENABLED_IF( I==NumControllers) >
void adjustParams (const MHRWParamsType &, const MHWalker &, CountIntType, const MHRandomWalkType &) const
 
template<typename MHRWParamsType , typename MHWalker , typename CountIntType , typename MHRandomWalkType , int I = 0, ENABLED_IF( I< NumControllers) >
bool allowDoneThermalization (const MHRWParamsType &params, const MHWalker &mhwalker, CountIntType iter_k, const MHRandomWalkType &mhrw)
 
template<typename MHRWParamsType , typename MHWalker , typename CountIntType , typename MHRandomWalkType , int I = 0, ENABLED_IF( I==NumControllers) >
bool allowDoneThermalization (const MHRWParamsType &, const MHWalker &, CountIntType, const MHRandomWalkType &) const
 
template<typename MHRWParamsType , typename MHWalker , typename CountIntType , typename MHRandomWalkType , int I = 0, ENABLED_IF( I< NumControllers) >
bool allowDoneRuns (const MHRWParamsType &params, const MHWalker &mhwalker, CountIntType iter_k, const MHRandomWalkType &mhrw)
 
template<typename MHRWParamsType , typename MHWalker , typename CountIntType , typename MHRandomWalkType , int I = 0, ENABLED_IF( I==NumControllers) >
bool allowDoneRuns (const MHRWParamsType &, const MHWalker &, CountIntType, const MHRandomWalkType &) const
 

Static Public Attributes

static constexpr int NumControllers = sizeof...(MHRWControllerTypes)
 

Detailed Description

template<typename ... MHRWControllerTypes>
class Tomographer::MHRWMultipleControllers< MHRWControllerTypes >

A MHRWController Interface which combines several independent random walk controllers.

The random walk controllers must be compatible. Two controllers A and B are compatible if they perform adjustments at different stages of the random walk (e.g., one during thermalization and the other during the live runs) as given by their AdjustmentStrategy flags.

The allowDoneRuns() and allowDoneThermalization() callbacks do not affect whether controllers are compatible. The thermalization runs end only after all the controllers' allowDoneThermalization() callbacks return true, and similarly the live runs end only after all the controllers' allowDoneRuns() callbacks return true.

Since
Added in Tomographer 5.0.

Definition at line 357 of file mhrw.h.


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