ROOT logo
// $Id: PerfMeterOperator.cxx 2088 2008-11-23 20:26:46Z 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 "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