1 # addnoise_findprim_daqsimanas.fcl
3 # Read in (presumably noise-free) waveforms, add noise and pedestals,
4 # then find trigger primitives on the (now noisy) waveforms, and save
5 # the trigger primitives (as "Hits") to an output TTree.
7 # Any number of trigger primitive finders can be run: useful for
8 # running the same finder with multiple parameter settings, for
9 # example. The output of each trigger primitive finder should be
10 # connected to a DaqSimAna analyzer
14 # This is the generic trigger primitive finder call. To make your own,
15 # add another call to "@local::trigprimpass1" to the producers list,
16 # and modify its settings later on
19 module_type: "TriggerPrimitiveFinder"
22 tool_type: "TriggerPrimitiveFinderPass1"
27 #include "DAQSimAna.fcl"
28 #include "standard_detsim_dune10kt_1x2x6.fcl"
32 services: @local::dunefd_simulation_services
33 services.TFileService: { fileName: "DAQSimAna_plus_trigprim_multithreshold.root" }
34 services.TimeTracker: {}
35 services.MemoryTracker: { } # default is one
36 services.RandomNumberGenerator: {} #ART native random number generator
37 // services.FileCatalogMetadata: @local::art_file_catalog_mc
38 services.NuRandomService: @local::per_event_NuRandomService # seedservice.fcl
39 services.message: @local::dune_message_services_prod
40 #source is now a root file
42 module_type: RootInput
43 maxEvents: -1 # Number of events to create
46 # Define and configure some modules to do work on each event.
47 # First modules are defined; they are scheduled later.
48 # Modules are grouped by type.
52 module_type: "SimWireDUNE"
53 SimChannelLabel: "largeant"
58 KeepEmptyChannels: true
59 AdcSimulator: "adcsim_ideal"
60 UseRawDigitInput: true
61 RawDigitInputLabel: "daq"
64 # You can add any number of trigger primitive finders here. Make
65 # sure each one has a distinct name, and has a corresponding
66 # daqsimana analyzer (otherwise you won't get a corresponding
67 # TTree in the output file. Also make sure to add it to the "simulate" list below
68 trigprim600: @local::trigprimpass1
69 trigprim800: @local::trigprimpass1
70 trigprim1000: @local::trigprimpass1
71 trigprim1200: @local::trigprimpass1
72 trigprim1400: @local::trigprimpass1
73 trigprim1600: @local::trigprimpass1
74 trigprim1800: @local::trigprimpass1
76 rns: { module_type: "RandomNumberSaver" }
81 # Create a DAQSimAna for each trigger primitive finders. Make
82 # sure to add each one to the "ana" list below
83 daqanatrigprim600: @local::standard_daqsimana
84 daqanatrigprim800: @local::standard_daqsimana
85 daqanatrigprim1000: @local::standard_daqsimana
86 daqanatrigprim1200: @local::standard_daqsimana
87 daqanatrigprim1400: @local::standard_daqsimana
88 daqanatrigprim1600: @local::standard_daqsimana
89 daqanatrigprim1800: @local::standard_daqsimana
91 module_type: "WaveformsToTree"
97 simulate: [ rns, simwire, trigprim600, trigprim800, trigprim1000, trigprim1200, trigprim1400, trigprim1600, trigprim1800 ]
98 ana: [ daqanatrigprim600, daqanatrigprim800, daqanatrigprim1000, daqanatrigprim1200, daqanatrigprim1400, daqanatrigprim1600, daqanatrigprim1800, waveformstotree ]
100 trigger_paths: [simulate]
105 # Modify the settings of each of the trigger primitive finders. If you
106 # want to use a different trigger primitive finder class, set
107 # "physics.producers.<itemname>.finder.tool_type: MyNewTriggerPrimitiveFinderTool"
108 physics.producers.trigprim600.finder.Threshold: 600
109 physics.producers.trigprim800.finder.Threshold: 800
110 physics.producers.trigprim1000.finder.Threshold: 1000
111 physics.producers.trigprim1200.finder.Threshold: 1200
112 physics.producers.trigprim1400.finder.Threshold: 1400
113 physics.producers.trigprim1600.finder.Threshold: 1600
114 physics.producers.trigprim1800.finder.Threshold: 1800
116 # Set the HitLabel to make sure each DaqAnaSim reads hits from its
117 # corresponding TriggerPrimitiveFinder
118 physics.analyzers.daqanatrigprim600.HitLabel: "trigprim600"
119 physics.analyzers.daqanatrigprim600.MARLEYLabel: "marley"
121 physics.analyzers.daqanatrigprim800.HitLabel: "trigprim800"
122 physics.analyzers.daqanatrigprim800.MARLEYLabel: "marley"
124 physics.analyzers.daqanatrigprim1000.HitLabel: "trigprim1000"
125 physics.analyzers.daqanatrigprim1000.MARLEYLabel: "marley"
127 physics.analyzers.daqanatrigprim1200.HitLabel: "trigprim1200"
128 physics.analyzers.daqanatrigprim1200.MARLEYLabel: "marley"
130 physics.analyzers.daqanatrigprim1400.HitLabel: "trigprim1400"
131 physics.analyzers.daqanatrigprim1400.MARLEYLabel: "marley"
133 physics.analyzers.daqanatrigprim1600.HitLabel: "trigprim1600"
134 physics.analyzers.daqanatrigprim1600.MARLEYLabel: "marley"
136 physics.analyzers.daqanatrigprim1800.HitLabel: "trigprim1800"
137 physics.analyzers.daqanatrigprim1800.MARLEYLabel: "marley"
139 # =====================================================================
140 # You probably won't need to change anything below here
142 # Shut up the backtracker
143 services.message.destinations.LogStandardOut.categories.BackTracker.limit: 0
144 services.message.destinations.LogStandardError.categories.BackTracker.limit: 0
146 # DetSim services. These are used by SimWire to add noise and
147 # pedestals to the incoming (noise-free) waveforms
148 services.SimChannelExtractService: @local::scxgeneric
149 services.ChannelNoiseService: @local::chnoiseold
150 services.PedestalAdditionService: @local::padprovided
151 services.AdcDistortService: @local::stuckbits
152 services.AdcSuppressService: @local::zsnone
153 services.AdcCompressService: @local::cmpreplace
154 services.DetPedestalService: @local::dune_fixedpeds