void Engine::readData()
{
	DataReader dr;
	dr.readFile(m_programSettings->getEngineSettings().datafile);

	if(!dr.good())
	{
		throw Engine::Exception("File " + m_programSettings->getEngineSettings().datafile +
				" has not been read or has no a header");
	}

	if(dr.columnExist("[intensity]"))
	{
		dr.getColumn(m_exp_intens_vals, "[intensity]");
	}
	else
	{
		throw Engine::Exception("Column \"[intensity]\" has not been found in " +
				m_programSettings->getEngineSettings().datafile);
	}

	if (dr.columnExist("[qx]"))
	{
		//get points without any transformation
		dr.getColumn(m_qx_vals, "[qx]");
	}
	else
	{
		throw Engine::Exception("Column \"[qx]\" has not been found in "+
				m_programSettings->getEngineSettings().datafile);
	}

	if (dr.columnExist("[qz]"))
	{
		//get points without any transformation
		dr.getColumn(m_qz_vals, "[qz]");
	}
	else
	{
		throw Engine::Exception("Column \"[qz]\" has not been found in "+
				m_programSettings->getEngineSettings().datafile);
	}

	/*allocate arguments and residuals*/
	for(size_t i = 0; i < m_exp_intens_vals.size(); ++i)
	{
		m_DataPoints.push_back(
				NonlinearFit::DataPoint(new ANACalculatorCoplanarTripleArgument(m_qx_vals[i], m_qz_vals[i]),
						m_exp_intens_vals[i]));
	}

	m_ini_intens_vals.resize(m_exp_intens_vals.size(), 0.0);
	m_fin_intens_vals.resize(m_exp_intens_vals.size(), 0.0);

	std::cout << "Nb data residuals:\t" << m_DataPoints.size() << std::endl;
}