ROOT logo
// $Id: GTSTorus.cxx 2437 2010-08-15 11:06:50Z 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/.

#include "GTSTorus.h"
#include "GTSTorus.c7"

#include <Glasses/GTSIsoMaker.h>

// GTSTorus

//______________________________________________________________________________
//
//

ClassImp(GTSTorus);

//==============================================================================

void GTSTorus::_init()
{
  mRM = 1;
  mRm = 0.5;
  mStep = 0.01;
}

GTSTorus::GTSTorus(const Text_t* n, const Text_t* t) :
  GTSurf(n, t)
{
  _init();
}

GTSTorus::~GTSTorus()
{}

//==============================================================================

void GTSTorus::GTSIsoBegin(GTSIsoMaker* maker, Double_t /*iso_value*/)
{
  mRminvsqr = 1.0 / (mRm * mRm);

  Double_t RR = 1.05 * (mRM + mRm);
  Double_t rr = 1.05 * mRm;

  GLensReadHolder _lck(maker);
  maker->SetValue(1);
  maker->SetXAxis(-RR, RR, TMath::Nint(2.0*RR/mStep));
  maker->SetYAxis(-RR, RR, TMath::Nint(2.0*RR/mStep));
  maker->SetZAxis(-rr, rr, TMath::Nint(2.0*rr/mStep));
  maker->SetInvertCartesian(false);
  maker->SetInvertTetra(true);
}

Double_t GTSTorus::GTSIsoFunc(Double_t x, Double_t y, Double_t z)
{
  const Double_t r = TMath::Sqrt(x*x + y*y) - mRM;
  return mRminvsqr * (r*r + z*z);
}

Double_t GTSTorus::GTSIsoGradient(Double_t x, Double_t y, Double_t z, HPointD& g)
{
  const Double_t xy = TMath::Sqrt(x*x + y*y);
  const Double_t r  = xy - mRM;
  g.x = 2.0 * mRminvsqr * (xy - mRM) / xy * x;
  g.y = 2.0 * mRminvsqr * (xy - mRM) / xy * y;
  g.z = 2.0 * mRminvsqr * z;
  return  mRminvsqr * (r*r + z*z);
}

void GTSTorus::GTSIsoEnd()
{}
 GTSTorus.cxx:1
 GTSTorus.cxx:2
 GTSTorus.cxx:3
 GTSTorus.cxx:4
 GTSTorus.cxx:5
 GTSTorus.cxx:6
 GTSTorus.cxx:7
 GTSTorus.cxx:8
 GTSTorus.cxx:9
 GTSTorus.cxx:10
 GTSTorus.cxx:11
 GTSTorus.cxx:12
 GTSTorus.cxx:13
 GTSTorus.cxx:14
 GTSTorus.cxx:15
 GTSTorus.cxx:16
 GTSTorus.cxx:17
 GTSTorus.cxx:18
 GTSTorus.cxx:19
 GTSTorus.cxx:20
 GTSTorus.cxx:21
 GTSTorus.cxx:22
 GTSTorus.cxx:23
 GTSTorus.cxx:24
 GTSTorus.cxx:25
 GTSTorus.cxx:26
 GTSTorus.cxx:27
 GTSTorus.cxx:28
 GTSTorus.cxx:29
 GTSTorus.cxx:30
 GTSTorus.cxx:31
 GTSTorus.cxx:32
 GTSTorus.cxx:33
 GTSTorus.cxx:34
 GTSTorus.cxx:35
 GTSTorus.cxx:36
 GTSTorus.cxx:37
 GTSTorus.cxx:38
 GTSTorus.cxx:39
 GTSTorus.cxx:40
 GTSTorus.cxx:41
 GTSTorus.cxx:42
 GTSTorus.cxx:43
 GTSTorus.cxx:44
 GTSTorus.cxx:45
 GTSTorus.cxx:46
 GTSTorus.cxx:47
 GTSTorus.cxx:48
 GTSTorus.cxx:49
 GTSTorus.cxx:50
 GTSTorus.cxx:51
 GTSTorus.cxx:52
 GTSTorus.cxx:53
 GTSTorus.cxx:54
 GTSTorus.cxx:55
 GTSTorus.cxx:56
 GTSTorus.cxx:57
 GTSTorus.cxx:58
 GTSTorus.cxx:59
 GTSTorus.cxx:60
 GTSTorus.cxx:61
 GTSTorus.cxx:62
 GTSTorus.cxx:63
 GTSTorus.cxx:64
 GTSTorus.cxx:65
 GTSTorus.cxx:66
 GTSTorus.cxx:67
 GTSTorus.cxx:68
 GTSTorus.cxx:69
 GTSTorus.cxx:70
 GTSTorus.cxx:71
 GTSTorus.cxx:72
 GTSTorus.cxx:73