19 #ifndef rtkDualEnergyNegativeLogLikelihood_h 20 #define rtkDualEnergyNegativeLogLikelihood_h 53 #ifdef itkOverrideGetNameOfClassMacro 88 for (
unsigned int i = 0; i < 2; i++)
99 itkExceptionMacro(<<
"Not implemented");
108 vnl_vector<double> variances =
GetVariances(parameters);
110 long double measure = 0;
116 measure += std::log((
long double)variances[i]) +
126 vnl_vector<double> attenuationFactors;
131 vnl_vector<double> intermediate;
134 intermediate[i] = i + 1;
135 intermediate = element_product(attenuationFactors, intermediate);
virtual vnl_vector< double > ForwardModel(const ParametersType &lineIntegrals) const
MeasureType GetValue(const ParametersType ¶meters) const override
unsigned int m_NumberOfEnergies
Superclass::ParametersType ParametersType
Superclass::MaterialAttenuationsType MaterialAttenuationsType
Superclass::MeasureType MeasureType
unsigned int m_NumberOfSpectralBins
DualEnergyNegativeLogLikelihood()
void GetAttenuationFactors(const ParametersType &lineIntegrals, vnl_vector< double > &attenuationFactors) const
Superclass::DetectorResponseType DetectorResponseType
Superclass::IncidentSpectrumType IncidentSpectrumType
MeasuredDataType m_MeasuredData
Superclass::DerivativeType DerivativeType
ThresholdsType m_Thresholds
void GetDerivative(const ParametersType &, DerivativeType &) const override
IncidentSpectrumType m_IncidentSpectrum
vnl_matrix< float > IncidentSpectrumType
vnl_vector< double > GetVariances(const ParametersType &lineIntegrals) const override
Superclass::MeasuredDataType MeasuredDataType
~DualEnergyNegativeLogLikelihood() override=default
itk::VariableSizeMatrix< float > m_Fischer
vnl_matrix< double > MaterialAttenuationsType
DetectorResponseType m_DetectorResponse
Superclass::MeasureType MeasureType
unsigned int m_NumberOfMaterials
void Initialize() override
vnl_matrix< double > m_IncidentSpectrumAndDetectorResponseProduct
itk::VariableLengthVector< double > MeasuredDataType
vnl_matrix< double > DetectorResponseType