ANIMA  4.0
animaZeppelinCompartment.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <animaBaseCompartment.h>
5 #include <AnimaMCMExport.h>
6 
7 namespace anima
8 {
9 
10 class ANIMAMCM_EXPORT ZeppelinCompartment : public BaseCompartment
11 {
12 public:
13  // Useful typedefs
17  typedef itk::SmartPointer<Self> Pointer;
18  typedef itk::SmartPointer<const Self> ConstPointer;
22 
23  // New macro
24  itkNewMacro(Self)
25 
26 
28 
29  DiffusionModelCompartmentType GetCompartmentType() ITK_OVERRIDE {return Zeppelin;}
30 
31  virtual double GetFourierTransformedDiffusionProfile(double smallDelta, double bigDelta, double gradientStrength, const Vector3DType &gradient) ITK_OVERRIDE;
32  virtual ListType &GetSignalAttenuationJacobian(double smallDelta, double bigDelta, double gradientStrength, const Vector3DType &gradient) ITK_OVERRIDE;
33  virtual double GetLogDiffusionProfile(const Vector3DType &sample) ITK_OVERRIDE;
34 
35  virtual void SetParametersFromVector(const ListType &params) ITK_OVERRIDE;
36  virtual ListType &GetParametersAsVector() ITK_OVERRIDE;
37 
38  virtual ListType &GetParameterLowerBounds() ITK_OVERRIDE;
39  virtual ListType &GetParameterUpperBounds() ITK_OVERRIDE;
40 
41  // Set constraints
42  void SetEstimateDiffusivities(bool arg);
43  void SetCompartmentVector(ModelOutputVectorType &compartmentVector) ITK_OVERRIDE;
44 
45  unsigned int GetCompartmentSize() ITK_OVERRIDE;
46  unsigned int GetNumberOfParameters() ITK_OVERRIDE;
47  ModelOutputVectorType &GetCompartmentVector() ITK_OVERRIDE;
48 
49  void SetRadialDiffusivity1(double num) ITK_OVERRIDE;
50 
51  const Matrix3DType &GetDiffusionTensor() ITK_OVERRIDE;
52  double GetApparentFractionalAnisotropy() ITK_OVERRIDE;
53  double GetApparentMeanDiffusivity() ITK_OVERRIDE;
54  double GetApparentParallelDiffusivity() ITK_OVERRIDE;
55  double GetApparentPerpendicularDiffusivity() ITK_OVERRIDE;
56 
57 protected:
58  ZeppelinCompartment() : Superclass()
59  {
60  m_EstimateDiffusivities = true;
61  m_ChangedConstraints = true;
62  m_GradientEigenvector1 = 0;
63  }
64 
65  virtual ~ZeppelinCompartment() {}
66 
67 private:
68  bool m_EstimateDiffusivities;
69  bool m_ChangedConstraints;
70  unsigned int m_NumberOfParameters;
71  double m_GradientEigenvector1;
72 };
73 
74 } //end namespace anima
75 
std::vector< double > ListType
Superclass::ModelOutputVectorType ModelOutputVectorType
itk::SmartPointer< const Self > ConstPointer
itk::VariableLengthVector< double > ModelOutputVectorType
itk::Matrix< double, 3, 3 > Matrix3DType
vnl_vector_fixed< double, 3 > Vector3DType
itk::SmartPointer< Self > Pointer
DiffusionModelCompartmentType
itk::SmartPointer< Self > Pointer
Superclass::Matrix3DType Matrix3DType
Superclass::Vector3DType Vector3DType