/** @file DarkSigCoder.cpp @author Brian Magill @date 1/04/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 Encodes/decodes DarkSigParam objects in relation to an Event object */ #include "DarkSigCoder.h" #include "SOFIE_namespace.h" using namespace std; void DarkSigCoder::operator()(Event &event) const { if (paramVect.size() == 0 ) return; if (!paramVect[0].hasData() ) return; EventVar IdVar; IdVar.setName("L1_Dark_Correction_Performed"); event.addEventVar(IdVar); unsigned long NumberOfChannels = paramVect.size(); // EventVar valOffset("L1_Dark_Offset", 2*paramVect.size()); // EventVar valStDev("L1_Dark_Std_Dev", 2*paramVect.size() ); EventVar valOffset("L1_Dark_Offset", 3*paramVect.size()); EventVar valTimeRef("L1_Dark_time_ref", 3*paramVect.size() ); EventVar valStDev("L1_Dark_Std_Dev", 3*paramVect.size() ); EventVar valQuality("L1_Dark_Offset_Quality", 3*paramVect.size() ); int indx; for(int i = 0; i < NumberOfChannels; i++) { indx = 2*i; if(i == SOFIE::H2O || i == SOFIE::NO) { valOffset[indx] = paramVect[i].getOffset(SOFIE::Weak); valOffset[indx + 1] = paramVect[i].getOffset(SOFIE::Strong); valTimeRef[indx] = paramVect[i].getTimeRef(SOFIE::Weak); valTimeRef[indx + 1] = paramVect[i].getTimeRef(SOFIE::Strong); valStDev[indx] = paramVect[i].getSigma(SOFIE::Weak); valStDev[indx + 1] = paramVect[i].getSigma(SOFIE::Strong); valQuality[indx] = paramVect[i].getQuality(SOFIE::Weak); valQuality[indx + 1] = paramVect[i].getQuality(SOFIE::Strong); } else { valOffset[indx] = paramVect[i].getOffset(SOFIE::Strong); valOffset[indx + 1] = paramVect[i].getOffset(SOFIE::Weak); valTimeRef[indx] = paramVect[i].getTimeRef(SOFIE::Strong); valTimeRef[indx + 1] = paramVect[i].getTimeRef(SOFIE::Weak); valStDev[indx] = paramVect[i].getSigma(SOFIE::Strong); valStDev[indx + 1] = paramVect[i].getSigma(SOFIE::Weak); valQuality[indx] = paramVect[i].getQuality(SOFIE::Strong); valQuality[indx + 1] = paramVect[i].getQuality(SOFIE::Weak); } } // output slopes for difference signals indx = 2*NumberOfChannels; for(int i = 0; i < NumberOfChannels; i++) { valOffset[indx + i] = paramVect[i].getOffset(SOFIE::Diff); valTimeRef[indx + i] = paramVect[i].getTimeRef(SOFIE::Diff); valStDev[indx + i] = paramVect[i].getSigma(SOFIE::Diff); valQuality[indx + i] = paramVect[i].getQuality(SOFIE::Diff); } event.addEventVar(valOffset); event.addEventVar(valTimeRef); event.addEventVar(valStDev); event.addEventVar(valQuality); }