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