ROOT logo
// $Header$

// 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 "AEVManager.h"
#include <Glasses/SolarSystem.h>
#include "AEVSite.h"
#include "AEVSiteList.h"
#include "AEVMlSucker.h"
#include "AEVManager.c7"

#include <Glasses/CosmicBall.h>
#include <Glasses/Text.h>

#include <Glasses/ZQueen.h>

#include <TMath.h>

namespace TMath
{
template <typename T> T Sqr(T x) { return x*x; }
}

// AEVManager

//______________________________________________________________________________
//
//

ClassImp(AEVManager);

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

void AEVManager::_init()
{
  mTimeWindow = 0;

  mSiteVizMode = SV_All;
  mSiteMinVal = mSiteMaxVal = 0;
  mSiteMinCut = mSiteMaxCut = 0;

  mSVJobsRunning.fVarPtr = &AEVSite::mJobsRunning;
  mSVJobsError  .fVarPtr = &AEVSite::mJobsError;
  mSVEventsDone .fVarPtr = &AEVSite::mEventsDone;
  mSVEventsFrac .fVarPtr = &AEVSite::mEventsFrac;

  mSVCurrent = 0;

  mUserVizMode = UV_None;
}

AEVManager::AEVManager(const Text_t* n, const Text_t* t) :
  ZNameMap(n, t)
{
  _init();
}

AEVManager::~AEVManager()
{}

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

void AEVManager::SetTimeWindow(Int_t time)
{
  static const Exc_t _eh("AEVManager::SetTimeWindow ");

  assert_sucker(_eh);

  if (time < 0) time = 0;

  mSucker->SendLine(GForm("timewindow %d\n", time));

  GLensWriteHolder wrlck(this);
  mTimeWindow = time;
  Stamp(FID());
  MakeInfoText();
}

void AEVManager::RescanLimits(Bool_t drop_cuts)
{
  if (mSVCurrent && drop_cuts)
  {
    mSVCurrent->fLow  = mSVCurrent->fMin;
    mSVCurrent->fHigh = mSVCurrent->fMax;
  }
  SetSiteVizMode(mSiteVizMode);
}

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

void AEVManager::update_sv_current()
{
  // Sites must have at least one element ... check before calling.

  SiteInt_t &bar = mSVCurrent->fVarPtr;
  Int_t     &min = mSVCurrent->fMin, &max  = mSVCurrent->fMax;
  Int_t     &low = mSVCurrent->fLow, &high = mSVCurrent->fHigh;

  bool  low_was_min = (low  == min);
  bool high_was_max = (high == max);

  Stepper<AEVSite> s(*mSites);
  s.step();
  min = max = (*s)->*bar;
  while (s.step())
  {
    min = TMath::Min(min, (*s)->*bar);
    max = TMath::Max(max, (*s)->*bar);
  }
  if (low_was_min  || low  < min)
    low = min;
  if (high_was_max || high > max)
    high = max;

  mSiteMinVal = min; mSiteMaxVal = max;
  mSiteMinCut = low; mSiteMaxCut = high;
}

void AEVManager::select_sv_current()
{
  const SiteInt_t &bar = mSVCurrent->fVarPtr;
  const Int_t     &low = mSVCurrent->fLow, &high = mSVCurrent->fHigh;

  const Float_t minR = mSolarSystem->GetOrbitMinR();
  const Float_t maxR = mSolarSystem->GetOrbitMaxR();
  const Float_t dFac = (maxR - minR) / TMath::Sqr(high - low);

  Stepper<AEVSite> s(*mSites);
  while (s.step())
  {
    if ((*s)->*bar < low || (*s)->*bar > high)
    {
      if (s->bBallOnStage)
      {
	mSolarSystem->RemovePlanetoid(*s->mBallViz);
	s->bBallOnStage = false;
      }
    }
    else
    {
      if ( ! s->bBallOnStage)
      {
	mSolarSystem->AddPlanetoid(*s->mBallViz);
	s->bBallOnStage = true;
      }
      s->GetBallViz()->SetDesiredR(minR + dFac*TMath::Sqr(high - (*s)->*bar));
    }
  }
}

