/** @file GenericFunctor.cpp @author Brian Magill @creation date 11/15/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 Framework for transforming signals @note At the moment this class is very specific to SOFIE. It is unclear how to generallize it easily. */ #include #include #include #include #include "SOFIE_namespace.h" #include "GATS_Utilities.hpp" #include "GenericFunctor.h" #include "ChannelSignals.h" using namespace std; using namespace GATS_Utilities; GenericFunctor const & GenericFunctor::operator = (GenericFunctor const &rhs) { if(&rhs == this) return *this; algoPtr = rhs.algoPtr; return *this; }; MultiSignal GenericFunctor::operator() (MultiSignal const &inSignal) const { valarray timeArray; vector signalArray; // int gasID; valarray strongSig(inSignal.size() ); valarray weakSig(inSignal.size() ); valarray diffSig(inSignal.size() ); valarray correctedDiff(inSignal.size()); // int indx; Journal auditJournal; string processName = algoPtr->getName(); ChannelSignals inChannel; ChannelSignals outChannel; string comments; double time_150km = inSignal.get150kmTime(); bool sunsetMode = inSignal.getModeFlag(); inSignal.getTime(timeArray); auditJournal = inSignal.getAudit(); for(int indx = 0; indx < inSignal.numberOfSignals(); indx++) try { inChannel = inSignal.getChannel(indx); algoPtr->applyCorrection(timeArray, inChannel, outChannel, comments); signalArray.push_back(outChannel); } catch (exception &ex) { cerr << "Exception thrown in algorithm :" << algoPtr->getName() << endl; cerr << "Channel Gas ID: " << inChannel.getID() << endl; cerr << "Exception Message: " << ex.what() << endl; cerr << "Additional comments: " << comments << endl; // cerr << "Current Audit Trail: " << inSignal.getAudit() << endl; cerr << "Current Audit Trail: "; inSignal.getAudit().print(cerr); cerr << endl; throw; } // set up information for extending audit trail // string auditMsg = inSignal.getAudit() + string("\n\t") // + processName; // MultiSignal outSignal(inSignal.getEventNumber(), timeArray, signalArray, auditMsg) ; auditJournal.append(processName); MultiSignal outSignal(inSignal.getEventNumber(), time_150km, sunsetMode, timeArray, signalArray, auditJournal) ; return outSignal; };