00001 #include "qseexafsoperator.h"
00002 #include "qsedataset.h"
00003 #include "qsescan.h"
00004
00005 QseEXAFSOperator::QseEXAFSOperator
00006 (QseDataSet* inData, QseDataSet* outData, const QString& name, QObject* parent)
00007 : QseOperator(name, parent),
00008 m_InputData(inData),
00009 m_OutputData(outData),
00010 m_EnergyPattern(this, "energypattern",NULL),
00011 m_DetectorPattern(this, "detectorpattern",NULL),
00012 m_NormalizationPattern(this, "normalizationpattern",NULL),
00013 m_SecondsPattern(this, "secondspattern",NULL)
00014 {
00015 }
00016
00017 bool QseEXAFSOperator::matchesEnergyPattern(const QseColumn *c, int colnum)
00018 {
00019 bool res = false;
00020
00021 if (c) {
00022 QRegExp r = m_EnergyPattern.value().toRegExp();
00023
00024 res = r.exactMatch(c->name()) || r.exactMatch(QString::number(colnum));
00025 }
00026
00027 return res;
00028 }
00029
00030 bool QseEXAFSOperator::matchesEnergyColumn(const QseColumn *c, int colnum)
00031 {
00032 bool res = false;
00033
00034 if (c) {
00035 QseColumnRole r = UnspecifiedRole;
00036
00037 if (m_Exceptions.contains(c)) {
00038 r = m_Exceptions[c];
00039 }
00040
00041 if (r == UnspecifiedRole) {
00042 QRegExp r = m_EnergyPattern.value().toRegExp();
00043
00044 res = r.exactMatch(c->name()) || r.exactMatch(QString::number(colnum));
00045 } else {
00046 res = (r == EnergyRole);
00047 }
00048 }
00049
00050 return res;
00051 }
00052
00053 bool QseEXAFSOperator::matchesDetectorPattern(const QseColumn *c, int colnum)
00054 {
00055 bool res = false;
00056
00057 if (c) {
00058 QRegExp r = m_DetectorPattern.value().toRegExp();
00059
00060 res = r.exactMatch(c->name()) || r.exactMatch(QString::number(colnum));
00061 }
00062
00063 return res;
00064 }
00065
00066 bool QseEXAFSOperator::matchesDetectorColumn(const QseColumn *c, int colnum)
00067 {
00068 bool res = false;
00069
00070 if (c) {
00071 QseColumnRole r = UnspecifiedRole;
00072
00073 if (m_Exceptions.contains(c)) {
00074 r = m_Exceptions[c];
00075 }
00076
00077 if (r == UnspecifiedRole) {
00078 QRegExp r = m_DetectorPattern.value().toRegExp();
00079
00080 res = r.exactMatch(c->name()) || r.exactMatch(QString::number(colnum));
00081 } else {
00082 res = (r == DetectorRole);
00083 }
00084 }
00085
00086 return res;
00087 }
00088
00089 bool QseEXAFSOperator::matchesNormalizationPattern(const QseColumn *c, int colnum)
00090 {
00091 bool res = false;
00092
00093 if (c) {
00094 QRegExp r = m_NormalizationPattern.value().toRegExp();
00095
00096 res = r.exactMatch(c->name()) || r.exactMatch(QString::number(colnum));
00097 }
00098
00099 return res;
00100 }
00101
00102 bool QseEXAFSOperator::matchesNormalizationColumn(const QseColumn *c, int colnum)
00103 {
00104 bool res = false;
00105
00106 if (c) {
00107 QseColumnRole r = UnspecifiedRole;
00108
00109 if (m_Exceptions.contains(c)) {
00110 r = m_Exceptions[c];
00111 }
00112
00113 if (r == UnspecifiedRole) {
00114 QRegExp r = m_NormalizationPattern.value().toRegExp();
00115
00116 res = r.exactMatch(c->name()) || r.exactMatch(QString::number(colnum));
00117 } else {
00118 res = (r == NormalizationRole);
00119 }
00120 }
00121
00122 return res;
00123 }
00124
00125 bool QseEXAFSOperator::matchesSecondsPattern(const QseColumn *c, int colnum)
00126 {
00127 bool res = false;
00128
00129 if (c) {
00130 QRegExp r = m_SecondsPattern.value().toRegExp();
00131
00132 res = r.exactMatch(c->name()) || r.exactMatch(QString::number(colnum));
00133 }
00134
00135 return res;
00136 }
00137
00138 bool QseEXAFSOperator::matchesSecondsColumn(const QseColumn *c, int colnum)
00139 {
00140 bool res = false;
00141
00142 if (c) {
00143 QseColumnRole r = UnspecifiedRole;
00144
00145 if (m_Exceptions.contains(c)) {
00146 r = m_Exceptions[c];
00147 }
00148
00149 if (r == UnspecifiedRole) {
00150 QRegExp r = m_SecondsPattern.value().toRegExp();
00151
00152 res = r.exactMatch(c->name()) || r.exactMatch(QString::number(colnum));
00153 } else {
00154 res = (r == SecondsRole);
00155 }
00156 }
00157
00158 return res;
00159 }
00160
00161 QseDataSet *QseEXAFSOperator::inputData()
00162 {
00163 return m_InputData;
00164 }
00165
00166 QseDataSet *QseEXAFSOperator::outputData()
00167 {
00168 return m_OutputData;
00169 }