ANIMA  4.0
animaB1GammaDistributionIntegrand.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "AnimaRelaxometryExport.h"
4 
5 #include <vector>
6 #include <map>
8 
9 namespace anima
10 {
11 
16 class ANIMARELAXOMETRY_EXPORT B1GammaDistributionIntegrand
17 {
18 public:
19  using EPGVectorsMapType = std::map <double, anima::EPGSignalSimulator::RealVectorType>;
21  : m_EPGSimulator(sigSim), m_EPGVectors (val) {}
22 
23  void SetT1Value(double val) {m_T1Value = val;}
24  void SetFlipAngle(double val) {m_FlipAngle = val;}
25  void SetEchoNumber(unsigned int val) {m_EchoNumber = val;}
26 
27  void SetGammaMean(double val) {m_GammaMean = val;}
28  void SetGammaVariance(double val) {m_GammaVariance = val;}
29 
30  virtual double operator() (double const t);
31 
32 protected:
35 
36  double m_T1Value;
37  double m_FlipAngle;
38  unsigned int m_EchoNumber;
39 
42 
43  double m_GammaMean, m_GammaVariance;
44 };
45 
46 } // end namespace anima
EPGVectorsMapType & m_EPGVectors
Since boost Gauss Legendre integration works on object copies, we need to keep a reference to EPG vec...
Integrand to compute the internal integral per distribution in B1GammaMixtureT2RelaxometryCostFunctio...
anima::EPGSignalSimulator & m_EPGSimulator
EPG signal simulator reference: instantiated outside.
B1GammaDistributionIntegrand(anima::EPGSignalSimulator &sigSim, EPGVectorsMapType &val)
std::map< double, anima::EPGSignalSimulator::RealVectorType > EPGVectorsMapType