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
PHG4SimpleEventGenerator.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file PHG4SimpleEventGenerator.h
1
// Tell emacs that this is a C++ source
2
// -*- C++ -*-.
3
#ifndef G4MAIN_PHG4SIMPLEEVENTGENERATOR_H
4
#define G4MAIN_PHG4SIMPLEEVENTGENERATOR_H
5
6
#include "
PHG4ParticleGeneratorBase.h
"
7
8
#include <cmath>
9
#include <map>
10
#include <string>
// for string
11
#include <utility>
// for pair
12
#include <vector>
13
14
class
PHG4InEvent
;
15
class
PHCompositeNode
;
16
17
class
PHG4SimpleEventGenerator
:
public
PHG4ParticleGeneratorBase
18
{
19
public
:
21
enum
FUNCTION
22
{
23
Uniform
,
24
Gaus
25
};
26
27
PHG4SimpleEventGenerator
(
const
std::string &
name
=
"EVTGENERATOR"
);
28
~PHG4SimpleEventGenerator
()
override
{}
29
30
int
InitRun
(
PHCompositeNode
*topNode)
override
;
31
int
process_event
(
PHCompositeNode
*topNode)
override
;
32
34
void
add_particles
(
const
std::string &
name
,
const
unsigned
int
count);
35
37
void
add_particles
(
const
int
pid
,
const
unsigned
int
count);
38
40
void
set_eta_range
(
const
double
eta_min,
const
double
eta_max);
41
43
void
set_theta_range
(
const
double
theta_min,
const
double
theta_max);
44
46
void
set_phi_range
(
const
double
phi_min,
const
double
phi_max);
47
49
void
set_power_law_n
(
const
double
n
);
50
53
void
set_pt_range
(
const
double
pt_min,
const
double
pt_max,
const
double
pt_gaus_width = 0);
54
57
void
set_p_range
(
const
double
p_min,
const
double
p_max,
const
double
p_gaus_width = 0);
58
60
void
set_vertex_distribution_function
(
FUNCTION
x
,
FUNCTION
y
,
FUNCTION
z
);
61
63
void
set_vertex_distribution_mean
(
const
double
x
,
const
double
y
,
const
double
z
);
64
66
void
set_vertex_distribution_width
(
const
double
x
,
const
double
y
,
const
double
z
);
67
69
void
set_existing_vertex_offset_vector
(
const
double
x
,
const
double
y
,
const
double
z
);
70
72
void
set_vertex_size_function
(
FUNCTION
r
) {
m_VertexSizeFunc_r
=
r
; }
73
75
void
set_vertex_size_parameters
(
const
double
mean,
const
double
width);
76
77
private
:
78
double
smearvtx
(
const
double
position
,
const
double
width,
FUNCTION
dist)
const
;
79
80
// these need to be stored separately until run time when the names
81
// can be translated using the GEANT4 lookup
82
std::vector<std::pair<int, unsigned int> >
_particle_codes
;
// <pdgcode, count>
83
std::vector<std::pair<std::string, unsigned int> >
_particle_names
;
// <names, count>
84
// so we can print out the function names without many if's
85
// also used to check if function is implemented
86
std::map<FUNCTION, std::string>
m_FunctionNames
= {{
Uniform
,
"Uniform"
}, {
Gaus
,
"Gaus"
}};
87
88
PHG4InEvent
*
m_InEvent
=
nullptr
;
89
FUNCTION
m_VertexFunc_x
=
Uniform
;
90
FUNCTION
m_VertexFunc_y
=
Uniform
;
91
FUNCTION
m_VertexFunc_z
=
Uniform
;
92
double
m_Vertex_x
= 0.;
93
double
m_Vertex_y
= 0.;
94
double
m_Vertex_z
= 0.;
95
double
m_VertexWidth_x
= 0.;
96
double
m_VertexWidth_y
= 0.;
97
double
m_VertexWidth_z
= 0.;
98
double
m_VertexOffset_x
= 0.;
99
double
m_VertexOffset_y
= 0.;
100
double
m_VertexOffset_z
= 0.;
101
FUNCTION
m_VertexSizeFunc_r
=
Uniform
;
102
double
m_VertexSizeMean
= 0.;
103
double
m_VertexSizeWidth
= 0.;
104
double
m_EtaMin
= -1.25;
105
double
m_EtaMax
= 1.25;
106
double
m_ThetaMin
= NAN;
107
double
m_ThetaMax
= NAN;
108
double
m_PhiMin
= -
M_PI
;
109
double
m_PhiMax
=
M_PI
;
110
double
m_Pt_Min
= 0.;
111
double
m_Pt_Max
= 10.;
112
double
m_Pt_GausWidth
= 0.;
113
double
m_P_Min
= NAN;
114
double
m_P_Max
= NAN;
115
double
m_P_GausWidth
= NAN;
116
double
m_powerLawN
= NAN;
117
};
118
119
#endif
coresoftware
blob
master
simulation
g4simulation
g4main
PHG4SimpleEventGenerator.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:44
using
1.8.2 with
ECCE GitHub integration