#ifndef POINTING_DRIFT_FUNCTOR_CLASS_4_2_2008 #define POINTING_DRIFT_FUNCTOR_CLASS_4_2_2008 /** @file PointingDriftFunctor.h @author Brian Magill @date 4/02/2008 $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 Removes drift due to solar pointing movement */ #include #include #include #include "MultiSignal.h" #include "GenTransform.hpp" #include "PointingSigParam.h" #include "BalanceTimes.h" #include "CalibrationTimes.h" #include "SigEarthLocParam.h" class PointingDriftFunctor:public GenTransform { private: SigEarthLocParam earthLoc; CalibrationTimes calibTimes; BalanceTimes balTimes; double cutoffTime; mutable std::vector pointingResults; std::valarray filter(double maxValue, std::valarray const & in) const; public: PointingDriftFunctor():earthLoc(), calibTimes(), balTimes(), cutoffTime(0), pointingResults(0) { } PointingDriftFunctor(const SigEarthLocParam & earth, const CalibrationTimes & cal, const BalanceTimes &bal, double cutoff):earthLoc(earth), calibTimes(cal), balTimes(bal), cutoffTime(cutoff), pointingResults(0) { } PointingDriftFunctor(PointingDriftFunctor const &rhs):earthLoc(rhs.earthLoc), calibTimes(rhs.calibTimes), balTimes(rhs.balTimes), cutoffTime(rhs.cutoffTime), pointingResults(rhs.pointingResults) { } PointingDriftFunctor const & operator = (PointingDriftFunctor const &rhs) { if(&rhs == this) return *this; earthLoc = rhs.earthLoc; calibTimes = rhs.calibTimes; balTimes = rhs.balTimes; cutoffTime = rhs.cutoffTime; pointingResults = rhs.pointingResults; return *this; } ~PointingDriftFunctor() { } MultiSignal operator() (MultiSignal const &in) const; std::vector getParam( ) {return pointingResults; } }; #endif