1 // $Id: RandGaussT.cc,v 1.5 2010/06/16 17:24:53 garren Exp $
2 // -*- C++ -*-
3 //
4 // -----------------------------------------------------------------------
5 //                             HEP Random
6 //                          --- RandGaussT ---
7 //                      class implementation file
8 // -----------------------------------------------------------------------
9 
10 // =======================================================================
11 // M Fischler	  - Created 04 Feb 2000
12 // M Fischler     - put and get to/from streams 12/13/04
13 // M Fischler	  - operator() modified to use localEngine 12/13/04
14 // =======================================================================
15 
16 #include "CLHEP/Random/defs.h"
17 #include "CLHEP/Random/RandGaussT.h"
18 #include <iostream>
19 
20 namespace CLHEP {
21 
name() const22 std::string RandGaussT::name() const {return "RandGaussT";}
engine()23 HepRandomEngine & RandGaussT::engine() {return RandGauss::engine();}
24 
~RandGaussT()25 RandGaussT::~RandGaussT() {
26 }
27 
operator ()()28 double RandGaussT::operator()() {
29   return HepStat::flatToGaussian(localEngine->flat()) * defaultStdDev
30 								+ defaultMean;
31 }
32 
operator ()(double mean,double stdDev)33 double RandGaussT::operator()( double mean, double stdDev ) {
34   return HepStat::flatToGaussian(localEngine->flat()) * stdDev + mean;
35 }
36 
shootArray(const int size,double * vect,double mean,double stdDev)37 void RandGaussT::shootArray( const int size, double* vect,
38                             double mean, double stdDev )
39 {
40   for( double* v = vect; v != vect + size; ++v )
41     *v = shoot(mean,stdDev);
42 }
43 
shootArray(HepRandomEngine * anEngine,const int size,double * vect,double mean,double stdDev)44 void RandGaussT::shootArray( HepRandomEngine* anEngine,
45                             const int size, double* vect,
46                             double mean, double stdDev )
47 {
48   for( double* v = vect; v != vect + size; ++v )
49     *v = shoot(anEngine,mean,stdDev);
50 }
51 
fireArray(const int size,double * vect)52 void RandGaussT::fireArray( const int size, double* vect)
53 {
54   for( double* v = vect; v != vect + size; ++v )
55     *v = fire( defaultMean, defaultStdDev );
56 }
57 
fireArray(const int size,double * vect,double mean,double stdDev)58 void RandGaussT::fireArray( const int size, double* vect,
59                            double mean, double stdDev )
60 {
61   for( double* v = vect; v != vect + size; ++v )
62     *v = fire( mean, stdDev );
63 }
64 
put(std::ostream & os) const65 std::ostream & RandGaussT::put ( std::ostream & os ) const {
66   int pr=os.precision(20);
67   os << " " << name() << "\n";
68   RandGauss::put(os);
69   os.precision(pr);
70   return os;
71 }
72 
get(std::istream & is)73 std::istream & RandGaussT::get ( std::istream & is ) {
74   std::string inName;
75   is >> inName;
76   if (inName != name()) {
77     is.clear(std::ios::badbit | is.rdstate());
78     std::cerr << "Mismatch when expecting to read state of a "
79     	      << name() << " distribution\n"
80 	      << "Name found was " << inName
81 	      << "\nistream is left in the badbit state\n";
82     return is;
83   }
84   RandGauss::get(is);
85   return is;
86 }
87 
88 }  // namespace CLHEP
89 
90