CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

RandGaussT.cc

Go to the documentation of this file.
00001 // $Id: RandGaussT.cc,v 1.5 2010/06/16 17:24:53 garren Exp $
00002 // -*- C++ -*-
00003 //
00004 // -----------------------------------------------------------------------
00005 //                             HEP Random
00006 //                          --- RandGaussT ---
00007 //                      class implementation file
00008 // -----------------------------------------------------------------------
00009 
00010 // =======================================================================
00011 // M Fischler     - Created 04 Feb 2000
00012 // M Fischler     - put and get to/from streams 12/13/04
00013 // M Fischler     - operator() modified to use localEngine 12/13/04
00014 // =======================================================================
00015 
00016 #include "CLHEP/Random/defs.h"
00017 #include "CLHEP/Random/RandGaussT.h"
00018 #include <iostream>
00019 
00020 namespace CLHEP {
00021 
00022 std::string RandGaussT::name() const {return "RandGaussT";}
00023 HepRandomEngine & RandGaussT::engine() {return RandGauss::engine();}
00024 
00025 RandGaussT::~RandGaussT() {
00026 }
00027 
00028 double RandGaussT::operator()() {
00029   return HepStat::flatToGaussian(localEngine->flat()) * defaultStdDev 
00030                                                                 + defaultMean;
00031 }
00032 
00033 double RandGaussT::operator()( double mean, double stdDev ) {
00034   return HepStat::flatToGaussian(localEngine->flat()) * stdDev + mean;
00035 }
00036 
00037 void RandGaussT::shootArray( const int size, double* vect,
00038                             double mean, double stdDev )
00039 {
00040   for( double* v = vect; v != vect + size; ++v )
00041     *v = shoot(mean,stdDev);
00042 }
00043 
00044 void RandGaussT::shootArray( HepRandomEngine* anEngine,
00045                             const int size, double* vect,
00046                             double mean, double stdDev )
00047 {
00048   for( double* v = vect; v != vect + size; ++v )
00049     *v = shoot(anEngine,mean,stdDev);
00050 }
00051 
00052 void RandGaussT::fireArray( const int size, double* vect)
00053 {
00054   for( double* v = vect; v != vect + size; ++v )
00055     *v = fire( defaultMean, defaultStdDev );
00056 }
00057 
00058 void RandGaussT::fireArray( const int size, double* vect,
00059                            double mean, double stdDev )
00060 {
00061   for( double* v = vect; v != vect + size; ++v )
00062     *v = fire( mean, stdDev );
00063 }
00064 
00065 std::ostream & RandGaussT::put ( std::ostream & os ) const {
00066   int pr=os.precision(20);
00067   os << " " << name() << "\n";
00068   RandGauss::put(os);
00069   os.precision(pr);
00070   return os;
00071 }
00072 
00073 std::istream & RandGaussT::get ( std::istream & is ) {
00074   std::string inName;
00075   is >> inName;
00076   if (inName != name()) {
00077     is.clear(std::ios::badbit | is.rdstate());
00078     std::cerr << "Mismatch when expecting to read state of a "
00079               << name() << " distribution\n"
00080               << "Name found was " << inName
00081               << "\nistream is left in the badbit state\n";
00082     return is;
00083   }
00084   RandGauss::get(is);
00085   return is;
00086 }
00087 
00088 }  // namespace CLHEP
00089 

Generated on 15 Nov 2012 for CLHEP by  doxygen 1.4.7