#ifndef Var1_PSRectangle_H
#define Var1_PSRectangle_H
#include <Glasses/ParaSurf.h>
class PSRectangle : public ParaSurf
{
  MAC_RNR_FRIENDS(PSRectangle);
private:
  void _init();
protected:
  Float_t          mMinX; 
  Float_t          mMaxX; 
  Float_t          mMinY; 
  Float_t          mMaxY; 
  Opcode::Plane*   mEdgePlanes; 
public:
  PSRectangle(const Text_t* n="PSRectangle", const Text_t* t=0);
  virtual ~PSRectangle();
  virtual void SetupEdgePlanes();
  virtual Float_t Surface();
  virtual void origin_fgh(Float_t* g);
  virtual void origin_pos(Float_t* x);
  virtual void pos2fgh(const Float_t* x, Float_t* f);
  virtual void fgh2pos(const Float_t* f, Float_t* x);
  virtual void fgh2fdir(const Float_t* f, Float_t* d);
  virtual void fgh2gdir(const Float_t* f, Float_t* d);
  virtual void fgh2hdir(const Float_t* f, Float_t* d);
  virtual void    pos2hdir(const Float_t* x, Float_t* d);
  virtual Float_t pos2hray(const Float_t* x, Opcode::Ray& r);
  virtual void    pos2grav(const Float_t* x, GravData& gd);
  virtual void random_fgh(TRandom& rnd, Float_t* f);
  virtual void random_pos(TRandom& rnd, Float_t* x);
  virtual Int_t          n_edge_planes() { return 4; }
  virtual Opcode::Plane* edge_planes()   { return mEdgePlanes; }
  virtual Bool_t  support_wrap()  { return true; }
  virtual void    wrap(Float_t* x, Int_t plane, Float_t dist);
#include "PSRectangle.h7"
  ClassDef(PSRectangle, 1);
}; 
#endif