#ifndef Var1_PSSphere_H
#define Var1_PSSphere_H
#include <Glasses/ParaSurf.h>
class PSSphere : public ParaSurf
{
MAC_RNR_FRIENDS(PSSphere);
private:
void _init();
protected:
Bool_t bInside;
Float_t mR;
public:
PSSphere(const Text_t* n="PSSphere", const Text_t* t=0) :
ParaSurf(n,t) { _init(); }
virtual ~PSSphere() {}
virtual void FindMinMaxFGH(TriMesh* mesh);
virtual Float_t Surface();
virtual Float_t CharacteristicLength() { return mR; }
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 sub_fgh(Float_t* a, Float_t* b, Float_t* delta);
virtual void regularize_fg(Float_t* f);
virtual void random_fgh(TRandom& rnd, Float_t* f);
virtual void random_pos(TRandom& rnd, Float_t* x);
static void fill_spherical_grav(Float_t g0, Float_t R, Bool_t inside,
const Float_t* x, GravData& gd);
#include "PSSphere.h7"
ClassDef(PSSphere, 1);
};
#endif