ROOT logo
// $Id: GravData.cxx 2118 2009-01-11 21:31: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/.

#include "GravData.h"

// GravData

//______________________________________________________________________________
//
//

ClassImp(GravData);

void GravData::clear()
{
  fDir[0] = fDir[1] = fDir[2] = 0;
  fMag = fLDer = fTDer = fH = 0;
  fSafeTime = fSafeDistance = 0;
}

void GravData::add(Float_t f, GravData& gd)
{
  // fPos is not changed.
  // fH is added, but the caller should probably know better.
  // fDown is not added.

  Float_t fmag = f * gd.fMag;
  fDir[0] += fmag * gd.fDir[0];
  fDir[1] += fmag * gd.fDir[1];
  fDir[2] += fmag * gd.fDir[2];

  fLDer += f * gd.fLDer;
  fTDer += f * gd.fTDer;
  fH    += f * gd.fH;
}

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

void GravData::Combine(lGravFraction_t& fractions)
{
  clear();

  for (lGravFraction_i i = fractions.begin(); i != fractions.end(); ++i)
  {
    add(i->first, *i->second);
  }

  fMag = Dir().NormalizeAndReport();
}

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

void GravData::Print(Option_t *) const
{
  printf("pos=(%f %f %f), dir=(%f %f %f), mag=%f, l'=%f, t'=%f, h=%f\n",
         fPos[0], fPos[1], fPos[2], fDir[0], fDir[1], fDir[2],
         fMag, fLDer, fTDer, fH);
}

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