TSoftwareAdcModule.hh

TSoftwareAdcModuleクラスの解説 TSoftwareAdcModule.cc
// ============================================================================
//  $Id$
//  $Name$
// ============================================================================
#ifndef __TSOFTWAREADCMODULE_HH
#define __TSOFTWAREADCMODULE_HH

#include "TGlobals.hh"
#include "TSoftwareModule.hh"
#include "TChannel.hh"
#include "TRandomEngine.hh"
#include "TRandomFlat.hh"
#include "TRandomGaussian.hh"

class TDataSegment;
class TDataElement;

class TSoftwareAdcModule
  : public TSoftwareModule
{
  protected:
    enum { tDataOverFlow = -1 };
    enum { tDefaultScale = 4095 };
    enum { tDefaultChannel = 8 };

  protected:
    Tint theScale;
    Tint* theMean;
    Tint* theSigma;
    TChannel* theChannel;
    TRandomFlat theRandomFlat;
    TRandomGaussian theRandomGaussian;

  public:
    static Tlong theSeed;
    static TRandomEngine theRandomEngine;

  public:
    TSoftwareAdcModule( Tint nchannel = tDefaultChannel,
			Tint scale = tDefaultScale,
			Tint id = tIDunknown );

    virtual ~TSoftwareAdcModule();

  public:
    virtual Tint Clear();
    virtual Tint Update();
    virtual Tint Initialize();

    virtual Tvoid FillData( TDataSegment* seg );
    virtual Tvoid FillData( TDataElement* ele );

  public:
    inline virtual Tvoid Print( Tostream& tos = Tstd::Tcout ) const;

  protected:
    virtual Tvoid setParameters();

  public:
    inline virtual const TChannel* GetChannel() const;
    inline virtual Tint GetScale() const;
    inline virtual Tint GetMean( Tint channel = 0 ) const;
    inline virtual Tint GetSigma( Tint channel = 0 ) const;

    inline virtual Tvoid SetScale( Tint scale );

};

inline const TChannel* TSoftwareAdcModule::GetChannel() const
{
  return( theChannel );
}

inline Tint TSoftwareAdcModule::GetScale() const
{
  return( theScale );
}

inline Tint TSoftwareAdcModule::GetMean( Tint channel ) const
{
  if ( channel < 0 || ( channel >= theChannel -> GetNumberOfEntries() ) )
    return( -EFAULT );
  return( theMean[ channel ] );
}

inline Tint TSoftwareAdcModule::GetSigma( Tint channel ) const
{
  if ( channel < 0 || ( channel >= theChannel -> GetNumberOfEntries() ) )
    return( -EFAULT );
  return( theSigma[ channel ] );
}

inline Tvoid TSoftwareAdcModule::SetScale( Tint scale )
{
  theScale = scale;
  return;
}

#endif
$Id$
$Name$