//------------------------------------------------------------------------------

bool AEVManager::update_sv_current(AEVSite* site)
{
  // A site has changed ... does this influence current state?

  bool changed = false;

  SiteInt_t &bar = mSVCurrent->fVarPtr;
  Int_t     &min = mSVCurrent->fMin, &max  = mSVCurrent->fMax;
  Int_t     &low = mSVCurrent->fLow, &high = mSVCurrent->fHigh;

  bool  low_was_min = (low  == min);
  bool high_was_max = (high == max);

  if (site->*bar < min) { min = site->*bar; changed = true; }
  if (site->*bar > max) { max = site->*bar; changed = true; }

  if (changed)
  {
    if (low_was_min  || low  < min)
      low = min;
    if (high_was_max || high > max)
      high = max;

    mSiteMinVal = min; mSiteMaxVal = max;
    mSiteMinCut = low; mSiteMaxCut = high;
  }

  return changed;
}

void AEVManager::select_sv_current(AEVSite* site)
{
  const SiteInt_t &bar = mSVCurrent->fVarPtr;
  const Int_t     &low = mSVCurrent->fLow, &high = mSVCurrent->fHigh;

  const Float_t minR = mSolarSystem->GetOrbitMinR();
  const Float_t maxR = mSolarSystem->GetOrbitMaxR();
  const Float_t dFac = (maxR - minR) / TMath::Sqr(high - low);

  if (site->*bar < low || site->*bar > high)
  {
    if (site->bBallOnStage)
    {
      mSolarSystem->RemovePlanetoid(*site->mBallViz);
      site->bBallOnStage = false;
    }
  }
  else
  {
    if ( ! site->bBallOnStage)
    {
      mSolarSystem->AddPlanetoid(*site->mBallViz);
      site->bBallOnStage = true;
    }
    site->GetBallViz()->SetDesiredR(minR + dFac*TMath::Sqr(high - site->*bar));
  }
}

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

void AEVManager::EmitSiteVizRay()
{
  static const Exc_t _eh("AEVManager::EmitSiteVizRay ");

  assert_solarsystem(_eh);
  assert_sites(_eh);

  switch (mSiteVizMode)
  {
    case SV_None:
    {
      Stepper<AEVSite> s(*mSites);
      while (s.step())
      {
	if (s->bBallOnStage)
	{
	  mSolarSystem->RemovePlanetoid(*s->mBallViz);
	  s->bBallOnStage = false;
	}
      }
      mSVCurrent  = 0;
      mSiteMinVal = mSiteMaxVal = 0;
      mSiteMinCut = mSiteMaxCut = 0;
      break;
    }
    case SV_All:
    {
      Stepper<AEVSite> s(*mSites);
      while (s.step())
      {
	if ( ! s->bBallOnStage)
	{
	  mSolarSystem->AddPlanetoid(*s->mBallViz);
	  s->bBallOnStage = true;
	}
      }
      mSVCurrent  = 0;
      mSiteMinVal = mSiteMaxVal = 0;
      mSiteMinCut = mSiteMaxCut = 0;
      break;
    }
    case SV_RunningJobs:
    {
      if (mSites->Size() == 0)
      {
	mSiteVizMode = SV_All;
	break;
      }

      mSVCurrent = &mSVJobsRunning;
      update_sv_current();
      select_sv_current();
      break;
    }
    case SV_ErrorJobs:
    {
      if (mSites->Size() == 0)
      {
	mSiteVizMode = SV_All;
	break;
      }

      mSVCurrent = &mSVJobsError;
      update_sv_current();
      select_sv_current();
      break;
    }
    case SV_EventsDone:
    {
      if (mSites->Size() == 0)
      {
	mSiteVizMode = SV_All;
	break;
      }

      mSVCurrent = &mSVEventsDone;
      update_sv_current();
      select_sv_current();
      break;
    }
    case SV_EventsFrac:
    {
      if (mSites->Size() == 0)
      {
	mSiteVizMode = SV_All;
	break;
      }

      mSVCurrent = &mSVEventsFrac;
      update_sv_current();
      select_sv_current();
      break;
    }
  }

  MakeInfoText();
}

