1 # detsimmodules_dune.fcl
7 # This FCL prolog file holds a minimal default configuration for the
8 # DetSim module and configuration options for the services used by that
11 # See dunetpc/fcl/dune35t/detsim/standard_detsim_dune35t for top-level
12 # FCL that uses this configuration.
14 #include "detsimmodules.fcl"
18 #***********************************************************************
23 module_type: "SimWireDUNE"
24 SimChannelLabel: "largeant"
29 KeepEmptyChannels: false
30 AdcSimulator: "adcsim_ideal"
33 #***********************************************************************
35 # SimChannelExtractService converts GEANT output to TPC signals.
37 # Simple single-phase extractor.
39 service_provider: GenericSimChannelExtractService
42 # Signal extractor service for dune dual-phase detector
44 service_provider: DPhaseSimChannelExtractService
47 # Single-phase extractor with special handling of signal near and beyond
48 # TPC active boundaries.
50 service_provider: Dune35tSimChannelExtractService
51 FractHorizGapUCollect: [ 0.1, 0.0 ]
52 FractHorizGapUMiss: [ 0.8, 0.0 ]
53 FractHorizGapVCollect: [ 0.1, 0.0 ]
54 FractHorizGapVMiss: [ 0.8, 0.0 ]
55 FractHorizGapZMiss: [ 0.8, 0.0 ]
56 FractUUCollect: [ 0.5, 0.0 ]
57 FractUUMiss: [ 0.2, 0.0 ]
58 FractUVCollect: [ 0.1, 0.0 ]
59 FractUVMiss: [ 0.2, 0.0 ]
60 FractVUCollect: [ 0.5, 0.0 ]
61 FractVUMiss: [ 0.2, 0.0 ]
62 FractVVCollect: [ 0.1, 0.0 ]
63 FractVVMiss: [ 0.2, 0.0 ]
64 FractVertGapUCollect: [ 0.1, 0.0 ]
65 FractVertGapUMiss: [ 0.8, 0.0 ]
66 FractVertGapVCollect: [ 0.1, 0.0 ]
67 FractVertGapVMiss: [ 0.8, 0.0 ]
68 FractVertGapZMiss: [ 0.8, 0.0 ]
69 FractZUMiss: [ 0.2, 0.0 ]
70 FractZVMiss: [ 0.2, 0.0 ]
73 #***********************************************************************
75 FELIXFileName: "protoDUNETPCChannelMap_FELIX_v4.txt"
76 FileName: "protoDUNETPCChannelMap_RCE_v4.txt"
78 SSPFileName: "protoDUNESSPChannelMap_v1.txt"
79 service_type: "PdspChannelMapService"
83 service_provider: ShapedCohProtoDUNENoiseService
85 ####################################
86 ## Wire noise (incoherent noise generated according to the FT of the shaper)
87 ####################################
88 collection_plane_noise: 3.80
89 induction_plane_noise: 5
90 collection_plane_noise_rms: 0.9
91 induction_plane_noise_rms: 1
93 ## Change if you touch the electronic_shaper!!
94 amplitude_multiplicator_induction: 50.51
95 amplitude_multiplicator_collection: 46
97 ####################################
98 ## Coherent noise (FEMB-wise sines)
99 ####################################
100 random_phase_noise: true
105 # ADC for the amplitude
108 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB1
109 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB2
110 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB3
111 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB4
112 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB5
113 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB6
114 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB7
115 [ 200, 3000, 4000, 12000, 31000, 42000 ], # FEMB8
116 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB9
117 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB10
118 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB11
119 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB12
120 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB13
121 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB14
122 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB15
123 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB16
124 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB17
125 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB18
126 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ], # FEMB19
127 [ 200, 3000, 4000, 12000, 31000, 42000, 53200, 120000, 330000 ] # FEMB20
131 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB1
132 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB2
133 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB3
134 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB4
135 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB5
136 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB6
137 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB7
138 [ 1, 0.2, 2, 1, 1.1, 1.2 ], # FEMB8
139 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB9
140 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB10
141 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB11
142 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB12
143 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB13
144 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB14
145 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB15
146 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB16
147 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB17
148 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB18
149 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ], # FEMB19
150 [ 1, 0.2, 2, 1, 1.1, 1.2, .8, 1.2, 3 ] # FEMB20
154 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB1
155 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB2
156 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB3
157 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB4
158 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB5
159 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB6
160 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB7
161 [ 0, 0, 0, 0, 0, 0, 0 ], # FEMB8
162 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB9
163 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB10
164 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB11
165 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB12
166 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB13
167 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB14
168 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB15
169 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB16
170 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB17
171 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB18
172 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ], # FEMB19
173 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ] # FEMB20
177 ####################################
178 ## HV noise (sine wave moving everything altogether)
179 ####################################
181 HV1_Frq: [ 50, 3000 ]
186 # ChannelNoiseService adds noise to channel-tick bins.
188 # Option 1 from the old DetSim module.
190 service_provider: ExponentialChannelNoiseService
203 NoiseArrayPoints: 1000
207 # Option 2 from the old DetSim module.
209 service_provider: WhiteChannelNoiseService
212 # Tune from October 2016.
213 # See D. Adams talk at the 26oct 35t sim/reco meeting.
214 # Option 1 from the old DetSim module.
216 service_provider: ExponentialChannelNoiseService
229 NoiseArrayPoints: 1000
233 # Tune from August 2018. Based on protoDUNE run 3775.
234 # Requires dunetpc v07_05_00 or later.
235 # See https://cdcvs.fnal.gov/redmine/issues/20621.
236 pdsp_chnoiseAug2018: {
237 service_provider: ExponentialChannelNoiseService
250 NoiseArrayPoints: 1000
254 #Configure realistic noise service for DP detectors based on the 311 data
255 #A.Scarpelli andrea.scarpelli@cern.ch November 2017
256 #NB: Hardcoded unrotated geometry:
259 service_provider: DPhaseRealisticNoiseService
260 NoiseModel: "$MRB_SOURCE/dunetpc/dune/DetSim/NoiseModels/729-0_fft_mirror.root"
261 RandomizeX: 15.0 #amplitude randomization sigma
262 RandomizeY: 15.0 #amplitude randomization sigma
263 Smooth: 1000 #smoothing factor when mirroring
264 SetFirst0: false #set first bin of the fft model to 0
265 SetBaseline: false #if true, baseline added to real noise model
266 NoiseArrayPoints: 1000 #number of pre-generated waveforms
267 OldNoiseIndex: false #From ExponentialChannelNoiseService. Keep false
271 service_provider: DPhaseCoherentNoiseService
272 NoiseModel: "$MRB_SOURCE/dunetpc/dune/DetSim/NoiseModels/729-0-model-fft.root"
273 AmplitudeCut: 50 #select frequencies above this threshold
274 Normalization: 1 #amplitude normalizations
275 Randomize: [ 1, 1 ] #rms amplitude ( different for every channel and frequency )
276 PhaseShift: [ -1, 1 ] #phase shift per group of channels in radiants
277 ChannelGroup: [ 0, 320, 1280 ] #list here the first channel of every significant correlation pattern
278 InchoerentNoise: [ 0.7, 1.1, 0.7, 1.1 ] #rms and sigma of a small incohrent noise ( or very high frequency )
279 NumberOfPhases: 1000 #number of random phases array to produce
280 LogLevel: 0 #Verbosity level
284 service_provider: ProtoDUNEChannelNoiseService
291 NoiseArrayPoints: 1000
299 #***********************************************************************
302 # PedestalAdditionService adds pedestals to signals.
304 # Takes pedestal mean and RMS and from the DetPedestalService provider.
305 # Incoherent noise is added with Gaussian sigma = NoiseScale*RMS.
307 service_provider: ProvidedPedestalAdditionService
311 #***********************************************************************
313 # AdcDistortService adds distortions to the digitized signals.
315 # Add 35-ton stuck bits.
317 service_provider: StuckBitAdcDistortionService
318 StuckBitsOverflowProbHistoName: "pCorrFracOverflowVsInputLsbCell"
319 StuckBitsProbabilitiesFname: "ADCStuckCodeProbabilities35t/output_produceDcScanSummaryPlots_20150827_coldTest_0p1to1p4_step0p0010.root"
320 StuckBitsUnderflowProbHistoName: "pCorrFracUnderflowVsInputLsbCell"
323 #***********************************************************************
325 # AdcSuppressService indicates which channel-tick bins should be
326 # ignored (i.e. zero-suppressed).
330 service_provider: FixedZeroSuppressService
333 # Simple window supression. Same as the old module.
335 service_provider: Legacy35tZeroSuppressService
339 SuppressStickyBits: false
342 # Algorithm developed for use with the 35-ton detector with original
345 service_provider: Dune35tZeroSuppressService
355 # Algorithm developed for use with the 35-ton detector with high
358 service_provider: Dune35tZeroSuppressService
368 #***********************************************************************
370 # AdcCompressService applies supression and converts digititzed signals
371 # to the final raw data format.
373 # Replaces suppressed bins with value Zero.
374 # Use this to effectively skip compression.
376 service_provider: ReplaceCompressService
380 # Larsoft block formatting. This removes the suppressed bins.
382 service_provider: "LarsoftHuffmanCompressService"
387 # Larsoft block formatting with Larsoft Huffman compression.
389 service_provider: "LarsoftHuffmanCompressService"
394 #***********************************************************************
395 # Below are configurations for the old (and soon to be obsolete) DetSim
396 # modules. These can be removed when the old modules
397 # SimWireDUNE35t_module.cc and SimWireDUNE10kt_module.cc are dropped.
398 #***********************************************************************
402 module_type: "SimWireDUNE10kt"
403 DriftEModuleLabel: "largeant"
404 NoiseFactU: 0.0349 # Noise Scale for U plane. Reset by DLA 26apr16.
405 NoiseWidthU: 2000 #Exponential Noise width (kHz) for U plane
406 LowCutoffU: 7.5 #Low frequency filter cutoff (kHz) for U plane
407 NoiseFactV: 0.0349 #Noise Scale for V plane, should produce RMS of 2.5 ADC counts. Reset by DLA 26apr16.
408 NoiseWidthV: 2000 #Exponential Noise width (kHz) for V plane, should produce RMS of 2.5 ADC counts
409 LowCutoffV: 7.5 #Low frequency filter cutoff (kHz) for V plane
410 NoiseFactZ: 0.0349 #Noise Scale for Z plane, should produce RMS of 2.5 ADC counts. Reset by DLA 26apr16.
411 NoiseWidthZ: 2000 #Exponential Noise width (kHz) for Z plane
412 LowCutoffZ: 7.5 #Low frequency filter cutoff (kHz) for Z plane
413 CompressionType: "ZeroSuppression" #could also be none
414 #CompressionType: "" #could also be none
415 ZeroThreshold: 10 #Threshold for zero suppression
416 NearestNeighbor: 10 #Maximum distance between hits above threshold before they are separated into different blocks
417 NeighboringChannels: 0 #Number of neighboring channels on either side allowed to influence zero suppression
418 NoiseArrayPoints: 1000 #number of points in noise array
419 NoiseOn: 1 #1 for noise on, 0 for noise off
420 NoiseModel: 1 #1 for original model, 2 for a model similar to uBooNE
422 CollectionPed: 400 #ADC baseline for coll plane
423 CollectionPedRMS: 0 #ADC baseline RMS for coll plane
424 InductionPed: 2048 #ADC baseline for ind plane
425 InductionPedRMS: 0 #ADC baseline RMS for ind plane
427 CollectionCalibPed: 400 #Assumed measured value for coll plane pedestal
428 CollectionCalibPedRMS: 0 #Assumed measured value for coll plane pedestal RMS
429 InductionCalibPed: 2048 #Assumed measured value for ind plane pedestal
430 InductionCalibPedRMS: 0 #Assumed measured value for ind plane pedestal RMS
432 PedestalOn: true #add pedestal value to ADC vector
435 SaveEmptyChannel: false #if channel's ADC vector is entirely full of zeros, save it in RawDigit collection (true) or discard (false)
436 SimStuckBits: false #simulate stuck bits
438 StuckBitsProbabilitiesFname: "ADCStuckCodeProbabilities35t/output_produceDcScanSummaryPlots_20150827_coldTest_0p1to1p4_step0p0010.root"
439 StuckBitsOverflowProbHistoName: "pCorrFracOverflowVsInputLsbCell"
440 StuckBitsUnderflowProbHistoName: "pCorrFracUnderflowVsInputLsbCell"
442 # random initial guesses for charge inefficiency and wrong-type collection on the induction-plane wires
443 # the second number is for the gap with the deflector
445 FractUUCollect: [ 0.5, 0 ] # fraction of charge that collects on U (non-transparency) when charge drifts over the comb holding U wires
446 FractUVCollect: [ 0.1, 0 ] # fraction of charge that collects on U (non-transparency) when charge drifts over the comb holding V wires
447 FractVUCollect: [ 0.5, 0 ] # fraction of charge that collects on V (non-transparency) when charge drifts over the comb holding U wires
448 FractVVCollect: [ 0.1, 0 ] # fraction of charge that collects on V (non-transparency) when charge drifts over the comb holding V wires
449 FractUUMiss: [ 0.2, 0 ] # fraction of charge that gets missed on U when charge drifts over the comb holding U
450 FractUVMiss: [ 0.2, 0 ] # fraction of charge that gets missed on U when charge drifts over the comb holding V
451 FractVUMiss: [ 0.2, 0 ] # fraction of charge that gets missed on V when charge drifts over the comb holding U
452 FractVVMiss: [ 0.2, 0 ] # fraction of charge that gets missed on V when charge drifts over the comb holding V
453 FractZUMiss: [ 0.2, 0 ] # fraction of charge that gets missed on Z (collection) when charge drifts over the comb holding U
454 FractZVMiss: [ 0.2, 0 ] # fraction of charge that gets missed on Z (collection) when charge drifts over the comb holding V
455 FractHorizGapUMiss: [ 0.8, 0 ] # fraction of charge in the horizontal gap that is missing on U
456 FractVertGapUMiss: [ 0.8, 0 ] # fraction of charge in the horizontal gaps that is missing on U
457 FractHorizGapVMiss: [ 0.8, 0 ] # fraction of charge in the horizontal gap that is missing on V
458 FractVertGapVMiss: [ 0.8, 0 ] # fraction of charge in the horizontal gaps that is missing on V
459 FractHorizGapZMiss: [ 0.8, 0 ] # fraction of charge in the horizontal gap that is missing on Z
460 FractVertGapZMiss: [ 0.8, 0 ] # fraction of charge in the horizontal gaps that is missing on Z
461 FractHorizGapUCollect: [ 0.1, 0 ] # fraction of charge in the horizontal gap that collects on U
462 FractHorizGapVCollect: [ 0.1, 0 ] # fraction of charge in the horizontal gap that collects on V
463 FractVertGapUCollect: [ 0.1, 0 ] # fraction of charge in the vertical gap that collects on U
464 FractVertGapVCollect: [ 0.1, 0 ] # fraction of charge in the vertical gap that collects on V
467 dunefd_simwireana: @local::standard_simwireana
468 dunefd_wienerfilterana: @local::standard_wienerfilterana
471 # For now treat the other dune geometries like FD
473 dune35t_simwire: @local::dunefd_simwire
474 dune35t_simwire.PedestalOn: true #add pedestal value to ADC vector
475 dune35t_simwire.CollectionPed: 500 #ADC baseline for coll plane
476 dune35t_simwire.CollectionPedRMS: 0.0 #ADC baseline RMS for coll plane
477 dune35t_simwire.InductionPed: 1800 #ADC baseline for ind plane
478 dune35t_simwire.InductionPedRMS: 0.0 #ADC baseline RMS for ind plane
479 dune35t_simwire.CollectionCalibPed: 500 #Assumed measured value for coll plane pedestal
480 dune35t_simwire.CollectionCalibPedRMS: 0.0 #Assumed measured value for coll plane pedestal RMS
481 dune35t_simwire.InductionCalibPed: 1800 #Assumed measured value for ind plane pedestal
482 dune35t_simwire.InductionCalibPedRMS: 0.0 #Assumed measured value for ind plane pedestal RMS
483 #dune35t_simwire.CompressionType: "none" #no data compression for noise test
485 dune35t_simwire.ZeroThreshold: 5
486 dune35t_simwire.NoiseModel: 1
487 dune35t_simwire.NoiseWidthU: 2000 # If turn NoiseModel to 1 use these numbers..
488 dune35t_simwire.NoiseWidthV: 2000 # If turn NoiseModel to 1 use these numbers..
489 dune35t_simwire.NoiseWidthZ: 2000 # If turn NoiseModel to 1 use these numbers..
490 dune35t_simwire.NoiseFactU: 0.05 # Should produce RMS of 2.5 ADC counts
491 dune35t_simwire.NoiseFactV: 0.05 # Should produce RMS of 2.5 ADC counts
492 dune35t_simwire.NoiseFactZ: 0.05 # Should produce RMS of 2.5 ADC counts
493 #dune35t_simwire.NoiseFactU: 0.1 # Should produce RMS of 5 ADC counts
494 #dune35t_simwire.NoiseFactV: 0.1 # Should produce RMS of 5 ADC counts
495 #dune35t_simwire.NoiseFactZ: 0.1 # Should produce RMS of 5 ADC counts
496 dune35t_simwire.LowCutoffU: 7.5 # If turn NoiseModel to 1 use these numbers..
497 dune35t_simwire.LowCutoffV: 7.5 # If turn NoiseModel to 1 use these numbers..
498 dune35t_simwire.LowCutoffZ: 7.5 # If turn NoiseModel to 1 use these numbers..
499 dune35t_simwire.SimStuckBits: false # Simulate stuck bits
500 dune35t_simwireana: @local::dunefd_simwireana
501 dune35t_wienerfilterana: @local::dunefd_wienerfilterana
502 dune35t_simwire.module_type: "SimWireDUNE35t"
506 module_type: "SimCounter35t"
507 LArGeantModuleLabel: "largeant"
509 BSUTriggerThreshold: 0.5 # MeV
510 TSUTriggerThreshold: 0.25 # MeV
511 TriggerEfficiency: 1.0
512 # below changed on Feb. 1 2016 to match data . .
513 # ClockSpeedCounter: 31.25 # MHz
514 ClockSpeedCounter: 64.0 # MHz
515 CombinedTimeDelay: 160 # ns. cable length delay + various electronics delays