Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
EIC
detectors
topside
Commits
5de37799
Commit
5de37799
authored
Mar 30, 2021
by
Chao Peng
Browse files
Resolve "RICH volume overlaps"
parent
31c85505
Pipeline
#7774
passed with stages
in 8 minutes and 10 seconds
Changes
6
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
options/ForwardRICH/rich.xml
View file @
5de37799
...
...
@@ -112,7 +112,7 @@
<include ref="topside/hcal.xml"/>
<include ref="topside/solenoid.xml"/>
-->
<include
ref=
"topside/
topside
_rich.xml"
/>
<include
ref=
"topside/
forward
_rich.xml"
/>
<!--
<include ref="topside/roman_pots.xml"/>
<include ref="../accelerator/eic/forward_ion_beamline.xml"/>
...
...
options/ForwardRICH/simu.py
View file @
5de37799
...
...
@@ -58,7 +58,7 @@ def run_sim(args):
outputfile
=
args
.
output
if
outputfile
is
None
:
outputfile
=
'data/
topside
_rich_'
+
time
.
strftime
(
'%Y-%m-%d_%H-%M'
)
outputfile
=
'data/
forward
_rich_'
+
time
.
strftime
(
'%Y-%m-%d_%H-%M'
)
podio
=
DDG4
.
EventAction
(
kernel
,
'Geant4Output2Podio/RootOutput'
,
True
)
podio
.
HandleMCTruth
=
False
...
...
src/ForwardRICH_geo.cpp
View file @
5de37799
...
...
@@ -147,14 +147,21 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
// an envelope for the detector
// use a complicated shape to avoid conflict with the other parts
// cone for radiator
and the first set of mirrors
// cone for radiator
double
halfLength
=
length
/
2.
;
Cone
env1
(
halfLength
,
rmin
,
rmax1
,
rmin
,
rmax2
);
// envelope for detection plane
// Cone env2(halfLength - pZ/2., rmin, pRmax, rmin, rmax2);
Tube
env2
(
rmin
,
pRmax
+
pTol
+
pGap
+
1.0
*
cm
,
(
length
-
pZ
)
/
2.
,
0.
,
2
*
M_PI
);
// envelope for mirror sets
double
rMirEnv
=
rmax2
;
for
(
xml
::
Collection_t
sl
(
mir
,
_Unicode
(
slice
));
sl
;
++
sl
)
{
auto
mr
=
sl
.
attr
<
double
>
(
_Unicode
(
rmax
));
rMirEnv
=
mr
>
rMirEnv
?
mr
:
rMirEnv
;
}
Tube
env3
(
rmin
,
rMirEnv
+
1.0
*
cm
,
mir
.
attr
<
double
>
(
_Unicode
(
env_length
))
/
2.
,
0.
,
2
*
M_PI
);
UnionSolid
envShape
(
env1
,
env2
,
Position
(
0.
,
0.
,
pZ
));
UnionSolid
env12
(
env1
,
env2
,
Position
(
0.
,
0.
,
pZ
/
2.
));
UnionSolid
envShape
(
env12
,
env3
,
Position
(
0.
,
0.
,
mirZ
/
2.
));
Volume
envVol
(
detName
+
"_envelope"
,
envShape
,
gasMat
);
envVol
.
setVisAttributes
(
desc
.
visAttributes
(
detElem
.
visStr
()));
...
...
@@ -230,6 +237,8 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
mcpVol
.
setSensitiveDetector
(
sens
);
// photo-detector plane envelope
double
rmcp
=
pRmin
-
pTol
-
pGap
;
double
pZ2
=
pZ
-
rmcp
*
std
::
sin
(
richCenterAngle
)
+
5.0
*
cm
;
for
(
size_t
ipd
=
0
;
ipd
<
6
;
++
ipd
)
{
double
phmin
=
-
M_PI
/
6.
;
double
phmax
=
M_PI
/
6.
;
...
...
@@ -243,7 +252,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
DetElement
mcpDE
(
det
,
Form
(
"MCPPMT_DE%d_%d"
,
ipd
+
1
,
i
+
1
),
i
+
1
);
mcpDE
.
setPlacement
(
mcpPV
);
}
Transform3D
tr
=
Translation3D
(
0.
,
0.
,
-
halfLength
+
pZ
+
pThick
/
2.0
)
// move for z position
Transform3D
tr
=
Translation3D
(
0.
,
0.
,
-
halfLength
+
pZ
2
+
pThick
/
2.0
)
// move for z position
*
RotationZ
(
ipd
*
M_PI
/
3.
)
// rotate phi angle
*
RotationY
(
-
richCenterAngle
);
// rotate to perpendicular position
auto
pdPV
=
envVol
.
placeVolume
(
pdVol
,
tr
);
...
...
topside.xml
View file @
5de37799
...
...
@@ -113,7 +113,7 @@
<include
ref=
"topside/ecal.xml"
/>
<include
ref=
"topside/hcal.xml"
/>
<include
ref=
"topside/solenoid.xml"
/>
<include
ref=
"topside/
topside
_rich.xml"
/>
<include
ref=
"topside/
forward
_rich.xml"
/>
<!--
<include ref="topside/roman_pots.xml"/>
-->
...
...
topside/
topside
_rich.xml
→
topside/
forward
_rich.xml
View file @
5de37799
...
...
@@ -7,11 +7,11 @@
<detector
id=
"ForwardRICH_ID"
name=
"ForwardRICH"
type=
"ForwardRICH"
readout=
"ForwardRICHHits"
vis=
"BlueVis"
>
<dimensions
z0=
"RICHZMin"
length=
"RICHDepth+20*cm"
rmin=
"RICHRMin"
rmax1=
"RICHRMin+40*cm"
rmax2=
"RICHRMin+80*cm"
/>
<radiator
material=
"N2cherenkov"
/>
<mcppmt
zdiff=
"
1
5.0*cm"
rmin=
"SolenoidYokeEndcapP_rmin
-
10*cm"
rmax=
"SolenoidYokeEndcapP_rmin
+
80*cm"
rtol=
"1.0*cm"
vis=
"BlueVis"
module_size=
"10*cm"
module_gap=
"0.2*cm"
thickness=
"1.0*cm"
material=
"Quartz"
/>
<mcppmt
zdiff=
"
2
5.0*cm"
rmin=
"SolenoidYokeEndcapP_rmin
-
10*cm"
rmax=
"SolenoidYokeEndcapP_rmin
+
80*cm"
rtol=
"1.0*cm"
vis=
"BlueVis"
module_size=
"10*cm"
module_gap=
"0.2*cm"
thickness=
"1.0*cm"
material=
"Quartz"
/>
<tank
zdiff=
"5.0*cm"
length=
"RICHDepth"
gas=
"N2cherenkov"
vis=
"GreenVis"
rmin=
"RICHRMin"
rmax1=
"RICHRMin+40*cm"
rmax2=
"RICHRMin+80*cm"
/>
<mirror
zdiff=
"RICHDepth+7.0*cm"
thickness=
"1*mm"
material=
"PyrexGlass"
vis=
"GrayVis"
>
<mirror
zdiff=
"RICHDepth+7.0*cm"
thickness=
"1*mm"
material=
"PyrexGlass"
vis=
"GrayVis"
env_length=
"40*cm"
>
<slice
focus=
"10*cm"
curve=
"300*cm"
rmin=
"RICHRMin"
rmax=
"RICHRMin+80*cm"
phiw=
"59*degree"
rotz=
"0*degree"
/>
<slice
focus=
"10*cm"
curve=
"300*cm"
rmin=
"RICHRMin"
rmax=
"RICHRMin+80*cm"
phiw=
"59*degree"
rotz=
"60*degree"
/>
<slice
focus=
"10*cm"
curve=
"300*cm"
rmin=
"RICHRMin"
rmax=
"RICHRMin+80*cm"
phiw=
"59*degree"
rotz=
"120*degree"
/>
...
...
topside/main/main_topside_rich.xml
View file @
5de37799
...
...
@@ -234,7 +234,7 @@
<vis
name=
"GrayVis"
alpha=
"0.5"
r=
"0.75"
g=
"0.75"
b=
"0.75"
showDaughters=
"true"
visible=
"true"
/>
</display>
<include
ref=
"topside/
topside
_rich.xml"
/>
<include
ref=
"topside/
forward
_rich.xml"
/>
<!--
<include ref="topside/vertex_tracker.xml"/>
<include ref="topside/silicon_tracker.xml"/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment