ROOT logo
// $Id: PerfMeterOperator.cxx 2681 2012-03-05 18:17:40Z 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/.

//__________________________________________________________________________
// PerfMeterOperator
//
// If bUseBeams is true, make sure mBeamHost IS set.
// In fact should do this somwhere in routing code ... but anyway ...

#include "PerfMeterOperator.h"
#include <Glasses/PerfMeterTarget.h>
#include <Glasses/SaturnInfo.h>
#include "PerfMeterOperator.c7"

ClassImp(PerfMeterOperator);

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

void PerfMeterOperator::_init()
{
  mTest = TT_Void; bUseBeams = false;
  mVecSize  = 1;
  mTarget   = 0;
  mBeamHost = 0;
}

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

void PerfMeterOperator::Operate(Operator::Arg* op_arg)
{
  Operator::PreOperate(op_arg);

  if (mTarget == 0) goto end_operate;

  switch (mTest)
  {
    case TT_Void:
    {
      break;
    }
    case TT_Null:
    {
      if (op_arg->fMultix)
      {
	mTarget->NullMethod();
      }
      else
      {
	auto_ptr<ZMIR> mir(mTarget->S_NullMethod());
	send_beam_or_flare(mir);
      }
      break;
    }
    case TT_IncCount:
    {
      if (op_arg->fMultix)
      {
	mTarget->IncCount();
      }
      else
      {
	auto_ptr<ZMIR> mir(mTarget->S_IncCount());
	send_beam_or_flare(mir);
      }
      break;
    }
    case TT_SetVector:
    {
      TVector vec(mVecSize);
      if (op_arg->fMultix)
      {
	mTarget->AssignVector(vec);
      }
      else
      {
	auto_ptr<ZMIR> mir(mTarget->S_AssignVector(vec));
	send_beam_or_flare(mir);
      }
      break;
    }
  }

end_operate:
  Operator::PostOperate(op_arg);
}

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

void PerfMeterOperator::send_beam_or_flare(auto_ptr<ZMIR>& m)
{
  if(bUseBeams) {
    SaturnInfo *rec = mBeamHost.is_set() ? mBeamHost.get() : mSaturn->GetSaturnInfo();
    m->SetRecipient(rec);
  }
  mSaturn->PostMIR(m);
}
 PerfMeterOperator.cxx:1
 PerfMeterOperator.cxx:2
 PerfMeterOperator.cxx:3
 PerfMeterOperator.cxx:4
 PerfMeterOperator.cxx:5
 PerfMeterOperator.cxx:6
 PerfMeterOperator.cxx:7
 PerfMeterOperator.cxx:8
 PerfMeterOperator.cxx:9
 PerfMeterOperator.cxx:10
 PerfMeterOperator.cxx:11
 PerfMeterOperator.cxx:12
 PerfMeterOperator.cxx:13
 PerfMeterOperator.cxx:14
 PerfMeterOperator.cxx:15
 PerfMeterOperator.cxx:16
 PerfMeterOperator.cxx:17
 PerfMeterOperator.cxx:18
 PerfMeterOperator.cxx:19
 PerfMeterOperator.cxx:20
 PerfMeterOperator.cxx:21
 PerfMeterOperator.cxx:22
 PerfMeterOperator.cxx:23
 PerfMeterOperator.cxx:24
 PerfMeterOperator.cxx:25
 PerfMeterOperator.cxx:26
 PerfMeterOperator.cxx:27
 PerfMeterOperator.cxx:28
 PerfMeterOperator.cxx:29
 PerfMeterOperator.cxx:30
 PerfMeterOperator.cxx:31
 PerfMeterOperator.cxx:32
 PerfMeterOperator.cxx:33
 PerfMeterOperator.cxx:34
 PerfMeterOperator.cxx:35
 PerfMeterOperator.cxx:36
 PerfMeterOperator.cxx:37
 PerfMeterOperator.cxx:38
 PerfMeterOperator.cxx:39
 PerfMeterOperator.cxx:40
 PerfMeterOperator.cxx:41
 PerfMeterOperator.cxx:42
 PerfMeterOperator.cxx:43
 PerfMeterOperator.cxx:44
 PerfMeterOperator.cxx:45
 PerfMeterOperator.cxx:46
 PerfMeterOperator.cxx:47
 PerfMeterOperator.cxx:48
 PerfMeterOperator.cxx:49
 PerfMeterOperator.cxx:50
 PerfMeterOperator.cxx:51
 PerfMeterOperator.cxx:52
 PerfMeterOperator.cxx:53
 PerfMeterOperator.cxx:54
 PerfMeterOperator.cxx:55
 PerfMeterOperator.cxx:56
 PerfMeterOperator.cxx:57
 PerfMeterOperator.cxx:58
 PerfMeterOperator.cxx:59
 PerfMeterOperator.cxx:60
 PerfMeterOperator.cxx:61
 PerfMeterOperator.cxx:62
 PerfMeterOperator.cxx:63
 PerfMeterOperator.cxx:64
 PerfMeterOperator.cxx:65
 PerfMeterOperator.cxx:66
 PerfMeterOperator.cxx:67
 PerfMeterOperator.cxx:68
 PerfMeterOperator.cxx:69
 PerfMeterOperator.cxx:70
 PerfMeterOperator.cxx:71
 PerfMeterOperator.cxx:72
 PerfMeterOperator.cxx:73
 PerfMeterOperator.cxx:74
 PerfMeterOperator.cxx:75
 PerfMeterOperator.cxx:76
 PerfMeterOperator.cxx:77
 PerfMeterOperator.cxx:78
 PerfMeterOperator.cxx:79
 PerfMeterOperator.cxx:80
 PerfMeterOperator.cxx:81
 PerfMeterOperator.cxx:82
 PerfMeterOperator.cxx:83
 PerfMeterOperator.cxx:84
 PerfMeterOperator.cxx:85
 PerfMeterOperator.cxx:86
 PerfMeterOperator.cxx:87
 PerfMeterOperator.cxx:88
 PerfMeterOperator.cxx:89
 PerfMeterOperator.cxx:90
 PerfMeterOperator.cxx:91
 PerfMeterOperator.cxx:92
 PerfMeterOperator.cxx:93
 PerfMeterOperator.cxx:94
 PerfMeterOperator.cxx:95
 PerfMeterOperator.cxx:96
 PerfMeterOperator.cxx:97
 PerfMeterOperator.cxx:98
 PerfMeterOperator.cxx:99