103 itkExceptionMacro(
"No Time Grid Set! Cannot Calculate Signal");
110 unsigned int timeSteps = this->
m_TimeGrid.GetSize();
121 double alpha1 = 0.5 * ((k2 + k3 + k4) - sqrt(
square(k2 + k3 + k4) - 4 * k2 * k4));
122 double alpha2 = 0.5 * ((k2 + k3 + k4) + sqrt(
square(k2 + k3 + k4) - 4 * k2 * k4));
127 aterialInputFunction, alpha1);
129 aterialInputFunction, alpha2);
136 mitk::ModelBase::ModelResultType::const_iterator exp1Pos = exp1.begin();
137 mitk::ModelBase::ModelResultType::const_iterator exp2Pos = exp2.begin();
138 AterialInputFunctionType::const_iterator aifPos = aterialInputFunction.begin();
140 for (mitk::ModelBase::ModelResultType::iterator signalPos = signal.begin();
141 signalPos != signal.end(); ++exp1Pos, ++exp2Pos, ++signalPos, ++aifPos)
143 double Ci = k1 / (alpha2 - alpha1) * ((k4 - alpha1 + k3) * (*exp1Pos) + (alpha2 - k4 - k3) *
145 *signalPos = VB * (*aifPos) + (1 - VB) * Ci;
161 return newClone.GetPointer();
ParamterUnitMapType GetParameterUnits() const override
static const std::string UNIT_PARAMETER_k3
static const unsigned int POSITION_PARAMETER_VB
static const std::string MODEL_DISPLAY_NAME
ModelTraitsInterface::ParametersType ParametersType
static const unsigned int POSITION_PARAMETER_k3
static const std::string UNIT_PARAMETER_k2
std::string GetModelType() const override
ParametersSizeType GetNumberOfParameters() const override
std::string GetModelDisplayName() const override
static const std::string NAME_PARAMETER_K1
static const std::string UNIT_PARAMETER_k4
TwoTissueCompartmentModel()
~TwoTissueCompartmentModel() override
void PrintSelf(std::ostream &os, ::itk::Indent indent) const override
const AterialInputFunctionType GetAterialInputFunction(TimeGridType currentTimeGrid) const
static const unsigned int POSITION_PARAMETER_k4
ModelResultType ComputeModelfunction(const ParametersType ¶meters) const override
static const unsigned int POSITION_PARAMETER_K1
ModelTraitsInterface::ParametersSizeType ParametersSizeType
ModelTraitsInterface::ModelResultType ModelResultType
void PrintSelf(std::ostream &os, ::itk::Indent indent) const override
itk::Array< double > AterialInputFunctionType
static const std::string UNIT_PARAMETER_K1
static const unsigned int NUMBER_OF_PARAMETERS
ModelTraitsInterface::ParameterNamesType ParameterNamesType
static const std::string NAME_PARAMETER_VB
static const unsigned int POSITION_PARAMETER_k2
itk::LightObject::Pointer InternalClone() const override
itk::Array< double > convoluteAIFWithExponential(mitk::ModelBase::TimeGridType timeGrid, mitk::AIFBasedModelBase::AterialInputFunctionType aif, double lambda)
static const std::string NAME_PARAMETER_k2
std::map< ParameterNameType, std::string > ParamterUnitMapType
ParameterNamesType GetParameterNames() const override
static const std::string UNIT_PARAMETER_VB
static const std::string NAME_PARAMETER_k3
static const std::string NAME_PARAMETER_k4