00001 #include "qsedatadeglitcher.h" 00002 #include "qsedataset.h" 00003 #include "qsescan.h" 00004 00005 QseDataDeglitcher::QseDataDeglitcher 00006 (QseDataSet* inData, QseDataSet* outData, const QString& name, QObject* parent) 00007 : QseEXAFSOperator(inData, outData, name, parent) 00008 { 00009 } 00010 00011 void QseDataDeglitcher::exec() 00012 { 00013 m_OutputData -> clear(); 00014 00015 int ns = m_InputData -> scanCount(); 00016 00017 for (int s = 0; s < ns; s++) { 00018 QseScan *osc = m_OutputData -> appendScan(); 00019 00020 deglitchScan(s, osc); 00021 } 00022 00023 m_OutputData -> emitLoadCompleted(); 00024 } 00025 00026 void QseDataDeglitcher::deglitchScan(int n, QseScan* osc) 00027 { 00028 // QseScan *sc = m_InputData->scan(n); 00029 00030 // if (sc) { 00031 // int nc = sc -> columnCount(); 00032 // int energycol = -1; 00033 00034 // for (int c = 0; c < nc; c++) { 00035 // QseColumn *col = sc -> column(c); 00036 00037 // if (matchesEnergyColumn(col)) { 00038 // energycol = c; 00039 // } 00040 // } 00041 00042 // if (energycol < 0) { 00043 // emit message(QString("No energy column found for scan %1").arg(n)); 00044 // } else { 00045 // osc -> mergeHeaders(sc->header()); 00046 // osc -> setScanNumber(sc->scanNumber()); 00047 00048 // QseColumn *energy = osc -> appendColumn("Energy", sc -> column(energycol)); 00049 // QseColumn *normal = osc -> appendColumn("Norm"); 00050 // QseColumn *detect = osc -> appendColumn("Detector"); 00051 // QseColumn *seconds = osc -> appendColumn("Seconds"); 00052 00053 // energy -> multiplication(energyScalingRatio()); 00054 00055 // int nnorm = 0, ndet = 0, nsecs = 0; 00056 00057 // for (int c = 0; c < nc; c++) { 00058 // QseColumn *col = sc -> column(c); 00059 00060 // if (matchesNormalizationColumn(col)) { 00061 // nnorm += 1; 00062 // normal -> addition(col); 00063 // } else if (matchesDetectorColumn(col)) { 00064 // ndet += 1; 00065 // detect -> addition(col); 00066 // } else if (matchesSecondsColumn(col)) { 00067 // nsecs += 1; 00068 // seconds -> addition(col); 00069 // } 00070 // } 00071 00072 // if (nnorm > 0) { 00073 // QseColumn *ratio = osc -> appendColumn("Ratio", detect); 00074 00075 // ratio -> division(normal); 00076 00077 // emit message(QString("Scan %1 had %2 detector columns, was normalized by %3 ion chambers").arg(n).arg(ndet).arg(nnorm)); 00078 // } else if (nsecs > 0) { 00079 // QseColumn *ratio = osc -> appendColumn("Ratio", detect); 00080 00081 // ratio -> division(seconds); 00082 // emit message(QString("Scan %1 had %2 detector columns, was normalized by counting time").arg(n).arg(ndet)); 00083 // } else { 00084 // QseColumn *ratio = osc -> appendColumn("Ratio", detect); 00085 00086 // emit message(QString("Scan %1 had %2 detector columns, no normalization performed").arg(n).arg(ndet)); 00087 // } 00088 // } 00089 // } 00090 }
1.5.5