ROOT logo
// $Id: GravData.h 2130 2009-02-08 15:19:58Z 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_GravData_H
#define Var1_GravData_H

#include <Gled/GledTypes.h>

#include <Opcode/Opcode.h>

#include <TObject.h>

class GravData : public TObject
{
public:
  typedef list<pair<Float_t, GravData*> > lGravFraction_t;
  typedef lGravFraction_t::iterator       lGravFraction_i;

protected:
  void clear();
  void add(Float_t f, GravData& gd);

public:
  Float_t fPos[3];  // Position where this data was calculated.
  Float_t fDir[3];  // Direction of gravity.
  Float_t fMag;
  Float_t fLDer;    // Derivative in longitudinal direction (direction of gravity).
  Float_t fTDer;    // Derivative in tangential plane.
  Float_t fH;       // Height as defined by the surface.
  Float_t fDown[3]; // Parametric down direction.

  // Storage for users of the struct, like Dynamico's.
  Float_t fSafeTime;     //!
  Float_t fSafeDistance; //!

  GravData() : fSafeTime(0), fSafeDistance(0) {}
  virtual ~GravData() {}

  Opcode::Point& Pos()  { return * (Opcode::Point*) fPos;  }
  Opcode::Point& Dir()  { return * (Opcode::Point*) fDir;  }
  Opcode::Point& Down() { return * (Opcode::Point*) fDown; }

  Bool_t DecaySafeties(Float_t dt, Float_t dl)
  { fSafeTime -= dt; fSafeDistance -= dl; return fSafeTime < 0 || fSafeDistance < 0; }

  void Combine(lGravFraction_t& fractions);

  virtual void Print(Option_t *option="") const;

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

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