void AEVManager::EmitUserVizRay()
{

}

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


void AEVManager::SetSiteMinCut(Int_t min)
{
  if (min < mSiteMinVal)
    min = mSiteMinVal;
  if (min > mSiteMaxCut)
    min = mSiteMaxCut = TMath::Min(min, mSiteMaxVal);
  mSiteMinCut = min;

  if (mSVCurrent)
  {
    mSVCurrent->fLow  = mSiteMinCut;
    mSVCurrent->fHigh = mSiteMaxCut;
    select_sv_current();
  }

  Stamp(FID());
  MakeInfoText();
}

void AEVManager::SetSiteMaxCut(Int_t max)
{
  if (max > mSiteMaxVal)
    max = mSiteMaxVal;
  if (max < mSiteMinCut)
    max = mSiteMinCut = TMath::Max(max, mSiteMinVal);
  mSiteMaxCut = max;

  if (mSVCurrent)
  {
    mSVCurrent->fLow  = mSiteMinCut;
    mSVCurrent->fHigh = mSiteMaxCut;
    select_sv_current();
  }

  Stamp(FID());
  MakeInfoText();
}

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

void AEVManager::SiteNew(AEVSite* site)
{
  // This is called when a new site is added.
  // Should be called under write-lock.

  if (site->GetBallViz() == 0)
  {
    CosmicBall* cb = mSolarSystem->RandomPlanetoid(site->GetName());

    // Hack assuming max site-size ~2500.
    Double_t r_planet = TMath::Max(mSolarSystem->GetPlanetMinR(),
       TMath::Power(site->GetSiteSize(), 0.3333) / 15 * mSolarSystem->GetPlanetMaxR());
    Double_t mass_planet = 4.0*TMath::Pi()*r_planet*r_planet*r_planet/3.0;

    cb->SetM(mass_planet);
    cb->SetRadius(r_planet);

    cb->SetColor(gRandom->Uniform(0.4, 0.8),
		 gRandom->Uniform(0.4, 1.0),
		 gRandom->Uniform(0.4, 1.0));

    mQueen->CheckIn(cb);
    site->SetBallViz(cb);
  }

  switch (mSiteVizMode)
  {
    case SV_None:
      break;
    case SV_All:
      mSolarSystem->AddPlanetoid(*site->mBallViz);
      site->bBallOnStage = true;
      break;
    default:
      select_sv_current(site);
      break;
  }
}

void AEVManager::SitePositionChanged(AEVSite* site)
{
  // Relevant if we add mapviz
  // Should be called under write-lock.
}

void AEVManager::SiteChanged(AEVSite* site)
{
  // Do magick depending on site-viz-mode.
  // Should be called under write-lock.

  static const Exc_t _eh("AEVManager::ChangedSite ");

  assert_solarsystem(_eh);

  if (mSVCurrent)
  {
    if (update_sv_current(site))
    {
      select_sv_current();
      Stamp(FID());
      MakeInfoText();
    }
  }
}

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

