EIC Software
Reference for
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
Fun4All_G4_Cylinder.C
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file Fun4All_G4_Cylinder.C
1
#pragma once
2
#if ROOT_VERSION_CODE >= ROOT_VERSION(6,00,0)
3
#include <
fun4all/SubsysReco.h
>
4
#include <
fun4all/Fun4AllServer.h
>
5
#include <
fun4all/Fun4AllInputManager.h
>
6
#include <
fun4all/Fun4AllDstOutputManager.h
>
7
#include <
fun4all/Fun4AllOutputManager.h
>
8
#include <
fun4all/Fun4AllDummyInputManager.h
>
9
#include <
g4detectors/PHG4CylinderSubsystem.h
>
10
#include <
g4eval/PHG4DSTReader.h
>
11
#include <
g4main/PHG4ParticleGenerator.h
>
12
#include <
g4main/PHG4Reco.h
>
13
#include <
g4main/PHG4TruthSubsystem.h
>
14
#include <
phool/recoConsts.h
>
15
R__LOAD_LIBRARY
(libg4eval.so)
16
R__LOAD_LIBRARY
(libfun4all.so)
17
R__LOAD_LIBRARY
(libg4testbench.so)
18
R__LOAD_LIBRARY
(libg4detectors.so)
19
#endif
20
int
Fun4All_G4_Cylinder
(
const
int
nEvents
= 10,
const
char
* outfile = NULL)
21
{
22
23
gSystem->Load(
"libfun4all"
);
24
gSystem->Load(
"libg4detectors.so"
);
25
gSystem->Load(
"libg4testbench.so"
);
26
28
// Make the Server
30
Fun4AllServer
*se =
Fun4AllServer::instance
();
31
se->
Verbosity
(0);
32
33
recoConsts
*rc =
recoConsts::instance
();
34
// rc->set_IntFlag("RANDOMSEED", 12345); // if you want to use a fixed seed
35
// PHG4ParticleGenerator generates particle
36
// distributions in eta/phi/mom range
37
PHG4ParticleGenerator
*gen =
new
PHG4ParticleGenerator
(
"PGENERATOR"
);
38
//gen->set_name("gamma");
39
gen->
set_name
(
"e+"
);
40
gen->
set_vtx
(0, 0, 0);
41
gen->
set_eta_range
(-0.05, +0.05);
42
gen->
set_mom_range
(0.4, 10.0);
43
gen->
set_phi_range
(0., 90. / 180.*TMath::Pi());
// 0-90 deg
44
se->
registerSubsystem
(gen);
45
46
PHG4Reco
* g4Reco =
new
PHG4Reco
();
47
g4Reco->
set_field
(1.5);
// 1.5 T solenoidal field
48
49
50
double
si_thickness[6] = {0.02, 0.02, 0.0625, 0.032, 0.032, 0.032};
51
double
svxrad[6] = {2.71, 4.63, 11.765, 25.46, 41.38, 63.66};
52
double
length
[6] = {20., 20., 36., -1., - 1., - 1.};
// -1 use eta coverage to determine length
53
PHG4CylinderSubsystem
*cyl;
54
// here is our silicon:
55
for
(
int
ilayer = 0; ilayer < 6; ilayer++)
56
{
57
cyl =
new
PHG4CylinderSubsystem
(
"SVTX"
, ilayer);
58
cyl->
set_double_param
(
"radius"
,svxrad[ilayer]);
59
cyl->
set_string_param
(
"material"
,
"G4_Si"
);
60
cyl->
set_double_param
(
"thickness"
,si_thickness[ilayer]);
61
cyl->
SetActive
();
62
cyl->
SuperDetector
(
"SVTX"
);
63
if
(length[ilayer] > 0)
64
{
65
cyl->
set_double_param
(
"length"
,length[ilayer]);
66
}
67
g4Reco->
registerSubsystem
( cyl );
68
}
69
se->
registerSubsystem
( g4Reco );
70
71
if
(outfile)
72
{
73
Fun4AllOutputManager
*out =
new
Fun4AllDstOutputManager
(
"DSTOUT"
,outfile);
74
se->
registerOutputManager
(out);
75
}
76
Fun4AllInputManager
*
in
=
new
Fun4AllDummyInputManager
(
"JADE"
);
77
se->
registerInputManager
( in );
78
79
80
if
(
nEvents
> 0)
81
{
82
se->
run
(
nEvents
);
83
// finish job - close and save output files
84
se->
End
();
85
std::cout <<
"All done"
<< std::endl;
86
87
// cleanup - delete the server and exit
88
delete
se;
89
gSystem->Exit(0);
90
}
91
return
0;
92
}
93
94
PHG4ParticleGenerator
*
get_gen
(
const
char
*
name
=
"PGENERATOR"
)
95
{
96
Fun4AllServer
*se =
Fun4AllServer::instance
();
97
PHG4ParticleGenerator
*pgun = (
PHG4ParticleGenerator
*) se->
getSubsysReco
(
name
);
98
return
pgun;
99
}
fun4all_tutorials
blob
master
cylinder
Fun4All_G4_Cylinder.C
Built by
Jin Huang
. updated:
Mon Jan 22 2024 12:43:54
using
1.8.2 with
EIC GitHub integration