ROOT logo
// $Id: PSTorus.h 2182 2009-04-12 23:11:16Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef Var1_PSTorus_H
#define Var1_PSTorus_H

#include <Glasses/ParaSurf.h>

class PSTorus : public ParaSurf
{
  MAC_RNR_FRIENDS(PSTorus);

private:
  void _init();

protected:
  Bool_t  bInside;    // X{GS} 7 Bool()
  Float_t mRM;        // X{GS} 7 Value(-range=>[0.001,1000, 1,1000], -join=>1)
  Float_t mRm;        // X{GS} 7 Value(-range=>[0.001,1000, 1,1000])

public:
  PSTorus(const Text_t* n="PSTorus", const Text_t* t=0) :
    ParaSurf(n,t) { _init(); }

  virtual void FindMinMaxFGH(TriMesh* mesh); // Exported in ParaSurf.

  virtual Float_t Surface();
  virtual Float_t CharacteristicLength() { return mRM + mRm; }

  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);

  // Subtract fgh values, taking care of U(1) variables (like angles).
  virtual void sub_fgh(Float_t* a, Float_t* b, Float_t* delta);

  // Put fgh values into regular intervals.
  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);

#include "PSTorus.h7"
  ClassDef(PSTorus, 1);
}; // endclass PSTorus


#endif
 PSTorus.h:1
 PSTorus.h:2
 PSTorus.h:3
 PSTorus.h:4
 PSTorus.h:5
 PSTorus.h:6
 PSTorus.h:7
 PSTorus.h:8
 PSTorus.h:9
 PSTorus.h:10
 PSTorus.h:11
 PSTorus.h:12
 PSTorus.h:13
 PSTorus.h:14
 PSTorus.h:15
 PSTorus.h:16
 PSTorus.h:17
 PSTorus.h:18
 PSTorus.h:19
 PSTorus.h:20
 PSTorus.h:21
 PSTorus.h:22
 PSTorus.h:23
 PSTorus.h:24
 PSTorus.h:25
 PSTorus.h:26
 PSTorus.h:27
 PSTorus.h:28
 PSTorus.h:29
 PSTorus.h:30
 PSTorus.h:31
 PSTorus.h:32
 PSTorus.h:33
 PSTorus.h:34
 PSTorus.h:35
 PSTorus.h:36
 PSTorus.h:37
 PSTorus.h:38
 PSTorus.h:39
 PSTorus.h:40
 PSTorus.h:41
 PSTorus.h:42
 PSTorus.h:43
 PSTorus.h:44
 PSTorus.h:45
 PSTorus.h:46
 PSTorus.h:47
 PSTorus.h:48
 PSTorus.h:49
 PSTorus.h:50
 PSTorus.h:51
 PSTorus.h:52
 PSTorus.h:53
 PSTorus.h:54
 PSTorus.h:55
 PSTorus.h:56
 PSTorus.h:57
 PSTorus.h:58
 PSTorus.h:59