All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
triggersim_icarus.fcl
Go to the documentation of this file.
1 #
2 # File: triggersim_icarus.fcl
3 # Purpose: Runs a chain to simulate ICARUS trigger primitives.
4 # Author: Gianluca Petrillo (petrillo@slac.stanford.edu)
5 # Date: May 17, 2021
6 # Version: 1.0
7 #
8 # This is a top-level configuration that can be run directly.
9 #
10 # This job simulates the full detector in two configurations: with tiling
11 # windows (no trigger window overlap) and with sliding windows
12 # (half-overlapping).
13 # For each configuration, an overall trigger is simulated as well as only
14 # cryostat 0 ("east module") and only cryostat 1 ("west module").
15 # Also, for each configuration, several trigger patterns are simulated including
16 # single window requirements (M1 to M6), main and opposite window (M3O3 to M6O6)
17 # and total of main and opposite window (S3, S5, S8, S10, S15).
18 #
19 #
20 # The steps are:
21 #
22 # * pmtbaselines (PMTWaveformBaselines): computes baselines for all PMT
23 # waveforms
24 # * discrimopdaq (DiscriminatePMTwaveforms): from each PMT extracts a gate
25 # signal according to each of the configured thresholds;
26 # for each threshold all gates are stored in their own data product
27 # * lvdsgatesOR (LVDSgates): pairs each of the discriminated waveforms above
28 # to reproduce the 192 hardware channels from PMT feeding the trigger
29 # the pairing is performed as an OR of the two gates in the pair;
30 # * trigtilewindowORN (SlidingWindowTrigger): applies a sliding window of 30
31 # PMT and keeps only the ones on east cryostat (C:0); it uses OR paired
32 # output from LVDS simulation;
33 # * effTiledORN (SlidingWindowTriggerEfficiencyPlots): produces plots of
34 # efficiency of a trigger requiring patterns of sliding window triggers,
35 # with minimum LVDS trigger primitives in each sliding window, to be
36 # present at the same time and in coincidence with a 1.6 us beam gate;
37 #
38 #
39 # Required inputs
40 # ----------------
41 #
42 # * optical detector readout: `opdaq`
43 #
44 #
45 # Changes
46 # --------
47 #
48 # 20210517 (petrillo@slac.stanford.edu) [v1.0]
49 # : original version based on `triggersim_eastmodule_icarus.fcl` v1.0
50 #
51 
52 
53 # ------------------------------------------------------------------------------
55 #include "rootoutput_icarus.fcl"
56 #include "trigger_icarus.fcl"
57 
58 
59 # ------------------------------------------------------------------------------
60 BEGIN_PROLOG
61 
62 # bad PMT channels (off or too noisy)
63 # missing_pmt_channels: @local::icarus_trigger_channel_ignore_202101
65 
66 # beam gate window duration (BNB: 1.6 us; NuMI: 9.5 us)
67 BeamGateDuration: "1.6 us"
68 
69 # beam gate window start offset
70 BeamGateStart: "0 us"
71 
72 # discrimination thresholds:
73 PMTthresholds: [ 400, 600 ]
74 
75 
76 # PMT discriminated signal width
77 LVDSsignalWidth: "160 ns"
78 
79 # special pairing for 30-PMT windows pairing the single PMT together
80 icarus_trigger_channel_pairings_nosingle: [
81 
82  # behind C:0 S:0
83  [ 0, 2 ], [ 1, 4 ], [ 3, 6 ], [ 5, 8 ], [ 7, 9 ], [ 10, 12 ], [ 11, 14 ], [ 13, 16 ],
84  [ 15, 18 ], [ 17, 19 ], [ 20, 22 ], [ 21, 24 ], [ 23, 26 ], [ 25, 28 ], [ 27, 29 ],
85  [ 30, 32 ], [ 31, 34 ], [ 33, 36 ], [ 35, 38 ], [ 37, 39 ], [ 40, 42 ], [ 41, 44 ], [ 43, 46 ],
86  [ 45, 48 ], [ 47, 49 ], [ 50, 52 ], [ 51, 54 ], [ 53, 56 ], [ 55, 58 ], [ 57, 59 ],
87  [ 60, 62 ], [ 61, 64 ], [ 63, 66 ], [ 65, 68 ], [ 67, 69 ], [ 70, 72 ], [ 71, 74 ], [ 73, 76 ],
88  [ 75, 78 ], [ 77, 79 ], [ 80, 82 ], [ 81, 84 ], [ 83, 86 ], [ 85, 88 ], [ 87, 89 ],
89 
90  # behind C:0 S:1
91  [ 90, 92 ], [ 91, 94 ], [ 93, 96 ], [ 95, 98 ], [ 97, 99 ], [ 100,102 ], [ 101,104 ], [ 103,106 ],
92  [ 105,108 ], [ 107,109 ], [ 110,112 ], [ 111,114 ], [ 113,116 ], [ 115,118 ], [ 117,119 ],
93  [ 120,122 ], [ 121,124 ], [ 123,126 ], [ 125,128 ], [ 127,129 ], [ 130,132 ], [ 131,134 ], [ 133,136 ],
94  [ 135,138 ], [ 137,139 ], [ 140,142 ], [ 141,144 ], [ 143,146 ], [ 145,148 ], [ 147,149 ],
95  [ 150,152 ], [ 151,154 ], [ 153,156 ], [ 155,158 ], [ 157,159 ], [ 160,162 ], [ 161,164 ], [ 163,166 ],
96  [ 165,168 ], [ 167,169 ], [ 170,172 ], [ 171,174 ], [ 173,176 ], [ 175,178 ], [ 177,179 ],
97 
98  # behind C:1 S:0
99  [ 180,182 ], [ 181,184 ], [ 183,186 ], [ 185,188 ], [ 187,189 ], [ 190,192 ], [ 191,194 ], [ 193,196 ],
100  [ 195,198 ], [ 197,199 ], [ 200,202 ], [ 201,204 ], [ 203,206 ], [ 205,208 ], [ 207,209 ],
101  [ 210,212 ], [ 211,214 ], [ 213,216 ], [ 215,218 ], [ 217,219 ], [ 220,222 ], [ 221,224 ], [ 223,226 ],
102  [ 225,228 ], [ 227,229 ], [ 230,232 ], [ 231,234 ], [ 233,236 ], [ 235,238 ], [ 237,239 ],
103  [ 240,242 ], [ 241,244 ], [ 243,246 ], [ 245,248 ], [ 247,249 ], [ 250,252 ], [ 251,254 ], [ 253,256 ],
104  [ 255,258 ], [ 257,259 ], [ 260,262 ], [ 261,264 ], [ 263,266 ], [ 265,268 ], [ 267,269 ],
105 
106  # behind C:1 S:1
107  [ 270,272 ], [ 271,274 ], [ 273,276 ], [ 275,278 ], [ 277,279 ], [ 280,282 ], [ 281,284 ], [ 283,286 ],
108  [ 285,288 ], [ 287,289 ], [ 290,292 ], [ 291,294 ], [ 293,296 ], [ 295,298 ], [ 297,299 ],
109  [ 300,302 ], [ 301,304 ], [ 303,306 ], [ 305,308 ], [ 307,309 ], [ 310,312 ], [ 311,314 ], [ 313,316 ],
110  [ 315,318 ], [ 317,319 ], [ 320,322 ], [ 321,324 ], [ 323,326 ], [ 325,328 ], [ 327,329 ],
111  [ 330,332 ], [ 331,334 ], [ 333,336 ], [ 335,338 ], [ 337,339 ], [ 340,342 ], [ 341,344 ], [ 343,346 ],
112  [ 345,348 ], [ 347,349 ], [ 350,352 ], [ 351,354 ], [ 353,356 ], [ 355,358 ], [ 357,359 ]
113 
114 ] # icarus_trigger_channel_pairings_nosingle
115 
116 
117 # settings for plotting efficiency under patterns of sliding window triggers
118 # firing during beam time
120  { inMainWindow: 1 },
121  { inMainWindow: 2 },
122  { inMainWindow: 3 },
123  { inMainWindow: 4 },
124  { inMainWindow: 5 },
125  { inMainWindow: 6 }
127 
128 
129 SlidingWindowTriggerPatternsWindowPair: [
130  { inMainWindow: 1 inOppositeWindow: 1 }, # [0]
131  { inMainWindow: 2 inOppositeWindow: 2 }, # [1]
132  { inMainWindow: 3 inOppositeWindow: 3 }, # [2]
133  { inMainWindow: 4 inOppositeWindow: 4 }, # [3]
134  { inMainWindow: 5 inOppositeWindow: 5 }, # [4]
135  { inMainWindow: 6 inOppositeWindow: 6 }, # [5]
136  { inMainWindow: 2 sumOfOppositeWindows: 3 }, # [6]
137  { inMainWindow: 3 sumOfOppositeWindows: 5 }, # [7]
138  { inMainWindow: 4 sumOfOppositeWindows: 8 }, # [8]
139  { inMainWindow: 5 sumOfOppositeWindows: 10 }, # [9]
140  { inMainWindow: 8 sumOfOppositeWindows: 15 } # [10]
141 ] # SlidingWindowTriggerPatternsWindowPair
142 
143 
146  @sequence::SlidingWindowTriggerPatternsWindowPair
148 
149 
150 # list of the sliding windows that are enabled (all others are disabled)
151 # * configuration with 3 windows per PMT wall (12 windows overall)
152 EnabledWindowsE: [ 0, 1, 2, 3, 4, 5 ]
153 EnabledWindowsW: [ 6, 7, 8, 9, 10, 11 ]
154 # * configuration with 5 windows per PMT wall, overlapping (20 windows overall)
155 EnabledWindowsSlidingE: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
156 EnabledWindowsSlidingW: [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ]
157 
158 
159 END_PROLOG
160 # ------------------------------------------------------------------------------
161 
162 process_name: Trigger
163 
164 
165 # ------------------------------------------------------------------------------
166 services: {
167 
168  # this provides: file service, random management (unused),
169  # Geometry, detector properties and clocks
170  @table::icarus_common_services
171 
172  # art resource tracking services may take a lot of memory on the long run
173  MemoryTracker: @erase
174  TimeTracker: @erase
175 
176  # currently unused (remove the line if they start mattering):
177  LArPropertiesService: @erase
178  DetectorPropertiesService: @erase
179 
180 } # services
181 
182 
183 # ------------------------------------------------------------------------------
184 physics: {
185 
186  producers: {
187 
188  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
189  pmtbaselines: {
190 
191  module_type: PMTWaveformBaselines
192 
193  # label of input digitized optical waveform data product
194  OpticalWaveforms: "opdaq"
195 
196  # produce plots on the extracted baseline
197  PlotBaselines: true # default
198 
199  # tag of the module output to console via message facility
200  OutputCategory: "PMTWaveformBaselines" # default
201 
202  } # pmtbaselines
203 
204 
205  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
206  discrimopdaq: {
207 
208  module_type: DiscriminatePMTwaveforms
209 
210  # input optical waveform data product tag:
211  OpticalWaveforms: "opdaq"
212 
213  # PMT baselines
214  Baselines: "pmtbaselines" # from data products
215  # Baseline: 8000
216 
217  #
218  # choosing the discrimination algorithm: fixed length gates
219  #
220  TriggerGateBuilder: {
221  @table::icarus_fixedtriggergate # from trigger_icarus.fcl
222 
223  ChannelThresholds: @local::PMTthresholds
224 
226 
227  } # TriggerGateBuilder
228 
229  # select which thresholds to save (the algorithm *must* provide them!);
230  # omitted: save all thresholds that the algorithm provides (above)
231  # SelectThresholds: [ 5, 15 ]
232 
233  # message facility stream
234  OutputCategory: "DiscriminatePMTwaveforms"
235 
236  } # discrimopdaq
237 
238 
239  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
240  lvdsgatesOR: {
241 
242  module_type: LVDSgates
243 
244  TriggerGatesTag: discrimopdaq
245 
246  # select the thresholds to process (mandatory)
247  Thresholds: @local::PMTthresholds
248 
249  # CombinationMode: mostly either "AND" or "OR"
250  CombinationMode: "OR"
251 
252  # use the standard ICARUS pairing
254 
255  # input does not include these channels:
256  IgnoreChannels: @local::missing_pmt_channels
257 
258  # message facility stream
259  LogCategory: "LVDSgatesOR"
260 
261  } # lvdsgatesOR
262 
263 
264  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
266 
267  module_type: SlidingWindowTrigger
268 
269  TriggerGatesTag: "lvdsgatesOR"
270 
271  Thresholds: @local::PMTthresholds
272 
273  WindowSize: 30
274 
275  # number of optical channel used as offset for sliding window [as WindowSize]
276  # Stride: 30
277 
278  MissingChannels: @local::missing_pmt_channels
279 
280  # name of the category used for the output
281  LogCategory: "SlidingWindowTriggerOR"
282 
283  } # trigtilewindowOR
284 
285 
286  # defined later: trigtilewindowORE, trigtilewindowORW,
287  # trigslidewindowOR, trigslidewindowORE, trigslidewindowORW
288 
289 
290  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
291  simTiledORM1: {
292  module_type: SlidingWindowTriggerSimulation
293 
294  TriggerGatesTag: "trigtilewindowOR"
295 
296  Thresholds: @local::PMTthresholds
297 
298  # this is M1
300 
301  # Beam gate:
302  BeamGateDuration: @local::BeamGateDuration
303  BeamGateStart: @local::BeamGateStart
304 
305  # Bits set into the raw::Trigger objects
306  BeamBits: @local::BNB_settings.trigger_bits # from trigger_icarus.fcl
307 
308  # for trigger time plots:
309  EventTimeBinning: 900 # seconds-> 15'
310 
311  # for... nothing
312  TriggerTimeResolution: "25 ns"
313 
314  # name of the category used for the output
315  LogCategory: "SlidingWindowTriggerSimulationOR"
316 
317  } # simTiledORM1
318 
319  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
320 
321  } # producers
322 
323 
324  analyzers: {
325 
326  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
327  effTiledOR: {
328 
329  module_type: SlidingWindowTriggerEfficiencyPlots
330 
331  TriggerGatesTag: trigtilewindowOR
332 
333  # select the thresholds to process (mandatory)
334  Thresholds: @local::PMTthresholds
335 
336  # sliding window patterns to be simulated
337  Patterns: @local::SlidingWindowTriggerPatterns
338 
339  # duration and offset of the beam gate (BNB: 1.6 us; NuMI: 9.5 us)
340  BeamGateDuration: @local::BeamGateDuration
341  BeamGateStart: @local::BeamGateStart
342 
343  # write event information in a simple tree for further investigation (disabled)
344  # EventTreeName: "EventsSlidingOR"
345 
346  # dump event information on screen (disabled)
347  # EventDetailsLogCategory: ""
348 
349  # we plot events wherever theirs interactions are
350  PlotOnlyActiveVolume: false
351 
352  # message facility stream
353  LogCategory: "SlidingWindowTriggerEfficiencyPlotsOR"
354 
355  } # effTiledOR
356 
357 
358  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
359 
360  } # analyzers
361 
362 
363  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
364  triggerOR: [
365  pmtbaselines, discrimopdaq, lvdsgatesOR,
366 
367  # tiling
368  trigtilewindowOR, trigtilewindowORE, trigtilewindowORW,
369  # sliding
370  trigslidewindowOR, trigslidewindowORE, trigslidewindowORW,
371 
372  # trigger simulation: tiling
373  simTiledORM1, simTiledORM2, simTiledORM3, simTiledORM4, simTiledORM5, simTiledORM6,
374  simTiledORM3O3, simTiledORM4O4, simTiledORM5O5, simTiledORM6O6,
375  simTiledORS3, simTiledORS5, simTiledORS8, simTiledORS10, simTiledORS15,
376  # trigger simulation: sliding
377  simSlidingORM1, simSlidingORM2, simSlidingORM3, simSlidingORM4, simSlidingORM5, simSlidingORM6,
378  simSlidingORM3O3, simSlidingORM4O4, simSlidingORM5O5, simSlidingORM6O6,
379  simSlidingORS3, simSlidingORS5, simSlidingORS8, simSlidingORS10, simSlidingORS15
380  ]
381 
382  plotsOR: [
383  # tiling
384  effTiledOR, effTiledORE, effTiledORW,
385  # sliding
386  effSlidingOR, effSlidingORE, effSlidingORW
387  ]
388 
389  output: [ rootoutput ]
390 
391  trigger_paths: [ triggerOR ]
392  end_paths: [ plotsOR, output ]
393 
394  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
395 
396 } # physics
397 
398 
399 # additional regional definitions for OR pairing
400 
401 physics.producers.trigtilewindowORE: {
402  @table::physics.producers.trigtilewindowOR
403  EnableOnlyWindows: @local::EnabledWindowsE
404 }
405 
406 physics.producers.trigtilewindowORW: {
407  @table::physics.producers.trigtilewindowOR
408  EnableOnlyWindows: @local::EnabledWindowsW
409 }
410 
411 physics.producers.trigslidewindowOR: {
412  @table::physics.producers.trigtilewindowOR
413 
414  Stride: 15
415 }
416 
417 physics.producers.trigslidewindowORE: {
418  @table::physics.producers.trigslidewindowOR
419  EnableOnlyWindows: @local::EnabledWindowsSlidingE
420 }
421 
422 physics.producers.trigslidewindowORW: {
423  @table::physics.producers.trigslidewindowOR
424  EnableOnlyWindows: @local::EnabledWindowsSlidingW
425 }
426 
427 
428 physics.analyzers.effTiledORE: {
429  @table::physics.analyzers.effTiledOR
430  TriggerGatesTag: trigtilewindowORE
431 }
432 
433 physics.analyzers.effTiledORW: {
434  @table::physics.analyzers.effTiledOR
435  TriggerGatesTag: trigtilewindowORW
436 }
437 
438 physics.analyzers.effSlidingOR: {
439  @table::physics.analyzers.effTiledOR
440  TriggerGatesTag: trigslidewindowOR
441 }
442 
443 physics.analyzers.effSlidingORE: {
444  @table::physics.analyzers.effTiledOR
445  TriggerGatesTag: trigslidewindowORE
446 }
447 
448 physics.analyzers.effSlidingORW: {
449  @table::physics.analyzers.effTiledOR
450  TriggerGatesTag: trigslidewindowORW
451 }
452 
453 
454 #
455 # trigger objects are produced only for some selected combinations:
456 # requirement of 3 to 6 aopen LVDS gates, with and without opposite window,
457 # for sliding and tiled 30-PMT windows, across the whole detector
458 #
459 physics.producers.simTiledORM2: {
460  @table::physics.producers.simTiledORM1
461  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[1] # M2
462 }
463 
464 physics.producers.simTiledORM3: {
465  @table::physics.producers.simTiledORM1
466  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[2] # M3
467 }
468 
469 physics.producers.simTiledORM4: {
470  @table::physics.producers.simTiledORM1
471  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[3] # M4
472 }
473 
474 physics.producers.simTiledORM5: {
475  @table::physics.producers.simTiledORM1
476  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[4] # M5
477 }
478 
479 physics.producers.simTiledORM6: {
480  @table::physics.producers.simTiledORM1
481  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[5] # M6
482 }
483 
484 physics.producers.simTiledORM3O3: {
485  @table::physics.producers.simTiledORM1
486  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[2] # M3O3
487 }
488 
489 physics.producers.simTiledORM4O4: {
490  @table::physics.producers.simTiledORM1
491  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[3] # M4O4
492 }
493 
494 physics.producers.simTiledORM5O5: {
495  @table::physics.producers.simTiledORM1
496  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[4] # M5O5
497 }
498 
499 physics.producers.simTiledORM6O6: {
500  @table::physics.producers.simTiledORM1
501  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[5] # M6O6
502 }
503 
504 physics.producers.simTiledORS3: {
505  @table::physics.producers.simTiledORM1
506  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[6] # S3
507 }
508 
509 physics.producers.simTiledORS5: {
510  @table::physics.producers.simTiledORM1
511  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[7] # S5
512 }
513 
514 physics.producers.simTiledORS8: {
515  @table::physics.producers.simTiledORM1
516  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[8] # S8
517 }
518 
519 physics.producers.simTiledORS10: {
520  @table::physics.producers.simTiledORM1
521  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[9] # S10
522 }
523 
524 physics.producers.simTiledORS15: {
525  @table::physics.producers.simTiledORM1
526  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[10] # S15
527 }
528 
529 physics.producers.simSlidingORM1: {
530  @table::physics.producers.simTiledORM1
531  TriggerGatesTag: trigslidewindowOR
532 }
533 
534 physics.producers.simSlidingORM2: {
535  @table::physics.producers.simSlidingORM1
536  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[1] # M2
537 }
538 
539 physics.producers.simSlidingORM3: {
540  @table::physics.producers.simSlidingORM1
541  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[2] # M3
542 }
543 
544 physics.producers.simSlidingORM4: {
545  @table::physics.producers.simSlidingORM1
546  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[3] # M4
547 }
548 
549 physics.producers.simSlidingORM5: {
550  @table::physics.producers.simSlidingORM1
551  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[4] # M5
552 }
553 
554 physics.producers.simSlidingORM6: {
555  @table::physics.producers.simSlidingORM1
556  Pattern: @local::SlidingWindowTriggerPatternsSingleWindow[5] # M6
557 }
558 
559 physics.producers.simSlidingORM3O3: {
560  @table::physics.producers.simSlidingORM1
561  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[2] # M3O3
562 }
563 
564 physics.producers.simSlidingORM4O4: {
565  @table::physics.producers.simSlidingORM1
566  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[3] # M4O4
567 }
568 
569 physics.producers.simSlidingORM5O5: {
570  @table::physics.producers.simSlidingORM1
571  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[4] # M5O5
572 }
573 
574 physics.producers.simSlidingORM6O6: {
575  @table::physics.producers.simSlidingORM1
576  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[5] # M6O6
577 }
578 
579 physics.producers.simSlidingORS3: {
580  @table::physics.producers.simSlidingORM1
581  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[6] # S3
582 }
583 
584 physics.producers.simSlidingORS5: {
585  @table::physics.producers.simSlidingORM1
586  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[7] # S5
587 }
588 
589 physics.producers.simSlidingORS8: {
590  @table::physics.producers.simSlidingORM1
591  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[8] # S8
592 }
593 
594 physics.producers.simSlidingORS10: {
595  @table::physics.producers.simSlidingORM1
596  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[9] # S10
597 }
598 
599 physics.producers.simSlidingORS15: {
600  @table::physics.producers.simSlidingORM1
601  Pattern: @local::SlidingWindowTriggerPatternsWindowPair[10] # S15
602 }
603 
604 
605 # ------------------------------------------------------------------------------
606 outputs: {
607 
608  rootoutput: {
609 
610  @table::icarus_rootoutput # from rootoutput_icarus.fcl
611 
612  # each entry is "class_label_instance_process"
613  outputCommands: [
614  "drop *",
615  "keep simb::MCTruths_*_*_*",
616  "keep simb::MCFluxs_*_*_*",
617  "keep simb::MCFluxsimb::MCTruthvoidart::Assns_*_*_*",
618  "keep simb::GTruths_*_*_*",
619  "keep simb::GTruthsimb::MCTruthvoidart::Assns_*_*_*",
620  "keep simb::MCParticles_largeant__G4",
621  "keep simb::MCParticlesimb::MCTruthsim::GeneratedParticleInfoart::Assns_largeant__G4",
622  "keep sim::SimEnergyDeposits_largeant_*_G4",
623  # "keep sim::SimPhotonss_largeant__G4", # enable for optical efficiency studies
624  "keep *_opdaq_*_DetSim",
625  "keep *_*_*_Trigger"
626  ]
627  } # rootoutput
628 
629 } # outputs
630 
631 
632 # ------------------------------------------------------------------------------
633 # add debug output to its own file
634 #
635 services.message.destinations.TriggerThresholdLog: {
636  type: file
637  filename: "TriggerThresholds.log"
638  threshold: DEBUG
639  categories: {
640  DiscriminatePMTwaveforms: { limit: -1 }
641  default: { limit: 0 }
642  }
643 } # services.messages.destinations.TriggerThresholdLog
644 
645 services.message.destinations.LVDSORLog: {
646  type: file
647  filename: "LVDS-OR.log"
648  threshold: DEBUG
649  categories: {
650  LVDSgatesOR: { limit: -1 }
651  default: { limit: 0 }
652  }
653 } # services.messages.destinations.LVDSORLog
654 
655 services.message.destinations.SlidingWindowORLog: {
656  type: file
657  filename: "SlidingWindowTrigger-OR.log"
658  threshold: DEBUG
659  categories: {
660  SlidingWindowTriggerOR: { limit: -1 }
661  default: { limit: 0 }
662  }
663 } # services.messages.destinations.SlidingWindowORLog
664 
665 
666 services.message.destinations.SlidingORplotsLog: {
667  type: file
668  filename: "SlidingWindowTriggerEfficiency_Count_Plots-OR.log"
669  threshold: DEBUG
670  categories: {
671  SlidingWindowTriggerEfficiencyPlotsOR: { limit: -1 }
672  SlidingWindowTriggerEfficiencyPlotsOR_WindowMapManager: { limit: -1 }
673  default: { limit: 0 }
674  }
675 } # services.messages.destinations.SlidingORplotsLog
676 
677 
678 services.message.destinations.SlidingORsimLog: {
679  type: file
680  filename: "SlidingWindowTriggerSimulationOR.log"
681  threshold: DEBUG
682  categories: {
683  SlidingWindowTriggerSimulationOR: { limit: -1 }
684  SlidingWindowTriggerSimulationOR_WindowMapManager: { limit: -1 }
685  SlidingWindowTriggerSimulationOR_WindowMapManager_Extractor: { limit: -1 }
686  default: { limit: 0 }
687  }
688 } # services.messages.destinations.SlidingORsimLog
689 
690 
691 # ------------------------------------------------------------------------------
692 # --- Configuration override guide
693 # ------------------------------------------------------------------------------
694 #
695 # The default values of the trigger configuration are in one way or the other
696 # coming from `trigger_icarus.fcl`.
697 #
698 
699 # ------------------------------------------------------------------------------
700 # The "trigger builder" algorithm performs the discrimination and generates the
701 # gates.
702 #
703 
704 # Each time the waveform is beyond the set ADC threshold, a gate is opened for
705 # a certain time, that is the duration in microseconds set here:
706 
707 # physics.producers.discrimopdaq.TriggerGateBuilder.GateDuration: @local::icarus_fixedtriggergate.GateDuration
708 
709 
710 # ------------------------------------------------------------------------------
711 # Channels are combined in pairs. Pairing is fixed by cabling the PMT readout
712 # boards to the PMTs. Some channels are special and are left alone.
713 #
714 # The pattern is set here:
715 #
716 
717 # physics.producers.lvdsgatesOR.ChannelPairing: @local::icarus_trigger_channel_pairings
718 
719 # ------------------------------------------------------------------------------
720 
BEGIN_PROLOG BeamGateDuration pmtthr physics producers trigtilewindowORS Thresholds
BEGIN_PROLOG triggeremu_data_config_icarus settings PMTADCthresholds sequence::icarus_stage0_multiTPC_TPC physics sequence::icarus_stage0_EastHits_TPC physics sequence::icarus_stage0_WestHits_TPC physics producers purityana0 caloskimCalorimetryCryoE physics caloskimCalorimetryCryoW physics sequence::physics pathW services
echo $PWD find $PWD name *fcl xargs perl wapi e s & MemoryTracker
BEGIN_PROLOG SlidingWindowTriggerPatterns
process_name drop raw::OpDetWaveforms_DataApr2016RecoStage1_saturation_ * physics
BEGIN_PROLOG LVDSsignalWidth
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows EnabledWindowsSlidingE
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows END_PROLOG lvdsgatesOR
BEGIN_PROLOG icarus_trigger_channel_pairings
BEGIN_PROLOG GateDuration
second seconds
Alias for common language habits.
Definition: spacetime.h:88
BEGIN_PROLOG missing_pmt_channels
BEGIN_PROLOG SlidingWindowTriggerPatternsSingleWindow
BEGIN_PROLOG BNB_settings
BEGIN_PROLOG triggeremu_data_config_icarus settings sequence::triggeremu_data_config_icarus settings PMTADCthresholds CombinationMode
BEGIN_PROLOG triggeremu_data_config_icarus settings sequence::triggeremu_data_config_icarus settings PMTADCthresholds sequence::triggeremu_data_config_icarus settings PMTADCthresholds WindowSize
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows END_PROLOG trigtilewindowOR
physics producers discrimopdaq OpticalWaveforms
BEGIN_PROLOG triggeremu_data_config_icarus settings PMTADCthresholds sequence::icarus_stage0_multiTPC_TPC physics sequence::icarus_stage0_EastHits_TPC physics sequence::icarus_stage0_WestHits_TPC physics producers purityana0 module_type
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows END_PROLOG simTiledORM1
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows EnabledWindowsW
BEGIN_PROLOG triggeremu_data_config_icarus settings sequence::triggeremu_data_config_icarus settings PMTADCthresholds sequence::triggeremu_data_config_icarus settings PMTADCthresholds sequence::triggeremu_data_config_icarus settings PMTADCthresholds Pattern
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows END_PROLOG discrimopdaq
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows EnabledWindowsSlidingW
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows EnabledWindowsE
BEGIN_PROLOG sequence::SlidingWindowTriggerPatternsOppositeWindows END_PROLOG process_name