Geant4 Cross Reference |
1 // -*- C++ -*- 1 2 // 3 // ------------------------------------------- 4 // HEP Random 5 // --- RandBreitWigner 6 // class header file 7 // ------------------------------------------- 8 // This file is part of Geant4 (simulation too 9 // 10 // Class defining methods for shooting numbers 11 // Breit-Wigner distribution algorithms (plain 12 // Default values are set: mean=1, gamma=.2, c 13 // Plain algorithm is used for shootArray() an 14 // Plain algorithm with default values is used 15 16 // =========================================== 17 // Gabriele Cosmo - Created: 5th September 199 18 // - Added methods to shoot arr 19 // J.Marraffino - Added default arguments as 20 // operator() with arguments: 21 // M Fischler - put and get to/from strea 22 // =========================================== 23 24 #ifndef RandBreitWigner_h 25 #define RandBreitWigner_h 1 26 27 #include "CLHEP/Random/RandFlat.h" 28 #include "CLHEP/Utility/memory.h" 29 30 namespace CLHEP { 31 32 /** 33 * @author <Gabriele.Cosmo@cern.ch> 34 * @ingroup random 35 */ 36 class RandBreitWigner : public HepRandom { 37 38 public: 39 40 inline RandBreitWigner ( HepRandomEngine& an 41 double 42 inline RandBreitWigner ( HepRandomEngine* an 43 double 44 // These constructors should be used to inst 45 // distribution object defining a local engi 46 // The static generator will be skipped usin 47 // defined below. 48 // If the engine is passed by pointer the co 49 // will be deleted by the RandBreitWigner de 50 // If the engine is passed by reference the 51 // will not be deleted by the RandBreitWigne 52 53 virtual ~RandBreitWigner(); 54 // Destructor 55 56 // Static methods to shoot random values usi 57 58 static double shoot( double a=1.0, double b 59 60 static double shoot( double a, double b, do 61 62 static double shootM2( double a=1.0, double 63 64 static double shootM2( double a, double b, 65 66 static void shootArray ( const int size, do 67 68 static void shootArray ( const int size, do 69 double a, double b 70 71 static void shootArray ( const int size, do 72 double a, double b 73 74 // Static methods to shoot random values us 75 // by-passing the static generator. 76 77 static double shoot( HepRandomEngine* anEng 78 double b=0.2 ); 79 static double shoot( HepRandomEngine* anEng 80 double b, double c 81 static double shootM2( HepRandomEngine* anE 82 double b=0.2 ); 83 static double shootM2( HepRandomEngine* anE 84 double b, double 85 static void shootArray ( HepRandomEngine* a 86 const int size, do 87 static void shootArray ( HepRandomEngine* a 88 const int size, do 89 double a, double b 90 static void shootArray ( HepRandomEngine* a 91 const int size, do 92 double a, double b 93 94 // Methods using the localEngine to shoot r 95 // the static generator. These methods resp 96 // passed by the user at instantiation unle 97 // arguments in the call. 98 99 double fire(); 100 101 double fire( double a, double b ); 102 103 double fire( double a, double b, double c ); 104 105 double fireM2(); 106 107 double fireM2( double a, double b ); 108 109 double fireM2( double a, double b, double c 110 111 void fireArray ( const int size, double* vec 112 113 void fireArray ( const int size, double* vec 114 double a, double b ); 115 116 void fireArray ( const int size, double* vec 117 double a, double b, double 118 double operator()(); 119 double operator()( double a, double b ); 120 double operator()( double a, double b, doubl 121 122 // Save and restore to/from streams 123 124 std::ostream & put ( std::ostream & os ) con 125 std::istream & get ( std::istream & is ); 126 127 std::string name() const; 128 HepRandomEngine & engine(); 129 130 static std::string distributionName() {retur 131 // Provides the name of this distribution cl 132 133 private: 134 135 std::shared_ptr<HepRandomEngine> localEngine 136 double defaultA; 137 double defaultB; 138 139 }; 140 141 } // namespace CLHEP 142 143 #include "CLHEP/Random/RandBreitWigner.icc" 144 145 #endif 146