ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
RandLandau.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file RandLandau.h
1
// -*- C++ -*-
2
//
3
// -----------------------------------------------------------------------
4
// HEP Random
5
// --- RandLandau ---
6
// class header file
7
// -----------------------------------------------------------------------
8
// This file is part of Geant4 (simulation toolkit for HEP).
9
10
// Class defining methods for shooting or firing Landau distributed
11
// random values.
12
//
13
// The Landau distribution is parameterless and describes the fluctuations
14
// in energy loss of a particle, making certain assumptions. For
15
// definitions and algorithms, the following papers could be read:
16
//
17
// Landau, Jour Phys VIII, No. 4, p. 201 (1944)
18
// Borsh-Supan, Jour Res. of NBS 65B NO. 4 p. 245 (1961)
19
// Kolbig & Schorr Comp Phys Comm 31 p. 97 (1984)
20
//
21
// The algorithm implemented comes form RANLAN in CERNLIB.
22
23
// =======================================================================
24
// M. Fischler - Created: 5th January 2000
25
// M Fischler - put and get to/from streams 12/10/04
26
//
27
// =======================================================================
28
29
#ifndef RandLandau_h
30
#define RandLandau_h 1
31
32
#include "
CLHEP/Random/Random.h
"
33
#include "
CLHEP/Utility/memory.h
"
34
35
namespace
CLHEP {
36
41
class
RandLandau
:
public
HepRandom
{
42
43
public
:
44
45
inline
RandLandau
(
HepRandomEngine
& anEngine );
46
inline
RandLandau
(
HepRandomEngine
* anEngine );
47
48
// These constructors should be used to instantiate a RandLandau
49
// distribution object defining a local engine for it.
50
// The static generator will be skipped using the non-static methods
51
// defined below.
52
// If the engine is passed by pointer the corresponding engine object
53
// will be deleted by the RandLandau destructor.
54
// If the engine is passed by reference the corresponding engine object
55
// will not be deleted by the RandLandau destructor.
56
57
virtual
~RandLandau
();
58
// Destructor
59
60
// Save and restore to/from streams
61
62
std::ostream &
put
( std::ostream & os )
const
;
63
std::istream &
get
( std::istream & is );
64
65
//
66
// Methods to generate Landau-distributed random deviates.
67
//
68
// These deviates are accurate to the actual Landau distribution to
69
// one part in 10**5 or better.
70
71
// Static methods to shoot random values using the static generator
72
73
static
inline
double
shoot
();
74
75
static
void
shootArray
(
const
int
size,
double
* vect );
76
77
// Static methods to shoot random values using a given engine
78
// by-passing the static generator.
79
80
static
inline
double
shoot
(
HepRandomEngine
* anotherEngine );
81
82
static
void
shootArray
(
HepRandomEngine
* anotherEngine,
83
const
int
size,
84
double
* vect );
85
86
// Instance methods using the localEngine to instead of the static
87
// generator, and the default mean and stdDev established at construction
88
89
inline
double
fire
();
90
91
void
fireArray
(
const
int
size,
double
* vect);
92
93
inline
double
operator()
();
94
95
std::string
name
()
const
;
96
HepRandomEngine
&
engine
();
97
98
static
std::string
distributionName
() {
return
"RandLandau"
;}
99
// Provides the name of this distribution class
100
101
102
protected
:
103
104
static
double
transform
(
double
r
);
105
static
double
transformSmall
(
double
r
);
106
107
private
:
108
109
std::shared_ptr<HepRandomEngine>
localEngine
;
110
111
};
112
113
}
// namespace CLHEP
114
115
#include "CLHEP/Random/RandLandau.icc"
116
117
#endif
geant4
tree
geant4-10.6-release
source
externals
clhep
include
CLHEP
Random
RandLandau.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:14
using
1.8.2 with
ECCE GitHub integration