#include "GLTesterOne.h"
#include "GLTesterOne.c7"
#include <Gled/GTime.h>
#include <TMath.h>
#include <TPad.h>
ClassImp(GLTesterOne);
void GLTesterOne::_init()
{
  mPupil = 0;
  mTestSelection = TT_RnrAtom;
  mRAtom  = RA_Point;
  mTMode  = TM_Vertex;
  mNSteps = 1000;
  mXMax   = 100;
  mTringU = 0.2;
  mTringV = 0.1;
  mMatrixOps = MO_GetFloat;
  bUseDispList = false;
  bPrint       = true;
  mNRedraws = 1000;
  mNTrial   = 20;
  h1TStat = new TH1F("TStat", "GlOne Time Statistics", 10, 0, 1);
}
void GLTesterOne::register_result(Double_t t)
{
  if(h1TStat != 0) {
    h1TStat->Fill(t);
  }
}
void GLTesterOne::RunTest()
{
  h1TStat->Reset();
  h1TStat->SetBins(200, 0, 1);
  for(int i=0; i<mNTrial; ++i) {
    mPupil->Redraw();
  }
  while(h1TStat->GetEntries() < mNTrial) GTime::SleepMiliSec(10);
  Double_t m = h1TStat->GetMean(), r = h1TStat->GetRMS();
  Double_t min = TMath::Max(m - 5*r, 0.0);
  Double_t max = m + 5*r;
  Int_t nbins = TMath::Min(200, Int_t((max - min)/1e-6)); 
  h1TStat->Reset();
  h1TStat->SetBins(nbins, min, max);
  for(int i=0; i<mNRedraws; ++i) {
    mPupil->Redraw();
  }
  while(h1TStat->GetEntries() < mNRedraws) GTime::SleepMiliSec(10);
  h1TStat->DrawCopy();
  gPad->Update();
}