Analysis Software
Documentation for
sPHENIX
simulation software
Home page
Related Pages
Modules
Namespaces
Classes
Files
Examples
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4Example03Subsystem.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4Example03Subsystem.cc
1
#include "
G4Example03Subsystem.h
"
2
3
#include "
G4Example03Detector.h
"
4
#include "
G4Example03DisplayAction.h
"
5
#include "
G4Example03SteppingAction.h
"
6
7
#include <phparameter/PHParameters.h>
8
9
#include <
g4main/PHG4HitContainer.h
>
10
#include <
g4main/PHG4SteppingAction.h
>
// for PHG4SteppingAction
11
12
#include <
phool/PHCompositeNode.h
>
13
#include <
phool/PHIODataNode.h
>
// for PHIODataNode
14
#include <
phool/PHNode.h
>
// for PHNode
15
#include <
phool/PHNodeIterator.h
>
// for PHNodeIterator
16
#include <
phool/PHObject.h
>
// for PHObject
17
#include <
phool/getClass.h
>
18
19
#include <cmath>
// for isfinite
20
21
using namespace
std;
22
23
//_______________________________________________________________________
24
G4Example03Subsystem::G4Example03Subsystem
(
const
std::string
&
name
)
25
:
PHG4DetectorSubsystem
(name)
26
, m_Detector(nullptr)
27
, m_SteppingAction(nullptr)
28
, m_DisplayAction(nullptr)
29
{
30
// call base class method which will set up parameter infrastructure
31
// and call our SetDefaultParameters() method
32
InitializeParameters
();
33
}
34
35
//_______________________________________________________________________
36
G4Example03Subsystem::~G4Example03Subsystem
()
37
{
38
delete
m_DisplayAction
;
39
}
40
41
//_______________________________________________________________________
42
int
G4Example03Subsystem::InitRunSubsystem
(
PHCompositeNode
*topNode)
43
{
44
PHNodeIterator
iter(topNode);
45
PHCompositeNode
*dstNode =
dynamic_cast<
PHCompositeNode
*
>
(iter.
findFirst
(
"PHCompositeNode"
,
"DST"
));
46
G4Example03DisplayAction
*disp_action =
new
G4Example03DisplayAction
(
Name
(),
GetParams
());
47
if
(isfinite(
m_ColorArray
[0]) &&
48
isfinite(
m_ColorArray
[1]) &&
49
isfinite(
m_ColorArray
[2]) &&
50
isfinite(
m_ColorArray
[3]))
51
{
52
disp_action->
SetColor
(
m_ColorArray
[0],
m_ColorArray
[1],
m_ColorArray
[2],
m_ColorArray
[3]);
53
}
54
m_DisplayAction
= disp_action;
55
PHNodeIterator
dstIter(dstNode);
56
if
(
GetParams
()->
get_int_param
(
"active"
))
57
{
58
PHCompositeNode
*DetNode =
dynamic_cast<
PHCompositeNode
*
>
(dstIter.
findFirst
(
"PHCompositeNode"
,
Name
()));
59
if
(!DetNode)
60
{
61
DetNode =
new
PHCompositeNode
(
Name
());
62
dstNode->
addNode
(DetNode);
63
}
64
string
g4hitnodename =
"G4HIT_"
+
Name
();
65
PHG4HitContainer
*g4_hits = findNode::getClass<PHG4HitContainer>(DetNode, g4hitnodename);
66
if
(!g4_hits)
67
{
68
g4_hits =
new
PHG4HitContainer
(g4hitnodename);
69
DetNode->addNode(
new
PHIODataNode<PHObject>
(g4_hits, g4hitnodename,
"PHObject"
));
70
}
71
}
72
// create detector
73
m_Detector
=
new
G4Example03Detector
(
this
, topNode,
GetParams
(),
Name
());
74
m_Detector
->
OverlapCheck
(
CheckOverlap
());
75
// create stepping action if detector is active
76
if
(
GetParams
()->
get_int_param
(
"active"
))
77
{
78
m_SteppingAction
=
new
G4Example03SteppingAction
(
m_Detector
,
GetParams
());
79
}
80
return
0;
81
}
82
83
//_______________________________________________________________________
84
int
G4Example03Subsystem::process_event
(
PHCompositeNode
*topNode)
85
{
86
// pass top node to stepping action so that it gets
87
// relevant nodes needed internally
88
if
(
m_SteppingAction
)
89
{
90
m_SteppingAction
->
SetInterfacePointers
(topNode);
91
}
92
return
0;
93
}
94
95
void
G4Example03Subsystem::Print
(
const
string
&what)
const
96
{
97
if
(
m_Detector
)
98
{
99
m_Detector
->
Print
(what);
100
}
101
return
;
102
}
103
104
//_______________________________________________________________________
105
PHG4Detector
*
G4Example03Subsystem::GetDetector
(
void
)
const
106
{
107
return
m_Detector
;
108
}
109
110
void
G4Example03Subsystem::SetDefaultParameters
()
111
{
112
// sizes are in cm
113
// angles are in deg
114
// units will be converted to G4 units when used
115
set_default_double_param
(
"place_x"
, 0.);
116
set_default_double_param
(
"place_y"
, 0.);
117
set_default_double_param
(
"place_z"
, 0.);
118
set_default_double_param
(
"rot_x"
, 0.);
119
set_default_double_param
(
"rot_y"
, 0.);
120
set_default_double_param
(
"rot_z"
, 0.);
121
set_default_double_param
(
"size_x"
, 20.);
122
set_default_double_param
(
"size_y"
, 20.);
123
set_default_double_param
(
"size_z"
, 20.);
124
125
set_default_string_param
(
"material"
,
"G4_Galactic"
);
126
}
g4exampledetector
blob
master
color
source
G4Example03Subsystem.cc
Built by
Jin Huang
. updated:
Sat Feb 17 2024 22:18:16
using
1.8.2 with
sPHENIX GitHub integration