File indexing completed on 2025-12-16 10:15:12
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef GAUDIKERNEL_IRNDMGEN_H
0012 #define GAUDIKERNEL_IRNDMGEN_H
0013
0014
0015 #include <string>
0016 #include <vector>
0017
0018
0019 #include <GaudiKernel/IInterface.h>
0020
0021
0022 static const InterfaceID IID_IRndmBit( 150, 1, 0 );
0023 static const InterfaceID IID_IRndmFlat( 151, 1, 0 );
0024 static const InterfaceID IID_IRndmChi2( 152, 1, 0 );
0025 static const InterfaceID IID_IRndmGamma( 153, 1, 0 );
0026 static const InterfaceID IID_IRndmGauss( 154, 1, 0 );
0027 static const InterfaceID IID_IRndmLandau( 155, 1, 0 );
0028 static const InterfaceID IID_IRndmPoisson( 156, 1, 0 );
0029 static const InterfaceID IID_IRndmStudentT( 157, 1, 0 );
0030 static const InterfaceID IID_IRndmBinomial( 158, 1, 0 );
0031 static const InterfaceID IID_IRndmExponential( 159, 1, 0 );
0032 static const InterfaceID IID_IRndmBreitWigner( 160, 1, 0 );
0033 static const InterfaceID IID_IRndmBreitWignerCutOff( 161, 1, 0 );
0034 static const InterfaceID IID_IRndmDefinedPdf( 162, 1, 0 );
0035 static const InterfaceID IID_IRndmGaussianTail( 163, 1, 0 );
0036
0037
0038
0039
0040
0041
0042
0043
0044 class GAUDI_API IRndmGen : virtual public IInterface {
0045 public:
0046
0047 DeclareInterfaceID( IRndmGen, 2, 0 );
0048
0049 class Param {
0050 protected:
0051
0052 const InterfaceID m_type;
0053
0054 public:
0055
0056 Param( const InterfaceID& type = IID_IRndmFlat ) : m_type( type ) {}
0057
0058 virtual ~Param() = default;
0059
0060 virtual const InterfaceID& type() const { return m_type; }
0061
0062 virtual Param* clone() const = 0;
0063 };
0064
0065
0066 virtual StatusCode initialize( const IRndmGen::Param& par ) = 0;
0067
0068 virtual StatusCode finalize() = 0;
0069
0070 virtual const InterfaceID& type() const = 0;
0071
0072 virtual long ID() const = 0;
0073
0074 virtual const IRndmGen::Param* parameters() const = 0;
0075
0076 virtual double shoot() const = 0;
0077
0078
0079
0080
0081
0082
0083 virtual StatusCode shootArray( std::vector<double>& array, long howmany, long start = 0 ) const = 0;
0084
0085
0086 virtual ~IRndmGen() = default;
0087 };
0088
0089 #endif