#include "ADMFMTwoCurrency.h"


// TODO uncomment this constructor and correct, use constructor for HullWhiteMFMTwoCurrency as a guide, you just need to feed right parameters to MFMTwoCurrency<TwoCurrencyArrowDebreuCalibrator>
/*
ADMFMTwoCurrency::ADMFMTwoCurrency(
	size_t gridpoints_per_slice, double sd_spread, size_t poly_order,
	gelib::d_vector const& times, const std::array<double, 2>& mean_reversion_params, const std::array<double, 2>& discount_factors_t1,
	const std::array<gelib::d_vector, 2>& accrual_factors, const std::array<gelib::d_vector, 2>& forward_libors,
	const std::array<gelib::d_vector, 3>& option_volatilities, const std::array<gelib::d_vector, 3>& process_volatilities,
	const std::array<gelib::d_vector, 3>& process_correlations)
	:
	MFMTwoCurrency<TwoCurrencyArrowDebreuCalibrator>()
{
}
*/

void ADMFMTwoCurrency::constructor_check(size_t gridpoints_per_slice, double sd_spread, size_t poly_order, gelib::d_vector const& times, const std::array<double, 2>& mean_reversion_params, const std::array<double, 2>& discount_factors_t1, const std::array<gelib::d_vector, 2>& accrual_factors, const std::array<gelib::d_vector, 2>& forward_libors, const std::array<gelib::d_vector, 3>& option_volatilities, const std::array<gelib::d_vector, 3>& process_volatilities, const std::array<gelib::d_vector, 3>& process_correlations)
{

	MFMGeneral<TwoCurrencyArrowDebreuCalibrator>::constructor_check(gridpoints_per_slice, sd_spread, poly_order, times);
	InterestRateTimeSliceProcess::constructor_check(sd_spread, gridpoints_per_slice, mean_reversion_params[0], process_volatilities[0], discount_factors_t1[0], forward_libors[0], option_volatilities[0], accrual_factors[0]);
	InterestRateTimeSliceProcess::constructor_check(sd_spread, gridpoints_per_slice, mean_reversion_params[1], process_volatilities[2], discount_factors_t1[1], forward_libors[1], option_volatilities[2], accrual_factors[1]);

}

