#ifndef MTB_ATM_SPEC_CLASS_H
#define MTB_ATM_SPEC_CLASS_H

#include "tnl/Vector.h"

class MtbAtmSpec {

protected:
   int _nScreens;
   int _nxy;
   float _dxy;
   float _xmin;
   float _ymin;
   float _dtime;
   Vector<float> _absorption;
   Vector<float> _scatter;
   Vector<float> _temperture;
   float _lambda;
   Vector<float> _distances;
   Vector<float> _xWind;
   Vector<float> _yWind;
   float _xvs; // angular slew rate of platform (Vp-Vt)/d in deg/sec
   float _yvs;
   float _xvt; // platform velocity transverse to line of site
   float _yvt; // but opposite in sign due to Lincoln Labs
   int _numberSavedStates;

public:
  MtbAtmSpec(int nxy,
             float dxy,
             float xmin,
             float ymin,
             float dtime,
             float absorption,
             float scatter,
             float temperture,
             float lambda,
             Vector<float> distances,
             Vector<float> xWind,
             Vector<float> yWind,
             float xvs,
             float yvs,
             float xvt,
             float yvt,
             int numberSavedStates );

  MtbAtmSpec(int nxy,
             float dxy,
             float xmin,
             float ymin,
             float dtime,
             Vector<float> absorption,
             Vector<float> scatter,
             Vector<float> temperture,
             float lambda,
             Vector<float> distances,
             Vector<float> xWind,
             Vector<float> yWind,
             float xvs,
             float yvs,
             float xvt,
             float yvt,
             int numberSavedStates );


   MtbAtmSpec(const int nScreens=0);

   MtbAtmSpec(const MtbAtmSpec& thermSpec);

   MtbAtmSpec(const char * filename, int nxy, float dxy);

  ~MtbAtmSpec();
  
   int nScreens() const { return _nScreens; }
   int nxy() const{ return _nxy; }
   int numberSavedStates() const{ return _numberSavedStates; }
   float dxy() const { return _dxy; }
   float xmin() const { return _xmin; }
   float ymin() const { return _ymin; }
   float dtime() const { return _dtime; }
   Vector<float> absorption() const { return _absorption; }
   Vector<float> scatter() const { return _scatter; }
   Vector<float> temperture() const { return _temperture; }
   float lambda() const { return _lambda; }
   float xvs() const { return _xvs; }
   float yvs() const { return _yvs; }
   float xvt() const { return _xvt; }
   float yvt() const { return _yvt; }
   Vector<float> distances() const { return _distances; }
   Vector<float> xWind() const { return _xWind; }
   Vector<float> yWind() const { return _yWind; }
};

#endif // MTB_ATM_SPEC_CLASS_H
