ROOT logo
// $Id: CosmicBall.cxx 2479 2011-06-13 04:50:22Z 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 "CosmicBall.h"
#include "CosmicBall.c7"

// CosmicBall

//__________________________________________________________________________
//
//

ClassImp(CosmicBall);

/**************************************************************************/

void CosmicBall::_init()
{
  mDesiredR = 0;

  mHistorySize = mHistoryFirst = mHistoryStored = 0;
}

/**************************************************************************/

void CosmicBall::StorePos()
{
  GMutexHolder histo_lock(mHistoryMoo);

  if (mHistoryFirst == 0)
  {
    mHistoryFirst = mHistorySize;
  }
  --mHistoryFirst;

  mHistory[mHistoryFirst].Set(mTrans.ArrT());

  if (mHistoryStored < mHistorySize)
    ++mHistoryStored;
}

void CosmicBall::ResizeHistory(Int_t size)
{
  GMutexHolder histo_lock(mHistoryMoo);

  if (size == mHistorySize)
    return;

  vector<HPointF> hist(size);

  Int_t n_to_copy = TMath::Min(mHistoryStored, size);

  if (n_to_copy > 0)
  {
    Int_t lim_up = TMath::Min(mHistoryFirst + n_to_copy, mHistorySize);
    Int_t n_copy = lim_up - mHistoryFirst;
    memcpy(&hist[0], &mHistory[mHistoryFirst], n_copy * sizeof(HPointF));

    n_to_copy -= n_copy;

    if (n_to_copy > 0)
    {
      memcpy(&hist[n_copy], &mHistory[0], n_to_copy * sizeof(HPointF));
    }
  }

  mHistory.swap(hist);

  mHistorySize   = size;
  mHistoryFirst  = 0;
  mHistoryStored = TMath::Min(mHistoryStored, size);
}

void CosmicBall::ClearHistory()
{
  GMutexHolder histo_lock(mHistoryMoo);

  mHistoryStored = 0;
}

/**************************************************************************/
 CosmicBall.cxx:1
 CosmicBall.cxx:2
 CosmicBall.cxx:3
 CosmicBall.cxx:4
 CosmicBall.cxx:5
 CosmicBall.cxx:6
 CosmicBall.cxx:7
 CosmicBall.cxx:8
 CosmicBall.cxx:9
 CosmicBall.cxx:10
 CosmicBall.cxx:11
 CosmicBall.cxx:12
 CosmicBall.cxx:13
 CosmicBall.cxx:14
 CosmicBall.cxx:15
 CosmicBall.cxx:16
 CosmicBall.cxx:17
 CosmicBall.cxx:18
 CosmicBall.cxx:19
 CosmicBall.cxx:20
 CosmicBall.cxx:21
 CosmicBall.cxx:22
 CosmicBall.cxx:23
 CosmicBall.cxx:24
 CosmicBall.cxx:25
 CosmicBall.cxx:26
 CosmicBall.cxx:27
 CosmicBall.cxx:28
 CosmicBall.cxx:29
 CosmicBall.cxx:30
 CosmicBall.cxx:31
 CosmicBall.cxx:32
 CosmicBall.cxx:33
 CosmicBall.cxx:34
 CosmicBall.cxx:35
 CosmicBall.cxx:36
 CosmicBall.cxx:37
 CosmicBall.cxx:38
 CosmicBall.cxx:39
 CosmicBall.cxx:40
 CosmicBall.cxx:41
 CosmicBall.cxx:42
 CosmicBall.cxx:43
 CosmicBall.cxx:44
 CosmicBall.cxx:45
 CosmicBall.cxx:46
 CosmicBall.cxx:47
 CosmicBall.cxx:48
 CosmicBall.cxx:49
 CosmicBall.cxx:50
 CosmicBall.cxx:51
 CosmicBall.cxx:52
 CosmicBall.cxx:53
 CosmicBall.cxx:54
 CosmicBall.cxx:55
 CosmicBall.cxx:56
 CosmicBall.cxx:57
 CosmicBall.cxx:58
 CosmicBall.cxx:59
 CosmicBall.cxx:60
 CosmicBall.cxx:61
 CosmicBall.cxx:62
 CosmicBall.cxx:63
 CosmicBall.cxx:64
 CosmicBall.cxx:65
 CosmicBall.cxx:66
 CosmicBall.cxx:67
 CosmicBall.cxx:68
 CosmicBall.cxx:69
 CosmicBall.cxx:70
 CosmicBall.cxx:71
 CosmicBall.cxx:72
 CosmicBall.cxx:73
 CosmicBall.cxx:74
 CosmicBall.cxx:75
 CosmicBall.cxx:76
 CosmicBall.cxx:77
 CosmicBall.cxx:78
 CosmicBall.cxx:79
 CosmicBall.cxx:80
 CosmicBall.cxx:81
 CosmicBall.cxx:82
 CosmicBall.cxx:83
 CosmicBall.cxx:84