void AEVManager::MakeInfoText()
{
  Bool_t  show_sub = false;

  Text* info = dynamic_cast<Text*>(mQueen->FindLensByPath("AEVOverlay/InfoText"));
  if (info)
  {
    TString txt;

    txt += "Sites - ";
    switch (mSiteVizMode)
    {
      case SV_None:        txt += "none"; break;
      case SV_All:         txt += "all";  break;
      case SV_RunningJobs: txt += "running jobs"; show_sub = true; break;
      case SV_ErrorJobs:   txt += "errors";       show_sub = true; break;
      case SV_EventsDone:  txt += "events done";  show_sub = true; break;
      case SV_EventsFrac:  txt += "event fraction x 1000"; show_sub = true; break;
    }
    info->SetText(txt);
  }

  Text* sub_info = dynamic_cast<Text*>(mQueen->FindLensByPath("AEVOverlay/SubInfoText"));
  if (sub_info && show_sub)
  {
    TString txt;

    txt += Form("Range: %d - %d, Shown: %d - %d", mSiteMinVal, mSiteMaxVal, mSiteMinCut, mSiteMaxCut);

    if (mTimeWindow > 0)
    {
      Int_t min, hour, day;
      min  = mTimeWindow % 60;
      hour = mTimeWindow / 60;
      day  = hour / 24;
      hour = hour % 24;
      txt += "; Time: ";
      if (day)
        txt += Form("%dd ", day);
      if (hour || (day && min))
        txt += Form("%dh ", hour);
      if (min)
        txt += Form("%dm ", min);
    }

    sub_info->SetText(txt);
  }
}
 AEVManager.cxx:1
 AEVManager.cxx:2
 AEVManager.cxx:3
 AEVManager.cxx:4
 AEVManager.cxx:5
 AEVManager.cxx:6
 AEVManager.cxx:7
 AEVManager.cxx:8
 AEVManager.cxx:9
 AEVManager.cxx:10
 AEVManager.cxx:11
 AEVManager.cxx:12
 AEVManager.cxx:13
 AEVManager.cxx:14
 AEVManager.cxx:15
 AEVManager.cxx:16
 AEVManager.cxx:17
 AEVManager.cxx:18
 AEVManager.cxx:19
 AEVManager.cxx:20
 AEVManager.cxx:21
 AEVManager.cxx:22
 AEVManager.cxx:23
 AEVManager.cxx:24
 AEVManager.cxx:25
 AEVManager.cxx:26
 AEVManager.cxx:27
 AEVManager.cxx:28
 AEVManager.cxx:29
 AEVManager.cxx:30
 AEVManager.cxx:31
 AEVManager.cxx:32
 AEVManager.cxx:33
 AEVManager.cxx:34
 AEVManager.cxx:35
 AEVManager.cxx:36
 AEVManager.cxx:37
 AEVManager.cxx:38
 AEVManager.cxx:39
 AEVManager.cxx:40
 AEVManager.cxx:41
 AEVManager.cxx:42
 AEVManager.cxx:43
 AEVManager.cxx:44
 AEVManager.cxx:45
 AEVManager.cxx:46
 AEVManager.cxx:47
 AEVManager.cxx:48
 AEVManager.cxx:49
 AEVManager.cxx:50
 AEVManager.cxx:51
 AEVManager.cxx:52
 AEVManager.cxx:53
 AEVManager.cxx:54
 AEVManager.cxx:55
 AEVManager.cxx:56
 AEVManager.cxx:57
 AEVManager.cxx:58
 AEVManager.cxx:59
 AEVManager.cxx:60
 AEVManager.cxx:61
 AEVManager.cxx:62
 AEVManager.cxx:63
 AEVManager.cxx:64
 AEVManager.cxx:65
 AEVManager.cxx:66
 AEVManager.cxx:67
 AEVManager.cxx:68
 AEVManager.cxx:69
 AEVManager.cxx:70
 AEVManager.cxx:71
 AEVManager.cxx:72
 AEVManager.cxx:73
 AEVManager.cxx:74
 AEVManager.cxx:75
 AEVManager.cxx:76
 AEVManager.cxx:77
 AEVManager.cxx:78
 AEVManager.cxx:79
 AEVManager.cxx:80
 AEVManager.cxx:81
 AEVManager.cxx:82
 AEVManager.cxx:83
 AEVManager.cxx:84
 AEVManager.cxx:85
 AEVManager.cxx:86
 AEVManager.cxx:87
 AEVManager.cxx:88
 AEVManager.cxx:89
 AEVManager.cxx:90
 AEVManager.cxx:91
 AEVManager.cxx:92
 AEVManager.cxx:93
 AEVManager.cxx:94
 AEVManager.cxx:95
 AEVManager.cxx:96
 AEVManager.cxx:97
 AEVManager.cxx:98
 AEVManager.cxx:99
 AEVManager.cxx:100
 AEVManager.cxx:101
 AEVManager.cxx:102
 AEVManager.cxx:103
 AEVManager.cxx:104
 AEVManager.cxx:105
 AEVManager.cxx:106
 AEVManager.cxx:107
 AEVManager.cxx:108
 AEVManager.cxx:109
 AEVManager.cxx:110
 AEVManager.cxx:111
 AEVManager.cxx:112
 AEVManager.cxx:113
 AEVManager.cxx:114
 AEVManager.cxx:115
 AEVManager.cxx:116
 AEVManager.cxx:117
 AEVManager.cxx:118
 AEVManager.cxx:119
 AEVManager.cxx:120
 AEVManager.cxx:121
 AEVManager.cxx:122
 AEVManager.cxx:123
 AEVManager.cxx:124
 AEVManager.cxx:125
 AEVManager.cxx:126
 AEVManager.cxx:127
 AEVManager.cxx:128
 AEVManager.cxx:129
 AEVManager.cxx:130
 AEVManager.cxx:131
 AEVManager.cxx:132
 AEVManager.cxx:133
 AEVManager.cxx:134
 AEVManager.cxx:135
 AEVManager.cxx:136
 AEVManager.cxx:137
 AEVManager.cxx:138
 AEVManager.cxx:139
 AEVManager.cxx:140
 AEVManager.cxx:141
 AEVManager.cxx:142
 AEVManager.cxx:143
 AEVManager.cxx:144
 AEVManager.cxx:145
 AEVManager.cxx:146
 AEVManager.cxx:147
 AEVManager.cxx:148
 AEVManager.cxx:149
 AEVManager.cxx:150
 AEVManager.cxx:151
 AEVManager.cxx:152
 AEVManager.cxx:153
 AEVManager.cxx:154
 AEVManager.cxx:155
 AEVManager.cxx:156
 AEVManager.cxx:157
 AEVManager.cxx:158
 AEVManager.cxx:159
 AEVManager.cxx:160
 AEVManager.cxx:161
 AEVManager.cxx:162
 AEVManager.cxx:163
 AEVManager.cxx:164
 AEVManager.cxx:165
 AEVManager.cxx:166
 AEVManager.cxx:167
 AEVManager.cxx:168
 AEVManager.cxx:169
 AEVManager.cxx:170
 AEVManager.cxx:171
 AEVManager.cxx:172
 AEVManager.cxx:173
 AEVManager.cxx:174
 AEVManager.cxx:175
 AEVManager.cxx:176
 AEVManager.cxx:177
 AEVManager.cxx:178
 AEVManager.cxx:179
 AEVManager.cxx:180
 AEVManager.cxx:181
 AEVManager.cxx:182
 AEVManager.cxx:183
 AEVManager.cxx:184
 AEVManager.cxx:185
 AEVManager.cxx:186
 AEVManager.cxx:187
 AEVManager.cxx:188
 AEVManager.cxx:189
 AEVManager.cxx:190
 AEVManager.cxx:191
 AEVManager.cxx:192
 AEVManager.cxx:193
 AEVManager.cxx:194
 AEVManager.cxx:195
 AEVManager.cxx:196
 AEVManager.cxx:197
 AEVManager.cxx:198
 AEVManager.cxx:199
 AEVManager.cxx:200
 AEVManager.cxx:201
 AEVManager.cxx:202
 AEVManager.cxx:203
 AEVManager.cxx:204
 AEVManager.cxx:205
 AEVManager.cxx:206
 AEVManager.cxx:207
 AEVManager.cxx:208
 AEVManager.cxx:209
 AEVManager.cxx:210
 AEVManager.cxx:211
 AEVManager.cxx:212
 AEVManager.cxx:213
 AEVManager.cxx:214
 AEVManager.cxx:215
 AEVManager.cxx:216
 AEVManager.cxx:217
 AEVManager.cxx:218
 AEVManager.cxx:219
 AEVManager.cxx:220
 AEVManager.cxx:221
 AEVManager.cxx:222
 AEVManager.cxx:223
 AEVManager.cxx:224
 AEVManager.cxx:225
 AEVManager.cxx:226
 AEVManager.cxx:227
 AEVManager.cxx:228
 AEVManager.cxx:229
 AEVManager.cxx:230
 AEVManager.cxx:231
 AEVManager.cxx:232
 AEVManager.cxx:233
 AEVManager.cxx:234
 AEVManager.cxx:235
 AEVManager.cxx:236
 AEVManager.cxx:237
 AEVManager.cxx:238
 AEVManager.cxx:239
 AEVManager.cxx:240
 AEVManager.cxx:241
 AEVManager.cxx:242
 AEVManager.cxx:243
 AEVManager.cxx:244
 AEVManager.cxx:245
 AEVManager.cxx:246
 AEVManager.cxx:247
 AEVManager.cxx:248
 AEVManager.cxx:249
 AEVManager.cxx:250
 AEVManager.cxx:251
 AEVManager.cxx:252
 AEVManager.cxx:253
 AEVManager.cxx:254
 AEVManager.cxx:255
 AEVManager.cxx:256
 AEVManager.cxx:257
 AEVManager.cxx:258
 AEVManager.cxx:259
 AEVManager.cxx:260
 AEVManager.cxx:261
 AEVManager.cxx:262
 AEVManager.cxx:263
 AEVManager.cxx:264
 AEVManager.cxx:265
 AEVManager.cxx:266
 AEVManager.cxx:267
 AEVManager.cxx:268
 AEVManager.cxx:269
 AEVManager.cxx:270
 AEVManager.cxx:271
 AEVManager.cxx:272
 AEVManager.cxx:273
 AEVManager.cxx:274
 AEVManager.cxx:275
 AEVManager.cxx:276
 AEVManager.cxx:277
 AEVManager.cxx:278
 AEVManager.cxx:279
 AEVManager.cxx:280
 AEVManager.cxx:281
 AEVManager.cxx:282
 AEVManager.cxx:283
 AEVManager.cxx:284
 AEVManager.cxx:285
 AEVManager.cxx:286
 AEVManager.cxx:287
 AEVManager.cxx:288
 AEVManager.cxx:289
 AEVManager.cxx:290
 AEVManager.cxx:291
 AEVManager.cxx:292
 AEVManager.cxx:293
 AEVManager.cxx:294
 AEVManager.cxx:295
 AEVManager.cxx:296
 AEVManager.cxx:297
 AEVManager.cxx:298
 AEVManager.cxx:299
 AEVManager.cxx:300
 AEVManager.cxx:301
 AEVManager.cxx:302
 AEVManager.cxx:303
 AEVManager.cxx:304
 AEVManager.cxx:305
 AEVManager.cxx:306
 AEVManager.cxx:307
 AEVManager.cxx:308
 AEVManager.cxx:309
 AEVManager.cxx:310
 AEVManager.cxx:311
 AEVManager.cxx:312
 AEVManager.cxx:313
 AEVManager.cxx:314
 AEVManager.cxx:315
 AEVManager.cxx:316
 AEVManager.cxx:317
 AEVManager.cxx:318
 AEVManager.cxx:319
 AEVManager.cxx:320
 AEVManager.cxx:321
 AEVManager.cxx:322
 AEVManager.cxx:323
 AEVManager.cxx:324
 AEVManager.cxx:325
 AEVManager.cxx:326
 AEVManager.cxx:327
 AEVManager.cxx:328
 AEVManager.cxx:329
 AEVManager.cxx:330
 AEVManager.cxx:331
 AEVManager.cxx:332
 AEVManager.cxx:333
 AEVManager.cxx:334
 AEVManager.cxx:335
 AEVManager.cxx:336
 AEVManager.cxx:337
 AEVManager.cxx:338
 AEVManager.cxx:339
 AEVManager.cxx:340
 AEVManager.cxx:341
 AEVManager.cxx:342
 AEVManager.cxx:343
 AEVManager.cxx:344
 AEVManager.cxx:345
 AEVManager.cxx:346
 AEVManager.cxx:347
 AEVManager.cxx:348
 AEVManager.cxx:349
 AEVManager.cxx:350
 AEVManager.cxx:351
 AEVManager.cxx:352
 AEVManager.cxx:353
 AEVManager.cxx:354
 AEVManager.cxx:355
 AEVManager.cxx:356
 AEVManager.cxx:357
 AEVManager.cxx:358
 AEVManager.cxx:359
 AEVManager.cxx:360
 AEVManager.cxx:361
 AEVManager.cxx:362
 AEVManager.cxx:363
 AEVManager.cxx:364
 AEVManager.cxx:365
 AEVManager.cxx:366
 AEVManager.cxx:367
 AEVManager.cxx:368
 AEVManager.cxx:369
 AEVManager.cxx:370
 AEVManager.cxx:371
 AEVManager.cxx:372
 AEVManager.cxx:373
 AEVManager.cxx:374
 AEVManager.cxx:375
 AEVManager.cxx:376
 AEVManager.cxx:377
 AEVManager.cxx:378
 AEVManager.cxx:379
 AEVManager.cxx:380
 AEVManager.cxx:381
 AEVManager.cxx:382
 AEVManager.cxx:383
 AEVManager.cxx:384
 AEVManager.cxx:385
 AEVManager.cxx:386
 AEVManager.cxx:387
 AEVManager.cxx:388
 AEVManager.cxx:389
 AEVManager.cxx:390
 AEVManager.cxx:391
 AEVManager.cxx:392
 AEVManager.cxx:393
 AEVManager.cxx:394
 AEVManager.cxx:395
 AEVManager.cxx:396
 AEVManager.cxx:397
 AEVManager.cxx:398
 AEVManager.cxx:399
 AEVManager.cxx:400
 AEVManager.cxx:401
 AEVManager.cxx:402
 AEVManager.cxx:403
 AEVManager.cxx:404
 AEVManager.cxx:405
 AEVManager.cxx:406
 AEVManager.cxx:407
 AEVManager.cxx:408
 AEVManager.cxx:409
 AEVManager.cxx:410
 AEVManager.cxx:411
 AEVManager.cxx:412
 AEVManager.cxx:413
 AEVManager.cxx:414
 AEVManager.cxx:415
 AEVManager.cxx:416
 AEVManager.cxx:417
 AEVManager.cxx:418
 AEVManager.cxx:419
 AEVManager.cxx:420
 AEVManager.cxx:421
 AEVManager.cxx:422
 AEVManager.cxx:423
 AEVManager.cxx:424
 AEVManager.cxx:425
 AEVManager.cxx:426
 AEVManager.cxx:427
 AEVManager.cxx:428
 AEVManager.cxx:429
 AEVManager.cxx:430
 AEVManager.cxx:431
 AEVManager.cxx:432
 AEVManager.cxx:433
 AEVManager.cxx:434
 AEVManager.cxx:435
 AEVManager.cxx:436
 AEVManager.cxx:437
 AEVManager.cxx:438
 AEVManager.cxx:439
 AEVManager.cxx:440
 AEVManager.cxx:441
 AEVManager.cxx:442
 AEVManager.cxx:443
 AEVManager.cxx:444
 AEVManager.cxx:445
 AEVManager.cxx:446
 AEVManager.cxx:447
 AEVManager.cxx:448
 AEVManager.cxx:449
 AEVManager.cxx:450
 AEVManager.cxx:451
 AEVManager.cxx:452
 AEVManager.cxx:453
 AEVManager.cxx:454
 AEVManager.cxx:455
 AEVManager.cxx:456
 AEVManager.cxx:457
 AEVManager.cxx:458
 AEVManager.cxx:459
 AEVManager.cxx:460
 AEVManager.cxx:461
 AEVManager.cxx:462
 AEVManager.cxx:463
 AEVManager.cxx:464
 AEVManager.cxx:465
 AEVManager.cxx:466
 AEVManager.cxx:467
 AEVManager.cxx:468
 AEVManager.cxx:469
 AEVManager.cxx:470
 AEVManager.cxx:471
 AEVManager.cxx:472
 AEVManager.cxx:473
 AEVManager.cxx:474
 AEVManager.cxx:475