#ifndef __SOFIE_LEVEL_0_FILE_HEADER_03_13_2006__
#define __SOFIE_LEVEL_0_FILE_HEADER_03_13_2006__
/**

     @file Lvl0FileHeader.h
     @author Brian Magill
     @datecreated 3/13/2006


	$Date: 2006/03/15 21:41:57 $
    $Revision: 1.3 $

    @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 Contains information from the Level 0 file header.
     

*/
//----------------------------------------------------------------------
//

#include "SOFIE_namespace.h"
#include <string>

    class Lvl0FileHeader
        {
        
        protected:

            int EventNumber;        //  Number of events since launch
            
            std::string EventType;          //  Sunrise or Sunset 'R' or 'S'
            
            int EventTableNumber;   // 
             
            int OrbitNumber;        //  Number of orbits since launch
            
            double EventStart;      //  Starting time for event
            
            double EventEnd;        //  Ending time for event
            
            double AtmosStart;      //  Starting time for atmospheric portion
            
            double AtmosEnd;        //  Ending time for atmospheric portion
            
            double SolarScanStart;  //  Starting time for solar scan
            
            double SolarScanEnd;    //  Ending time for solar scan                                
                        
        public:

            Lvl0FileHeader( ):EventNumber(0), EventType("?")  { };     

            Lvl0FileHeader(int eventNo, std::string type, int tableNo, int orbitNo, 
                           double eventSt, double eventEnd, double atmSt, double atmEnd,
                            double ssStart, double ssEnd):
                            EventNumber(eventNo), EventType(type), 
                            EventTableNumber(tableNo), OrbitNumber(orbitNo),
                            EventStart(eventSt), EventEnd(eventEnd), 
                            AtmosStart(atmSt), AtmosEnd(atmEnd),
                            SolarScanStart(ssStart), SolarScanEnd(ssEnd) { };     
            
            Lvl0FileHeader(Lvl0FileHeader const& rhs );
             
            Lvl0FileHeader& operator = (Lvl0FileHeader const& rhs );
            
            ~Lvl0FileHeader() { };     

            bool operator < (Lvl0FileHeader const& rhs );

            bool operator > (Lvl0FileHeader const& rhs );                        

            int getEventNumber() {return EventNumber;};        
            
            std::string getEventType() {return EventType;};          
            
            int getEventTableNumber() {return EventTableNumber;};   
            
            int getOrbitNumber() {return OrbitNumber;};        
            
            double getEventStart() {return EventStart;};      
            
            double getEventEnd() {return EventEnd;};        
            
            double getAtmosStart() {return AtmosStart;};      
            
            double getAtmosEnd() {return AtmosEnd;};       
            
            double getSolarScanStart() {return SolarScanStart;};  
            
            double getSolarScanEnd() {return SolarScanEnd;};   
            
            void dump();
        
        };

        
#endif