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