IRndmGen.h
Go to the documentation of this file.00001
00002 #ifndef GAUDIKERNEL_IRNDMGEN_H
00003 #define GAUDIKERNEL_IRNDMGEN_H
00004
00005
00006 #include <string>
00007 #include <vector>
00008
00009
00010 #include "GaudiKernel/IInterface.h"
00011
00012
00013 static const InterfaceID IID_IRndmBit(150, 1, 0);
00014 static const InterfaceID IID_IRndmFlat(151, 1, 0);
00015 static const InterfaceID IID_IRndmChi2(152, 1, 0);
00016 static const InterfaceID IID_IRndmGamma(153, 1, 0);
00017 static const InterfaceID IID_IRndmGauss(154, 1, 0);
00018 static const InterfaceID IID_IRndmLandau(155, 1, 0);
00019 static const InterfaceID IID_IRndmPoisson(156, 1, 0);
00020 static const InterfaceID IID_IRndmStudentT(157, 1, 0);
00021 static const InterfaceID IID_IRndmBinomial(158, 1, 0);
00022 static const InterfaceID IID_IRndmExponential(159, 1, 0);
00023 static const InterfaceID IID_IRndmBreitWigner(160, 1, 0);
00024 static const InterfaceID IID_IRndmBreitWignerCutOff(161, 1, 0);
00025 static const InterfaceID IID_IRndmDefinedPdf(162, 1, 0);
00026 static const InterfaceID IID_IRndmGaussianTail(163, 1, 0);
00027
00028
00036 class GAUDI_API IRndmGen: virtual public IInterface {
00037 public:
00039 DeclareInterfaceID(IRndmGen,2,0);
00040
00041 class Param {
00042 protected:
00044 const InterfaceID m_type;
00045 public:
00047 Param( const InterfaceID& type = IID_IRndmFlat ) : m_type(type) {}
00049 virtual ~Param() {}
00051 virtual const InterfaceID& type() const { return m_type; }
00053 virtual Param* clone() const = 0;
00054 };
00055
00057 virtual StatusCode initialize(const IRndmGen::Param& par) = 0;
00059 virtual StatusCode finalize() = 0;
00061 virtual const InterfaceID& type() const = 0;
00063 virtual long ID() const = 0;
00065 virtual const IRndmGen::Param* parameters() const = 0;
00067 virtual double shoot() const = 0;
00074 virtual StatusCode shootArray( std::vector<double>& array, long howmany, long start = 0) const = 0;
00075
00077 virtual ~IRndmGen() {}
00078
00079 };
00080
00081 #endif // GAUDIKERNEL_IRNDMGEN_H