00001 #include "qsedatareference.h"
00002 #include "qsedataset.h"
00003
00004 QseDataReference::QseDataReference(const QseDataSet *ds, int scan, int xcol, int ycol, int normcol)
00005 : m_DataSet(ds),
00006 m_Scan(scan),
00007 m_XCol(xcol),
00008 m_YCol(ycol),
00009 m_NormCol(normcol),
00010 m_XData(ds->scan(scan)->column(xcol)),
00011 m_YData(ds->scan(scan)->column(ycol)),
00012 m_NormData(NULL)
00013 {
00014 if (m_NormCol >= 0) {
00015 m_NormData = ds->scan(scan)->column(m_NormCol);
00016 }
00017 }
00018
00019 size_t QseDataReference::size() const
00020 {
00021 return m_XData->rowCount();
00022 }
00023
00024 double QseDataReference::x(size_t i) const
00025 {
00026 return m_XData->data(i);
00027 }
00028
00029 double QseDataReference::y(size_t i) const
00030 {
00031 if (m_NormData) {
00032 return m_YData->data(i)/m_NormData->data(i);
00033 } else {
00034 return m_YData->data(i);
00035 }
00036 }
00037
00038 QseDataReference* QseDataReference::copy() const
00039 {
00040 return new QseDataReference(m_DataSet, m_Scan, m_XCol, m_YCol, m_NormCol);
00041 }