1// $Id: RandGaussQ.icc,v 1.4 2010/06/16 17:24:53 garren Exp $
2// -*- C++ -*-
3//
4// -----------------------------------------------------------------------
5//                             HEP Random
6//                         --- RandGaussQ ---
7//                 inlined functions implementation file
8// -----------------------------------------------------------------------
9// This file is part of Geant4 (simulation toolkit for HEP).
10
11// =======================================================================
12// M. Fischler	  - Created: 24 Janm 2000
13//
14// M. Fischler    - Modified fire() to use local engine, not getTheEngine()
15//		    12/13/04
16// =======================================================================
17
18// Constructors
19// ------------
20
21//#define TRACE_DEBUG
22
23namespace CLHEP {
24
25RandGaussQ::RandGaussQ(HepRandomEngine & anEngine, double mean,
26                                                        double stdDev )
27: RandGauss(anEngine, mean, stdDev) {}
28
29RandGaussQ::RandGaussQ(HepRandomEngine * anEngine, double mean,
30                                                        double stdDev )
31: RandGauss(anEngine, mean, stdDev) {}
32
33// Getting a Gaussian deviate - static methods
34// -------------------------------------------
35
36double RandGaussQ::shoot()
37{
38#ifdef TRACE_DEBUG
39  std::cout << "RandGaussQ::shoot() in icc file\n";
40#endif
41  HepRandomEngine* anEngine = HepRandom::getTheEngine();
42#ifdef TRACE_DEBUG
43  std::cout << "RandGaussQ::shoot() engine is " << anEngine->name() << "\n";
44#endif
45  return transformQuick (anEngine->flat());
46}
47
48double RandGaussQ::shoot( HepRandomEngine* anotherEngine )
49{
50  return transformQuick  (anotherEngine->flat());
51}
52
53double RandGaussQ::shoot(double mean, double stdDev) {
54  return shoot()*stdDev + mean;
55}
56
57double RandGaussQ::shoot(HepRandomEngine* anotherEngine,
58                                  double mean, double stdDev) {
59  return shoot(anotherEngine)*stdDev + mean;
60}
61
62// Getting a Gaussian deviate - instance methods
63// ---------------------------------------------
64
65double RandGaussQ::fire() {
66  return transformQuick(localEngine->flat()) * defaultStdDev + defaultMean;
67}
68
69double RandGaussQ::fire(double mean, double stdDev) {
70  return transformQuick(localEngine->flat()) * stdDev + mean;
71}
72
73}  // namespace CLHEP
74
75