/** @file DriftCoder.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 DriftParam objects in relation to an Event object NB: Time reference should be the same for all signals for a given event */ #include "DriftCoder.h" #include "SOFIE_namespace.h" using namespace std; void DriftCoder::operator()(Event &event) const { if (paramVect.size() == 0 ) return; if (!paramVect[0].hasData() ) return; EventVar IdVar; IdVar.setName("L1_Drift_Correction_Performed"); event.addEventVar(IdVar); unsigned long NumberOfChannels = paramVect.size(); EventVar valtimeRef("L1_Drift_Time_Ref", 3*paramVect.size()); EventVar valInterval("L1_Drift_Time_Interval", 3*paramVect.size()); EventVar valSlope("L1_Drift_Slope", 3*paramVect.size()); EventVar valStDev("L1_Drift_Std", 3*paramVect.size() ); EventVar valsigRef("L1_Drift_Signal_Ref", 3*paramVect.size() ); EventVar valQuality("L1_Drift_Quality", 3*paramVect.size() ); int indx; for(int i = 0; i < NumberOfChannels; i++) { indx = 2*i; if(i == SOFIE::H2O || i == SOFIE::NO) { valSlope[indx] = paramVect[i].getSlope(SOFIE::Weak); valSlope[indx + 1] = paramVect[i].getSlope(SOFIE::Strong); valStDev[indx] = paramVect[i].getSigma(SOFIE::Weak); valStDev[indx + 1] = paramVect[i].getSigma(SOFIE::Strong); valsigRef[indx] = paramVect[i].getSigRef(SOFIE::Weak); valsigRef[indx + 1] = paramVect[i].getSigRef(SOFIE::Strong); valQuality[indx ] = paramVect[i].getQuality(SOFIE::Weak); valQuality[indx + 1] = paramVect[i].getQuality(SOFIE::Strong); } else { valSlope[indx] = paramVect[i].getSlope(SOFIE::Strong); valSlope[indx + 1] = paramVect[i].getSlope(SOFIE::Weak); valStDev[indx] = paramVect[i].getSigma(SOFIE::Strong); valStDev[indx + 1] = paramVect[i].getSigma(SOFIE::Weak); valsigRef[indx] = paramVect[i].getSigRef(SOFIE::Strong); valsigRef[indx + 1] = paramVect[i].getSigRef(SOFIE::Weak); valQuality[indx ] = paramVect[i].getQuality(SOFIE::Strong); valQuality[indx + 1] = paramVect[i].getQuality(SOFIE::Weak); } valtimeRef[indx ] = paramVect[i].getTimeRef(); valtimeRef[indx + 1] = paramVect[i].getTimeRef(); valInterval[indx ] = paramVect[i].getTimeInterval(); valInterval[indx +1] = paramVect[i].getTimeInterval(); } indx = 2*NumberOfChannels; for(int i = 0; i < NumberOfChannels; i++) { valSlope[indx + i] = paramVect[i].getSlope(SOFIE::Diff); valStDev[indx + i] = paramVect[i].getSigma(SOFIE::Diff); valsigRef[indx + i] = paramVect[i].getSigRef(SOFIE::Diff); valQuality[indx + i] = paramVect[i].getQuality(SOFIE::Diff); valtimeRef[indx + i] = paramVect[i].getTimeRef(); valInterval[indx +i] = paramVect[i].getTimeInterval(); } event.addEventVar(valSlope); event.addEventVar(valStDev); event.addEventVar(valsigRef); event.addEventVar(valQuality); event.addEventVar(valtimeRef); event.addEventVar(valInterval); }