/usr/include/CLHEP/Random/RandGauss.h is in libclhep-dev 2.1.2.3-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 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | // $Id: RandGauss.h,v 1.5 2010/06/16 17:24:53 garren Exp $
// -*- C++ -*-
//
// -----------------------------------------------------------------------
// HEP Random
// --- RandGauss ---
// class header file
// -----------------------------------------------------------------------
// This file is part of Geant4 (simulation toolkit for HEP).
// Class defining methods for shooting gaussian distributed random values,
// given a mean (default=0) or specifying also a deviation (default=1).
// Gaussian random numbers are generated two at the time, so every
// other time shoot is called the number returned is the one generated the
// time before.
// Default values are used for operator()().
// =======================================================================
// Gabriele Cosmo - Created: 5th September 1995
// - Minor corrections: 31st October 1996
// - Added methods to shoot arrays: 28th July 1997
// J.Marraffino - Added default arguments as attributes and
// operator() with arguments. Introduced method normal()
// for computation in fire(): 16th Feb 1998
// Gabriele Cosmo - Relocated static data from HepRandom: 5th Jan 1999
// M Fischler - put and get to/from streams 12/8/04
// =======================================================================
#ifndef RandGauss_h
#define RandGauss_h 1
#include "CLHEP/Random/defs.h"
#include "CLHEP/Random/Random.h"
#include "CLHEP/Utility/memory.h"
namespace CLHEP {
/**
* @author
* @ingroup random
*/
class RandGauss : public HepRandom {
public:
inline RandGauss ( HepRandomEngine& anEngine, double mean=0.0,
double stdDev=1.0 );
inline RandGauss ( HepRandomEngine* anEngine, double mean=0.0,
double stdDev=1.0 );
// These constructors should be used to instantiate a RandGauss
// 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 RandGauss destructor.
// If the engine is passed by reference the corresponding engine object
// will not be deleted by the RandGauss destructor.
virtual ~RandGauss();
// Destructor
// Static methods to shoot random values using the static generator
static double shoot();
static inline double shoot( double mean, double stdDev );
static void shootArray ( const int size, double* vect,
double mean=0.0, double stdDev=1.0 );
// Static methods to shoot random values using a given engine
// by-passing the static generator.
static double shoot( HepRandomEngine* anEngine );
static inline double shoot( HepRandomEngine* anEngine,
double mean, double stdDev );
static void shootArray ( HepRandomEngine* anEngine, const int size,
double* vect, double mean=0.0,
double stdDev=1.0 );
// Methods using the localEngine to shoot random values, by-passing
// the static generator.
double fire();
inline double fire( double mean, double stdDev );
void fireArray ( const int size, double* vect);
void fireArray ( const int size, double* vect,
double mean, double stdDev );
virtual double operator()();
virtual double operator()( double mean, double stdDev );
std::string name() const;
HepRandomEngine & engine();
static std::string distributionName() {return "RandGauss";}
// Provides the name of this distribution class
// Save and restore to/from streams
std::ostream & put ( std::ostream & os ) const;
std::istream & get ( std::istream & is );
// Methods setFlag(false) and setF(false) if invoked in the client
// code before shoot/fire will force generation of a new couple of
// values.
static bool getFlag() {return set_st;}
static void setFlag( bool val ) {set_st = val;}
bool getF() const {return set;}
void setF( bool val ) {set = val;}
// Methods overriding the base class static saveEngineStatus ones,
// by adding extra data so that save in one program, then further gaussians,
// will produce the identical sequence to restore in another program, then
// generating gaussian randoms there
static void saveEngineStatus( const char filename[] = "Config.conf" );
// Saves to file the current status of the current engine.
static void restoreEngineStatus( const char filename[] = "Config.conf" );
// Restores a saved status (if any) for the current engine.
static std::ostream& saveFullState ( std::ostream & os );
// Saves to stream the state of the engine and cached data.
static std::istream& restoreFullState ( std::istream & is );
// Restores from stream the state of the engine and cached data.
static std::ostream& saveDistState ( std::ostream & os );
// Saves to stream the state of the cached data.
static std::istream& restoreDistState ( std::istream & is );
// Restores from stream the state of the cached data.
protected:
static double getVal() {return nextGauss_st;}
static void setVal( double nextVal ) {nextGauss_st = nextVal;}
double normal();
double defaultMean;
double defaultStdDev;
shared_ptr<HepRandomEngine> localEngine;
private:
bool set;
double nextGauss;
// static data
static bool set_st;
static double nextGauss_st;
};
} // namespace CLHEP
#ifdef ENABLE_BACKWARDS_COMPATIBILITY
// backwards compatibility will be enabled ONLY in CLHEP 1.9
using namespace CLHEP;
#endif
#include "CLHEP/Random/RandGauss.icc"
#endif
|