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
PHG4mRICHDetector.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file PHG4mRICHDetector.h
1
// Tell emacs that this is a C++ source
2
// -*- C++ -*-.
3
/*===============================================================*
4
* March 2nd 2017 *
5
* mRICH Detector created by Cheuk-Ping Wong @GSU *
6
*===============================================================*/
7
#ifndef G4DETECTORS_PHG4MRICHDETECTOR_H
8
#define G4DETECTORS_PHG4MRICHDETECTOR_H
9
10
#include <
g4main/PHG4Detector.h
>
11
12
#include <Geant4/G4Colour.hh>
13
#include <Geant4/G4ThreeVector.hh>
14
#include <Geant4/G4Types.hh>
// for G4double, G4int
15
16
#include <map>
// for map
17
#include <string>
18
19
class
G4LogicalVolume
;
20
class
G4Material
;
21
class
G4VPhysicalVolume
;
22
class
PHParameters
;
23
class
PHCompositeNode
;
24
class
PHG4Subsystem
;
25
26
//___________________________________________________________________________
27
class
PHG4mRICHDetector
:
public
PHG4Detector
28
{
29
public
:
31
PHG4mRICHDetector
(
PHG4Subsystem
* subsys,
PHCompositeNode
* Node,
PHParameters
*
parameters
,
const
std::string& dnam,
const
int
lyr = 0);
32
34
virtual
~PHG4mRICHDetector
() {}
35
37
virtual
void
ConstructMe
(
G4LogicalVolume
*
world
);
38
39
//name volume accessors
40
//bool IsInBlock(G4VPhysicalVolume*) const;
41
int
IsInmRICH
(
G4VPhysicalVolume
*)
const
;
42
43
//void BlackHole(const int i=1) {blackhole = i;}
44
//int IsBlackHole() const {return blackhole;}
45
46
void
SetActive
(
const
int
i = 1)
47
{
48
active
= i;
49
}
50
51
void
SetAbsorberActive
(
const
int
i = 1)
52
{
53
absorberactive
= i;
54
}
55
56
void
SuperDetector
(
const
std::string&
name
) {
superdetector
=
name
; }
57
const
std::string
SuperDetector
()
const
{
return
superdetector
; }
58
int
get_Layer
()
const
{
return
layer
; }
59
60
enum
61
{
62
SENSOR
= 1,
63
AEROGEL
= 0,
64
INACTIVE
= -100
65
};
66
67
enum
DetectorSetUp
68
{
69
kSingle_Modular
= -1,
70
kHSector_EWall
= 0,
71
kHSector
= 1,
72
kEWall
= 2,
73
kHWall
= 3,
74
kHWall_EWall
= 4,
75
kHWall_Barrel
= 5,
76
kEWall_proj
= 6,
77
kESph
= 7
78
};
79
80
private
:
81
class
mRichParameter;
82
class
BoxPar;
83
class
PolyPar;
84
class
LensPar
;
85
86
PHParameters
*
params
;
87
88
G4VPhysicalVolume
*
build_box
(
BoxPar
* par,
G4LogicalVolume
* motherLV);
89
G4VPhysicalVolume
*
build_polyhedra
(
PolyPar
* par,
G4LogicalVolume
* motherLV);
90
91
G4LogicalVolume
*
Construct_a_mRICH
(
G4LogicalVolume
* logicWorld);
//, int detectorSetup); //single mRICH
92
G4VPhysicalVolume
*
build_holderBox
(
mRichParameter
* detectorParameter,
G4LogicalVolume
* motherLV);
93
void
build_foamHolder
(
mRichParameter
* detectorParameter,
G4LogicalVolume
* motherLV);
94
void
build_aerogel
(
mRichParameter
* detectorParameter,
G4VPhysicalVolume
* motherPV);
95
void
build_lens
(
LensPar
* par,
G4LogicalVolume
* motherLV);
96
void
build_mirror
(
mRichParameter
* detectorParameter,
G4VPhysicalVolume
* motherPV);
97
void
build_sensor
(
mRichParameter
* detectorParameter,
G4LogicalVolume
* motherLV);
98
99
void
build_mRICH_wall_hside
(
G4LogicalVolume
* space);
100
void
build_mRICH_wall_eside
(
G4LogicalVolume
* space);
101
void
build_mRICH_sector
(
G4LogicalVolume
* logicWorld,
int
numSector);
102
void
build_mRICH_sector2
(
G4LogicalVolume
* logicWorld,
int
numSector);
103
void
build_mRICH_wall_eside_proj
(
G4LogicalVolume
* space);
104
105
int
layer
;
106
int
active
;
107
int
absorberactive
;
108
//int blackhole;
109
std::string
superdetector
;
110
G4VPhysicalVolume
*
mRICH_PV
;
//physical volume of detector box of single module
111
G4VPhysicalVolume
*
sensor_PV
[4];
//physical volume of sensors the sensitive components
112
113
std::map<const G4VPhysicalVolume*, int>
sensor_vol
;
// physical volume of senseors
114
std::map<const G4VPhysicalVolume*, int>
aerogel_vol
;
// physical volume of senseors
115
};
116
//___________________________________________________________________________
117
class
PHG4mRICHDetector::mRichParameter
118
{
119
private
:
120
BoxPar
*
holderBox
;
121
BoxPar
*
hollowVolume
;
122
BoxPar
*
foamHolderBox
;
123
PolyPar
*
foamHolderPoly
;
124
BoxPar
*
aerogel
;
125
LensPar
*
fresnelLens
;
126
PolyPar
*
mirror
;
127
BoxPar
*
glassWindow
;
128
BoxPar
*
sensor
;
129
PolyPar
*
readout
;
130
131
public
:
132
mRichParameter
();
133
~mRichParameter
();
134
135
void
SetPar_glassWindow
(
int
i,
G4double
x
,
G4double
y
);
136
void
SetPar_sensor
(
int
i,
G4double
x
,
G4double
y
);
137
BoxPar
*
GetBoxPar
(std::string componentName);
138
LensPar
*
GetLensPar
(std::string componentName);
139
PolyPar
*
GetPolyPar
(std::string componentName);
140
};
141
//___________________________________________________________________________
142
class
PHG4mRICHDetector::BoxPar
143
{
144
public
:
145
std::string
name
;
146
G4double
halfXYZ
[3];
147
G4ThreeVector
pos
;
148
G4Material
*
material
;
149
int
sensitivity
;
150
151
G4Colour
color
;
152
bool
visibility
;
153
bool
wireframe
;
154
bool
surface
;
155
156
BoxPar
();
157
~BoxPar
();
158
};
159
//___________________________________________________________________________
160
class
PHG4mRICHDetector::PolyPar
161
{
162
public
:
163
std::string
name
;
164
G4ThreeVector
pos
;
165
G4double
start
;
166
G4double
theta
;
167
G4int
numSide
;
168
G4int
num_zLayer
;
169
G4double
z
[4];
//max. layer is 4
170
G4double
rinner
[4];
171
G4double
router
[4];
172
G4Material
*
material
;
173
int
sensitivity
;
174
175
G4Colour
color
;
176
bool
visibility
;
177
bool
wireframe
;
178
bool
surface
;
179
180
PolyPar
();
181
~PolyPar
() {}
182
};
183
//___________________________________________________________________________
184
class
PHG4mRICHDetector::LensPar
185
{
186
public
:
187
std::string
name
;
188
G4double
n
;
189
G4double
f
;
190
G4double
diameter
;
191
G4double
eff_diameter
;
192
G4double
centerThickness
;
193
G4double
grooveWidth
;
194
195
G4double
halfXYZ
[3];
196
G4ThreeVector
pos
;
197
G4Material
*
material
;
198
int
sensitivity
;
199
200
G4Colour
color
;
201
bool
visibility
;
202
bool
wireframe
;
203
bool
surface
;
204
205
LensPar
();
206
~LensPar
() {}
207
208
void
Set_halfXYZ
(
G4double
halfX
,
G4double
grooveDensity);
209
G4double
GetSagita
(
G4double
r
);
210
};
211
//___________________________________________________________________________
212
#endif
fun4all_eicdetectors
blob
master
simulation
g4simulation
g4mrich
PHG4mRICHDetector.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:48
using
1.8.2 with
ECCE GitHub integration