ROOT logo
// $Id: CosmicBall.h 2088 2008-11-23 20:26:46Z 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_CosmicBall_H
#define Var1_CosmicBall_H

#include <Glasses/Sphere.h>
#include <TVector3.h>

class CosmicBall : public Sphere
{
  MAC_RNR_FRIENDS(CosmicBall);
  friend class SolarSystem;

private:
  void _init();

protected:
  Double_t      mM; // X{GS}   7 Value()
  TVector3      mV; // X{GSRr} 7 Vector3()

  // Hack for orbit switching.
  Double_t      mDesiredR; // X{GS} 7 Value()

  struct Point
  {
    Float_t x, y, z;

    Point(Float_t a=0, Float_t b=0, Float_t c=0) : x(a), y(b), z(c) {}
    Point(const Float_t*  a) : x(a[0]), y(a[1]), z(a[2]) {}
    Point(const Double_t* a) : x(a[0]), y(a[1]), z(a[2]) {}

    void Set(const Float_t*  a) { x = a[0]; y = a[1]; z = a[2]; }
    void Set(const Double_t* a) { x = a[0]; y = a[1]; z = a[2]; }

    operator const Float_t*() const { return &x; }
    operator       Float_t*()       { return &x; }
  };

  vector<Point> mHistory;       //!
  Int_t         mHistorySize;   //!
  Int_t         mHistoryFirst;  //!
  Int_t         mHistoryStored; //!
  GMutex        mHistoryMoo;    //!

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

  void StorePos();
  void ClearHistory();
  void ResizeHistory(Int_t size);

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


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