#ifndef _SOFIELEVEL1_H_ #define _SOFIELEVEL1_H_ /** @file SOFIELeve1.cpp @brief Top level routine for the SOFIE Level 1 Processing System Uses 4 Event objects as the primary container for data flowing through the processing system @author John Burton @date Fri Apr 14 17:03:48 2006 @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. */ // //----------------------------------------------------------------------- // Include Files: //----------------------------------------------------------------------- // #include "AltitudeRegistration.h" #include "AuxDataInput.h" #include "CO2ProfileSimulation.h" #include "DetectorTimeShift.h" #include "FPACorrection.h" #include "Level0DataInput.h" #include "Level1DataOutput.h" #include "RefractionAngleCalc.h" //#include "RefractionAngleTPRetrieval.h" #include "SignalCorrection.h" #include "SignalCorrectionNoDrift.h" #include "SolarExtent.h" #include "SolarSourceModel.h" #include "TimeRegistration.h" #include "RefracSimulation.h" #include "ZPTProfile.h" #include "EffectiveLockdown.h" #include "Initialize.h" #include "InitializeEvent.h" //#include "FOVcorrection.h" // //----------------------------------------------------------------------- // Defines, Macros and Type Definitions: //----------------------------------------------------------------------- // typedef int (*funcptr)(Event&, Event&, Event&, Event&, ConfigFile&); typedef struct { std::string name; funcptr ptr; } funcstr; funcstr execs[] = { "AltitudeRegistration", AltitudeRegistration, "AuxDataInput", AuxDataInput, "CO2ProfileSimulation", CO2ProfileSimulation, "DetectorTimeShift", DetectorTimeShift, "FPACorrection", FPACorrection, // "FOVcorrection", FOVcorrection, "Level0DataInput", Level0DataInput, "Level1DataOutput", Level1DataOutput, "RefractionAngleCalc", RefractionAngleCalc, // "RefractionAngleTPRetrieval", RefractionAngleTPRetrieval, "RefracSimulation", RefracSimulation, "SignalCorrection", SignalCorrection, "SignalCorrectionNoDrift", SignalCorrectionNoDrift, "SolarSourceModel", SolarSourceModel, "SolarExtent", SolarExtent, "TimeRegistration", TimeRegistration, "EffectiveLockdown", EffectiveLockdown, "ZPTProfile", ZPTProfile }; int n_execs = sizeof(execs) / sizeof(funcstr); // //----------------------------------------------------------------------- // Global Variables: //----------------------------------------------------------------------- // // //----------------------------------------------------------------------- // Function Prototypes: //----------------------------------------------------------------------- // /// /// plotEventVars displays set of EventVars selected from the Event object /// \c ev using the EventVar \c Plot method. The set of EventVars is /// specified by the list of variable names contained in the vector of /// strings \c plotlist. /// @param ev - the Event object containing the EventVars to be plotted /// @param plotlist - the list of EventVar names to be plotted /// @param fname - a string to be passed to the EventVar \c Plot method /// title parameter. /// extern int plotEventVars(Event &ev, vector plotlist, string fname); /// /// processEvent is the primary routine for processing Level 0 data into /// Level 1 data. The actual processing is controlled by the list of modules /// provided by the \c ExecList variable of the \C SOFIELevel1 section of the /// main configuration file. /// @param L0 - the Event object containing the Level 0 data /// @param L1 - the Event object that will contain the Level 1 data after processing /// is complete /// @param tmp - the Event object that contains intermediate, temporary data /// @param SD - the Event object containing static data, that is data that is constant /// from one event to the next, i.e. calibration data. /// @param cf - the ConfigFile object for the top levvel configuration file. /// extern int ProcessEvent(Event &L0, Event &L1, Event &tmp, Event& SD, ConfigFile &cf); /// /// main routine for processing SOFIE Level 1 Data /// extern int main(int argc, char *argv[]); #endif