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.1.p1)


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