/** @class ChannelSignals.cpp @author Brian Magill @creation date 11/13/2006 $Date:$ $Revision:$ @copyright (©) Copyright 2006 by GATS Inc. 11864 Canon Blvd., Suite 101, Newport News, VA 23606 All Rights Reserved. No part of this software or publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise without the prior written permission of GATS Inc. @brief Data class for one channel. Contains high, low, and difference signals */ #include "ChannelSignals.h" #include #include "SOFIE_namespace.h" using namespace std; ChannelSignals::ChannelSignals(ChannelSignals const &rhs) { gasID = rhs.gasID; atten = rhs.atten; signalData.clear(); signalData.push_back(rhs.signalData.at(SOFIE::Strong)); signalData.push_back(rhs.signalData.at(SOFIE::Weak)); signalData.push_back(rhs.signalData.at(SOFIE::Diff)); }; ChannelSignals const & ChannelSignals::operator = (ChannelSignals const &rhs) { if(&rhs == this) return *this; gasID = rhs.gasID; atten = rhs.atten; signalData.clear(); signalData.push_back(rhs.signalData.at(SOFIE::Strong)); signalData.push_back(rhs.signalData.at(SOFIE::Weak)); signalData.push_back(rhs.signalData.at(SOFIE::Diff)); return *this; }; //id ChannelSignals::getSignal(int type, std::valarray const &v_out) const; void ChannelSignals::getSignal(int indx, std::valarray &v_out) const { v_out.resize(signalData.at(indx).size() ); v_out = signalData[indx]; }; std::valarray ChannelSignals::getSignal(int indx) const { //std::cout << " this is in getSignals " << indx << //" " << signalData.size() << std::endl; //std::cout << signalData[2].size() << std::endl; // valarray bbb (signalData.at(indx) ); // std::cout << " wheee " << std::endl; return signalData.at(indx) ; // return valarray (signalData.at(indx)); }; double ChannelSignals::average(int indx) const { valarray xArray(signalData.at(indx) ); return xArray.sum()/xArray.size(); }; double ChannelSignals::rms(int indx) const { valarray xArray(signalData.at(indx) ); return sqrt( (xArray*xArray).sum()/xArray.size() ); }; void ChannelSignals::dump() const { // unsigned long i; unsigned long j; cout << "Gas ID : " << gasID << endl; cout << "Attenuation: " << endl; cout << "\tStrong : " << atten[0] << endl; cout << "\tWeak : " << atten[1] << endl; ; cout << "signals:" << endl; cout << "\tStrong : "; for(j = 0; j < signalData[0].size(); j++) cout << signalData[0][j] << " "; cout << endl; cout << "\tWeak : "; for(j = 0; j < signalData[0].size(); j++) cout << signalData[1][j] << " "; cout << endl; cout << "\tDifference: "; for(j = 0; j < signalData[0].size(); j++) cout << signalData[2][j] << " "; cout << endl; };