2 # File: triggeremu_settings_icarus.fcl
3 # Purpose: Collection of settings for trigger emulation.
4 # Author: Gianluca Petrillo (petrillo@slac.stanford.edu)
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
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:
21 # ### Step 1: preemptively assign final values to custom settings
25 # # choose only four fixed discrimination thresholds
26 # triggeremu_config_icarus.settings.PMTADCthresholds @protect_ignore:
27 # [ 200, 300, 400, 500 ]
32 # ### Step 3: include FHiCL configuration (including the trigger preset)
34 # #include "triggeremu_data_config.fcl"
37 # ### Step 4: override settings as needed
46 # ### no more prolog from now on
53 # The definitions are all in `triggeremu_config_icarus` table.
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.
65 # ------------------------------------------------------------------------------
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.
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)
84 # triggeremu_config_icarus.BNBgate: { # BAD!
89 # must be avoided in favour of:
91 # triggeremu_config_icarus.BNBgate.Start: "-0.05 us"
92 # triggeremu_config_icarus.BNBgate.Duration: "1.7 us"
94 # The first form would override any assignment to `Start` and `Duration`, even
95 # if they were assigned with "@protect_ignore:".
98 # bad PMT channels (off or too noisy)
99 triggeremu_config_icarus.settings.missing_pmt_channels:
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"
108 # discrimination thresholds (only fixed ADC listed here)
109 triggeremu_config_icarus.settings.PMTADCthresholds:
110 [ 100, 150, 200, 250, 300, 350, 400, 500 ]
112 # PMT discriminated signal width
113 triggeremu_config_icarus.settings.LVDSsignalWidth:
"160 ns"
115 # special pairing for 30-PMT windows pairing the single PMT together
116 triggeremu_config_icarus.settings.trigger_channel_pairings_nosingle: [
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 ],
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 ],
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 ],
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 ]
150 ] # trigger_channel_pairings_nosingle
153 # settings for plotting efficiency under patterns of sliding window triggers
154 # firing during beam time
155 triggeremu_config_icarus.settings.SlidingWindowTriggerPatternsSingleWindow: [
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
180 # list of the sliding windows that are enabled (all others are disabled)
182 # * configuration with 3 windows per PMT wall (12 windows overall)
183 triggeremu_config_icarus.settings.EnabledWindowsTilingE:
185 triggeremu_config_icarus.settings.EnabledWindowsTilingW:
186 [ 6, 7, 8, 9, 10, 11 ]
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 ]
194 triggeremu_config_icarus.settings.SlidingWindowTriggerPatterns: [
195 @sequence::triggeremu_config_icarus.settings.SlidingWindowTriggerPatternsSingleWindow,
196 @sequence::triggeremu_config_icarus.settings.SlidingWindowTriggerPatternsWindowPair
BEGIN_PROLOG SlidingWindowTriggerPatternsSingleWindow
BEGIN_PROLOG icarus_trigger_channel_ignore_202101