All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
geometry_icarus.fcl
Go to the documentation of this file.
1 #
2 # File: geometry_icarus.fcl
3 # Purpose: Configuration of LArSoft geometry and geometry service for ICARUS.
4 #
5 #
6 # Suggested usage
7 # ----------------
8 #
9 # Unless there are special needs, the geometry configuration should be included
10 # via a configuration bundle.
11 # The default one is called `icarus_geometry_services`.
12 # To use it in a complete configuration:
13 #
14 # services: {
15 # # ...
16 # @table::icarus_geometry_services # from geometry_icarus.fcl
17 # # ...
18 # } # services
19 #
20 # To add it to a preexisting configuration, overwriting any existing geometry
21 # configuration:
22 #
23 # services: {
24 # @table::services
25 # @table::icarus_geometry_services # from geometry_icarus.fcl
26 # } # services
27 #
28 #
29 # Options
30 # --------
31 #
32 # Currently the following configuration is provided:
33 #
34 # * `icarus_geometry_services`: current default configuration, the "standard"
35 # of the experiment with a concrete overburden
36 #
37 # Since the documentation is often not updated, check the definitions below
38 # to see which are the current defaults.
39 #
40 #
41 # Legacy options
42 # ---------------
43 #
44 # Some older configurations are still kept (but not officially supported).
45 # See the "Legacy configurations" section below.
46 #
47 #
48 # Notes
49 # ------
50 #
51 # A special policy in ICARUS is to have a copy of the channel mapping algorithm
52 # configuration in the `Geometry` service configuration.
53 # This is required by the off-art geometry loading utilities in ICARUS.
54 # One day LArSoft will also support something like that and that will become
55 # the only location of the channel mapping configuration.
56 #
57 #
58 # Changes
59 # --------
60 #
61 # 20200709 (petrillo@slac.stanford.edu)
62 # adopted split wire geometry fixed by
63 # Alessandro Menegolli (alessandro.menegolli@unipv.it)
64 # 20220505 (petrillo@slac.stanford.edu)
65 # geometry default changed to include overburden
66 # 20220523 (petrillo@slac.stanford.edu)
67 # new geometry (20220518) with CRT changes;
68 # no configuration for no-overburden detector;
69 # legacy (`icarus_v3`) configurations added;
70 # configurations renamed ("icarus_standard_geometry")
71 #
72 
73 
74 BEGIN_PROLOG
75 
76 ################################################################################
77 #
78 # Basic definitions for ICARUS configurations; no serviceable parts here!
79 #
80 
82  SurfaceY: 6.9e2 # in cm, vertical distance to the surface
83  Name: "icarus_v2" # see ICARUS wiki for a list
84  DisableWiresInG4: true
86 
87 
88 
89 ################################################################################
90 ###
91 ### Split first induction plane wires (9 m)
92 ###
93 ################################################################################
94 ### Complete geometry (including CRT) with two logical TPCs per drift volume and
95 ### 9 meter long wires on each half of the first induction planes.
96 ### This reflects the actual configuration of the ICARUS detector.
97 ###
98 ### Default for this configuration is defined below:
99 ### `icarus_split_induction_geometry_services`.
100 ###
101 
102 #
103 # ExptGeoHelperInterface
104 #
105 icarus_standard_geometry_helper: {
106  service_provider: IcarusGeometryHelper
107  Mapper: {
108  tool_type: "ICARUSsplitInductionChannelMapSetupTool"
109 
110  WirelessChannels: {
111 
112  FirstInductionPreChannels: 0
113  FirstInductionPostChannels: 96 # 32 ghost, then 64 virtual
114 
115  # C:x S:0 (east TPC)
116  SecondInductionEvenPreChannels: 96 # 32 ghost, then 64 wireless
117  SecondInductionEvenPostChannels: 64 # 64 wireless
118  CollectionEvenPreChannels: 64 # 64 wireless
119  CollectionEvenPostChannels: 96 # 64 wireless, then 32 ghost
120 
121  # C:x S:1 (west TPC)
122  SecondInductionOddPreChannels: 64 # 64 wireless
123  SecondInductionOddPostChannels: 96 # 64 wireless, then 32 ghost
124  CollectionOddPreChannels: 96 # 32 ghost, then 64 wireless
125  CollectionOddPostChannels: 64 # 64 wireless
126 
127  } # WirelessChannels
128 
129  } # Mapper
130 
131 } # icarus_standard_geometry_helper
132 
133 
134 ################################################################################
135 ###
136 ### "Standard" configuration (`icarus_standard_geometry_services`).
137 ###
138 ### Includes an overburden and two logical TPC for each physical one
139 ### ("split wires" configuration).
140 ###
141 ### This is the most accurate description of ICARUS detector as of June 2022.
142 ###
143 ### Override a geometry configuration by:
144 ###
145 ### services: {
146 ### @table::services
147 ### @table::icarus_standard_geometry_services
148 ### }
149 ###
150 ###
151 
152 #
153 # Geometry service configuration:
154 #
155 icarus_standard_geometry: {
157 
158  Name: "icarus_v4"
159  GDML: "icarus_complete_20220518_overburden.gdml"
160  ROOT: "icarus_complete_20220518_overburden.gdml"
161 
162  ChannelMapping: @local::icarus_standard_geometry_helper.Mapper
163 
164 } # icarus_standard_geometry
165 
166 #
167 # geometry configuration bundle
168 #
169 icarus_standard_geometry_services: {
170 
171  Geometry: @local::icarus_standard_geometry
172  ExptGeoHelperInterface: @local::icarus_standard_geometry_helper
173  GeometryConfigurationWriter: {}
174 
175 } # icarus_standard_geometry_services
176 
177 
178 ################################################################################
179 ###
180 ### Default ICARUS geometry configuration
181 ###
182 ### Complete geometry (including CRT) with one TPC per drift volume and 18 meter
183 ### long wires on first induction plane.
184 ### Options are avaialble for the presence of overburden; the geometry global
185 ### default includes a choice for that option: see `icarus_geometry_services`.
186 ###
187 ################################################################################
188 ### Default ICARUS geometry configuration
189 ### (`icarus_geometry_services`)
190 ###
191 ### This configuration includes 3-m overburden and long first induction wires
192 ### (18 m) as of now.
193 ###
194 ### Override a geometry configuration by:
195 ###
196 ### services: {
197 ### @table::services
198 ### @table::icarus_geometry_services
199 ### }
200 ###
201 ###
202 
203 #
204 # geometry configuration bundle
205 #
206 icarus_geometry_services: @local::icarus_standard_geometry_services
207 
208 #
209 # Geometry service configuration:
210 #
211 icarus_geometry: @local::icarus_geometry_services.Geometry
212 icarus_geo: @local::icarus_geometry # backward compatibility
213 
214 icarus_geometry_helper: @local::icarus_geometry_services.ExptGeoHelperInterface
215 
216 
217 ################################################################################
218 ### Legacy configurations
219 ################################################################################
220 #
221 # Legacy configurations are not officially supported, but are provided here
222 # nevertheless. A legacy configuration bundle is called
223 # `icarus_geometry_services[_<variant>]_legacy_<DetectorName>`, where
224 # <DetectorName> is the geometry tag (e.g. `icarus_v2`), and variants may also
225 # be available (e.g. "no_overburden").
226 #
227 # Legacy configurations are hard-coded and should not depend from the content
228 # above.
229 #
230 ################################################################################
231 ### Base legacy configuration, only used for FHiCL stability; i.e., if changed,
232 ### all existing legacy configurations need to explicitly revert the change.
233 ###
234 icarus_legacy_base_geometry_helper: {
235  service_provider: IcarusGeometryHelper
236  Mapper: {
237  tool_type: "ICARUSsplitInductionChannelMapSetupTool"
238 
239  WirelessChannels: {
240 
241  FirstInductionPreChannels: 0
242  FirstInductionPostChannels: 96 # 32 ghost, then 64 virtual
243 
244  # C:x S:0 (east TPC)
245  SecondInductionEvenPreChannels: 96 # 32 ghost, then 64 wireless
246  SecondInductionEvenPostChannels: 64 # 64 wireless
247  CollectionEvenPreChannels: 64 # 64 wireless
248  CollectionEvenPostChannels: 96 # 64 wireless, then 32 ghost
249 
250  # C:x S:1 (west TPC)
251  SecondInductionOddPreChannels: 64 # 64 wireless
252  SecondInductionOddPostChannels: 96 # 64 wireless, then 32 ghost
253  CollectionOddPreChannels: 96 # 32 ghost, then 64 wireless
254  CollectionOddPostChannels: 64 # 64 wireless
255 
256  } # WirelessChannels
257 
258  } # Mapper
259 } # icarus_legacy_base_geometry_helper
260 
261 icarus_legacy_base_geometry: {
262 
263  SurfaceY: 6.9e2 # in cm, vertical distance to the surface
264  DisableWiresInG4: true
265 
266  Name: @nil
267  GDML: @nil
268  ROOT: @nil
269 
270  ChannelMapping: @local::icarus_legacy_base_geometry_helper.Mapper
271 
272 } # icarus_legacy_base_geometry
273 
274 icarus_legacy_base_geometry_services: {
275  Geometry: @local::icarus_legacy_base_geometry
276  ExptGeoHelperInterface: @local::icarus_legacy_base_geometry_helper
277  GeometryConfigurationWriter: {}
278 
279 } # icarus_legacy_base_geometry_services
280 
281 
282 ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
283 ### icarus_geometry_services_legacy_icarus_v3:
284 ### geometry tagged as `icarus_v3` for samples produced with v09_52_00
285 ### and earlier
286 ###
287 ### Also versions with explicit overburden specification.
288 ###
289 icarus_geometry_services_no_overburden_legacy_icarus_v3: @local::icarus_legacy_base_geometry_services
290 icarus_geometry_services_no_overburden_legacy_icarus_v3.Geometry.Name: icarus_v3
291 icarus_geometry_services_no_overburden_legacy_icarus_v3.Geometry.GDML: "icarus_complete_20210527_no_overburden.gdml"
292 icarus_geometry_services_no_overburden_legacy_icarus_v3.Geometry.ROOT: "icarus_complete_20210527_no_overburden.gdml"
293 
294 icarus_geometry_services_overburden_legacy_icarus_v3: @local::icarus_legacy_base_geometry_services
295 icarus_geometry_services_overburden_legacy_icarus_v3.Geometry.Name: icarus_v3
296 icarus_geometry_services_overburden_legacy_icarus_v3.Geometry.GDML: "icarus_complete_20210527_overburden.gdml"
297 icarus_geometry_services_overburden_legacy_icarus_v3.Geometry.ROOT: "icarus_complete_20210527_overburden.gdml"
298 
299 icarus_geometry_services_legacy_icarus_v3:
300  @local::icarus_geometry_services_no_overburden_legacy_icarus_v3
301 
302 
303 ###
304 ### icarus_geometry_services_legacy_icarus_v2:
305 ### geometry tagged as `icarus_v2` for samples produced with v09_24_02_02
306 ### and earlier
307 ###
308 ### Also versions with explicit overburden specification.
309 ###
310 icarus_geometry_services_no_overburden_legacy_icarus_v2: @local::icarus_legacy_base_geometry_services
311 icarus_geometry_services_no_overburden_legacy_icarus_v2.Geometry.Name: icarus_v2
312 icarus_geometry_services_no_overburden_legacy_icarus_v2.Geometry.GDML: "icarus_complete_20210311_no_overburden_rotUV.gdml"
313 icarus_geometry_services_no_overburden_legacy_icarus_v2.Geometry.ROOT: "icarus_complete_20210311_no_overburden_rotUV.gdml"
314 
315 icarus_geometry_services_overburden_legacy_icarus_v2: @local::icarus_legacy_base_geometry_services
316 icarus_geometry_services_overburden_legacy_icarus_v2.Geometry.Name: icarus_v2
317 icarus_geometry_services_overburden_legacy_icarus_v2.Geometry.GDML: "icarus_complete_20210311_rotUV.gdml"
318 icarus_geometry_services_overburden_legacy_icarus_v2.Geometry.ROOT: "icarus_complete_20210311_rotUV.gdml"
319 
320 icarus_geometry_services_legacy_icarus_v2:
321  @local::icarus_geometry_services_no_overburden_legacy_icarus_v2
322 
323 
324 ###
325 ### icarus_geometry_services_legacy_icarus_splitwires:
326 ### geometry tagged as `icarus_splitwires` for samples produced with v09_17_02
327 ### and earlier
328 ###
329 ### Also versions with explicit overburden specification.
330 ###
331 icarus_geometry_services_no_overburden_legacy_icarus_splitwires: @local::icarus_legacy_base_geometry_services
332 icarus_geometry_services_no_overburden_legacy_icarus_splitwires.Geometry.Name: icarus_splitwires
333 icarus_geometry_services_no_overburden_legacy_icarus_splitwires.Geometry.GDML: "icarus_complete_20201107_no_overburden.gdml"
334 icarus_geometry_services_no_overburden_legacy_icarus_splitwires.Geometry.ROOT: "icarus_complete_20201107_no_overburden.gdml"
335 
336 icarus_geometry_services_overburden_legacy_icarus_splitwires: @local::icarus_legacy_base_geometry_services
337 icarus_geometry_services_overburden_legacy_icarus_splitwires.Geometry.Name: icarus_splitwires
338 icarus_geometry_services_overburden_legacy_icarus_splitwires.Geometry.GDML: "icarus_complete_20201107.gdml"
339 icarus_geometry_services_overburden_legacy_icarus_splitwires.Geometry.ROOT: "icarus_complete_20201107.gdml"
340 
341 icarus_geometry_services_legacy_icarus_splitwires:
342  @local::icarus_geometry_services_no_overburden_legacy_icarus_splitwires
343 
344 
345 ################################################################################
346 ###
347 ### These are old names for the configuration presets.
348 ###
349 icarus_split_induction_overburden_geometry: @local::icarus_standard_geometry
350 icarus_split_induction_geometry_helper: @local::icarus_standard_geometry_helper
351 icarus_split_induction_overburden_geometry_services: @local::icarus_standard_geometry_services
352 
353 ################################################################################
354 
355 
356 END_PROLOG
BEGIN_PROLOG vertical distance to the surface virtual then then wireless then ghost then ghost then wireless CollectionOddPostChannels
BEGIN_PROLOG icarus_geometry_template
#define the
process_name vertical distance to the surface vertical distance to the surface DisableWiresInG4
BEGIN_PROLOG vertical distance to the surface virtual then SecondInductionEvenPreChannels
process_name gaushit a
BEGIN_PROLOG vertical distance to the surface virtual then then wireless then ghost then ghost CollectionOddPreChannels
double distance(geo::Point_t const &point, CathodeDesc_t const &cathode)
Returns the distance of a point from the cathode.
BEGIN_PROLOG vertical distance to the surface virtual then then wireless SecondInductionEvenPostChannels
BEGIN_PROLOG vertical distance to the surface virtual then then wireless then ghost SecondInductionOddPreChannels
BEGIN_PROLOG vertical distance to the surface Name
if &&[-z"$BASH_VERSION"] then echo Attempting to switch to bash bash shellSwitch exit fi &&["$1"= 'shellSwitch'] shift declare a IncludeDirectives for Dir in
list
Definition: file_to_url.sh:28
BEGIN_PROLOG icarus_geo