All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
triggeremu_settings_icarus.fcl
Go to the documentation of this file.
1 #
2 # File: triggeremu_settings_icarus.fcl
3 # Purpose: Collection of settings for trigger emulation.
4 # Author: Gianluca Petrillo (petrillo@slac.stanford.edu)
5 # Date: July 28, 2022
6 #
7 # This is an attempt to centralize the definition of as many settings for
8 # trigger emulation as possible.
9 # The usage model is the following:
10 # 1. users preemptively assign final values to the settings they want to customize
11 # 2. the configuration includes this file, completing with defaults
12 # 3. the template trigger configurations use those settings
13 # 4. eventually users can override the settings one last time
14 #
15 # The pattern is chosen because there are several parameters that are used
16 # multiple times in the configuration, and customizing them at step 4 requires
17 # multiple overrides and the detailed knowledge of where to.
18 # To implement step 1, user configuration will look like:
19 #
20 # ###
21 # ### Step 1: preemptively assign final values to custom settings
22 # ###
23 # BEGIN_PROLOG
24 #
25 # # choose only four fixed discrimination thresholds
26 # triggeremu_config_icarus.settings.PMTADCthresholds @protect_ignore:
27 # [ 200, 300, 400, 500 ]
28 #
29 # END_PROLOG
30 #
31 # ###
32 # ### Step 3: include FHiCL configuration (including the trigger preset)
33 # ###
34 # #include "triggeremu_data_config.fcl"
35 #
36 # ###
37 # ### Step 4: override settings as needed
38 # ###
39 # BEGIN_PROLOG
40 #
41 #
42 #
43 # END_PROLOG
44 #
45 # ###
46 # ### no more prolog from now on
47 # ###
48 #
49 # process_name: Ana
50 # # ...
51 #
52 #
53 # The definitions are all in `triggeremu_config_icarus` table.
54 #
55 #
56 # DEVELOPER NOTE: special care needs to be used when adding settings to this
57 # file: limitations/quirks on FHiCL library `@protect_ignore:` assignment make
58 # its use straightforward only when assigning single atoms, as opposed to tables
59 # or sequences. See the note below.
60 #
61 #
62 
63 #include "trigger_icarus.fcl"
64 
65 # ------------------------------------------------------------------------------
66 BEGIN_PROLOG
67 
68 # All settings are enclosed in `triggeremu_config_icarus`, structured in:
69 # * `settings`: general settings, like a common PROLOG
70 # * `services`: table of required services
71 # * `producers`: table of producer configurations
72 # * `producerpath`: list of producers
73 # * `messagedestinations`: message facility destinations for logging
74 # Table `triggeremu_config_icarus` is defined in multiple passes to allow
75 # internal references.
76 
77 # settings in triggeremu_config_icarus.settings are set individually
78 # so that each can be ignored by setting it with `@protect_ignore:` before
79 # including this configuration file
80 # (setting the whole `settings: { ... }` block would just get rid of the whole
81 # content of `settings` regardless the protection level of each item within)
82 # So for example:
83 #
84 # triggeremu_config_icarus.BNBgate: { # BAD!
85 # Start: "-0.05 us"
86 # Duration: "1.7 us"
87 # }
88 #
89 # must be avoided in favour of:
90 #
91 # triggeremu_config_icarus.BNBgate.Start: "-0.05 us"
92 # triggeremu_config_icarus.BNBgate.Duration: "1.7 us"
93 #
94 # The first form would override any assignment to `Start` and `Duration`, even
95 # if they were assigned with "@protect_ignore:".
96 #
97 
98 # bad PMT channels (off or too noisy)
99 triggeremu_config_icarus.settings.missing_pmt_channels:
101 
102 # beam gate window for trigger emulation:
103 # - duration (BNB: 1.6 us; NuMI: 9.5 us; and some buffer)
104 triggeremu_config_icarus.settings.BeamGate.Duration: "1.70 us"
105 # - window start offset
106 triggeremu_config_icarus.settings.BeamGate.Start: "-0.05 us"
107 
108 # discrimination thresholds (only fixed ADC listed here)
109 triggeremu_config_icarus.settings.PMTADCthresholds:
110  [ 100, 150, 200, 250, 300, 350, 400, 500 ]
111 
112 # PMT discriminated signal width
113 triggeremu_config_icarus.settings.LVDSsignalWidth: "160 ns"
114 
115 # special pairing for 30-PMT windows pairing the single PMT together
116 triggeremu_config_icarus.settings.trigger_channel_pairings_nosingle: [
117 
118  # behind C:0 S:0
119  [ 0, 2 ], [ 1, 4 ], [ 3, 6 ], [ 5, 8 ], [ 7, 9 ], [ 10, 12 ], [ 11, 14 ], [ 13, 16 ],
120  [ 15, 18 ], [ 17, 19 ], [ 20, 22 ], [ 21, 24 ], [ 23, 26 ], [ 25, 28 ], [ 27, 29 ],
121  [ 30, 32 ], [ 31, 34 ], [ 33, 36 ], [ 35, 38 ], [ 37, 39 ], [ 40, 42 ], [ 41, 44 ], [ 43, 46 ],
122  [ 45, 48 ], [ 47, 49 ], [ 50, 52 ], [ 51, 54 ], [ 53, 56 ], [ 55, 58 ], [ 57, 59 ],
123  [ 60, 62 ], [ 61, 64 ], [ 63, 66 ], [ 65, 68 ], [ 67, 69 ], [ 70, 72 ], [ 71, 74 ], [ 73, 76 ],
124  [ 75, 78 ], [ 77, 79 ], [ 80, 82 ], [ 81, 84 ], [ 83, 86 ], [ 85, 88 ], [ 87, 89 ],
125 
126  # behind C:0 S:1
127  [ 90, 92 ], [ 91, 94 ], [ 93, 96 ], [ 95, 98 ], [ 97, 99 ], [ 100,102 ], [ 101,104 ], [ 103,106 ],
128  [ 105,108 ], [ 107,109 ], [ 110,112 ], [ 111,114 ], [ 113,116 ], [ 115,118 ], [ 117,119 ],
129  [ 120,122 ], [ 121,124 ], [ 123,126 ], [ 125,128 ], [ 127,129 ], [ 130,132 ], [ 131,134 ], [ 133,136 ],
130  [ 135,138 ], [ 137,139 ], [ 140,142 ], [ 141,144 ], [ 143,146 ], [ 145,148 ], [ 147,149 ],
131  [ 150,152 ], [ 151,154 ], [ 153,156 ], [ 155,158 ], [ 157,159 ], [ 160,162 ], [ 161,164 ], [ 163,166 ],
132  [ 165,168 ], [ 167,169 ], [ 170,172 ], [ 171,174 ], [ 173,176 ], [ 175,178 ], [ 177,179 ],
133 
134  # behind C:1 S:0
135  [ 180,182 ], [ 181,184 ], [ 183,186 ], [ 185,188 ], [ 187,189 ], [ 190,192 ], [ 191,194 ], [ 193,196 ],
136  [ 195,198 ], [ 197,199 ], [ 200,202 ], [ 201,204 ], [ 203,206 ], [ 205,208 ], [ 207,209 ],
137  [ 210,212 ], [ 211,214 ], [ 213,216 ], [ 215,218 ], [ 217,219 ], [ 220,222 ], [ 221,224 ], [ 223,226 ],
138  [ 225,228 ], [ 227,229 ], [ 230,232 ], [ 231,234 ], [ 233,236 ], [ 235,238 ], [ 237,239 ],
139  [ 240,242 ], [ 241,244 ], [ 243,246 ], [ 245,248 ], [ 247,249 ], [ 250,252 ], [ 251,254 ], [ 253,256 ],
140  [ 255,258 ], [ 257,259 ], [ 260,262 ], [ 261,264 ], [ 263,266 ], [ 265,268 ], [ 267,269 ],
141 
142  # behind C:1 S:1
143  [ 270,272 ], [ 271,274 ], [ 273,276 ], [ 275,278 ], [ 277,279 ], [ 280,282 ], [ 281,284 ], [ 283,286 ],
144  [ 285,288 ], [ 287,289 ], [ 290,292 ], [ 291,294 ], [ 293,296 ], [ 295,298 ], [ 297,299 ],
145  [ 300,302 ], [ 301,304 ], [ 303,306 ], [ 305,308 ], [ 307,309 ], [ 310,312 ], [ 311,314 ], [ 313,316 ],
146  [ 315,318 ], [ 317,319 ], [ 320,322 ], [ 321,324 ], [ 323,326 ], [ 325,328 ], [ 327,329 ],
147  [ 330,332 ], [ 331,334 ], [ 333,336 ], [ 335,338 ], [ 337,339 ], [ 340,342 ], [ 341,344 ], [ 343,346 ],
148  [ 345,348 ], [ 347,349 ], [ 350,352 ], [ 351,354 ], [ 353,356 ], [ 355,358 ], [ 357,359 ]
149 
150 ] # trigger_channel_pairings_nosingle
151 
152 
153 # settings for plotting efficiency under patterns of sliding window triggers
154 # firing during beam time
155 triggeremu_config_icarus.settings.SlidingWindowTriggerPatternsSingleWindow: [
156  { inMainWindow: 1 },
157  { inMainWindow: 2 },
158  { inMainWindow: 3 },
159  { inMainWindow: 4 },
160  { inMainWindow: 5 },
161  { inMainWindow: 6 }
163 
164 
165 triggeremu_config_icarus.settings.SlidingWindowTriggerPatternsWindowPair: [
166  { inMainWindow: 1 inOppositeWindow: 1 }, # [0]
167  { inMainWindow: 2 inOppositeWindow: 2 }, # [1]
168  { inMainWindow: 3 inOppositeWindow: 3 }, # [2]
169  { inMainWindow: 4 inOppositeWindow: 4 }, # [3]
170  { inMainWindow: 5 inOppositeWindow: 5 }, # [4]
171  { inMainWindow: 6 inOppositeWindow: 6 }, # [5]
172  { inMainWindow: 2 sumOfOppositeWindows: 3 }, # [6]
173  { inMainWindow: 3 sumOfOppositeWindows: 5 }, # [7]
174  { inMainWindow: 4 sumOfOppositeWindows: 8 }, # [8]
175  { inMainWindow: 5 sumOfOppositeWindows: 10 }, # [9]
176  { inMainWindow: 8 sumOfOppositeWindows: 15 } # [10]
177 ] # SlidingWindowTriggerPatternsWindowPair
178 
179 
180 # list of the sliding windows that are enabled (all others are disabled)
181 
182 # * configuration with 3 windows per PMT wall (12 windows overall)
183 triggeremu_config_icarus.settings.EnabledWindowsTilingE:
184  [ 0, 1, 2, 3, 4, 5 ]
185 triggeremu_config_icarus.settings.EnabledWindowsTilingW:
186  [ 6, 7, 8, 9, 10, 11 ]
187 
188 # * configuration with 5 windows per PMT wall, overlapping (20 windows overall)
189 triggeremu_config_icarus.settings.EnabledWindowsSlidingE:
190  [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
191 triggeremu_config_icarus.settings.EnabledWindowsSlidingW:
192  [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ]
193 
194 triggeremu_config_icarus.settings.SlidingWindowTriggerPatterns: [
195  @sequence::triggeremu_config_icarus.settings.SlidingWindowTriggerPatternsSingleWindow,
196  @sequence::triggeremu_config_icarus.settings.SlidingWindowTriggerPatternsWindowPair
197 ]
198 
199 
200 END_PROLOG
BEGIN_PROLOG SlidingWindowTriggerPatternsSingleWindow
BEGIN_PROLOG icarus_trigger_channel_ignore_202101