dataprep_dune.fcl
Go to the documentation of this file.
1 # dataprep_dune.fcl
2 #
3 # David Adams
4 # August 2016
5 #
6 # This holds all the prolog for dataprep.
7 
8 BEGIN_PROLOG
9 
10 #***********************************************************************
11 
12 # AdcChannelDataCopyService copies AdcChannelData.
13 
14 adccopy: {
15  service_provider: ConfigurableAdcChannelDataCopyService
16  LogLevel: 1
17  CopyChannel: true
18  CopyPedestal: true
19  CopyRaw: false
20  CopySamples: true
21  CopyFlags: false
22  CopyRois: false
23  CopyDigit: true
24  CopyWire: false
25  CopyDigitIndex: true
26  CopyWireIndex: false
27 }
28 
29 #***********************************************************************
30 
31 # RawDigitExtractService pulls ADC signals (raw:RawDigit) out of the lar
32 # container, converts to float, flags bad channels and subtracts pedestals.
33 
34 rdx_std: {
35  service_provider: StandardRawDigitExtractService
36  LogLevel: 1
37  DigitReadTool: digitReader
38  PedestalOption: 1
39  FlagStuckOff: false
40  FlagStuckOn: false
41 }
42 
43 rdx_35tdata: {
44  service_provider: StandardRawDigitExtractService
45  LogLevel: 1
46  DigitReadTool: digitReader
47  PedestalOption: 1
48  FlagStuckOff: true
49  FlagStuckOn: true
50 }
51 
52 #***********************************************************************
53 
54 # AdcMitigationService is used to mitigate ADC signals, e.g.
55 # interpolate between good values to deal with stuck bits.
56 
57 adcmit_dune35t: {
58  service_provider: InterpolatingAdcMitigationService
59  LogLevel: 1
60  SkipUnderflows: true
61  SkipOverflows: true
62  MaxConsecutiveSamples: 5
63  MaxConsecutiveFlag: 0
64 }
65 
66 #***********************************************************************
67 
68 # AdcSuppressService is used by AdcSuppressSignalFindingService (below).
69 
70 adcsuppress_legacy35t: {
71  service_provider: Legacy35tZeroSuppressService
72  AdcThreshold: 30.0
73  TickRange: 4
74  MinTickGap: 2
75  SuppressStickyBits: false
76 }
77 
78 #***********************************************************************
79 
80 # AdcSuppressSignalFindingService is used to remove noise from ADC signals.
81 
82 # This implementation uses AdcSuppressService.
83 adcsigfind_suppress: {
84  service_provider: AdcSuppressSignalFindingService
85 }
86 
87 #***********************************************************************
88 
89 # AdcNoiseRemovalService is used to remove noise from ADC signals.
90 
91 adcnr_dune35tlegacy: {
92 }
93 
94 adcnr_dunedphase3x1x1: {
95  service_provider: DuneDPhase3x1x1NoiseRemovalService
96  CorrMode: "median" # mean or median
97  DoTwoPassFilter: false
98  BinsToSkip: 2
99  Coherent32: true
100  Coherent32Groups: [] # do all groups if empty list
101  Coherent16: true
102  Coherent16Groups: [6, 7, 16, 17, 18, 19] # do all groups if empty list
103  UseBasicROIForCNR: true
104  RoiStartThreshold: 7
105  RoiEndThreshold: 6
106  RoiPadLow: 8
107  RoiPadHigh: 40
108  Flatten: true
109  FlattenExtrapolate: false
110  LowPassFlt: false
111  LowPassFltSecondPass: false
112  LowPassFltFCut: 0.5
113  LowPassFltExpo: 8
114 }
115 
116 #***********************************************************************
117 
118 # PedestalEvaluationService is used to evaluate pedestals from the
119 # ADC signals.
120 
121 adcped_median: {
122  service_provider: MedianPedestalService
123  LogLevel: 1
124  UseMean: false
125  SkipFlaggedSamples: true
126  SkipSignals: true
127 }
128 
129 adcped_mean: {
130  service_provider: MedianPedestalService
131  LogLevel: 1
132  UseMean: true
133  SkipFlaggedSamples: true
134  SkipSignals: true
135 }
136 
137 #***********************************************************************
138 
139 # AdcDeconvolutionService is used to deconvolute the ADC signals.
140 
141 adcdco_dune35t: {
142  service_provider: DuneDeconvolutionService
143  LogLevel: 1
144 }
145 
146 adcdco_dunefd: @local::adcdco_dune35t
147 
148 adcdco_dunefddphase: {
149  service_provider: DuneDPhaseDeconvolutionService
150  LogLevel: 1
151 }
152 
153 #***********************************************************************
154 
155 # AdcRoiBuildingService is used to define ROIs for the ADC signals.
156 
157 adcroi_dune35t: {
158  service_provider: DuneRoiBuildingService
159  NSigmaStart: 3.0
160  NSigmaEnd: 1.0
161  PadLow: 50
162  PadHigh: 50
163  LogLevel: 1
164 }
165 
166 adcroi_dunefd: @local::adcroi_dune35t
167 
168 adcroi_dunefddphase: {
169  service_provider: DuneDPhaseRoiBuildingService
170  UseFilter: false
171  FltCoeffs: [0.1, 0.75, 0.95]
172  NSigmaStart: 3.0
173  NSigmaEnd: 1.0
174  PadLow: 50
175  PadHigh: 50
176  LogLevel: 1
177 }
178 
179 adcroi_keepall: {
180  service_provider: KeepAllRoiBuildingService
181  LogLevel: 1
182 }
183 
184 #***********************************************************************
185 
186 # AdcWireBuildingService constructs lar outputs (recob::Wire) from ADC
187 # signals.
188 
189 adcwire_std: {
190  service_provider: StandardAdcWireBuildingService
191  LogLevel: 1
192 }
193 
194 #***********************************************************************
195 
196 # RawDigitPrepService is the high level service that uses the above
197 # services to prepare ADC signals including the conversion of
198 # raw::RawDigit to recob::Wire.
199 
200 # Read raw data and subtract pedestals without any other preparation.
201 adcprep_readraw: {
202  service_provider: StandardRawDigitPrepService
203  LogLevel: 1
204  SkipBad: false
205  SkipNoisy: false
206  DoMitigation: false
207  DoEarlySignalFinding: false
208  DoNoiseRemoval: false
209  DoPedestalAdjustment: false
210  DoDeconvolution: false
211  DoROI: false
212  DoWires: false
213  DoIntermediateStates: false
214  DisplayTools: []
215 }
216 
217 # Process simulation using service-based dataprep.
218 adcprep_with_services_sim: {
219  service_provider: StandardRawDigitPrepService
220  LogLevel: 1
221  SkipBad: true
222  SkipNoisy: false
223  DoMitigation: false
224  DoEarlySignalFinding: false
225  DoNoiseRemoval: false
226  DoPedestalAdjustment: false
227  DoDeconvolution: true
228  DoROI: true
229  DoWires: true
230  DoIntermediateStates: false
231  DisplayTools: []
232 }
233 
234 # Process simulation using tool-based dataprep.
235 adcprep_with_tools_sim: {
236  service_provider: ToolBasedRawDigitPrepService
237  LogLevel: 3
238  DoWires: true
239  ToolNames: [
240  "digitReader",
241  "adcSampleFiller",
242  "adcVintageDeconvoluter",
243  "adcThresholdSignalFinder"
244  ]
245  CallgrindToolNames: []
246 }
247 
248 # Process simulation using tool-based dataprep
249 # followed by wirecell service.
250 # Default tool sequence here writes the digits out as wires.
251 adcprep_with_tools_simwc: {
252  service_provider: ToolBasedRawDigitPrepService
253  LogLevel: 3
254  DoWires: true
255  ToolNames: [
256  "digitReader",
257  "adcSampleFiller",
258  "adcKeepAllSignalFinder"
259  ]
260  CallgrindToolNames: []
261 }
262 
263 # Process data using tool-based dataprep.
264 adcprep_with_tools_data: {
265  service_provider: ToolBasedRawDigitPrepService
266  LogLevel: 3
267  DoWires: true
268  ToolNames: [
269  "digitReader",
270  "adcSampleFiller",
271  "adcVintageDeconvoluter",
272  "adcThresholdSignalFinder"
273  ]
274  CallgrindToolNames: []
275 }
276 
277 # Process DP 3x1x1 data.
278 adcprep_dunedphase3x1x1: {
279  service_provider: StandardRawDigitPrepService
280  LogLevel: 1
281  SkipBad: false
282  SkipNoisy: true
283  DoMitigation: false
284  DoEarlySignalFinding: false
285  DoNoiseRemoval: true
286  DoPedestalAdjustment: false
287  DoDeconvolution: true
288  DoROI: true
289  DoWires: true
290  DoIntermediateStates: false
291  DisplayTools: []
292 }
293 
294 # Process 35-ton data
295 adcprep_dune35tdata: {
296  service_provider: StandardRawDigitPrepService
297  LogLevel: 1
298  SkipBad: true
299  SkipNoisy: false
300  DoMitigation: true
301  DoEarlySignalFinding: true
302  DoNoiseRemoval: true
303  DoPedestalAdjustment: false
304  DoDeconvolution: true
305  DoROI: true
306  DoWires: true
307  DoIntermediateStates: false
308  DisplayTools: []
309 }
310 
311 #***********************************************************************
312 
313 # Channel groups.
314 
315 # Process by APA keeping all ROPs.
316 changroup_apa_keepall: {
317  service_provider: GeoApaChannelGroupService
318  LogLevel: 1
319  ApaRops: []
320 }
321 
322 # Process by APA dropping the protoDUNE cryostat-side collection plane.
323 changroup_apa_pd_drop_outer: {
324  service_provider: GeoApaChannelGroupService
325  LogLevel: 1
326  ApaRops: [11, 7]
327 }
328 
329 # Process by APA keeping only the protoDUNE TPC-side collection plane.
330 changroup_apa_pd_tpccoll: {
331  service_provider: GeoApaChannelGroupService
332  LogLevel: 1
333  ApaRops: [ 8, 4]
334 }
335 
336 changroup_rop: {
337  service_provider: GeoRopChannelGroupService
338 }
339 
340 #***********************************************************************
341 
342 # DataPrepModule is the producer that calls RawDigitPrepService
343 
344 # This configuration does not make use of the decoding tool.
345 # Input is raw::RawDigit vector DigitLabel in the event data store.
346 # Use with MC. Can be used with data if the decoder module is called first.
347 producer_adcprep_notool: {
348  module_type: "DataPrepModule"
349  LogLevel: 1
350  DecoderTool: "" # Non-blank reads digits with named tool.
351  DigitLabel: "daq" # Label for input digits if decoder tool is not used
352  TimeStampName: "" # Non-blank writes RDTimeStamps if decoder tool is used
353  OutputDigitName: "" # Non-blank writes digits if decoder tool is used
354  WireName: ""
355  DoAssns: true
356  DoGroups: true
357  ChannelRanges: []
358  BeamEventLabel: ""
359  IntermediateStates: []
360  OnlineChannelMapTool: pd_onlineChannelMapByFemb
361 }
362 
363 # This configuration uses the decoding tool and the old module.
364 # All APAs are decoded in one call to the tool.
365 # Obsolete. Use the byAPA module instead.
366 producer_adcprep_tool_old: {
367  module_type: "DataPrepModule"
368  LogLevel: 1
369  DecoderTool: "pdsp_decoder" # Non-blank reads digits with named tool.
370  DigitLabel: "" # Label for input digits if decoder tool is not used
371  TimeStampName: "dataprep" # Non-blank writes RDTimeStamps if decoder tool is used
372  OutputDigitName: "" # Non-blank writes digits if decoder tool is used
373  WireName: ""
374  DoAssns: true
375  DoGroups: true
376  ChannelRanges: []
377  BeamEventLabel: ""
378  IntermediateStates: []
379  OnlineChannelMapTool: pd_onlineChannelMapByFemb
380 }
381 
382 # This configuration uses the decoding tool and the new byAPA module.
383 # All APAs are decoded in one call to the tool if ChannelGroups = ["all"]
384 # Use ChannelGroups = ["apas"] to process one APA at a time.
385 producer_adcprep_byapa: {
386  module_type: "DataPrepByApaModule"
387  LogLevel: 1
388  DecoderTool: "pdsp_decoder" # Tool that reads digits.
389  OutputTimeStampName: "dataprep" # Non-blank writes digit RDTimeStamps
390  OutputDigitName: "" # Non-blank writes digits
391  OutputWireName: "dataprep" # Non-blank writes wires (processed digits)
392  ChannelGroups: ["apas"]
393  BeamEventLabel: ""
394  KeepChannels: [] # Channels to keep (all if empty).
395  SkipChannels: [] # Channels to skip.
396  SkipEmptyChannels: true # If true, empty channels are not processed and do not produce wires
397  DeltaTickCount: 0.005 # If true, empty channels are not processed and do not produce wires
398  ApaChannelCounts: [2560] # # of channels in each APA. Last value used for later values.
399  OnlineChannelMapTool: pd_onlineChannelMapByFemb
400 }
401 
402 producer_adcprep: @local::producer_adcprep_notool
403 
404 #***********************************************************************
405 
406 END_PROLOG