Skip to content

Commit d5ce3ef

Browse files
simongepre-commit-ci[bot]veprbl
authored
Separate tagger from beampipe (#968)
### Briefly, what does this PR introduce? Separates the definition of the Tagger detector from the beamline vacuum. The taggers are now inserted into the world volume rather than added into a section of the beampipe which is split between vacuum and air. There are some very small changes to the positions of the detectors to match small edits to the beamline vacuum. ### What kind of change does this PR introduce? - [x] Bug fix (issue #963) - [ ] New feature (issue #__) - [ ] Documentation update - [ ] Other: __ ### Please check if this PR fulfills the following: - [ ] Tests for the changes have been added - [ ] Documentation has been added / updated - [ ] Changes have been communicated to collaborators ### Does this PR introduce breaking changes? What changes might users need to make to their code? No ### Does this PR change default behavior? No --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Dmitry Kalinkin <[email protected]>
1 parent 579734a commit d5ce3ef

File tree

8 files changed

+448
-403
lines changed

8 files changed

+448
-403
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<!-- SPDX-License-Identifier: LGPL-3.0-or-later -->
2+
<!-- Copyright (C) 2022-2025 Wouter Deconinck, Simon Gardner -->
3+
4+
<lccdd>
5+
6+
<detectors>
7+
8+
<comment> Electron side beam pipe volumes </comment>
9+
10+
<!-- Beam pipe going from Q1eR to B2BeR -->
11+
<detector
12+
name="Pipe_Q1eR_to_B2BeR"
13+
type="BeamPipeChain"
14+
wall_thickness="1 * mm"
15+
vis="BeamPipeVis">
16+
<pipe id="0" name="Pipe_to_Q1eR"
17+
xcenter="0" zcenter="(Center_Beampipe_End + Q1eR_CenterPosition+Q1eR_Length/2)/2"
18+
length="Center_Beampipe_End - (Q1eR_CenterPosition+Q1eR_Length/2)" theta="0"
19+
rout1="Center_Beampipe_Rad" rout2="Q1eR_InnerRadius">
20+
</pipe>
21+
<pipe id="1" name="Pipe_in_Q1eR"
22+
xcenter="0" zcenter="Q1eR_CenterPosition"
23+
length="Q1eR_Length" theta="0"
24+
rout1="Q1eR_InnerRadius" rout2="Q1eR_InnerRadius">
25+
</pipe>
26+
<pipe id="2" name="Pipe_Q1eR_to_Q2eR"/>
27+
<pipe id="3" name="Pipe_in_Q2eR"
28+
xcenter="0" zcenter="Q2eR_CenterPosition"
29+
length="Q2eR_Length" theta="0"
30+
rout1="Q2eR_InnerRadius" rout2="Q2eR_InnerRadius">
31+
</pipe>
32+
<pipe id="4" name="Pipe_Q2eR_to_B2AeR"/>
33+
<pipe id="5" name="Pipe_in_B2AeR"
34+
xcenter="0" zcenter="B2AeR_CenterPosition"
35+
length="B2AeR_Length" theta="0"
36+
rout1="B2AeR_InnerRadius" rout2="B2AeR_InnerRadius">
37+
</pipe>
38+
<pipe id="6" name="Pipe_B2AeR_to_B2BeR"/>
39+
<pipe id="7" name="Pipe_in_B2BeR"
40+
xcenter="0" zcenter="B2BeR_CenterPosition"
41+
length="B2BeR_Length" theta="0"
42+
rout1="B2BeR_InnerRadius" rout2="B2BeR_InnerRadius">
43+
</pipe>
44+
</detector>
45+
46+
<comment> Main beamline vacuum volume spanning between B2BeR and Q3eR magnets</comment>
47+
<detector name="BackwardsTaggerVacuum" type="FarBackwardVacuum" wall="Backwards_Box_Wall" lumi="true" vis="BeamPipeVis" >
48+
<focus x="Dipole_Focus_X" y="Dipole_Focus_Y" z="Dipole_Focus_Z" />
49+
<bounding xmin="Vacuum_BB_MinX" xmax="Vacuum_BB_MaxX"
50+
ymin="Vacuum_BB_MinY" ymax="Vacuum_BB_MaxY"
51+
zmin="Vacuum_BB_MinZ" zmax="Vacuum_BB_MaxZ"
52+
/>
53+
<rotation theta="Beam_Theta"/>
54+
<dimensions xL="Beam_WidthL" xR="Beam_WidthR" y="Beam_Height" z="Beam_Length"/>
55+
56+
<comment> Vacuum volume joining with lumi </comment>
57+
<exitdim x="Exit_Width" y="Exit_Height" lumiZ="LumiWin_Zstart" lumiR="LumiWin_R" maxTheta="Exit_Theta"/>
58+
59+
<comment> Extended vacuum volume for taggers </comment>
60+
<module id="1" name="Tagger1">
61+
<position x="Tagger1_Vac_Offset_X" y="Tagger1_Y" z="Tagger1_Vac_Offset_Z"/>
62+
<rotation theta="Tagger1_Theta"/>
63+
<dimensions x="Tagger1_Width" y="Tagger1_Height" z="2*Tagger1_Vac_Length"/>
64+
65+
<foilLayer id="0" type="foil" thickness="100*um" angle="70*deg"/>
66+
<windowLayer id="1" type="window" thickness="2*mm" material="CarbonFiber"/>
67+
</module>
68+
<module id="2" name="Tagger2">
69+
<position x="Tagger2_Vac_Offset_X" y="Tagger2_Y" z="Tagger2_Vac_Offset_Z"/>
70+
<rotation theta="Tagger2_Theta"/>
71+
<dimensions x="Tagger2_Width" y="Tagger2_Height" z="2*Tagger2_Vac_Length"/>
72+
73+
<foilLayer id="0" type="foil" thickness="100*um" angle="70*deg"/>
74+
<windowLayer id="1" type="window" thickness="2*mm" material="CarbonFiber"/>
75+
</module>
76+
77+
</detector>
78+
79+
</detectors>
80+
81+
</lccdd>

compact/far_backward/default.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<lccdd>
55

66
<include ref="magnets.xml"/>
7+
<include ref="beamline_electron.xml"/>
78

89
<!-- Scattered electron taggers -->
910
<include ref="taggers.xml"/>

compact/far_backward/definitions.xml

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@
201201
<constant name="Timepix4height" value="28.16*mm"/>
202202
<constant name="Timepix4width" value="24.64*mm"/>
203203

204-
<comment> Tagger box and dimensions and positions </comment>
204+
<comment> Tagger1 box and dimensions and positions </comment>
205205
<constant name="Tagger1_Width" value="147.84*mm"/>
206206
<constant name="Tagger1_Height" value="200*mm"/>
207207

@@ -211,8 +211,19 @@
211211

212212
<constant name="Tagger1_Min_Theta" value="0.0262*rad"/>
213213
<constant name="Tagger1_Max_Theta" value="0.0410*rad"/>
214-
<constant name="Tagger1_Min_Offset" value="Q3eR_InnerRadius"/>
214+
<constant name="Tagger1_Min_Offset" value="Q3eR_InnerRadius+Backwards_Box_Wall"/>
215+
<constant name="Tagger1_Theta" value="Tagger1_Min_Theta"/>
215216

217+
<comment> Tagger1 calculated constants, shared between vacuum and detector </comment>
218+
<constant name="Tagger1_Vac_Offset_X" value="(-0.5*Tagger1_Width-Backwards_Box_Wall)*cos(Tagger1_Theta-Beam_Theta)"/>
219+
<constant name="Tagger1_Vac_Offset_Z" value="(0.5*Tagger1_Width+Backwards_Box_Wall)*sin(Tagger1_Theta-Beam_Theta)"/>
220+
<constant name="Tagger1_Vac_Length" value="(Tagger1_Min_Offset)/sin(Tagger1_Theta-Beam_Theta)"/>
221+
222+
<constant name="Tagger1_X" value="Dipole_Focus_X+Tagger1_Vac_Offset_X-Tagger1_Vac_Length*sin(Tagger1_Theta)"/>
223+
<constant name="Tagger1_Y" value="Dipole_Focus_Y"/>
224+
<constant name="Tagger1_Z" value="Dipole_Focus_Z+Tagger1_Vac_Offset_Z-Tagger1_Vac_Length*cos(Tagger1_Theta)"/>
225+
226+
<comment> Tagger2 box and dimensions and positions </comment>
216227
<constant name="Tagger2_Width" value="147.84*mm"/>
217228
<constant name="Tagger2_Height" value="150.0*mm"/>
218229

@@ -221,9 +232,20 @@
221232
<constant name="Tagger2_Length" value="Tag_Tracker_2_Depth"/>
222233

223234
<constant name="Tagger2_Min_Theta" value="0.02*rad"/>
224-
<constant name="Tagger2_Max_Theta" value="Tagger1_Min_Theta+0.000*rad"/>
235+
<constant name="Tagger2_Max_Theta" value="Tagger1_Min_Theta"/>
225236
<constant name="Tagger2_Min_Offset" value="Q3eR_InnerRadius+Backwards_Box_Wall"/>
226237

238+
<constant name="Tagger2_Theta" value="Tagger2_Max_Theta"/>
239+
240+
<comment> Tagger2 calculated constants, shared between vacuum and detector </comment>
241+
<constant name="Tagger2_Vac_Offset_X" value="0.5*Tagger2_Width*cos(Tagger2_Theta-Beam_Theta)"/>
242+
<constant name="Tagger2_Vac_Offset_Z" value="0.5*Tagger2_Width*sin(Tagger2_Theta-Beam_Theta)"/>
243+
<constant name="Tagger2_Vac_Length" value="(2*Tagger2_Vac_Offset_X+Tagger2_Min_Offset)/sin(Tagger2_Theta-Beam_Theta)"/>
244+
245+
<constant name="Tagger2_X" value="Dipole_Focus_X+Tagger2_Vac_Offset_X-Tagger2_Vac_Length*sin(Tagger2_Theta)"/>
246+
<constant name="Tagger2_Y" value="Dipole_Focus_Y"/>
247+
<constant name="Tagger2_Z" value="Dipole_Focus_Z+Tagger2_Vac_Offset_Z-Tagger2_Vac_Length*cos(Tagger2_Theta)"/>
248+
227249

228250
<!-- -->
229251
<!-- Luminosity System -->

compact/far_backward/extended.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<lccdd>
55

66
<include ref="magnets.xml"/>
7+
<include ref="beamline_electron.xml"/>
78
<include ref="beamline_extension_hadron.xml"/>
89
<include ref="beamline_extension_electron.xml"/>
910

compact/far_backward/magnets.xml

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -83,44 +83,6 @@
8383
</tube>
8484
</detector>
8585

86-
<comment> Electron side beam pipe volumes </comment>
87-
88-
<!-- Beam pipe going from Q1eR to B2BeR -->
89-
<detector
90-
name="Pipe_Q1eR_to_B2BeR"
91-
type="BeamPipeChain"
92-
wall_thickness="1 * mm"
93-
vis="BeamPipeVis">
94-
<pipe id="0" name="Pipe_to_Q1eR"
95-
xcenter="0" zcenter="(Center_Beampipe_End + Q1eR_CenterPosition+Q1eR_Length/2)/2"
96-
length="Center_Beampipe_End - (Q1eR_CenterPosition+Q1eR_Length/2)" theta="0"
97-
rout1="Center_Beampipe_Rad" rout2="Q1eR_InnerRadius">
98-
</pipe>
99-
<pipe id="1" name="Pipe_in_Q1eR"
100-
xcenter="0" zcenter="Q1eR_CenterPosition"
101-
length="Q1eR_Length" theta="0"
102-
rout1="Q1eR_InnerRadius" rout2="Q1eR_InnerRadius">
103-
</pipe>
104-
<pipe id="2" name="Pipe_Q1eR_to_Q2eR"/>
105-
<pipe id="3" name="Pipe_in_Q2eR"
106-
xcenter="0" zcenter="Q2eR_CenterPosition"
107-
length="Q2eR_Length" theta="0"
108-
rout1="Q2eR_InnerRadius" rout2="Q2eR_InnerRadius">
109-
</pipe>
110-
<pipe id="4" name="Pipe_Q2eR_to_B2AeR"/>
111-
<pipe id="5" name="Pipe_in_B2AeR"
112-
xcenter="0" zcenter="B2AeR_CenterPosition"
113-
length="B2AeR_Length" theta="0"
114-
rout1="B2AeR_InnerRadius" rout2="B2AeR_InnerRadius">
115-
</pipe>
116-
<pipe id="6" name="Pipe_B2AeR_to_B2BeR"/>
117-
<pipe id="7" name="Pipe_in_B2BeR"
118-
xcenter="0" zcenter="B2BeR_CenterPosition"
119-
length="B2BeR_Length" theta="0"
120-
rout1="B2BeR_InnerRadius" rout2="B2BeR_InnerRadius">
121-
</pipe>
122-
</detector>
123-
12486
<comment> Electron side beam magnet volumes </comment>
12587

12688
<detector

compact/far_backward/taggers.xml

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,55 +11,44 @@
1111

1212
<detectors>
1313

14-
<comment> Main beamline vacuum volume spanning between B2BeR and Q3eR magnets</comment>
15-
<detector id="TaggerTracker_ID" name="BackwardsTaggerStation" type="BackwardsTagger" wall="Backwards_Box_Wall" lumi="true" vis="BeamPipeVis" readout="TaggerTrackerHits">
16-
<focus x="Dipole_Focus_X" y="Dipole_Focus_Y" z="Dipole_Focus_Z" />
17-
<bounding xmin="Vacuum_BB_MinX" xmax="Vacuum_BB_MaxX"
18-
ymin="Vacuum_BB_MinY" ymax="Vacuum_BB_MaxY"
19-
zmin="Vacuum_BB_MinZ" zmax="Vacuum_BB_MaxZ"
20-
/>
21-
<rotation theta="Beam_Theta"/>
22-
<dimensions xL="Beam_WidthL" xR="Beam_WidthR" y="Beam_Height" z="Beam_Length"/>
23-
24-
<comment> Vacuum volume joining with lumi </comment>
25-
<exitdim x="Exit_Width" y="Exit_Height" lumiZ="LumiWin_Zstart" lumiR="LumiWin_R" maxTheta="Exit_Theta"/>
26-
27-
<comment> Tagger stations and extended vacuum volume </comment>
28-
<module id="1"
29-
name="Tagger1"
30-
theta_min="Tagger1_Min_Theta"
31-
max_align="false"
32-
offset_min="Tagger1_Min_Offset"
33-
extend_vacuum="true"
34-
>
35-
<dimensions x="Tagger1_Width/2" y="Tagger1_Height/2" z="Tagger1_Length"/>
36-
<foilLayer id="0" type="foil" z="0*mm" thickness="100*um" angle="70*deg"/>
14+
<detector id="TaggerTracker_ID" name="BackwardsTaggerStation" type="BackwardsTagger" readout="TaggerTrackerHits">
15+
16+
<comment> Tagger stations </comment>
17+
<module id="1" name="Tagger1">
18+
<comment>
19+
Position and rotation refer to the center front of tagger assembly, this should line up with the back of the exit window
20+
Rotation Tagger1_Theta is relative to electron beamline axis, so we add 180deg to transform into detector coordinates
21+
</comment>
22+
<position x="Tagger1_X" y="Tagger1_Y" z="Tagger1_Z"/>
23+
<rotation x="0*deg" y="Tagger1_Theta+180*deg" z="0*deg"/>
24+
25+
<dimensions x="Tagger1_Width" y="Tagger1_Height"/>
26+
27+
<comment> Where z is the position of the front face of the detector layer </comment>
3728
<trackLayer id="0" type="timepix" z="3*mm" sensor_thickness="400*um"/>
3829
<trackLayer id="1" type="timepix" z="103*mm" sensor_thickness="400*um"/>
3930
<trackLayer id="2" type="timepix" z="203*mm" sensor_thickness="400*um"/>
4031
<trackLayer id="3" type="timepix" z="303*mm" sensor_thickness="400*um"/>
41-
<windowLayer id="1" type="window" z="0*mm" thickness="2*mm" material="CarbonFiber"/>
4232
</module>
43-
<module id="2"
44-
name="Tagger2"
45-
theta_min="Tagger2_Min_Theta"
46-
theta_max="Tagger1_Min_Theta"
47-
max_align="true"
48-
offset_min="Tagger2_Min_Offset"
49-
extend_vacuum="true"
50-
overlap="Backwards_Box_Wall"
51-
>
52-
<dimensions x="Tagger2_Width/2" y="Tagger2_Height/2" z="Tagger2_Length"/>
53-
<foilLayer id="0" type="foil" z="0*mm" thickness="100*um" angle="70*deg"/>
33+
34+
<module id="2" name="Tagger2">
35+
<comment> Position and rotation refer to the center front of tagger assembly, this should line up with the back of the exit window </comment>
36+
<position x="Tagger2_X" y="Tagger2_Y" z="Tagger2_Z"/>
37+
<rotation x="0*deg" y="Tagger2_Theta+180*deg" z="0*deg"/>
38+
39+
<dimensions x="Tagger2_Width" y="Tagger2_Height"/>
40+
41+
<comment> Where z is the position of the front face of the detector layer </comment>
5442
<trackLayer id="0" type="timepix" z="3*mm" sensor_thickness="400*um"/>
5543
<trackLayer id="1" type="timepix" z="103*mm" sensor_thickness="400*um"/>
5644
<trackLayer id="2" type="timepix" z="203*mm" sensor_thickness="400*um"/>
5745
<trackLayer id="3" type="timepix" z="303*mm" sensor_thickness="400*um"/>
58-
<windowLayer id="1" type="window" z="0*mm" thickness="2*mm" material="CarbonFiber"/>
5946
</module>
6047

6148
</detector>
6249

50+
<comment> Add calorimeter here... </comment>
51+
6352
</detectors>
6453

6554

0 commit comments

Comments
 (0)