Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/include/CLHEP/Random/RandPoisson.h

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/clhep/include/CLHEP/Random/RandPoisson.h (Version 11.3.0) and /externals/clhep/include/CLHEP/Random/RandPoisson.h (Version 10.5)


  1 // -*- C++ -*-                                      1 // -*- C++ -*-
  2 //                                                  2 //
  3 // -------------------------------------------      3 // -----------------------------------------------------------------------
  4 //                             HEP Random           4 //                             HEP Random
  5 //                         --- RandPoisson ---      5 //                         --- RandPoisson ---
  6 //                          class header file       6 //                          class header file
  7 // -------------------------------------------      7 // -----------------------------------------------------------------------
  8 // This file is part of Geant4 (simulation too      8 // This file is part of Geant4 (simulation toolkit for HEP).
  9                                                     9 
 10 // Class defining methods for shooting numbers     10 // Class defining methods for shooting numbers according to the Poisson
 11 // distribution, given a mean (Algorithm taken     11 // distribution, given a mean (Algorithm taken from "W.H.Press et al.,
 12 // Numerical Recipes in C, Second Edition".        12 // Numerical Recipes in C, Second Edition".
 13 // Default mean value is set to 1, value used      13 // Default mean value is set to 1, value used for operator()().
 14                                                    14 
 15 // ===========================================     15 // =======================================================================
 16 // Gabriele Cosmo - Created: 5th September 199     16 // Gabriele Cosmo - Created: 5th September 1995
 17 //                - Added not static Shoot() m     17 //                - Added not static Shoot() method: 17th May 1996
 18 //                - Algorithm now operates on      18 //                - Algorithm now operates on doubles : 31st Oct 1996
 19 //                - Added methods to shoot arr     19 //                - Added methods to shoot arrays: 28th July 1997
 20 // J.Marraffino   - Added default mean as attr     20 // J.Marraffino   - Added default mean as attribute and
 21 //                  operator() with mean: 16th     21 //                  operator() with mean: 16th Feb 1998
 22 // Gabriele Cosmo - Relocated static data from     22 // Gabriele Cosmo - Relocated static data from HepRandom: 5th Jan 1999
 23 // M. Fischler    - Moved meanMax and defaultM     23 // M. Fischler    - Moved meanMax and defaultMean from private to protected
 24 //        to accomodate derived classes RandPo     24 //        to accomodate derived classes RandPoissonQ & RandPoissonT
 25 // M Fischler      - put and get to/from strea     25 // M Fischler      - put and get to/from streams 12/10/04
 26 // ===========================================     26 // =======================================================================
 27                                                    27 
 28 #ifndef RandPoisson_h                              28 #ifndef RandPoisson_h
 29 #define RandPoisson_h 1                            29 #define RandPoisson_h 1
 30                                                    30 
 31 #include "CLHEP/Random/Random.h"                   31 #include "CLHEP/Random/Random.h"
 32 #include "CLHEP/Utility/memory.h"                  32 #include "CLHEP/Utility/memory.h"
 33 #include "CLHEP/Utility/thread_local.h"            33 #include "CLHEP/Utility/thread_local.h"
 34                                                    34 
 35 namespace CLHEP {                                  35 namespace CLHEP {
 36                                                    36 
 37 /**                                                37 /**
 38  * @author                                         38  * @author
 39  * @ingroup random                                 39  * @ingroup random
 40  */                                                40  */
 41 class RandPoisson : public HepRandom {             41 class RandPoisson : public HepRandom {
 42                                                    42 
 43 public:                                            43 public:
 44                                                    44 
 45   inline RandPoisson ( HepRandomEngine& anEngi     45   inline RandPoisson ( HepRandomEngine& anEngine, double a1=1.0 );
 46   inline RandPoisson ( HepRandomEngine* anEngi     46   inline RandPoisson ( HepRandomEngine* anEngine, double a1=1.0 );
 47   // These constructors should be used to inst     47   // These constructors should be used to instantiate a RandPoisson
 48   // distribution object defining a local engi     48   // distribution object defining a local engine for it.
 49   // The static generator will be skipped usin     49   // The static generator will be skipped using the non-static methods
 50   // defined below.                                50   // defined below.
 51   // If the engine is passed by pointer the co     51   // If the engine is passed by pointer the corresponding engine object
 52   // will be deleted by the RandPoisson destru     52   // will be deleted by the RandPoisson destructor.
 53   // If the engine is passed by reference the      53   // If the engine is passed by reference the corresponding engine object
 54   // will not be deleted by the RandPoisson de     54   // will not be deleted by the RandPoisson destructor.
 55                                                    55 
 56   virtual ~RandPoisson();                          56   virtual ~RandPoisson();
 57   // Destructor                                    57   // Destructor
 58                                                    58 
 59   // Save and restore to/from streams              59   // Save and restore to/from streams
 60                                                    60   
 61   std::ostream & put ( std::ostream & os ) con     61   std::ostream & put ( std::ostream & os ) const;
 62   std::istream & get ( std::istream & is );        62   std::istream & get ( std::istream & is );
 63                                                    63 
 64   // Static methods to shoot random values usi     64   // Static methods to shoot random values using the static generator
 65                                                    65 
 66   static  long shoot( double mean=1.0 );       <<  66   static  long shoot( double m=1.0 );
 67                                                    67 
 68   static  void shootArray ( const int size, lo <<  68   static  void shootArray ( const int size, long* vect, double m=1.0 );
 69                                                    69 
 70   //  Static methods to shoot random values us     70   //  Static methods to shoot random values using a given engine
 71   //  by-passing the static generator.             71   //  by-passing the static generator.
 72                                                    72 
 73   static  long shoot( HepRandomEngine* anEngin <<  73   static  long shoot( HepRandomEngine* anEngine, double m=1.0 );
 74                                                    74 
 75   static  void shootArray ( HepRandomEngine* a     75   static  void shootArray ( HepRandomEngine* anEngine,
 76                             const int size, lo <<  76                             const int size, long* vect, double m=1.0 );
 77                                                    77 
 78   //  Methods using the localEngine to shoot r     78   //  Methods using the localEngine to shoot random values, by-passing
 79   //  the static generator.                        79   //  the static generator.
 80                                                    80 
 81   long  fire();                                    81   long  fire();
 82   long  fire( double mean );                   <<  82   long  fire( double m );
 83                                                    83 
 84   void fireArray ( const int size, long* vect      84   void fireArray ( const int size, long* vect );
 85   void fireArray ( const int size, long* vect, <<  85   void fireArray ( const int size, long* vect, double m);
 86                                                    86 
 87   double operator()();                             87   double operator()();
 88   double operator()( double mean );            <<  88   double operator()( double m );
 89                                                    89   
 90   std::string name() const;                        90   std::string name() const;
 91   HepRandomEngine & engine();                      91   HepRandomEngine & engine();
 92                                                    92 
 93   static std::string distributionName() {retur     93   static std::string distributionName() {return "RandPoisson";}  
 94   // Provides the name of this distribution cl     94   // Provides the name of this distribution class
 95                                                    95 
 96 protected:                                         96 protected:
 97                                                    97 
 98   double meanMax;                                  98   double meanMax;
 99   double defaultMean;                              99   double defaultMean;
100                                                   100 
101   static  double getOldMean() {return oldm_st;    101   static  double getOldMean() {return oldm_st;}
102                                                   102 
103   static  double getMaxMean() {return meanMax_    103   static  double getMaxMean() {return meanMax_st;}
104                                                   104 
105   static  void setOldMean( double val ){oldm_s    105   static  void setOldMean( double val ){oldm_st = val;}
106                                                   106 
107   static  double* getPStatus() {return status_    107   static  double* getPStatus() {return status_st;}
108                                                   108 
109   static void setPStatus(double sq, double alx    109   static void setPStatus(double sq, double alxm, double g1) {
110     status_st[0] = sq; status_st[1] = alxm; st    110     status_st[0] = sq; status_st[1] = alxm; status_st[2] = g1;
111   }                                               111   }
112                                                   112 
113   inline HepRandomEngine* getLocalEngine();       113   inline HepRandomEngine* getLocalEngine();
114                                                   114   
115 private:                                          115 private:
116                                                   116 
117   std::shared_ptr<HepRandomEngine> localEngine    117   std::shared_ptr<HepRandomEngine> localEngine;
118   double status[3], oldm;                         118   double status[3], oldm;
119                                                   119 
120   // static data                                  120   // static data
121   static CLHEP_THREAD_LOCAL double status_st[3    121   static CLHEP_THREAD_LOCAL double status_st[3];
122   static CLHEP_THREAD_LOCAL double oldm_st;       122   static CLHEP_THREAD_LOCAL double oldm_st;
123   static const double meanMax_st;                 123   static const double meanMax_st;
124                                                   124 
125 };                                                125 };
126                                                   126 
127 }  // namespace CLHEP                             127 }  // namespace CLHEP
128                                                   128 
129 #include "CLHEP/Random/RandPoisson.icc"           129 #include "CLHEP/Random/RandPoisson.icc"
130                                                   130 
131 #endif                                            131 #endif
132                                                   132