Gaudi Framework, version v20r4

Generated: 8 Jan 2009

RndmGen.cpp

Go to the documentation of this file.
00001 //====================================================================
00002 //      Random RndmGen class implementation
00003 //--------------------------------------------------------------------
00004 //
00005 //      Package    : Gaudi/RndmGen ( The LHCb Offline System)
00006 //      Author     : M.Frank
00007 //  History    :
00008 //  +---------+----------------------------------------------+--------+
00009 //  |    Date |                 Comment                      | Who    |
00010 //  +---------+----------------------------------------------+--------+
00011 //  | 21/11/99| Initial version.                             | MF     |
00012 //  +---------+----------------------------------------------+--------+
00013 //====================================================================
00014 #define GAUDI_RANDOMGENSVC_RNDMGEN_CPP
00015 
00016 #include <cfloat>
00017 #include "GaudiKernel/ISvcLocator.h"
00018 #include "GaudiKernel/IRndmEngine.h"
00019 #include "RndmGen.h"
00020 
00022 RndmGen::RndmGen(IInterface* engine) : m_refCount(0), m_params(0), m_engine(0)   {
00023   if ( 0 != engine )  {
00024     engine->queryInterface(IID_IRndmEngine, pp_cast<void>(&m_engine)).ignore();
00025   }
00026 }
00027 
00029 RndmGen::~RndmGen()   {
00030   if ( m_engine ) m_engine->release();
00031   m_engine = 0;
00032   if ( m_params ) delete m_params;
00033   m_params = 0;
00034 }
00035 
00037 StatusCode RndmGen::queryInterface(const InterfaceID& riid, void** ppvInterface)  {
00038   if ( IID_IRndmGen == riid )   {
00039     *ppvInterface = (IRndmGen*)this;
00040   }
00041   else if ( IID_IInterface == riid )   {
00042     *ppvInterface = (IInterface*)this;
00043   }
00044   else  {
00045     return StatusCode::FAILURE;
00046   }
00047   addRef();
00048   return StatusCode::SUCCESS;
00049 }
00050 
00052 StatusCode RndmGen::initialize(const IRndmGen::Param& par)   {
00053   m_params = par.clone();
00054   return (0==m_engine) ? StatusCode::FAILURE : StatusCode::SUCCESS;
00055 }
00056 
00058 StatusCode RndmGen::finalize()   {
00059   return StatusCode::SUCCESS;
00060 }
00061 
00063 double RndmGen::shoot()  const  {
00064   return DBL_MAX;
00065 }
00066 
00068 StatusCode RndmGen::shootArray( std::vector<double>& array, long howmany, long start) const {
00069   if ( 0 != m_engine )    {
00070     long cnt = start;
00071     array.resize(start+howmany);
00072     for ( long i = start, num = start+howmany; i < num; i++ )     {
00073       array[cnt++] = shoot();
00074     }
00075     return StatusCode::SUCCESS;
00076   }
00077   return StatusCode::FAILURE;
00078 }
00079 

Generated at Thu Jan 8 17:44:24 2009 for Gaudi Framework, version v20r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004