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
ePHENIXRICHConstruction.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file ePHENIXRICHConstruction.h
1
// Tell emacs that this is a C++ source
2
// -*- C++ -*-.
3
12
#ifndef G4DETECTORS_EPHENIXRICHCONSTRUCTION_H
13
#define G4DETECTORS_EPHENIXRICHCONSTRUCTION_H
14
15
#include <Geant4/G4String.hh>
16
#include <Geant4/G4SystemOfUnits.hh>
17
#include <Geant4/G4Types.hh>
// for G4int
18
19
20
#include <map>
21
#include <set>
22
#include <utility>
// for pair
23
24
class
G4VPhysicalVolume
;
25
class
G4LogicalVolume
;
26
class
G4OpticalSurface
;
27
class
G4PVPlacement
;
28
class
PHG4RICHDisplayAction
;
29
class
PHG4Subsystem
;
30
class
G4Material
;
31
32
namespace
ePHENIXRICH
33
{
46
class
RICH_Geometry
47
{
48
public
:
52
RICH_Geometry
()
53
:
RICH_Mirror_OpticalSurface
(nullptr)
54
{
55
SetDefault
();
56
CreateOpticalSurfaces
();
57
}
58
62
void
63
SetDefault
();
64
68
void
69
CreateOpticalSurfaces
();
70
74
static
double
Unit_cm
() {
return
cm
; }
78
79
double
80
get_R_max
()
const
81
{
82
return
R_mirror_ref
+
dR_mirror
+
dR_mirror_spt
+
dR_backwindow
;
83
}
84
85
double
86
get_cone_size_z
()
const
87
{
88
return
(
z_shift
+
get_R_max
()) * 2;
89
}
90
91
double
92
get_R_frontwindow
()
const
;
93
94
double
95
get_half_angle_HBD
()
const
;
96
97
double
98
get_RZ_Seg1_HBD
()
const
;
99
100
double
101
get_RZ_Seg2_HBD
()
const
;
102
103
double
104
get_R_Tip_HBD
()
const
;
105
106
double
107
get_Z_Tip_HBD
()
const
;
108
109
double
110
get_Rotation_HBD
()
const
;
111
112
double
113
get_R_beam_pipe_front
()
const
114
{
115
return
R_beam_pipe_front
;
116
}
117
double
118
get_R_beam_pipe_back
()
const
119
{
120
return
R_beam_pipe_back
;
121
}
122
double
123
get_R_beam_pipe_min
()
const
124
{
125
return
R_beam_pipe_front
<
R_beam_pipe_back
?
R_beam_pipe_front
:
R_beam_pipe_back
;
126
}
127
128
double
129
get_frontwindow_DisplaceRatio
()
const
130
{
131
return
frontwindow_DisplaceRatio
;
132
}
133
134
double
135
get_min_eta
()
const
136
{
137
return
min_eta
;
138
}
139
140
double
141
get_R_mirror_ref
()
const
142
{
143
return
R_mirror_ref
;
144
}
145
146
double
147
get_dR_backwindow
()
const
148
{
149
return
dR_backwindow
;
150
}
151
152
double
153
get_dR_frontwindow
()
const
154
{
155
return
dR_frontwindow
;
156
}
157
158
double
159
get_dR_frontwindow_shrink
()
const
160
{
161
return
dR_frontwindow_shrink
;
162
}
163
164
double
165
get_dR_mirror
()
const
166
{
167
return
dR_mirror
;
168
}
169
170
double
171
get_dR_mirror_spt
()
const
172
{
173
return
dR_mirror_spt
;
174
}
175
176
G4String
177
get_RICH_gas_mat
()
const
178
{
179
return
RICH_gas_mat
;
180
}
181
182
G4String
183
get_RICH_Gas_Window_mat
()
const
184
{
185
return
RICH_Gas_Window_mat
;
186
}
187
188
G4String
189
get_RICH_Mirror_mat
()
const
190
{
191
return
RICH_Mirror_mat
;
192
}
193
194
G4OpticalSurface
*
195
get_RICH_Mirror_OpticalSurface
()
const
196
{
197
return
RICH_Mirror_OpticalSurface
;
198
}
199
200
int
get_N_RICH_Sector
()
const
201
{
202
return
N_RICH_Sector
;
203
}
204
205
double
206
get_z_shift
()
const
207
{
208
return
z_shift
;
209
}
210
211
double
212
get_R_shift
()
const
213
{
214
return
R_shift
;
215
}
216
217
int
get_n_GEM_layers
()
const
218
{
219
return
n_GEM_layers
;
220
}
221
222
double
223
get_HBD_thickness
()
const
224
{
225
return
HBD_thickness
;
226
}
227
228
G4OpticalSurface
*
229
get_RICH_Photocathode_OpticalSurface
()
const
230
{
231
return
RICH_Photocathode_OpticalSurface
;
232
}
234
238
239
void
240
set_R_beam_pipe_front
(
double
beamPipe)
241
{
242
R_beam_pipe_front
= beamPipe;
243
}
244
248
249
void
250
set_R_beam_pipe_back
(
double
beamPipe)
251
{
252
R_beam_pipe_back
= beamPipe;
253
}
254
255
void
256
set_frontwindow_DisplaceRatio
(
double
frontwindowDisplaceRatio)
257
{
258
frontwindow_DisplaceRatio
= frontwindowDisplaceRatio;
259
}
260
261
void
262
set_min_eta
(
double
minEta)
263
{
264
min_eta
= minEta;
265
}
266
267
void
268
set_R_mirror_ref
(
double
mirrorRef)
269
{
270
R_mirror_ref
= mirrorRef;
271
}
272
273
void
274
set_dR_backwindow
(
double
rBackwindow)
275
{
276
dR_backwindow
= rBackwindow;
277
}
278
279
void
280
set_dR_frontwindow
(
double
rFrontwindow)
281
{
282
dR_frontwindow
= rFrontwindow;
283
}
284
285
void
286
set_dR_frontwindow_shrink
(
double
rFrontwindowShrink)
287
{
288
dR_frontwindow_shrink
= rFrontwindowShrink;
289
}
290
291
void
292
set_dR_mirror
(
double
rMirror)
293
{
294
dR_mirror
= rMirror;
295
}
296
297
void
298
set_dR_mirror_spt
(
double
rMirrorSpt)
299
{
300
dR_mirror_spt
= rMirrorSpt;
301
}
302
303
void
304
set_RICH_gas_mat
(
G4String
richGasMat)
305
{
306
RICH_gas_mat
= richGasMat;
307
}
308
309
void
310
set_RICH_Gas_Window_mat
(
G4String
richGasWindowMat)
311
{
312
RICH_Gas_Window_mat
= richGasWindowMat;
313
}
314
315
void
316
set_RICH_Mirror_mat
(
G4String
richMirrorMat)
317
{
318
RICH_Mirror_mat
= richMirrorMat;
319
}
320
321
void
322
set_N_RICH_Sector
(
int
richSector)
323
{
324
N_RICH_Sector
= richSector;
325
}
326
327
void
328
set_z_shift
(
double
shift)
329
{
330
z_shift
= shift;
331
}
332
333
void
334
set_R_shift
(
double
shift)
335
{
336
R_shift
= shift;
337
}
338
339
void
340
set_n_GEM_layers
(
int
gemLayers)
341
{
342
n_GEM_layers
= gemLayers;
343
}
344
345
void
346
set_HBD_thickness
(
double
hbdThickness)
347
{
348
HBD_thickness
= hbdThickness;
349
}
351
352
private
:
353
int
N_RICH_Sector
;
354
355
double
min_eta
;
356
double
R_beam_pipe_front
;
357
double
R_beam_pipe_back
;
358
359
double
z_shift
;
360
double
R_shift
;
361
double
frontwindow_DisplaceRatio
;
// Displace R,Z and radius simultainously
362
double
dR_frontwindow_shrink
;
363
double
R_mirror_ref
;
364
365
double
dR_mirror
;
366
double
dR_mirror_spt
;
367
double
dR_backwindow
;
368
double
dR_frontwindow
;
369
370
int
n_GEM_layers
;
371
double
HBD_thickness
;
372
373
G4String
RICH_gas_mat
;
374
G4String
RICH_Mirror_mat
;
375
G4String
RICH_Gas_Window_mat
;
376
377
G4OpticalSurface
*
RICH_Mirror_OpticalSurface
;
378
G4OpticalSurface
*
RICH_Photocathode_OpticalSurface
;
379
};
380
381
393
class
ePHENIXRICHConstruction
394
{
395
public
:
396
virtual
~ePHENIXRICHConstruction
() {}
397
ePHENIXRICHConstruction
(
PHG4Subsystem
* subsys);
398
ePHENIXRICHConstruction
(
PHG4Subsystem
* subsys,
const
RICH_Geometry
&
g
);
399
400
virtual
void
401
OverlapCheck
(
bool
check)
402
{
403
overlapcheck_rich
= check;
404
}
405
406
G4LogicalVolume
*
407
Construct_RICH
(
G4LogicalVolume
*);
408
409
G4LogicalVolume
*
410
Construct_HBD
(
G4LogicalVolume
* RICHSecLog);
411
412
G4LogicalVolume
*
413
Construct_HBD_Layers
(
G4LogicalVolume
* RICHHBDLog,
const
G4String
name
,
414
const
G4String
material
,
const
double
start_z,
const
double
thickness
);
415
416
RICH_Geometry
geom
;
417
421
int
is_in_sector
(
G4VPhysicalVolume
*)
const
;
422
PHG4RICHDisplayAction
*
GetDisplayAction
() {
return
m_DisplayAction
; }
423
424
protected
:
425
static
G4Material
*
GetDetectorMaterial
(
const
std::string &
name
,
const
bool
quit =
true
);
426
427
G4LogicalVolume
*
428
RegisterLogicalVolume
(
G4LogicalVolume
*);
429
430
typedef
std::map<G4String, G4LogicalVolume*>
map_log_vol_t
;
431
map_log_vol_t
map_log_vol
;
432
433
G4PVPlacement
*
434
RegisterPhysicalVolume
(
G4PVPlacement
*);
435
436
typedef
std::pair<G4String, G4int>
phy_vol_idx_t
;
437
typedef
std::map<phy_vol_idx_t, G4PVPlacement*>
map_phy_vol_t
;
438
439
PHG4RICHDisplayAction
*
m_DisplayAction
;
440
map_phy_vol_t
map_phy_vol
;
441
442
bool
overlapcheck_rich
;
443
447
std::set<G4VPhysicalVolume*>
sector_vec
;
448
};
449
450
}
//namespace ePHENIXRICH
451
452
#endif // G4DETECTORS_EPHENIXRICHCONSTRUCTION_H
fun4all_eicdetectors
blob
master
simulation
g4simulation
g4rich
ePHENIXRICHConstruction.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:48
using
1.8.2 with
ECCE GitHub integration