From 73b82b01c7e422202dd8b1f17089473788547968 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 9 Jul 2024 16:29:27 -0500 Subject: [PATCH 01/43] Split signal procesing by cryostat. Enable logging from WireCell. Enable H5IO plugin. --- fcl/reco/Definitions/stage0_icarus_defs.fcl | 34 +++++++++++++++++-- .../Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl | 11 ++++++ .../Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl | 6 ++++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl diff --git a/fcl/reco/Definitions/stage0_icarus_defs.fcl b/fcl/reco/Definitions/stage0_icarus_defs.fcl index c22d2f9a9..249ef4501 100644 --- a/fcl/reco/Definitions/stage0_icarus_defs.fcl +++ b/fcl/reco/Definitions/stage0_icarus_defs.fcl @@ -205,15 +205,21 @@ icarus_stage0_multiTPC_TPC: [ decon1droi, roifinder1d ] -icarus_stage0_multiTPC_2d_TPC: [ decon1droi, +icarus_stage0_multiTPC_2d_TPC_init_E:[ decon1droi, roifinder1d, decon2droiEE, - decon2droiEW, + decon2droiEW + ] + +icarus_stage0_multiTPC_2d_TPC_finish_W:[ decon2droiWE, decon2droiWW, roifinder2d ] +icarus_stage0_multiTPC_2d_TPC: [@sequence::icarus_stage0_multiTPC_2d_TPC_init_E, @sequence::icarus_stage0_multiTPC_2d_TPC_finish_W] + + icarus_stage0_EastHits_TPC: [ gaushit1dTPCEW, gaushit1dTPCEE ] @@ -279,6 +285,16 @@ icarus_stage0_2d_multiTPC: [ @sequence::icarus_stage0_multiTPC_2d_TPC, @sequence::icarus_stage0_WestHits2d_TPC, @sequence::icarus_purity_monitor ] + +icarus_stage0_2d_multiTPC_init_E: [ @sequence::icarus_stage0_multiTPC_2d_TPC_init_E] +icarus_stage0_2d_multiTPC_finish_W: [ @sequence::icarus_stage0_multiTPC_2d_TPC_finish_W, + @sequence::icarus_stage0_EastHits_TPC, + @sequence::icarus_stage0_WestHits_TPC, + @sequence::icarus_stage0_EastHits2d_TPC, + @sequence::icarus_stage0_WestHits2d_TPC, + @sequence::icarus_purity_monitor + ] + icarus_stage0_CRT: [ daqCRT, @@ -346,30 +362,44 @@ icarus_stage0_producers.decon2droi.wcls_main.outputers: icarus_stage0_producers.decon2droi.wcls_main.params.raw_input_label: "daqTPC" icarus_stage0_producers.decon2droi.wcls_main.params.tpc_volume_label: 0 icarus_stage0_producers.decon2droi.wcls_main.params.signal_output_form: "dense" +icarus_stage0_producers.decon2droi.wcls_main.logsinks: ["stdout"] +icarus_stage0_producers.decon2droi.wcls_main.loglevels: ["debug", "pgraph:info"] icarus_stage0_producers.decon2droiEE.wcls_main.inputers: ["wclsRawFrameSource:rfsrc0"] icarus_stage0_producers.decon2droiEE.wcls_main.outputers: ["wclsFrameSaver:spsaver0"] icarus_stage0_producers.decon2droiEE.wcls_main.params.raw_input_label: "daqTPCROI:PHYSCRATEDATATPCEE" icarus_stage0_producers.decon2droiEE.wcls_main.params.tpc_volume_label: 0 icarus_stage0_producers.decon2droiEE.wcls_main.params.signal_output_form: "dense" +icarus_stage0_producers.decon2droiEE.wcls_main.logsinks: ["stdout"] +icarus_stage0_producers.decon2droiEE.wcls_main.loglevels: ["debug", "pgraph:info"] +icarus_stage0_producers.decon2droiEE.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiEE.wcls_main.plugins, "WireCellHio"] icarus_stage0_producers.decon2droiEW.wcls_main.inputers: ["wclsRawFrameSource:rfsrc1"] icarus_stage0_producers.decon2droiEW.wcls_main.outputers: ["wclsFrameSaver:spsaver1"] icarus_stage0_producers.decon2droiEW.wcls_main.params.raw_input_label: "daqTPCROI:PHYSCRATEDATATPCEW" icarus_stage0_producers.decon2droiEW.wcls_main.params.tpc_volume_label: 1 icarus_stage0_producers.decon2droiEW.wcls_main.params.signal_output_form: "dense" +icarus_stage0_producers.decon2droiEW.wcls_main.logsinks: ["stdout"] +icarus_stage0_producers.decon2droiEW.wcls_main.loglevels: ["debug", "pgraph:info"] +icarus_stage0_producers.decon2droiEW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiEW.wcls_main.plugins, "WireCellHio"] icarus_stage0_producers.decon2droiWE.wcls_main.inputers: ["wclsRawFrameSource:rfsrc2"] icarus_stage0_producers.decon2droiWE.wcls_main.outputers: ["wclsFrameSaver:spsaver2"] icarus_stage0_producers.decon2droiWE.wcls_main.params.raw_input_label: "daqTPCROI:PHYSCRATEDATATPCWE" icarus_stage0_producers.decon2droiWE.wcls_main.params.tpc_volume_label: 2 icarus_stage0_producers.decon2droiWE.wcls_main.params.signal_output_form: "dense" +icarus_stage0_producers.decon2droiWE.wcls_main.logsinks: ["stdout"] +icarus_stage0_producers.decon2droiWE.wcls_main.loglevels: ["debug", "pgraph:info"] +icarus_stage0_producers.decon2droiWE.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWE.wcls_main.plugins, "WireCellHio"] icarus_stage0_producers.decon2droiWW.wcls_main.inputers: ["wclsRawFrameSource:rfsrc3"] icarus_stage0_producers.decon2droiWW.wcls_main.outputers: ["wclsFrameSaver:spsaver3"] icarus_stage0_producers.decon2droiWW.wcls_main.params.raw_input_label: "daqTPCROI:PHYSCRATEDATATPCWW" icarus_stage0_producers.decon2droiWW.wcls_main.params.tpc_volume_label: 3 icarus_stage0_producers.decon2droiWW.wcls_main.params.signal_output_form: "dense" +icarus_stage0_producers.decon2droiWW.wcls_main.logsinks: ["stdout"] +icarus_stage0_producers.decon2droiWW.wcls_main.loglevels: ["debug", "pgraph:info"] +icarus_stage0_producers.decon2droiWW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWW.wcls_main.plugins, "WireCellHio"] ### Set up to output ROIs from full waveforms icarus_stage0_producers.roifinder1d.WireModuleLabelVec: ["decon1droi:PHYSCRATEDATATPCWW","decon1droi:PHYSCRATEDATATPCWE","decon1droi:PHYSCRATEDATATPCEW","decon1droi:PHYSCRATEDATATPCEE"] diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl new file mode 100644 index 000000000..ad278d83d --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl @@ -0,0 +1,11 @@ +#include "stage0_run2_wc_icarus_mc.fcl" + +# Run the PMT+CRT stage0, initial TPC and East 2D deconv +physics.path: [ @sequence::icarus_stage0_mc_PMT, + MCDecodeTPCROI, + @sequence::icarus_stage0_2d_multiTPC_init_E, + @sequence::icarus_stage0_mc_crt + ] + +physics.outana: [] + diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl new file mode 100644 index 000000000..c85d0377d --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl @@ -0,0 +1,6 @@ +#include "stage0_run2_wc_icarus_mc.fcl" + +# Run the West 2D deconv and finish TPC stage0 +physics.path: [@sequence::icarus_stage0_2d_multiTPC_finish_W] + +process_name: MCstage0W From f5227dabc4e247b5972f2a225e5536414d8d62a3 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 9 Jul 2024 16:30:02 -0500 Subject: [PATCH 02/43] Disaple outputCommands in stage0 --- .../Stage0/Run2/stage0_run2_icarus_mc.fcl | 14 +++++++------- .../Stage0/Run2/stage0_run2_wc_icarus_mc.fcl | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl index 4de87f414..b27a1f090 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl @@ -21,18 +21,18 @@ physics.path: [ @sequence::icarus_stage0_mc_PMT, ] ## boiler plate... -physics.outana: [ purityinfoana0, purityinfoana1 ] +physics.outana: [ spanaE, spanaW, purityinfoana0, purityinfoana1 ] physics.trigger_paths: [ path ] physics.end_paths: [ outana, streamROOT ] # Drop data products that are no longer needed, but make sure to keep important items! # For example, we need to drop the RawDigits from the detector simulation stage but want to keep the SimChannel info from WireCell... -outputs.rootOutput.outputCommands: ["keep *_*_*_*", - "drop *_daq*_*_*", - "drop *_MCDecodeTPCROI_*_*", - "drop *_decon1droi_*_*", - "drop recob::Wire*_roifinder_*_*", - "keep *_daq_simpleSC_*"] +#outputs.rootOutput.outputCommands: ["keep *_*_*_*", +# "drop *_daq*_*_*", +# "drop *_MCDecodeTPCROI_*_*", +# "drop *_decon1droi_*_*", +# "drop recob::Wire*_roifinder_*_*", +# "keep *_daq_simpleSC_*"] # Set the expected input for ophit physics.producers.ophit.InputModule: "opdaq" diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl index 71f48966e..6afa169be 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl @@ -19,19 +19,22 @@ physics.path: [ @sequence::icarus_stage0_mc_PMT, @sequence::icarus_stage0_mc_crt ] +physics.analyzers.spanaE: @local::spana2d_east +physics.analyzers.spanaW: @local::spana2d_west + ## boiler plate... -physics.outana: [ ] +physics.outana: [ spanaE, spanaW ] physics.trigger_paths: [ path ] physics.end_paths: [ outana, streamROOT ] # Drop the artdaq format files on output -outputs.rootOutput.outputCommands: ["keep *_*_*_*", - "drop *_daq*_*_*", - "drop *_MCDecodeTPCROI_*_*", - "drop *_decon1droi_*_*", - "drop *_decon2droi*_*_*", - "drop recob::Wire*_roifinder*_*_*", - "keep *_daq_simpleSC*_*"] +# outputs.rootOutput.outputCommands: ["keep *_*_*_*", +# "drop *_daq*_*_*", +# "drop *_MCDecodeTPCROI_*_*", +# "drop *_decon1droi_*_*", +# "drop *_decon2droi*_*_*", +# "drop recob::Wire*_roifinder*_*_*", +# "keep *_daq_simpleSC*_*"] # Set the expected input for ophit physics.producers.ophit.InputModule: "opdaq" From 72a9a1526a0ed10f5b4858791cdd2e12bac1524a Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 9 Jul 2024 16:30:34 -0500 Subject: [PATCH 03/43] Fix Ind0 gain in signal processing. --- fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl index 6afa169be..af54f177f 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl @@ -51,10 +51,10 @@ physics.producers.decon2droiWE.wcls_main.params.raw_input_label: "MCDecodeTPCRO physics.producers.decon2droiWW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWW" # As per Gray Putname... -physics.producers.decon2droiEE.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiEW.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiWE.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiWW.wcls_main.structs.gain0: 17.05212 +physics.producers.decon2droiEE.wcls_main.structs.gain0: 11.9918701 +physics.producers.decon2droiEW.wcls_main.structs.gain0: 11.9918701 +physics.producers.decon2droiWE.wcls_main.structs.gain0: 11.9918701 +physics.producers.decon2droiWW.wcls_main.structs.gain0: 11.9918701 physics.producers.decon2droiEE.wcls_main.structs.gain1: 12.1420344 From bb6b1b029870aae69555cd1c14f3db38c88aeff8 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 9 Jul 2024 16:33:31 -0500 Subject: [PATCH 04/43] Save all WireCell frames. Turn on plane-protection and roi-refinement. --- .../icarus/wcls-decode-to-sig.jsonnet | 58 +++++++++++++------ 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet index 5355d1779..8df7f5839 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet @@ -156,13 +156,37 @@ local wcls_output = { digitize: false, // true means save as RawDigit, else recob::Wire // frame_tags: ['gauss', 'wiener', 'looseLf'], // frame_scale: [0.1, 0.1, 0.1], - frame_tags: ['decon','looseLf'], - frame_scale: [0.009,0.009], + frame_tags: ['decon','looseLf', 'gauss', 'wiener', 'tightLf', 'cleanupROI', 'breakROI1', 'breakROI2', 'shrinkROI', 'extendROI'], + frame_scale: [0.009,0.009, 0.009, 0.009, 0.009, 0.009, 0.009, 0.009, 0.009], // nticks: params.daq.nticks, chanmaskmaps: [], nticks: -1, }, }, nin=1, nout=1, uses=[mega_anode]), + + h5io: g.pnode({ + type: 'HDF5FrameTap', + name: 'hio_sp', + data: { + anode: wc.tn(mega_anode), + trace_tags: ['gauss' + , 'wiener' + , 'tightLf' + , 'looseLf' + , 'decon' + , 'cleanupROI' + , 'breakROI1' + , 'breakROI2' + , 'shrinkROI' + , 'extendROI' + ], + filename: "wc-sp-%d.h5" % volume, + chunk: [0, 0], // ncol, nrow + gzip: 2, + high_throughput: true, + }, + }, nin=1, nout=1, uses=[mega_anode]), + }; // local perfect = import 'chndb-perfect.jsonnet'; @@ -180,19 +204,9 @@ local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', - // wiener_tag: "", - // gauss_tag: "", - use_roi_refinement: false, + use_roi_refinement: true, use_roi_debug_mode: true, - tight_lf_tag: "", - // loose_lf_tag: "", - cleanup_roi_tag: "", - break_roi_loop1_tag: "", - break_roi_loop2_tag: "", - shrink_roi_tag: "", - extend_roi_tag: "", - // m_decon_charge_tag: "", - use_multi_plane_protection: false, + use_multi_plane_protection: true, mp_tick_resolution: 10, }; local sp = sp_maker(params, tools, sp_override); @@ -254,10 +268,15 @@ local fanin_tag_rules = [ '.*': 'framefanin', }, trace: { + ['extend_roi%d'%ind]:'extend_roi%d'%ind, + ['shrink_roi%d'%ind]:'shrink_roi%d'%ind, + ['break_roi_2nd%d'%ind]:'break_roi_2nd%d'%ind, + ['break_roi_1st%d'%ind]:'break_roi_1st%d'%ind, + ['cleanup_roi%d'%ind]:'cleanup_roi%d'%ind, ['gauss%d'%ind]:'gauss%d'%ind, ['wiener%d'%ind]:'wiener%d'%ind, ['threshold%d'%ind]:'threshold%d'%ind, - // ['tight_lf%d'%ind]:'tight_lf%d'%ind, + ['tight_lf%d'%ind]:'tight_lf%d'%ind, ['loose_lf%d'%ind]:'loose_lf%d'%ind, ['decon%d'%ind]:'decon%d'%ind, }, @@ -280,9 +299,14 @@ local retagger = g.pnode({ merge: { 'gauss\\d\\d\\d': 'gauss', 'wiener\\d\\d\\d': 'wiener', - // 'tight_lf\\d\\d\\d': 'tightLf', + 'tight_lf\\d\\d\\d': 'tightLf', 'loose_lf\\d\\d\\d': 'looseLf', 'decon\\d\\d\\d': 'decon', + 'cleanup_roi\\d\\d\\d': 'cleanupROI', + 'break_roi_1st\\d\\d\\d': 'breakROI1', + 'break_roi_2nd\\d\\d\\d': 'breakROI2', + 'shrink_roi\\d\\d\\d': 'shrinkROI', + 'extend_roi\\d\\d\\d': 'extendROI', }, }], }, @@ -291,7 +315,7 @@ local retagger = g.pnode({ local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); -local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.sp_signals, sink]); +local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); local app = { type: 'Pgrapher', From b1443213c523010099bfdc530ebee98af11a2c42 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 9 Jul 2024 16:33:59 -0500 Subject: [PATCH 05/43] Digitize WCLS output (??) --- icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet index 8df7f5839..5eaa7c143 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet @@ -135,7 +135,7 @@ local wcls_output = { data: { // anode: wc.tn(tools.anode), anode: wc.tn(mega_anode), - digitize: true, // true means save as RawDigit, else recob::Wire + digitize: false, // true means save as RawDigit, else recob::Wire frame_tags: ['raw'], // nticks: params.daq.nticks, chanmaskmaps: ['bad'], From 7826835be803a1e0b934b0532e9d7ef2d9da534c Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 9 Jul 2024 16:34:24 -0500 Subject: [PATCH 06/43] Save H5 output in WireCell signal simulation. --- ...wcls-multitpc-sim-drift-simchannel.jsonnet | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-multitpc-sim-drift-simchannel.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-multitpc-sim-drift-simchannel.jsonnet index b5516b88f..6a85eb784 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-multitpc-sim-drift-simchannel.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-multitpc-sim-drift-simchannel.jsonnet @@ -150,6 +150,35 @@ local wcls_output = { }, nin=1, nout=1, uses=[duoanodes[n]]) for n in std.range(0,3)], + // Output to H5 files + h5io: [g.pnode({ + type: 'HDF5FrameTap', + name: 'hio_sp%d' % n, + data: { + anode: wc.tn(duoanodes[n]), + trace_tags: ['TPC%s' %volname[n] + , 'loose_lf%s' % volname[n] + , 'tight_lf%s' % volname[n] + , 'cleanup_roi%s' % volname[n] + , 'break_roi_1st%s' % volname[n] + , 'break_roi_2nd%s' % volname[n] + , 'shrink_roi%s' % volname[n] + , 'extend_roi%s' % volname[n] + , 'mp3_roi%s' % volname[n] + , 'mp2_roi%s' % volname[n] + , 'decon_charge%s' % volname[n] + , 'wiener%s' % volname[n] + , 'gauss%s' % volname[n]], + filename: "wc-rd-%s.h5" % volname[n], + chunk: [0, 0], // ncol, nrow + gzip: 2, + high_throughput: true, + }, + }, nin=1, nout=1), + for n in std.range(0, 3)], + + + // The noise filtered "ADC" values. These are truncated for // art::Event but left as floats for the WCT SP. Note, the tag // "raw" is somewhat historical as the output is not equivalent to @@ -196,10 +225,6 @@ local chndb = [{ // local nf_pipes = [nf_maker(params, tools.anodes[n], chndb_pipes[n]) for n in std.range(0, std.length(tools.anodes)-1)]; // local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], n, name='nf%d' % n) for n in anode_iota]; -local sp_maker = import 'pgrapher/experiment/icarus/sp.jsonnet'; -local sp = sp_maker(params, tools); -local sp_pipes = [sp.make_sigproc(a) for a in tools.anodes]; - local rng = tools.random; local wcls_simchannel_sink_old = g.pnode({ @@ -329,8 +354,12 @@ local frame_summers = [ }, }, nin=2, nout=1) for n in std.range(0, 3)]; -local actpipes = [g.pipeline([noises[n], coh_noises[n], digitizers[n], /*retaggers[n],*/ wcls_output.sim_digits[n]], name="noise-digitizer%d" %n) for n in std.range(0,3)]; local util = import 'pgrapher/experiment/icarus/funcs.jsonnet'; + +// local actpipes = [g.pipeline([noises[n], coh_noises[n], digitizers[n], /*retaggers[n],*/ wcls_output.sim_digits[n]], name="noise-digitizer%d" %n) for n in std.range(0,3)]; + +local actpipes = [g.pipeline([noises[n], coh_noises[n], digitizers[n], wcls_output.h5io[n], wcls_output.sim_digits[n]], name="noise-digitizer%d" %n) for n in std.range(0,3)]; + local outtags = ['orig%d' % n for n in std.range(0, 3)]; local pipe_reducer = util.fansummer('DepoSetFanout', analog_pipes, frame_summers, actpipes, 'FrameFanin', 'fansummer', outtags); @@ -356,7 +385,7 @@ local sink = sim.frame_sink; // local graph = g.pipeline([wcls_input.depos, drifter, wcls_simchannel_sink.simchannels, bagger, pipe_reducer, retagger, wcls_output.sim_digits, sink]); //local graph = g.pipeline([wcls_input.depos, drifter, wcls_simchannel_sink, bagger, pipe_reducer, sink]); -local graph = g.pipeline([wcls_input.deposet, setdrifter, wcls_simchannel_sink_old, wcls_simchannel_sink, pipe_reducer, sink]); +local graph = g.pipeline([wcls_input.deposet, setdrifter, wcls_simchannel_sink, wcls_simchannel_sink_old, pipe_reducer, sink]); local app = { type: 'Pgrapher', From 54edc8a73b582501955491288daf34863134b82f Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 29 Jul 2024 13:05:03 -0500 Subject: [PATCH 07/43] Add DepoSplat jsonnet config. --- ...multitpc-sim-drift-simchannel-true.jsonnet | 178 ++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/wcls-multitpc-sim-drift-simchannel-true.jsonnet diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-multitpc-sim-drift-simchannel-true.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-multitpc-sim-drift-simchannel-true.jsonnet new file mode 100644 index 000000000..35775075d --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-multitpc-sim-drift-simchannel-true.jsonnet @@ -0,0 +1,178 @@ +local g = import 'pgraph.jsonnet'; +local f = import 'pgrapher/common/funcs.jsonnet'; +local wc = import 'wirecell.jsonnet'; + +local io = import 'pgrapher/common/fileio.jsonnet'; +local tools_maker = import 'pgrapher/experiment/icarus/icarus_tools.jsonnet'; +local base = import 'pgrapher/experiment/icarus/simparams.jsonnet'; +local splat = import 'pgrapher/experiment/icarus/splat.jsonnet'; + +// load the electronics response parameters +local er_params = [ + { + gain: std.extVar('gain0')*wc.mV/wc.fC, + shaping: std.extVar('shaping0')*wc.us, + }, + + { + gain: std.extVar('gain1')*wc.mV/wc.fC, + shaping: std.extVar('shaping1')*wc.us, + }, + + { + gain: std.extVar('gain2')*wc.mV/wc.fC, + shaping: std.extVar('shaping2')*wc.us, + }, +]; + +local params = base { + lar: super.lar { + // Longitudinal diffusion constant + DL: std.extVar('DL') * wc.cm2 / wc.ns, + // Transverse diffusion constant + DT: std.extVar('DT') * wc.cm2 / wc.ns, + // Electron lifetime + lifetime: std.extVar('lifetime') * wc.us, + // Electron drift speed, assumes a certain applied E-field + // drift_speed: std.extVar('driftSpeed') * wc.mm / wc.us, + }, + files: super.files { + fields: [ std.extVar('files_fields'), ], + }, + + rc_resp: if std.extVar('file_rcresp') != "" then + { + // "icarus_fnal_rc_tail.json" + filename: std.extVar('file_rcresp'), + postgain: 1.0, + start: 0.0, + tick: 0.4*wc.us, + nticks: 4255, + type: "JsonElecResponse", + rc_layers: 1 + } + else super.rc_resp, + + elec: std.mapWithIndex(function (n, eparam) + super.elec[n] + { + gain: eparam.gain, + shaping: eparam.shaping, + }, er_params), +}; + +local tools = tools_maker(params); + +local sim_maker = import 'pgrapher/experiment/icarus/sim.jsonnet'; +local sim = sim_maker(params, tools); + +local nanodes = std.length(tools.anodes); +local anode_iota = std.range(0, nanodes - 1); + +local output = 'wct-sim-ideal-sig.npz'; + + +local wcls_maker = import 'pgrapher/ui/wcls/nodes.jsonnet'; +local wcls = wcls_maker(params, tools); + +//Haiwang DepoSetSource Implementation: +local wcls_input = { + depos: wcls.input.depos(name="", art_tag="IonAndScint"), + deposet: g.pnode({ + type: 'wclsSimDepoSetSource', + name: "electron", + data: { + model: "", + scale: -1, //scale is -1 to correct a sign error in the SimDepoSource converter. + art_tag: "ionization", //name of upstream art producer of depos "label:instance:processName" + assn_art_tag: "", + id_is_track: false, // Use this for "id-is-index" in the output + }, + }, nin=0, nout=1), +}; + +// Collect all the wc/ls output converters for use below. Note the +// "name" MUST match what is used in theh "outputers" parameter in the +// FHiCL that loads this file. +local mega_anode = { + type: 'MegaAnodePlane', + name: 'meganodes', + data: { + anodes_tn: [wc.tn(anode) for anode in tools.anodes], + }, +}; + +// A ``duo'' anode consists of two ``splits'' +local duoanodes = [ +{ + type: 'MegaAnodePlane', + name: 'duoanode%d' %n, + data: { + // anodes_tn: ["AnodePlane:anode110", "AnodePlane:anode120"], + anodes_tn: [wc.tn(a) for a in tools.anodes[2*n:2*(n+1)]], + // anodes_tn: [wc.tn(tools.anodes[2*n]), wc.tn(tools.anodes[2*n+1])], + }, +} +for n in std.range(0,3)]; +local volname = ["EE", "EW", "WE", "WW"]; + +local anode_names = ["EES", "EEN", "EWS", "EWN", "WES", "WEN", "WWS", "WWN"]; + +local drifter = sim.drifter; +local setdrifter = g.pnode({ + type: 'DepoSetDrifter', + data: { + drifter: "Drifter" + } + }, nin=1, nout=1, + uses=[drifter]); + +local wcls_simchannel_sink = + g.pnode({ + type: 'wclsDepoFluxWriter', + name: 'postdrift', + data: { + anodes: [wc.tn(anode) for anode in tools.anodes], + field_response: wc.tn(tools.field), + + // time binning + tick: params.daq.tick, + window_start: -340 * wc.us, // TriggerOffsetTPC from detectorclocks_icarus.fcl + window_duration: params.daq.readout_time, + + nsigma: 3.0, + + reference_time: -1500 * wc.us - self.window_start, // G4RefTime from detectorclocks_icarus.fcl less window start as per Brett Viren + + smear_long: 0.0, + smear_tran: 0.0, + + time_offsets: [std.extVar('time_offset_u') * wc.us, std.extVar('time_offset_v') * wc.us, std.extVar('time_offset_y') * wc.us], + + // input from art::Event + sed_label: 'largeant:TPCActive', + + // output to art::Event + simchan_label: 'simpleSC', + }, + }, nin=1, nout=1, uses=tools.anodes+[tools.field]); + +local util = import 'pgrapher/experiment/icarus/funcs.jsonnet'; + +local deposplats = [splat(params, tools, tools.anodes[n], name="A%d" % n) for n in anode_iota] ; +local makesplat = util.fanpipe("DepoSetFanout", deposplats, "FrameFanin"); + +local sink = sim.frame_sink; + +local graph = g.pipeline([wcls_input.deposet, setdrifter, wcls_simchannel_sink, makesplat, sink]); + +local app = { + type: 'Pgrapher', + data: { + edges: g.edges(graph), + }, +}; + + +// Finally, the configuration sequence which is emitted. + +g.uses(graph) + [app] From 088831a0e74be9343ec3d07abc08345e4bc2f375 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 29 Jul 2024 13:29:47 -0500 Subject: [PATCH 08/43] Add fcl to produce DepoSplats --- fcl/detsim/detsim_2d_icarus_SConly.fcl | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 fcl/detsim/detsim_2d_icarus_SConly.fcl diff --git a/fcl/detsim/detsim_2d_icarus_SConly.fcl b/fcl/detsim/detsim_2d_icarus_SConly.fcl new file mode 100644 index 000000000..ac6d25ae6 --- /dev/null +++ b/fcl/detsim/detsim_2d_icarus_SConly.fcl @@ -0,0 +1,7 @@ +#include "detsim_2d_icarus.fcl" + +physics.producers.tpcsim: @local::icarus_simwire_wirecell_SConly + +physics.simulate: ["rns", "tpcsim"] + +process_name: TPCSim From 3ed714737f536a7e5226e657057cfd3ef83ea720 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 29 Jul 2024 14:30:17 -0500 Subject: [PATCH 09/43] Fhicl-dump'd wirecell configuration. --- .../wirecell_configuration_SPE.txt | 5062 +++++++++++++++++ .../wirecell_configuration_SPW.txt | 5060 ++++++++++++++++ .../wirecell_configuration_truth.txt | 972 ++++ 3 files changed, 11094 insertions(+) create mode 100644 icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPE.txt create mode 100644 icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPW.txt create mode 100644 icaruscode/TPC/ICARUSWireCell/wirecell_configuration_truth.txt diff --git a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPE.txt b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPE.txt new file mode 100644 index 000000000..95c60f2c7 --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPE.txt @@ -0,0 +1,5062 @@ +# Produced from 'fhicl-dump' using: +# Input : stage0E_run2_wc_icarus_mc.fcl +# Policy : cet::filepath_maker +# Path : "FHICL_FILE_PATH" + +outputs: { + rootOutput: { + SelectEvents: [ + "path" + ] + checkFileName: false + compressionLevel: 1 + dataTier: "reconstructed" + fileName: "%ifb_%tc-%p.root" + fileProperties: { + maxInputFiles: 1 + } + module_type: "RootOutput" + saveMemoryObjectThreshold: 0 + } +} +physics: { + analyzers: { + purityinfoana0: { + PrintInfo: false + PurityInfoLabel: "purityana0" + SelectEvents: [ + "reco" + ] + module_type: "TPCPurityInfoAna" + } + purityinfoana1: { + PrintInfo: false + PurityInfoLabel: "purityana1" + SelectEvents: [ + "reco" + ] + module_type: "TPCPurityInfoAna" + } + spanaE: { + Cryostat: 0 + G4Producer: "largeant" + HitProducers: [ + "gaushit2dTPCEE", + "gaushit2dTPCEW" + ] + SimChannelProducer: "daq:simpleSC" + WireProducers: [ + "roifinder2d:PHYSCRATEDATATPCEE", + "roifinder2d:PHYSCRATEDATATPCEW" + ] + module_type: "SPAna" + } + spanaW: { + Cryostat: 1 + G4Producer: "largeant" + HitProducers: [ + "gaushit2dTPCWE", + "gaushit2dTPCWW" + ] + SimChannelProducer: "daq:simpleSC" + WireProducers: [ + "roifinder2d:PHYSCRATEDATATPCWE", + "roifinder2d:PHYSCRATEDATATPCWW" + ] + module_type: "SPAna" + } + } + end_paths: [ + "outana", + "streamROOT" + ] + filters: { + crtpmtmatchingfilter: { + BNBBeamGateMax: 2300 + BNBBeamGateMin: -550 + BNBinBeamMax: 1300 + BNBinBeamMin: -300 + CrtPmtModuleLabel: "crtpmt" + FilterLevel: "loose" + GlobalT0Offset: 1.599957e6 + MatchBottomCRT: false + NuMIBeamGateMax: 10000 + NuMIBeamGateMin: -550 + NuMIinBeamMax: 9100 + NuMIinBeamMin: -300 + OutputTree: true + PMTADCThresh: 400 + SpillOnly: false + TimeOfFlightInterval: 100 + TriggerConfiguration: "triggerconfig" + TriggerLabel: "daqTrigger" + module_type: "FilterCRTPMTMatching" + nOpHitToTrigger: 5 + } + filterdataintegrity: { + module_type: "FilterDataIntegrity" + } + flashfilterBNB: { + OpFlashProducerList: [ + "opflashCryoE", + "opflashCryoW" + ] + WindowEndTime: 1.8 + WindowStartTime: -2e-1 + module_type: "FilterOpFlash" + } + flashfilterNuMI: { + OpFlashProducerList: [ + "opflashCryoE", + "opflashCryoW" + ] + WindowEndTime: 9.8 + WindowStartTime: -2e-1 + module_type: "FilterOpFlash" + } + triggerfilterBNB: { + TriggerDataLabel: "daqTrigger" + TriggerType: "BNB" + module_type: "TriggerTypeFilter" + } + triggerfilterNuMI: { + TriggerDataLabel: "daqTrigger" + TriggerType: "NuMI" + module_type: "TriggerTypeFilter" + } + triggerfilterOffbeamBNB: { + TriggerDataLabel: "daqTrigger" + TriggerType: "OffbeamBNB" + module_type: "TriggerTypeFilter" + } + triggerfilterOffbeamNuMI: { + TriggerDataLabel: "daqTrigger" + TriggerType: "OffbeamNuMI" + module_type: "TriggerTypeFilter" + } + triggerfilterUnknown: { + TriggerDataLabel: "daqTrigger" + TriggerType: "Unknown" + module_type: "TriggerTypeFilter" + } + } + outana: [] + path: [ + "pmtfixedthr", + "pmtlvdsgates", + "pmttriggerwindows", + "triggersimgates", + "emuTrigger", + "pmtbaselines", + "ophit", + "mcophit", + "opflashCryoE", + "opflashCryoW", + "MCDecodeTPCROI", + "decon1droi", + "roifinder1d", + "decon2droiEE", + "decon2droiEW", + "crthit", + "crttrack", + "crtpmt" + ] + producers: { + MCDecodeTPCROI: { + CoherentGrouping: 64 + DecoderTool: { + DenoiserType: "default" + FFTCutoffVals: [ + [ + 8, + 800 + ], + [ + 8, + 800 + ], + [ + 4, + 800 + ] + ] + FFTSigmaVals: [ + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ] + ] + FilterModeVec: [ + "e", + "g", + "d" + ] + FilterWindow: 10 + FragmentIDMap: [ + [ + 0, + 5132 + ], + [ + 1, + 5134 + ], + [ + 2, + 5136 + ], + [ + 6, + 5140 + ], + [ + 8, + 5390 + ], + [ + 9, + 5392 + ] + ] + LowFreqCorrection: true + NSigmaForTrucation: 3.5 + StructuringElement: 16 + Threshold: [ + 1, + 1, + 1 + ] + UseFFTFilter: false + fragment_id_offset: 0 + tool_type: "TPCNoiseFilter1D" + } + DiagnosticOutput: false + FragmentsLabelVec: [ + "daq:TPCWW", + "daq:TPCWE", + "daq:TPCEW", + "daq:TPCEE" + ] + OutInstanceLabelVec: [ + "PHYSCRATEDATATPCWW", + "PHYSCRATEDATATPCWE", + "PHYSCRATEDATATPCEW", + "PHYSCRATEDATATPCEE" + ] + OutputCoherentPath: "Cor" + OutputCorrection: false + OutputRawWavePath: "RAW" + OutputRawWaveform: false + module_type: "MCDecoderICARUSTPCwROI" + } + crthit: { + CrtModuleLabel: "crtdaq" + HitAlg: { + CSVFile: "data.csv" + CoinWindow: 150 + CrtWindow: 3e6 + Data: false + GlobalT0Offset: 1.6e6 + PEThresh: 7.5 + PropDelay: 6.2e-2 + QPed: 60 + QSlope: 70 + SiPMtoFEBdelay: 0 + UseReadoutWindow: false + Verbose: false + outCSVFile: false + topGain: 110 + topPed: 160 + } + TriggerLabel: "daqTrigger" + module_type: "icaruscode/CRT/CRTSimHitProducer" + } + crtpmt: { + BNBBeamGateMax: 2300 + BNBBeamGateMin: -550 + BNBinBeamMax: 1300 + BNBinBeamMin: -300 + CrtHitModuleLabel: "crthit" + GlobalT0Offset: 1.599957e6 + MatchBottomCRT: false + NuMIBeamGateMax: 10000 + NuMIBeamGateMin: -550 + NuMIinBeamMax: 9100 + NuMIinBeamMin: -300 + OpFlashModuleLabels: [ + "opflashCryoE", + "opflashCryoW" + ] + PMTADCThresh: 400 + TimeOfFlightInterval: 100 + TriggerLabel: "daqTrigger" + module_type: "icaruscode/CRT/CRTPMTMatchingProducer" + nOpHitToTrigger: 5 + } + crttrack: { + DataLabelHits: "crthit" + StoreTrack: 1 + TrackAlg: { + AverageHitDistance: 30 + DistanceLimit: 25 + TimeLimit: 1e-1 + } + TrackMethodType: 4 + UseTopPlane: false + module_type: "icaruscode/CRT/CRTTrackProducer" + } + daqCRT: { + FEB_delay_side: [ + [ + 31, + 240 + ], + [ + 32, + 260 + ], + [ + 33, + 280 + ], + [ + 34, + 330 + ], + [ + 35, + 350 + ], + [ + 36, + 370 + ], + [ + 25, + 240 + ], + [ + 26, + 260 + ], + [ + 27, + 280 + ], + [ + 28, + 330 + ], + [ + 29, + 350 + ], + [ + 30, + 370 + ], + [ + 43, + 230 + ], + [ + 44, + 250 + ], + [ + 45, + 270 + ], + [ + 46, + 316 + ], + [ + 47, + 336 + ], + [ + 48, + 356 + ], + [ + 37, + 230 + ], + [ + 38, + 250 + ], + [ + 39, + 270 + ], + [ + 40, + 316 + ], + [ + 41, + 336 + ], + [ + 42, + 356 + ], + [ + 55, + 245 + ], + [ + 56, + 265 + ], + [ + 57, + 285 + ], + [ + 58, + 331 + ], + [ + 59, + 351 + ], + [ + 60, + 371 + ], + [ + 49, + 245 + ], + [ + 50, + 265 + ], + [ + 51, + 285 + ], + [ + 52, + 331 + ], + [ + 53, + 351 + ], + [ + 54, + 371 + ], + [ + 3, + 364 + ], + [ + 1, + 384 + ], + [ + 6, + 404 + ], + [ + 7, + 450 + ], + [ + 8, + 433 + ], + [ + 9, + 453 + ], + [ + 5, + 470 + ], + [ + 4, + 490 + ], + [ + 92, + 237 + ], + [ + 93, + 257 + ], + [ + 94, + 303 + ], + [ + 95, + 323 + ], + [ + 96, + 343 + ], + [ + 97, + 390 + ], + [ + 85, + 237 + ], + [ + 86, + 257 + ], + [ + 87, + 277 + ], + [ + 88, + 297 + ], + [ + 89, + 317 + ], + [ + 90, + 337 + ], + [ + 91, + 357 + ], + [ + 17, + 359 + ], + [ + 19, + 379 + ], + [ + 21, + 399 + ], + [ + 22, + 448 + ], + [ + 23, + 468 + ], + [ + 24, + 488 + ], + [ + 10, + 359 + ], + [ + 11, + 379 + ], + [ + 13, + 399 + ], + [ + 14, + 448 + ], + [ + 15, + 468 + ], + [ + 16, + 488 + ], + [ + 67, + 348 + ], + [ + 68, + 368 + ], + [ + 69, + 388 + ], + [ + 70, + 434 + ], + [ + 71, + 454 + ], + [ + 72, + 474 + ], + [ + 61, + 348 + ], + [ + 62, + 368 + ], + [ + 63, + 388 + ], + [ + 64, + 434 + ], + [ + 65, + 454 + ], + [ + 66, + 474 + ], + [ + 84, + 364 + ], + [ + 83, + 384 + ], + [ + 82, + 404 + ], + [ + 81, + 450 + ], + [ + 80, + 470 + ], + [ + 79, + 490 + ], + [ + 78, + 364 + ], + [ + 77, + 384 + ], + [ + 76, + 404 + ], + [ + 75, + 450 + ], + [ + 74, + 470 + ], + [ + 73, + 490 + ] + ] + FEB_delay_top: [ + [ + 211, + 414 + ], + [ + 212, + 398 + ], + [ + 81, + 283 + ], + [ + 119, + 298 + ], + [ + 87, + 313 + ], + [ + 92, + 329 + ], + [ + 180, + 344 + ], + [ + 97, + 359 + ], + [ + 174, + 374 + ], + [ + 189, + 420 + ], + [ + 190, + 436 + ], + [ + 80, + 451 + ], + [ + 162, + 466 + ], + [ + 64, + 482 + ], + [ + 139, + 451 + ], + [ + 185, + 466 + ], + [ + 165, + 436 + ], + [ + 148, + 451 + ], + [ + 147, + 406 + ], + [ + 105, + 421 + ], + [ + 113, + 528 + ], + [ + 172, + 298 + ], + [ + 114, + 313 + ], + [ + 100, + 328 + ], + [ + 150, + 344 + ], + [ + 238, + 390 + ], + [ + 234, + 405 + ], + [ + 138, + 390 + ], + [ + 170, + 405 + ], + [ + 101, + 420 + ], + [ + 142, + 435 + ], + [ + 6, + 481 + ], + [ + 232, + 421 + ], + [ + 237, + 467 + ], + [ + 239, + 391 + ], + [ + 125, + 298 + ], + [ + 116, + 314 + ], + [ + 104, + 329 + ], + [ + 91, + 344 + ], + [ + 88, + 360 + ], + [ + 176, + 359 + ], + [ + 67, + 374 + ], + [ + 61, + 512 + ], + [ + 177, + 497 + ], + [ + 95, + 405 + ], + [ + 132, + 390 + ], + [ + 120, + 375 + ], + [ + 130, + 513 + ], + [ + 94, + 497 + ], + [ + 181, + 284 + ], + [ + 124, + 299 + ], + [ + 152, + 314 + ], + [ + 90, + 482 + ], + [ + 183, + 498 + ], + [ + 241, + 513 + ], + [ + 231, + 437 + ], + [ + 117, + 452 + ], + [ + 126, + 467 + ], + [ + 98, + 329 + ], + [ + 173, + 345 + ], + [ + 169, + 360 + ], + [ + 144, + 375 + ], + [ + 102, + 482 + ], + [ + 233, + 283 + ], + [ + 164, + 299 + ], + [ + 161, + 314 + ], + [ + 141, + 482 + ], + [ + 160, + 498 + ], + [ + 137, + 513 + ], + [ + 182, + 436 + ], + [ + 107, + 452 + ], + [ + 252, + 467 + ], + [ + 203, + 329 + ], + [ + 122, + 345 + ], + [ + 2, + 360 + ], + [ + 112, + 375 + ], + [ + 202, + 482 + ], + [ + 66, + 298 + ], + [ + 247, + 314 + ], + [ + 198, + 329 + ], + [ + 243, + 344 + ], + [ + 72, + 360 + ], + [ + 63, + 404 + ], + [ + 82, + 572 + ], + [ + 244, + 557 + ], + [ + 204, + 541 + ], + [ + 248, + 405 + ], + [ + 249, + 390 + ], + [ + 250, + 375 + ], + [ + 246, + 513 + ], + [ + 135, + 497 + ], + [ + 253, + 342 + ], + [ + 245, + 358 + ], + [ + 65, + 373 + ], + [ + 57, + 388 + ], + [ + 187, + 391 + ], + [ + 251, + 419 + ], + [ + 70, + 434 + ], + [ + 155, + 449 + ], + [ + 154, + 465 + ], + [ + 85, + 480 + ], + [ + 115, + 526 + ], + [ + 60, + 421 + ], + [ + 59, + 467 + ], + [ + 62, + 391 + ], + [ + 186, + 284 + ], + [ + 83, + 299 + ], + [ + 254, + 314 + ], + [ + 166, + 330 + ], + [ + 178, + 345 + ], + [ + 136, + 360 + ], + [ + 184, + 375 + ], + [ + 240, + 406 + ], + [ + 242, + 421 + ], + [ + 188, + 437 + ], + [ + 58, + 452 + ], + [ + 143, + 467 + ], + [ + 235, + 483 + ], + [ + 134, + 495 + ], + [ + 129, + 511 + ], + [ + 145, + 436 + ], + [ + 110, + 451 + ], + [ + 133, + 406 + ], + [ + 168, + 421 + ], + [ + 179, + 528 + ] + ] + module_type: "DecoderICARUSCRT" + } + daqPMT: { + BoardSetup: [ + { + Name: "icaruspmtwwtop01" + SpecialChannels: [ + { + Channel: 24689 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwtop02" + SpecialChannels: [ + { + Channel: 12402 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwtop03" + SpecialChannels: [ + { + Channel: 8307 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwbot01" + SpecialChannels: [ + { + Channel: 24673 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwbot02" + SpecialChannels: [ + { + Channel: 12386 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwbot03" + SpecialChannels: [ + { + Channel: 8291 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwetop01" + SpecialChannels: [ + { + Channel: 24657 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwetop02" + SpecialChannels: [ + { + Channel: 12370 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwetop03" + SpecialChannels: [ + { + Channel: 8275 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwebot01" + SpecialChannels: [ + { + Channel: 24641 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwebot02" + SpecialChannels: [ + { + Channel: 12354 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwebot03" + SpecialChannels: [ + { + Channel: 8259 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewtop01" + SpecialChannels: [ + { + Channel: 24625 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewtop02" + SpecialChannels: [ + { + Channel: 12338 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewtop03" + SpecialChannels: [ + { + Channel: 8243 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewbot01" + SpecialChannels: [ + { + Channel: 24609 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewbot02" + SpecialChannels: [ + { + Channel: 12322 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewbot03" + SpecialChannels: [ + { + Channel: 8227 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteetop01" + SpecialChannels: [ + { + Channel: 24593 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteetop02" + SpecialChannels: [ + { + Channel: 12306 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteetop03" + SpecialChannels: [ + { + Channel: 8211 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteebot01" + SpecialChannels: [ + { + Channel: 24577 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteebot02" + SpecialChannels: [ + { + Channel: 12290 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteebot03" + SpecialChannels: [ + { + Channel: 8195 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + } + ] + CorrectionInstance: "globtrg" + FragmentsLabels: [ + "daq:CAENV1730", + "daq:ContainerCAENV1730" + ] + PMTconfigTag: "pmtconfig" + TriggerTag: "daqTrigger" + module_type: "DaqDecoderICARUSPMT" + } + daqPMTonbeam: { + SelectInterval: { + Duration: "26 us" + Start: "-7 us" + } + TimeReference: "BeamGate" + WaveformBaselineAssns: "pmtbaselines" + Waveforms: "daqPMT" + module_type: "CopyBeamTimePMTwaveforms" + } + daqTPC: { + DecoderTool: { + CoherentGrouping: 32 + FFTCutoffVals: [ + [ + 8, + 800 + ], + [ + 8, + 800 + ], + [ + 3, + 800 + ] + ] + FFTSigmaVals: [ + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ], + [ + 2, + 20 + ] + ] + FilterModeVec: [ + "e", + "g", + "d" + ] + FilterWindow: 10 + FragmentIDMap: [ + [ + 0, + 5132 + ], + [ + 1, + 5134 + ], + [ + 2, + 5136 + ], + [ + 6, + 5140 + ], + [ + 8, + 5390 + ], + [ + 9, + 5392 + ] + ] + NSigmaForTrucation: 3.5 + StructuringElement: 16 + Threshold: [ + 2.75, + 2.75, + 2.75 + ] + UseFFTFilter: false + fragment_id_offset: 0 + tool_type: "TPCDecoderFilter1D" + } + DiagnosticOutput: false + FragmentsLabel: "daq:PHYSCRATEDATA" + FragmentsLabelVec: [ + "daq:PHYSCRATEDATATPCWW", + "daq:PHYSCRATEDATATPCWE", + "daq:PHYSCRATEDATATPCEW", + "daq:PHYSCRATEDATATPCEE" + ] + OutputCoherentPath: "Cor" + OutputCorrection: false + OutputRawWavePath: "RAW" + OutputRawWaveform: false + module_type: "DaqDecoderICARUSTPC" + } + daqTPCROI: { + CoherentGrouping: 64 + DecoderTool: { + DenoiserType: "default" + FFTCutoffVals: [ + [ + 8, + 800 + ], + [ + 8, + 800 + ], + [ + 4, + 800 + ] + ] + FFTSigmaVals: [ + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ] + ] + FilterModeVec: [ + "e", + "g", + "d" + ] + FilterWindow: 10 + FragmentIDMap: [ + [ + 0, + 5132 + ], + [ + 1, + 5134 + ], + [ + 2, + 5136 + ], + [ + 6, + 5140 + ], + [ + 8, + 5390 + ], + [ + 9, + 5392 + ] + ] + LowFreqCorrection: true + NSigmaForTrucation: 3.5 + StructuringElement: 16 + Threshold: [ + 1, + 1, + 1 + ] + UseFFTFilter: false + fragment_id_offset: 0 + tool_type: "TPCNoiseFilter1D" + } + DiagnosticOutput: false + FragmentsLabelVec: [ + "daq:PHYSCRATEDATATPCWW", + "daq:PHYSCRATEDATATPCWE", + "daq:PHYSCRATEDATATPCEW", + "daq:PHYSCRATEDATATPCEE" + ] + OutputCoherentPath: "Cor" + OutputCorrection: false + OutputRawWavePath: "RAW" + OutputRawWaveform: false + module_type: "DaqDecoderICARUSTPCwROI" + } + daqTrigger: { + DecoderTool: { + Decoders: [ + { + FragmentsLabel: "daq:ICARUSTriggerUDP" + Generator: "ICARUSTriggerUDP" + ToolConfig: { + TrigConfigLabel: "triggerconfig" + tool_type: "TriggerDecoder" + } + }, + { + FragmentsLabel: "daq:ICARUSTriggerV2" + Generator: "ICARUSTriggerV2" + ToolConfig: { + TrigConfigLabel: "triggerconfig" + tool_type: "TriggerDecoderV2" + } + }, + { + FragmentsLabel: "daq:ICARUSTriggerV3" + Generator: "ICARUSTriggerV3" + ToolConfig: { + TrigConfigLabel: "triggerconfig" + tool_type: "TriggerDecoderV3" + } + } + ] + TrigConfigLabel: "triggerconfig" + tool_type: "TriggerDecoderDispatcher" + } + FragmentsLabel: "" + module_type: "DaqDecoderICARUSTrigger" + } + decon1droi: { + Baseline: { + MaxROILength: 100 + tool_type: "icaruscode/TPC/SignalProcessing/RecoWire/DeconTools/BaselineMostProbAve" + } + Deconvolution: { + Baseline: { + MaxROILength: 100 + tool_type: "icaruscode/TPC/SignalProcessing/RecoWire/DeconTools/BaselineMostProbAve" + } + DoBaselineSub: true + DodQdxCalib: false + MinROIAverageTickThreshold: -5e-1 + dQdxCalibFileName: "dQdxCalibrationPlanev1.txt" + tool_type: "FullWireDeconvolution" + } + MinAllowedChannelStatus: 3 + NoiseSource: 3 + OutputHistograms: false + ROIFinderToolVec: { + ROIFinderToolPlane0: { + Plane: 0 + roiLeadTrailPad: [ + 2000, + 2000 + ] + tool_type: "ROIFinderNOP" + } + ROIFinderToolPlane1: { + Plane: 1 + roiLeadTrailPad: [ + 2000, + 2000 + ] + tool_type: "ROIFinderNOP" + } + ROIFinderToolPlane2: { + Plane: 2 + roiLeadTrailPad: [ + 2000, + 2000 + ] + tool_type: "ROIFinderNOP" + } + } + RawDigitLabelVec: [ + "MCDecodeTPCROI:PHYSCRATEDATATPCWW", + "MCDecodeTPCROI:PHYSCRATEDATATPCWE", + "MCDecodeTPCROI:PHYSCRATEDATATPCEW", + "MCDecodeTPCROI:PHYSCRATEDATATPCEE" + ] + SaveWireWF: 0 + TruncRMSMinFraction: 6e-1 + TruncRMSThreshold: 6 + module_type: "Decon1DROI" + } + decon2droi: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc0" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver0" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "daqTPC" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 0 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft" + ] + tool_type: "WCLS" + } + } + decon2droiEE: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc0" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver0" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEE" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 0 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + Gaus_wide_sigma: 1.2e-1 + Wiener_tight_U_power: 3.76194 + Wiener_tight_U_sigma: 1.48788e-1 + Wiener_tight_V_power: 4.36125 + Wiener_tight_V_sigma: 1.596568e-1 + Wiener_tight_W_power: 3.35324 + Wiener_tight_W_sigma: 1.3623e-1 + Wire_col_sigma: 3 + Wire_ind_sigma: 7.5e-1 + gain0: 1.19918701e1 + gain1: 1.21420344e1 + gain2: 1.30261362e1 + shaping0: 1.3 + shaping1: 1.45 + shaping2: 1.3 + } + tool_type: "WCLS" + } + } + decon2droiEW: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc1" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver1" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEW" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 1 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + Gaus_wide_sigma: 1.2e-1 + Wiener_tight_U_power: 3.76194 + Wiener_tight_U_sigma: 1.48788e-1 + Wiener_tight_V_power: 4.36125 + Wiener_tight_V_sigma: 1.596568e-1 + Wiener_tight_W_power: 3.35324 + Wiener_tight_W_sigma: 1.3623e-1 + Wire_col_sigma: 3 + Wire_ind_sigma: 7.5e-1 + gain0: 1.19918701e1 + gain1: 1.21420344e1 + gain2: 1.30261362e1 + shaping0: 1.3 + shaping1: 1.45 + shaping2: 1.3 + } + tool_type: "WCLS" + } + } + decon2droiWE: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc2" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver2" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWE" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 2 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + Gaus_wide_sigma: 1.2e-1 + Wiener_tight_U_power: 3.76194 + Wiener_tight_U_sigma: 1.48788e-1 + Wiener_tight_V_power: 4.36125 + Wiener_tight_V_sigma: 1.596568e-1 + Wiener_tight_W_power: 3.35324 + Wiener_tight_W_sigma: 1.3623e-1 + Wire_col_sigma: 3 + Wire_ind_sigma: 7.5e-1 + gain0: 1.19918701e1 + gain1: 1.21420344e1 + gain2: 1.30261362e1 + shaping0: 1.3 + shaping1: 1.45 + shaping2: 1.3 + } + tool_type: "WCLS" + } + } + decon2droiWW: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc3" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver3" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWW" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 3 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + Gaus_wide_sigma: 1.2e-1 + Wiener_tight_U_power: 3.76194 + Wiener_tight_U_sigma: 1.48788e-1 + Wiener_tight_V_power: 4.36125 + Wiener_tight_V_sigma: 1.596568e-1 + Wiener_tight_W_power: 3.35324 + Wiener_tight_W_sigma: 1.3623e-1 + Wire_col_sigma: 3 + Wire_ind_sigma: 7.5e-1 + gain0: 1.19918701e1 + gain1: 1.21420344e1 + gain2: 1.30261362e1 + shaping0: 1.3 + shaping1: 1.45 + shaping2: 1.3 + } + tool_type: "WCLS" + } + } + emuTrigger: { + BeamGates: "triggersimgates" + EmitEmpty: true + ExtraInfo: true + Pattern: { + inMainWindow: 3 + sumOfOppositeWindows: 5 + } + Thresholds: [ + 400 + ] + TriggerGatesTag: "pmttriggerwindows" + TriggerTimeResolution: "8 ns" + module_type: "TriggerSimulationOnGates" + } + gaushit1dTPCEE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit1dTPCEW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit1dTPCWE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCWE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit1dTPCWW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCWW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit2dTPCEE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCEE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit2dTPCEW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCEW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit2dTPCWE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCWE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit2dTPCWW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCWW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gausshitTPCEE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + gaushit2dTPCWW: { + HitFinderToolVec: { + CandidateHitsPlane0: { + RoiThreshold: 9 + } + } + } + module_type: "GaussHitFinderICARUS" + } + gausshitTPCEW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + gaushit2dTPCWW: { + HitFinderToolVec: { + CandidateHitsPlane0: { + RoiThreshold: 9 + } + } + } + module_type: "GaussHitFinderICARUS" + } + gausshitTPCWE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + gaushit2dTPCWW: { + HitFinderToolVec: { + CandidateHitsPlane0: { + RoiThreshold: 9 + } + } + } + module_type: "GaussHitFinderICARUS" + } + gausshitTPCWW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + gaushit2dTPCWW: { + HitFinderToolVec: { + CandidateHitsPlane0: { + RoiThreshold: 9 + } + } + } + module_type: "GaussHitFinderICARUS" + } + mcophit: { + MergePeriod: 1e-2 + SPEAmplitude: 2.64258e1 + SPEArea: 2.56658e2 + SimPhotonsProducer: "largeant" + module_type: "ICARUSMCOpHit" + } + opdetonbeam: { + SelectInterval: { + Duration: "26 us" + Start: "-7 us" + } + TimeReference: "BeamGate" + WaveformBaselineAssns: "pmtbaselines" + Waveforms: "opdaq" + module_type: "CopyBeamTimePMTwaveforms" + } + opflashCryoE: { + AlgoConfig: { + DebugMode: false + HitVetoRangeEnd: [] + HitVetoRangeStart: [] + IntegralTime: 1 + MinMultCoinc: 5 + MinPECoinc: 100 + OpChannelRange: [ + 0, + 179 + ] + PEThreshold: 100 + PEThresholdHit: 1 + PreSample: 2e-2 + TimeResolution: 1e-2 + VetoSize: 1 + } + FlashFinderAlgo: "SimpleFlashAlgo" + OpHitProducer: "ophit" + PECalib: { + SPEAreaGain: 2.56658e2 + } + module_type: "ICARUSFlashFinder" + } + opflashCryoW: { + AlgoConfig: { + DebugMode: false + HitVetoRangeEnd: [] + HitVetoRangeStart: [] + IntegralTime: 1 + MinMultCoinc: 5 + MinPECoinc: 100 + OpChannelRange: [ + 180, + 359 + ] + PEThreshold: 100 + PEThresholdHit: 1 + PreSample: 2e-2 + TimeResolution: 1e-2 + VetoSize: 1 + } + FlashFinderAlgo: "SimpleFlashAlgo" + OpHitProducer: "ophit" + PECalib: { + SPEAreaGain: 2.56658e2 + } + module_type: "ICARUSFlashFinder" + } + ophit: { + AreaToPE: true + ChannelMasks: [] + GenModule: "generator" + HitAlgoPset: { + ADCThreshold: 10 + EndADCThreshold: 2 + EndNSigmaThreshold: 1 + MinPulseWidth: 5 + NSigmaThreshold: 3 + Name: "SlidingWindow" + NumPostSample: 10 + NumPreSample: 5 + PositivePolarity: false + TailADCThreshold: 6 + TailNSigmaThreshold: 2 + Verbosity: false + } + HitThreshold: 2e-1 + InputLabels: [] + InputModule: "opdaq" + PedAlgoPset: { + DiffADCCounts: 2 + DiffBetweenGapsThreshold: 2 + MaxSigma: 5 + NPrePostSamples: 5 + Name: "RollingMean" + PedRangeMax: 16000 + PedRangeMin: 14000 + SampleSize: 20 + Threshold: 1.5 + } + RiseTimeCalculator: { + PeakRatio: 1.5e-1 + tool_type: "RiseTimeThreshold" + } + SPEArea: 2.56658e2 + SPEShift: 0 + UseStartTime: false + module_type: "OpHitFinder" + reco_man: { + module_type: "PulseRecoManager" + } + } + ophitfull: { + CorrectCosmics: true + CorrectLaser: true + InputLabels: [ + "ophitfulluncorrected" + ] + Verbose: false + module_type: "OpHitTimingCorrection" + } + ophitfulluncorrected: { + AreaToPE: true + ChannelMasks: [] + GenModule: "generator" + HitAlgoPset: { + ADCThreshold: 10 + EndADCThreshold: 2 + EndNSigmaThreshold: 1 + MinPulseWidth: 5 + NSigmaThreshold: 3 + Name: "SlidingWindow" + NumPostSample: 10 + NumPreSample: 5 + PositivePolarity: false + TailADCThreshold: 6 + TailNSigmaThreshold: 2 + Verbosity: false + } + HitThreshold: 2e-1 + InputLabels: [] + InputModule: "daqPMT" + OutputFile: "ophit_debug.root" + PedAlgoPset: { + DiffADCCounts: 2 + DiffBetweenGapsThreshold: 2 + MaxSigma: 5 + NPrePostSamples: 5 + Name: "RollingMean" + PedRangeMax: 16000 + PedRangeMin: 14000 + SampleSize: 20 + Threshold: 1.5 + } + RiseTimeCalculator: { + PeakRatio: 1.5e-1 + tool_type: "RiseTimeThreshold" + } + SPEArea: 2.56658e2 + SPEShift: 0 + UseStartTime: false + module_type: "FullOpHitFinder" + reco_man: { + module_type: "PulseRecoManager" + } + } + ophituncorrected: { + AreaToPE: true + ChannelMasks: [] + GenModule: "generator" + HitAlgoPset: { + ADCThreshold: 10 + EndADCThreshold: 2 + EndNSigmaThreshold: 1 + MinPulseWidth: 5 + NSigmaThreshold: 3 + Name: "SlidingWindow" + NumPostSample: 10 + NumPreSample: 5 + PositivePolarity: false + TailADCThreshold: 6 + TailNSigmaThreshold: 2 + Verbosity: false + } + HitThreshold: 2e-1 + InputLabels: [] + InputModule: "daqPMT" + PedAlgoPset: { + DiffADCCounts: 2 + DiffBetweenGapsThreshold: 2 + MaxSigma: 5 + NPrePostSamples: 5 + Name: "RollingMean" + PedRangeMax: 16000 + PedRangeMin: 14000 + SampleSize: 20 + Threshold: 1.5 + } + RiseTimeCalculator: { + PeakRatio: 1.5e-1 + tool_type: "RiseTimeThreshold" + } + SPEArea: 2.56658e2 + SPEShift: 0 + UseStartTime: false + module_type: "OpHitFinder" + reco_man: { + module_type: "PulseRecoManager" + } + } + pmtbaselines: { + AlgoParams: { + AcceptedSampleRangeRMS: 5 + ExcessSampleLimit: 4 + } + ExcludeSpillTimeIfMoreThan: 8 + OpticalWaveforms: "opdaq" + PlotBaselines: false + PretriggerBufferFractionForBaseline: 5e-1 + PretriggerBufferSize: 500 + module_type: "PMTWaveformBaselinesFromChannelData" + } + pmtconfig: { + AssignOfflineChannelIDs: true + module_type: "PMTconfigurationExtraction" + } + pmtconfigbaselines: { + OpticalWaveforms: "daqPMT" + OutputCategory: "PMTWaveformBaselines" + PMTconfigurationTag: "pmtconfig" + PlotBaselines: false + PrintBaselines: false + module_type: "PMTWaveformBaselinesFromReadoutConfiguration" + } + pmtfixedthr: { + Baseline: 1.49995e4 + NChannels: 360 + OpticalWaveforms: "opdaq" + OutputCategory: "DiscriminatePMTwaveforms" + TriggerGateBuilder: { + ChannelThresholds: [ + 18, + 300, + 400, + 600 + ] + GateDuration: "160 ns" + tool_type: "FixedTriggerGateBuilderTool" + } + module_type: "DiscriminatePMTwaveforms" + } + pmtlvdsgates: { + ChannelPairing: [ + [ + 0, + 2 + ], + [ + 1, + 4 + ], + [ + 3, + 6 + ], + [ + 5, + 8 + ], + [ + 7, + 9 + ], + [ + 10, + 12 + ], + [ + 11, + 14 + ], + [ + 13 + ], + [ + 15, + 18 + ], + [ + 16 + ], + [ + 17, + 19 + ], + [ + 20, + 22 + ], + [ + 21, + 24 + ], + [ + 23, + 26 + ], + [ + 25, + 28 + ], + [ + 27, + 29 + ], + [ + 30, + 32 + ], + [ + 31, + 34 + ], + [ + 33, + 36 + ], + [ + 35, + 38 + ], + [ + 37, + 39 + ], + [ + 40, + 42 + ], + [ + 41, + 44 + ], + [ + 43 + ], + [ + 45, + 48 + ], + [ + 46 + ], + [ + 47, + 49 + ], + [ + 50, + 52 + ], + [ + 51, + 54 + ], + [ + 53, + 56 + ], + [ + 55, + 58 + ], + [ + 57, + 59 + ], + [ + 60, + 62 + ], + [ + 61, + 64 + ], + [ + 63, + 66 + ], + [ + 65, + 68 + ], + [ + 67, + 69 + ], + [ + 70, + 72 + ], + [ + 71, + 74 + ], + [ + 73 + ], + [ + 75, + 78 + ], + [ + 76 + ], + [ + 77, + 79 + ], + [ + 80, + 82 + ], + [ + 81, + 84 + ], + [ + 83, + 86 + ], + [ + 85, + 88 + ], + [ + 87, + 89 + ], + [ + 90, + 92 + ], + [ + 91, + 94 + ], + [ + 93, + 96 + ], + [ + 95, + 98 + ], + [ + 97, + 99 + ], + [ + 100, + 102 + ], + [ + 101, + 104 + ], + [ + 103 + ], + [ + 105, + 108 + ], + [ + 106 + ], + [ + 107, + 109 + ], + [ + 110, + 112 + ], + [ + 111, + 114 + ], + [ + 113, + 116 + ], + [ + 115, + 118 + ], + [ + 117, + 119 + ], + [ + 120, + 122 + ], + [ + 121, + 124 + ], + [ + 123, + 126 + ], + [ + 125, + 128 + ], + [ + 127, + 129 + ], + [ + 130, + 132 + ], + [ + 131, + 134 + ], + [ + 133 + ], + [ + 135, + 138 + ], + [ + 136 + ], + [ + 137, + 139 + ], + [ + 140, + 142 + ], + [ + 141, + 144 + ], + [ + 143, + 146 + ], + [ + 145, + 148 + ], + [ + 147, + 149 + ], + [ + 150, + 152 + ], + [ + 151, + 154 + ], + [ + 153, + 156 + ], + [ + 155, + 158 + ], + [ + 157, + 159 + ], + [ + 160, + 162 + ], + [ + 161, + 164 + ], + [ + 163 + ], + [ + 165, + 168 + ], + [ + 166 + ], + [ + 167, + 169 + ], + [ + 170, + 172 + ], + [ + 171, + 174 + ], + [ + 173, + 176 + ], + [ + 175, + 178 + ], + [ + 177, + 179 + ], + [ + 180, + 182 + ], + [ + 181, + 184 + ], + [ + 183, + 186 + ], + [ + 185, + 188 + ], + [ + 187, + 189 + ], + [ + 190, + 192 + ], + [ + 191, + 194 + ], + [ + 193 + ], + [ + 195, + 198 + ], + [ + 196 + ], + [ + 197, + 199 + ], + [ + 200, + 202 + ], + [ + 201, + 204 + ], + [ + 203, + 206 + ], + [ + 205, + 208 + ], + [ + 207, + 209 + ], + [ + 210, + 212 + ], + [ + 211, + 214 + ], + [ + 213, + 216 + ], + [ + 215, + 218 + ], + [ + 217, + 219 + ], + [ + 220, + 222 + ], + [ + 221, + 224 + ], + [ + 223 + ], + [ + 225, + 228 + ], + [ + 226 + ], + [ + 227, + 229 + ], + [ + 230, + 232 + ], + [ + 231, + 234 + ], + [ + 233, + 236 + ], + [ + 235, + 238 + ], + [ + 237, + 239 + ], + [ + 240, + 242 + ], + [ + 241, + 244 + ], + [ + 243, + 246 + ], + [ + 245, + 248 + ], + [ + 247, + 249 + ], + [ + 250, + 252 + ], + [ + 251, + 254 + ], + [ + 253 + ], + [ + 255, + 258 + ], + [ + 256 + ], + [ + 257, + 259 + ], + [ + 260, + 262 + ], + [ + 261, + 264 + ], + [ + 263, + 266 + ], + [ + 265, + 268 + ], + [ + 267, + 269 + ], + [ + 270, + 272 + ], + [ + 271, + 274 + ], + [ + 273, + 276 + ], + [ + 275, + 278 + ], + [ + 277, + 279 + ], + [ + 280, + 282 + ], + [ + 281, + 284 + ], + [ + 283 + ], + [ + 285, + 288 + ], + [ + 286 + ], + [ + 287, + 289 + ], + [ + 290, + 292 + ], + [ + 291, + 294 + ], + [ + 293, + 296 + ], + [ + 295, + 298 + ], + [ + 297, + 299 + ], + [ + 300, + 302 + ], + [ + 301, + 304 + ], + [ + 303, + 306 + ], + [ + 305, + 308 + ], + [ + 307, + 309 + ], + [ + 310, + 312 + ], + [ + 311, + 314 + ], + [ + 313 + ], + [ + 315, + 318 + ], + [ + 316 + ], + [ + 317, + 319 + ], + [ + 320, + 322 + ], + [ + 321, + 324 + ], + [ + 323, + 326 + ], + [ + 325, + 328 + ], + [ + 327, + 329 + ], + [ + 330, + 332 + ], + [ + 331, + 334 + ], + [ + 333, + 336 + ], + [ + 335, + 338 + ], + [ + 337, + 339 + ], + [ + 340, + 342 + ], + [ + 341, + 344 + ], + [ + 343 + ], + [ + 345, + 348 + ], + [ + 346 + ], + [ + 347, + 349 + ], + [ + 350, + 352 + ], + [ + 351, + 354 + ], + [ + 353, + 356 + ], + [ + 355, + 358 + ], + [ + 357, + 359 + ] + ] + CombinationMode: "OR" + IgnoreChannels: [ + 70, + 106, + 217, + 54, + 58, + 67, + 98, + 112, + 153, + 254 + ] + LogCategory: "LVDSgates" + Thresholds: [ + 400 + ] + TriggerGatesTag: "pmtfixedthr" + module_type: "LVDSgates" + } + pmtthr: { + Baselines: "pmtconfigbaselines" + NChannels: 360 + OpticalWaveforms: "daqPMT" + OutputCategory: "DiscriminatePMTwaveforms" + ThresholdsFromPMTconfig: "pmtconfig" + TriggerGateBuilder: { + ChannelThresholds: [ + 0 + ] + GateDuration: "160 ns" + tool_type: "FixedTriggerGateBuilderTool" + } + module_type: "DiscriminatePMTwaveformsByChannel" + } + pmttriggerwindows: { + MissingChannels: [ + 70, + 106, + 217, + 54, + 58, + 67, + 98, + 112, + 153, + 254 + ] + Stride: 15 + Thresholds: [ + 400 + ] + TriggerGatesTag: "pmtlvdsgates" + WindowSize: 30 + module_type: "SlidingWindowTrigger" + } + purityana0: { + CryostatFCL: 0 + FillAnaTuple: false + PersistPurityInfo: false + PlaneFCL: 2 + RawModuleLabel: [ + "daqTPCROI:PHYSCRATEDATATPCWW", + "daqTPCROI:PHYSCRATEDATATPCWE", + "daqTPCROI:PHYSCRATEDATATPCEW", + "daqTPCROI:PHYSCRATEDATATPCEE" + ] + ThresholdFCL: 3 + ValoreTauFCL: 600000 + module_type: "ICARUSPurityDQM" + } + purityana1: { + CryostatFCL: 1 + FillAnaTuple: false + PersistPurityInfo: false + PlaneFCL: 2 + RawModuleLabel: [ + "daqTPCROI:PHYSCRATEDATATPCWW", + "daqTPCROI:PHYSCRATEDATATPCWE", + "daqTPCROI:PHYSCRATEDATATPCEW", + "daqTPCROI:PHYSCRATEDATATPCEE" + ] + ThresholdFCL: 3 + ValoreTauFCL: 600000 + module_type: "ICARUSPurityDQM" + } + roifinder1d: { + CorrectROIBaseline: false + DaignosticOutput: false + LeadTrail: 0 + MaxSizeForCorrection: 512 + MinSizeForCorrection: 12 + OutInstanceLabelVec: [ + "PHYSCRATEDATATPCWW", + "PHYSCRATEDATATPCWE", + "PHYSCRATEDATATPCEW", + "PHYSCRATEDATATPCEE" + ] + OutputHistograms: false + OutputMorphed: false + ROIFinderToolVec: { + ROIFinderPlane0: { + Plane: 0 + StructuringElement: [ + 25, + 5 + ] + Threshold: [ + 7.5, + 7.5, + 6 + ] + tool_type: "ROIMorphological2D" + } + ROIFinderPlane1: { + Plane: 1 + StructuringElement: [ + 25, + 5 + ] + Threshold: [ + 7.5, + 7.5, + 6 + ] + tool_type: "ROIMorphological2D" + } + ROIFinderPlane2: { + Plane: 2 + StructuringElement: [ + 25, + 5 + ] + Threshold: [ + 7.5, + 7.5, + 6 + ] + tool_type: "ROIMorphological2D" + } + } + WireModuleLabelVec: [ + "decon1droi:PHYSCRATEDATATPCWW", + "decon1droi:PHYSCRATEDATATPCWE", + "decon1droi:PHYSCRATEDATATPCEW", + "decon1droi:PHYSCRATEDATATPCEE" + ] + module_type: "ROIFinder" + } + roifinder2d: { + CorrectROIBaseline: false + DaignosticOutput: false + LeadTrail: 0 + MaxSizeForCorrection: 512 + MinSizeForCorrection: 12 + OutInstanceLabelVec: [ + "PHYSCRATEDATATPCWW", + "PHYSCRATEDATATPCWE", + "PHYSCRATEDATATPCEW", + "PHYSCRATEDATATPCEE" + ] + OutputHistograms: false + OutputMorphed: false + ROIFinderToolVec: { + ROIFinderPlane0: { + Plane: 0 + ROILabelVec: [ + "roifinder1d:PHYSCRATEDATATPCWW", + "roifinder1d:PHYSCRATEDATATPCWE", + "roifinder1d:PHYSCRATEDATATPCEW", + "roifinder1d:PHYSCRATEDATATPCEE" + ] + tool_type: "ROIFromDecoder" + } + ROIFinderPlane1: { + Plane: 1 + ROILabelVec: [ + "roifinder1d:PHYSCRATEDATATPCWW", + "roifinder1d:PHYSCRATEDATATPCWE", + "roifinder1d:PHYSCRATEDATATPCEW", + "roifinder1d:PHYSCRATEDATATPCEE" + ] + tool_type: "ROIFromDecoder" + } + ROIFinderPlane2: { + Plane: 2 + ROILabelVec: [ + "roifinder1d:PHYSCRATEDATATPCWW", + "roifinder1d:PHYSCRATEDATATPCWE", + "roifinder1d:PHYSCRATEDATATPCEW", + "roifinder1d:PHYSCRATEDATATPCEE" + ] + tool_type: "ROIFromDecoder" + } + } + WireModuleLabelVec: [ + "decon2droiWW:looseLf", + "decon2droiWE:looseLf", + "decon2droiEW:looseLf", + "decon2droiEE:looseLf" + ] + module_type: "ROIFinder" + } + simChannelROI: { + DaignosticOutput: false + OutInstanceLabelVec: [ + "PHYSCRATEDATA" + ] + WireModuleLabelVec: [ + "largeant" + ] + module_type: "SimChannelROI" + } + triggerconfig: { + module_type: "TriggerConfigurationExtraction" + } + triggersimgates: { + BeamGateTag: "beamgate" + Changes: [ + { + Select: { + Types: [ + "BNB" + ] + } + Start: { + SetTo: "-0.2 us" + } + Width: { + Add: "0.5 us" + SetTo: "1.6 us" + } + }, + { + Select: { + Types: [ + "NuMI" + ] + } + Start: { + SetTo: "-0.2 us" + } + Width: { + Add: "0.6 us" + SetTo: "9.5 us" + } + } + ] + module_type: "FixBeamGateInfo" + } + } + streamROOT: [ + "rootOutput" + ] + trigger_paths: [ + "path" + ] +} +process_name: "MCstage0" +services: { + BackTrackerService: { + BackTracker: { + G4ModuleLabel: "largeant" + MinimumHitEnergyFraction: 1e-1 + SimChannelModuleLabel: "largeant" + } + } + ChannelStatusService: { + ChannelStatusProvider: { + AlgName: "SIOVChannelStatusProvider" + DatabaseRetrievalAlg: { + AlgName: "DatabaseRetrievalAlg" + DBFolderName: "tpc_channelstatus_data" + DBTag: "v3r2" + DBUrl: "https://dbdata0vm.fnal.gov:9443/icarus_con_prod/app/" + UseSQLite: true + } + UseDB: true + UseFile: false + } + service_provider: "SIOVChannelStatusICARUSService" + } + DetPedestalService: { + DetPedestalRetrievalAlg: { + AlgName: "DetPedestalRetrievalAlg" + DatabaseRetrievalAlg: { + AlgName: "DatabaseRetrievalAlg" + DBFolderName: "" + DBTag: "" + DBUrl: "" + } + DefaultCollMean: 400 + DefaultCollRms: 3e-1 + DefaultIndMean: 2048 + DefaultIndRms: 3e-1 + DefaultMeanErr: 0 + DefaultRmsErr: 0 + UseDB: false + UseFile: false + } + service_provider: "SIOVDetPedestalService" + } + DetectorClocksService: { + ClockSpeedExternal: 3.125e1 + ClockSpeedOptical: 500 + ClockSpeedTPC: 2.5 + ClockSpeedTrigger: 16 + DefaultBeamTime: 1500 + DefaultTrigTime: 1500 + FramePeriod: 1.6384e3 + G4RefTime: -1500 + InheritClockConfig: true + TrigModuleName: "daqTrigger" + TriggerOffsetTPC: -340 + service_provider: "DetectorClocksServiceStandard" + } + DetectorPropertiesService: { + DriftVelFudgeFactor: 9.9733e-1 + Efield: [ + 4.938e-1, + 7.33e-1, + 9.33e-1 + ] + Electronlifetime: 3000 + ElectronsToADC: 1.208041e-3 + IncludeInterPlanePitchInXTickOffsets: false + InheritNumberTimeSamples: true + NumberTimeSamples: 4096 + ReadOutWindowSize: 4096 + SimpleBoundaryProcess: false + SternheimerA: 1.956e-1 + SternheimerCbar: 5.2146 + SternheimerK: 3 + SternheimerX0: 2e-1 + SternheimerX1: 3 + Temperature: 8.75e1 + TimeOffsetU: 0 + TimeOffsetV: 0 + TimeOffsetY: 0 + TimeOffsetZ: 0 + UseIcarusMicrobooneDriftModel: true + service_provider: "DetectorPropertiesServiceStandard" + } + DuplicateEventTracker: {} + ExptGeoHelperInterface: { + Mapper: { + WirelessChannels: { + CollectionEvenPostChannels: 96 + CollectionEvenPreChannels: 64 + CollectionOddPostChannels: 64 + CollectionOddPreChannels: 96 + FirstInductionPostChannels: 96 + FirstInductionPreChannels: 0 + SecondInductionEvenPostChannels: 64 + SecondInductionEvenPreChannels: 96 + SecondInductionOddPostChannels: 96 + SecondInductionOddPreChannels: 64 + } + tool_type: "ICARUSsplitInductionChannelMapSetupTool" + } + service_provider: "IcarusGeometryHelper" + } + FileCatalogMetadata: { + fileType: "mc" + group: "icarus" + runType: "physics" + } + Geometry: { + ChannelMapping: { + WirelessChannels: { + CollectionEvenPostChannels: 96 + CollectionEvenPreChannels: 64 + CollectionOddPostChannels: 64 + CollectionOddPreChannels: 96 + FirstInductionPostChannels: 96 + FirstInductionPreChannels: 0 + SecondInductionEvenPostChannels: 64 + SecondInductionEvenPreChannels: 96 + SecondInductionOddPostChannels: 96 + SecondInductionOddPreChannels: 64 + } + tool_type: "ICARUSsplitInductionChannelMapSetupTool" + } + DisableWiresInG4: true + GDML: "icarus_refactored_nounderscore_20230918.gdml" + Name: "icarus_v4" + ROOT: "icarus_refactored_nounderscore_20230918.gdml" + SurfaceY: 690 + } + GeometryConfigurationWriter: {} + IICARUSChannelMap: { + ChannelMappingTool: { + CalibDBFileName: "crt_gain_reco_data" + DBFileName: "ChannelMapICARUS_20240318.db" + Tag: "v1r0" + } + DiagnosticOutput: false + service_provider: "ICARUSChannelMapSQLite" + } + IPMTTimingCorrectionService: { + CorrectionTags: { + CablesTag: "v2r4" + CosmicsTag: "v2r1" + LaserTag: "v2r2" + } + Verbose: false + service_provider: "PMTTimingCorrectionService" + } + LArPropertiesService: { + AbsLengthEnergies: [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + AbsLengthSpectrum: [ + 8000, + 8000, + 8000, + 8000, + 8000, + 2000, + 2000, + 2000 + ] + AlphaScintYield: 16800 + AlphaScintYieldRatio: 5.6e-1 + Argon39DecayRate: 0 + AtomicMass: 3.9948e1 + AtomicNumber: 18 + ElectronScintYield: 20000 + ElectronScintYieldRatio: 2.7e-1 + EnableCerenkovLight: false + ExcitationEnergy: 188 + FastScintEnergies: [ + 7.2, + 7.9, + 8.3, + 8.6, + 8.9, + 9.1, + 9.3, + 9.6, + 9.7, + 9.8, + 10, + 1.02e1, + 1.03e1, + 1.06e1, + 11, + 1.16e1, + 1.19e1 + ] + FastScintSpectrum: [ + 0, + 4e-2, + 1.2e-1, + 2.7e-1, + 4.4e-1, + 6.2e-1, + 8e-1, + 9.1e-1, + 9.2e-1, + 8.5e-1, + 7e-1, + 5e-1, + 3.1e-1, + 1.3e-1, + 4e-2, + 1e-2, + 0 + ] + KaonScintYield: 24000 + KaonScintYieldRatio: 2.3e-1 + LoadExtraMatProperties: false + MuonScintYield: 24000 + MuonScintYieldRatio: 2.3e-1 + PionScintYield: 24000 + PionScintYieldRatio: 2.3e-1 + ProtonScintYield: 19200 + ProtonScintYieldRatio: 2.9e-1 + RIndexEnergies: [ + 1.18626, + 1.68626, + 2.18626, + 2.68626, + 3.18626, + 3.68626, + 4.18626, + 4.68626, + 5.18626, + 5.68626, + 6.18626, + 6.68626, + 7.18626, + 7.68626, + 8.18626, + 8.68626, + 9.18626, + 9.68626, + 1.01863e1, + 1.06863e1, + 1.11863e1 + ] + RIndexSpectrum: [ + 1.24664, + 1.2205, + 1.22694, + 1.22932, + 1.23124, + 1.23322, + 1.23545, + 1.23806, + 1.24116, + 1.24489, + 1.24942, + 1.25499, + 1.26197, + 1.2709, + 1.28263, + 1.29865, + 1.32169, + 1.35747, + 1.42039, + 1.56011, + 2.16626 + ] + RadiationLength: 1.955e1 + RayleighEnergies: [ + 1.18626, + 1.68626, + 2.18626, + 2.68626, + 3.18626, + 3.68626, + 4.18626, + 4.68626, + 5.18626, + 5.68626, + 6.18626, + 6.68626, + 7.18626, + 7.68626, + 8.18626, + 8.68626, + 9.18626, + 9.68626, + 1.01863e1, + 1.06863e1, + 1.11863e1 + ] + RayleighSpectrum: [ + 1.2008e6, + 390747, + 128633, + 5.49691e4, + 2.71918e4, + 1.48537e4, + 8.7169e3, + 5.39742e3, + 3.48137e3, + 2.31651e3, + 1.57763e3, + 1.09202e3, + 7.63045e2, + 5.34232e2, + 3.71335e2, + 2.52942e2, + 1.6538e2, + 9.99003e1, + 5.12653e1, + 1.7495e1, + 9.64341e-1 + ] + ReflectiveSurfaceDiffuseFractions: [ + [ + 5e-1, + 5e-1, + 5e-1 + ] + ] + ReflectiveSurfaceEnergies: [ + 1.77, + 2.0675, + 2.481, + 2.819, + 2.953, + 3.1807, + 3.54, + 4.135, + 4.962, + 5.39, + 7, + 15 + ] + ReflectiveSurfaceNames: [ + "STEEL_STAINLESS_Fe7Cr2Ni", + "copper", + "G10", + "vm2000", + "ALUMINUM_Al", + "ALUMINUM_PMT", + "ALUMINUM_CRYO" + ] + ReflectiveSurfaceReflectances: [ + [ + 6.6e-1, + 6.4e-1, + 6.2e-1, + 6e-1, + 5.9e-1, + 5.7e-1, + 5.3e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9.02e-1, + 8.41e-1, + 4.64e-1, + 3.79e-1, + 3.45e-1, + 2.99e-1, + 2.87e-1, + 2.64e-1, + 3.37e-1, + 3e-1, + 0, + 0 + ], + [ + 3.93e-1, + 4.05e-1, + 4.04e-1, + 3.52e-1, + 3.23e-1, + 2.43e-1, + 1.27e-1, + 6.5e-2, + 6.8e-2, + 6.8e-2, + 0, + 0 + ], + [ + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 1e-1, + 1e-1, + 7e-1, + 3e-1, + 0, + 0 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ] + ] + ScintBirksConstant: 6.9e-2 + ScintByParticleType: true + ScintFastTimeConst: 6 + ScintPreScale: 7.3e-2 + ScintResolutionScale: 1 + ScintSlowTimeConst: 1590 + ScintYield: 24000 + ScintYieldRatio: 2.3e-1 + SlowScintEnergies: [ + 7.2, + 7.9, + 8.3, + 8.6, + 8.9, + 9.1, + 9.3, + 9.6, + 9.7, + 9.8, + 10, + 1.02e1, + 1.03e1, + 1.06e1, + 11, + 1.16e1, + 1.19e1 + ] + SlowScintSpectrum: [ + 0, + 4e-2, + 1.2e-1, + 2.7e-1, + 4.4e-1, + 6.2e-1, + 8e-1, + 9.1e-1, + 9.2e-1, + 8.5e-1, + 7e-1, + 5e-1, + 3.1e-1, + 1.3e-1, + 4e-2, + 1e-2, + 0 + ] + TpbAbsorptionEnergies: [ + 5e-2, + 1.77, + 2.0675, + 7.42, + 7.75, + 8.16, + 8.73, + 9.78, + 1.069e1, + 5.039e1 + ] + TpbAbsorptionSpectrum: [ + 100000, + 100000, + 100000, + 1e-3, + 1e-11, + 1e-11, + 1e-11, + 1e-11, + 1e-11, + 1e-11 + ] + TpbEmmisionEnergies: [ + 5e-2, + 1, + 1.5, + 2.25, + 2.481, + 2.819, + 2.952, + 2.988, + 3.024, + 3.1, + 3.14, + 3.1807, + 3.54, + 5.5, + 5.039e1 + ] + TpbEmmisionSpectrum: [ + 0, + 0, + 0, + 5.88e-2, + 2.35e-1, + 8.53e-1, + 1, + 1, + 9.259e-1, + 7.04e-1, + 2.96e-2, + 1.1e-2, + 0, + 0, + 0 + ] + TpbTimeConstant: 2.5 + service_provider: "LArPropertiesServiceStandard" + } + MemoryTracker: { + dbOutput: { + filename: "MemoryReport.db" + overwrite: true + } + } + ParticleInventoryService: { + ParticleInventory: { + EveIdCalculator: "EmEveIdCalculator" + G4ModuleLabel: "largeant" + } + } + PhotonBackTrackerService: { + PhotonBackTracker: { + Delay: 0 + G4ModuleLabel: "largeant" + G4ModuleLabels: [ + "largeant" + ] + MinimumHitEnergyFraction: 1e-1 + } + } + SignalShapingICARUSService: { + DeconNorm: 1 + InitialFFTSize: 4096 + NoiseFactVec: [ + [ + 1.151, + 1.151, + 1.151, + 1.151 + ], + [ + 1.152, + 1.152, + 1.152, + 1.152 + ], + [ + 1.096, + 1.096, + 1.096, + 1.096 + ] + ] + PlaneForNormalization: 2 + PrintResponses: "false" + ResponseTools: { + ResponsePlane0: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 0 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 0 + ResponseType: 0 + SignalType: 0 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" + FilterParametersVec: [ + 1, + 0, + 4, + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 0 + tool_type: "Filter" + } + Plane: 0 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + ResponsePlane1: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 1 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 1 + ResponseType: 1 + SignalType: 0 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" + FilterParametersVec: [ + 1, + 0, + 4, + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 1 + tool_type: "Filter" + } + Plane: 1 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + ResponsePlane2: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 2 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 2 + ResponseType: 2 + SignalType: 1 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? gaus(0) : 0.0" + FilterParametersVec: [ + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 2 + tool_type: "Filter" + } + Plane: 2 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + } + StoreHistograms: true + } + SpaceChargeService: { + EnableCalEfieldSCE: false + EnableCalSpatialSCE: false + EnableCorrSCE: false + EnableSimEfieldSCE: false + EnableSimSpatialSCE: false + InputFilename: "SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root" + RepresentationType: "Voxelized_TH3" + service_provider: "SpaceChargeServiceICARUS" + } + TFileService: { + fileName: "Supplemental-%ifb_%tc-%p.root" + } + TimeTracker: { + dbOutput: { + filename: "TimingReport.db" + overwrite: true + } + printSummary: true + } + message: { + destinations: { + STDCOUT: { + categories: { + default: { + limit: 5 + reportEvery: 1 + } + } + threshold: "WARNING" + type: "cout" + } + } + } + scheduler: { + defaultExceptions: false + } +} +source: { + maxEvents: 10 + module_type: "RootInput" + saveMemoryObjectThreshold: 0 +} diff --git a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPW.txt b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPW.txt new file mode 100644 index 000000000..c241956ff --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPW.txt @@ -0,0 +1,5060 @@ +# Produced from 'fhicl-dump' using: +# Input : stage0W_run2_wc_icarus_mc.fcl +# Policy : cet::filepath_maker +# Path : "FHICL_FILE_PATH" + +outputs: { + rootOutput: { + SelectEvents: [ + "path" + ] + checkFileName: false + compressionLevel: 1 + dataTier: "reconstructed" + fileName: "%ifb_%tc-%p.root" + fileProperties: { + maxInputFiles: 1 + } + module_type: "RootOutput" + saveMemoryObjectThreshold: 0 + } +} +physics: { + analyzers: { + purityinfoana0: { + PrintInfo: false + PurityInfoLabel: "purityana0" + SelectEvents: [ + "reco" + ] + module_type: "TPCPurityInfoAna" + } + purityinfoana1: { + PrintInfo: false + PurityInfoLabel: "purityana1" + SelectEvents: [ + "reco" + ] + module_type: "TPCPurityInfoAna" + } + spanaE: { + Cryostat: 0 + G4Producer: "largeant" + HitProducers: [ + "gaushit2dTPCEE", + "gaushit2dTPCEW" + ] + SimChannelProducer: "daq:simpleSC" + WireProducers: [ + "decon2droiEE:wiener", + "decon2droiEW:wiener" + ] + module_type: "SPAna" + } + spanaW: { + Cryostat: 1 + G4Producer: "largeant" + HitProducers: [ + "gaushit2dTPCWE", + "gaushit2dTPCWW" + ] + SimChannelProducer: "daq:simpleSC" + WireProducers: [ + "decon2droiWE:wiener", + "decon2droiWW:wiener" + ] + module_type: "SPAna" + } + } + end_paths: [ + "outana", + "streamROOT" + ] + filters: { + crtpmtmatchingfilter: { + BNBBeamGateMax: 2300 + BNBBeamGateMin: -550 + BNBinBeamMax: 1300 + BNBinBeamMin: -300 + CrtPmtModuleLabel: "crtpmt" + FilterLevel: "loose" + GlobalT0Offset: 1.599957e6 + MatchBottomCRT: false + NuMIBeamGateMax: 10000 + NuMIBeamGateMin: -550 + NuMIinBeamMax: 9100 + NuMIinBeamMin: -300 + OutputTree: true + PMTADCThresh: 400 + SpillOnly: false + TimeOfFlightInterval: 100 + TriggerConfiguration: "triggerconfig" + TriggerLabel: "daqTrigger" + module_type: "FilterCRTPMTMatching" + nOpHitToTrigger: 5 + } + filterdataintegrity: { + module_type: "FilterDataIntegrity" + } + flashfilterBNB: { + OpFlashProducerList: [ + "opflashCryoE", + "opflashCryoW" + ] + WindowEndTime: 1.8 + WindowStartTime: -2e-1 + module_type: "FilterOpFlash" + } + flashfilterNuMI: { + OpFlashProducerList: [ + "opflashCryoE", + "opflashCryoW" + ] + WindowEndTime: 9.8 + WindowStartTime: -2e-1 + module_type: "FilterOpFlash" + } + triggerfilterBNB: { + TriggerDataLabel: "daqTrigger" + TriggerType: "BNB" + module_type: "TriggerTypeFilter" + } + triggerfilterNuMI: { + TriggerDataLabel: "daqTrigger" + TriggerType: "NuMI" + module_type: "TriggerTypeFilter" + } + triggerfilterOffbeamBNB: { + TriggerDataLabel: "daqTrigger" + TriggerType: "OffbeamBNB" + module_type: "TriggerTypeFilter" + } + triggerfilterOffbeamNuMI: { + TriggerDataLabel: "daqTrigger" + TriggerType: "OffbeamNuMI" + module_type: "TriggerTypeFilter" + } + triggerfilterUnknown: { + TriggerDataLabel: "daqTrigger" + TriggerType: "Unknown" + module_type: "TriggerTypeFilter" + } + } + outana: [ + "spanaE", + "spanaW" + ] + path: [ + "decon2droiWE", + "decon2droiWW", + "roifinder2d", + "gaushit1dTPCEW", + "gaushit1dTPCEE", + "gaushit1dTPCWW", + "gaushit1dTPCWE", + "gaushit2dTPCEW", + "gaushit2dTPCEE", + "gaushit2dTPCWW", + "gaushit2dTPCWE", + "purityana0", + "purityana1" + ] + producers: { + MCDecodeTPCROI: { + CoherentGrouping: 64 + DecoderTool: { + DenoiserType: "default" + FFTCutoffVals: [ + [ + 8, + 800 + ], + [ + 8, + 800 + ], + [ + 4, + 800 + ] + ] + FFTSigmaVals: [ + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ] + ] + FilterModeVec: [ + "e", + "g", + "d" + ] + FilterWindow: 10 + FragmentIDMap: [ + [ + 0, + 5132 + ], + [ + 1, + 5134 + ], + [ + 2, + 5136 + ], + [ + 6, + 5140 + ], + [ + 8, + 5390 + ], + [ + 9, + 5392 + ] + ] + LowFreqCorrection: true + NSigmaForTrucation: 3.5 + StructuringElement: 16 + Threshold: [ + 1, + 1, + 1 + ] + UseFFTFilter: false + fragment_id_offset: 0 + tool_type: "TPCNoiseFilter1D" + } + DiagnosticOutput: false + FragmentsLabelVec: [ + "daq:TPCWW", + "daq:TPCWE", + "daq:TPCEW", + "daq:TPCEE" + ] + OutInstanceLabelVec: [ + "PHYSCRATEDATATPCWW", + "PHYSCRATEDATATPCWE", + "PHYSCRATEDATATPCEW", + "PHYSCRATEDATATPCEE" + ] + OutputCoherentPath: "Cor" + OutputCorrection: false + OutputRawWavePath: "RAW" + OutputRawWaveform: false + module_type: "MCDecoderICARUSTPCwROI" + } + crthit: { + CrtModuleLabel: "crtdaq" + HitAlg: { + CSVFile: "data.csv" + CoinWindow: 150 + CrtWindow: 3e6 + Data: false + GlobalT0Offset: 1.6e6 + PEThresh: 7.5 + PropDelay: 6.2e-2 + QPed: 60 + QSlope: 70 + SiPMtoFEBdelay: 0 + UseReadoutWindow: false + Verbose: false + outCSVFile: false + topGain: 110 + topPed: 160 + } + TriggerLabel: "daqTrigger" + module_type: "icaruscode/CRT/CRTSimHitProducer" + } + crtpmt: { + BNBBeamGateMax: 2300 + BNBBeamGateMin: -550 + BNBinBeamMax: 1300 + BNBinBeamMin: -300 + CrtHitModuleLabel: "crthit" + GlobalT0Offset: 1.599957e6 + MatchBottomCRT: false + NuMIBeamGateMax: 10000 + NuMIBeamGateMin: -550 + NuMIinBeamMax: 9100 + NuMIinBeamMin: -300 + OpFlashModuleLabels: [ + "opflashCryoE", + "opflashCryoW" + ] + PMTADCThresh: 400 + TimeOfFlightInterval: 100 + TriggerLabel: "daqTrigger" + module_type: "icaruscode/CRT/CRTPMTMatchingProducer" + nOpHitToTrigger: 5 + } + crttrack: { + DataLabelHits: "crthit" + StoreTrack: 1 + TrackAlg: { + AverageHitDistance: 30 + DistanceLimit: 25 + TimeLimit: 1e-1 + } + TrackMethodType: 4 + UseTopPlane: false + module_type: "icaruscode/CRT/CRTTrackProducer" + } + daqCRT: { + FEB_delay_side: [ + [ + 31, + 240 + ], + [ + 32, + 260 + ], + [ + 33, + 280 + ], + [ + 34, + 330 + ], + [ + 35, + 350 + ], + [ + 36, + 370 + ], + [ + 25, + 240 + ], + [ + 26, + 260 + ], + [ + 27, + 280 + ], + [ + 28, + 330 + ], + [ + 29, + 350 + ], + [ + 30, + 370 + ], + [ + 43, + 230 + ], + [ + 44, + 250 + ], + [ + 45, + 270 + ], + [ + 46, + 316 + ], + [ + 47, + 336 + ], + [ + 48, + 356 + ], + [ + 37, + 230 + ], + [ + 38, + 250 + ], + [ + 39, + 270 + ], + [ + 40, + 316 + ], + [ + 41, + 336 + ], + [ + 42, + 356 + ], + [ + 55, + 245 + ], + [ + 56, + 265 + ], + [ + 57, + 285 + ], + [ + 58, + 331 + ], + [ + 59, + 351 + ], + [ + 60, + 371 + ], + [ + 49, + 245 + ], + [ + 50, + 265 + ], + [ + 51, + 285 + ], + [ + 52, + 331 + ], + [ + 53, + 351 + ], + [ + 54, + 371 + ], + [ + 3, + 364 + ], + [ + 1, + 384 + ], + [ + 6, + 404 + ], + [ + 7, + 450 + ], + [ + 8, + 433 + ], + [ + 9, + 453 + ], + [ + 5, + 470 + ], + [ + 4, + 490 + ], + [ + 92, + 237 + ], + [ + 93, + 257 + ], + [ + 94, + 303 + ], + [ + 95, + 323 + ], + [ + 96, + 343 + ], + [ + 97, + 390 + ], + [ + 85, + 237 + ], + [ + 86, + 257 + ], + [ + 87, + 277 + ], + [ + 88, + 297 + ], + [ + 89, + 317 + ], + [ + 90, + 337 + ], + [ + 91, + 357 + ], + [ + 17, + 359 + ], + [ + 19, + 379 + ], + [ + 21, + 399 + ], + [ + 22, + 448 + ], + [ + 23, + 468 + ], + [ + 24, + 488 + ], + [ + 10, + 359 + ], + [ + 11, + 379 + ], + [ + 13, + 399 + ], + [ + 14, + 448 + ], + [ + 15, + 468 + ], + [ + 16, + 488 + ], + [ + 67, + 348 + ], + [ + 68, + 368 + ], + [ + 69, + 388 + ], + [ + 70, + 434 + ], + [ + 71, + 454 + ], + [ + 72, + 474 + ], + [ + 61, + 348 + ], + [ + 62, + 368 + ], + [ + 63, + 388 + ], + [ + 64, + 434 + ], + [ + 65, + 454 + ], + [ + 66, + 474 + ], + [ + 84, + 364 + ], + [ + 83, + 384 + ], + [ + 82, + 404 + ], + [ + 81, + 450 + ], + [ + 80, + 470 + ], + [ + 79, + 490 + ], + [ + 78, + 364 + ], + [ + 77, + 384 + ], + [ + 76, + 404 + ], + [ + 75, + 450 + ], + [ + 74, + 470 + ], + [ + 73, + 490 + ] + ] + FEB_delay_top: [ + [ + 211, + 414 + ], + [ + 212, + 398 + ], + [ + 81, + 283 + ], + [ + 119, + 298 + ], + [ + 87, + 313 + ], + [ + 92, + 329 + ], + [ + 180, + 344 + ], + [ + 97, + 359 + ], + [ + 174, + 374 + ], + [ + 189, + 420 + ], + [ + 190, + 436 + ], + [ + 80, + 451 + ], + [ + 162, + 466 + ], + [ + 64, + 482 + ], + [ + 139, + 451 + ], + [ + 185, + 466 + ], + [ + 165, + 436 + ], + [ + 148, + 451 + ], + [ + 147, + 406 + ], + [ + 105, + 421 + ], + [ + 113, + 528 + ], + [ + 172, + 298 + ], + [ + 114, + 313 + ], + [ + 100, + 328 + ], + [ + 150, + 344 + ], + [ + 238, + 390 + ], + [ + 234, + 405 + ], + [ + 138, + 390 + ], + [ + 170, + 405 + ], + [ + 101, + 420 + ], + [ + 142, + 435 + ], + [ + 6, + 481 + ], + [ + 232, + 421 + ], + [ + 237, + 467 + ], + [ + 239, + 391 + ], + [ + 125, + 298 + ], + [ + 116, + 314 + ], + [ + 104, + 329 + ], + [ + 91, + 344 + ], + [ + 88, + 360 + ], + [ + 176, + 359 + ], + [ + 67, + 374 + ], + [ + 61, + 512 + ], + [ + 177, + 497 + ], + [ + 95, + 405 + ], + [ + 132, + 390 + ], + [ + 120, + 375 + ], + [ + 130, + 513 + ], + [ + 94, + 497 + ], + [ + 181, + 284 + ], + [ + 124, + 299 + ], + [ + 152, + 314 + ], + [ + 90, + 482 + ], + [ + 183, + 498 + ], + [ + 241, + 513 + ], + [ + 231, + 437 + ], + [ + 117, + 452 + ], + [ + 126, + 467 + ], + [ + 98, + 329 + ], + [ + 173, + 345 + ], + [ + 169, + 360 + ], + [ + 144, + 375 + ], + [ + 102, + 482 + ], + [ + 233, + 283 + ], + [ + 164, + 299 + ], + [ + 161, + 314 + ], + [ + 141, + 482 + ], + [ + 160, + 498 + ], + [ + 137, + 513 + ], + [ + 182, + 436 + ], + [ + 107, + 452 + ], + [ + 252, + 467 + ], + [ + 203, + 329 + ], + [ + 122, + 345 + ], + [ + 2, + 360 + ], + [ + 112, + 375 + ], + [ + 202, + 482 + ], + [ + 66, + 298 + ], + [ + 247, + 314 + ], + [ + 198, + 329 + ], + [ + 243, + 344 + ], + [ + 72, + 360 + ], + [ + 63, + 404 + ], + [ + 82, + 572 + ], + [ + 244, + 557 + ], + [ + 204, + 541 + ], + [ + 248, + 405 + ], + [ + 249, + 390 + ], + [ + 250, + 375 + ], + [ + 246, + 513 + ], + [ + 135, + 497 + ], + [ + 253, + 342 + ], + [ + 245, + 358 + ], + [ + 65, + 373 + ], + [ + 57, + 388 + ], + [ + 187, + 391 + ], + [ + 251, + 419 + ], + [ + 70, + 434 + ], + [ + 155, + 449 + ], + [ + 154, + 465 + ], + [ + 85, + 480 + ], + [ + 115, + 526 + ], + [ + 60, + 421 + ], + [ + 59, + 467 + ], + [ + 62, + 391 + ], + [ + 186, + 284 + ], + [ + 83, + 299 + ], + [ + 254, + 314 + ], + [ + 166, + 330 + ], + [ + 178, + 345 + ], + [ + 136, + 360 + ], + [ + 184, + 375 + ], + [ + 240, + 406 + ], + [ + 242, + 421 + ], + [ + 188, + 437 + ], + [ + 58, + 452 + ], + [ + 143, + 467 + ], + [ + 235, + 483 + ], + [ + 134, + 495 + ], + [ + 129, + 511 + ], + [ + 145, + 436 + ], + [ + 110, + 451 + ], + [ + 133, + 406 + ], + [ + 168, + 421 + ], + [ + 179, + 528 + ] + ] + module_type: "DecoderICARUSCRT" + } + daqPMT: { + BoardSetup: [ + { + Name: "icaruspmtwwtop01" + SpecialChannels: [ + { + Channel: 24689 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwtop02" + SpecialChannels: [ + { + Channel: 12402 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwtop03" + SpecialChannels: [ + { + Channel: 8307 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwbot01" + SpecialChannels: [ + { + Channel: 24673 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwbot02" + SpecialChannels: [ + { + Channel: 12386 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwwbot03" + SpecialChannels: [ + { + Channel: 8291 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwetop01" + SpecialChannels: [ + { + Channel: 24657 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwetop02" + SpecialChannels: [ + { + Channel: 12370 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwetop03" + SpecialChannels: [ + { + Channel: 8275 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwebot01" + SpecialChannels: [ + { + Channel: 24641 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwebot02" + SpecialChannels: [ + { + Channel: 12354 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtwebot03" + SpecialChannels: [ + { + Channel: 8259 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewtop01" + SpecialChannels: [ + { + Channel: 24625 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewtop02" + SpecialChannels: [ + { + Channel: 12338 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewtop03" + SpecialChannels: [ + { + Channel: 8243 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewbot01" + SpecialChannels: [ + { + Channel: 24609 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewbot02" + SpecialChannels: [ + { + Channel: 12322 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmtewbot03" + SpecialChannels: [ + { + Channel: 8227 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteetop01" + SpecialChannels: [ + { + Channel: 24593 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteetop02" + SpecialChannels: [ + { + Channel: 12306 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteetop03" + SpecialChannels: [ + { + Channel: 8211 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteebot01" + SpecialChannels: [ + { + Channel: 24577 + ChannelIndex: 15 + InstanceName: "globtrg" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteebot02" + SpecialChannels: [ + { + Channel: 12290 + ChannelIndex: 15 + InstanceName: "EW" + OnlyOnGlobalTrigger: true + } + ] + }, + { + Name: "icaruspmteebot03" + SpecialChannels: [ + { + Channel: 8195 + ChannelIndex: 15 + InstanceName: "RWM" + OnlyOnGlobalTrigger: true + } + ] + } + ] + CorrectionInstance: "globtrg" + FragmentsLabels: [ + "daq:CAENV1730", + "daq:ContainerCAENV1730" + ] + PMTconfigTag: "pmtconfig" + TriggerTag: "daqTrigger" + module_type: "DaqDecoderICARUSPMT" + } + daqPMTonbeam: { + SelectInterval: { + Duration: "26 us" + Start: "-7 us" + } + TimeReference: "BeamGate" + WaveformBaselineAssns: "pmtbaselines" + Waveforms: "daqPMT" + module_type: "CopyBeamTimePMTwaveforms" + } + daqTPC: { + DecoderTool: { + CoherentGrouping: 32 + FFTCutoffVals: [ + [ + 8, + 800 + ], + [ + 8, + 800 + ], + [ + 3, + 800 + ] + ] + FFTSigmaVals: [ + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ], + [ + 2, + 20 + ] + ] + FilterModeVec: [ + "e", + "g", + "d" + ] + FilterWindow: 10 + FragmentIDMap: [ + [ + 0, + 5132 + ], + [ + 1, + 5134 + ], + [ + 2, + 5136 + ], + [ + 6, + 5140 + ], + [ + 8, + 5390 + ], + [ + 9, + 5392 + ] + ] + NSigmaForTrucation: 3.5 + StructuringElement: 16 + Threshold: [ + 2.75, + 2.75, + 2.75 + ] + UseFFTFilter: false + fragment_id_offset: 0 + tool_type: "TPCDecoderFilter1D" + } + DiagnosticOutput: false + FragmentsLabel: "daq:PHYSCRATEDATA" + FragmentsLabelVec: [ + "daq:PHYSCRATEDATATPCWW", + "daq:PHYSCRATEDATATPCWE", + "daq:PHYSCRATEDATATPCEW", + "daq:PHYSCRATEDATATPCEE" + ] + OutputCoherentPath: "Cor" + OutputCorrection: false + OutputRawWavePath: "RAW" + OutputRawWaveform: false + module_type: "DaqDecoderICARUSTPC" + } + daqTPCROI: { + CoherentGrouping: 64 + DecoderTool: { + DenoiserType: "default" + FFTCutoffVals: [ + [ + 8, + 800 + ], + [ + 8, + 800 + ], + [ + 4, + 800 + ] + ] + FFTSigmaVals: [ + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ], + [ + 1.5, + 20 + ] + ] + FilterModeVec: [ + "e", + "g", + "d" + ] + FilterWindow: 10 + FragmentIDMap: [ + [ + 0, + 5132 + ], + [ + 1, + 5134 + ], + [ + 2, + 5136 + ], + [ + 6, + 5140 + ], + [ + 8, + 5390 + ], + [ + 9, + 5392 + ] + ] + LowFreqCorrection: true + NSigmaForTrucation: 3.5 + StructuringElement: 16 + Threshold: [ + 1, + 1, + 1 + ] + UseFFTFilter: false + fragment_id_offset: 0 + tool_type: "TPCNoiseFilter1D" + } + DiagnosticOutput: false + FragmentsLabelVec: [ + "daq:PHYSCRATEDATATPCWW", + "daq:PHYSCRATEDATATPCWE", + "daq:PHYSCRATEDATATPCEW", + "daq:PHYSCRATEDATATPCEE" + ] + OutputCoherentPath: "Cor" + OutputCorrection: false + OutputRawWavePath: "RAW" + OutputRawWaveform: false + module_type: "DaqDecoderICARUSTPCwROI" + } + daqTrigger: { + DecoderTool: { + Decoders: [ + { + FragmentsLabel: "daq:ICARUSTriggerUDP" + Generator: "ICARUSTriggerUDP" + ToolConfig: { + TrigConfigLabel: "triggerconfig" + tool_type: "TriggerDecoder" + } + }, + { + FragmentsLabel: "daq:ICARUSTriggerV2" + Generator: "ICARUSTriggerV2" + ToolConfig: { + TrigConfigLabel: "triggerconfig" + tool_type: "TriggerDecoderV2" + } + }, + { + FragmentsLabel: "daq:ICARUSTriggerV3" + Generator: "ICARUSTriggerV3" + ToolConfig: { + TrigConfigLabel: "triggerconfig" + tool_type: "TriggerDecoderV3" + } + } + ] + TrigConfigLabel: "triggerconfig" + tool_type: "TriggerDecoderDispatcher" + } + FragmentsLabel: "" + module_type: "DaqDecoderICARUSTrigger" + } + decon1droi: { + Baseline: { + MaxROILength: 100 + tool_type: "icaruscode/TPC/SignalProcessing/RecoWire/DeconTools/BaselineMostProbAve" + } + Deconvolution: { + Baseline: { + MaxROILength: 100 + tool_type: "icaruscode/TPC/SignalProcessing/RecoWire/DeconTools/BaselineMostProbAve" + } + DoBaselineSub: true + DodQdxCalib: false + MinROIAverageTickThreshold: -5e-1 + dQdxCalibFileName: "dQdxCalibrationPlanev1.txt" + tool_type: "FullWireDeconvolution" + } + MinAllowedChannelStatus: 3 + NoiseSource: 3 + OutputHistograms: false + ROIFinderToolVec: { + ROIFinderToolPlane0: { + Plane: 0 + roiLeadTrailPad: [ + 2000, + 2000 + ] + tool_type: "ROIFinderNOP" + } + ROIFinderToolPlane1: { + Plane: 1 + roiLeadTrailPad: [ + 2000, + 2000 + ] + tool_type: "ROIFinderNOP" + } + ROIFinderToolPlane2: { + Plane: 2 + roiLeadTrailPad: [ + 2000, + 2000 + ] + tool_type: "ROIFinderNOP" + } + } + RawDigitLabelVec: [ + "MCDecodeTPCROI:PHYSCRATEDATATPCWW", + "MCDecodeTPCROI:PHYSCRATEDATATPCWE", + "MCDecodeTPCROI:PHYSCRATEDATATPCEW", + "MCDecodeTPCROI:PHYSCRATEDATATPCEE" + ] + SaveWireWF: 0 + TruncRMSMinFraction: 6e-1 + TruncRMSThreshold: 6 + module_type: "Decon1DROI" + } + decon2droi: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc0" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver0" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "daqTPC" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 0 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft" + ] + tool_type: "WCLS" + } + } + decon2droiEE: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc0" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver0" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEE" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 0 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + Gaus_wide_sigma: 1.2e-1 + Wiener_tight_U_power: 3.76194 + Wiener_tight_U_sigma: 1.48788e-1 + Wiener_tight_V_power: 4.36125 + Wiener_tight_V_sigma: 1.596568e-1 + Wiener_tight_W_power: 3.35324 + Wiener_tight_W_sigma: 1.3623e-1 + Wire_col_sigma: 3 + Wire_ind_sigma: 7.5e-1 + gain0: 1.19918701e1 + gain1: 1.21420344e1 + gain2: 1.30261362e1 + shaping0: 1.3 + shaping1: 1.45 + shaping2: 1.3 + } + tool_type: "WCLS" + } + } + decon2droiEW: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc1" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver1" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEW" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 1 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + Gaus_wide_sigma: 1.2e-1 + Wiener_tight_U_power: 3.76194 + Wiener_tight_U_sigma: 1.48788e-1 + Wiener_tight_V_power: 4.36125 + Wiener_tight_V_sigma: 1.596568e-1 + Wiener_tight_W_power: 3.35324 + Wiener_tight_W_sigma: 1.3623e-1 + Wire_col_sigma: 3 + Wire_ind_sigma: 7.5e-1 + gain0: 1.19918701e1 + gain1: 1.21420344e1 + gain2: 1.30261362e1 + shaping0: 1.3 + shaping1: 1.45 + shaping2: 1.3 + } + tool_type: "WCLS" + } + } + decon2droiWE: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc2" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver2" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWE" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 2 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + Gaus_wide_sigma: 1.2e-1 + Wiener_tight_U_power: 3.76194 + Wiener_tight_U_sigma: 1.48788e-1 + Wiener_tight_V_power: 4.36125 + Wiener_tight_V_sigma: 1.596568e-1 + Wiener_tight_W_power: 3.35324 + Wiener_tight_W_sigma: 1.3623e-1 + Wire_col_sigma: 3 + Wire_ind_sigma: 7.5e-1 + gain0: 1.19918701e1 + gain1: 1.21420344e1 + gain2: 1.30261362e1 + shaping0: 1.3 + shaping1: 1.45 + shaping2: 1.3 + } + tool_type: "WCLS" + } + } + decon2droiWW: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" + ] + inputers: [ + "wclsRawFrameSource:rfsrc3" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsFrameSaver:spsaver3" + ] + params: { + epoch: "after" + file_rcresp: "icarus_fnal_rc_tail.json" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWW" + reality: "data" + signal_output_form: "dense" + tpc_volume_label: 3 + } + plugins: [ + "WireCellGen", + "WireCellSigProc", + "WireCellRoot", + "WireCellPgraph", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + Gaus_wide_sigma: 1.2e-1 + Wiener_tight_U_power: 3.76194 + Wiener_tight_U_sigma: 1.48788e-1 + Wiener_tight_V_power: 4.36125 + Wiener_tight_V_sigma: 1.596568e-1 + Wiener_tight_W_power: 3.35324 + Wiener_tight_W_sigma: 1.3623e-1 + Wire_col_sigma: 3 + Wire_ind_sigma: 7.5e-1 + gain0: 1.19918701e1 + gain1: 1.21420344e1 + gain2: 1.30261362e1 + shaping0: 1.3 + shaping1: 1.45 + shaping2: 1.3 + } + tool_type: "WCLS" + } + } + emuTrigger: { + BeamGates: "triggersimgates" + EmitEmpty: true + ExtraInfo: true + Pattern: { + inMainWindow: 3 + sumOfOppositeWindows: 5 + } + Thresholds: [ + 400 + ] + TriggerGatesTag: "pmttriggerwindows" + TriggerTimeResolution: "8 ns" + module_type: "TriggerSimulationOnGates" + } + gaushit1dTPCEE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit1dTPCEW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit1dTPCWE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCWE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit1dTPCWW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCWW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit2dTPCEE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "decon2droiEE:gauss" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit2dTPCEW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "decon2droiEW:gauss" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit2dTPCWE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "decon2droiWE:gauss" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gaushit2dTPCWW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "decon2droiWW:gauss" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 9.5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 9 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + module_type: "GausHitFinder" + } + gausshitTPCEE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + gaushit2dTPCWW: { + HitFinderToolVec: { + CandidateHitsPlane0: { + RoiThreshold: 9 + } + } + } + module_type: "GaussHitFinderICARUS" + } + gausshitTPCEW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + gaushit2dTPCWW: { + HitFinderToolVec: { + CandidateHitsPlane0: { + RoiThreshold: 9 + } + } + } + module_type: "GaussHitFinderICARUS" + } + gausshitTPCWE: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWE" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + gaushit2dTPCWW: { + HitFinderToolVec: { + CandidateHitsPlane0: { + RoiThreshold: 9 + } + } + } + module_type: "GaussHitFinderICARUS" + } + gausshitTPCWW: { + AllHitsInstanceName: "" + AreaMethod: 0 + AreaNorms: [ + 1, + 1, + 1 + ] + CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWW" + Chi2NDF: 500 + FilterHits: false + HitFilterAlg: { + AlgName: "HitFilterAlg" + MinPulseHeight: [ + 5, + 5, + 5 + ] + MinPulseSigma: [ + 1, + 1, + 1 + ] + } + HitFinderToolVec: { + CandidateHitsPlane0: { + Plane: 0 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane1: { + Plane: 1 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + CandidateHitsPlane2: { + Plane: 2 + RoiThreshold: 5 + tool_type: "CandHitStandard" + } + } + LongMaxHits: [ + 25, + 25, + 25 + ] + LongPulseWidth: [ + 10, + 10, + 10 + ] + MaxMultiHit: 5 + PeakFitter: { + FloatBaseline: false + MaxWidthMult: 3 + MinWidth: 1 + PeakAmpRange: 2 + PeakRangeFact: 2 + Refit: false + RefitImprovement: 2 + RefitThreshold: 40 + tool_type: "PeakFitterMrqdt" + } + PulseHeightCuts: [ + 3, + 3, + 3 + ] + PulseRatioCuts: [ + 3.5e-1, + 4e-1, + 2e-1 + ] + PulseWidthCuts: [ + 2, + 1.5, + 1 + ] + TryNplus1Fits: false + gaushit2dTPCWW: { + HitFinderToolVec: { + CandidateHitsPlane0: { + RoiThreshold: 9 + } + } + } + module_type: "GaussHitFinderICARUS" + } + mcophit: { + MergePeriod: 1e-2 + SPEAmplitude: 2.64258e1 + SPEArea: 2.56658e2 + SimPhotonsProducer: "largeant" + module_type: "ICARUSMCOpHit" + } + opdetonbeam: { + SelectInterval: { + Duration: "26 us" + Start: "-7 us" + } + TimeReference: "BeamGate" + WaveformBaselineAssns: "pmtbaselines" + Waveforms: "opdaq" + module_type: "CopyBeamTimePMTwaveforms" + } + opflashCryoE: { + AlgoConfig: { + DebugMode: false + HitVetoRangeEnd: [] + HitVetoRangeStart: [] + IntegralTime: 1 + MinMultCoinc: 5 + MinPECoinc: 100 + OpChannelRange: [ + 0, + 179 + ] + PEThreshold: 100 + PEThresholdHit: 1 + PreSample: 2e-2 + TimeResolution: 1e-2 + VetoSize: 1 + } + FlashFinderAlgo: "SimpleFlashAlgo" + OpHitProducer: "ophit" + PECalib: { + SPEAreaGain: 2.56658e2 + } + module_type: "ICARUSFlashFinder" + } + opflashCryoW: { + AlgoConfig: { + DebugMode: false + HitVetoRangeEnd: [] + HitVetoRangeStart: [] + IntegralTime: 1 + MinMultCoinc: 5 + MinPECoinc: 100 + OpChannelRange: [ + 180, + 359 + ] + PEThreshold: 100 + PEThresholdHit: 1 + PreSample: 2e-2 + TimeResolution: 1e-2 + VetoSize: 1 + } + FlashFinderAlgo: "SimpleFlashAlgo" + OpHitProducer: "ophit" + PECalib: { + SPEAreaGain: 2.56658e2 + } + module_type: "ICARUSFlashFinder" + } + ophit: { + AreaToPE: true + ChannelMasks: [] + GenModule: "generator" + HitAlgoPset: { + ADCThreshold: 10 + EndADCThreshold: 2 + EndNSigmaThreshold: 1 + MinPulseWidth: 5 + NSigmaThreshold: 3 + Name: "SlidingWindow" + NumPostSample: 10 + NumPreSample: 5 + PositivePolarity: false + TailADCThreshold: 6 + TailNSigmaThreshold: 2 + Verbosity: false + } + HitThreshold: 2e-1 + InputLabels: [] + InputModule: "opdaq" + PedAlgoPset: { + DiffADCCounts: 2 + DiffBetweenGapsThreshold: 2 + MaxSigma: 5 + NPrePostSamples: 5 + Name: "RollingMean" + PedRangeMax: 16000 + PedRangeMin: 14000 + SampleSize: 20 + Threshold: 1.5 + } + RiseTimeCalculator: { + PeakRatio: 1.5e-1 + tool_type: "RiseTimeThreshold" + } + SPEArea: 2.56658e2 + SPEShift: 0 + UseStartTime: false + module_type: "OpHitFinder" + reco_man: { + module_type: "PulseRecoManager" + } + } + ophitfull: { + CorrectCosmics: true + CorrectLaser: true + InputLabels: [ + "ophitfulluncorrected" + ] + Verbose: false + module_type: "OpHitTimingCorrection" + } + ophitfulluncorrected: { + AreaToPE: true + ChannelMasks: [] + GenModule: "generator" + HitAlgoPset: { + ADCThreshold: 10 + EndADCThreshold: 2 + EndNSigmaThreshold: 1 + MinPulseWidth: 5 + NSigmaThreshold: 3 + Name: "SlidingWindow" + NumPostSample: 10 + NumPreSample: 5 + PositivePolarity: false + TailADCThreshold: 6 + TailNSigmaThreshold: 2 + Verbosity: false + } + HitThreshold: 2e-1 + InputLabels: [] + InputModule: "daqPMT" + OutputFile: "ophit_debug.root" + PedAlgoPset: { + DiffADCCounts: 2 + DiffBetweenGapsThreshold: 2 + MaxSigma: 5 + NPrePostSamples: 5 + Name: "RollingMean" + PedRangeMax: 16000 + PedRangeMin: 14000 + SampleSize: 20 + Threshold: 1.5 + } + RiseTimeCalculator: { + PeakRatio: 1.5e-1 + tool_type: "RiseTimeThreshold" + } + SPEArea: 2.56658e2 + SPEShift: 0 + UseStartTime: false + module_type: "FullOpHitFinder" + reco_man: { + module_type: "PulseRecoManager" + } + } + ophituncorrected: { + AreaToPE: true + ChannelMasks: [] + GenModule: "generator" + HitAlgoPset: { + ADCThreshold: 10 + EndADCThreshold: 2 + EndNSigmaThreshold: 1 + MinPulseWidth: 5 + NSigmaThreshold: 3 + Name: "SlidingWindow" + NumPostSample: 10 + NumPreSample: 5 + PositivePolarity: false + TailADCThreshold: 6 + TailNSigmaThreshold: 2 + Verbosity: false + } + HitThreshold: 2e-1 + InputLabels: [] + InputModule: "daqPMT" + PedAlgoPset: { + DiffADCCounts: 2 + DiffBetweenGapsThreshold: 2 + MaxSigma: 5 + NPrePostSamples: 5 + Name: "RollingMean" + PedRangeMax: 16000 + PedRangeMin: 14000 + SampleSize: 20 + Threshold: 1.5 + } + RiseTimeCalculator: { + PeakRatio: 1.5e-1 + tool_type: "RiseTimeThreshold" + } + SPEArea: 2.56658e2 + SPEShift: 0 + UseStartTime: false + module_type: "OpHitFinder" + reco_man: { + module_type: "PulseRecoManager" + } + } + pmtbaselines: { + AlgoParams: { + AcceptedSampleRangeRMS: 5 + ExcessSampleLimit: 4 + } + ExcludeSpillTimeIfMoreThan: 8 + OpticalWaveforms: "opdaq" + PlotBaselines: false + PretriggerBufferFractionForBaseline: 5e-1 + PretriggerBufferSize: 500 + module_type: "PMTWaveformBaselinesFromChannelData" + } + pmtconfig: { + AssignOfflineChannelIDs: true + module_type: "PMTconfigurationExtraction" + } + pmtconfigbaselines: { + OpticalWaveforms: "daqPMT" + OutputCategory: "PMTWaveformBaselines" + PMTconfigurationTag: "pmtconfig" + PlotBaselines: false + PrintBaselines: false + module_type: "PMTWaveformBaselinesFromReadoutConfiguration" + } + pmtfixedthr: { + Baseline: 1.49995e4 + NChannels: 360 + OpticalWaveforms: "opdaq" + OutputCategory: "DiscriminatePMTwaveforms" + TriggerGateBuilder: { + ChannelThresholds: [ + 18, + 300, + 400, + 600 + ] + GateDuration: "160 ns" + tool_type: "FixedTriggerGateBuilderTool" + } + module_type: "DiscriminatePMTwaveforms" + } + pmtlvdsgates: { + ChannelPairing: [ + [ + 0, + 2 + ], + [ + 1, + 4 + ], + [ + 3, + 6 + ], + [ + 5, + 8 + ], + [ + 7, + 9 + ], + [ + 10, + 12 + ], + [ + 11, + 14 + ], + [ + 13 + ], + [ + 15, + 18 + ], + [ + 16 + ], + [ + 17, + 19 + ], + [ + 20, + 22 + ], + [ + 21, + 24 + ], + [ + 23, + 26 + ], + [ + 25, + 28 + ], + [ + 27, + 29 + ], + [ + 30, + 32 + ], + [ + 31, + 34 + ], + [ + 33, + 36 + ], + [ + 35, + 38 + ], + [ + 37, + 39 + ], + [ + 40, + 42 + ], + [ + 41, + 44 + ], + [ + 43 + ], + [ + 45, + 48 + ], + [ + 46 + ], + [ + 47, + 49 + ], + [ + 50, + 52 + ], + [ + 51, + 54 + ], + [ + 53, + 56 + ], + [ + 55, + 58 + ], + [ + 57, + 59 + ], + [ + 60, + 62 + ], + [ + 61, + 64 + ], + [ + 63, + 66 + ], + [ + 65, + 68 + ], + [ + 67, + 69 + ], + [ + 70, + 72 + ], + [ + 71, + 74 + ], + [ + 73 + ], + [ + 75, + 78 + ], + [ + 76 + ], + [ + 77, + 79 + ], + [ + 80, + 82 + ], + [ + 81, + 84 + ], + [ + 83, + 86 + ], + [ + 85, + 88 + ], + [ + 87, + 89 + ], + [ + 90, + 92 + ], + [ + 91, + 94 + ], + [ + 93, + 96 + ], + [ + 95, + 98 + ], + [ + 97, + 99 + ], + [ + 100, + 102 + ], + [ + 101, + 104 + ], + [ + 103 + ], + [ + 105, + 108 + ], + [ + 106 + ], + [ + 107, + 109 + ], + [ + 110, + 112 + ], + [ + 111, + 114 + ], + [ + 113, + 116 + ], + [ + 115, + 118 + ], + [ + 117, + 119 + ], + [ + 120, + 122 + ], + [ + 121, + 124 + ], + [ + 123, + 126 + ], + [ + 125, + 128 + ], + [ + 127, + 129 + ], + [ + 130, + 132 + ], + [ + 131, + 134 + ], + [ + 133 + ], + [ + 135, + 138 + ], + [ + 136 + ], + [ + 137, + 139 + ], + [ + 140, + 142 + ], + [ + 141, + 144 + ], + [ + 143, + 146 + ], + [ + 145, + 148 + ], + [ + 147, + 149 + ], + [ + 150, + 152 + ], + [ + 151, + 154 + ], + [ + 153, + 156 + ], + [ + 155, + 158 + ], + [ + 157, + 159 + ], + [ + 160, + 162 + ], + [ + 161, + 164 + ], + [ + 163 + ], + [ + 165, + 168 + ], + [ + 166 + ], + [ + 167, + 169 + ], + [ + 170, + 172 + ], + [ + 171, + 174 + ], + [ + 173, + 176 + ], + [ + 175, + 178 + ], + [ + 177, + 179 + ], + [ + 180, + 182 + ], + [ + 181, + 184 + ], + [ + 183, + 186 + ], + [ + 185, + 188 + ], + [ + 187, + 189 + ], + [ + 190, + 192 + ], + [ + 191, + 194 + ], + [ + 193 + ], + [ + 195, + 198 + ], + [ + 196 + ], + [ + 197, + 199 + ], + [ + 200, + 202 + ], + [ + 201, + 204 + ], + [ + 203, + 206 + ], + [ + 205, + 208 + ], + [ + 207, + 209 + ], + [ + 210, + 212 + ], + [ + 211, + 214 + ], + [ + 213, + 216 + ], + [ + 215, + 218 + ], + [ + 217, + 219 + ], + [ + 220, + 222 + ], + [ + 221, + 224 + ], + [ + 223 + ], + [ + 225, + 228 + ], + [ + 226 + ], + [ + 227, + 229 + ], + [ + 230, + 232 + ], + [ + 231, + 234 + ], + [ + 233, + 236 + ], + [ + 235, + 238 + ], + [ + 237, + 239 + ], + [ + 240, + 242 + ], + [ + 241, + 244 + ], + [ + 243, + 246 + ], + [ + 245, + 248 + ], + [ + 247, + 249 + ], + [ + 250, + 252 + ], + [ + 251, + 254 + ], + [ + 253 + ], + [ + 255, + 258 + ], + [ + 256 + ], + [ + 257, + 259 + ], + [ + 260, + 262 + ], + [ + 261, + 264 + ], + [ + 263, + 266 + ], + [ + 265, + 268 + ], + [ + 267, + 269 + ], + [ + 270, + 272 + ], + [ + 271, + 274 + ], + [ + 273, + 276 + ], + [ + 275, + 278 + ], + [ + 277, + 279 + ], + [ + 280, + 282 + ], + [ + 281, + 284 + ], + [ + 283 + ], + [ + 285, + 288 + ], + [ + 286 + ], + [ + 287, + 289 + ], + [ + 290, + 292 + ], + [ + 291, + 294 + ], + [ + 293, + 296 + ], + [ + 295, + 298 + ], + [ + 297, + 299 + ], + [ + 300, + 302 + ], + [ + 301, + 304 + ], + [ + 303, + 306 + ], + [ + 305, + 308 + ], + [ + 307, + 309 + ], + [ + 310, + 312 + ], + [ + 311, + 314 + ], + [ + 313 + ], + [ + 315, + 318 + ], + [ + 316 + ], + [ + 317, + 319 + ], + [ + 320, + 322 + ], + [ + 321, + 324 + ], + [ + 323, + 326 + ], + [ + 325, + 328 + ], + [ + 327, + 329 + ], + [ + 330, + 332 + ], + [ + 331, + 334 + ], + [ + 333, + 336 + ], + [ + 335, + 338 + ], + [ + 337, + 339 + ], + [ + 340, + 342 + ], + [ + 341, + 344 + ], + [ + 343 + ], + [ + 345, + 348 + ], + [ + 346 + ], + [ + 347, + 349 + ], + [ + 350, + 352 + ], + [ + 351, + 354 + ], + [ + 353, + 356 + ], + [ + 355, + 358 + ], + [ + 357, + 359 + ] + ] + CombinationMode: "OR" + IgnoreChannels: [ + 70, + 106, + 217, + 54, + 58, + 67, + 98, + 112, + 153, + 254 + ] + LogCategory: "LVDSgates" + Thresholds: [ + 400 + ] + TriggerGatesTag: "pmtfixedthr" + module_type: "LVDSgates" + } + pmtthr: { + Baselines: "pmtconfigbaselines" + NChannels: 360 + OpticalWaveforms: "daqPMT" + OutputCategory: "DiscriminatePMTwaveforms" + ThresholdsFromPMTconfig: "pmtconfig" + TriggerGateBuilder: { + ChannelThresholds: [ + 0 + ] + GateDuration: "160 ns" + tool_type: "FixedTriggerGateBuilderTool" + } + module_type: "DiscriminatePMTwaveformsByChannel" + } + pmttriggerwindows: { + MissingChannels: [ + 70, + 106, + 217, + 54, + 58, + 67, + 98, + 112, + 153, + 254 + ] + Stride: 15 + Thresholds: [ + 400 + ] + TriggerGatesTag: "pmtlvdsgates" + WindowSize: 30 + module_type: "SlidingWindowTrigger" + } + purityana0: { + CryostatFCL: 0 + FillAnaTuple: false + PersistPurityInfo: false + PlaneFCL: 2 + RawModuleLabel: [ + "daqTPCROI:PHYSCRATEDATATPCWW", + "daqTPCROI:PHYSCRATEDATATPCWE", + "daqTPCROI:PHYSCRATEDATATPCEW", + "daqTPCROI:PHYSCRATEDATATPCEE" + ] + ThresholdFCL: 3 + ValoreTauFCL: 600000 + module_type: "ICARUSPurityDQM" + } + purityana1: { + CryostatFCL: 1 + FillAnaTuple: false + PersistPurityInfo: false + PlaneFCL: 2 + RawModuleLabel: [ + "daqTPCROI:PHYSCRATEDATATPCWW", + "daqTPCROI:PHYSCRATEDATATPCWE", + "daqTPCROI:PHYSCRATEDATATPCEW", + "daqTPCROI:PHYSCRATEDATATPCEE" + ] + ThresholdFCL: 3 + ValoreTauFCL: 600000 + module_type: "ICARUSPurityDQM" + } + roifinder1d: { + CorrectROIBaseline: false + DaignosticOutput: false + LeadTrail: 0 + MaxSizeForCorrection: 512 + MinSizeForCorrection: 12 + OutInstanceLabelVec: [ + "PHYSCRATEDATATPCWW", + "PHYSCRATEDATATPCWE", + "PHYSCRATEDATATPCEW", + "PHYSCRATEDATATPCEE" + ] + OutputHistograms: false + OutputMorphed: false + ROIFinderToolVec: { + ROIFinderPlane0: { + Plane: 0 + StructuringElement: [ + 25, + 5 + ] + Threshold: [ + 7.5, + 7.5, + 6 + ] + tool_type: "ROIMorphological2D" + } + ROIFinderPlane1: { + Plane: 1 + StructuringElement: [ + 25, + 5 + ] + Threshold: [ + 7.5, + 7.5, + 6 + ] + tool_type: "ROIMorphological2D" + } + ROIFinderPlane2: { + Plane: 2 + StructuringElement: [ + 25, + 5 + ] + Threshold: [ + 7.5, + 7.5, + 6 + ] + tool_type: "ROIMorphological2D" + } + } + WireModuleLabelVec: [ + "decon1droi:PHYSCRATEDATATPCWW", + "decon1droi:PHYSCRATEDATATPCWE", + "decon1droi:PHYSCRATEDATATPCEW", + "decon1droi:PHYSCRATEDATATPCEE" + ] + module_type: "ROIFinder" + } + roifinder2d: { + CorrectROIBaseline: false + DaignosticOutput: false + LeadTrail: 0 + MaxSizeForCorrection: 512 + MinSizeForCorrection: 12 + OutInstanceLabelVec: [ + "PHYSCRATEDATATPCWW", + "PHYSCRATEDATATPCWE", + "PHYSCRATEDATATPCEW", + "PHYSCRATEDATATPCEE" + ] + OutputHistograms: false + OutputMorphed: false + ROIFinderToolVec: { + ROIFinderPlane0: { + Plane: 0 + ROILabelVec: [ + "roifinder1d:PHYSCRATEDATATPCWW", + "roifinder1d:PHYSCRATEDATATPCWE", + "roifinder1d:PHYSCRATEDATATPCEW", + "roifinder1d:PHYSCRATEDATATPCEE" + ] + tool_type: "ROIFromDecoder" + } + ROIFinderPlane1: { + Plane: 1 + ROILabelVec: [ + "roifinder1d:PHYSCRATEDATATPCWW", + "roifinder1d:PHYSCRATEDATATPCWE", + "roifinder1d:PHYSCRATEDATATPCEW", + "roifinder1d:PHYSCRATEDATATPCEE" + ] + tool_type: "ROIFromDecoder" + } + ROIFinderPlane2: { + Plane: 2 + ROILabelVec: [ + "roifinder1d:PHYSCRATEDATATPCWW", + "roifinder1d:PHYSCRATEDATATPCWE", + "roifinder1d:PHYSCRATEDATATPCEW", + "roifinder1d:PHYSCRATEDATATPCEE" + ] + tool_type: "ROIFromDecoder" + } + } + WireModuleLabelVec: [ + "decon2droiWW:looseLf", + "decon2droiWE:looseLf", + "decon2droiEW:looseLf", + "decon2droiEE:looseLf" + ] + module_type: "ROIFinder" + } + simChannelROI: { + DaignosticOutput: false + OutInstanceLabelVec: [ + "PHYSCRATEDATA" + ] + WireModuleLabelVec: [ + "largeant" + ] + module_type: "SimChannelROI" + } + triggerconfig: { + module_type: "TriggerConfigurationExtraction" + } + triggersimgates: { + BeamGateTag: "beamgate" + Changes: [ + { + Select: { + Types: [ + "BNB" + ] + } + Start: { + SetTo: "-0.2 us" + } + Width: { + Add: "0.5 us" + SetTo: "1.6 us" + } + }, + { + Select: { + Types: [ + "NuMI" + ] + } + Start: { + SetTo: "-0.2 us" + } + Width: { + Add: "0.6 us" + SetTo: "9.5 us" + } + } + ] + module_type: "FixBeamGateInfo" + } + } + streamROOT: [ + "rootOutput" + ] + trigger_paths: [ + "path" + ] +} +process_name: "MCstage0W" +services: { + BackTrackerService: { + BackTracker: { + G4ModuleLabel: "largeant" + MinimumHitEnergyFraction: 1e-1 + SimChannelModuleLabel: "largeant" + } + } + ChannelStatusService: { + ChannelStatusProvider: { + AlgName: "SIOVChannelStatusProvider" + DatabaseRetrievalAlg: { + AlgName: "DatabaseRetrievalAlg" + DBFolderName: "tpc_channelstatus_data" + DBTag: "v3r2" + DBUrl: "https://dbdata0vm.fnal.gov:9443/icarus_con_prod/app/" + UseSQLite: true + } + UseDB: true + UseFile: false + } + service_provider: "SIOVChannelStatusICARUSService" + } + DetPedestalService: { + DetPedestalRetrievalAlg: { + AlgName: "DetPedestalRetrievalAlg" + DatabaseRetrievalAlg: { + AlgName: "DatabaseRetrievalAlg" + DBFolderName: "" + DBTag: "" + DBUrl: "" + } + DefaultCollMean: 400 + DefaultCollRms: 3e-1 + DefaultIndMean: 2048 + DefaultIndRms: 3e-1 + DefaultMeanErr: 0 + DefaultRmsErr: 0 + UseDB: false + UseFile: false + } + service_provider: "SIOVDetPedestalService" + } + DetectorClocksService: { + ClockSpeedExternal: 3.125e1 + ClockSpeedOptical: 500 + ClockSpeedTPC: 2.5 + ClockSpeedTrigger: 16 + DefaultBeamTime: 1500 + DefaultTrigTime: 1500 + FramePeriod: 1.6384e3 + G4RefTime: -1500 + InheritClockConfig: true + TrigModuleName: "daqTrigger" + TriggerOffsetTPC: -340 + service_provider: "DetectorClocksServiceStandard" + } + DetectorPropertiesService: { + DriftVelFudgeFactor: 9.9733e-1 + Efield: [ + 4.938e-1, + 7.33e-1, + 9.33e-1 + ] + Electronlifetime: 3000 + ElectronsToADC: 1.208041e-3 + IncludeInterPlanePitchInXTickOffsets: false + InheritNumberTimeSamples: true + NumberTimeSamples: 4096 + ReadOutWindowSize: 4096 + SimpleBoundaryProcess: false + SternheimerA: 1.956e-1 + SternheimerCbar: 5.2146 + SternheimerK: 3 + SternheimerX0: 2e-1 + SternheimerX1: 3 + Temperature: 8.75e1 + TimeOffsetU: 0 + TimeOffsetV: 0 + TimeOffsetY: 0 + TimeOffsetZ: 0 + UseIcarusMicrobooneDriftModel: true + service_provider: "DetectorPropertiesServiceStandard" + } + DuplicateEventTracker: {} + ExptGeoHelperInterface: { + Mapper: { + WirelessChannels: { + CollectionEvenPostChannels: 96 + CollectionEvenPreChannels: 64 + CollectionOddPostChannels: 64 + CollectionOddPreChannels: 96 + FirstInductionPostChannels: 96 + FirstInductionPreChannels: 0 + SecondInductionEvenPostChannels: 64 + SecondInductionEvenPreChannels: 96 + SecondInductionOddPostChannels: 96 + SecondInductionOddPreChannels: 64 + } + tool_type: "ICARUSsplitInductionChannelMapSetupTool" + } + service_provider: "IcarusGeometryHelper" + } + FileCatalogMetadata: { + fileType: "mc" + group: "icarus" + runType: "physics" + } + Geometry: { + ChannelMapping: { + WirelessChannels: { + CollectionEvenPostChannels: 96 + CollectionEvenPreChannels: 64 + CollectionOddPostChannels: 64 + CollectionOddPreChannels: 96 + FirstInductionPostChannels: 96 + FirstInductionPreChannels: 0 + SecondInductionEvenPostChannels: 64 + SecondInductionEvenPreChannels: 96 + SecondInductionOddPostChannels: 96 + SecondInductionOddPreChannels: 64 + } + tool_type: "ICARUSsplitInductionChannelMapSetupTool" + } + DisableWiresInG4: true + GDML: "icarus_refactored_nounderscore_20230918.gdml" + Name: "icarus_v4" + ROOT: "icarus_refactored_nounderscore_20230918.gdml" + SurfaceY: 690 + } + GeometryConfigurationWriter: {} + IICARUSChannelMap: { + ChannelMappingTool: { + CalibDBFileName: "crt_gain_reco_data" + DBFileName: "ChannelMapICARUS_20240318.db" + Tag: "v1r0" + } + DiagnosticOutput: false + service_provider: "ICARUSChannelMapSQLite" + } + IPMTTimingCorrectionService: { + CorrectionTags: { + CablesTag: "v2r4" + CosmicsTag: "v2r1" + LaserTag: "v2r2" + } + Verbose: false + service_provider: "PMTTimingCorrectionService" + } + LArPropertiesService: { + AbsLengthEnergies: [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + AbsLengthSpectrum: [ + 8000, + 8000, + 8000, + 8000, + 8000, + 2000, + 2000, + 2000 + ] + AlphaScintYield: 16800 + AlphaScintYieldRatio: 5.6e-1 + Argon39DecayRate: 0 + AtomicMass: 3.9948e1 + AtomicNumber: 18 + ElectronScintYield: 20000 + ElectronScintYieldRatio: 2.7e-1 + EnableCerenkovLight: false + ExcitationEnergy: 188 + FastScintEnergies: [ + 7.2, + 7.9, + 8.3, + 8.6, + 8.9, + 9.1, + 9.3, + 9.6, + 9.7, + 9.8, + 10, + 1.02e1, + 1.03e1, + 1.06e1, + 11, + 1.16e1, + 1.19e1 + ] + FastScintSpectrum: [ + 0, + 4e-2, + 1.2e-1, + 2.7e-1, + 4.4e-1, + 6.2e-1, + 8e-1, + 9.1e-1, + 9.2e-1, + 8.5e-1, + 7e-1, + 5e-1, + 3.1e-1, + 1.3e-1, + 4e-2, + 1e-2, + 0 + ] + KaonScintYield: 24000 + KaonScintYieldRatio: 2.3e-1 + LoadExtraMatProperties: false + MuonScintYield: 24000 + MuonScintYieldRatio: 2.3e-1 + PionScintYield: 24000 + PionScintYieldRatio: 2.3e-1 + ProtonScintYield: 19200 + ProtonScintYieldRatio: 2.9e-1 + RIndexEnergies: [ + 1.18626, + 1.68626, + 2.18626, + 2.68626, + 3.18626, + 3.68626, + 4.18626, + 4.68626, + 5.18626, + 5.68626, + 6.18626, + 6.68626, + 7.18626, + 7.68626, + 8.18626, + 8.68626, + 9.18626, + 9.68626, + 1.01863e1, + 1.06863e1, + 1.11863e1 + ] + RIndexSpectrum: [ + 1.24664, + 1.2205, + 1.22694, + 1.22932, + 1.23124, + 1.23322, + 1.23545, + 1.23806, + 1.24116, + 1.24489, + 1.24942, + 1.25499, + 1.26197, + 1.2709, + 1.28263, + 1.29865, + 1.32169, + 1.35747, + 1.42039, + 1.56011, + 2.16626 + ] + RadiationLength: 1.955e1 + RayleighEnergies: [ + 1.18626, + 1.68626, + 2.18626, + 2.68626, + 3.18626, + 3.68626, + 4.18626, + 4.68626, + 5.18626, + 5.68626, + 6.18626, + 6.68626, + 7.18626, + 7.68626, + 8.18626, + 8.68626, + 9.18626, + 9.68626, + 1.01863e1, + 1.06863e1, + 1.11863e1 + ] + RayleighSpectrum: [ + 1.2008e6, + 390747, + 128633, + 5.49691e4, + 2.71918e4, + 1.48537e4, + 8.7169e3, + 5.39742e3, + 3.48137e3, + 2.31651e3, + 1.57763e3, + 1.09202e3, + 7.63045e2, + 5.34232e2, + 3.71335e2, + 2.52942e2, + 1.6538e2, + 9.99003e1, + 5.12653e1, + 1.7495e1, + 9.64341e-1 + ] + ReflectiveSurfaceDiffuseFractions: [ + [ + 5e-1, + 5e-1, + 5e-1 + ] + ] + ReflectiveSurfaceEnergies: [ + 1.77, + 2.0675, + 2.481, + 2.819, + 2.953, + 3.1807, + 3.54, + 4.135, + 4.962, + 5.39, + 7, + 15 + ] + ReflectiveSurfaceNames: [ + "STEEL_STAINLESS_Fe7Cr2Ni", + "copper", + "G10", + "vm2000", + "ALUMINUM_Al", + "ALUMINUM_PMT", + "ALUMINUM_CRYO" + ] + ReflectiveSurfaceReflectances: [ + [ + 6.6e-1, + 6.4e-1, + 6.2e-1, + 6e-1, + 5.9e-1, + 5.7e-1, + 5.3e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9.02e-1, + 8.41e-1, + 4.64e-1, + 3.79e-1, + 3.45e-1, + 2.99e-1, + 2.87e-1, + 2.64e-1, + 3.37e-1, + 3e-1, + 0, + 0 + ], + [ + 3.93e-1, + 4.05e-1, + 4.04e-1, + 3.52e-1, + 3.23e-1, + 2.43e-1, + 1.27e-1, + 6.5e-2, + 6.8e-2, + 6.8e-2, + 0, + 0 + ], + [ + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 1e-1, + 1e-1, + 7e-1, + 3e-1, + 0, + 0 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ] + ] + ScintBirksConstant: 6.9e-2 + ScintByParticleType: true + ScintFastTimeConst: 6 + ScintPreScale: 7.3e-2 + ScintResolutionScale: 1 + ScintSlowTimeConst: 1590 + ScintYield: 24000 + ScintYieldRatio: 2.3e-1 + SlowScintEnergies: [ + 7.2, + 7.9, + 8.3, + 8.6, + 8.9, + 9.1, + 9.3, + 9.6, + 9.7, + 9.8, + 10, + 1.02e1, + 1.03e1, + 1.06e1, + 11, + 1.16e1, + 1.19e1 + ] + SlowScintSpectrum: [ + 0, + 4e-2, + 1.2e-1, + 2.7e-1, + 4.4e-1, + 6.2e-1, + 8e-1, + 9.1e-1, + 9.2e-1, + 8.5e-1, + 7e-1, + 5e-1, + 3.1e-1, + 1.3e-1, + 4e-2, + 1e-2, + 0 + ] + TpbAbsorptionEnergies: [ + 5e-2, + 1.77, + 2.0675, + 7.42, + 7.75, + 8.16, + 8.73, + 9.78, + 1.069e1, + 5.039e1 + ] + TpbAbsorptionSpectrum: [ + 100000, + 100000, + 100000, + 1e-3, + 1e-11, + 1e-11, + 1e-11, + 1e-11, + 1e-11, + 1e-11 + ] + TpbEmmisionEnergies: [ + 5e-2, + 1, + 1.5, + 2.25, + 2.481, + 2.819, + 2.952, + 2.988, + 3.024, + 3.1, + 3.14, + 3.1807, + 3.54, + 5.5, + 5.039e1 + ] + TpbEmmisionSpectrum: [ + 0, + 0, + 0, + 5.88e-2, + 2.35e-1, + 8.53e-1, + 1, + 1, + 9.259e-1, + 7.04e-1, + 2.96e-2, + 1.1e-2, + 0, + 0, + 0 + ] + TpbTimeConstant: 2.5 + service_provider: "LArPropertiesServiceStandard" + } + MemoryTracker: { + dbOutput: { + filename: "MemoryReport.db" + overwrite: true + } + } + ParticleInventoryService: { + ParticleInventory: { + EveIdCalculator: "EmEveIdCalculator" + G4ModuleLabel: "largeant" + } + } + PhotonBackTrackerService: { + PhotonBackTracker: { + Delay: 0 + G4ModuleLabel: "largeant" + G4ModuleLabels: [ + "largeant" + ] + MinimumHitEnergyFraction: 1e-1 + } + } + SignalShapingICARUSService: { + DeconNorm: 1 + InitialFFTSize: 4096 + NoiseFactVec: [ + [ + 1.151, + 1.151, + 1.151, + 1.151 + ], + [ + 1.152, + 1.152, + 1.152, + 1.152 + ], + [ + 1.096, + 1.096, + 1.096, + 1.096 + ] + ] + PlaneForNormalization: 2 + PrintResponses: "false" + ResponseTools: { + ResponsePlane0: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 0 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 0 + ResponseType: 0 + SignalType: 0 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" + FilterParametersVec: [ + 1, + 0, + 4, + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 0 + tool_type: "Filter" + } + Plane: 0 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + ResponsePlane1: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 1 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 1 + ResponseType: 1 + SignalType: 0 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" + FilterParametersVec: [ + 1, + 0, + 4, + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 1 + tool_type: "Filter" + } + Plane: 1 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + ResponsePlane2: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 2 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 2 + ResponseType: 2 + SignalType: 1 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? gaus(0) : 0.0" + FilterParametersVec: [ + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 2 + tool_type: "Filter" + } + Plane: 2 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + } + StoreHistograms: true + } + SpaceChargeService: { + EnableCalEfieldSCE: false + EnableCalSpatialSCE: false + EnableCorrSCE: false + EnableSimEfieldSCE: false + EnableSimSpatialSCE: false + InputFilename: "SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root" + RepresentationType: "Voxelized_TH3" + service_provider: "SpaceChargeServiceICARUS" + } + TFileService: { + fileName: "Supplemental-%ifb_%tc-%p.root" + } + TimeTracker: { + dbOutput: { + filename: "TimingReport.db" + overwrite: true + } + printSummary: true + } + message: { + destinations: { + STDCOUT: { + categories: { + default: { + limit: 5 + reportEvery: 1 + } + } + threshold: "WARNING" + type: "cout" + } + } + } + scheduler: { + defaultExceptions: false + } +} +source: { + maxEvents: 10 + module_type: "RootInput" + saveMemoryObjectThreshold: 0 +} diff --git a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_truth.txt b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_truth.txt new file mode 100644 index 000000000..009e24d5b --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_truth.txt @@ -0,0 +1,972 @@ +# Produced from 'fhicl-dump' using: +# Input : detsim_2d_icarus_SConly.fcl +# Policy : cet::filepath_maker +# Path : "FHICL_FILE_PATH" + +outputs: { + rootoutput: { + compressionLevel: 1 + dataTier: "simulated" + fileName: "%ifb_%tc-%p.root" + module_type: "RootOutput" + saveMemoryObjectThreshold: 0 + } +} +physics: { + producers: { + crtdaq: { + DetSimAlg: { + ApplyCoincidenceC: true + ApplyCoincidenceD: true + ApplyCoincidenceM: true + ApplyStripCoincidenceC: true + BiasTime: 50 + DeadTime: 22000 + GlobalT0Offset: 1.6e6 + Kbirks: 1.26e1 + LayerCoincidenceWindowC: 30 + LayerCoincidenceWindowD: 30 + LayerCoincidenceWindowM: 50 + PropDelay: 5.23e-2 + PropDelayError: 7e-3 + Q0: 1.891e-3 + QMax: 4080 + QPed: 6.36e1 + QRMS: 10 + QSlope: 70 + QThresholdC: 169 + QThresholdD: 169 + QThresholdM: 379 + StripCoincidenceWindow: 50 + TDelayNorm: 4.12574e3 + TDelayOffset: -1.525 + TDelayRMSExpNorm: 1.6544 + TDelayRMSExpScale: 7.93543e1 + TDelayRMSExpShift: 7.56183e1 + TDelayRMSGausNorm: 2.09138 + TDelayRMSGausShift: 7.23993 + TDelayRMSGausSigma: 1.70027e2 + TDelayShift: -3.0031e2 + TDelaySigma: 9.0392e1 + TResInterpolator: 1.268 + UltraVerbose: false + UseBirks: true + UseEdep: true + Verbose: false + } + G4ModuleLabel: "largeant" + module_type: "icaruscode/CRT/CRTDetSim" + } + daq: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-multitpc-sim-drift-simchannel.jsonnet" + ] + inputers: [ + "wclsSimDepoSetSource:electron" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsDepoSetSimChannelSink:postdriftold", + "wclsDepoFluxWriter:postdrift", + "wclsFrameSaver:simdigits0", + "wclsFrameSaver:simdigits1", + "wclsFrameSaver:simdigits2", + "wclsFrameSaver:simdigits3" + ] + params: { + file_rcresp: "" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + } + plugins: [ + "WireCellPgraph", + "WireCellGen", + "WireCellSio", + "WireCellRoot", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + DL: 4e-9 + DT: 8.8e-9 + coh_noise_scale: 1 + gain0: 1.705212e1 + gain1: 1.26181926e1 + gain2: 1.30261362e1 + int_noise_scale: 1 + lifetime: 3000 + shaping0: 1.3 + shaping1: 1.3 + shaping2: 1.3 + time_offset_u: 0 + time_offset_v: 0 + time_offset_y: 0 + } + tool_type: "WCLS" + } + } + opdaq: { + BeamGateTriggerNReps: 10 + BeamGateTriggerRepPeriod: "2.0 us" + CreateBeamGateTriggers: true + DarkNoiseRate: "1.6 kHz" + DiscrimAlgo: "AboveThreshold" + FluctuateGain: true + InputModule: "largeant" + PMTspecs: { + DynodeK: 7.5e-1 + Gain: 7.5e6 + VoltageDistribution: [ + 1.74e1, + 3.4, + 5, + 3.33, + 1.67, + 1, + 1.2, + 1.5, + 2.2, + 3 + ] + } + Pedestal: { + NoiseGenerator: { + RMS: 3 + tool_type: "PMTfastGausNoiseGeneratorTool" + } + Pedestal: 1.49995e4 + tool_type: "PMTconstantPedestalGeneratorTool" + } + PreTrigFraction: 2.5e-1 + PulsePolarity: -1 + QE: 7.3e-2 + ReadoutEnablePeriod: "2.0 ms" + ReadoutWindowSize: 2000 + SinglePhotonResponse: { + Gain: 7.5e6 + TransitTime: "55.1 ns" + WaveformData: "Responses/SPR202202.txt" + tool_type: "SampledWaveformFunctionTool" + } + ThresholdADC: 15 + TriggerOffsetPMT: "-1.0 ms" + module_type: "SimPMTIcarus" + } + rns: { + module_type: "RandomNumberSaver" + } + tpcsim: { + module_type: "WireCellToolkit" + wcls_main: { + apps: [ + "Pgrapher" + ] + configs: [ + "pgrapher/experiment/icarus/wcls-multitpc-sim-drift-simchannel-true.jsonnet" + ] + inputers: [ + "wclsSimDepoSetSource:electron" + ] + loglevels: [ + "debug", + "pgraph:info" + ] + logsinks: [ + "stdout" + ] + outputers: [ + "wclsDepoFluxWriter:postdrift" + ] + params: { + file_rcresp: "" + files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" + } + plugins: [ + "WireCellPgraph", + "WireCellGen", + "WireCellSio", + "WireCellRoot", + "WireCellLarsoft", + "WireCellHio" + ] + structs: { + DL: 4e-9 + DT: 8.8e-9 + coh_noise_scale: 1 + gain0: 1.705212e1 + gain1: 1.26181926e1 + gain2: 1.30261362e1 + int_noise_scale: 1 + lifetime: 3000 + shaping0: 1.3 + shaping1: 1.3 + shaping2: 1.3 + time_offset_u: 0 + time_offset_v: 0 + time_offset_y: 0 + } + tool_type: "WCLS" + } + } + } + simulate: [ + "rns", + "tpcsim" + ] + stream: [ + "rootoutput" + ] +} +process_name: "TPCSim" +services: { + ChannelStatusService: { + ChannelStatusProvider: { + AlgName: "SIOVChannelStatusProvider" + DatabaseRetrievalAlg: { + AlgName: "DatabaseRetrievalAlg" + DBFolderName: "tpc_channelstatus_data" + DBTag: "v3r2" + DBUrl: "https://dbdata0vm.fnal.gov:9443/icarus_con_prod/app/" + UseSQLite: true + } + UseDB: true + UseFile: false + } + service_provider: "SIOVChannelStatusICARUSService" + } + DetPedestalService: { + DetPedestalRetrievalAlg: { + AlgName: "DetPedestalRetrievalAlg" + DatabaseRetrievalAlg: { + AlgName: "DatabaseRetrievalAlg" + DBFolderName: "" + DBTag: "" + DBUrl: "" + } + DefaultCollMean: 400 + DefaultCollRms: 3e-1 + DefaultIndMean: 2048 + DefaultIndRms: 3e-1 + DefaultMeanErr: 0 + DefaultRmsErr: 0 + UseDB: false + UseFile: false + } + service_provider: "SIOVDetPedestalService" + } + DetectorClocksService: { + ClockSpeedExternal: 3.125e1 + ClockSpeedOptical: 500 + ClockSpeedTPC: 2.5 + ClockSpeedTrigger: 16 + DefaultBeamTime: 1500 + DefaultTrigTime: 1500 + FramePeriod: 1.6384e3 + G4RefTime: -1500 + InheritClockConfig: true + TrigModuleName: "daqTrigger" + TriggerOffsetTPC: -340 + service_provider: "DetectorClocksServiceStandard" + } + DetectorPropertiesService: { + DriftVelFudgeFactor: 9.9733e-1 + Efield: [ + 4.938e-1, + 7.33e-1, + 9.33e-1 + ] + Electronlifetime: 3000 + ElectronsToADC: 1.208041e-3 + IncludeInterPlanePitchInXTickOffsets: false + InheritNumberTimeSamples: true + NumberTimeSamples: 4096 + ReadOutWindowSize: 4096 + SimpleBoundaryProcess: false + SternheimerA: 1.956e-1 + SternheimerCbar: 5.2146 + SternheimerK: 3 + SternheimerX0: 2e-1 + SternheimerX1: 3 + Temperature: 8.75e1 + TimeOffsetU: 0 + TimeOffsetV: 0 + TimeOffsetY: 0 + TimeOffsetZ: 0 + UseIcarusMicrobooneDriftModel: true + service_provider: "DetectorPropertiesServiceStandard" + } + DuplicateEventTracker: {} + ExptGeoHelperInterface: { + Mapper: { + WirelessChannels: { + CollectionEvenPostChannels: 96 + CollectionEvenPreChannels: 64 + CollectionOddPostChannels: 64 + CollectionOddPreChannels: 96 + FirstInductionPostChannels: 96 + FirstInductionPreChannels: 0 + SecondInductionEvenPostChannels: 64 + SecondInductionEvenPreChannels: 96 + SecondInductionOddPostChannels: 96 + SecondInductionOddPreChannels: 64 + } + tool_type: "ICARUSsplitInductionChannelMapSetupTool" + } + service_provider: "IcarusGeometryHelper" + } + FileCatalogMetadata: { + fileType: "mc" + group: "icarus" + runType: "physics" + } + Geometry: { + ChannelMapping: { + WirelessChannels: { + CollectionEvenPostChannels: 96 + CollectionEvenPreChannels: 64 + CollectionOddPostChannels: 64 + CollectionOddPreChannels: 96 + FirstInductionPostChannels: 96 + FirstInductionPreChannels: 0 + SecondInductionEvenPostChannels: 64 + SecondInductionEvenPreChannels: 96 + SecondInductionOddPostChannels: 96 + SecondInductionOddPreChannels: 64 + } + tool_type: "ICARUSsplitInductionChannelMapSetupTool" + } + DisableWiresInG4: true + GDML: "icarus_refactored_nounderscore_20230918.gdml" + Name: "icarus_v4" + ROOT: "icarus_refactored_nounderscore_20230918.gdml" + SurfaceY: 690 + } + GeometryConfigurationWriter: {} + LArPropertiesService: { + AbsLengthEnergies: [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + AbsLengthSpectrum: [ + 8000, + 8000, + 8000, + 8000, + 8000, + 2000, + 2000, + 2000 + ] + AlphaScintYield: 16800 + AlphaScintYieldRatio: 5.6e-1 + Argon39DecayRate: 0 + AtomicMass: 3.9948e1 + AtomicNumber: 18 + ElectronScintYield: 20000 + ElectronScintYieldRatio: 2.7e-1 + EnableCerenkovLight: false + ExcitationEnergy: 188 + FastScintEnergies: [ + 7.2, + 7.9, + 8.3, + 8.6, + 8.9, + 9.1, + 9.3, + 9.6, + 9.7, + 9.8, + 10, + 1.02e1, + 1.03e1, + 1.06e1, + 11, + 1.16e1, + 1.19e1 + ] + FastScintSpectrum: [ + 0, + 4e-2, + 1.2e-1, + 2.7e-1, + 4.4e-1, + 6.2e-1, + 8e-1, + 9.1e-1, + 9.2e-1, + 8.5e-1, + 7e-1, + 5e-1, + 3.1e-1, + 1.3e-1, + 4e-2, + 1e-2, + 0 + ] + KaonScintYield: 24000 + KaonScintYieldRatio: 2.3e-1 + LoadExtraMatProperties: false + MuonScintYield: 24000 + MuonScintYieldRatio: 2.3e-1 + PionScintYield: 24000 + PionScintYieldRatio: 2.3e-1 + ProtonScintYield: 19200 + ProtonScintYieldRatio: 2.9e-1 + RIndexEnergies: [ + 1.18626, + 1.68626, + 2.18626, + 2.68626, + 3.18626, + 3.68626, + 4.18626, + 4.68626, + 5.18626, + 5.68626, + 6.18626, + 6.68626, + 7.18626, + 7.68626, + 8.18626, + 8.68626, + 9.18626, + 9.68626, + 1.01863e1, + 1.06863e1, + 1.11863e1 + ] + RIndexSpectrum: [ + 1.24664, + 1.2205, + 1.22694, + 1.22932, + 1.23124, + 1.23322, + 1.23545, + 1.23806, + 1.24116, + 1.24489, + 1.24942, + 1.25499, + 1.26197, + 1.2709, + 1.28263, + 1.29865, + 1.32169, + 1.35747, + 1.42039, + 1.56011, + 2.16626 + ] + RadiationLength: 1.955e1 + RayleighEnergies: [ + 1.18626, + 1.68626, + 2.18626, + 2.68626, + 3.18626, + 3.68626, + 4.18626, + 4.68626, + 5.18626, + 5.68626, + 6.18626, + 6.68626, + 7.18626, + 7.68626, + 8.18626, + 8.68626, + 9.18626, + 9.68626, + 1.01863e1, + 1.06863e1, + 1.11863e1 + ] + RayleighSpectrum: [ + 1.2008e6, + 390747, + 128633, + 5.49691e4, + 2.71918e4, + 1.48537e4, + 8.7169e3, + 5.39742e3, + 3.48137e3, + 2.31651e3, + 1.57763e3, + 1.09202e3, + 7.63045e2, + 5.34232e2, + 3.71335e2, + 2.52942e2, + 1.6538e2, + 9.99003e1, + 5.12653e1, + 1.7495e1, + 9.64341e-1 + ] + ReflectiveSurfaceDiffuseFractions: [ + [ + 5e-1, + 5e-1, + 5e-1 + ] + ] + ReflectiveSurfaceEnergies: [ + 1.77, + 2.0675, + 2.481, + 2.819, + 2.953, + 3.1807, + 3.54, + 4.135, + 4.962, + 5.39, + 7, + 15 + ] + ReflectiveSurfaceNames: [ + "STEEL_STAINLESS_Fe7Cr2Ni", + "copper", + "G10", + "vm2000", + "ALUMINUM_Al", + "ALUMINUM_PMT", + "ALUMINUM_CRYO" + ] + ReflectiveSurfaceReflectances: [ + [ + 6.6e-1, + 6.4e-1, + 6.2e-1, + 6e-1, + 5.9e-1, + 5.7e-1, + 5.3e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9.02e-1, + 8.41e-1, + 4.64e-1, + 3.79e-1, + 3.45e-1, + 2.99e-1, + 2.87e-1, + 2.64e-1, + 3.37e-1, + 3e-1, + 0, + 0 + ], + [ + 3.93e-1, + 4.05e-1, + 4.04e-1, + 3.52e-1, + 3.23e-1, + 2.43e-1, + 1.27e-1, + 6.5e-2, + 6.8e-2, + 6.8e-2, + 0, + 0 + ], + [ + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 9.3e-1, + 1e-1, + 1e-1, + 7e-1, + 3e-1, + 0, + 0 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ], + [ + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 9e-1, + 4.7e-1, + 3.9e-1, + 3.6e-1, + 2.7e-1, + 2.5e-1 + ] + ] + ScintBirksConstant: 6.9e-2 + ScintByParticleType: true + ScintFastTimeConst: 6 + ScintPreScale: 7.3e-2 + ScintResolutionScale: 1 + ScintSlowTimeConst: 1590 + ScintYield: 24000 + ScintYieldRatio: 2.3e-1 + SlowScintEnergies: [ + 7.2, + 7.9, + 8.3, + 8.6, + 8.9, + 9.1, + 9.3, + 9.6, + 9.7, + 9.8, + 10, + 1.02e1, + 1.03e1, + 1.06e1, + 11, + 1.16e1, + 1.19e1 + ] + SlowScintSpectrum: [ + 0, + 4e-2, + 1.2e-1, + 2.7e-1, + 4.4e-1, + 6.2e-1, + 8e-1, + 9.1e-1, + 9.2e-1, + 8.5e-1, + 7e-1, + 5e-1, + 3.1e-1, + 1.3e-1, + 4e-2, + 1e-2, + 0 + ] + TpbAbsorptionEnergies: [ + 5e-2, + 1.77, + 2.0675, + 7.42, + 7.75, + 8.16, + 8.73, + 9.78, + 1.069e1, + 5.039e1 + ] + TpbAbsorptionSpectrum: [ + 100000, + 100000, + 100000, + 1e-3, + 1e-11, + 1e-11, + 1e-11, + 1e-11, + 1e-11, + 1e-11 + ] + TpbEmmisionEnergies: [ + 5e-2, + 1, + 1.5, + 2.25, + 2.481, + 2.819, + 2.952, + 2.988, + 3.024, + 3.1, + 3.14, + 3.1807, + 3.54, + 5.5, + 5.039e1 + ] + TpbEmmisionSpectrum: [ + 0, + 0, + 0, + 5.88e-2, + 2.35e-1, + 8.53e-1, + 1, + 1, + 9.259e-1, + 7.04e-1, + 2.96e-2, + 1.1e-2, + 0, + 0, + 0 + ] + TpbTimeConstant: 2.5 + service_provider: "LArPropertiesServiceStandard" + } + MemoryTracker: { + dbOutput: { + filename: "MemoryReport.db" + overwrite: true + } + } + NuRandomService: { + endOfJobSummary: false + initSeedPolicy: { + policy: "random" + } + policy: "perEvent" + } + RandomNumberGenerator: {} + SignalShapingICARUSService: { + DeconNorm: 1 + InitialFFTSize: 4096 + NoiseFactVec: [ + [ + 1.151, + 1.151, + 1.151, + 1.151 + ], + [ + 1.152, + 1.152, + 1.152, + 1.152 + ], + [ + 1.096, + 1.096, + 1.096, + 1.096 + ] + ] + PlaneForNormalization: 2 + PrintResponses: "false" + ResponseTools: { + ResponsePlane0: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 0 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 0 + ResponseType: 0 + SignalType: 0 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" + FilterParametersVec: [ + 1, + 0, + 4, + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 0 + tool_type: "Filter" + } + Plane: 0 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + ResponsePlane1: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 1 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 1 + ResponseType: 1 + SignalType: 0 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" + FilterParametersVec: [ + 1, + 0, + 4, + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 1 + tool_type: "Filter" + } + Plane: 1 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + ResponsePlane2: { + Correction3D: 1 + ElectronicsResponse: { + ADCPerPCAtLowestASICGain: 5500 + ASICShapingTime: 1.3 + FCperADCMicroS: 3.21e-2 + Plane: 2 + TimeOffset: 0 + tool_type: "ElectronicsResponseBesselApprox" + } + FieldResponse: { + FieldResponseAmplitude: 1 + FieldResponseFileName: "t600_response" + FieldResponseFileVersion: "v0.0" + FieldResponseHistName: "t600_response" + Plane: 2 + ResponseType: 2 + SignalType: 1 + TimeCorrectionFactor: 1000 + tool_type: "FieldResponse" + } + Filter: { + FilterFunction: "(x>0.0) ? gaus(0) : 0.0" + FilterParametersVec: [ + 1, + 0, + 100 + ] + FilterWidthCorrectionFactor: 1 + Plane: 2 + tool_type: "Filter" + } + Plane: 2 + TimeScaleFactor: 1 + UseEmpiricalOffsets: true + tool_type: "Response" + } + } + StoreHistograms: true + } + TFileService: { + fileName: "Supplemental-%ifb_%tc-%p.root" + } + TimeTracker: { + dbOutput: { + filename: "TimingReport.db" + overwrite: true + } + printSummary: true + } + message: { + destinations: { + LogErrorFile: { + append: false + categories: { + default: {} +} + filename: "errors.log" + threshold: "WARNING" + type: "file" +} + LogSeeds: { + append: false + categories: { + NuRandomService: { + limit: -1 + } + default: { + limit: 0 + } + } + filename: "randomseeds.log" + threshold: "INFO" + type: "file" + } + LogStandardOut: { + categories: { + NuRandomService: { + limit: 0 + } + default: {} +} + threshold: "INFO" + type: "cout" +} +} +} + scheduler: { + defaultExceptions: false + } +} From ec41a64711ee2c2e2662d25d4472c736b3705f12 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Fri, 16 Aug 2024 14:21:57 -0500 Subject: [PATCH 10/43] Update configurations. Make filter parameters configurable. First pass of two-faced ICARUS wires config. --- .../Run2/stage0E_run2_wc_icarus_mc_2f.fcl | 6 + .../Run2/stage0W_run2_wc_icarus_mc_2f.fcl | 6 + .../Stage0/Run2/stage0_run2_wc_icarus_mc.fcl | 41 +++++ .../detsimmodules_wirecell_ICARUS.fcl | 7 + .../TPC/ICARUSWireCell/icarus/funcs.jsonnet | 6 + .../icarus/params_twofaced.jsonnet | 142 ++++++++++++++++++ .../TPC/ICARUSWireCell/icarus/sp.jsonnet | 2 +- .../TPC/ICARUSWireCell/icarus/splat.jsonnet | 62 ++++++++ .../icarus/wcls-decode-to-sig.jsonnet | 46 +++--- 9 files changed, 299 insertions(+), 19 deletions(-) create mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl create mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/params_twofaced.jsonnet create mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl new file mode 100644 index 000000000..52a894abf --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl @@ -0,0 +1,6 @@ +#include "stage0E_run2_wc_icarus_mc.fcl" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl new file mode 100644 index 000000000..9ef74fc3d --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl @@ -0,0 +1,6 @@ +#include "stage0W_run2_wc_icarus_mc.fcl" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl index af54f177f..01c07b524 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl @@ -85,3 +85,44 @@ physics.producers.decon2droiWW.wcls_main.structs.shaping2: 1.3 # restore legacy G4 labels physics.producers.mcophit.SimPhotonsProducer: "largeant" + +# Filter parameters +physics.producers.decon2droiEE.wcls_main.structs.Gaus_wide_sigma: 0.12 +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_sigma: 0.148788 +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_power: 3.76194 +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_sigma: 0.1596568 +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_power: 4.36125 +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_sigma: 0.13623 +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_power: 3.35324 +physics.producers.decon2droiEE.wcls_main.structs.Wire_ind_sigma: 0.75 +physics.producers.decon2droiEE.wcls_main.structs.Wire_col_sigma: 3.0 + +physics.producers.decon2droiEW.wcls_main.structs.Gaus_wide_sigma: 0.12 +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_sigma: 0.148788 +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_power: 3.76194 +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_sigma: 0.1596568 +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_power: 4.36125 +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_sigma: 0.13623 +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_power: 3.35324 +physics.producers.decon2droiEW.wcls_main.structs.Wire_ind_sigma: 0.75 +physics.producers.decon2droiEW.wcls_main.structs.Wire_col_sigma: 3.0 + +physics.producers.decon2droiWE.wcls_main.structs.Gaus_wide_sigma: 0.12 +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_sigma: 0.148788 +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_power: 3.76194 +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_sigma: 0.1596568 +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_power: 4.36125 +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_sigma: 0.13623 +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_power: 3.35324 +physics.producers.decon2droiWE.wcls_main.structs.Wire_ind_sigma: 0.75 +physics.producers.decon2droiWE.wcls_main.structs.Wire_col_sigma: 3.0 + +physics.producers.decon2droiWW.wcls_main.structs.Gaus_wide_sigma: 0.12 +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_sigma: 0.148788 +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_power: 3.76194 +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_sigma: 0.1596568 +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_power: 4.36125 +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_sigma: 0.13623 +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_power: 3.35324 +physics.producers.decon2droiWW.wcls_main.structs.Wire_ind_sigma: 0.75 +physics.producers.decon2droiWW.wcls_main.structs.Wire_col_sigma: 3.0 diff --git a/icaruscode/TPC/ICARUSWireCell/detsimmodules_wirecell_ICARUS.fcl b/icaruscode/TPC/ICARUSWireCell/detsimmodules_wirecell_ICARUS.fcl index fb6d9d486..7ab588381 100644 --- a/icaruscode/TPC/ICARUSWireCell/detsimmodules_wirecell_ICARUS.fcl +++ b/icaruscode/TPC/ICARUSWireCell/detsimmodules_wirecell_ICARUS.fcl @@ -75,6 +75,13 @@ icarus_simwire_wirecell: } } +# SimChannel only (SConly) CONFIG +icarus_simwire_wirecell_SConly: @local::icarus_simwire_wirecell +icarus_simwire_wirecell_SConly.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-multitpc-sim-drift-simchannel-true.jsonnet"] +icarus_simwire_wirecell_SConly.wcls_main.outputers:[ + "wclsDepoFluxWriter:postdrift" +] + # TUNED FR CONFIG icarus_simwire_wirecell_fitSR: @local::icarus_simwire_wirecell # Add in the ER tail diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/funcs.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/funcs.jsonnet index 5f2f0be20..d0e6fee8e 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/funcs.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/funcs.jsonnet @@ -25,6 +25,12 @@ local g = import 'pgraph.jsonnet'; anode_channels(n):: std.flattenArrays([std.range(startch[n][w], startch[n][w]+wireplanes[w]) for w in std.range(0,2)]), // anode_channels(n):: std.range(1056 * (n % 2) + 13312 * (n - n % 2) / 2, 1056 * (n % 2 + 1) - 1 + 13312 * (n - n % 2) / 2) + std.range(1056 * 2 + 13312 * (n - n % 2) / 2, 13312 - 1 + 13312 * (n - n % 2) / 2), + // Channels on each anode, in the "two-faced" configuration + anode_channels_twofaced(n):: std.range(startch[2*n][0], startch[2*n][0]+wireplanes[0]) + + std.range(startch[2*n+1][0], startch[2*n+1][0]+wireplanes[0]) + + std.range(startch[2*n][1], startch[2*n][1]+wireplanes[1]) + + std.range(startch[2*n][2], startch[2*n][2]+wireplanes[2]), + // Return the number of split (1 or 2) for an anode anode_split(ident):: (ident%100 - ident%10)/10, diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/params_twofaced.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/params_twofaced.jsonnet new file mode 100644 index 000000000..e31a81f37 --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/icarus/params_twofaced.jsonnet @@ -0,0 +1,142 @@ +// This file specifies the paramter configuration for the ICARUS detector. It +// inherit from the base params.jsonnet and override the relevant parameters + +local wc = import "wirecell.jsonnet"; +local base = import "pgrapher/common/params.jsonnet"; + +base { + det : { + + // define the 4 APAs. This must use the coordinate system + // defined by the wire geometry file. + // + // The "faces" is consumed by, at least, the Drifter and + // AnodePlane. The "wires" number is used to set + // AnodePlane.ident used to lookup the anode in WireSchema. + // It corresponds to the anode number. + // + // Also see: + // lar -c dump_icarus_geometry.fcl + // wirecell-util wire-volumes icarus-wires-dualanode.json.bz2 + // to help with defining these parameters. + + + // The "response" plane is where the field response functions + // start. Garfield calcualtions start somewhere relative to + // something, here's where that is made concrete. This MUST + // match what field response functions also used. + response_plane: 10*wc.cm, // relative to collection wires + + + // Each wire gets identified with the id number in the geometry + // file. The horizontal induction is split into two, both + // sides are enumerated by "s", while "n" counts the physical anodes. + // NOTE: the actual physical volumes in ICARUS are only 4 + + local xanode = [-359.33*wc.cm, -61.1*wc.cm, 61.1*wc.cm, 359.33*wc.cm], + local offset_response = [if a%2==0 then +10*wc.cm else -10*wc.cm for a in std.range(0,3)], + local xresponse = [xanode[a] + offset_response[a] for a in std.range(0,3)], + local xcathode = [-210.29*wc.cm, -210.29*wc.cm, 210.29*wc.cm, 210.29*wc.cm], + volumes : [ + { + local anode = a, // physical anode number + + wires: (anode), + name: "anode%d"%(anode), + + faces: [ + { + anode: xanode[a], + response: xresponse[a], + cathode: xcathode[a], + }, + { + anode: xanode[a], + response: xresponse[a], + cathode: xcathode[a], + } + ], + } for a in std.range(0,3) + ], + + // This describes some rough, overall bounding box. It's not + // directly needed but can be useful on the Jsonnet side, for + // example when defining some simple kinematics. It is + // represented by a ray going from extreme corners of a + // rectangular solid. Again "wirecell-util wires-info" helps + // to choose something. //FIXME -- ARE CORRECT? + bounds : { + tail: wc.point(-3.65, -1.7, -9.1, wc.m), + head: wc.point(+3.65, +1.4, +8.8, wc.m), + } + }, + + daq: super.daq { + tick: 0.4*wc.us, // 2.5 MHz + nticks: 4096, + }, + + adc: super.adc { + // fix baseline at 2048 (induction), 400 (collection) + baselines: [1650.0*wc.millivolt, 1650.0*wc.millivolt, 322.3*wc.millivolt], + + // From ICARUS paper: https://iopscience.iop.org/article/10.1088/1748-0221/13/12/P12007/pdf + //check (values taken from the FE calibration shown in pg. 7 of the paper) + fullscale: [0.8*wc.millivolt, 3.3*wc.volt], + }, + + elec: [super.elec { + type: "WarmElecResponse", + // Old values: + // ICARUS nominal: 17.8075*wc.mV/wc.fC // 0.027 fC/(ADC*us) + // Match data ADC values (docdb 25161): 14.9654*wc.mV/wc.fC, // 0.0321 fC/(ADC*us) + gain: 14.9654*wc.mV/wc.fC, // 0.0321 fC/(ADC*us) + shaping: 1.3*wc.us, + postgain: 1.0, + start: 0, + }, for _ in [0, 1, 2]], + + + sim: super.sim { + + // For running in LArSoft, the simulation must be in fixed time mode. + fixed: true, + + // The "absolute" time (ie, in G4 time) that the lower edge of + // of final readout tick #0 should correspond to. This is a + // "fixed" notion. + local tick0_time = -340*wc.us, // TriggerOffsetTPC from detectorclocks_icarus.fcl + + // Open the ductor's gate a bit early. + local response_time_offset = $.det.response_plane / $.lar.drift_speed, + local response_nticks = wc.roundToInt(response_time_offset / $.daq.tick), + + ductor : { + nticks: $.daq.nticks + response_nticks, + readout_time: self.nticks * $.daq.tick, + start_time: tick0_time - response_time_offset, + }, + + // To counter the enlarged duration of the ductor, a Reframer + // chops off the little early, extra time. Note, tags depend on how + reframer: { + tbin: response_nticks, + nticks: $.daq.nticks, + } + + }, + + files: { + wires: "icarus_wire_twofaced.json.bz2", + + fields: ["icarus_fnal_fit_ks_P0nom.json.bz2"], + + // noise: ["icarus_noise_model_int_TPCEE.json.bz2","icarus_noise_model_int_TPCEW.json.bz2","icarus_noise_model_int_TPCWE.json.bz2","icarus_noise_model_int_TPCWW.json.bz2"], + // coherent_noise: ["icarus_noise_model_coh_TPCEE.json.bz2","icarus_noise_model_coh_TPCEW.json.bz2","icarus_noise_model_coh_TPCWE.json.bz2","icarus_noise_model_coh_TPCWW.json.bz2"], + wiregroups: "icarus_group_to_channel_map.json.bz2", + noisegroups: ["icarus_noise_model_int_by_board_TPCEE.json.bz2","icarus_noise_model_int_by_board_TPCEW.json.bz2","icarus_noise_model_int_by_board_TPCWE.json.bz2","icarus_noise_model_int_by_board_TPCWW.json.bz2","icarus_noise_model_coh_by_board_TPCEE.json.bz2","icarus_noise_model_coh_by_board_TPCEW.json.bz2","icarus_noise_model_coh_by_board_TPCWE.json.bz2","icarus_noise_model_coh_by_board_TPCWW.json.bz2"], + chresp: null, + }, + +} + diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/sp.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/sp.jsonnet index ace6dd8be..10650e6bd 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/sp.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/sp.jsonnet @@ -30,7 +30,7 @@ function(params, tools, override = {}) { elecresponse : wc.tn(tools.elec_resp[2]), postgain: 1, // default 1.2 ADC_mV: 4096 / (3300.0 * wc.mV), // default 4096/2000 - troi_col_th_factor: 5.0, // default 5 + troi_col_th_factor: 3.0, // default 5 troi_ind_th_factor: 3.0, // default 3 lroi_rebin: 6, // default 6 lroi_th_factor: 3.5, // default 3.5 diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet new file mode 100644 index 000000000..0042efb0f --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet @@ -0,0 +1,62 @@ +local wc = import "wirecell.jsonnet"; +local g = import 'pgraph.jsonnet'; + +// The approximated sim+sigproc +function(params, tools, anode, name=null) { + local sufix = name, + local sp = g.pnode({ + type: 'DepoFluxSplat', + name: sufix, + data: { + anode: wc.tn(anode), + field_response: wc.tn(tools.field), // for speed and origin + sparse: true, + tick: params.daq.tick, + window_start: -340 * wc.us, // TriggerOffsetTPC from detectorclocks_icarus.fcl + window_duration: params.daq.readout_time, + reference_time: -1500 * wc.us - self.window_start, // G4RefTime from detectorclocks_icarus.fcl less window start as per Brett Viren + // Run wirecell-gen morse-* to find these numbers that match the extra + // spread the sigproc induces. + "smear_long": [ + 2.691862363980221, + 2.6750200122535057, + 2.7137567141154055 + ], + "smear_tran": [ + 0.7377218875719689, + 0.7157764520393882, + 0.13980698710556544 + ] + }, + }, nin=1, nout=1, uses=[anode, tools.field]), + local hio = g.pnode({ + type: 'HDF5FrameTap', + name: 'hio_true%s' % name, + data: { + anode: wc.tn(anode), + trace_tags: ['deposplat%s' % name], + filename: "wc-true-%s.h5" % name, + chunk: [0, 0], // ncol, nrow + gzip: 2, + high_throughput: true, + }, + }, nin=1, nout=1), + local rt = g.pnode({ + type: 'Retagger', + name: sufix, + data: { + // Note: retagger keeps tag_rules an array to be like frame fanin/fanout. + tag_rules: [{ + // Retagger also handles "frame" and "trace" like fanin/fanout + // merge separately all traces like gaussN to gauss. + frame: { + ".*": "deposplat%s" % sufix + }, + merge: { + ".*": "deposplat%s" % sufix + }, + }], + }, + }, nin=1, nout=1), + ret: g.pipeline([sp, rt, hio], name=sp.name), +}.ret diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet index 5eaa7c143..25cd96843 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet @@ -135,7 +135,7 @@ local wcls_output = { data: { // anode: wc.tn(tools.anode), anode: wc.tn(mega_anode), - digitize: false, // true means save as RawDigit, else recob::Wire + digitize: true, // true means save as RawDigit, else recob::Wire frame_tags: ['raw'], // nticks: params.daq.nticks, chanmaskmaps: ['bad'], @@ -154,10 +154,10 @@ local wcls_output = { // anode: wc.tn(tools.anode), anode: wc.tn(mega_anode), digitize: false, // true means save as RawDigit, else recob::Wire - // frame_tags: ['gauss', 'wiener', 'looseLf'], + // frame_tags: ['gauss', 'wiener', 'looseLf','shrinkROI','extendROI'], // frame_scale: [0.1, 0.1, 0.1], - frame_tags: ['decon','looseLf', 'gauss', 'wiener', 'tightLf', 'cleanupROI', 'breakROI1', 'breakROI2', 'shrinkROI', 'extendROI'], - frame_scale: [0.009,0.009, 0.009, 0.009, 0.009, 0.009, 0.009, 0.009, 0.009], + frame_tags: ['gauss','wiener','looseLf','shrinkROI','extendROI'], + frame_scale: [0.009,0.009,0.009,0.009,0.009], // nticks: params.daq.nticks, chanmaskmaps: [], nticks: -1, @@ -206,7 +206,17 @@ local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', use_roi_refinement: true, use_roi_debug_mode: true, - use_multi_plane_protection: true, +// wiener_tag: "", + // gauss_tag: "", + tight_lf_tag: "", + // loose_lf_tag: "", + cleanup_roi_tag: "", + break_roi_loop1_tag: "", + break_roi_loop2_tag: "", + //shrink_roi_tag: "", + //extend_roi_tag: "", + m_decon_charge_tag: "", + use_multi_plane_protection: false, mp_tick_resolution: 10, }; local sp = sp_maker(params, tools, sp_override); @@ -270,15 +280,15 @@ local fanin_tag_rules = [ trace: { ['extend_roi%d'%ind]:'extend_roi%d'%ind, ['shrink_roi%d'%ind]:'shrink_roi%d'%ind, - ['break_roi_2nd%d'%ind]:'break_roi_2nd%d'%ind, - ['break_roi_1st%d'%ind]:'break_roi_1st%d'%ind, - ['cleanup_roi%d'%ind]:'cleanup_roi%d'%ind, + // ['break_roi_2nd%d'%ind]:'break_roi_2nd%d'%ind, + // ['break_roi_1st%d'%ind]:'break_roi_1st%d'%ind, + // ['cleanup_roi%d'%ind]:'cleanup_roi%d'%ind, ['gauss%d'%ind]:'gauss%d'%ind, ['wiener%d'%ind]:'wiener%d'%ind, - ['threshold%d'%ind]:'threshold%d'%ind, - ['tight_lf%d'%ind]:'tight_lf%d'%ind, + // ['threshold%d'%ind]:'threshold%d'%ind, + // ['tight_lf%d'%ind]:'tight_lf%d'%ind, ['loose_lf%d'%ind]:'loose_lf%d'%ind, - ['decon%d'%ind]:'decon%d'%ind, + // ['decon%d'%ind]:'decon%d'%ind, }, } @@ -299,12 +309,12 @@ local retagger = g.pnode({ merge: { 'gauss\\d\\d\\d': 'gauss', 'wiener\\d\\d\\d': 'wiener', - 'tight_lf\\d\\d\\d': 'tightLf', + // 'tight_lf\\d\\d\\d': 'tightLf', 'loose_lf\\d\\d\\d': 'looseLf', - 'decon\\d\\d\\d': 'decon', - 'cleanup_roi\\d\\d\\d': 'cleanupROI', - 'break_roi_1st\\d\\d\\d': 'breakROI1', - 'break_roi_2nd\\d\\d\\d': 'breakROI2', + // 'decon\\d\\d\\d': 'decon', + // 'cleanup_roi\\d\\d\\d': 'cleanupROI', + // 'break_roi_1st\\d\\d\\d': 'breakROI1', + // 'break_roi_2nd\\d\\d\\d': 'breakROI2', 'shrink_roi\\d\\d\\d': 'shrinkROI', 'extend_roi\\d\\d\\d': 'extendROI', }, @@ -314,8 +324,8 @@ local retagger = g.pnode({ local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); - -local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); +//wcls_output.h5ioa +local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.sp_signals, sink]); local app = { type: 'Pgrapher', From 79a2d5fd5651957e593ed670580d87f724add400 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 16 Sep 2024 11:03:39 -0500 Subject: [PATCH 11/43] Add twofaced jsonnet --- .../wcls-decode-to-sig-twofaced.jsonnet | 350 ++++++++++++++++++ 1 file changed, 350 insertions(+) create mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet new file mode 100644 index 000000000..214efd9e0 --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet @@ -0,0 +1,350 @@ +// This is a main entry point to configure a WC/LS job that applies +// noise filtering and signal processing to existing RawDigits. The +// FHiCL is expected to provide the following parameters as attributes +// in the "params" structure. +// +// epoch: the hardware noise fix expoch: "before", "after", "dynamic" or "perfect" +// reality: whether we are running on "data" or "sim"ulation. +// raw_input_label: the art::Event inputTag for the input RawDigit +// +// see the .fcl of the same name for an example Version 2 +// +// Manual testing, eg: +// +// jsonnet -V reality=data -V epoch=dynamic -V raw_input_label=daq \\ +// -V signal_output_form=sparse \\ +// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet +// +// jsonnet -V reality=sim -V epoch=perfect -V raw_input_label=daq \\ +// -V signal_output_form=sparse \\ +// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet + + +local epoch = std.extVar('epoch'); // eg "dynamic", "after", "before", "perfect" +local reality = std.extVar('reality'); +local sigoutform = std.extVar('signal_output_form'); // eg "sparse" or "dense" + +local wc = import 'wirecell.jsonnet'; +local g = import 'pgraph.jsonnet'; + +local raw_input_label = std.extVar('raw_input_label'); // eg "daq" +local volume_label = std.extVar('tpc_volume_label'); // eg "",0,1,2,3 +local volume = if volume_label == '' then -1 else std.parseInt(volume_label); + +// local data_params = import 'params.jsonnet'; +// local simu_params = import 'simparams.jsonnet'; +// local params_init = if reality == 'data' then data_params else simu_params; +local params_twofaced = import 'pgrapher/experiment/icarus/params_twofaced.jsonnet'; + +# Load the sim-params, overwrite the volume config for the two-faced version +local base_params = import 'pgrapher/experiment/icarus/simparams.jsonnet'; +local base = base_params + params_twofaced; + +// load the electronics response parameters +local er_params = [ + { + gain: std.extVar('gain0')*wc.mV/wc.fC, + shaping: std.extVar('shaping0')*wc.us, + }, + + { + gain: std.extVar('gain1')*wc.mV/wc.fC, + shaping: std.extVar('shaping1')*wc.us, + }, + + { + gain: std.extVar('gain2')*wc.mV/wc.fC, + shaping: std.extVar('shaping2')*wc.us, + }, +]; + + +local params = base { + files: super.files { + fields: [ std.extVar('files_fields'), ], + chresp: null, + }, + + rc_resp: if std.extVar('file_rcresp') != "" then + { + // "icarus_fnal_rc_tail.json" + filename: std.extVar('file_rcresp'), + postgain: 1.0, + start: 0.0, + tick: 0.4*wc.us, + nticks: params.daq.nticks,// 4255, + type: "JsonElecResponse", + } + else super.rc_resp, + + elec: std.mapWithIndex(function (n, eparam) + super.elec[n] + { + gain: eparam.gain, + shaping: eparam.shaping, + }, er_params), + +}; + +// local tools_maker = import 'pgrapher/common/tools.jsonnet'; +local tools_maker = import 'pgrapher/experiment/icarus/icarus_tools.jsonnet'; +local tools = tools_maker(params); + + +local wcls_maker = import 'pgrapher/ui/wcls/nodes.jsonnet'; +local wcls = wcls_maker(params, tools); + +local sp_maker = import 'pgrapher/experiment/icarus/sp.jsonnet'; + +//local chndbm = chndb_maker(params, tools); +//local chndb = if epoch == "dynamic" then chndbm.wcls_multi(name="") else chndbm.wct(epoch); + + +// Collect the WC/LS input converters for use below. Make sure the +// "name" argument matches what is used in the FHiCL that loads this +// file. In particular if there is no ":" in the inputer then name +// must be the emtpy string. +local wcls_input = { + adc_digits: g.pnode({ + type: 'wclsRawFrameSource', + name: 'rfsrc%d' %volume, // to use multiple wirecell instances in a fhicl job + data: { + art_tag: raw_input_label, + frame_tags: ['orig'], // this is a WCT designator + tick: params.daq.tick, + // nticks: params.daq.nticks, + }, + }, nin=0, nout=1), + +}; + +// Collect all the wc/ls output converters for use below. Note the +// "name" MUST match what is used in theh "outputers" parameter in the +// FHiCL that loads this file. + +local this_anode = tools.anodes[volume]; + +local wcls_output = { + // The noise filtered "ADC" values. These are truncated for + // art::Event but left as floats for the WCT SP. Note, the tag + // "raw" is somewhat historical as the output is not equivalent to + // "raw data". + nf_digits: g.pnode({ + type: 'wclsFrameSaver', + name: 'nfsaver', + data: { + // anode: wc.tn(tools.anode), + anode: wc.tn(this_anode), + digitize: true, // true means save as RawDigit, else recob::Wire + frame_tags: ['raw'], + // nticks: params.daq.nticks, + chanmaskmaps: ['bad'], + }, + }, nin=1, nout=1, uses=[this_anode]), + + + // The output of signal processing. Note, there are two signal + // sets each created with its own filter. The "gauss" one is best + // for charge reconstruction, the "wiener" is best for S/N + // separation. Both are used in downstream WC code. + sp_signals: g.pnode({ + type: 'wclsFrameSaver', + name: 'spsaver%d' %volume, // to use multiple wirecell instances in a fhicl job + data: { + // anode: wc.tn(tools.anode), + anode: wc.tn(this_anode), + digitize: false, // true means save as RawDigit, else recob::Wire + // frame_tags: ['gauss', 'wiener', 'looseLf','shrinkROI','extendROI'], + // frame_scale: [0.1, 0.1, 0.1], + // frame_tags: ['gauss','wiener','looseLf','shrinkROI','extendROI','mp3ROI','mp2ROI', 'cleanupROI'], + // frame_scale: [0.009,0.009,0.009,0.009,0.009,0.009,0.009,0.009], + + frame_tags: ['gauss', 'wiener', 'looseLf'], + frame_scale: [0.009,0.009,0.009], + + // nticks: params.daq.nticks, + chanmaskmaps: [], + nticks: -1, + }, + }, nin=1, nout=1, uses=[this_anode]), + + h5io: g.pnode({ + type: 'HDF5FrameTap', + name: 'hio_sp%d' % volume, + data: { + anode: wc.tn(this_anode), + trace_tags: ['gauss' + , 'wiener' + , 'tightLf' + , 'looseLf' + , 'decon' + , 'cleanupROI' + , 'breakROI1' + , 'breakROI2' + , 'shrinkROI' + , 'extendROI' + , 'mp3ROI' + , 'mp2ROI' + ], + filename: "wc-sp-%d.h5" % volume, + chunk: [0, 0], // ncol, nrow + gzip: 2, + high_throughput: true, + }, + }, nin=1, nout=1, uses=[this_anode]), + +}; + +// local perfect = import 'chndb-perfect.jsonnet'; +local base = import 'pgrapher/experiment/icarus/chndb-base.jsonnet'; +local chndb = [{ + type: 'OmniChannelNoiseDB', + name: 'ocndbperfect%d' % n, + // data: perfect(params, tools.anodes[n], tools.field, n), + data: base(params, tools.anodes[n], tools.field, n){dft:wc.tn(tools.dft)}, + uses: [tools.anodes[n], tools.field, tools.dft], // pnode extension +} for n in std.range(0, std.length(tools.anodes) - 1)]; + +local nf_maker = import 'pgrapher/experiment/icarus/nf.jsonnet'; +local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; + +local sp_override = { // assume all tages sets in base sp.jsonnet + sparse: sigoutform == 'sparse', + use_roi_refinement: true, + use_roi_debug_mode: true, +// wiener_tag: "", + // gauss_tag: "", + tight_lf_tag: "", + // loose_lf_tag: "", + break_roi_loop1_tag: "", + break_roi_loop2_tag: "", + //shrink_roi_tag: "", + //extend_roi_tag: "", + m_decon_charge_tag: "", + use_multi_plane_protection: true, + mp_tick_resolution: 10, + process_planes: [0, 1, 2], + isWrapped: true, + nwires_separate_planes: [ + [1056, 1056], [5600], [5600] + ] +}; +local sp = sp_maker(params, tools, sp_override); +local sp_pipes = [sp.make_sigproc(a) for a in tools.anodes]; + +local util = import 'pgrapher/experiment/icarus/funcs.jsonnet'; +local chsel_pipes = [ + g.pnode({ + type: 'ChannelSelector', + name: 'chsel%d' % n, + data: { + channels: util.anode_channels_twofaced(n), + //tags: ['orig%d' % n], // traces tag + }, + }, nin=1, nout=1) + for n in std.range(0, std.length(tools.anodes) - 1) +]; + +local magoutput = 'icarus-data-check.root'; +local magnify = import 'pgrapher/experiment/icarus/magnify-sinks.jsonnet'; +local magnifyio = magnify(tools, magoutput); + +local nfsp_pipes = [ + g.pipeline([ + chsel_pipes[n], + // magnifyio.orig_pipe[n], + + // nf_pipes[n], + // magnifyio.raw_pipe[n], + + sp_pipes[n], + // magnifyio.decon_pipe[n], + // magnifyio.threshold_pipe[n], + // magnifyio.debug_pipe[n], // use_roi_debug_mode: true in sp.jsonnet + ], + 'nfsp_pipe_%d' % n) + for n in std.range(0, std.length(tools.anodes) - 1) +]; + +local fanout_tag_rules = [ + { + frame: { + '.*': 'orig%d' % tools.anodes[n].data.ident, + }, + trace: { + // fake doing Nmult SP pipelines + //orig: ['wiener', 'gauss'], + //'.*': 'orig', + }, + } + for n in std.range(0, std.length(tools.anodes) - 1) + ]; + +local anode_ident = [tools.anodes[n].data.ident for n in std.range(0, std.length(tools.anodes) - 1)]; +local fanin_tag_rules = [ + { + frame: { + //['number%d' % n]: ['output%d' % n, 'output'], + '.*': 'framefanin', + }, + trace: { + ['extend_roi%d'%ind]:'extend_roi%d'%ind, + ['shrink_roi%d'%ind]:'shrink_roi%d'%ind, + // ['break_roi_2nd%d'%ind]:'break_roi_2nd%d'%ind, + // ['break_roi_1st%d'%ind]:'break_roi_1st%d'%ind, + ['cleanup_roi%d'%ind]:'cleanup_roi%d'%ind, + ['mp2_roi%d'%ind]:'mp2_roi%d'%ind, + ['mp3_roi%d'%ind]:'mp3_roi%d'%ind, + ['gauss%d'%ind]:'gauss%d'%ind, + ['wiener%d'%ind]:'wiener%d'%ind, + // ['threshold%d'%ind]:'threshold%d'%ind, + // ['tight_lf%d'%ind]:'tight_lf%d'%ind, + ['loose_lf%d'%ind]:'loose_lf%d'%ind, + // ['decon%d'%ind]:'decon%d'%ind, + }, + + } + for ind in anode_ident + ]; +local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); + +local retagger = g.pnode({ + type: 'Retagger', + data: { + // Note: retagger keeps tag_rules an array to be like frame fanin/fanout. + tag_rules: [{ + // Retagger also handles "frame" and "trace" like fanin/fanout + // merge separately all traces like gaussXYZ to gauss. + frame: { + '.*': 'retagger', + }, + merge: { + 'gauss\\d': 'gauss', + 'wiener\\d': 'wiener', + // 'tight_lf\\d': 'tightLf', + 'loose_lf\\d': 'looseLf', + // 'decon\\d': 'decon', + 'cleanup_roi\\d': 'cleanupROI', + // 'break_roi_1st\\d': 'breakROI1', + // 'break_roi_2nd\\d': 'breakROI2', + 'shrink_roi\\d': 'shrinkROI', + 'extend_roi\\d': 'extendROI', + 'mp3_roi\\d': 'mp3ROI', + 'mp2_roi\\d': 'mp2ROI', + }, + }], + }, +}, nin=1, nout=1); + +local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); + +local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); + +local app = { + type: 'Pgrapher', + data: { + edges: g.edges(graph), + }, +}; + +// Finally, the configuration sequence +g.uses(graph) + [app] From 0693e9b780c7b0d6012baa2fa06a7c4780879ed6 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 4 Nov 2024 15:46:31 -0600 Subject: [PATCH 12/43] Integrate 2D signal processing into ICARUS reconstruction. Add in new jsonnets for various WC SP configs. Move parameters out of json config into fcl config. --- fcl/reco/Definitions/sp_filter_parameters.fcl | 15 + fcl/reco/Definitions/stage0_icarus_defs.fcl | 16 +- .../Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl | 1 + .../Run2/stage0E_run2_wc_icarus_mc_2f.fcl | 3 + .../Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl | 7 + .../Run2/stage0E_run2_wc_icarus_mc_2fdnn.fcl | 9 + .../Run2/stage0E_run2_wc_icarus_mc_h5.fcl | 6 + .../Run2/stage0W_gauss_run2_wc_icarus_mc.fcl | 3 + .../Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl | 10 + .../Run2/stage0W_run2_wc_icarus_mc_2f.fcl | 3 + .../Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl | 7 + .../Run2/stage0W_run2_wc_icarus_mc_2fdnn.fcl | 9 + .../Run2/stage0W_run2_wc_icarus_mc_h5.fcl | 6 + .../Stage0/Run2/stage0_run2_wc_icarus_mc.fcl | 85 ++-- .../Run2/stage0_run2_wc_icarus_mc_2f.fcl | 9 + .../Run2/stage0_run2_wc_icarus_mc_2fdnn.fcl | 9 + .../detsimmodules_wirecell_ICARUS.fcl | 5 +- .../TPC/ICARUSWireCell/icarus/dnnroi.jsonnet | 105 +++++ .../ICARUSWireCell/icarus/sp-filters.jsonnet | 25 +- .../TPC/ICARUSWireCell/icarus/splat.jsonnet | 12 +- .../icarus/wcls-decode-to-sig-h5.jsonnet | 339 ++++++++++++++++ ...wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 372 ++++++++++++++++++ .../wcls-decode-to-sig-twofaced.jsonnet | 2 +- .../icarus/wcls-decode-to-sig.jsonnet | 2 +- 24 files changed, 994 insertions(+), 66 deletions(-) create mode 100644 fcl/reco/Definitions/sp_filter_parameters.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2fdnn.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2fdnn.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2fdnn.fcl create mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet create mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-h5.jsonnet create mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet diff --git a/fcl/reco/Definitions/sp_filter_parameters.fcl b/fcl/reco/Definitions/sp_filter_parameters.fcl new file mode 100644 index 000000000..5929eeb91 --- /dev/null +++ b/fcl/reco/Definitions/sp_filter_parameters.fcl @@ -0,0 +1,15 @@ +BEGIN_PROLOG +Wiener_tight_U_sigma: 0.065 +Wiener_tight_U_power: 4.4 +Wiener_tight_V_sigma: 0.065 +Wiener_tight_V_power: 2.6 +Wiener_tight_W_sigma: 0.07 +Wiener_tight_W_power: 3.4 + +Wire_ind_sigma: 0.4 +Wire_col_sigma: 2.2 + +Gaus_wide_sigma: 0.06 + +gain_ADC_per_e: 0.01214 # ADC / e-. For frame_scale +END_PROLOG diff --git a/fcl/reco/Definitions/stage0_icarus_defs.fcl b/fcl/reco/Definitions/stage0_icarus_defs.fcl index 249ef4501..beca32490 100644 --- a/fcl/reco/Definitions/stage0_icarus_defs.fcl +++ b/fcl/reco/Definitions/stage0_icarus_defs.fcl @@ -372,7 +372,7 @@ icarus_stage0_producers.decon2droiEE.wcls_main.params.tpc_volume_label: icarus_stage0_producers.decon2droiEE.wcls_main.params.signal_output_form: "dense" icarus_stage0_producers.decon2droiEE.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiEE.wcls_main.loglevels: ["debug", "pgraph:info"] -icarus_stage0_producers.decon2droiEE.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiEE.wcls_main.plugins, "WireCellHio"] +icarus_stage0_producers.decon2droiEE.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiEE.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] icarus_stage0_producers.decon2droiEW.wcls_main.inputers: ["wclsRawFrameSource:rfsrc1"] icarus_stage0_producers.decon2droiEW.wcls_main.outputers: ["wclsFrameSaver:spsaver1"] @@ -381,7 +381,7 @@ icarus_stage0_producers.decon2droiEW.wcls_main.params.tpc_volume_label: icarus_stage0_producers.decon2droiEW.wcls_main.params.signal_output_form: "dense" icarus_stage0_producers.decon2droiEW.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiEW.wcls_main.loglevels: ["debug", "pgraph:info"] -icarus_stage0_producers.decon2droiEW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiEW.wcls_main.plugins, "WireCellHio"] +icarus_stage0_producers.decon2droiEW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiEW.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] icarus_stage0_producers.decon2droiWE.wcls_main.inputers: ["wclsRawFrameSource:rfsrc2"] icarus_stage0_producers.decon2droiWE.wcls_main.outputers: ["wclsFrameSaver:spsaver2"] @@ -390,7 +390,7 @@ icarus_stage0_producers.decon2droiWE.wcls_main.params.tpc_volume_label: icarus_stage0_producers.decon2droiWE.wcls_main.params.signal_output_form: "dense" icarus_stage0_producers.decon2droiWE.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiWE.wcls_main.loglevels: ["debug", "pgraph:info"] -icarus_stage0_producers.decon2droiWE.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWE.wcls_main.plugins, "WireCellHio"] +icarus_stage0_producers.decon2droiWE.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWE.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] icarus_stage0_producers.decon2droiWW.wcls_main.inputers: ["wclsRawFrameSource:rfsrc3"] icarus_stage0_producers.decon2droiWW.wcls_main.outputers: ["wclsFrameSaver:spsaver3"] @@ -399,7 +399,7 @@ icarus_stage0_producers.decon2droiWW.wcls_main.params.tpc_volume_label: icarus_stage0_producers.decon2droiWW.wcls_main.params.signal_output_form: "dense" icarus_stage0_producers.decon2droiWW.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiWW.wcls_main.loglevels: ["debug", "pgraph:info"] -icarus_stage0_producers.decon2droiWW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWW.wcls_main.plugins, "WireCellHio"] +icarus_stage0_producers.decon2droiWW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWW.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] ### Set up to output ROIs from full waveforms icarus_stage0_producers.roifinder1d.WireModuleLabelVec: ["decon1droi:PHYSCRATEDATATPCWW","decon1droi:PHYSCRATEDATATPCWE","decon1droi:PHYSCRATEDATATPCEW","decon1droi:PHYSCRATEDATATPCEE"] @@ -423,10 +423,10 @@ icarus_stage0_producers.gaushit1dTPCWE.CalDataModuleLabel: icarus_stage0_producers.gaushit1dTPCEW.CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEW" icarus_stage0_producers.gaushit1dTPCEE.CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEE" -icarus_stage0_producers.gaushit2dTPCWW.CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCWW" -icarus_stage0_producers.gaushit2dTPCWE.CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCWE" -icarus_stage0_producers.gaushit2dTPCEW.CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCEW" -icarus_stage0_producers.gaushit2dTPCEE.CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCEE" +icarus_stage0_producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:gauss" +icarus_stage0_producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:gauss" +icarus_stage0_producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:gauss" +icarus_stage0_producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:gauss" icarus_stage0_producers.gausshitTPCWW.CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWW" icarus_stage0_producers.gausshitTPCWE.CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWE" diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl index ad278d83d..dddafd72b 100644 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl @@ -9,3 +9,4 @@ physics.path: [ @sequence::icarus_stage0_mc_PMT, physics.outana: [] +process_name: MCstage0E diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl index 52a894abf..582fceda9 100644 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl @@ -1,4 +1,7 @@ #include "stage0E_run2_wc_icarus_mc.fcl" +# +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl new file mode 100644 index 000000000..3b7b3946d --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl @@ -0,0 +1,7 @@ +#include "stage0E_run2_wc_icarus_mc_2f.fcl" +physics.producers.MCDecodeTPCROI.OutputRawWaveform: true + +physics.producers.decon2droiEE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEERAW" +physics.producers.decon2droiEW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEWRAW" +physics.producers.decon2droiWE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWERAW" +physics.producers.decon2droiWW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWWRAW" diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2fdnn.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2fdnn.fcl new file mode 100644 index 000000000..9d6e7fbca --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2fdnn.fcl @@ -0,0 +1,9 @@ +#include "stage0E_run2_wc_icarus_mc.fcl" +# +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl new file mode 100644 index 000000000..a3cd262ac --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl @@ -0,0 +1,6 @@ +#include "stage0E_run2_wc_icarus_mc.fcl" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl new file mode 100644 index 000000000..37cf6bd4d --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl @@ -0,0 +1,3 @@ +#include "stage0W_run2_wc_icarus_mc.fcl" + +physics.producers.roifinder2d.WireModuleLabelVec: ["decon2droiWW:gauss","decon2droiWE:gauss","decon2droiEW:gauss","decon2droiEE:gauss"] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl index c85d0377d..285c2c302 100644 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl @@ -3,4 +3,14 @@ # Run the West 2D deconv and finish TPC stage0 physics.path: [@sequence::icarus_stage0_2d_multiTPC_finish_W] +# Make hit finding run on WireCell gauss output +physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:gauss" +physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:gauss" +physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:gauss" +physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:gauss" + +# Make hit-finding analysis point to WireCell wiener ROI output +physics.analyzers.spanaE.WireProducers: ["decon2droiEE:wiener", "decon2droiEW:wiener"] +physics.analyzers.spanaW.WireProducers: ["decon2droiWE:wiener", "decon2droiWW:wiener"] + process_name: MCstage0W diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl index 9ef74fc3d..648e3df18 100644 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl @@ -1,5 +1,8 @@ #include "stage0W_run2_wc_icarus_mc.fcl" +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" + physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl new file mode 100644 index 000000000..5390fe12c --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl @@ -0,0 +1,7 @@ +#include "stage0W_run2_wc_icarus_mc_2f.fcl" + +physics.producers.MCDecodeTPCROI.OutputRawWaveform: true +physics.producers.decon2droiEE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEERAW" +physics.producers.decon2droiEW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEWRAW" +physics.producers.decon2droiWE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWERAW" +physics.producers.decon2droiWW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWWRAW" diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2fdnn.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2fdnn.fcl new file mode 100644 index 000000000..bf5bbf56c --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2fdnn.fcl @@ -0,0 +1,9 @@ +#include "stage0W_run2_wc_icarus_mc.fcl" + +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl new file mode 100644 index 000000000..470103dea --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl @@ -0,0 +1,6 @@ +#include "stage0W_run2_wc_icarus_mc.fcl" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl index 01c07b524..5e46ed8e2 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl @@ -3,6 +3,7 @@ ## TPC data is included in an artdaq data product from a single instance ## #include "stage0_icarus_mc_defs.fcl" +#include "sp_filter_parameters.fcl" #include "stage0_icarus_driver_common.fcl" process_name: MCstage0 @@ -86,43 +87,49 @@ physics.producers.decon2droiWW.wcls_main.structs.shaping2: 1.3 # restore legacy G4 labels physics.producers.mcophit.SimPhotonsProducer: "largeant" +# Defines final gain, in ADC/e- +physics.producers.decon2droiEE.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e +physics.producers.decon2droiEW.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e +physics.producers.decon2droiWE.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e +physics.producers.decon2droiWW.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e + # Filter parameters -physics.producers.decon2droiEE.wcls_main.structs.Gaus_wide_sigma: 0.12 -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_sigma: 0.148788 -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_power: 3.76194 -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_sigma: 0.1596568 -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_power: 4.36125 -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_sigma: 0.13623 -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_power: 3.35324 -physics.producers.decon2droiEE.wcls_main.structs.Wire_ind_sigma: 0.75 -physics.producers.decon2droiEE.wcls_main.structs.Wire_col_sigma: 3.0 - -physics.producers.decon2droiEW.wcls_main.structs.Gaus_wide_sigma: 0.12 -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_sigma: 0.148788 -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_power: 3.76194 -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_sigma: 0.1596568 -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_power: 4.36125 -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_sigma: 0.13623 -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_power: 3.35324 -physics.producers.decon2droiEW.wcls_main.structs.Wire_ind_sigma: 0.75 -physics.producers.decon2droiEW.wcls_main.structs.Wire_col_sigma: 3.0 - -physics.producers.decon2droiWE.wcls_main.structs.Gaus_wide_sigma: 0.12 -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_sigma: 0.148788 -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_power: 3.76194 -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_sigma: 0.1596568 -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_power: 4.36125 -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_sigma: 0.13623 -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_power: 3.35324 -physics.producers.decon2droiWE.wcls_main.structs.Wire_ind_sigma: 0.75 -physics.producers.decon2droiWE.wcls_main.structs.Wire_col_sigma: 3.0 - -physics.producers.decon2droiWW.wcls_main.structs.Gaus_wide_sigma: 0.12 -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_sigma: 0.148788 -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_power: 3.76194 -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_sigma: 0.1596568 -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_power: 4.36125 -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_sigma: 0.13623 -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_power: 3.35324 -physics.producers.decon2droiWW.wcls_main.structs.Wire_ind_sigma: 0.75 -physics.producers.decon2droiWW.wcls_main.structs.Wire_col_sigma: 3.0 +physics.producers.decon2droiEE.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma +physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power +physics.producers.decon2droiEE.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma +physics.producers.decon2droiEE.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma + +physics.producers.decon2droiEW.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma +physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power +physics.producers.decon2droiEW.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma +physics.producers.decon2droiEW.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma + +physics.producers.decon2droiWE.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma +physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power +physics.producers.decon2droiWE.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma +physics.producers.decon2droiWE.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma + +physics.producers.decon2droiWW.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma +physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power +physics.producers.decon2droiWW.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma +physics.producers.decon2droiWW.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl new file mode 100644 index 000000000..425df4f49 --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl @@ -0,0 +1,9 @@ +#include "stage0_run2_wc_icarus_mc.fcl" + +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2fdnn.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2fdnn.fcl new file mode 100644 index 000000000..d4b172013 --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2fdnn.fcl @@ -0,0 +1,9 @@ +#include "stage0_run2_wc_icarus_mc.fcl" + +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] diff --git a/icaruscode/TPC/ICARUSWireCell/detsimmodules_wirecell_ICARUS.fcl b/icaruscode/TPC/ICARUSWireCell/detsimmodules_wirecell_ICARUS.fcl index 7ab588381..8debc90bc 100644 --- a/icaruscode/TPC/ICARUSWireCell/detsimmodules_wirecell_ICARUS.fcl +++ b/icaruscode/TPC/ICARUSWireCell/detsimmodules_wirecell_ICARUS.fcl @@ -12,9 +12,10 @@ icarus_simwire_wirecell: { tool_type: WCLS apps: ["Pgrapher"] - // logsinks: ["stdout"] + logsinks: ["stdout"] // loglevels: ["magnify:debug"] - plugins: ["WireCellPgraph", "WireCellGen","WireCellSio","WireCellRoot","WireCellLarsoft"] + loglevels: ["debug", "pgraph:info"] + plugins: ["WireCellPgraph", "WireCellGen","WireCellSio","WireCellRoot","WireCellLarsoft", "WireCellHio"] // needs to be found via your WIRECELL_PATH configs: ["pgrapher/experiment/icarus/wcls-multitpc-sim-drift-simchannel-refactored.jsonnet"] // Contract note: these exact "type:name" must be used to identify diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet new file mode 100644 index 000000000..df53dd248 --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet @@ -0,0 +1,105 @@ +// This produces a function to configure DNN-ROI for one APA given +// anode and torch service (ts) objects. +// +// The prefix is prepended to all internal node names if uniqueness +// beyond anode ID is needed. The output_scale allows for an ad-hoc +// scaling of dnnroi output. The U and W planes will go through +// dnnroi while hte W plane will be shunted. What comes out will be a +// unified frame with frame tag "dnnspN" where "N" is the anode ID. + +local wc = import "wirecell.jsonnet"; +local pg = import "pgraph.jsonnet"; + +function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0) + local apaid = anode.data.ident; + local prename = prefix + std.toString(apaid); + local intags = ['loose_lf%d'%apaid, // 'mp2_roi%d'%apaid, + 'mp3_roi%d'%apaid]; + + local dnnroi_u = pg.pnode({ + type: "DNNROIFinding", + name: prename+"u", + data: { + anode: wc.tn(anode), + plane: 0, + intags: intags, + decon_charge_tag: "decon%d" %apaid, + outtag: "dnnsp%du"%apaid, + output_scale: output_scale, + forward: wc.tn(ts_u), + tick_per_slice: 8 + } + }, nin=1, nout=1, uses=[ts_u, anode]); + local dnnroi_v = pg.pnode({ + type: "DNNROIFinding", + name: prename+"v", + data: { + anode: wc.tn(anode), + plane: 1, + intags: intags, + decon_charge_tag: "decon%d" %apaid, + outtag: "dnnsp%dv"%apaid, + output_scale: output_scale, + forward: wc.tn(ts_v), + tick_per_slice: 8 + } + }, nin=1, nout=1, uses=[ts_v, anode]); + local dnnroi_w = pg.pnode({ + type: "PlaneSelector", + name: prename+"w", + data: { + anode: wc.tn(anode), + plane: 2, + tags: ["gauss%d"%apaid], + tag_rules: [{ + frame: {".*":"DNNROIFinding"}, + trace: {["gauss%d"%apaid]:"dnnsp%dw"%apaid}, + }], + } + }, nin=1, nout=1, uses=[anode]); + + local dnnpipes = [dnnroi_u, dnnroi_v, dnnroi_w]; + local dnnfanout = pg.pnode({ + type: "FrameFanout", + name: prename, + data: { + multiplicity: 3 + } + }, nin=1, nout=3); + + local dnnfanin = pg.pnode({ + type: "FrameFanin", + name: prename, + data: { + multiplicity: 3, + tag_rules: [{ + frame: {".*": "dnnsp%d%s" % [apaid,plane]}, + trace: {".*": "dnnsp%d%s" % [apaid,plane]}, + } for plane in ["u", "v", "w"]] + }, + }, nin=3, nout=1); + + local retagger = pg.pnode({ + type: "Retagger", + name: 'dnnroi%d' % apaid, + data: { + // Note: retagger keeps tag_rules an array to be like frame fanin/fanout. + tag_rules: [{ + // Retagger also handles "frame" and "trace" like fanin/fanout + // merge separately all traces like gaussN to gauss. + frame: { + ".*": "dnnsp%d" % apaid + }, + merge: { + ["dnnsp%d." % apaid]: "dnnsp%d" % apaid + }, + }], + }, + }, nin=1, nout=1); + + pg.intern(innodes=[dnnfanout], + outnodes=[retagger], + centernodes=dnnpipes+[dnnfanin], + edges=[pg.edge(dnnfanout, dnnpipes[ind], ind, 0) for ind in [0,1,2]] + + [pg.edge(dnnpipes[ind], dnnfanin, 0, ind) for ind in [0,1,2]] + + [pg.edge(dnnfanin, retagger, 0, 0)]) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/sp-filters.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/sp-filters.jsonnet index 695b2ec4e..607773a5d 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/sp-filters.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/sp-filters.jsonnet @@ -43,19 +43,22 @@ local wf(name, data={}) = { lf('ROI_loose_lf', { tau: 0.0025 * wc.megahertz }), // 0.0025 hf('Gaus_tight'), - hf('Gaus_wide', { sigma: 0.12 * wc.megahertz }), + hf('Gaus_wide', { + sigma: std.extVar("Gaus_wide_sigma")*wc.megahertz //0.12 * wc.megahertz + }), hf('Wiener_tight_U', { - sigma: 0.148788 * wc.megahertz, - power: 3.76194, + sigma: std.extVar('Wiener_tight_U_sigma')*wc.megahertz, // 0.148788 * wc.megahertz, + power: std.extVar('Wiener_tight_U_power'), //3.76194, }), hf("Wiener_tight_V", { - sigma: 0.1596568 * wc.megahertz, - power: 4.36125 }), + sigma: std.extVar('Wiener_tight_V_sigma')*wc.megahertz, // 0.1596568 * wc.megahertz, + power: std.extVar('Wiener_tight_V_power'), // 4.36125 + }), hf('Wiener_tight_W', { - sigma: 0.13623 * wc.megahertz, - power: 3.35324, + sigma: std.extVar('Wiener_tight_W_sigma')*wc.megahertz, // 0.13623 * wc.megahertz, + power: std.extVar('Wiener_tight_W_power'), // 3.35324, }), hf('Wiener_wide_U', { @@ -71,6 +74,10 @@ local wf(name, data={}) = { power: 4.37928, }), - wf('Wire_ind', { sigma: 1.0 / wc.sqrtpi * 0.75 }), - wf('Wire_col', { sigma: 1.0 / wc.sqrtpi * 3.0 }), + wf('Wire_ind', { + sigma: 1.0 / wc.sqrtpi * std.extVar("Wire_ind_sigma") // 0.75 + }), + wf('Wire_col', { + sigma: 1.0 / wc.sqrtpi * std.extVar("Wire_col_sigma") // 3.0 + }), ] diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet index 0042efb0f..bc5eadd17 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet @@ -18,14 +18,14 @@ function(params, tools, anode, name=null) { // Run wirecell-gen morse-* to find these numbers that match the extra // spread the sigproc induces. "smear_long": [ - 2.691862363980221, - 2.6750200122535057, - 2.7137567141154055 + 4.55, + 4.55, + 4.55, ], "smear_tran": [ - 0.7377218875719689, - 0.7157764520393882, - 0.13980698710556544 + 1.55, + 1.55, + 0.175, ] }, }, nin=1, nout=1, uses=[anode, tools.field]), diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-h5.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-h5.jsonnet new file mode 100644 index 000000000..97ead296b --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-h5.jsonnet @@ -0,0 +1,339 @@ +// This is a main entry point to configure a WC/LS job that applies +// noise filtering and signal processing to existing RawDigits. The +// FHiCL is expected to provide the following parameters as attributes +// in the "params" structure. +// +// epoch: the hardware noise fix expoch: "before", "after", "dynamic" or "perfect" +// reality: whether we are running on "data" or "sim"ulation. +// raw_input_label: the art::Event inputTag for the input RawDigit +// +// see the .fcl of the same name for an example Version 2 +// +// Manual testing, eg: +// +// jsonnet -V reality=data -V epoch=dynamic -V raw_input_label=daq \\ +// -V signal_output_form=sparse \\ +// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet +// +// jsonnet -V reality=sim -V epoch=perfect -V raw_input_label=daq \\ +// -V signal_output_form=sparse \\ +// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet + + +local epoch = std.extVar('epoch'); // eg "dynamic", "after", "before", "perfect" +local reality = std.extVar('reality'); +local sigoutform = std.extVar('signal_output_form'); // eg "sparse" or "dense" + +local wc = import 'wirecell.jsonnet'; +local g = import 'pgraph.jsonnet'; + +local raw_input_label = std.extVar('raw_input_label'); // eg "daq" +local volume_label = std.extVar('tpc_volume_label'); // eg "",0,1,2,3 +local volume = if volume_label == '' then -1 else std.parseInt(volume_label); + +// local data_params = import 'params.jsonnet'; +// local simu_params = import 'simparams.jsonnet'; +// local params_init = if reality == 'data' then data_params else simu_params; +local base = import 'pgrapher/experiment/icarus/simparams.jsonnet'; + +// load the electronics response parameters +local er_params = [ + { + gain: std.extVar('gain0')*wc.mV/wc.fC, + shaping: std.extVar('shaping0')*wc.us, + }, + + { + gain: std.extVar('gain1')*wc.mV/wc.fC, + shaping: std.extVar('shaping1')*wc.us, + }, + + { + gain: std.extVar('gain2')*wc.mV/wc.fC, + shaping: std.extVar('shaping2')*wc.us, + }, +]; + + +local params = base { + files: super.files { + fields: [ std.extVar('files_fields'), ], + chresp: null, + }, + + rc_resp: if std.extVar('file_rcresp') != "" then + { + // "icarus_fnal_rc_tail.json" + filename: std.extVar('file_rcresp'), + postgain: 1.0, + start: 0.0, + tick: 0.4*wc.us, + nticks: params.daq.nticks,// 4255, + type: "JsonElecResponse", + } + else super.rc_resp, + + elec: std.mapWithIndex(function (n, eparam) + super.elec[n] + { + gain: eparam.gain, + shaping: eparam.shaping, + }, er_params), + +}; + +// local tools_maker = import 'pgrapher/common/tools.jsonnet'; +local tools_maker = import 'pgrapher/experiment/icarus/icarus_tools.jsonnet'; +local tools = tools_maker(params); + + +local wcls_maker = import 'pgrapher/ui/wcls/nodes.jsonnet'; +local wcls = wcls_maker(params, tools); + +local sp_maker = import 'pgrapher/experiment/icarus/sp.jsonnet'; + +//local chndbm = chndb_maker(params, tools); +//local chndb = if epoch == "dynamic" then chndbm.wcls_multi(name="") else chndbm.wct(epoch); + + +// Collect the WC/LS input converters for use below. Make sure the +// "name" argument matches what is used in the FHiCL that loads this +// file. In particular if there is no ":" in the inputer then name +// must be the emtpy string. +local wcls_input = { + adc_digits: g.pnode({ + type: 'wclsRawFrameSource', + name: 'rfsrc%d' %volume, // to use multiple wirecell instances in a fhicl job + data: { + art_tag: raw_input_label, + frame_tags: ['orig'], // this is a WCT designator + tick: params.daq.tick, + // nticks: params.daq.nticks, + }, + }, nin=0, nout=1), + +}; + +// Collect all the wc/ls output converters for use below. Note the +// "name" MUST match what is used in theh "outputers" parameter in the +// FHiCL that loads this file. +local mega_anode = { + type: 'MegaAnodePlane', + name: 'meganodes%d' % volume, + data: { + anodes_tn: if volume != -1 then [wc.tn(a) for a in tools.anodes[2*volume:2*(volume+1)]] // single volume + else [wc.tn(anode) for anode in tools.anodes], // all volumes + }, +}; +local wcls_output = { + // The noise filtered "ADC" values. These are truncated for + // art::Event but left as floats for the WCT SP. Note, the tag + // "raw" is somewhat historical as the output is not equivalent to + // "raw data". + nf_digits: g.pnode({ + type: 'wclsFrameSaver', + name: 'nfsaver', + data: { + // anode: wc.tn(tools.anode), + anode: wc.tn(mega_anode), + digitize: true, // true means save as RawDigit, else recob::Wire + frame_tags: ['raw'], + // nticks: params.daq.nticks, + chanmaskmaps: ['bad'], + }, + }, nin=1, nout=1, uses=[mega_anode]), + + + // The output of signal processing. Note, there are two signal + // sets each created with its own filter. The "gauss" one is best + // for charge reconstruction, the "wiener" is best for S/N + // separation. Both are used in downstream WC code. + sp_signals: g.pnode({ + type: 'wclsFrameSaver', + name: 'spsaver%d' %volume, // to use multiple wirecell instances in a fhicl job + data: { + // anode: wc.tn(tools.anode), + anode: wc.tn(mega_anode), + digitize: false, // true means save as RawDigit, else recob::Wire + // frame_tags: ['gauss', 'wiener', 'looseLf','shrinkROI','extendROI'], + // frame_scale: [0.1, 0.1, 0.1], + frame_tags: ['gauss','wiener','looseLf','decon','mp3ROI','mp2ROI'], + frame_scale: [std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e')], + // nticks: params.daq.nticks, + chanmaskmaps: [], + nticks: -1, + }, + }, nin=1, nout=1, uses=[mega_anode]), + + h5io: g.pnode({ + type: 'HDF5FrameTap', + name: 'hio_sp%d' % volume, + data: { + anode: wc.tn(mega_anode), + trace_tags: ['gauss' + , 'wiener' + , 'tightLf' + , 'looseLf' + , 'decon' + , 'mp3ROI' + , 'mp2ROI' + ], + filename: "wc-sp-%d.h5" % volume , + chunk: [0, 0], // ncol, nrow + gzip: 2, + high_throughput: true, + }, + }, nin=1, nout=1, uses=[mega_anode]), + +}; + +// local perfect = import 'chndb-perfect.jsonnet'; +local base = import 'pgrapher/experiment/icarus/chndb-base.jsonnet'; +local chndb = [{ + type: 'OmniChannelNoiseDB', + name: 'ocndbperfect%d' % n, + // data: perfect(params, tools.anodes[n], tools.field, n), + data: base(params, tools.anodes[n], tools.field, n){dft:wc.tn(tools.dft)}, + uses: [tools.anodes[n], tools.field, tools.dft], // pnode extension +} for n in std.range(0, std.length(tools.anodes) - 1)]; + +local nf_maker = import 'pgrapher/experiment/icarus/nf.jsonnet'; +local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; + +local sp_override = { // assume all tages sets in base sp.jsonnet + sparse: sigoutform == 'sparse', + use_roi_refinement: true, + use_roi_debug_mode: true, +// wiener_tag: "", + // gauss_tag: "", + tight_lf_tag: "", + // loose_lf_tag: "", + cleanup_roi_tag: "", + break_roi_loop1_tag: "", + break_roi_loop2_tag: "", + shrink_roi_tag: "", + extend_roi_tag: "", + // m_decon_charge_tag: "", + use_multi_plane_protection: true, + mp_tick_resolution: 10, +}; +local sp = sp_maker(params, tools, sp_override); +local sp_pipes = [sp.make_sigproc(a) for a in tools.anodes]; + +local util = import 'pgrapher/experiment/icarus/funcs.jsonnet'; +local chsel_pipes = [ + g.pnode({ + type: 'ChannelSelector', + name: 'chsel%d' % n, + data: { + channels: util.anode_channels(n), + //tags: ['orig%d' % n], // traces tag + }, + }, nin=1, nout=1) + for n in std.range(0, std.length(tools.anodes) - 1) +]; + +local magoutput = 'icarus-data-check.root'; +local magnify = import 'pgrapher/experiment/icarus/magnify-sinks.jsonnet'; +local magnifyio = magnify(tools, magoutput); + +local nfsp_pipes = [ + g.pipeline([ + chsel_pipes[n], + // magnifyio.orig_pipe[n], + + // nf_pipes[n], + // magnifyio.raw_pipe[n], + + sp_pipes[n], + // magnifyio.decon_pipe[n], + // magnifyio.threshold_pipe[n], + // magnifyio.debug_pipe[n], // use_roi_debug_mode: true in sp.jsonnet + ], + 'nfsp_pipe_%d' % n) + for n in std.range(0, std.length(tools.anodes) - 1) +]; + +local fanout_tag_rules = [ + { + frame: { + '.*': 'orig%d' % tools.anodes[n].data.ident, + }, + trace: { + // fake doing Nmult SP pipelines + //orig: ['wiener', 'gauss'], + //'.*': 'orig', + }, + } + for n in std.range(0, std.length(tools.anodes) - 1) + ]; + +local anode_ident = [tools.anodes[n].data.ident for n in std.range(0, std.length(tools.anodes) - 1)]; +local fanin_tag_rules = [ + { + frame: { + //['number%d' % n]: ['output%d' % n, 'output'], + '.*': 'framefanin', + }, + trace: { + // ['extend_roi%d'%ind]:'extend_roi%d'%ind, + // ['shrink_roi%d'%ind]:'shrink_roi%d'%ind, + // ['break_roi_2nd%d'%ind]:'break_roi_2nd%d'%ind, + // ['break_roi_1st%d'%ind]:'break_roi_1st%d'%ind, + // ['cleanup_roi%d'%ind]:'cleanup_roi%d'%ind, + ['gauss%d'%ind]:'gauss%d'%ind, + ['wiener%d'%ind]:'wiener%d'%ind, + ['mp3_roi%d'%ind]:'mp3_roi%d'%ind, +['mp2_roi%d'%ind]:'mp2_roi%d'%ind, + // ['threshold%d'%ind]:'threshold%d'%ind, + // ['tight_lf%d'%ind]:'tight_lf%d'%ind, + ['loose_lf%d'%ind]:'loose_lf%d'%ind, + ['decon%d'%ind]:'decon%d'%ind, + }, + + } + for ind in anode_ident + ]; +local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); + +local retagger = g.pnode({ + type: 'Retagger', + data: { + // Note: retagger keeps tag_rules an array to be like frame fanin/fanout. + tag_rules: [{ + // Retagger also handles "frame" and "trace" like fanin/fanout + // merge separately all traces like gaussXYZ to gauss. + frame: { + '.*': 'retagger', + }, + merge: { + 'gauss\\d\\d\\d': 'gauss', + 'wiener\\d\\d\\d': 'wiener', + // 'tight_lf\\d\\d\\d': 'tightLf', + 'loose_lf\\d\\d\\d': 'looseLf', + 'decon\\d\\d\\d': 'decon', + // 'cleanup_roi\\d\\d\\d': 'cleanupROI', + // 'break_roi_1st\\d\\d\\d': 'breakROI1', + // 'break_roi_2nd\\d\\d\\d': 'breakROI2', + // 'shrink_roi\\d\\d\\d': 'shrinkROI', + // 'extend_roi\\d\\d\\d': 'extendROI', + 'mp3_roi\\d\\d\\d': 'mp3ROI', + 'mp2_roi\\d\\d\\d': 'mp2ROI', + }, + }], + }, +}, nin=1, nout=1); + +local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); + +//wcls_output.h5io +local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); + +local app = { + type: 'Pgrapher', + data: { + edges: g.edges(graph), + }, +}; + +// Finally, the configuration sequence +g.uses(graph) + [app] diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet new file mode 100644 index 000000000..8a0c7817b --- /dev/null +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -0,0 +1,372 @@ +// This is a main entry point to configure a WC/LS job that applies +// noise filtering and signal processing to existing RawDigits. The +// FHiCL is expected to provide the following parameters as attributes +// in the "params" structure. +// +// epoch: the hardware noise fix expoch: "before", "after", "dynamic" or "perfect" +// reality: whether we are running on "data" or "sim"ulation. +// raw_input_label: the art::Event inputTag for the input RawDigit +// +// see the .fcl of the same name for an example Version 2 +// +// Manual testing, eg: +// +// jsonnet -V reality=data -V epoch=dynamic -V raw_input_label=daq \\ +// -V signal_output_form=sparse \\ +// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet +// +// jsonnet -V reality=sim -V epoch=perfect -V raw_input_label=daq \\ +// -V signal_output_form=sparse \\ +// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet + + +local epoch = std.extVar('epoch'); // eg "dynamic", "after", "before", "perfect" +local reality = std.extVar('reality'); +local sigoutform = std.extVar('signal_output_form'); // eg "sparse" or "dense" + +local wc = import 'wirecell.jsonnet'; +local g = import 'pgraph.jsonnet'; + +local raw_input_label = std.extVar('raw_input_label'); // eg "daq" +local volume_label = std.extVar('tpc_volume_label'); // eg "",0,1,2,3 +local volume = if volume_label == '' then -1 else std.parseInt(volume_label); + +// local data_params = import 'params.jsonnet'; +// local simu_params = import 'simparams.jsonnet'; +// local params_init = if reality == 'data' then data_params else simu_params; +local params_twofaced = import 'pgrapher/experiment/icarus/params_twofaced.jsonnet'; + +# Load the sim-params, overwrite the volume config for the two-faced version +local base_params = import 'pgrapher/experiment/icarus/simparams.jsonnet'; +local base = base_params + params_twofaced; + +// load the electronics response parameters +local er_params = [ + { + gain: std.extVar('gain0')*wc.mV/wc.fC, + shaping: std.extVar('shaping0')*wc.us, + }, + + { + gain: std.extVar('gain1')*wc.mV/wc.fC, + shaping: std.extVar('shaping1')*wc.us, + }, + + { + gain: std.extVar('gain2')*wc.mV/wc.fC, + shaping: std.extVar('shaping2')*wc.us, + }, +]; + + +local params = base { + files: super.files { + fields: [ std.extVar('files_fields'), ], + chresp: null, + }, + + rc_resp: if std.extVar('file_rcresp') != "" then + { + // "icarus_fnal_rc_tail.json" + filename: std.extVar('file_rcresp'), + postgain: 1.0, + start: 0.0, + tick: 0.4*wc.us, + nticks: params.daq.nticks,// 4255, + type: "JsonElecResponse", + } + else super.rc_resp, + + elec: std.mapWithIndex(function (n, eparam) + super.elec[n] + { + gain: eparam.gain, + shaping: eparam.shaping, + }, er_params), + +}; + +// local tools_maker = import 'pgrapher/common/tools.jsonnet'; +local tools_maker = import 'pgrapher/experiment/icarus/icarus_tools.jsonnet'; +local tools = tools_maker(params); + + +local wcls_maker = import 'pgrapher/ui/wcls/nodes.jsonnet'; +local wcls = wcls_maker(params, tools); + +local sp_maker = import 'pgrapher/experiment/icarus/sp.jsonnet'; + +//local chndbm = chndb_maker(params, tools); +//local chndb = if epoch == "dynamic" then chndbm.wcls_multi(name="") else chndbm.wct(epoch); + + +// Collect the WC/LS input converters for use below. Make sure the +// "name" argument matches what is used in the FHiCL that loads this +// file. In particular if there is no ":" in the inputer then name +// must be the emtpy string. +local wcls_input = { + adc_digits: g.pnode({ + type: 'wclsRawFrameSource', + name: 'rfsrc%d' %volume, // to use multiple wirecell instances in a fhicl job + data: { + art_tag: raw_input_label, + frame_tags: ['orig'], // this is a WCT designator + tick: params.daq.tick, + // nticks: params.daq.nticks, + }, + }, nin=0, nout=1), + +}; + +// Collect all the wc/ls output converters for use below. Note the +// "name" MUST match what is used in theh "outputers" parameter in the +// FHiCL that loads this file. + +local this_anode = tools.anodes[volume]; + +local wcls_output = { + // The noise filtered "ADC" values. These are truncated for + // art::Event but left as floats for the WCT SP. Note, the tag + // "raw" is somewhat historical as the output is not equivalent to + // "raw data". + nf_digits: g.pnode({ + type: 'wclsFrameSaver', + name: 'nfsaver', + data: { + // anode: wc.tn(tools.anode), + anode: wc.tn(this_anode), + digitize: true, // true means save as RawDigit, else recob::Wire + frame_tags: ['raw'], + // nticks: params.daq.nticks, + chanmaskmaps: ['bad'], + }, + }, nin=1, nout=1, uses=[this_anode]), + + + // The output of signal processing. Note, there are two signal + // sets each created with its own filter. The "gauss" one is best + // for charge reconstruction, the "wiener" is best for S/N + // separation. Both are used in downstream WC code. + sp_signals: g.pnode({ + type: 'wclsFrameSaver', + name: 'spsaver%d' %volume, // to use multiple wirecell instances in a fhicl job + data: { + // anode: wc.tn(tools.anode), + anode: wc.tn(this_anode), + digitize: false, // true means save as RawDigit, else recob::Wire + // frame_tags: ['gauss', 'wiener', 'looseLf','shrinkROI','extendROI'], + // frame_scale: [0.1, 0.1, 0.1], + // frame_tags: ['gauss','wiener','looseLf','shrinkROI','extendROI','mp3ROI','mp2ROI', 'cleanupROI'], + // frame_scale: [0.009,0.009,0.009,0.009,0.009,0.009,0.009,0.009], + + frame_tags: ['gauss', 'wiener', 'looseLf', 'dnnsp'], + frame_scale: [std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e')], + + // nticks: params.daq.nticks, + chanmaskmaps: [], + nticks: -1, + }, + }, nin=1, nout=1, uses=[this_anode]), + + h5io: g.pnode({ + type: 'HDF5FrameTap', + name: 'hio_sp%d' % volume, + data: { + anode: wc.tn(this_anode), + trace_tags: ['gauss' + , 'wiener' + , 'tightLf' + , 'looseLf' + , 'decon' + , 'cleanupROI' + , 'breakROI1' + , 'breakROI2' + , 'shrinkROI' + , 'extendROI' + , 'mp3ROI' + , 'mp2ROI' + , 'dnnsp' + ], + filename: "wc-sp-%d.h5" % volume, + chunk: [0, 0], // ncol, nrow + gzip: 2, + high_throughput: true, + }, + }, nin=1, nout=1, uses=[this_anode]), + +}; + +// local perfect = import 'chndb-perfect.jsonnet'; +local base = import 'pgrapher/experiment/icarus/chndb-base.jsonnet'; +local chndb = [{ + type: 'OmniChannelNoiseDB', + name: 'ocndbperfect%d' % n, + // data: perfect(params, tools.anodes[n], tools.field, n), + data: base(params, tools.anodes[n], tools.field, n){dft:wc.tn(tools.dft)}, + uses: [tools.anodes[n], tools.field, tools.dft], // pnode extension +} for n in std.range(0, std.length(tools.anodes) - 1)]; + +local nf_maker = import 'pgrapher/experiment/icarus/nf.jsonnet'; +local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; + +local sp_override = { // assume all tages sets in base sp.jsonnet + sparse: sigoutform == 'sparse', + use_roi_refinement: true, + use_roi_debug_mode: true, +// wiener_tag: "", + // gauss_tag: "", + tight_lf_tag: "", + // loose_lf_tag: "", + break_roi_loop1_tag: "", + break_roi_loop2_tag: "", + //shrink_roi_tag: "", + //extend_roi_tag: "", + use_multi_plane_protection: true, + mp_tick_resolution: 10, + process_planes: [0, 1, 2], + isWrapped: true, + nwires_separate_planes: [ + [1056, 1056], [5600], [5600] + ] +}; +local sp = sp_maker(params, tools, sp_override); +local sp_pipes = [sp.make_sigproc(a) for a in tools.anodes]; + +local util = import 'pgrapher/experiment/icarus/funcs.jsonnet'; +local chsel_pipes = [ + g.pnode({ + type: 'ChannelSelector', + name: 'chsel%d' % n, + data: { + channels: util.anode_channels_twofaced(n), + //tags: ['orig%d' % n], // traces tag + }, + }, nin=1, nout=1) + for n in std.range(0, std.length(tools.anodes) - 1) +]; + +local magoutput = 'icarus-data-check.root'; +local magnify = import 'pgrapher/experiment/icarus/magnify-sinks.jsonnet'; +local magnifyio = magnify(tools, magoutput); + +local dnnroi = import 'pgrapher/experiment/icarus/dnnroi.jsonnet'; +local ts_u = { + type: "TorchService", + name: "dnnroi_u", + data: { + model: "NNs/UNet-optfilter-opaqueMC_U_Plane.ts", + device: "cpu", + concurrency: 1, + }, +}; + +local ts_v = { + type: "TorchService", + name: "dnnroi_v", + data: { + model: "NNs/UNet-optfilter-opaqueMC_V_Plane.ts", + device: "cpu", + concurrency: 1, + }, +}; + +local nfsp_pipes = [ + g.pipeline([ + chsel_pipes[n], + // magnifyio.orig_pipe[n], + + // nf_pipes[n], + // magnifyio.raw_pipe[n], + sp_pipes[n], + dnnroi(tools.anodes[n], ts_u, ts_v, output_scale=1), + // magnifyio.decon_pipe[n], + // magnifyio.threshold_pipe[n], + // magnifyio.debug_pipe[n], // use_roi_debug_mode: true in sp.jsonnet + ], + 'nfsp_pipe_%d' % n) + for n in [volume] +]; + +local fanout_tag_rules = [ + { + frame: { + '.*': 'orig%d' % tools.anodes[n].data.ident, + }, + trace: { + // fake doing Nmult SP pipelines + //orig: ['wiener', 'gauss'], + //'.*': 'orig', + }, + } + for n in [volume] + ]; + +local fanin_tag_rules = [ + { + frame: { + //['number%d' % n]: ['output%d' % n, 'output'], + '.*': 'framefanin', + }, + trace: { + ['extend_roi%d'%ind]:'extend_roi%d'%ind, + ['shrink_roi%d'%ind]:'shrink_roi%d'%ind, + // ['break_roi_2nd%d'%ind]:'break_roi_2nd%d'%ind, + // ['break_roi_1st%d'%ind]:'break_roi_1st%d'%ind, + ['cleanup_roi%d'%ind]:'cleanup_roi%d'%ind, + ['mp2_roi%d'%ind]:'mp2_roi%d'%ind, + ['mp3_roi%d'%ind]:'mp3_roi%d'%ind, + ['gauss%d'%ind]:'gauss%d'%ind, + ['dnnsp%d'%ind]:'dnnsp%d'%ind, + ['wiener%d'%ind]:'wiener%d'%ind, + // ['threshold%d'%ind]:'threshold%d'%ind, + // ['tight_lf%d'%ind]:'tight_lf%d'%ind, + ['loose_lf%d'%ind]:'loose_lf%d'%ind, + // ['decon%d'%ind]:'decon%d'%ind, + }, + + } + for ind in [this_anode.data.ident] + ]; +// local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); + +local retagger = g.pnode({ + type: 'Retagger', + data: { + // Note: retagger keeps tag_rules an array to be like frame fanin/fanout. + tag_rules: [{ + // Retagger also handles "frame" and "trace" like fanin/fanout + // merge separately all traces like gaussXYZ to gauss. + frame: { + '.*': 'retagger', + }, + merge: { + 'dnnsp\\d': 'dnnsp', + 'gauss\\d': 'gauss', + 'wiener\\d': 'wiener', + // 'tight_lf\\d': 'tightLf', + 'loose_lf\\d': 'looseLf', + // 'decon\\d': 'decon', + 'cleanup_roi\\d': 'cleanupROI', + // 'break_roi_1st\\d': 'breakROI1', + // 'break_roi_2nd\\d': 'breakROI2', + 'shrink_roi\\d': 'shrinkROI', + 'extend_roi\\d': 'extendROI', + 'mp3_roi\\d': 'mp3ROI', + 'mp2_roi\\d': 'mp2ROI', + }, + }], + }, +}, nin=1, nout=1); + +local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); + +local graph = g.pipeline([wcls_input.adc_digits, chsel_pipes[volume], sp_pipes[volume], dnnroi(this_anode, ts_u, ts_v, output_scale=1), retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); + +local app = { + type: 'Pgrapher', + data: { + edges: g.edges(graph), + }, +}; + +// Finally, the configuration sequence +g.uses(graph) + [app] diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet index 214efd9e0..8066c1dc6 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet @@ -159,7 +159,7 @@ local wcls_output = { // frame_scale: [0.009,0.009,0.009,0.009,0.009,0.009,0.009,0.009], frame_tags: ['gauss', 'wiener', 'looseLf'], - frame_scale: [0.009,0.009,0.009], + frame_scale: [std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e')], // nticks: params.daq.nticks, chanmaskmaps: [], diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet index 25cd96843..13457005a 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet @@ -157,7 +157,7 @@ local wcls_output = { // frame_tags: ['gauss', 'wiener', 'looseLf','shrinkROI','extendROI'], // frame_scale: [0.1, 0.1, 0.1], frame_tags: ['gauss','wiener','looseLf','shrinkROI','extendROI'], - frame_scale: [0.009,0.009,0.009,0.009,0.009], + frame_scale: [std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e')], // nticks: params.daq.nticks, chanmaskmaps: [], nticks: -1, From d55573fedd6ae7634611cf6242285a4b84ae0c0d Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 4 Nov 2024 15:46:59 -0600 Subject: [PATCH 13/43] Don't save output file for SC only detsim. --- fcl/detsim/detsim_2d_icarus_SConly.fcl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fcl/detsim/detsim_2d_icarus_SConly.fcl b/fcl/detsim/detsim_2d_icarus_SConly.fcl index ac6d25ae6..83af1ead0 100644 --- a/fcl/detsim/detsim_2d_icarus_SConly.fcl +++ b/fcl/detsim/detsim_2d_icarus_SConly.fcl @@ -3,5 +3,7 @@ physics.producers.tpcsim: @local::icarus_simwire_wirecell_SConly physics.simulate: ["rns", "tpcsim"] +physics.stream: [] +outputs: {} process_name: TPCSim From 42b79705acac0b1696761e99760efb7efca99d50 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 4 Nov 2024 15:47:16 -0600 Subject: [PATCH 14/43] Move default signal shape detsim to nominal front induction plane. --- fcl/detsim/detsim_2d_icarus_fitFR.fcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fcl/detsim/detsim_2d_icarus_fitFR.fcl b/fcl/detsim/detsim_2d_icarus_fitFR.fcl index 9f69921f2..7e9ceb549 100644 --- a/fcl/detsim/detsim_2d_icarus_fitFR.fcl +++ b/fcl/detsim/detsim_2d_icarus_fitFR.fcl @@ -1,4 +1,4 @@ #include "detsim_2d_icarus.fcl" -physics.producers.daq: @local::icarus_simwire_wirecell_fitSR physics.producers.daq.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-multitpc-sim-drift-simchannel.jsonnet"] +physics.producers.daq: @local::icarus_simwire_wirecell_fitSR_P0nom From 0b00a55c41184f32e6af7d49a249bf6d47284966 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 4 Nov 2024 15:48:01 -0600 Subject: [PATCH 15/43] Fix gain in front induction deconvolution (not clear if this is actually used). --- fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl index 5e46ed8e2..3f479d622 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl @@ -52,11 +52,10 @@ physics.producers.decon2droiWE.wcls_main.params.raw_input_label: "MCDecodeTPCRO physics.producers.decon2droiWW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWW" # As per Gray Putname... -physics.producers.decon2droiEE.wcls_main.structs.gain0: 11.9918701 -physics.producers.decon2droiEW.wcls_main.structs.gain0: 11.9918701 -physics.producers.decon2droiWE.wcls_main.structs.gain0: 11.9918701 -physics.producers.decon2droiWW.wcls_main.structs.gain0: 11.9918701 - +physics.producers.decon2droiEE.wcls_main.structs.gain0: 17.05212 +physics.producers.decon2droiEW.wcls_main.structs.gain0: 17.05212 +physics.producers.decon2droiWE.wcls_main.structs.gain0: 17.05212 +physics.producers.decon2droiWW.wcls_main.structs.gain0: 17.05212 physics.producers.decon2droiEE.wcls_main.structs.gain1: 12.1420344 physics.producers.decon2droiEW.wcls_main.structs.gain1: 12.1420344 From 868912341faf6c892096575f7075e8ef34dec314 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 4 Nov 2024 15:48:37 -0600 Subject: [PATCH 16/43] Add in analyzer module for signal processing performance. --- icaruscode/TPC/CMakeLists.txt | 1 + icaruscode/TPC/SPAna/CMakeLists.txt | 34 ++ icaruscode/TPC/SPAna/SPAna_module.cc | 682 ++++++++++++++++++++++ icaruscode/TPC/SPAna/run_spana_icarus.fcl | 67 +++ icaruscode/TPC/SPAna/spana_icarus.fcl | 39 ++ 5 files changed, 823 insertions(+) create mode 100644 icaruscode/TPC/SPAna/CMakeLists.txt create mode 100644 icaruscode/TPC/SPAna/SPAna_module.cc create mode 100644 icaruscode/TPC/SPAna/run_spana_icarus.fcl create mode 100644 icaruscode/TPC/SPAna/spana_icarus.fcl diff --git a/icaruscode/TPC/CMakeLists.txt b/icaruscode/TPC/CMakeLists.txt index 20d12e1bc..3bca0be5a 100644 --- a/icaruscode/TPC/CMakeLists.txt +++ b/icaruscode/TPC/CMakeLists.txt @@ -8,3 +8,4 @@ add_subdirectory(SignalProcessing) add_subdirectory(Simulation) add_subdirectory(Tracking) add_subdirectory(ICARUSWireCell) +add_subdirectory(SPAna) diff --git a/icaruscode/TPC/SPAna/CMakeLists.txt b/icaruscode/TPC/SPAna/CMakeLists.txt new file mode 100644 index 000000000..4bfa8badd --- /dev/null +++ b/icaruscode/TPC/SPAna/CMakeLists.txt @@ -0,0 +1,34 @@ +cet_build_plugin(SPAna art::module + LIBRARIES + art::Framework_Core + art::Framework_Services_Registry + art_root_io::TFileService_service + art::Framework_Principal + art::Persistency_Common + art::Utilities canvas::canvas + cetlib::cetlib cetlib_except::cetlib_except + ROOT::X3d + art_root_io::tfile_support + art_root_io::art_root_io + art_root_io::dict + lardataobj::AnalysisBase + lardataobj::RecoBase + larcorealg::Geometry + larcore::Geometry_Geometry_service + larcorealg::GeoAlgo + sbnobj::Common_Reco + larcorealg::GeoAlgo + lardata::DetectorInfoServices_DetectorPropertiesServiceStandard_service + lardataalg::DetectorInfo + ROOT::Minuit + sbnobj::Common_Calibration_dict + larevt::SpaceCharge + nug4::ParticleNavigation + larsim::MCCheater_BackTrackerService_service + larsim::MCCheater_ParticleInventoryService_service + larsim::Simulation +) + +install_headers() +install_source() +install_fhicl() diff --git a/icaruscode/TPC/SPAna/SPAna_module.cc b/icaruscode/TPC/SPAna/SPAna_module.cc new file mode 100644 index 000000000..e6078a968 --- /dev/null +++ b/icaruscode/TPC/SPAna/SPAna_module.cc @@ -0,0 +1,682 @@ +//////////////////////////////////////////////////////////////////////// +// Class: SPAna +// Plugin Type: analyzer (Unknown Unknown) +// File: SPAna_module.cc +// +// Generated at Sun Jun 23 05:48:04 2024 by Gray Putnam using cetskelgen +// from version . +//////////////////////////////////////////////////////////////////////// + +#include "art/Framework/Core/EDAnalyzer.h" +#include "art/Framework/Core/ModuleMacros.h" +#include "art/Framework/Principal/Event.h" +#include "art/Framework/Principal/Handle.h" +#include "art/Framework/Principal/Run.h" +#include "art/Framework/Principal/SubRun.h" +#include "canvas/Utilities/InputTag.h" +#include "fhiclcpp/ParameterSet.h" +#include "messagefacility/MessageLogger/MessageLogger.h" + +#include "TTree.h" +#include "art_root_io/TFileService.h" + +#include "canvas/Persistency/Common/FindMany.h" +#include "canvas/Persistency/Common/FindManyP.h" +#include "canvas/Persistency/Common/FindOne.h" +#include "canvas/Persistency/Common/FindOneP.h" +#include "canvas/Persistency/Common/Ptr.h" +#include "canvas/Persistency/Common/PtrVector.h" + +#include "lardataobj/RecoBase/SpacePoint.h" +#include "lardataobj/RecoBase/Wire.h" +#include "lardataobj/RecoBase/Hit.h" +#include "lardataobj/RecoBase/Cluster.h" +#include "lardataobj/AnalysisBase/T0.h" +#include "nusimdata/SimulationBase/MCParticle.h" +#include "nusimdata/SimulationBase/MCTruth.h" + +#include "sbnobj/Common/Calibration/TrackCaloSkimmerObj.h" + +#include "larevt/SpaceCharge/SpaceCharge.h" +#include "larevt/SpaceChargeServices/SpaceChargeService.h" +#include "lardataalg/DetectorInfo/DetectorPropertiesStandard.h" +#include "lardata/DetectorInfoServices/DetectorPropertiesService.h" +#include "lardata/DetectorInfoServices/DetectorClocksService.h" +#include "larcore/Geometry/Geometry.h" +#include "larcore/CoreUtils/ServiceUtil.h" +#include "larcorealg/Geometry/GeometryCore.h" +#include "larsim/MCCheater/BackTrackerService.h" +#include "larsim/MCCheater/ParticleInventoryService.h" +#include "larcore/CoreUtils/ServiceUtil.h" + +class SPAna; + + +class SPAna : public art::EDAnalyzer { +public: + explicit SPAna(fhicl::ParameterSet const& p); + // The compiler-generated destructor is fine for non-base + // classes without bare pointers or other resource use. + + // Plugins should not be copied or assigned. + SPAna(SPAna const&) = delete; + SPAna(SPAna&&) = delete; + SPAna& operator=(SPAna const&) = delete; + SPAna& operator=(SPAna&&) = delete; + + // Required functions. + void analyze(art::Event const& e) override; + + void Clear(); + void setBranches(); + void setMetaBranches(TTree *); + + sbn::HitInfo MakeHit(const recob::Hit &hit, + unsigned hkey, + const art::Ptr &sp, + const geo::GeometryCore *geo, + const detinfo::DetectorClocksData &dclock, + const cheat::BackTrackerService *bt_serv); + + std::pair, std::vector> ParticleTrueHits( + const simb::MCParticle &particle, + const std::map>> id_to_ide_map, + const detinfo::DetectorPropertiesData &dprop, + const geo::GeometryCore *geo); + + void BuildHitRanges(const std::vector> &hits); + void BuildWireRanges(const std::vector> &wires); + + bool FindHit(unsigned channel, unsigned tick); + bool FindWire(unsigned channel, unsigned tick); + + void respondToOpenInputFile(const art::FileBlock& fb) override { + (void) fb; + _fileno ++; + } + +private: + std::vector fHitProducers; + std::vector fWireProducers; + art::InputTag fG4Producer; + art::InputTag fSimChannelProducer; + + TTree *tRecoHits; + TTree *tRecoWire; + TTree *tTrueHits; + + int _fileno; + int _run; + int _subrun; + int _evt; + int _cryo; + + std::vector _reco_hits; + std::vector _true_hits; + + std::vector _true_hit_dir_x; + std::vector _true_hit_dir_y; + std::vector _true_hit_dir_z; + std::vector _true_hits_has_hit; + std::vector _true_hits_has_wire; + + std::vector _reco_wire_start; + std::vector _reco_wire_end; + std::vector _reco_wire_wire; + std::vector _reco_wire_plane; + std::vector _reco_wire_channel; + std::vector _reco_wire_charge; + std::vector _reco_wire_true_charge; + std::vector _reco_wire_true_energy; + + std::map>> fHitRanges; + std::map>> fWireRanges; +}; + + +SPAna::SPAna(fhicl::ParameterSet const& p) + : EDAnalyzer{p} // , + // More initializers here. +{ + // Call appropriate consumes<>() for any products to be retrieved by this module. + art::ServiceHandle tfs; + tRecoHits = tfs->make("RecoHits", "Reconstructed hits"); + tRecoWire = tfs->make("RecoWire", "Reconstructed wires"); + tTrueHits = tfs->make("TrueHits", "True hits"); + + setBranches(); + + _fileno = 0; + _cryo = p.get("Cryostat"); + + fHitProducers = p.get>("HitProducers"); + fWireProducers = p.get>("WireProducers"); + fG4Producer = p.get("G4Producer"); + fSimChannelProducer = p.get("SimChannelProducer"); +} + +void SPAna::BuildHitRanges(const std::vector> &hits) { + fHitRanges.clear(); + for (const art::Ptr &h: hits) fHitRanges[h->Channel()].push_back({h->StartTick(), h->EndTick()}); +} + +void SPAna::BuildWireRanges(const std::vector> &wires) { + fWireRanges.clear(); + for (const art::Ptr &w: wires) { + unsigned channel = w->Channel(); + for (auto const &range: w->SignalROI().get_ranges()) { + fWireRanges[channel].push_back({range.begin_index(), range.end_index()}); + } + } +} + +bool FindRange(const std::map>> &ranges, unsigned channel, unsigned tick) { + if (!ranges.count(channel)) return false; + + const std::vector> &thisrange = ranges.at(channel); + for (const std::pair &r: thisrange) { + if (tick >= r.first && tick <= r.second) return true; + } + + return false; +} + +bool SPAna::FindHit(unsigned channel, unsigned tick) { + return FindRange(fHitRanges, channel, tick); +} + +bool SPAna::FindWire(unsigned channel, unsigned tick) { + return FindRange(fWireRanges, channel, tick); +} + +void SPAna::setBranches() { + setMetaBranches(tRecoHits); + setMetaBranches(tRecoWire); + setMetaBranches(tTrueHits); + + tRecoHits->Branch("h", &_reco_hits); + + tTrueHits->Branch("t", &_true_hits); + tTrueHits->Branch("t.dir_x", &_true_hit_dir_x); + tTrueHits->Branch("t.dir_y", &_true_hit_dir_y); + tTrueHits->Branch("t.dir_z", &_true_hit_dir_z); + tTrueHits->Branch("t.has_hit", &_true_hits_has_hit); + tTrueHits->Branch("t.has_wire", &_true_hits_has_wire); + + tRecoWire->Branch("w.start", &_reco_wire_start); + tRecoWire->Branch("w.end", &_reco_wire_end); + tRecoWire->Branch("w.wire", &_reco_wire_wire); + tRecoWire->Branch("w.plane", &_reco_wire_plane); + tRecoWire->Branch("w.channel", &_reco_wire_channel); + tRecoWire->Branch("w.charge", &_reco_wire_charge); + tRecoWire->Branch("w.true_charge", &_reco_wire_true_charge); + tRecoWire->Branch("w.true_energy", &_reco_wire_true_energy); + +} + +void SPAna::setMetaBranches(TTree *t) { + t->Branch("fileno", &_fileno, "fileno/i"); + t->Branch("run", &_run, "run/i"); + t->Branch("sub", &_subrun, "sub/i"); + t->Branch("evt", &_evt, "evt/i"); + t->Branch("cryo", &_cryo, "cryo/i"); +} + +void SPAna::Clear() { + _reco_hits.clear(); + _true_hits.clear(); + + _true_hit_dir_x.clear(); + _true_hit_dir_y.clear(); + _true_hit_dir_z.clear(); + _true_hits_has_hit.clear(); + _true_hits_has_wire.clear(); + + _reco_wire_start.clear(); + _reco_wire_end.clear(); + _reco_wire_wire.clear(); + _reco_wire_plane.clear(); + _reco_wire_channel.clear(); + _reco_wire_charge.clear(); + _reco_wire_true_charge.clear(); + _reco_wire_true_energy.clear(); +} + +std::map>> PrepSimChannels(const std::vector> &simchannels, const geo::GeometryCore &geo) { + std::map>> ret; + + for (const art::Ptr sc : simchannels) { + // Lookup the wire of this channel + raw::ChannelID_t channel = sc->Channel(); + std::vector maybewire = geo.ChannelToWire(channel); + geo::WireID thisWire; // Default constructor makes invalid wire + if (maybewire.size()) thisWire = maybewire[0]; + + for (const auto &item : sc->TDCIDEMap()) { + for (const sim::IDE &ide: item.second) { + // indexing initializes empty vector + ret[abs(ide.trackID)].push_back({thisWire, item.first, &ide}); + } + } + } + return ret; +} + +// Turn a particle position to a space-charge induced position +geo::Point_t TrajectoryToWirePosition(const geo::Point_t &loc, const geo::TPCID &tpc) { + auto const* sce = lar::providerFrom(); + art::ServiceHandle geom; + + geo::Point_t ret = loc; + + // Returned X is the drift -- multiply by the drift direction to undo this + int corr = geom->TPC(tpc).DriftDir().X(); + + if (sce && sce->EnableSimSpatialSCE()) { + geo::Vector_t offset = sce->GetPosOffsets(ret); + + ret.SetX(ret.X() + corr * offset.X()); + ret.SetY(ret.Y() + offset.Y()); + ret.SetZ(ret.Z() + offset.Z()); + } + + return ret; +} + +// Turn a space-charge induced position to a trajectory Position +geo::Point_t WireToTrajectoryPosition(const geo::Point_t &loc, const geo::TPCID &tpc) { + auto const* sce = lar::providerFrom(); + + geo::Point_t ret = loc; + + if (sce && sce->EnableSimSpatialSCE()) { + geo::Vector_t offset = sce->GetCalPosOffsets(ret, tpc.TPC); + + ret.SetX(ret.X() + offset.X()); + ret.SetY(ret.Y() + offset.Y()); + ret.SetZ(ret.Z() + offset.Z()); + } + + return ret; + +} + +std::pair, std::vector> SPAna::ParticleTrueHits( + const simb::MCParticle &particle, + const std::map>> id_to_ide_map, + const detinfo::DetectorPropertiesData &dprop, + const geo::GeometryCore *geo) { + + // Organize deposition info into per-wire true "Hits" -- key is the Channel Number + std::map truehits; + + const std::vector> empty; + const std::vector> &particle_ides = id_to_ide_map.count(particle.TrackId()) ? id_to_ide_map.at(particle.TrackId()) : empty; + + for (auto const &ide_tup: particle_ides) { + const geo::WireID &w = std::get<0>(ide_tup); + short tick = std::get<1>(ide_tup); + + // cut on cryostat + if ((int)w.Cryostat != _cryo) continue; + + unsigned c = geo->PlaneWireToChannel(w); + const sim::IDE *ide = std::get<2>(ide_tup); + + // Set stuff + truehits[c].cryo = w.Cryostat; + truehits[c].tpc = w.TPC; + truehits[c].plane = w.Plane; + truehits[c].wire = w.Wire; + truehits[c].channel = c; + + // Average stuff using charge-weighting + float old_elec = truehits[c].nelec; + float new_elec = old_elec + ide->numElectrons; + truehits[c].p.x = (truehits[c].p.x*old_elec + ide->x*ide->numElectrons) / new_elec; + truehits[c].p.y = (truehits[c].p.y*old_elec + ide->y*ide->numElectrons) / new_elec; + truehits[c].p.z = (truehits[c].p.z*old_elec + ide->z*ide->numElectrons) / new_elec; + truehits[c].time = (truehits[c].time*old_elec + tick*ide->numElectrons) / new_elec; + + // Also get the position with space charge un-done + geo::Point_t ide_p(ide->x, ide->y, ide->z); + geo::Point_t ide_p_scecorr = WireToTrajectoryPosition(ide_p, w); + + truehits[c].p_scecorr.x = (truehits[c].p_scecorr.x*old_elec + ide_p_scecorr.x()*ide->numElectrons) / new_elec; + truehits[c].p_scecorr.y = (truehits[c].p_scecorr.y*old_elec + ide_p_scecorr.y()*ide->numElectrons) / new_elec; + truehits[c].p_scecorr.z = (truehits[c].p_scecorr.z*old_elec + ide_p_scecorr.z()*ide->numElectrons) / new_elec; + + // Sum stuff + truehits[c].nelec += ide->numElectrons; + truehits[c].e += ide->energy; + truehits[c].ndep += 1; + } + + // Compute widths + for (auto const &ide_tup: particle_ides) { + const geo::WireID &w = std::get<0>(ide_tup); + + // cut on cryostat + if ((int)w.Cryostat != _cryo) continue; + + unsigned c = geo->PlaneWireToChannel(w); + const sim::IDE *ide = std::get<2>(ide_tup); + + geo::Point_t ide_p(ide->x, ide->y, ide->z); + geo::Point_t ide_p_scecorr = WireToTrajectoryPosition(ide_p, w); + + // Average stuff using charge-weighting + float this_elec = ide->numElectrons; + + truehits[c].p_width.x += (ide_p.x() - truehits[c].p.x) * (ide_p.x() - truehits[c].p.x) * this_elec / truehits[c].nelec; + truehits[c].p_width.y += (ide_p.y() - truehits[c].p.y) * (ide_p.y() - truehits[c].p.y) * this_elec / truehits[c].nelec; + truehits[c].p_width.z += (ide_p.z() - truehits[c].p.z) * (ide_p.z() - truehits[c].p.z) * this_elec / truehits[c].nelec; + + truehits[c].p_scecorr_width.x += (ide_p_scecorr.x() - truehits[c].p_scecorr.x) * (ide_p_scecorr.x() - truehits[c].p_scecorr.x) * this_elec / truehits[c].nelec; + truehits[c].p_scecorr_width.y += (ide_p_scecorr.y() - truehits[c].p_scecorr.y) * (ide_p_scecorr.y() - truehits[c].p_scecorr.y) * this_elec / truehits[c].nelec; + truehits[c].p_scecorr_width.z += (ide_p_scecorr.z() - truehits[c].p_scecorr.z) * (ide_p_scecorr.z() - truehits[c].p_scecorr.z) * this_elec / truehits[c].nelec; + } + + // Convert to vector + std::vector truehits_v; + for (auto const &p: truehits) { + truehits_v.push_back(p.second); + } + + // Save true directions + std::vector truehitdirs; + + // Compute the time of each hit + for (sbn::TrueHit &h: truehits_v) { + // TODO: fix magic number + h.time -= 2900; // == (G4RefTime - TriggerOffsetTPC)/TickPeriod = (1500 - 340)/0.4 + double xdrift = abs(h.p.x - geo->Plane(geo::PlaneID(h.cryo, h.tpc, 0)).GetCenter().X()); + h.tdrift = xdrift / dprop.DriftVelocity(); + } + + // Compute the pitch of each hit and order it in the trajectory + for (sbn::TrueHit &h: truehits_v) { + // Use the SCE-undone hit since this matches to the Trajectory + TVector3 h_p(h.p_scecorr.x, h.p_scecorr.y, h.p_scecorr.z); + + TVector3 direction; + float closest_dist = -1.; + int traj_index = -1; + for (unsigned i_traj = 0; i_traj < particle.NumberTrajectoryPoints(); i_traj++) { + if (closest_dist < 0. || (particle.Position(i_traj).Vect() - h_p).Mag() < closest_dist) { + direction = particle.Momentum(i_traj).Vect().Unit(); + closest_dist = (particle.Position(i_traj).Vect() - h_p).Mag(); + traj_index = i_traj; + } + } + + sbn::Vector3D dir_v; + dir_v.x = direction.x(); + dir_v.y = direction.y(); + dir_v.z = direction.z(); + truehitdirs.push_back(dir_v); + + // If we got a direction, get the pitch + if (closest_dist >= 0. && direction.Mag() > 1e-4) { + geo::PlaneID plane(h.cryo, h.tpc, h.plane); + float angletovert = geo->WireAngleToVertical(geo->View(plane), plane) - 0.5*::util::pi<>(); + float cosgamma = abs(cos(angletovert) * direction.Z() + sin(angletovert) * direction.Y()); + float pitch = geo->WirePitch(plane) / cosgamma; + h.pitch = pitch; + } + else { + h.pitch = -1.; + } + // And the pitch induced by SCE + if (closest_dist >= 0. && direction.Mag() > 1e-4) { + geo::PlaneID plane(h.cryo, h.tpc, h.plane); + float angletovert = geo->WireAngleToVertical(geo->View(plane), plane) - 0.5*::util::pi<>(); + + TVector3 loc_mdx_v = h_p - direction * (geo->WirePitch(geo->View(plane)) / 2.); + TVector3 loc_pdx_v = h_p + direction * (geo->WirePitch(geo->View(plane)) / 2.); + + // Convert types for helper functions + geo::Point_t loc_mdx(loc_mdx_v.X(), loc_mdx_v.Y(), loc_mdx_v.Z()); + geo::Point_t loc_pdx(loc_pdx_v.X(), loc_pdx_v.Y(), loc_pdx_v.Z()); + geo::Point_t h_p_point(h_p.X(), h_p.Y(), h_p.Z()); + + loc_mdx = TrajectoryToWirePosition(loc_mdx, plane); + loc_pdx = TrajectoryToWirePosition(loc_pdx, plane); + + // Direction at wires + geo::Vector_t dir = (loc_pdx - loc_mdx) / (loc_mdx - loc_pdx).r(); + + // Pitch at wires + double cosgamma = std::abs(std::sin(angletovert)*dir.Y() + std::cos(angletovert)*dir.Z()); + double pitch; + if (cosgamma) { + pitch = geo->WirePitch(geo->View(plane))/cosgamma; + } + else { + pitch = 0.; + } + + // Now bring that back to the particle trajectory + geo::Point_t loc_w = TrajectoryToWirePosition(h_p_point, plane); + + geo::Point_t locw_pdx_traj = WireToTrajectoryPosition(loc_w + pitch*dir, plane); + geo::Point_t loc = WireToTrajectoryPosition(loc_w, plane); + + h.pitch_sce = (locw_pdx_traj - loc).R(); + } + else { + h.pitch_sce = -1.; + } + + // And the trajectory location + h.itraj = traj_index; + + // And the residual range of the hit + h.rr = 0.; + if (traj_index >= 0) { + for (int i_traj = traj_index+1; i_traj < (int)particle.NumberTrajectoryPoints(); i_traj++) { + h.rr += (particle.Position(i_traj).Vect() - particle.Position(i_traj-1).Vect()).Mag(); + } + + // Also account for the distance from the Hit point to the matched trajectory point + double hit_distance_along_particle = (h_p - particle.Position(traj_index).Vect()).Dot(particle.Momentum(traj_index).Vect().Unit()); + h.rr += -hit_distance_along_particle; + } + } + + return {truehits_v, truehitdirs}; + +} + +sbn::HitInfo SPAna::MakeHit(const recob::Hit &hit, + unsigned hkey, + const art::Ptr &sp, + const geo::GeometryCore *geo, + const detinfo::DetectorClocksData &dclock, + const cheat::BackTrackerService *bt_serv) { + + // TrackHitInfo to save + sbn::HitInfo h; + + // information from the hit object + h.integral = hit.Integral(); + h.sumadc = hit.SummedADC(); + h.width = hit.RMS(); + h.time = hit.PeakTime(); + h.mult = hit.Multiplicity(); + h.wire = hit.WireID().Wire; + h.plane = hit.WireID().Plane; + h.channel = geo->PlaneWireToChannel(hit.WireID()); + h.tpc = hit.WireID().TPC; + h.end = hit.EndTick(); + h.start = hit.StartTick(); + h.id = (int)hkey; + + // Do back-tracking on each hit + if (bt_serv) { + // The default BackTracking function goes from (peak - width, peak + width). + // + // This time range does not match well hits with a non-Gaussian shape where + // the Gaussian-fit-width does not replicate the width of the pulse. + // + // Instead, we use the Hit (start, end) time range. This is also more relevant + // for (e.g.) the SummedADC charge extraction method. + // + // Don't use this: + // std::vector ides = bt_serv->HitToTrackIDEs(dclock, hit); + // + // Use this: + std::vector ides = bt_serv->ChannelToTrackIDEs(dclock, hit.Channel(), hit.StartTick(), hit.EndTick()); + + h.truth.e = 0.; + h.truth.nelec = 0.; + + for (const sim::TrackIDE &ide: ides) { + h.truth.e += ide.energy; + h.truth.nelec += ide.numElectrons; + } + } + else { + h.truth.e = -1.; + h.truth.nelec = -1.; + } + + + // Save SpacePoint information + if (sp) { + h.sp.x = sp->position().x(); + h.sp.y = sp->position().y(); + h.sp.z = sp->position().z(); + + h.hasSP = true; + } + else { + h.hasSP = false; + } + + return h; +} + +void SPAna::analyze(art::Event const& e) +{ + unsigned evt = e.event(); + unsigned sub = e.subRun(); + unsigned run = e.run(); + _evt = evt; + _subrun = sub; + _run = run; + + std::cout << "[SPAna::analyze] Run: " << run << ", SubRun: " << sub << ", Event: "<< evt << ", Is Data: " << e.isRealData() << std::endl; + + Clear(); + + // Load services + const geo::GeometryCore *geometry = lar::providerFrom(); + auto const clock_data = art::ServiceHandle()->DataFor(e); + auto const dprop = + art::ServiceHandle()->DataFor(e, clock_data); + + art::ServiceHandle bt_serv; + + + // Collect products + + // Hits + std::vector> hitList; + for (const art::InputTag &t: fHitProducers) { + art::ValidHandle> hitHandle = e.getValidHandle>(t); + art::fill_ptr_vector(hitList, hitHandle); + } + // Add spacepoints later? + // art::FindManyP allHitSPs(hitList, e, fPFPproducer); + + // Wires + std::vector> wireList; + for (const art::InputTag &t: fWireProducers) { + art::ValidHandle> wireHandle = e.getValidHandle>(t); + art::fill_ptr_vector(wireList, wireHandle); + } + + // Truth + std::vector> mcparticles; + art::ValidHandle> mcparticle_handle = e.getValidHandle>(fG4Producer); + art::fill_ptr_vector(mcparticles, mcparticle_handle); + + std::vector> simchannels; + art::ValidHandle> simchannel_handle = e.getValidHandle>(fSimChannelProducer); + art::fill_ptr_vector(simchannels, simchannel_handle); + + // Prep matching info + std::map>> id_to_ide_map = PrepSimChannels(simchannels, *geometry); + BuildHitRanges(hitList); + BuildWireRanges(wireList); + + // Save hits + for (unsigned i = 0; i < hitList.size(); i++) { + _reco_hits.push_back(MakeHit(*hitList[i], hitList[i].key(), {} /*allHitSps.at(hitList[i].key())*/, geometry, clock_data, bt_serv.get())); + } + + // Save wires + for (unsigned i = 0; i < wireList.size(); i++) { + art::Ptr wire = wireList[i]; + + unsigned channel = wire->Channel(); + unsigned plane_id = geometry->ChannelToWire(wire->Channel()).at(0).Plane; + unsigned wire_id = geometry->ChannelToWire(wire->Channel()).at(0).Wire; + for (auto const &range: wire->SignalROI().get_ranges()) { + + _reco_wire_start.push_back(range.begin_index()); + _reco_wire_end.push_back(range.end_index()); + _reco_wire_wire.push_back(wire_id); + _reco_wire_plane.push_back(plane_id); + _reco_wire_channel.push_back(channel); + + float charge = 0; + for (float val: range) charge += val; + _reco_wire_charge.push_back(charge); + + float true_charge = -1; + float true_energy = -1; + // Do back-tracking on each wire + if (bt_serv.get()) { + std::vector ides = bt_serv->ChannelToTrackIDEs(clock_data, channel, range.begin_index(), range.end_index()); + + true_charge = 0; + true_energy = 0; + + for (const sim::TrackIDE &ide: ides) { + true_energy += ide.energy; + true_charge += ide.numElectrons; + } + } + _reco_wire_true_charge.push_back(true_charge); + _reco_wire_true_energy.push_back(true_energy); + } + } + + // Save truth info + for (unsigned i = 0; i < mcparticles.size(); i++) { + const simb::MCParticle &p = *mcparticles[i]; + auto ret = ParticleTrueHits(p, id_to_ide_map, dprop, geometry); + + for (const sbn::TrueHit &th: ret.first) _true_hits.push_back(th); + for (const sbn::Vector3D &d: ret.second) { + _true_hit_dir_x.push_back(d.x); + _true_hit_dir_y.push_back(d.y); + _true_hit_dir_z.push_back(d.z); + } + } + + // true to reco matching + for (const sbn::TrueHit &th: _true_hits) { + _true_hits_has_hit.push_back((int)FindHit(th.channel, th.time)); + _true_hits_has_wire.push_back((int)FindWire(th.channel, th.time)); + } + + tRecoHits->Fill(); + tTrueHits->Fill(); + tRecoWire->Fill(); + +} + +DEFINE_ART_MODULE(SPAna) diff --git a/icaruscode/TPC/SPAna/run_spana_icarus.fcl b/icaruscode/TPC/SPAna/run_spana_icarus.fcl new file mode 100644 index 000000000..d56e2fe1b --- /dev/null +++ b/icaruscode/TPC/SPAna/run_spana_icarus.fcl @@ -0,0 +1,67 @@ +#include "services_common_icarus.fcl" +#include "simulationservices_icarus.fcl" + +#include "larproperties.fcl" +#include "backtrackerservice.fcl" +#include "particleinventoryservice.fcl" +#include "detectorproperties_icarus.fcl" +#include "spacecharge.fcl" + +#include "spana_icarus.fcl" + +process_name: SPAna + +services: +{ + @table::icarus_basic_services + @table::icarus_wirecalibration_services + @table::icarus_backtracking_services # from `simulationservices_icarus.fcl` + SpaceChargeService: @local::icarus_spacecharge +} +services.SpaceChargeService: { + EnableCalEfieldSCE: false + EnableCalSpatialSCE: false + EnableCorrSCE: false + EnableSimEfieldSCE: false + EnableSimSpatialSCE: false + InputFilename: "SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root" + RepresentationType: "Voxelized_TH3" + service_provider: "SpaceChargeServiceICARUS" +} + +services.TFileService.fileName: "SPAna.root" + +#Start each new event with an empty event. +source: +{ + module_type: RootInput + maxEvents: -1 # Number of events to create +} + +outputs: +{ +} + + +# Define and configure some modules to do work on each event. +# First modules are defined; they are scheduled later. +# Modules are grouped by type. +physics: +{ + producers:{} + + filters: {} + + # evtfilter: [filter] + + analyzers: + { + spanaE: @local::spana1d_east + spanaW: @local::spana1d_west + } + + runprod: [] + stream1: [spanaE, spanaW] + trigger_paths: [] + end_paths: [ stream1 ] +} diff --git a/icaruscode/TPC/SPAna/spana_icarus.fcl b/icaruscode/TPC/SPAna/spana_icarus.fcl new file mode 100644 index 000000000..833523826 --- /dev/null +++ b/icaruscode/TPC/SPAna/spana_icarus.fcl @@ -0,0 +1,39 @@ +BEGIN_PROLOG + +spana1d_east: { + module_type: SPAna + Cryostat: 0 + HitProducers: ["gaushit1dTPCEE", "gaushit1dTPCEW"] + WireProducers: ["roifinder1d:PHYSCRATEDATATPCEE", "roifinder1d:PHYSCRATEDATATPCEW"] + G4Producer: "largeant" + SimChannelProducer: "daq:simpleSC" +} + +spana1d_west: { + module_type: SPAna + Cryostat: 1 + HitProducers: ["gaushit1dTPCWE", "gaushit1dTPCWW"] + WireProducers: ["roifinder1d:PHYSCRATEDATATPCWE", "roifinder1d:PHYSCRATEDATATPCWW"] + G4Producer: "largeant" + SimChannelProducer: "daq:simpleSC" +} + +spana2d_east: { + module_type: SPAna + Cryostat: 0 + HitProducers: ["gaushit2dTPCEE", "gaushit2dTPCEW"] + WireProducers: ["roifinder2d:PHYSCRATEDATATPCEE", "roifinder2d:PHYSCRATEDATATPCEW"] + G4Producer: "largeant" + SimChannelProducer: "daq:simpleSC" +} + +spana2d_west: { + module_type: SPAna + Cryostat: 1 + HitProducers: ["gaushit2dTPCWE", "gaushit2dTPCWW"] + WireProducers: ["roifinder2d:PHYSCRATEDATATPCWE", "roifinder2d:PHYSCRATEDATATPCWW"] + G4Producer: "largeant" + SimChannelProducer: "daq:simpleSC" +} + +END_PROLOG From ac5ce680dcd7769c4750fe7640ca3b41058c8803 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 4 Nov 2024 15:49:13 -0600 Subject: [PATCH 17/43] Update hit finding parameters to 2D hits (which have smaller amplitude due to the different filter width). --- .../HitFinder/hitfindermodules_icarus.fcl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/icaruscode/TPC/SignalProcessing/HitFinder/hitfindermodules_icarus.fcl b/icaruscode/TPC/SignalProcessing/HitFinder/hitfindermodules_icarus.fcl index 722f6355c..1b7efcba6 100644 --- a/icaruscode/TPC/SignalProcessing/HitFinder/hitfindermodules_icarus.fcl +++ b/icaruscode/TPC/SignalProcessing/HitFinder/hitfindermodules_icarus.fcl @@ -92,14 +92,14 @@ gaus_hitfinder_icarus.LongPulseWidth: # These are default settings for production running gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0: @local::candhitfinder_standard # Sets hit finding for plane 0 gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0.Plane: 0 -gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 9. +gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1: @local::candhitfinder_standard # Sets hit finding for plane 1 gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1.Plane: 1 -gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 9.5 +gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 5 gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2: @local::candhitfinder_standard # Sets hit finding for plane 2 gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2.Plane: 2 -gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 9. - +gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 5. +gaus_hitfinder_icarus.HitFilterAlg.MinPulseHeight: [3., 3., 3.] # Define icarus version of test version gausshit finder gauss_hitfinder_icarus: @local::gaus_hitfinder @@ -117,13 +117,13 @@ gauss_hitfinder_icarus.LongMaxHits: gauss_hitfinder_icarus.LongPulseWidth: [10, 10, 10] gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0: @local::candhitfinder_standard gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0.Plane: 0 -gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 9. +gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1: @local::candhitfinder_standard gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1.Plane: 1 -gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 9.5 +gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2: @local::candhitfinder_standard gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2.Plane: 2 -gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 9. +gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. icarus_hitconverter: From b4a8a60dafd14010f140af25d90e59ea8f30c772 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 4 Nov 2024 16:21:46 -0600 Subject: [PATCH 18/43] Remove junk files accidentally included in merge. --- .../wirecell_configuration_SPE.txt | 5062 ----------------- .../wirecell_configuration_SPW.txt | 5060 ---------------- .../wirecell_configuration_truth.txt | 972 ---- 3 files changed, 11094 deletions(-) delete mode 100644 icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPE.txt delete mode 100644 icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPW.txt delete mode 100644 icaruscode/TPC/ICARUSWireCell/wirecell_configuration_truth.txt diff --git a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPE.txt b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPE.txt deleted file mode 100644 index 95c60f2c7..000000000 --- a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPE.txt +++ /dev/null @@ -1,5062 +0,0 @@ -# Produced from 'fhicl-dump' using: -# Input : stage0E_run2_wc_icarus_mc.fcl -# Policy : cet::filepath_maker -# Path : "FHICL_FILE_PATH" - -outputs: { - rootOutput: { - SelectEvents: [ - "path" - ] - checkFileName: false - compressionLevel: 1 - dataTier: "reconstructed" - fileName: "%ifb_%tc-%p.root" - fileProperties: { - maxInputFiles: 1 - } - module_type: "RootOutput" - saveMemoryObjectThreshold: 0 - } -} -physics: { - analyzers: { - purityinfoana0: { - PrintInfo: false - PurityInfoLabel: "purityana0" - SelectEvents: [ - "reco" - ] - module_type: "TPCPurityInfoAna" - } - purityinfoana1: { - PrintInfo: false - PurityInfoLabel: "purityana1" - SelectEvents: [ - "reco" - ] - module_type: "TPCPurityInfoAna" - } - spanaE: { - Cryostat: 0 - G4Producer: "largeant" - HitProducers: [ - "gaushit2dTPCEE", - "gaushit2dTPCEW" - ] - SimChannelProducer: "daq:simpleSC" - WireProducers: [ - "roifinder2d:PHYSCRATEDATATPCEE", - "roifinder2d:PHYSCRATEDATATPCEW" - ] - module_type: "SPAna" - } - spanaW: { - Cryostat: 1 - G4Producer: "largeant" - HitProducers: [ - "gaushit2dTPCWE", - "gaushit2dTPCWW" - ] - SimChannelProducer: "daq:simpleSC" - WireProducers: [ - "roifinder2d:PHYSCRATEDATATPCWE", - "roifinder2d:PHYSCRATEDATATPCWW" - ] - module_type: "SPAna" - } - } - end_paths: [ - "outana", - "streamROOT" - ] - filters: { - crtpmtmatchingfilter: { - BNBBeamGateMax: 2300 - BNBBeamGateMin: -550 - BNBinBeamMax: 1300 - BNBinBeamMin: -300 - CrtPmtModuleLabel: "crtpmt" - FilterLevel: "loose" - GlobalT0Offset: 1.599957e6 - MatchBottomCRT: false - NuMIBeamGateMax: 10000 - NuMIBeamGateMin: -550 - NuMIinBeamMax: 9100 - NuMIinBeamMin: -300 - OutputTree: true - PMTADCThresh: 400 - SpillOnly: false - TimeOfFlightInterval: 100 - TriggerConfiguration: "triggerconfig" - TriggerLabel: "daqTrigger" - module_type: "FilterCRTPMTMatching" - nOpHitToTrigger: 5 - } - filterdataintegrity: { - module_type: "FilterDataIntegrity" - } - flashfilterBNB: { - OpFlashProducerList: [ - "opflashCryoE", - "opflashCryoW" - ] - WindowEndTime: 1.8 - WindowStartTime: -2e-1 - module_type: "FilterOpFlash" - } - flashfilterNuMI: { - OpFlashProducerList: [ - "opflashCryoE", - "opflashCryoW" - ] - WindowEndTime: 9.8 - WindowStartTime: -2e-1 - module_type: "FilterOpFlash" - } - triggerfilterBNB: { - TriggerDataLabel: "daqTrigger" - TriggerType: "BNB" - module_type: "TriggerTypeFilter" - } - triggerfilterNuMI: { - TriggerDataLabel: "daqTrigger" - TriggerType: "NuMI" - module_type: "TriggerTypeFilter" - } - triggerfilterOffbeamBNB: { - TriggerDataLabel: "daqTrigger" - TriggerType: "OffbeamBNB" - module_type: "TriggerTypeFilter" - } - triggerfilterOffbeamNuMI: { - TriggerDataLabel: "daqTrigger" - TriggerType: "OffbeamNuMI" - module_type: "TriggerTypeFilter" - } - triggerfilterUnknown: { - TriggerDataLabel: "daqTrigger" - TriggerType: "Unknown" - module_type: "TriggerTypeFilter" - } - } - outana: [] - path: [ - "pmtfixedthr", - "pmtlvdsgates", - "pmttriggerwindows", - "triggersimgates", - "emuTrigger", - "pmtbaselines", - "ophit", - "mcophit", - "opflashCryoE", - "opflashCryoW", - "MCDecodeTPCROI", - "decon1droi", - "roifinder1d", - "decon2droiEE", - "decon2droiEW", - "crthit", - "crttrack", - "crtpmt" - ] - producers: { - MCDecodeTPCROI: { - CoherentGrouping: 64 - DecoderTool: { - DenoiserType: "default" - FFTCutoffVals: [ - [ - 8, - 800 - ], - [ - 8, - 800 - ], - [ - 4, - 800 - ] - ] - FFTSigmaVals: [ - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ] - ] - FilterModeVec: [ - "e", - "g", - "d" - ] - FilterWindow: 10 - FragmentIDMap: [ - [ - 0, - 5132 - ], - [ - 1, - 5134 - ], - [ - 2, - 5136 - ], - [ - 6, - 5140 - ], - [ - 8, - 5390 - ], - [ - 9, - 5392 - ] - ] - LowFreqCorrection: true - NSigmaForTrucation: 3.5 - StructuringElement: 16 - Threshold: [ - 1, - 1, - 1 - ] - UseFFTFilter: false - fragment_id_offset: 0 - tool_type: "TPCNoiseFilter1D" - } - DiagnosticOutput: false - FragmentsLabelVec: [ - "daq:TPCWW", - "daq:TPCWE", - "daq:TPCEW", - "daq:TPCEE" - ] - OutInstanceLabelVec: [ - "PHYSCRATEDATATPCWW", - "PHYSCRATEDATATPCWE", - "PHYSCRATEDATATPCEW", - "PHYSCRATEDATATPCEE" - ] - OutputCoherentPath: "Cor" - OutputCorrection: false - OutputRawWavePath: "RAW" - OutputRawWaveform: false - module_type: "MCDecoderICARUSTPCwROI" - } - crthit: { - CrtModuleLabel: "crtdaq" - HitAlg: { - CSVFile: "data.csv" - CoinWindow: 150 - CrtWindow: 3e6 - Data: false - GlobalT0Offset: 1.6e6 - PEThresh: 7.5 - PropDelay: 6.2e-2 - QPed: 60 - QSlope: 70 - SiPMtoFEBdelay: 0 - UseReadoutWindow: false - Verbose: false - outCSVFile: false - topGain: 110 - topPed: 160 - } - TriggerLabel: "daqTrigger" - module_type: "icaruscode/CRT/CRTSimHitProducer" - } - crtpmt: { - BNBBeamGateMax: 2300 - BNBBeamGateMin: -550 - BNBinBeamMax: 1300 - BNBinBeamMin: -300 - CrtHitModuleLabel: "crthit" - GlobalT0Offset: 1.599957e6 - MatchBottomCRT: false - NuMIBeamGateMax: 10000 - NuMIBeamGateMin: -550 - NuMIinBeamMax: 9100 - NuMIinBeamMin: -300 - OpFlashModuleLabels: [ - "opflashCryoE", - "opflashCryoW" - ] - PMTADCThresh: 400 - TimeOfFlightInterval: 100 - TriggerLabel: "daqTrigger" - module_type: "icaruscode/CRT/CRTPMTMatchingProducer" - nOpHitToTrigger: 5 - } - crttrack: { - DataLabelHits: "crthit" - StoreTrack: 1 - TrackAlg: { - AverageHitDistance: 30 - DistanceLimit: 25 - TimeLimit: 1e-1 - } - TrackMethodType: 4 - UseTopPlane: false - module_type: "icaruscode/CRT/CRTTrackProducer" - } - daqCRT: { - FEB_delay_side: [ - [ - 31, - 240 - ], - [ - 32, - 260 - ], - [ - 33, - 280 - ], - [ - 34, - 330 - ], - [ - 35, - 350 - ], - [ - 36, - 370 - ], - [ - 25, - 240 - ], - [ - 26, - 260 - ], - [ - 27, - 280 - ], - [ - 28, - 330 - ], - [ - 29, - 350 - ], - [ - 30, - 370 - ], - [ - 43, - 230 - ], - [ - 44, - 250 - ], - [ - 45, - 270 - ], - [ - 46, - 316 - ], - [ - 47, - 336 - ], - [ - 48, - 356 - ], - [ - 37, - 230 - ], - [ - 38, - 250 - ], - [ - 39, - 270 - ], - [ - 40, - 316 - ], - [ - 41, - 336 - ], - [ - 42, - 356 - ], - [ - 55, - 245 - ], - [ - 56, - 265 - ], - [ - 57, - 285 - ], - [ - 58, - 331 - ], - [ - 59, - 351 - ], - [ - 60, - 371 - ], - [ - 49, - 245 - ], - [ - 50, - 265 - ], - [ - 51, - 285 - ], - [ - 52, - 331 - ], - [ - 53, - 351 - ], - [ - 54, - 371 - ], - [ - 3, - 364 - ], - [ - 1, - 384 - ], - [ - 6, - 404 - ], - [ - 7, - 450 - ], - [ - 8, - 433 - ], - [ - 9, - 453 - ], - [ - 5, - 470 - ], - [ - 4, - 490 - ], - [ - 92, - 237 - ], - [ - 93, - 257 - ], - [ - 94, - 303 - ], - [ - 95, - 323 - ], - [ - 96, - 343 - ], - [ - 97, - 390 - ], - [ - 85, - 237 - ], - [ - 86, - 257 - ], - [ - 87, - 277 - ], - [ - 88, - 297 - ], - [ - 89, - 317 - ], - [ - 90, - 337 - ], - [ - 91, - 357 - ], - [ - 17, - 359 - ], - [ - 19, - 379 - ], - [ - 21, - 399 - ], - [ - 22, - 448 - ], - [ - 23, - 468 - ], - [ - 24, - 488 - ], - [ - 10, - 359 - ], - [ - 11, - 379 - ], - [ - 13, - 399 - ], - [ - 14, - 448 - ], - [ - 15, - 468 - ], - [ - 16, - 488 - ], - [ - 67, - 348 - ], - [ - 68, - 368 - ], - [ - 69, - 388 - ], - [ - 70, - 434 - ], - [ - 71, - 454 - ], - [ - 72, - 474 - ], - [ - 61, - 348 - ], - [ - 62, - 368 - ], - [ - 63, - 388 - ], - [ - 64, - 434 - ], - [ - 65, - 454 - ], - [ - 66, - 474 - ], - [ - 84, - 364 - ], - [ - 83, - 384 - ], - [ - 82, - 404 - ], - [ - 81, - 450 - ], - [ - 80, - 470 - ], - [ - 79, - 490 - ], - [ - 78, - 364 - ], - [ - 77, - 384 - ], - [ - 76, - 404 - ], - [ - 75, - 450 - ], - [ - 74, - 470 - ], - [ - 73, - 490 - ] - ] - FEB_delay_top: [ - [ - 211, - 414 - ], - [ - 212, - 398 - ], - [ - 81, - 283 - ], - [ - 119, - 298 - ], - [ - 87, - 313 - ], - [ - 92, - 329 - ], - [ - 180, - 344 - ], - [ - 97, - 359 - ], - [ - 174, - 374 - ], - [ - 189, - 420 - ], - [ - 190, - 436 - ], - [ - 80, - 451 - ], - [ - 162, - 466 - ], - [ - 64, - 482 - ], - [ - 139, - 451 - ], - [ - 185, - 466 - ], - [ - 165, - 436 - ], - [ - 148, - 451 - ], - [ - 147, - 406 - ], - [ - 105, - 421 - ], - [ - 113, - 528 - ], - [ - 172, - 298 - ], - [ - 114, - 313 - ], - [ - 100, - 328 - ], - [ - 150, - 344 - ], - [ - 238, - 390 - ], - [ - 234, - 405 - ], - [ - 138, - 390 - ], - [ - 170, - 405 - ], - [ - 101, - 420 - ], - [ - 142, - 435 - ], - [ - 6, - 481 - ], - [ - 232, - 421 - ], - [ - 237, - 467 - ], - [ - 239, - 391 - ], - [ - 125, - 298 - ], - [ - 116, - 314 - ], - [ - 104, - 329 - ], - [ - 91, - 344 - ], - [ - 88, - 360 - ], - [ - 176, - 359 - ], - [ - 67, - 374 - ], - [ - 61, - 512 - ], - [ - 177, - 497 - ], - [ - 95, - 405 - ], - [ - 132, - 390 - ], - [ - 120, - 375 - ], - [ - 130, - 513 - ], - [ - 94, - 497 - ], - [ - 181, - 284 - ], - [ - 124, - 299 - ], - [ - 152, - 314 - ], - [ - 90, - 482 - ], - [ - 183, - 498 - ], - [ - 241, - 513 - ], - [ - 231, - 437 - ], - [ - 117, - 452 - ], - [ - 126, - 467 - ], - [ - 98, - 329 - ], - [ - 173, - 345 - ], - [ - 169, - 360 - ], - [ - 144, - 375 - ], - [ - 102, - 482 - ], - [ - 233, - 283 - ], - [ - 164, - 299 - ], - [ - 161, - 314 - ], - [ - 141, - 482 - ], - [ - 160, - 498 - ], - [ - 137, - 513 - ], - [ - 182, - 436 - ], - [ - 107, - 452 - ], - [ - 252, - 467 - ], - [ - 203, - 329 - ], - [ - 122, - 345 - ], - [ - 2, - 360 - ], - [ - 112, - 375 - ], - [ - 202, - 482 - ], - [ - 66, - 298 - ], - [ - 247, - 314 - ], - [ - 198, - 329 - ], - [ - 243, - 344 - ], - [ - 72, - 360 - ], - [ - 63, - 404 - ], - [ - 82, - 572 - ], - [ - 244, - 557 - ], - [ - 204, - 541 - ], - [ - 248, - 405 - ], - [ - 249, - 390 - ], - [ - 250, - 375 - ], - [ - 246, - 513 - ], - [ - 135, - 497 - ], - [ - 253, - 342 - ], - [ - 245, - 358 - ], - [ - 65, - 373 - ], - [ - 57, - 388 - ], - [ - 187, - 391 - ], - [ - 251, - 419 - ], - [ - 70, - 434 - ], - [ - 155, - 449 - ], - [ - 154, - 465 - ], - [ - 85, - 480 - ], - [ - 115, - 526 - ], - [ - 60, - 421 - ], - [ - 59, - 467 - ], - [ - 62, - 391 - ], - [ - 186, - 284 - ], - [ - 83, - 299 - ], - [ - 254, - 314 - ], - [ - 166, - 330 - ], - [ - 178, - 345 - ], - [ - 136, - 360 - ], - [ - 184, - 375 - ], - [ - 240, - 406 - ], - [ - 242, - 421 - ], - [ - 188, - 437 - ], - [ - 58, - 452 - ], - [ - 143, - 467 - ], - [ - 235, - 483 - ], - [ - 134, - 495 - ], - [ - 129, - 511 - ], - [ - 145, - 436 - ], - [ - 110, - 451 - ], - [ - 133, - 406 - ], - [ - 168, - 421 - ], - [ - 179, - 528 - ] - ] - module_type: "DecoderICARUSCRT" - } - daqPMT: { - BoardSetup: [ - { - Name: "icaruspmtwwtop01" - SpecialChannels: [ - { - Channel: 24689 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwtop02" - SpecialChannels: [ - { - Channel: 12402 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwtop03" - SpecialChannels: [ - { - Channel: 8307 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwbot01" - SpecialChannels: [ - { - Channel: 24673 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwbot02" - SpecialChannels: [ - { - Channel: 12386 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwbot03" - SpecialChannels: [ - { - Channel: 8291 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwetop01" - SpecialChannels: [ - { - Channel: 24657 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwetop02" - SpecialChannels: [ - { - Channel: 12370 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwetop03" - SpecialChannels: [ - { - Channel: 8275 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwebot01" - SpecialChannels: [ - { - Channel: 24641 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwebot02" - SpecialChannels: [ - { - Channel: 12354 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwebot03" - SpecialChannels: [ - { - Channel: 8259 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewtop01" - SpecialChannels: [ - { - Channel: 24625 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewtop02" - SpecialChannels: [ - { - Channel: 12338 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewtop03" - SpecialChannels: [ - { - Channel: 8243 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewbot01" - SpecialChannels: [ - { - Channel: 24609 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewbot02" - SpecialChannels: [ - { - Channel: 12322 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewbot03" - SpecialChannels: [ - { - Channel: 8227 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteetop01" - SpecialChannels: [ - { - Channel: 24593 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteetop02" - SpecialChannels: [ - { - Channel: 12306 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteetop03" - SpecialChannels: [ - { - Channel: 8211 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteebot01" - SpecialChannels: [ - { - Channel: 24577 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteebot02" - SpecialChannels: [ - { - Channel: 12290 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteebot03" - SpecialChannels: [ - { - Channel: 8195 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - } - ] - CorrectionInstance: "globtrg" - FragmentsLabels: [ - "daq:CAENV1730", - "daq:ContainerCAENV1730" - ] - PMTconfigTag: "pmtconfig" - TriggerTag: "daqTrigger" - module_type: "DaqDecoderICARUSPMT" - } - daqPMTonbeam: { - SelectInterval: { - Duration: "26 us" - Start: "-7 us" - } - TimeReference: "BeamGate" - WaveformBaselineAssns: "pmtbaselines" - Waveforms: "daqPMT" - module_type: "CopyBeamTimePMTwaveforms" - } - daqTPC: { - DecoderTool: { - CoherentGrouping: 32 - FFTCutoffVals: [ - [ - 8, - 800 - ], - [ - 8, - 800 - ], - [ - 3, - 800 - ] - ] - FFTSigmaVals: [ - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ], - [ - 2, - 20 - ] - ] - FilterModeVec: [ - "e", - "g", - "d" - ] - FilterWindow: 10 - FragmentIDMap: [ - [ - 0, - 5132 - ], - [ - 1, - 5134 - ], - [ - 2, - 5136 - ], - [ - 6, - 5140 - ], - [ - 8, - 5390 - ], - [ - 9, - 5392 - ] - ] - NSigmaForTrucation: 3.5 - StructuringElement: 16 - Threshold: [ - 2.75, - 2.75, - 2.75 - ] - UseFFTFilter: false - fragment_id_offset: 0 - tool_type: "TPCDecoderFilter1D" - } - DiagnosticOutput: false - FragmentsLabel: "daq:PHYSCRATEDATA" - FragmentsLabelVec: [ - "daq:PHYSCRATEDATATPCWW", - "daq:PHYSCRATEDATATPCWE", - "daq:PHYSCRATEDATATPCEW", - "daq:PHYSCRATEDATATPCEE" - ] - OutputCoherentPath: "Cor" - OutputCorrection: false - OutputRawWavePath: "RAW" - OutputRawWaveform: false - module_type: "DaqDecoderICARUSTPC" - } - daqTPCROI: { - CoherentGrouping: 64 - DecoderTool: { - DenoiserType: "default" - FFTCutoffVals: [ - [ - 8, - 800 - ], - [ - 8, - 800 - ], - [ - 4, - 800 - ] - ] - FFTSigmaVals: [ - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ] - ] - FilterModeVec: [ - "e", - "g", - "d" - ] - FilterWindow: 10 - FragmentIDMap: [ - [ - 0, - 5132 - ], - [ - 1, - 5134 - ], - [ - 2, - 5136 - ], - [ - 6, - 5140 - ], - [ - 8, - 5390 - ], - [ - 9, - 5392 - ] - ] - LowFreqCorrection: true - NSigmaForTrucation: 3.5 - StructuringElement: 16 - Threshold: [ - 1, - 1, - 1 - ] - UseFFTFilter: false - fragment_id_offset: 0 - tool_type: "TPCNoiseFilter1D" - } - DiagnosticOutput: false - FragmentsLabelVec: [ - "daq:PHYSCRATEDATATPCWW", - "daq:PHYSCRATEDATATPCWE", - "daq:PHYSCRATEDATATPCEW", - "daq:PHYSCRATEDATATPCEE" - ] - OutputCoherentPath: "Cor" - OutputCorrection: false - OutputRawWavePath: "RAW" - OutputRawWaveform: false - module_type: "DaqDecoderICARUSTPCwROI" - } - daqTrigger: { - DecoderTool: { - Decoders: [ - { - FragmentsLabel: "daq:ICARUSTriggerUDP" - Generator: "ICARUSTriggerUDP" - ToolConfig: { - TrigConfigLabel: "triggerconfig" - tool_type: "TriggerDecoder" - } - }, - { - FragmentsLabel: "daq:ICARUSTriggerV2" - Generator: "ICARUSTriggerV2" - ToolConfig: { - TrigConfigLabel: "triggerconfig" - tool_type: "TriggerDecoderV2" - } - }, - { - FragmentsLabel: "daq:ICARUSTriggerV3" - Generator: "ICARUSTriggerV3" - ToolConfig: { - TrigConfigLabel: "triggerconfig" - tool_type: "TriggerDecoderV3" - } - } - ] - TrigConfigLabel: "triggerconfig" - tool_type: "TriggerDecoderDispatcher" - } - FragmentsLabel: "" - module_type: "DaqDecoderICARUSTrigger" - } - decon1droi: { - Baseline: { - MaxROILength: 100 - tool_type: "icaruscode/TPC/SignalProcessing/RecoWire/DeconTools/BaselineMostProbAve" - } - Deconvolution: { - Baseline: { - MaxROILength: 100 - tool_type: "icaruscode/TPC/SignalProcessing/RecoWire/DeconTools/BaselineMostProbAve" - } - DoBaselineSub: true - DodQdxCalib: false - MinROIAverageTickThreshold: -5e-1 - dQdxCalibFileName: "dQdxCalibrationPlanev1.txt" - tool_type: "FullWireDeconvolution" - } - MinAllowedChannelStatus: 3 - NoiseSource: 3 - OutputHistograms: false - ROIFinderToolVec: { - ROIFinderToolPlane0: { - Plane: 0 - roiLeadTrailPad: [ - 2000, - 2000 - ] - tool_type: "ROIFinderNOP" - } - ROIFinderToolPlane1: { - Plane: 1 - roiLeadTrailPad: [ - 2000, - 2000 - ] - tool_type: "ROIFinderNOP" - } - ROIFinderToolPlane2: { - Plane: 2 - roiLeadTrailPad: [ - 2000, - 2000 - ] - tool_type: "ROIFinderNOP" - } - } - RawDigitLabelVec: [ - "MCDecodeTPCROI:PHYSCRATEDATATPCWW", - "MCDecodeTPCROI:PHYSCRATEDATATPCWE", - "MCDecodeTPCROI:PHYSCRATEDATATPCEW", - "MCDecodeTPCROI:PHYSCRATEDATATPCEE" - ] - SaveWireWF: 0 - TruncRMSMinFraction: 6e-1 - TruncRMSThreshold: 6 - module_type: "Decon1DROI" - } - decon2droi: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc0" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver0" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "daqTPC" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 0 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft" - ] - tool_type: "WCLS" - } - } - decon2droiEE: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc0" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver0" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEE" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 0 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - Gaus_wide_sigma: 1.2e-1 - Wiener_tight_U_power: 3.76194 - Wiener_tight_U_sigma: 1.48788e-1 - Wiener_tight_V_power: 4.36125 - Wiener_tight_V_sigma: 1.596568e-1 - Wiener_tight_W_power: 3.35324 - Wiener_tight_W_sigma: 1.3623e-1 - Wire_col_sigma: 3 - Wire_ind_sigma: 7.5e-1 - gain0: 1.19918701e1 - gain1: 1.21420344e1 - gain2: 1.30261362e1 - shaping0: 1.3 - shaping1: 1.45 - shaping2: 1.3 - } - tool_type: "WCLS" - } - } - decon2droiEW: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc1" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver1" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEW" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 1 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - Gaus_wide_sigma: 1.2e-1 - Wiener_tight_U_power: 3.76194 - Wiener_tight_U_sigma: 1.48788e-1 - Wiener_tight_V_power: 4.36125 - Wiener_tight_V_sigma: 1.596568e-1 - Wiener_tight_W_power: 3.35324 - Wiener_tight_W_sigma: 1.3623e-1 - Wire_col_sigma: 3 - Wire_ind_sigma: 7.5e-1 - gain0: 1.19918701e1 - gain1: 1.21420344e1 - gain2: 1.30261362e1 - shaping0: 1.3 - shaping1: 1.45 - shaping2: 1.3 - } - tool_type: "WCLS" - } - } - decon2droiWE: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc2" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver2" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWE" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 2 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - Gaus_wide_sigma: 1.2e-1 - Wiener_tight_U_power: 3.76194 - Wiener_tight_U_sigma: 1.48788e-1 - Wiener_tight_V_power: 4.36125 - Wiener_tight_V_sigma: 1.596568e-1 - Wiener_tight_W_power: 3.35324 - Wiener_tight_W_sigma: 1.3623e-1 - Wire_col_sigma: 3 - Wire_ind_sigma: 7.5e-1 - gain0: 1.19918701e1 - gain1: 1.21420344e1 - gain2: 1.30261362e1 - shaping0: 1.3 - shaping1: 1.45 - shaping2: 1.3 - } - tool_type: "WCLS" - } - } - decon2droiWW: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc3" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver3" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWW" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 3 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - Gaus_wide_sigma: 1.2e-1 - Wiener_tight_U_power: 3.76194 - Wiener_tight_U_sigma: 1.48788e-1 - Wiener_tight_V_power: 4.36125 - Wiener_tight_V_sigma: 1.596568e-1 - Wiener_tight_W_power: 3.35324 - Wiener_tight_W_sigma: 1.3623e-1 - Wire_col_sigma: 3 - Wire_ind_sigma: 7.5e-1 - gain0: 1.19918701e1 - gain1: 1.21420344e1 - gain2: 1.30261362e1 - shaping0: 1.3 - shaping1: 1.45 - shaping2: 1.3 - } - tool_type: "WCLS" - } - } - emuTrigger: { - BeamGates: "triggersimgates" - EmitEmpty: true - ExtraInfo: true - Pattern: { - inMainWindow: 3 - sumOfOppositeWindows: 5 - } - Thresholds: [ - 400 - ] - TriggerGatesTag: "pmttriggerwindows" - TriggerTimeResolution: "8 ns" - module_type: "TriggerSimulationOnGates" - } - gaushit1dTPCEE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit1dTPCEW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit1dTPCWE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCWE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit1dTPCWW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCWW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit2dTPCEE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCEE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit2dTPCEW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCEW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit2dTPCWE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCWE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit2dTPCWW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder2d:PHYSCRATEDATATPCWW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gausshitTPCEE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - gaushit2dTPCWW: { - HitFinderToolVec: { - CandidateHitsPlane0: { - RoiThreshold: 9 - } - } - } - module_type: "GaussHitFinderICARUS" - } - gausshitTPCEW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - gaushit2dTPCWW: { - HitFinderToolVec: { - CandidateHitsPlane0: { - RoiThreshold: 9 - } - } - } - module_type: "GaussHitFinderICARUS" - } - gausshitTPCWE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - gaushit2dTPCWW: { - HitFinderToolVec: { - CandidateHitsPlane0: { - RoiThreshold: 9 - } - } - } - module_type: "GaussHitFinderICARUS" - } - gausshitTPCWW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - gaushit2dTPCWW: { - HitFinderToolVec: { - CandidateHitsPlane0: { - RoiThreshold: 9 - } - } - } - module_type: "GaussHitFinderICARUS" - } - mcophit: { - MergePeriod: 1e-2 - SPEAmplitude: 2.64258e1 - SPEArea: 2.56658e2 - SimPhotonsProducer: "largeant" - module_type: "ICARUSMCOpHit" - } - opdetonbeam: { - SelectInterval: { - Duration: "26 us" - Start: "-7 us" - } - TimeReference: "BeamGate" - WaveformBaselineAssns: "pmtbaselines" - Waveforms: "opdaq" - module_type: "CopyBeamTimePMTwaveforms" - } - opflashCryoE: { - AlgoConfig: { - DebugMode: false - HitVetoRangeEnd: [] - HitVetoRangeStart: [] - IntegralTime: 1 - MinMultCoinc: 5 - MinPECoinc: 100 - OpChannelRange: [ - 0, - 179 - ] - PEThreshold: 100 - PEThresholdHit: 1 - PreSample: 2e-2 - TimeResolution: 1e-2 - VetoSize: 1 - } - FlashFinderAlgo: "SimpleFlashAlgo" - OpHitProducer: "ophit" - PECalib: { - SPEAreaGain: 2.56658e2 - } - module_type: "ICARUSFlashFinder" - } - opflashCryoW: { - AlgoConfig: { - DebugMode: false - HitVetoRangeEnd: [] - HitVetoRangeStart: [] - IntegralTime: 1 - MinMultCoinc: 5 - MinPECoinc: 100 - OpChannelRange: [ - 180, - 359 - ] - PEThreshold: 100 - PEThresholdHit: 1 - PreSample: 2e-2 - TimeResolution: 1e-2 - VetoSize: 1 - } - FlashFinderAlgo: "SimpleFlashAlgo" - OpHitProducer: "ophit" - PECalib: { - SPEAreaGain: 2.56658e2 - } - module_type: "ICARUSFlashFinder" - } - ophit: { - AreaToPE: true - ChannelMasks: [] - GenModule: "generator" - HitAlgoPset: { - ADCThreshold: 10 - EndADCThreshold: 2 - EndNSigmaThreshold: 1 - MinPulseWidth: 5 - NSigmaThreshold: 3 - Name: "SlidingWindow" - NumPostSample: 10 - NumPreSample: 5 - PositivePolarity: false - TailADCThreshold: 6 - TailNSigmaThreshold: 2 - Verbosity: false - } - HitThreshold: 2e-1 - InputLabels: [] - InputModule: "opdaq" - PedAlgoPset: { - DiffADCCounts: 2 - DiffBetweenGapsThreshold: 2 - MaxSigma: 5 - NPrePostSamples: 5 - Name: "RollingMean" - PedRangeMax: 16000 - PedRangeMin: 14000 - SampleSize: 20 - Threshold: 1.5 - } - RiseTimeCalculator: { - PeakRatio: 1.5e-1 - tool_type: "RiseTimeThreshold" - } - SPEArea: 2.56658e2 - SPEShift: 0 - UseStartTime: false - module_type: "OpHitFinder" - reco_man: { - module_type: "PulseRecoManager" - } - } - ophitfull: { - CorrectCosmics: true - CorrectLaser: true - InputLabels: [ - "ophitfulluncorrected" - ] - Verbose: false - module_type: "OpHitTimingCorrection" - } - ophitfulluncorrected: { - AreaToPE: true - ChannelMasks: [] - GenModule: "generator" - HitAlgoPset: { - ADCThreshold: 10 - EndADCThreshold: 2 - EndNSigmaThreshold: 1 - MinPulseWidth: 5 - NSigmaThreshold: 3 - Name: "SlidingWindow" - NumPostSample: 10 - NumPreSample: 5 - PositivePolarity: false - TailADCThreshold: 6 - TailNSigmaThreshold: 2 - Verbosity: false - } - HitThreshold: 2e-1 - InputLabels: [] - InputModule: "daqPMT" - OutputFile: "ophit_debug.root" - PedAlgoPset: { - DiffADCCounts: 2 - DiffBetweenGapsThreshold: 2 - MaxSigma: 5 - NPrePostSamples: 5 - Name: "RollingMean" - PedRangeMax: 16000 - PedRangeMin: 14000 - SampleSize: 20 - Threshold: 1.5 - } - RiseTimeCalculator: { - PeakRatio: 1.5e-1 - tool_type: "RiseTimeThreshold" - } - SPEArea: 2.56658e2 - SPEShift: 0 - UseStartTime: false - module_type: "FullOpHitFinder" - reco_man: { - module_type: "PulseRecoManager" - } - } - ophituncorrected: { - AreaToPE: true - ChannelMasks: [] - GenModule: "generator" - HitAlgoPset: { - ADCThreshold: 10 - EndADCThreshold: 2 - EndNSigmaThreshold: 1 - MinPulseWidth: 5 - NSigmaThreshold: 3 - Name: "SlidingWindow" - NumPostSample: 10 - NumPreSample: 5 - PositivePolarity: false - TailADCThreshold: 6 - TailNSigmaThreshold: 2 - Verbosity: false - } - HitThreshold: 2e-1 - InputLabels: [] - InputModule: "daqPMT" - PedAlgoPset: { - DiffADCCounts: 2 - DiffBetweenGapsThreshold: 2 - MaxSigma: 5 - NPrePostSamples: 5 - Name: "RollingMean" - PedRangeMax: 16000 - PedRangeMin: 14000 - SampleSize: 20 - Threshold: 1.5 - } - RiseTimeCalculator: { - PeakRatio: 1.5e-1 - tool_type: "RiseTimeThreshold" - } - SPEArea: 2.56658e2 - SPEShift: 0 - UseStartTime: false - module_type: "OpHitFinder" - reco_man: { - module_type: "PulseRecoManager" - } - } - pmtbaselines: { - AlgoParams: { - AcceptedSampleRangeRMS: 5 - ExcessSampleLimit: 4 - } - ExcludeSpillTimeIfMoreThan: 8 - OpticalWaveforms: "opdaq" - PlotBaselines: false - PretriggerBufferFractionForBaseline: 5e-1 - PretriggerBufferSize: 500 - module_type: "PMTWaveformBaselinesFromChannelData" - } - pmtconfig: { - AssignOfflineChannelIDs: true - module_type: "PMTconfigurationExtraction" - } - pmtconfigbaselines: { - OpticalWaveforms: "daqPMT" - OutputCategory: "PMTWaveformBaselines" - PMTconfigurationTag: "pmtconfig" - PlotBaselines: false - PrintBaselines: false - module_type: "PMTWaveformBaselinesFromReadoutConfiguration" - } - pmtfixedthr: { - Baseline: 1.49995e4 - NChannels: 360 - OpticalWaveforms: "opdaq" - OutputCategory: "DiscriminatePMTwaveforms" - TriggerGateBuilder: { - ChannelThresholds: [ - 18, - 300, - 400, - 600 - ] - GateDuration: "160 ns" - tool_type: "FixedTriggerGateBuilderTool" - } - module_type: "DiscriminatePMTwaveforms" - } - pmtlvdsgates: { - ChannelPairing: [ - [ - 0, - 2 - ], - [ - 1, - 4 - ], - [ - 3, - 6 - ], - [ - 5, - 8 - ], - [ - 7, - 9 - ], - [ - 10, - 12 - ], - [ - 11, - 14 - ], - [ - 13 - ], - [ - 15, - 18 - ], - [ - 16 - ], - [ - 17, - 19 - ], - [ - 20, - 22 - ], - [ - 21, - 24 - ], - [ - 23, - 26 - ], - [ - 25, - 28 - ], - [ - 27, - 29 - ], - [ - 30, - 32 - ], - [ - 31, - 34 - ], - [ - 33, - 36 - ], - [ - 35, - 38 - ], - [ - 37, - 39 - ], - [ - 40, - 42 - ], - [ - 41, - 44 - ], - [ - 43 - ], - [ - 45, - 48 - ], - [ - 46 - ], - [ - 47, - 49 - ], - [ - 50, - 52 - ], - [ - 51, - 54 - ], - [ - 53, - 56 - ], - [ - 55, - 58 - ], - [ - 57, - 59 - ], - [ - 60, - 62 - ], - [ - 61, - 64 - ], - [ - 63, - 66 - ], - [ - 65, - 68 - ], - [ - 67, - 69 - ], - [ - 70, - 72 - ], - [ - 71, - 74 - ], - [ - 73 - ], - [ - 75, - 78 - ], - [ - 76 - ], - [ - 77, - 79 - ], - [ - 80, - 82 - ], - [ - 81, - 84 - ], - [ - 83, - 86 - ], - [ - 85, - 88 - ], - [ - 87, - 89 - ], - [ - 90, - 92 - ], - [ - 91, - 94 - ], - [ - 93, - 96 - ], - [ - 95, - 98 - ], - [ - 97, - 99 - ], - [ - 100, - 102 - ], - [ - 101, - 104 - ], - [ - 103 - ], - [ - 105, - 108 - ], - [ - 106 - ], - [ - 107, - 109 - ], - [ - 110, - 112 - ], - [ - 111, - 114 - ], - [ - 113, - 116 - ], - [ - 115, - 118 - ], - [ - 117, - 119 - ], - [ - 120, - 122 - ], - [ - 121, - 124 - ], - [ - 123, - 126 - ], - [ - 125, - 128 - ], - [ - 127, - 129 - ], - [ - 130, - 132 - ], - [ - 131, - 134 - ], - [ - 133 - ], - [ - 135, - 138 - ], - [ - 136 - ], - [ - 137, - 139 - ], - [ - 140, - 142 - ], - [ - 141, - 144 - ], - [ - 143, - 146 - ], - [ - 145, - 148 - ], - [ - 147, - 149 - ], - [ - 150, - 152 - ], - [ - 151, - 154 - ], - [ - 153, - 156 - ], - [ - 155, - 158 - ], - [ - 157, - 159 - ], - [ - 160, - 162 - ], - [ - 161, - 164 - ], - [ - 163 - ], - [ - 165, - 168 - ], - [ - 166 - ], - [ - 167, - 169 - ], - [ - 170, - 172 - ], - [ - 171, - 174 - ], - [ - 173, - 176 - ], - [ - 175, - 178 - ], - [ - 177, - 179 - ], - [ - 180, - 182 - ], - [ - 181, - 184 - ], - [ - 183, - 186 - ], - [ - 185, - 188 - ], - [ - 187, - 189 - ], - [ - 190, - 192 - ], - [ - 191, - 194 - ], - [ - 193 - ], - [ - 195, - 198 - ], - [ - 196 - ], - [ - 197, - 199 - ], - [ - 200, - 202 - ], - [ - 201, - 204 - ], - [ - 203, - 206 - ], - [ - 205, - 208 - ], - [ - 207, - 209 - ], - [ - 210, - 212 - ], - [ - 211, - 214 - ], - [ - 213, - 216 - ], - [ - 215, - 218 - ], - [ - 217, - 219 - ], - [ - 220, - 222 - ], - [ - 221, - 224 - ], - [ - 223 - ], - [ - 225, - 228 - ], - [ - 226 - ], - [ - 227, - 229 - ], - [ - 230, - 232 - ], - [ - 231, - 234 - ], - [ - 233, - 236 - ], - [ - 235, - 238 - ], - [ - 237, - 239 - ], - [ - 240, - 242 - ], - [ - 241, - 244 - ], - [ - 243, - 246 - ], - [ - 245, - 248 - ], - [ - 247, - 249 - ], - [ - 250, - 252 - ], - [ - 251, - 254 - ], - [ - 253 - ], - [ - 255, - 258 - ], - [ - 256 - ], - [ - 257, - 259 - ], - [ - 260, - 262 - ], - [ - 261, - 264 - ], - [ - 263, - 266 - ], - [ - 265, - 268 - ], - [ - 267, - 269 - ], - [ - 270, - 272 - ], - [ - 271, - 274 - ], - [ - 273, - 276 - ], - [ - 275, - 278 - ], - [ - 277, - 279 - ], - [ - 280, - 282 - ], - [ - 281, - 284 - ], - [ - 283 - ], - [ - 285, - 288 - ], - [ - 286 - ], - [ - 287, - 289 - ], - [ - 290, - 292 - ], - [ - 291, - 294 - ], - [ - 293, - 296 - ], - [ - 295, - 298 - ], - [ - 297, - 299 - ], - [ - 300, - 302 - ], - [ - 301, - 304 - ], - [ - 303, - 306 - ], - [ - 305, - 308 - ], - [ - 307, - 309 - ], - [ - 310, - 312 - ], - [ - 311, - 314 - ], - [ - 313 - ], - [ - 315, - 318 - ], - [ - 316 - ], - [ - 317, - 319 - ], - [ - 320, - 322 - ], - [ - 321, - 324 - ], - [ - 323, - 326 - ], - [ - 325, - 328 - ], - [ - 327, - 329 - ], - [ - 330, - 332 - ], - [ - 331, - 334 - ], - [ - 333, - 336 - ], - [ - 335, - 338 - ], - [ - 337, - 339 - ], - [ - 340, - 342 - ], - [ - 341, - 344 - ], - [ - 343 - ], - [ - 345, - 348 - ], - [ - 346 - ], - [ - 347, - 349 - ], - [ - 350, - 352 - ], - [ - 351, - 354 - ], - [ - 353, - 356 - ], - [ - 355, - 358 - ], - [ - 357, - 359 - ] - ] - CombinationMode: "OR" - IgnoreChannels: [ - 70, - 106, - 217, - 54, - 58, - 67, - 98, - 112, - 153, - 254 - ] - LogCategory: "LVDSgates" - Thresholds: [ - 400 - ] - TriggerGatesTag: "pmtfixedthr" - module_type: "LVDSgates" - } - pmtthr: { - Baselines: "pmtconfigbaselines" - NChannels: 360 - OpticalWaveforms: "daqPMT" - OutputCategory: "DiscriminatePMTwaveforms" - ThresholdsFromPMTconfig: "pmtconfig" - TriggerGateBuilder: { - ChannelThresholds: [ - 0 - ] - GateDuration: "160 ns" - tool_type: "FixedTriggerGateBuilderTool" - } - module_type: "DiscriminatePMTwaveformsByChannel" - } - pmttriggerwindows: { - MissingChannels: [ - 70, - 106, - 217, - 54, - 58, - 67, - 98, - 112, - 153, - 254 - ] - Stride: 15 - Thresholds: [ - 400 - ] - TriggerGatesTag: "pmtlvdsgates" - WindowSize: 30 - module_type: "SlidingWindowTrigger" - } - purityana0: { - CryostatFCL: 0 - FillAnaTuple: false - PersistPurityInfo: false - PlaneFCL: 2 - RawModuleLabel: [ - "daqTPCROI:PHYSCRATEDATATPCWW", - "daqTPCROI:PHYSCRATEDATATPCWE", - "daqTPCROI:PHYSCRATEDATATPCEW", - "daqTPCROI:PHYSCRATEDATATPCEE" - ] - ThresholdFCL: 3 - ValoreTauFCL: 600000 - module_type: "ICARUSPurityDQM" - } - purityana1: { - CryostatFCL: 1 - FillAnaTuple: false - PersistPurityInfo: false - PlaneFCL: 2 - RawModuleLabel: [ - "daqTPCROI:PHYSCRATEDATATPCWW", - "daqTPCROI:PHYSCRATEDATATPCWE", - "daqTPCROI:PHYSCRATEDATATPCEW", - "daqTPCROI:PHYSCRATEDATATPCEE" - ] - ThresholdFCL: 3 - ValoreTauFCL: 600000 - module_type: "ICARUSPurityDQM" - } - roifinder1d: { - CorrectROIBaseline: false - DaignosticOutput: false - LeadTrail: 0 - MaxSizeForCorrection: 512 - MinSizeForCorrection: 12 - OutInstanceLabelVec: [ - "PHYSCRATEDATATPCWW", - "PHYSCRATEDATATPCWE", - "PHYSCRATEDATATPCEW", - "PHYSCRATEDATATPCEE" - ] - OutputHistograms: false - OutputMorphed: false - ROIFinderToolVec: { - ROIFinderPlane0: { - Plane: 0 - StructuringElement: [ - 25, - 5 - ] - Threshold: [ - 7.5, - 7.5, - 6 - ] - tool_type: "ROIMorphological2D" - } - ROIFinderPlane1: { - Plane: 1 - StructuringElement: [ - 25, - 5 - ] - Threshold: [ - 7.5, - 7.5, - 6 - ] - tool_type: "ROIMorphological2D" - } - ROIFinderPlane2: { - Plane: 2 - StructuringElement: [ - 25, - 5 - ] - Threshold: [ - 7.5, - 7.5, - 6 - ] - tool_type: "ROIMorphological2D" - } - } - WireModuleLabelVec: [ - "decon1droi:PHYSCRATEDATATPCWW", - "decon1droi:PHYSCRATEDATATPCWE", - "decon1droi:PHYSCRATEDATATPCEW", - "decon1droi:PHYSCRATEDATATPCEE" - ] - module_type: "ROIFinder" - } - roifinder2d: { - CorrectROIBaseline: false - DaignosticOutput: false - LeadTrail: 0 - MaxSizeForCorrection: 512 - MinSizeForCorrection: 12 - OutInstanceLabelVec: [ - "PHYSCRATEDATATPCWW", - "PHYSCRATEDATATPCWE", - "PHYSCRATEDATATPCEW", - "PHYSCRATEDATATPCEE" - ] - OutputHistograms: false - OutputMorphed: false - ROIFinderToolVec: { - ROIFinderPlane0: { - Plane: 0 - ROILabelVec: [ - "roifinder1d:PHYSCRATEDATATPCWW", - "roifinder1d:PHYSCRATEDATATPCWE", - "roifinder1d:PHYSCRATEDATATPCEW", - "roifinder1d:PHYSCRATEDATATPCEE" - ] - tool_type: "ROIFromDecoder" - } - ROIFinderPlane1: { - Plane: 1 - ROILabelVec: [ - "roifinder1d:PHYSCRATEDATATPCWW", - "roifinder1d:PHYSCRATEDATATPCWE", - "roifinder1d:PHYSCRATEDATATPCEW", - "roifinder1d:PHYSCRATEDATATPCEE" - ] - tool_type: "ROIFromDecoder" - } - ROIFinderPlane2: { - Plane: 2 - ROILabelVec: [ - "roifinder1d:PHYSCRATEDATATPCWW", - "roifinder1d:PHYSCRATEDATATPCWE", - "roifinder1d:PHYSCRATEDATATPCEW", - "roifinder1d:PHYSCRATEDATATPCEE" - ] - tool_type: "ROIFromDecoder" - } - } - WireModuleLabelVec: [ - "decon2droiWW:looseLf", - "decon2droiWE:looseLf", - "decon2droiEW:looseLf", - "decon2droiEE:looseLf" - ] - module_type: "ROIFinder" - } - simChannelROI: { - DaignosticOutput: false - OutInstanceLabelVec: [ - "PHYSCRATEDATA" - ] - WireModuleLabelVec: [ - "largeant" - ] - module_type: "SimChannelROI" - } - triggerconfig: { - module_type: "TriggerConfigurationExtraction" - } - triggersimgates: { - BeamGateTag: "beamgate" - Changes: [ - { - Select: { - Types: [ - "BNB" - ] - } - Start: { - SetTo: "-0.2 us" - } - Width: { - Add: "0.5 us" - SetTo: "1.6 us" - } - }, - { - Select: { - Types: [ - "NuMI" - ] - } - Start: { - SetTo: "-0.2 us" - } - Width: { - Add: "0.6 us" - SetTo: "9.5 us" - } - } - ] - module_type: "FixBeamGateInfo" - } - } - streamROOT: [ - "rootOutput" - ] - trigger_paths: [ - "path" - ] -} -process_name: "MCstage0" -services: { - BackTrackerService: { - BackTracker: { - G4ModuleLabel: "largeant" - MinimumHitEnergyFraction: 1e-1 - SimChannelModuleLabel: "largeant" - } - } - ChannelStatusService: { - ChannelStatusProvider: { - AlgName: "SIOVChannelStatusProvider" - DatabaseRetrievalAlg: { - AlgName: "DatabaseRetrievalAlg" - DBFolderName: "tpc_channelstatus_data" - DBTag: "v3r2" - DBUrl: "https://dbdata0vm.fnal.gov:9443/icarus_con_prod/app/" - UseSQLite: true - } - UseDB: true - UseFile: false - } - service_provider: "SIOVChannelStatusICARUSService" - } - DetPedestalService: { - DetPedestalRetrievalAlg: { - AlgName: "DetPedestalRetrievalAlg" - DatabaseRetrievalAlg: { - AlgName: "DatabaseRetrievalAlg" - DBFolderName: "" - DBTag: "" - DBUrl: "" - } - DefaultCollMean: 400 - DefaultCollRms: 3e-1 - DefaultIndMean: 2048 - DefaultIndRms: 3e-1 - DefaultMeanErr: 0 - DefaultRmsErr: 0 - UseDB: false - UseFile: false - } - service_provider: "SIOVDetPedestalService" - } - DetectorClocksService: { - ClockSpeedExternal: 3.125e1 - ClockSpeedOptical: 500 - ClockSpeedTPC: 2.5 - ClockSpeedTrigger: 16 - DefaultBeamTime: 1500 - DefaultTrigTime: 1500 - FramePeriod: 1.6384e3 - G4RefTime: -1500 - InheritClockConfig: true - TrigModuleName: "daqTrigger" - TriggerOffsetTPC: -340 - service_provider: "DetectorClocksServiceStandard" - } - DetectorPropertiesService: { - DriftVelFudgeFactor: 9.9733e-1 - Efield: [ - 4.938e-1, - 7.33e-1, - 9.33e-1 - ] - Electronlifetime: 3000 - ElectronsToADC: 1.208041e-3 - IncludeInterPlanePitchInXTickOffsets: false - InheritNumberTimeSamples: true - NumberTimeSamples: 4096 - ReadOutWindowSize: 4096 - SimpleBoundaryProcess: false - SternheimerA: 1.956e-1 - SternheimerCbar: 5.2146 - SternheimerK: 3 - SternheimerX0: 2e-1 - SternheimerX1: 3 - Temperature: 8.75e1 - TimeOffsetU: 0 - TimeOffsetV: 0 - TimeOffsetY: 0 - TimeOffsetZ: 0 - UseIcarusMicrobooneDriftModel: true - service_provider: "DetectorPropertiesServiceStandard" - } - DuplicateEventTracker: {} - ExptGeoHelperInterface: { - Mapper: { - WirelessChannels: { - CollectionEvenPostChannels: 96 - CollectionEvenPreChannels: 64 - CollectionOddPostChannels: 64 - CollectionOddPreChannels: 96 - FirstInductionPostChannels: 96 - FirstInductionPreChannels: 0 - SecondInductionEvenPostChannels: 64 - SecondInductionEvenPreChannels: 96 - SecondInductionOddPostChannels: 96 - SecondInductionOddPreChannels: 64 - } - tool_type: "ICARUSsplitInductionChannelMapSetupTool" - } - service_provider: "IcarusGeometryHelper" - } - FileCatalogMetadata: { - fileType: "mc" - group: "icarus" - runType: "physics" - } - Geometry: { - ChannelMapping: { - WirelessChannels: { - CollectionEvenPostChannels: 96 - CollectionEvenPreChannels: 64 - CollectionOddPostChannels: 64 - CollectionOddPreChannels: 96 - FirstInductionPostChannels: 96 - FirstInductionPreChannels: 0 - SecondInductionEvenPostChannels: 64 - SecondInductionEvenPreChannels: 96 - SecondInductionOddPostChannels: 96 - SecondInductionOddPreChannels: 64 - } - tool_type: "ICARUSsplitInductionChannelMapSetupTool" - } - DisableWiresInG4: true - GDML: "icarus_refactored_nounderscore_20230918.gdml" - Name: "icarus_v4" - ROOT: "icarus_refactored_nounderscore_20230918.gdml" - SurfaceY: 690 - } - GeometryConfigurationWriter: {} - IICARUSChannelMap: { - ChannelMappingTool: { - CalibDBFileName: "crt_gain_reco_data" - DBFileName: "ChannelMapICARUS_20240318.db" - Tag: "v1r0" - } - DiagnosticOutput: false - service_provider: "ICARUSChannelMapSQLite" - } - IPMTTimingCorrectionService: { - CorrectionTags: { - CablesTag: "v2r4" - CosmicsTag: "v2r1" - LaserTag: "v2r2" - } - Verbose: false - service_provider: "PMTTimingCorrectionService" - } - LArPropertiesService: { - AbsLengthEnergies: [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ] - AbsLengthSpectrum: [ - 8000, - 8000, - 8000, - 8000, - 8000, - 2000, - 2000, - 2000 - ] - AlphaScintYield: 16800 - AlphaScintYieldRatio: 5.6e-1 - Argon39DecayRate: 0 - AtomicMass: 3.9948e1 - AtomicNumber: 18 - ElectronScintYield: 20000 - ElectronScintYieldRatio: 2.7e-1 - EnableCerenkovLight: false - ExcitationEnergy: 188 - FastScintEnergies: [ - 7.2, - 7.9, - 8.3, - 8.6, - 8.9, - 9.1, - 9.3, - 9.6, - 9.7, - 9.8, - 10, - 1.02e1, - 1.03e1, - 1.06e1, - 11, - 1.16e1, - 1.19e1 - ] - FastScintSpectrum: [ - 0, - 4e-2, - 1.2e-1, - 2.7e-1, - 4.4e-1, - 6.2e-1, - 8e-1, - 9.1e-1, - 9.2e-1, - 8.5e-1, - 7e-1, - 5e-1, - 3.1e-1, - 1.3e-1, - 4e-2, - 1e-2, - 0 - ] - KaonScintYield: 24000 - KaonScintYieldRatio: 2.3e-1 - LoadExtraMatProperties: false - MuonScintYield: 24000 - MuonScintYieldRatio: 2.3e-1 - PionScintYield: 24000 - PionScintYieldRatio: 2.3e-1 - ProtonScintYield: 19200 - ProtonScintYieldRatio: 2.9e-1 - RIndexEnergies: [ - 1.18626, - 1.68626, - 2.18626, - 2.68626, - 3.18626, - 3.68626, - 4.18626, - 4.68626, - 5.18626, - 5.68626, - 6.18626, - 6.68626, - 7.18626, - 7.68626, - 8.18626, - 8.68626, - 9.18626, - 9.68626, - 1.01863e1, - 1.06863e1, - 1.11863e1 - ] - RIndexSpectrum: [ - 1.24664, - 1.2205, - 1.22694, - 1.22932, - 1.23124, - 1.23322, - 1.23545, - 1.23806, - 1.24116, - 1.24489, - 1.24942, - 1.25499, - 1.26197, - 1.2709, - 1.28263, - 1.29865, - 1.32169, - 1.35747, - 1.42039, - 1.56011, - 2.16626 - ] - RadiationLength: 1.955e1 - RayleighEnergies: [ - 1.18626, - 1.68626, - 2.18626, - 2.68626, - 3.18626, - 3.68626, - 4.18626, - 4.68626, - 5.18626, - 5.68626, - 6.18626, - 6.68626, - 7.18626, - 7.68626, - 8.18626, - 8.68626, - 9.18626, - 9.68626, - 1.01863e1, - 1.06863e1, - 1.11863e1 - ] - RayleighSpectrum: [ - 1.2008e6, - 390747, - 128633, - 5.49691e4, - 2.71918e4, - 1.48537e4, - 8.7169e3, - 5.39742e3, - 3.48137e3, - 2.31651e3, - 1.57763e3, - 1.09202e3, - 7.63045e2, - 5.34232e2, - 3.71335e2, - 2.52942e2, - 1.6538e2, - 9.99003e1, - 5.12653e1, - 1.7495e1, - 9.64341e-1 - ] - ReflectiveSurfaceDiffuseFractions: [ - [ - 5e-1, - 5e-1, - 5e-1 - ] - ] - ReflectiveSurfaceEnergies: [ - 1.77, - 2.0675, - 2.481, - 2.819, - 2.953, - 3.1807, - 3.54, - 4.135, - 4.962, - 5.39, - 7, - 15 - ] - ReflectiveSurfaceNames: [ - "STEEL_STAINLESS_Fe7Cr2Ni", - "copper", - "G10", - "vm2000", - "ALUMINUM_Al", - "ALUMINUM_PMT", - "ALUMINUM_CRYO" - ] - ReflectiveSurfaceReflectances: [ - [ - 6.6e-1, - 6.4e-1, - 6.2e-1, - 6e-1, - 5.9e-1, - 5.7e-1, - 5.3e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9.02e-1, - 8.41e-1, - 4.64e-1, - 3.79e-1, - 3.45e-1, - 2.99e-1, - 2.87e-1, - 2.64e-1, - 3.37e-1, - 3e-1, - 0, - 0 - ], - [ - 3.93e-1, - 4.05e-1, - 4.04e-1, - 3.52e-1, - 3.23e-1, - 2.43e-1, - 1.27e-1, - 6.5e-2, - 6.8e-2, - 6.8e-2, - 0, - 0 - ], - [ - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 1e-1, - 1e-1, - 7e-1, - 3e-1, - 0, - 0 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ] - ] - ScintBirksConstant: 6.9e-2 - ScintByParticleType: true - ScintFastTimeConst: 6 - ScintPreScale: 7.3e-2 - ScintResolutionScale: 1 - ScintSlowTimeConst: 1590 - ScintYield: 24000 - ScintYieldRatio: 2.3e-1 - SlowScintEnergies: [ - 7.2, - 7.9, - 8.3, - 8.6, - 8.9, - 9.1, - 9.3, - 9.6, - 9.7, - 9.8, - 10, - 1.02e1, - 1.03e1, - 1.06e1, - 11, - 1.16e1, - 1.19e1 - ] - SlowScintSpectrum: [ - 0, - 4e-2, - 1.2e-1, - 2.7e-1, - 4.4e-1, - 6.2e-1, - 8e-1, - 9.1e-1, - 9.2e-1, - 8.5e-1, - 7e-1, - 5e-1, - 3.1e-1, - 1.3e-1, - 4e-2, - 1e-2, - 0 - ] - TpbAbsorptionEnergies: [ - 5e-2, - 1.77, - 2.0675, - 7.42, - 7.75, - 8.16, - 8.73, - 9.78, - 1.069e1, - 5.039e1 - ] - TpbAbsorptionSpectrum: [ - 100000, - 100000, - 100000, - 1e-3, - 1e-11, - 1e-11, - 1e-11, - 1e-11, - 1e-11, - 1e-11 - ] - TpbEmmisionEnergies: [ - 5e-2, - 1, - 1.5, - 2.25, - 2.481, - 2.819, - 2.952, - 2.988, - 3.024, - 3.1, - 3.14, - 3.1807, - 3.54, - 5.5, - 5.039e1 - ] - TpbEmmisionSpectrum: [ - 0, - 0, - 0, - 5.88e-2, - 2.35e-1, - 8.53e-1, - 1, - 1, - 9.259e-1, - 7.04e-1, - 2.96e-2, - 1.1e-2, - 0, - 0, - 0 - ] - TpbTimeConstant: 2.5 - service_provider: "LArPropertiesServiceStandard" - } - MemoryTracker: { - dbOutput: { - filename: "MemoryReport.db" - overwrite: true - } - } - ParticleInventoryService: { - ParticleInventory: { - EveIdCalculator: "EmEveIdCalculator" - G4ModuleLabel: "largeant" - } - } - PhotonBackTrackerService: { - PhotonBackTracker: { - Delay: 0 - G4ModuleLabel: "largeant" - G4ModuleLabels: [ - "largeant" - ] - MinimumHitEnergyFraction: 1e-1 - } - } - SignalShapingICARUSService: { - DeconNorm: 1 - InitialFFTSize: 4096 - NoiseFactVec: [ - [ - 1.151, - 1.151, - 1.151, - 1.151 - ], - [ - 1.152, - 1.152, - 1.152, - 1.152 - ], - [ - 1.096, - 1.096, - 1.096, - 1.096 - ] - ] - PlaneForNormalization: 2 - PrintResponses: "false" - ResponseTools: { - ResponsePlane0: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 0 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 0 - ResponseType: 0 - SignalType: 0 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" - FilterParametersVec: [ - 1, - 0, - 4, - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 0 - tool_type: "Filter" - } - Plane: 0 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - ResponsePlane1: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 1 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 1 - ResponseType: 1 - SignalType: 0 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" - FilterParametersVec: [ - 1, - 0, - 4, - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 1 - tool_type: "Filter" - } - Plane: 1 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - ResponsePlane2: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 2 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 2 - ResponseType: 2 - SignalType: 1 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? gaus(0) : 0.0" - FilterParametersVec: [ - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 2 - tool_type: "Filter" - } - Plane: 2 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - } - StoreHistograms: true - } - SpaceChargeService: { - EnableCalEfieldSCE: false - EnableCalSpatialSCE: false - EnableCorrSCE: false - EnableSimEfieldSCE: false - EnableSimSpatialSCE: false - InputFilename: "SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root" - RepresentationType: "Voxelized_TH3" - service_provider: "SpaceChargeServiceICARUS" - } - TFileService: { - fileName: "Supplemental-%ifb_%tc-%p.root" - } - TimeTracker: { - dbOutput: { - filename: "TimingReport.db" - overwrite: true - } - printSummary: true - } - message: { - destinations: { - STDCOUT: { - categories: { - default: { - limit: 5 - reportEvery: 1 - } - } - threshold: "WARNING" - type: "cout" - } - } - } - scheduler: { - defaultExceptions: false - } -} -source: { - maxEvents: 10 - module_type: "RootInput" - saveMemoryObjectThreshold: 0 -} diff --git a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPW.txt b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPW.txt deleted file mode 100644 index c241956ff..000000000 --- a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_SPW.txt +++ /dev/null @@ -1,5060 +0,0 @@ -# Produced from 'fhicl-dump' using: -# Input : stage0W_run2_wc_icarus_mc.fcl -# Policy : cet::filepath_maker -# Path : "FHICL_FILE_PATH" - -outputs: { - rootOutput: { - SelectEvents: [ - "path" - ] - checkFileName: false - compressionLevel: 1 - dataTier: "reconstructed" - fileName: "%ifb_%tc-%p.root" - fileProperties: { - maxInputFiles: 1 - } - module_type: "RootOutput" - saveMemoryObjectThreshold: 0 - } -} -physics: { - analyzers: { - purityinfoana0: { - PrintInfo: false - PurityInfoLabel: "purityana0" - SelectEvents: [ - "reco" - ] - module_type: "TPCPurityInfoAna" - } - purityinfoana1: { - PrintInfo: false - PurityInfoLabel: "purityana1" - SelectEvents: [ - "reco" - ] - module_type: "TPCPurityInfoAna" - } - spanaE: { - Cryostat: 0 - G4Producer: "largeant" - HitProducers: [ - "gaushit2dTPCEE", - "gaushit2dTPCEW" - ] - SimChannelProducer: "daq:simpleSC" - WireProducers: [ - "decon2droiEE:wiener", - "decon2droiEW:wiener" - ] - module_type: "SPAna" - } - spanaW: { - Cryostat: 1 - G4Producer: "largeant" - HitProducers: [ - "gaushit2dTPCWE", - "gaushit2dTPCWW" - ] - SimChannelProducer: "daq:simpleSC" - WireProducers: [ - "decon2droiWE:wiener", - "decon2droiWW:wiener" - ] - module_type: "SPAna" - } - } - end_paths: [ - "outana", - "streamROOT" - ] - filters: { - crtpmtmatchingfilter: { - BNBBeamGateMax: 2300 - BNBBeamGateMin: -550 - BNBinBeamMax: 1300 - BNBinBeamMin: -300 - CrtPmtModuleLabel: "crtpmt" - FilterLevel: "loose" - GlobalT0Offset: 1.599957e6 - MatchBottomCRT: false - NuMIBeamGateMax: 10000 - NuMIBeamGateMin: -550 - NuMIinBeamMax: 9100 - NuMIinBeamMin: -300 - OutputTree: true - PMTADCThresh: 400 - SpillOnly: false - TimeOfFlightInterval: 100 - TriggerConfiguration: "triggerconfig" - TriggerLabel: "daqTrigger" - module_type: "FilterCRTPMTMatching" - nOpHitToTrigger: 5 - } - filterdataintegrity: { - module_type: "FilterDataIntegrity" - } - flashfilterBNB: { - OpFlashProducerList: [ - "opflashCryoE", - "opflashCryoW" - ] - WindowEndTime: 1.8 - WindowStartTime: -2e-1 - module_type: "FilterOpFlash" - } - flashfilterNuMI: { - OpFlashProducerList: [ - "opflashCryoE", - "opflashCryoW" - ] - WindowEndTime: 9.8 - WindowStartTime: -2e-1 - module_type: "FilterOpFlash" - } - triggerfilterBNB: { - TriggerDataLabel: "daqTrigger" - TriggerType: "BNB" - module_type: "TriggerTypeFilter" - } - triggerfilterNuMI: { - TriggerDataLabel: "daqTrigger" - TriggerType: "NuMI" - module_type: "TriggerTypeFilter" - } - triggerfilterOffbeamBNB: { - TriggerDataLabel: "daqTrigger" - TriggerType: "OffbeamBNB" - module_type: "TriggerTypeFilter" - } - triggerfilterOffbeamNuMI: { - TriggerDataLabel: "daqTrigger" - TriggerType: "OffbeamNuMI" - module_type: "TriggerTypeFilter" - } - triggerfilterUnknown: { - TriggerDataLabel: "daqTrigger" - TriggerType: "Unknown" - module_type: "TriggerTypeFilter" - } - } - outana: [ - "spanaE", - "spanaW" - ] - path: [ - "decon2droiWE", - "decon2droiWW", - "roifinder2d", - "gaushit1dTPCEW", - "gaushit1dTPCEE", - "gaushit1dTPCWW", - "gaushit1dTPCWE", - "gaushit2dTPCEW", - "gaushit2dTPCEE", - "gaushit2dTPCWW", - "gaushit2dTPCWE", - "purityana0", - "purityana1" - ] - producers: { - MCDecodeTPCROI: { - CoherentGrouping: 64 - DecoderTool: { - DenoiserType: "default" - FFTCutoffVals: [ - [ - 8, - 800 - ], - [ - 8, - 800 - ], - [ - 4, - 800 - ] - ] - FFTSigmaVals: [ - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ] - ] - FilterModeVec: [ - "e", - "g", - "d" - ] - FilterWindow: 10 - FragmentIDMap: [ - [ - 0, - 5132 - ], - [ - 1, - 5134 - ], - [ - 2, - 5136 - ], - [ - 6, - 5140 - ], - [ - 8, - 5390 - ], - [ - 9, - 5392 - ] - ] - LowFreqCorrection: true - NSigmaForTrucation: 3.5 - StructuringElement: 16 - Threshold: [ - 1, - 1, - 1 - ] - UseFFTFilter: false - fragment_id_offset: 0 - tool_type: "TPCNoiseFilter1D" - } - DiagnosticOutput: false - FragmentsLabelVec: [ - "daq:TPCWW", - "daq:TPCWE", - "daq:TPCEW", - "daq:TPCEE" - ] - OutInstanceLabelVec: [ - "PHYSCRATEDATATPCWW", - "PHYSCRATEDATATPCWE", - "PHYSCRATEDATATPCEW", - "PHYSCRATEDATATPCEE" - ] - OutputCoherentPath: "Cor" - OutputCorrection: false - OutputRawWavePath: "RAW" - OutputRawWaveform: false - module_type: "MCDecoderICARUSTPCwROI" - } - crthit: { - CrtModuleLabel: "crtdaq" - HitAlg: { - CSVFile: "data.csv" - CoinWindow: 150 - CrtWindow: 3e6 - Data: false - GlobalT0Offset: 1.6e6 - PEThresh: 7.5 - PropDelay: 6.2e-2 - QPed: 60 - QSlope: 70 - SiPMtoFEBdelay: 0 - UseReadoutWindow: false - Verbose: false - outCSVFile: false - topGain: 110 - topPed: 160 - } - TriggerLabel: "daqTrigger" - module_type: "icaruscode/CRT/CRTSimHitProducer" - } - crtpmt: { - BNBBeamGateMax: 2300 - BNBBeamGateMin: -550 - BNBinBeamMax: 1300 - BNBinBeamMin: -300 - CrtHitModuleLabel: "crthit" - GlobalT0Offset: 1.599957e6 - MatchBottomCRT: false - NuMIBeamGateMax: 10000 - NuMIBeamGateMin: -550 - NuMIinBeamMax: 9100 - NuMIinBeamMin: -300 - OpFlashModuleLabels: [ - "opflashCryoE", - "opflashCryoW" - ] - PMTADCThresh: 400 - TimeOfFlightInterval: 100 - TriggerLabel: "daqTrigger" - module_type: "icaruscode/CRT/CRTPMTMatchingProducer" - nOpHitToTrigger: 5 - } - crttrack: { - DataLabelHits: "crthit" - StoreTrack: 1 - TrackAlg: { - AverageHitDistance: 30 - DistanceLimit: 25 - TimeLimit: 1e-1 - } - TrackMethodType: 4 - UseTopPlane: false - module_type: "icaruscode/CRT/CRTTrackProducer" - } - daqCRT: { - FEB_delay_side: [ - [ - 31, - 240 - ], - [ - 32, - 260 - ], - [ - 33, - 280 - ], - [ - 34, - 330 - ], - [ - 35, - 350 - ], - [ - 36, - 370 - ], - [ - 25, - 240 - ], - [ - 26, - 260 - ], - [ - 27, - 280 - ], - [ - 28, - 330 - ], - [ - 29, - 350 - ], - [ - 30, - 370 - ], - [ - 43, - 230 - ], - [ - 44, - 250 - ], - [ - 45, - 270 - ], - [ - 46, - 316 - ], - [ - 47, - 336 - ], - [ - 48, - 356 - ], - [ - 37, - 230 - ], - [ - 38, - 250 - ], - [ - 39, - 270 - ], - [ - 40, - 316 - ], - [ - 41, - 336 - ], - [ - 42, - 356 - ], - [ - 55, - 245 - ], - [ - 56, - 265 - ], - [ - 57, - 285 - ], - [ - 58, - 331 - ], - [ - 59, - 351 - ], - [ - 60, - 371 - ], - [ - 49, - 245 - ], - [ - 50, - 265 - ], - [ - 51, - 285 - ], - [ - 52, - 331 - ], - [ - 53, - 351 - ], - [ - 54, - 371 - ], - [ - 3, - 364 - ], - [ - 1, - 384 - ], - [ - 6, - 404 - ], - [ - 7, - 450 - ], - [ - 8, - 433 - ], - [ - 9, - 453 - ], - [ - 5, - 470 - ], - [ - 4, - 490 - ], - [ - 92, - 237 - ], - [ - 93, - 257 - ], - [ - 94, - 303 - ], - [ - 95, - 323 - ], - [ - 96, - 343 - ], - [ - 97, - 390 - ], - [ - 85, - 237 - ], - [ - 86, - 257 - ], - [ - 87, - 277 - ], - [ - 88, - 297 - ], - [ - 89, - 317 - ], - [ - 90, - 337 - ], - [ - 91, - 357 - ], - [ - 17, - 359 - ], - [ - 19, - 379 - ], - [ - 21, - 399 - ], - [ - 22, - 448 - ], - [ - 23, - 468 - ], - [ - 24, - 488 - ], - [ - 10, - 359 - ], - [ - 11, - 379 - ], - [ - 13, - 399 - ], - [ - 14, - 448 - ], - [ - 15, - 468 - ], - [ - 16, - 488 - ], - [ - 67, - 348 - ], - [ - 68, - 368 - ], - [ - 69, - 388 - ], - [ - 70, - 434 - ], - [ - 71, - 454 - ], - [ - 72, - 474 - ], - [ - 61, - 348 - ], - [ - 62, - 368 - ], - [ - 63, - 388 - ], - [ - 64, - 434 - ], - [ - 65, - 454 - ], - [ - 66, - 474 - ], - [ - 84, - 364 - ], - [ - 83, - 384 - ], - [ - 82, - 404 - ], - [ - 81, - 450 - ], - [ - 80, - 470 - ], - [ - 79, - 490 - ], - [ - 78, - 364 - ], - [ - 77, - 384 - ], - [ - 76, - 404 - ], - [ - 75, - 450 - ], - [ - 74, - 470 - ], - [ - 73, - 490 - ] - ] - FEB_delay_top: [ - [ - 211, - 414 - ], - [ - 212, - 398 - ], - [ - 81, - 283 - ], - [ - 119, - 298 - ], - [ - 87, - 313 - ], - [ - 92, - 329 - ], - [ - 180, - 344 - ], - [ - 97, - 359 - ], - [ - 174, - 374 - ], - [ - 189, - 420 - ], - [ - 190, - 436 - ], - [ - 80, - 451 - ], - [ - 162, - 466 - ], - [ - 64, - 482 - ], - [ - 139, - 451 - ], - [ - 185, - 466 - ], - [ - 165, - 436 - ], - [ - 148, - 451 - ], - [ - 147, - 406 - ], - [ - 105, - 421 - ], - [ - 113, - 528 - ], - [ - 172, - 298 - ], - [ - 114, - 313 - ], - [ - 100, - 328 - ], - [ - 150, - 344 - ], - [ - 238, - 390 - ], - [ - 234, - 405 - ], - [ - 138, - 390 - ], - [ - 170, - 405 - ], - [ - 101, - 420 - ], - [ - 142, - 435 - ], - [ - 6, - 481 - ], - [ - 232, - 421 - ], - [ - 237, - 467 - ], - [ - 239, - 391 - ], - [ - 125, - 298 - ], - [ - 116, - 314 - ], - [ - 104, - 329 - ], - [ - 91, - 344 - ], - [ - 88, - 360 - ], - [ - 176, - 359 - ], - [ - 67, - 374 - ], - [ - 61, - 512 - ], - [ - 177, - 497 - ], - [ - 95, - 405 - ], - [ - 132, - 390 - ], - [ - 120, - 375 - ], - [ - 130, - 513 - ], - [ - 94, - 497 - ], - [ - 181, - 284 - ], - [ - 124, - 299 - ], - [ - 152, - 314 - ], - [ - 90, - 482 - ], - [ - 183, - 498 - ], - [ - 241, - 513 - ], - [ - 231, - 437 - ], - [ - 117, - 452 - ], - [ - 126, - 467 - ], - [ - 98, - 329 - ], - [ - 173, - 345 - ], - [ - 169, - 360 - ], - [ - 144, - 375 - ], - [ - 102, - 482 - ], - [ - 233, - 283 - ], - [ - 164, - 299 - ], - [ - 161, - 314 - ], - [ - 141, - 482 - ], - [ - 160, - 498 - ], - [ - 137, - 513 - ], - [ - 182, - 436 - ], - [ - 107, - 452 - ], - [ - 252, - 467 - ], - [ - 203, - 329 - ], - [ - 122, - 345 - ], - [ - 2, - 360 - ], - [ - 112, - 375 - ], - [ - 202, - 482 - ], - [ - 66, - 298 - ], - [ - 247, - 314 - ], - [ - 198, - 329 - ], - [ - 243, - 344 - ], - [ - 72, - 360 - ], - [ - 63, - 404 - ], - [ - 82, - 572 - ], - [ - 244, - 557 - ], - [ - 204, - 541 - ], - [ - 248, - 405 - ], - [ - 249, - 390 - ], - [ - 250, - 375 - ], - [ - 246, - 513 - ], - [ - 135, - 497 - ], - [ - 253, - 342 - ], - [ - 245, - 358 - ], - [ - 65, - 373 - ], - [ - 57, - 388 - ], - [ - 187, - 391 - ], - [ - 251, - 419 - ], - [ - 70, - 434 - ], - [ - 155, - 449 - ], - [ - 154, - 465 - ], - [ - 85, - 480 - ], - [ - 115, - 526 - ], - [ - 60, - 421 - ], - [ - 59, - 467 - ], - [ - 62, - 391 - ], - [ - 186, - 284 - ], - [ - 83, - 299 - ], - [ - 254, - 314 - ], - [ - 166, - 330 - ], - [ - 178, - 345 - ], - [ - 136, - 360 - ], - [ - 184, - 375 - ], - [ - 240, - 406 - ], - [ - 242, - 421 - ], - [ - 188, - 437 - ], - [ - 58, - 452 - ], - [ - 143, - 467 - ], - [ - 235, - 483 - ], - [ - 134, - 495 - ], - [ - 129, - 511 - ], - [ - 145, - 436 - ], - [ - 110, - 451 - ], - [ - 133, - 406 - ], - [ - 168, - 421 - ], - [ - 179, - 528 - ] - ] - module_type: "DecoderICARUSCRT" - } - daqPMT: { - BoardSetup: [ - { - Name: "icaruspmtwwtop01" - SpecialChannels: [ - { - Channel: 24689 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwtop02" - SpecialChannels: [ - { - Channel: 12402 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwtop03" - SpecialChannels: [ - { - Channel: 8307 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwbot01" - SpecialChannels: [ - { - Channel: 24673 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwbot02" - SpecialChannels: [ - { - Channel: 12386 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwwbot03" - SpecialChannels: [ - { - Channel: 8291 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwetop01" - SpecialChannels: [ - { - Channel: 24657 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwetop02" - SpecialChannels: [ - { - Channel: 12370 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwetop03" - SpecialChannels: [ - { - Channel: 8275 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwebot01" - SpecialChannels: [ - { - Channel: 24641 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwebot02" - SpecialChannels: [ - { - Channel: 12354 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtwebot03" - SpecialChannels: [ - { - Channel: 8259 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewtop01" - SpecialChannels: [ - { - Channel: 24625 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewtop02" - SpecialChannels: [ - { - Channel: 12338 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewtop03" - SpecialChannels: [ - { - Channel: 8243 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewbot01" - SpecialChannels: [ - { - Channel: 24609 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewbot02" - SpecialChannels: [ - { - Channel: 12322 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmtewbot03" - SpecialChannels: [ - { - Channel: 8227 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteetop01" - SpecialChannels: [ - { - Channel: 24593 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteetop02" - SpecialChannels: [ - { - Channel: 12306 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteetop03" - SpecialChannels: [ - { - Channel: 8211 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteebot01" - SpecialChannels: [ - { - Channel: 24577 - ChannelIndex: 15 - InstanceName: "globtrg" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteebot02" - SpecialChannels: [ - { - Channel: 12290 - ChannelIndex: 15 - InstanceName: "EW" - OnlyOnGlobalTrigger: true - } - ] - }, - { - Name: "icaruspmteebot03" - SpecialChannels: [ - { - Channel: 8195 - ChannelIndex: 15 - InstanceName: "RWM" - OnlyOnGlobalTrigger: true - } - ] - } - ] - CorrectionInstance: "globtrg" - FragmentsLabels: [ - "daq:CAENV1730", - "daq:ContainerCAENV1730" - ] - PMTconfigTag: "pmtconfig" - TriggerTag: "daqTrigger" - module_type: "DaqDecoderICARUSPMT" - } - daqPMTonbeam: { - SelectInterval: { - Duration: "26 us" - Start: "-7 us" - } - TimeReference: "BeamGate" - WaveformBaselineAssns: "pmtbaselines" - Waveforms: "daqPMT" - module_type: "CopyBeamTimePMTwaveforms" - } - daqTPC: { - DecoderTool: { - CoherentGrouping: 32 - FFTCutoffVals: [ - [ - 8, - 800 - ], - [ - 8, - 800 - ], - [ - 3, - 800 - ] - ] - FFTSigmaVals: [ - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ], - [ - 2, - 20 - ] - ] - FilterModeVec: [ - "e", - "g", - "d" - ] - FilterWindow: 10 - FragmentIDMap: [ - [ - 0, - 5132 - ], - [ - 1, - 5134 - ], - [ - 2, - 5136 - ], - [ - 6, - 5140 - ], - [ - 8, - 5390 - ], - [ - 9, - 5392 - ] - ] - NSigmaForTrucation: 3.5 - StructuringElement: 16 - Threshold: [ - 2.75, - 2.75, - 2.75 - ] - UseFFTFilter: false - fragment_id_offset: 0 - tool_type: "TPCDecoderFilter1D" - } - DiagnosticOutput: false - FragmentsLabel: "daq:PHYSCRATEDATA" - FragmentsLabelVec: [ - "daq:PHYSCRATEDATATPCWW", - "daq:PHYSCRATEDATATPCWE", - "daq:PHYSCRATEDATATPCEW", - "daq:PHYSCRATEDATATPCEE" - ] - OutputCoherentPath: "Cor" - OutputCorrection: false - OutputRawWavePath: "RAW" - OutputRawWaveform: false - module_type: "DaqDecoderICARUSTPC" - } - daqTPCROI: { - CoherentGrouping: 64 - DecoderTool: { - DenoiserType: "default" - FFTCutoffVals: [ - [ - 8, - 800 - ], - [ - 8, - 800 - ], - [ - 4, - 800 - ] - ] - FFTSigmaVals: [ - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ], - [ - 1.5, - 20 - ] - ] - FilterModeVec: [ - "e", - "g", - "d" - ] - FilterWindow: 10 - FragmentIDMap: [ - [ - 0, - 5132 - ], - [ - 1, - 5134 - ], - [ - 2, - 5136 - ], - [ - 6, - 5140 - ], - [ - 8, - 5390 - ], - [ - 9, - 5392 - ] - ] - LowFreqCorrection: true - NSigmaForTrucation: 3.5 - StructuringElement: 16 - Threshold: [ - 1, - 1, - 1 - ] - UseFFTFilter: false - fragment_id_offset: 0 - tool_type: "TPCNoiseFilter1D" - } - DiagnosticOutput: false - FragmentsLabelVec: [ - "daq:PHYSCRATEDATATPCWW", - "daq:PHYSCRATEDATATPCWE", - "daq:PHYSCRATEDATATPCEW", - "daq:PHYSCRATEDATATPCEE" - ] - OutputCoherentPath: "Cor" - OutputCorrection: false - OutputRawWavePath: "RAW" - OutputRawWaveform: false - module_type: "DaqDecoderICARUSTPCwROI" - } - daqTrigger: { - DecoderTool: { - Decoders: [ - { - FragmentsLabel: "daq:ICARUSTriggerUDP" - Generator: "ICARUSTriggerUDP" - ToolConfig: { - TrigConfigLabel: "triggerconfig" - tool_type: "TriggerDecoder" - } - }, - { - FragmentsLabel: "daq:ICARUSTriggerV2" - Generator: "ICARUSTriggerV2" - ToolConfig: { - TrigConfigLabel: "triggerconfig" - tool_type: "TriggerDecoderV2" - } - }, - { - FragmentsLabel: "daq:ICARUSTriggerV3" - Generator: "ICARUSTriggerV3" - ToolConfig: { - TrigConfigLabel: "triggerconfig" - tool_type: "TriggerDecoderV3" - } - } - ] - TrigConfigLabel: "triggerconfig" - tool_type: "TriggerDecoderDispatcher" - } - FragmentsLabel: "" - module_type: "DaqDecoderICARUSTrigger" - } - decon1droi: { - Baseline: { - MaxROILength: 100 - tool_type: "icaruscode/TPC/SignalProcessing/RecoWire/DeconTools/BaselineMostProbAve" - } - Deconvolution: { - Baseline: { - MaxROILength: 100 - tool_type: "icaruscode/TPC/SignalProcessing/RecoWire/DeconTools/BaselineMostProbAve" - } - DoBaselineSub: true - DodQdxCalib: false - MinROIAverageTickThreshold: -5e-1 - dQdxCalibFileName: "dQdxCalibrationPlanev1.txt" - tool_type: "FullWireDeconvolution" - } - MinAllowedChannelStatus: 3 - NoiseSource: 3 - OutputHistograms: false - ROIFinderToolVec: { - ROIFinderToolPlane0: { - Plane: 0 - roiLeadTrailPad: [ - 2000, - 2000 - ] - tool_type: "ROIFinderNOP" - } - ROIFinderToolPlane1: { - Plane: 1 - roiLeadTrailPad: [ - 2000, - 2000 - ] - tool_type: "ROIFinderNOP" - } - ROIFinderToolPlane2: { - Plane: 2 - roiLeadTrailPad: [ - 2000, - 2000 - ] - tool_type: "ROIFinderNOP" - } - } - RawDigitLabelVec: [ - "MCDecodeTPCROI:PHYSCRATEDATATPCWW", - "MCDecodeTPCROI:PHYSCRATEDATATPCWE", - "MCDecodeTPCROI:PHYSCRATEDATATPCEW", - "MCDecodeTPCROI:PHYSCRATEDATATPCEE" - ] - SaveWireWF: 0 - TruncRMSMinFraction: 6e-1 - TruncRMSThreshold: 6 - module_type: "Decon1DROI" - } - decon2droi: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc0" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver0" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "daqTPC" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 0 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft" - ] - tool_type: "WCLS" - } - } - decon2droiEE: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc0" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver0" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEE" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 0 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - Gaus_wide_sigma: 1.2e-1 - Wiener_tight_U_power: 3.76194 - Wiener_tight_U_sigma: 1.48788e-1 - Wiener_tight_V_power: 4.36125 - Wiener_tight_V_sigma: 1.596568e-1 - Wiener_tight_W_power: 3.35324 - Wiener_tight_W_sigma: 1.3623e-1 - Wire_col_sigma: 3 - Wire_ind_sigma: 7.5e-1 - gain0: 1.19918701e1 - gain1: 1.21420344e1 - gain2: 1.30261362e1 - shaping0: 1.3 - shaping1: 1.45 - shaping2: 1.3 - } - tool_type: "WCLS" - } - } - decon2droiEW: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc1" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver1" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEW" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 1 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - Gaus_wide_sigma: 1.2e-1 - Wiener_tight_U_power: 3.76194 - Wiener_tight_U_sigma: 1.48788e-1 - Wiener_tight_V_power: 4.36125 - Wiener_tight_V_sigma: 1.596568e-1 - Wiener_tight_W_power: 3.35324 - Wiener_tight_W_sigma: 1.3623e-1 - Wire_col_sigma: 3 - Wire_ind_sigma: 7.5e-1 - gain0: 1.19918701e1 - gain1: 1.21420344e1 - gain2: 1.30261362e1 - shaping0: 1.3 - shaping1: 1.45 - shaping2: 1.3 - } - tool_type: "WCLS" - } - } - decon2droiWE: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc2" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver2" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWE" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 2 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - Gaus_wide_sigma: 1.2e-1 - Wiener_tight_U_power: 3.76194 - Wiener_tight_U_sigma: 1.48788e-1 - Wiener_tight_V_power: 4.36125 - Wiener_tight_V_sigma: 1.596568e-1 - Wiener_tight_W_power: 3.35324 - Wiener_tight_W_sigma: 1.3623e-1 - Wire_col_sigma: 3 - Wire_ind_sigma: 7.5e-1 - gain0: 1.19918701e1 - gain1: 1.21420344e1 - gain2: 1.30261362e1 - shaping0: 1.3 - shaping1: 1.45 - shaping2: 1.3 - } - tool_type: "WCLS" - } - } - decon2droiWW: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-decode-to-sig.jsonnet" - ] - inputers: [ - "wclsRawFrameSource:rfsrc3" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsFrameSaver:spsaver3" - ] - params: { - epoch: "after" - file_rcresp: "icarus_fnal_rc_tail.json" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWW" - reality: "data" - signal_output_form: "dense" - tpc_volume_label: 3 - } - plugins: [ - "WireCellGen", - "WireCellSigProc", - "WireCellRoot", - "WireCellPgraph", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - Gaus_wide_sigma: 1.2e-1 - Wiener_tight_U_power: 3.76194 - Wiener_tight_U_sigma: 1.48788e-1 - Wiener_tight_V_power: 4.36125 - Wiener_tight_V_sigma: 1.596568e-1 - Wiener_tight_W_power: 3.35324 - Wiener_tight_W_sigma: 1.3623e-1 - Wire_col_sigma: 3 - Wire_ind_sigma: 7.5e-1 - gain0: 1.19918701e1 - gain1: 1.21420344e1 - gain2: 1.30261362e1 - shaping0: 1.3 - shaping1: 1.45 - shaping2: 1.3 - } - tool_type: "WCLS" - } - } - emuTrigger: { - BeamGates: "triggersimgates" - EmitEmpty: true - ExtraInfo: true - Pattern: { - inMainWindow: 3 - sumOfOppositeWindows: 5 - } - Thresholds: [ - 400 - ] - TriggerGatesTag: "pmttriggerwindows" - TriggerTimeResolution: "8 ns" - module_type: "TriggerSimulationOnGates" - } - gaushit1dTPCEE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit1dTPCEW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCEW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit1dTPCWE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCWE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit1dTPCWW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder1d:PHYSCRATEDATATPCWW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit2dTPCEE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "decon2droiEE:gauss" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit2dTPCEW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "decon2droiEW:gauss" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit2dTPCWE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "decon2droiWE:gauss" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gaushit2dTPCWW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "decon2droiWW:gauss" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 9.5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 9 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - module_type: "GausHitFinder" - } - gausshitTPCEE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - gaushit2dTPCWW: { - HitFinderToolVec: { - CandidateHitsPlane0: { - RoiThreshold: 9 - } - } - } - module_type: "GaussHitFinderICARUS" - } - gausshitTPCEW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - gaushit2dTPCWW: { - HitFinderToolVec: { - CandidateHitsPlane0: { - RoiThreshold: 9 - } - } - } - module_type: "GaussHitFinderICARUS" - } - gausshitTPCWE: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWE" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - gaushit2dTPCWW: { - HitFinderToolVec: { - CandidateHitsPlane0: { - RoiThreshold: 9 - } - } - } - module_type: "GaussHitFinderICARUS" - } - gausshitTPCWW: { - AllHitsInstanceName: "" - AreaMethod: 0 - AreaNorms: [ - 1, - 1, - 1 - ] - CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWW" - Chi2NDF: 500 - FilterHits: false - HitFilterAlg: { - AlgName: "HitFilterAlg" - MinPulseHeight: [ - 5, - 5, - 5 - ] - MinPulseSigma: [ - 1, - 1, - 1 - ] - } - HitFinderToolVec: { - CandidateHitsPlane0: { - Plane: 0 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane1: { - Plane: 1 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - CandidateHitsPlane2: { - Plane: 2 - RoiThreshold: 5 - tool_type: "CandHitStandard" - } - } - LongMaxHits: [ - 25, - 25, - 25 - ] - LongPulseWidth: [ - 10, - 10, - 10 - ] - MaxMultiHit: 5 - PeakFitter: { - FloatBaseline: false - MaxWidthMult: 3 - MinWidth: 1 - PeakAmpRange: 2 - PeakRangeFact: 2 - Refit: false - RefitImprovement: 2 - RefitThreshold: 40 - tool_type: "PeakFitterMrqdt" - } - PulseHeightCuts: [ - 3, - 3, - 3 - ] - PulseRatioCuts: [ - 3.5e-1, - 4e-1, - 2e-1 - ] - PulseWidthCuts: [ - 2, - 1.5, - 1 - ] - TryNplus1Fits: false - gaushit2dTPCWW: { - HitFinderToolVec: { - CandidateHitsPlane0: { - RoiThreshold: 9 - } - } - } - module_type: "GaussHitFinderICARUS" - } - mcophit: { - MergePeriod: 1e-2 - SPEAmplitude: 2.64258e1 - SPEArea: 2.56658e2 - SimPhotonsProducer: "largeant" - module_type: "ICARUSMCOpHit" - } - opdetonbeam: { - SelectInterval: { - Duration: "26 us" - Start: "-7 us" - } - TimeReference: "BeamGate" - WaveformBaselineAssns: "pmtbaselines" - Waveforms: "opdaq" - module_type: "CopyBeamTimePMTwaveforms" - } - opflashCryoE: { - AlgoConfig: { - DebugMode: false - HitVetoRangeEnd: [] - HitVetoRangeStart: [] - IntegralTime: 1 - MinMultCoinc: 5 - MinPECoinc: 100 - OpChannelRange: [ - 0, - 179 - ] - PEThreshold: 100 - PEThresholdHit: 1 - PreSample: 2e-2 - TimeResolution: 1e-2 - VetoSize: 1 - } - FlashFinderAlgo: "SimpleFlashAlgo" - OpHitProducer: "ophit" - PECalib: { - SPEAreaGain: 2.56658e2 - } - module_type: "ICARUSFlashFinder" - } - opflashCryoW: { - AlgoConfig: { - DebugMode: false - HitVetoRangeEnd: [] - HitVetoRangeStart: [] - IntegralTime: 1 - MinMultCoinc: 5 - MinPECoinc: 100 - OpChannelRange: [ - 180, - 359 - ] - PEThreshold: 100 - PEThresholdHit: 1 - PreSample: 2e-2 - TimeResolution: 1e-2 - VetoSize: 1 - } - FlashFinderAlgo: "SimpleFlashAlgo" - OpHitProducer: "ophit" - PECalib: { - SPEAreaGain: 2.56658e2 - } - module_type: "ICARUSFlashFinder" - } - ophit: { - AreaToPE: true - ChannelMasks: [] - GenModule: "generator" - HitAlgoPset: { - ADCThreshold: 10 - EndADCThreshold: 2 - EndNSigmaThreshold: 1 - MinPulseWidth: 5 - NSigmaThreshold: 3 - Name: "SlidingWindow" - NumPostSample: 10 - NumPreSample: 5 - PositivePolarity: false - TailADCThreshold: 6 - TailNSigmaThreshold: 2 - Verbosity: false - } - HitThreshold: 2e-1 - InputLabels: [] - InputModule: "opdaq" - PedAlgoPset: { - DiffADCCounts: 2 - DiffBetweenGapsThreshold: 2 - MaxSigma: 5 - NPrePostSamples: 5 - Name: "RollingMean" - PedRangeMax: 16000 - PedRangeMin: 14000 - SampleSize: 20 - Threshold: 1.5 - } - RiseTimeCalculator: { - PeakRatio: 1.5e-1 - tool_type: "RiseTimeThreshold" - } - SPEArea: 2.56658e2 - SPEShift: 0 - UseStartTime: false - module_type: "OpHitFinder" - reco_man: { - module_type: "PulseRecoManager" - } - } - ophitfull: { - CorrectCosmics: true - CorrectLaser: true - InputLabels: [ - "ophitfulluncorrected" - ] - Verbose: false - module_type: "OpHitTimingCorrection" - } - ophitfulluncorrected: { - AreaToPE: true - ChannelMasks: [] - GenModule: "generator" - HitAlgoPset: { - ADCThreshold: 10 - EndADCThreshold: 2 - EndNSigmaThreshold: 1 - MinPulseWidth: 5 - NSigmaThreshold: 3 - Name: "SlidingWindow" - NumPostSample: 10 - NumPreSample: 5 - PositivePolarity: false - TailADCThreshold: 6 - TailNSigmaThreshold: 2 - Verbosity: false - } - HitThreshold: 2e-1 - InputLabels: [] - InputModule: "daqPMT" - OutputFile: "ophit_debug.root" - PedAlgoPset: { - DiffADCCounts: 2 - DiffBetweenGapsThreshold: 2 - MaxSigma: 5 - NPrePostSamples: 5 - Name: "RollingMean" - PedRangeMax: 16000 - PedRangeMin: 14000 - SampleSize: 20 - Threshold: 1.5 - } - RiseTimeCalculator: { - PeakRatio: 1.5e-1 - tool_type: "RiseTimeThreshold" - } - SPEArea: 2.56658e2 - SPEShift: 0 - UseStartTime: false - module_type: "FullOpHitFinder" - reco_man: { - module_type: "PulseRecoManager" - } - } - ophituncorrected: { - AreaToPE: true - ChannelMasks: [] - GenModule: "generator" - HitAlgoPset: { - ADCThreshold: 10 - EndADCThreshold: 2 - EndNSigmaThreshold: 1 - MinPulseWidth: 5 - NSigmaThreshold: 3 - Name: "SlidingWindow" - NumPostSample: 10 - NumPreSample: 5 - PositivePolarity: false - TailADCThreshold: 6 - TailNSigmaThreshold: 2 - Verbosity: false - } - HitThreshold: 2e-1 - InputLabels: [] - InputModule: "daqPMT" - PedAlgoPset: { - DiffADCCounts: 2 - DiffBetweenGapsThreshold: 2 - MaxSigma: 5 - NPrePostSamples: 5 - Name: "RollingMean" - PedRangeMax: 16000 - PedRangeMin: 14000 - SampleSize: 20 - Threshold: 1.5 - } - RiseTimeCalculator: { - PeakRatio: 1.5e-1 - tool_type: "RiseTimeThreshold" - } - SPEArea: 2.56658e2 - SPEShift: 0 - UseStartTime: false - module_type: "OpHitFinder" - reco_man: { - module_type: "PulseRecoManager" - } - } - pmtbaselines: { - AlgoParams: { - AcceptedSampleRangeRMS: 5 - ExcessSampleLimit: 4 - } - ExcludeSpillTimeIfMoreThan: 8 - OpticalWaveforms: "opdaq" - PlotBaselines: false - PretriggerBufferFractionForBaseline: 5e-1 - PretriggerBufferSize: 500 - module_type: "PMTWaveformBaselinesFromChannelData" - } - pmtconfig: { - AssignOfflineChannelIDs: true - module_type: "PMTconfigurationExtraction" - } - pmtconfigbaselines: { - OpticalWaveforms: "daqPMT" - OutputCategory: "PMTWaveformBaselines" - PMTconfigurationTag: "pmtconfig" - PlotBaselines: false - PrintBaselines: false - module_type: "PMTWaveformBaselinesFromReadoutConfiguration" - } - pmtfixedthr: { - Baseline: 1.49995e4 - NChannels: 360 - OpticalWaveforms: "opdaq" - OutputCategory: "DiscriminatePMTwaveforms" - TriggerGateBuilder: { - ChannelThresholds: [ - 18, - 300, - 400, - 600 - ] - GateDuration: "160 ns" - tool_type: "FixedTriggerGateBuilderTool" - } - module_type: "DiscriminatePMTwaveforms" - } - pmtlvdsgates: { - ChannelPairing: [ - [ - 0, - 2 - ], - [ - 1, - 4 - ], - [ - 3, - 6 - ], - [ - 5, - 8 - ], - [ - 7, - 9 - ], - [ - 10, - 12 - ], - [ - 11, - 14 - ], - [ - 13 - ], - [ - 15, - 18 - ], - [ - 16 - ], - [ - 17, - 19 - ], - [ - 20, - 22 - ], - [ - 21, - 24 - ], - [ - 23, - 26 - ], - [ - 25, - 28 - ], - [ - 27, - 29 - ], - [ - 30, - 32 - ], - [ - 31, - 34 - ], - [ - 33, - 36 - ], - [ - 35, - 38 - ], - [ - 37, - 39 - ], - [ - 40, - 42 - ], - [ - 41, - 44 - ], - [ - 43 - ], - [ - 45, - 48 - ], - [ - 46 - ], - [ - 47, - 49 - ], - [ - 50, - 52 - ], - [ - 51, - 54 - ], - [ - 53, - 56 - ], - [ - 55, - 58 - ], - [ - 57, - 59 - ], - [ - 60, - 62 - ], - [ - 61, - 64 - ], - [ - 63, - 66 - ], - [ - 65, - 68 - ], - [ - 67, - 69 - ], - [ - 70, - 72 - ], - [ - 71, - 74 - ], - [ - 73 - ], - [ - 75, - 78 - ], - [ - 76 - ], - [ - 77, - 79 - ], - [ - 80, - 82 - ], - [ - 81, - 84 - ], - [ - 83, - 86 - ], - [ - 85, - 88 - ], - [ - 87, - 89 - ], - [ - 90, - 92 - ], - [ - 91, - 94 - ], - [ - 93, - 96 - ], - [ - 95, - 98 - ], - [ - 97, - 99 - ], - [ - 100, - 102 - ], - [ - 101, - 104 - ], - [ - 103 - ], - [ - 105, - 108 - ], - [ - 106 - ], - [ - 107, - 109 - ], - [ - 110, - 112 - ], - [ - 111, - 114 - ], - [ - 113, - 116 - ], - [ - 115, - 118 - ], - [ - 117, - 119 - ], - [ - 120, - 122 - ], - [ - 121, - 124 - ], - [ - 123, - 126 - ], - [ - 125, - 128 - ], - [ - 127, - 129 - ], - [ - 130, - 132 - ], - [ - 131, - 134 - ], - [ - 133 - ], - [ - 135, - 138 - ], - [ - 136 - ], - [ - 137, - 139 - ], - [ - 140, - 142 - ], - [ - 141, - 144 - ], - [ - 143, - 146 - ], - [ - 145, - 148 - ], - [ - 147, - 149 - ], - [ - 150, - 152 - ], - [ - 151, - 154 - ], - [ - 153, - 156 - ], - [ - 155, - 158 - ], - [ - 157, - 159 - ], - [ - 160, - 162 - ], - [ - 161, - 164 - ], - [ - 163 - ], - [ - 165, - 168 - ], - [ - 166 - ], - [ - 167, - 169 - ], - [ - 170, - 172 - ], - [ - 171, - 174 - ], - [ - 173, - 176 - ], - [ - 175, - 178 - ], - [ - 177, - 179 - ], - [ - 180, - 182 - ], - [ - 181, - 184 - ], - [ - 183, - 186 - ], - [ - 185, - 188 - ], - [ - 187, - 189 - ], - [ - 190, - 192 - ], - [ - 191, - 194 - ], - [ - 193 - ], - [ - 195, - 198 - ], - [ - 196 - ], - [ - 197, - 199 - ], - [ - 200, - 202 - ], - [ - 201, - 204 - ], - [ - 203, - 206 - ], - [ - 205, - 208 - ], - [ - 207, - 209 - ], - [ - 210, - 212 - ], - [ - 211, - 214 - ], - [ - 213, - 216 - ], - [ - 215, - 218 - ], - [ - 217, - 219 - ], - [ - 220, - 222 - ], - [ - 221, - 224 - ], - [ - 223 - ], - [ - 225, - 228 - ], - [ - 226 - ], - [ - 227, - 229 - ], - [ - 230, - 232 - ], - [ - 231, - 234 - ], - [ - 233, - 236 - ], - [ - 235, - 238 - ], - [ - 237, - 239 - ], - [ - 240, - 242 - ], - [ - 241, - 244 - ], - [ - 243, - 246 - ], - [ - 245, - 248 - ], - [ - 247, - 249 - ], - [ - 250, - 252 - ], - [ - 251, - 254 - ], - [ - 253 - ], - [ - 255, - 258 - ], - [ - 256 - ], - [ - 257, - 259 - ], - [ - 260, - 262 - ], - [ - 261, - 264 - ], - [ - 263, - 266 - ], - [ - 265, - 268 - ], - [ - 267, - 269 - ], - [ - 270, - 272 - ], - [ - 271, - 274 - ], - [ - 273, - 276 - ], - [ - 275, - 278 - ], - [ - 277, - 279 - ], - [ - 280, - 282 - ], - [ - 281, - 284 - ], - [ - 283 - ], - [ - 285, - 288 - ], - [ - 286 - ], - [ - 287, - 289 - ], - [ - 290, - 292 - ], - [ - 291, - 294 - ], - [ - 293, - 296 - ], - [ - 295, - 298 - ], - [ - 297, - 299 - ], - [ - 300, - 302 - ], - [ - 301, - 304 - ], - [ - 303, - 306 - ], - [ - 305, - 308 - ], - [ - 307, - 309 - ], - [ - 310, - 312 - ], - [ - 311, - 314 - ], - [ - 313 - ], - [ - 315, - 318 - ], - [ - 316 - ], - [ - 317, - 319 - ], - [ - 320, - 322 - ], - [ - 321, - 324 - ], - [ - 323, - 326 - ], - [ - 325, - 328 - ], - [ - 327, - 329 - ], - [ - 330, - 332 - ], - [ - 331, - 334 - ], - [ - 333, - 336 - ], - [ - 335, - 338 - ], - [ - 337, - 339 - ], - [ - 340, - 342 - ], - [ - 341, - 344 - ], - [ - 343 - ], - [ - 345, - 348 - ], - [ - 346 - ], - [ - 347, - 349 - ], - [ - 350, - 352 - ], - [ - 351, - 354 - ], - [ - 353, - 356 - ], - [ - 355, - 358 - ], - [ - 357, - 359 - ] - ] - CombinationMode: "OR" - IgnoreChannels: [ - 70, - 106, - 217, - 54, - 58, - 67, - 98, - 112, - 153, - 254 - ] - LogCategory: "LVDSgates" - Thresholds: [ - 400 - ] - TriggerGatesTag: "pmtfixedthr" - module_type: "LVDSgates" - } - pmtthr: { - Baselines: "pmtconfigbaselines" - NChannels: 360 - OpticalWaveforms: "daqPMT" - OutputCategory: "DiscriminatePMTwaveforms" - ThresholdsFromPMTconfig: "pmtconfig" - TriggerGateBuilder: { - ChannelThresholds: [ - 0 - ] - GateDuration: "160 ns" - tool_type: "FixedTriggerGateBuilderTool" - } - module_type: "DiscriminatePMTwaveformsByChannel" - } - pmttriggerwindows: { - MissingChannels: [ - 70, - 106, - 217, - 54, - 58, - 67, - 98, - 112, - 153, - 254 - ] - Stride: 15 - Thresholds: [ - 400 - ] - TriggerGatesTag: "pmtlvdsgates" - WindowSize: 30 - module_type: "SlidingWindowTrigger" - } - purityana0: { - CryostatFCL: 0 - FillAnaTuple: false - PersistPurityInfo: false - PlaneFCL: 2 - RawModuleLabel: [ - "daqTPCROI:PHYSCRATEDATATPCWW", - "daqTPCROI:PHYSCRATEDATATPCWE", - "daqTPCROI:PHYSCRATEDATATPCEW", - "daqTPCROI:PHYSCRATEDATATPCEE" - ] - ThresholdFCL: 3 - ValoreTauFCL: 600000 - module_type: "ICARUSPurityDQM" - } - purityana1: { - CryostatFCL: 1 - FillAnaTuple: false - PersistPurityInfo: false - PlaneFCL: 2 - RawModuleLabel: [ - "daqTPCROI:PHYSCRATEDATATPCWW", - "daqTPCROI:PHYSCRATEDATATPCWE", - "daqTPCROI:PHYSCRATEDATATPCEW", - "daqTPCROI:PHYSCRATEDATATPCEE" - ] - ThresholdFCL: 3 - ValoreTauFCL: 600000 - module_type: "ICARUSPurityDQM" - } - roifinder1d: { - CorrectROIBaseline: false - DaignosticOutput: false - LeadTrail: 0 - MaxSizeForCorrection: 512 - MinSizeForCorrection: 12 - OutInstanceLabelVec: [ - "PHYSCRATEDATATPCWW", - "PHYSCRATEDATATPCWE", - "PHYSCRATEDATATPCEW", - "PHYSCRATEDATATPCEE" - ] - OutputHistograms: false - OutputMorphed: false - ROIFinderToolVec: { - ROIFinderPlane0: { - Plane: 0 - StructuringElement: [ - 25, - 5 - ] - Threshold: [ - 7.5, - 7.5, - 6 - ] - tool_type: "ROIMorphological2D" - } - ROIFinderPlane1: { - Plane: 1 - StructuringElement: [ - 25, - 5 - ] - Threshold: [ - 7.5, - 7.5, - 6 - ] - tool_type: "ROIMorphological2D" - } - ROIFinderPlane2: { - Plane: 2 - StructuringElement: [ - 25, - 5 - ] - Threshold: [ - 7.5, - 7.5, - 6 - ] - tool_type: "ROIMorphological2D" - } - } - WireModuleLabelVec: [ - "decon1droi:PHYSCRATEDATATPCWW", - "decon1droi:PHYSCRATEDATATPCWE", - "decon1droi:PHYSCRATEDATATPCEW", - "decon1droi:PHYSCRATEDATATPCEE" - ] - module_type: "ROIFinder" - } - roifinder2d: { - CorrectROIBaseline: false - DaignosticOutput: false - LeadTrail: 0 - MaxSizeForCorrection: 512 - MinSizeForCorrection: 12 - OutInstanceLabelVec: [ - "PHYSCRATEDATATPCWW", - "PHYSCRATEDATATPCWE", - "PHYSCRATEDATATPCEW", - "PHYSCRATEDATATPCEE" - ] - OutputHistograms: false - OutputMorphed: false - ROIFinderToolVec: { - ROIFinderPlane0: { - Plane: 0 - ROILabelVec: [ - "roifinder1d:PHYSCRATEDATATPCWW", - "roifinder1d:PHYSCRATEDATATPCWE", - "roifinder1d:PHYSCRATEDATATPCEW", - "roifinder1d:PHYSCRATEDATATPCEE" - ] - tool_type: "ROIFromDecoder" - } - ROIFinderPlane1: { - Plane: 1 - ROILabelVec: [ - "roifinder1d:PHYSCRATEDATATPCWW", - "roifinder1d:PHYSCRATEDATATPCWE", - "roifinder1d:PHYSCRATEDATATPCEW", - "roifinder1d:PHYSCRATEDATATPCEE" - ] - tool_type: "ROIFromDecoder" - } - ROIFinderPlane2: { - Plane: 2 - ROILabelVec: [ - "roifinder1d:PHYSCRATEDATATPCWW", - "roifinder1d:PHYSCRATEDATATPCWE", - "roifinder1d:PHYSCRATEDATATPCEW", - "roifinder1d:PHYSCRATEDATATPCEE" - ] - tool_type: "ROIFromDecoder" - } - } - WireModuleLabelVec: [ - "decon2droiWW:looseLf", - "decon2droiWE:looseLf", - "decon2droiEW:looseLf", - "decon2droiEE:looseLf" - ] - module_type: "ROIFinder" - } - simChannelROI: { - DaignosticOutput: false - OutInstanceLabelVec: [ - "PHYSCRATEDATA" - ] - WireModuleLabelVec: [ - "largeant" - ] - module_type: "SimChannelROI" - } - triggerconfig: { - module_type: "TriggerConfigurationExtraction" - } - triggersimgates: { - BeamGateTag: "beamgate" - Changes: [ - { - Select: { - Types: [ - "BNB" - ] - } - Start: { - SetTo: "-0.2 us" - } - Width: { - Add: "0.5 us" - SetTo: "1.6 us" - } - }, - { - Select: { - Types: [ - "NuMI" - ] - } - Start: { - SetTo: "-0.2 us" - } - Width: { - Add: "0.6 us" - SetTo: "9.5 us" - } - } - ] - module_type: "FixBeamGateInfo" - } - } - streamROOT: [ - "rootOutput" - ] - trigger_paths: [ - "path" - ] -} -process_name: "MCstage0W" -services: { - BackTrackerService: { - BackTracker: { - G4ModuleLabel: "largeant" - MinimumHitEnergyFraction: 1e-1 - SimChannelModuleLabel: "largeant" - } - } - ChannelStatusService: { - ChannelStatusProvider: { - AlgName: "SIOVChannelStatusProvider" - DatabaseRetrievalAlg: { - AlgName: "DatabaseRetrievalAlg" - DBFolderName: "tpc_channelstatus_data" - DBTag: "v3r2" - DBUrl: "https://dbdata0vm.fnal.gov:9443/icarus_con_prod/app/" - UseSQLite: true - } - UseDB: true - UseFile: false - } - service_provider: "SIOVChannelStatusICARUSService" - } - DetPedestalService: { - DetPedestalRetrievalAlg: { - AlgName: "DetPedestalRetrievalAlg" - DatabaseRetrievalAlg: { - AlgName: "DatabaseRetrievalAlg" - DBFolderName: "" - DBTag: "" - DBUrl: "" - } - DefaultCollMean: 400 - DefaultCollRms: 3e-1 - DefaultIndMean: 2048 - DefaultIndRms: 3e-1 - DefaultMeanErr: 0 - DefaultRmsErr: 0 - UseDB: false - UseFile: false - } - service_provider: "SIOVDetPedestalService" - } - DetectorClocksService: { - ClockSpeedExternal: 3.125e1 - ClockSpeedOptical: 500 - ClockSpeedTPC: 2.5 - ClockSpeedTrigger: 16 - DefaultBeamTime: 1500 - DefaultTrigTime: 1500 - FramePeriod: 1.6384e3 - G4RefTime: -1500 - InheritClockConfig: true - TrigModuleName: "daqTrigger" - TriggerOffsetTPC: -340 - service_provider: "DetectorClocksServiceStandard" - } - DetectorPropertiesService: { - DriftVelFudgeFactor: 9.9733e-1 - Efield: [ - 4.938e-1, - 7.33e-1, - 9.33e-1 - ] - Electronlifetime: 3000 - ElectronsToADC: 1.208041e-3 - IncludeInterPlanePitchInXTickOffsets: false - InheritNumberTimeSamples: true - NumberTimeSamples: 4096 - ReadOutWindowSize: 4096 - SimpleBoundaryProcess: false - SternheimerA: 1.956e-1 - SternheimerCbar: 5.2146 - SternheimerK: 3 - SternheimerX0: 2e-1 - SternheimerX1: 3 - Temperature: 8.75e1 - TimeOffsetU: 0 - TimeOffsetV: 0 - TimeOffsetY: 0 - TimeOffsetZ: 0 - UseIcarusMicrobooneDriftModel: true - service_provider: "DetectorPropertiesServiceStandard" - } - DuplicateEventTracker: {} - ExptGeoHelperInterface: { - Mapper: { - WirelessChannels: { - CollectionEvenPostChannels: 96 - CollectionEvenPreChannels: 64 - CollectionOddPostChannels: 64 - CollectionOddPreChannels: 96 - FirstInductionPostChannels: 96 - FirstInductionPreChannels: 0 - SecondInductionEvenPostChannels: 64 - SecondInductionEvenPreChannels: 96 - SecondInductionOddPostChannels: 96 - SecondInductionOddPreChannels: 64 - } - tool_type: "ICARUSsplitInductionChannelMapSetupTool" - } - service_provider: "IcarusGeometryHelper" - } - FileCatalogMetadata: { - fileType: "mc" - group: "icarus" - runType: "physics" - } - Geometry: { - ChannelMapping: { - WirelessChannels: { - CollectionEvenPostChannels: 96 - CollectionEvenPreChannels: 64 - CollectionOddPostChannels: 64 - CollectionOddPreChannels: 96 - FirstInductionPostChannels: 96 - FirstInductionPreChannels: 0 - SecondInductionEvenPostChannels: 64 - SecondInductionEvenPreChannels: 96 - SecondInductionOddPostChannels: 96 - SecondInductionOddPreChannels: 64 - } - tool_type: "ICARUSsplitInductionChannelMapSetupTool" - } - DisableWiresInG4: true - GDML: "icarus_refactored_nounderscore_20230918.gdml" - Name: "icarus_v4" - ROOT: "icarus_refactored_nounderscore_20230918.gdml" - SurfaceY: 690 - } - GeometryConfigurationWriter: {} - IICARUSChannelMap: { - ChannelMappingTool: { - CalibDBFileName: "crt_gain_reco_data" - DBFileName: "ChannelMapICARUS_20240318.db" - Tag: "v1r0" - } - DiagnosticOutput: false - service_provider: "ICARUSChannelMapSQLite" - } - IPMTTimingCorrectionService: { - CorrectionTags: { - CablesTag: "v2r4" - CosmicsTag: "v2r1" - LaserTag: "v2r2" - } - Verbose: false - service_provider: "PMTTimingCorrectionService" - } - LArPropertiesService: { - AbsLengthEnergies: [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ] - AbsLengthSpectrum: [ - 8000, - 8000, - 8000, - 8000, - 8000, - 2000, - 2000, - 2000 - ] - AlphaScintYield: 16800 - AlphaScintYieldRatio: 5.6e-1 - Argon39DecayRate: 0 - AtomicMass: 3.9948e1 - AtomicNumber: 18 - ElectronScintYield: 20000 - ElectronScintYieldRatio: 2.7e-1 - EnableCerenkovLight: false - ExcitationEnergy: 188 - FastScintEnergies: [ - 7.2, - 7.9, - 8.3, - 8.6, - 8.9, - 9.1, - 9.3, - 9.6, - 9.7, - 9.8, - 10, - 1.02e1, - 1.03e1, - 1.06e1, - 11, - 1.16e1, - 1.19e1 - ] - FastScintSpectrum: [ - 0, - 4e-2, - 1.2e-1, - 2.7e-1, - 4.4e-1, - 6.2e-1, - 8e-1, - 9.1e-1, - 9.2e-1, - 8.5e-1, - 7e-1, - 5e-1, - 3.1e-1, - 1.3e-1, - 4e-2, - 1e-2, - 0 - ] - KaonScintYield: 24000 - KaonScintYieldRatio: 2.3e-1 - LoadExtraMatProperties: false - MuonScintYield: 24000 - MuonScintYieldRatio: 2.3e-1 - PionScintYield: 24000 - PionScintYieldRatio: 2.3e-1 - ProtonScintYield: 19200 - ProtonScintYieldRatio: 2.9e-1 - RIndexEnergies: [ - 1.18626, - 1.68626, - 2.18626, - 2.68626, - 3.18626, - 3.68626, - 4.18626, - 4.68626, - 5.18626, - 5.68626, - 6.18626, - 6.68626, - 7.18626, - 7.68626, - 8.18626, - 8.68626, - 9.18626, - 9.68626, - 1.01863e1, - 1.06863e1, - 1.11863e1 - ] - RIndexSpectrum: [ - 1.24664, - 1.2205, - 1.22694, - 1.22932, - 1.23124, - 1.23322, - 1.23545, - 1.23806, - 1.24116, - 1.24489, - 1.24942, - 1.25499, - 1.26197, - 1.2709, - 1.28263, - 1.29865, - 1.32169, - 1.35747, - 1.42039, - 1.56011, - 2.16626 - ] - RadiationLength: 1.955e1 - RayleighEnergies: [ - 1.18626, - 1.68626, - 2.18626, - 2.68626, - 3.18626, - 3.68626, - 4.18626, - 4.68626, - 5.18626, - 5.68626, - 6.18626, - 6.68626, - 7.18626, - 7.68626, - 8.18626, - 8.68626, - 9.18626, - 9.68626, - 1.01863e1, - 1.06863e1, - 1.11863e1 - ] - RayleighSpectrum: [ - 1.2008e6, - 390747, - 128633, - 5.49691e4, - 2.71918e4, - 1.48537e4, - 8.7169e3, - 5.39742e3, - 3.48137e3, - 2.31651e3, - 1.57763e3, - 1.09202e3, - 7.63045e2, - 5.34232e2, - 3.71335e2, - 2.52942e2, - 1.6538e2, - 9.99003e1, - 5.12653e1, - 1.7495e1, - 9.64341e-1 - ] - ReflectiveSurfaceDiffuseFractions: [ - [ - 5e-1, - 5e-1, - 5e-1 - ] - ] - ReflectiveSurfaceEnergies: [ - 1.77, - 2.0675, - 2.481, - 2.819, - 2.953, - 3.1807, - 3.54, - 4.135, - 4.962, - 5.39, - 7, - 15 - ] - ReflectiveSurfaceNames: [ - "STEEL_STAINLESS_Fe7Cr2Ni", - "copper", - "G10", - "vm2000", - "ALUMINUM_Al", - "ALUMINUM_PMT", - "ALUMINUM_CRYO" - ] - ReflectiveSurfaceReflectances: [ - [ - 6.6e-1, - 6.4e-1, - 6.2e-1, - 6e-1, - 5.9e-1, - 5.7e-1, - 5.3e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9.02e-1, - 8.41e-1, - 4.64e-1, - 3.79e-1, - 3.45e-1, - 2.99e-1, - 2.87e-1, - 2.64e-1, - 3.37e-1, - 3e-1, - 0, - 0 - ], - [ - 3.93e-1, - 4.05e-1, - 4.04e-1, - 3.52e-1, - 3.23e-1, - 2.43e-1, - 1.27e-1, - 6.5e-2, - 6.8e-2, - 6.8e-2, - 0, - 0 - ], - [ - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 1e-1, - 1e-1, - 7e-1, - 3e-1, - 0, - 0 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ] - ] - ScintBirksConstant: 6.9e-2 - ScintByParticleType: true - ScintFastTimeConst: 6 - ScintPreScale: 7.3e-2 - ScintResolutionScale: 1 - ScintSlowTimeConst: 1590 - ScintYield: 24000 - ScintYieldRatio: 2.3e-1 - SlowScintEnergies: [ - 7.2, - 7.9, - 8.3, - 8.6, - 8.9, - 9.1, - 9.3, - 9.6, - 9.7, - 9.8, - 10, - 1.02e1, - 1.03e1, - 1.06e1, - 11, - 1.16e1, - 1.19e1 - ] - SlowScintSpectrum: [ - 0, - 4e-2, - 1.2e-1, - 2.7e-1, - 4.4e-1, - 6.2e-1, - 8e-1, - 9.1e-1, - 9.2e-1, - 8.5e-1, - 7e-1, - 5e-1, - 3.1e-1, - 1.3e-1, - 4e-2, - 1e-2, - 0 - ] - TpbAbsorptionEnergies: [ - 5e-2, - 1.77, - 2.0675, - 7.42, - 7.75, - 8.16, - 8.73, - 9.78, - 1.069e1, - 5.039e1 - ] - TpbAbsorptionSpectrum: [ - 100000, - 100000, - 100000, - 1e-3, - 1e-11, - 1e-11, - 1e-11, - 1e-11, - 1e-11, - 1e-11 - ] - TpbEmmisionEnergies: [ - 5e-2, - 1, - 1.5, - 2.25, - 2.481, - 2.819, - 2.952, - 2.988, - 3.024, - 3.1, - 3.14, - 3.1807, - 3.54, - 5.5, - 5.039e1 - ] - TpbEmmisionSpectrum: [ - 0, - 0, - 0, - 5.88e-2, - 2.35e-1, - 8.53e-1, - 1, - 1, - 9.259e-1, - 7.04e-1, - 2.96e-2, - 1.1e-2, - 0, - 0, - 0 - ] - TpbTimeConstant: 2.5 - service_provider: "LArPropertiesServiceStandard" - } - MemoryTracker: { - dbOutput: { - filename: "MemoryReport.db" - overwrite: true - } - } - ParticleInventoryService: { - ParticleInventory: { - EveIdCalculator: "EmEveIdCalculator" - G4ModuleLabel: "largeant" - } - } - PhotonBackTrackerService: { - PhotonBackTracker: { - Delay: 0 - G4ModuleLabel: "largeant" - G4ModuleLabels: [ - "largeant" - ] - MinimumHitEnergyFraction: 1e-1 - } - } - SignalShapingICARUSService: { - DeconNorm: 1 - InitialFFTSize: 4096 - NoiseFactVec: [ - [ - 1.151, - 1.151, - 1.151, - 1.151 - ], - [ - 1.152, - 1.152, - 1.152, - 1.152 - ], - [ - 1.096, - 1.096, - 1.096, - 1.096 - ] - ] - PlaneForNormalization: 2 - PrintResponses: "false" - ResponseTools: { - ResponsePlane0: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 0 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 0 - ResponseType: 0 - SignalType: 0 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" - FilterParametersVec: [ - 1, - 0, - 4, - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 0 - tool_type: "Filter" - } - Plane: 0 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - ResponsePlane1: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 1 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 1 - ResponseType: 1 - SignalType: 0 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" - FilterParametersVec: [ - 1, - 0, - 4, - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 1 - tool_type: "Filter" - } - Plane: 1 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - ResponsePlane2: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 2 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 2 - ResponseType: 2 - SignalType: 1 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? gaus(0) : 0.0" - FilterParametersVec: [ - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 2 - tool_type: "Filter" - } - Plane: 2 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - } - StoreHistograms: true - } - SpaceChargeService: { - EnableCalEfieldSCE: false - EnableCalSpatialSCE: false - EnableCorrSCE: false - EnableSimEfieldSCE: false - EnableSimSpatialSCE: false - InputFilename: "SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root" - RepresentationType: "Voxelized_TH3" - service_provider: "SpaceChargeServiceICARUS" - } - TFileService: { - fileName: "Supplemental-%ifb_%tc-%p.root" - } - TimeTracker: { - dbOutput: { - filename: "TimingReport.db" - overwrite: true - } - printSummary: true - } - message: { - destinations: { - STDCOUT: { - categories: { - default: { - limit: 5 - reportEvery: 1 - } - } - threshold: "WARNING" - type: "cout" - } - } - } - scheduler: { - defaultExceptions: false - } -} -source: { - maxEvents: 10 - module_type: "RootInput" - saveMemoryObjectThreshold: 0 -} diff --git a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_truth.txt b/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_truth.txt deleted file mode 100644 index 009e24d5b..000000000 --- a/icaruscode/TPC/ICARUSWireCell/wirecell_configuration_truth.txt +++ /dev/null @@ -1,972 +0,0 @@ -# Produced from 'fhicl-dump' using: -# Input : detsim_2d_icarus_SConly.fcl -# Policy : cet::filepath_maker -# Path : "FHICL_FILE_PATH" - -outputs: { - rootoutput: { - compressionLevel: 1 - dataTier: "simulated" - fileName: "%ifb_%tc-%p.root" - module_type: "RootOutput" - saveMemoryObjectThreshold: 0 - } -} -physics: { - producers: { - crtdaq: { - DetSimAlg: { - ApplyCoincidenceC: true - ApplyCoincidenceD: true - ApplyCoincidenceM: true - ApplyStripCoincidenceC: true - BiasTime: 50 - DeadTime: 22000 - GlobalT0Offset: 1.6e6 - Kbirks: 1.26e1 - LayerCoincidenceWindowC: 30 - LayerCoincidenceWindowD: 30 - LayerCoincidenceWindowM: 50 - PropDelay: 5.23e-2 - PropDelayError: 7e-3 - Q0: 1.891e-3 - QMax: 4080 - QPed: 6.36e1 - QRMS: 10 - QSlope: 70 - QThresholdC: 169 - QThresholdD: 169 - QThresholdM: 379 - StripCoincidenceWindow: 50 - TDelayNorm: 4.12574e3 - TDelayOffset: -1.525 - TDelayRMSExpNorm: 1.6544 - TDelayRMSExpScale: 7.93543e1 - TDelayRMSExpShift: 7.56183e1 - TDelayRMSGausNorm: 2.09138 - TDelayRMSGausShift: 7.23993 - TDelayRMSGausSigma: 1.70027e2 - TDelayShift: -3.0031e2 - TDelaySigma: 9.0392e1 - TResInterpolator: 1.268 - UltraVerbose: false - UseBirks: true - UseEdep: true - Verbose: false - } - G4ModuleLabel: "largeant" - module_type: "icaruscode/CRT/CRTDetSim" - } - daq: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-multitpc-sim-drift-simchannel.jsonnet" - ] - inputers: [ - "wclsSimDepoSetSource:electron" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsDepoSetSimChannelSink:postdriftold", - "wclsDepoFluxWriter:postdrift", - "wclsFrameSaver:simdigits0", - "wclsFrameSaver:simdigits1", - "wclsFrameSaver:simdigits2", - "wclsFrameSaver:simdigits3" - ] - params: { - file_rcresp: "" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - } - plugins: [ - "WireCellPgraph", - "WireCellGen", - "WireCellSio", - "WireCellRoot", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - DL: 4e-9 - DT: 8.8e-9 - coh_noise_scale: 1 - gain0: 1.705212e1 - gain1: 1.26181926e1 - gain2: 1.30261362e1 - int_noise_scale: 1 - lifetime: 3000 - shaping0: 1.3 - shaping1: 1.3 - shaping2: 1.3 - time_offset_u: 0 - time_offset_v: 0 - time_offset_y: 0 - } - tool_type: "WCLS" - } - } - opdaq: { - BeamGateTriggerNReps: 10 - BeamGateTriggerRepPeriod: "2.0 us" - CreateBeamGateTriggers: true - DarkNoiseRate: "1.6 kHz" - DiscrimAlgo: "AboveThreshold" - FluctuateGain: true - InputModule: "largeant" - PMTspecs: { - DynodeK: 7.5e-1 - Gain: 7.5e6 - VoltageDistribution: [ - 1.74e1, - 3.4, - 5, - 3.33, - 1.67, - 1, - 1.2, - 1.5, - 2.2, - 3 - ] - } - Pedestal: { - NoiseGenerator: { - RMS: 3 - tool_type: "PMTfastGausNoiseGeneratorTool" - } - Pedestal: 1.49995e4 - tool_type: "PMTconstantPedestalGeneratorTool" - } - PreTrigFraction: 2.5e-1 - PulsePolarity: -1 - QE: 7.3e-2 - ReadoutEnablePeriod: "2.0 ms" - ReadoutWindowSize: 2000 - SinglePhotonResponse: { - Gain: 7.5e6 - TransitTime: "55.1 ns" - WaveformData: "Responses/SPR202202.txt" - tool_type: "SampledWaveformFunctionTool" - } - ThresholdADC: 15 - TriggerOffsetPMT: "-1.0 ms" - module_type: "SimPMTIcarus" - } - rns: { - module_type: "RandomNumberSaver" - } - tpcsim: { - module_type: "WireCellToolkit" - wcls_main: { - apps: [ - "Pgrapher" - ] - configs: [ - "pgrapher/experiment/icarus/wcls-multitpc-sim-drift-simchannel-true.jsonnet" - ] - inputers: [ - "wclsSimDepoSetSource:electron" - ] - loglevels: [ - "debug", - "pgraph:info" - ] - logsinks: [ - "stdout" - ] - outputers: [ - "wclsDepoFluxWriter:postdrift" - ] - params: { - file_rcresp: "" - files_fields: "icarus_fnal_fit_ks_P0nom.json.bz2" - } - plugins: [ - "WireCellPgraph", - "WireCellGen", - "WireCellSio", - "WireCellRoot", - "WireCellLarsoft", - "WireCellHio" - ] - structs: { - DL: 4e-9 - DT: 8.8e-9 - coh_noise_scale: 1 - gain0: 1.705212e1 - gain1: 1.26181926e1 - gain2: 1.30261362e1 - int_noise_scale: 1 - lifetime: 3000 - shaping0: 1.3 - shaping1: 1.3 - shaping2: 1.3 - time_offset_u: 0 - time_offset_v: 0 - time_offset_y: 0 - } - tool_type: "WCLS" - } - } - } - simulate: [ - "rns", - "tpcsim" - ] - stream: [ - "rootoutput" - ] -} -process_name: "TPCSim" -services: { - ChannelStatusService: { - ChannelStatusProvider: { - AlgName: "SIOVChannelStatusProvider" - DatabaseRetrievalAlg: { - AlgName: "DatabaseRetrievalAlg" - DBFolderName: "tpc_channelstatus_data" - DBTag: "v3r2" - DBUrl: "https://dbdata0vm.fnal.gov:9443/icarus_con_prod/app/" - UseSQLite: true - } - UseDB: true - UseFile: false - } - service_provider: "SIOVChannelStatusICARUSService" - } - DetPedestalService: { - DetPedestalRetrievalAlg: { - AlgName: "DetPedestalRetrievalAlg" - DatabaseRetrievalAlg: { - AlgName: "DatabaseRetrievalAlg" - DBFolderName: "" - DBTag: "" - DBUrl: "" - } - DefaultCollMean: 400 - DefaultCollRms: 3e-1 - DefaultIndMean: 2048 - DefaultIndRms: 3e-1 - DefaultMeanErr: 0 - DefaultRmsErr: 0 - UseDB: false - UseFile: false - } - service_provider: "SIOVDetPedestalService" - } - DetectorClocksService: { - ClockSpeedExternal: 3.125e1 - ClockSpeedOptical: 500 - ClockSpeedTPC: 2.5 - ClockSpeedTrigger: 16 - DefaultBeamTime: 1500 - DefaultTrigTime: 1500 - FramePeriod: 1.6384e3 - G4RefTime: -1500 - InheritClockConfig: true - TrigModuleName: "daqTrigger" - TriggerOffsetTPC: -340 - service_provider: "DetectorClocksServiceStandard" - } - DetectorPropertiesService: { - DriftVelFudgeFactor: 9.9733e-1 - Efield: [ - 4.938e-1, - 7.33e-1, - 9.33e-1 - ] - Electronlifetime: 3000 - ElectronsToADC: 1.208041e-3 - IncludeInterPlanePitchInXTickOffsets: false - InheritNumberTimeSamples: true - NumberTimeSamples: 4096 - ReadOutWindowSize: 4096 - SimpleBoundaryProcess: false - SternheimerA: 1.956e-1 - SternheimerCbar: 5.2146 - SternheimerK: 3 - SternheimerX0: 2e-1 - SternheimerX1: 3 - Temperature: 8.75e1 - TimeOffsetU: 0 - TimeOffsetV: 0 - TimeOffsetY: 0 - TimeOffsetZ: 0 - UseIcarusMicrobooneDriftModel: true - service_provider: "DetectorPropertiesServiceStandard" - } - DuplicateEventTracker: {} - ExptGeoHelperInterface: { - Mapper: { - WirelessChannels: { - CollectionEvenPostChannels: 96 - CollectionEvenPreChannels: 64 - CollectionOddPostChannels: 64 - CollectionOddPreChannels: 96 - FirstInductionPostChannels: 96 - FirstInductionPreChannels: 0 - SecondInductionEvenPostChannels: 64 - SecondInductionEvenPreChannels: 96 - SecondInductionOddPostChannels: 96 - SecondInductionOddPreChannels: 64 - } - tool_type: "ICARUSsplitInductionChannelMapSetupTool" - } - service_provider: "IcarusGeometryHelper" - } - FileCatalogMetadata: { - fileType: "mc" - group: "icarus" - runType: "physics" - } - Geometry: { - ChannelMapping: { - WirelessChannels: { - CollectionEvenPostChannels: 96 - CollectionEvenPreChannels: 64 - CollectionOddPostChannels: 64 - CollectionOddPreChannels: 96 - FirstInductionPostChannels: 96 - FirstInductionPreChannels: 0 - SecondInductionEvenPostChannels: 64 - SecondInductionEvenPreChannels: 96 - SecondInductionOddPostChannels: 96 - SecondInductionOddPreChannels: 64 - } - tool_type: "ICARUSsplitInductionChannelMapSetupTool" - } - DisableWiresInG4: true - GDML: "icarus_refactored_nounderscore_20230918.gdml" - Name: "icarus_v4" - ROOT: "icarus_refactored_nounderscore_20230918.gdml" - SurfaceY: 690 - } - GeometryConfigurationWriter: {} - LArPropertiesService: { - AbsLengthEnergies: [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ] - AbsLengthSpectrum: [ - 8000, - 8000, - 8000, - 8000, - 8000, - 2000, - 2000, - 2000 - ] - AlphaScintYield: 16800 - AlphaScintYieldRatio: 5.6e-1 - Argon39DecayRate: 0 - AtomicMass: 3.9948e1 - AtomicNumber: 18 - ElectronScintYield: 20000 - ElectronScintYieldRatio: 2.7e-1 - EnableCerenkovLight: false - ExcitationEnergy: 188 - FastScintEnergies: [ - 7.2, - 7.9, - 8.3, - 8.6, - 8.9, - 9.1, - 9.3, - 9.6, - 9.7, - 9.8, - 10, - 1.02e1, - 1.03e1, - 1.06e1, - 11, - 1.16e1, - 1.19e1 - ] - FastScintSpectrum: [ - 0, - 4e-2, - 1.2e-1, - 2.7e-1, - 4.4e-1, - 6.2e-1, - 8e-1, - 9.1e-1, - 9.2e-1, - 8.5e-1, - 7e-1, - 5e-1, - 3.1e-1, - 1.3e-1, - 4e-2, - 1e-2, - 0 - ] - KaonScintYield: 24000 - KaonScintYieldRatio: 2.3e-1 - LoadExtraMatProperties: false - MuonScintYield: 24000 - MuonScintYieldRatio: 2.3e-1 - PionScintYield: 24000 - PionScintYieldRatio: 2.3e-1 - ProtonScintYield: 19200 - ProtonScintYieldRatio: 2.9e-1 - RIndexEnergies: [ - 1.18626, - 1.68626, - 2.18626, - 2.68626, - 3.18626, - 3.68626, - 4.18626, - 4.68626, - 5.18626, - 5.68626, - 6.18626, - 6.68626, - 7.18626, - 7.68626, - 8.18626, - 8.68626, - 9.18626, - 9.68626, - 1.01863e1, - 1.06863e1, - 1.11863e1 - ] - RIndexSpectrum: [ - 1.24664, - 1.2205, - 1.22694, - 1.22932, - 1.23124, - 1.23322, - 1.23545, - 1.23806, - 1.24116, - 1.24489, - 1.24942, - 1.25499, - 1.26197, - 1.2709, - 1.28263, - 1.29865, - 1.32169, - 1.35747, - 1.42039, - 1.56011, - 2.16626 - ] - RadiationLength: 1.955e1 - RayleighEnergies: [ - 1.18626, - 1.68626, - 2.18626, - 2.68626, - 3.18626, - 3.68626, - 4.18626, - 4.68626, - 5.18626, - 5.68626, - 6.18626, - 6.68626, - 7.18626, - 7.68626, - 8.18626, - 8.68626, - 9.18626, - 9.68626, - 1.01863e1, - 1.06863e1, - 1.11863e1 - ] - RayleighSpectrum: [ - 1.2008e6, - 390747, - 128633, - 5.49691e4, - 2.71918e4, - 1.48537e4, - 8.7169e3, - 5.39742e3, - 3.48137e3, - 2.31651e3, - 1.57763e3, - 1.09202e3, - 7.63045e2, - 5.34232e2, - 3.71335e2, - 2.52942e2, - 1.6538e2, - 9.99003e1, - 5.12653e1, - 1.7495e1, - 9.64341e-1 - ] - ReflectiveSurfaceDiffuseFractions: [ - [ - 5e-1, - 5e-1, - 5e-1 - ] - ] - ReflectiveSurfaceEnergies: [ - 1.77, - 2.0675, - 2.481, - 2.819, - 2.953, - 3.1807, - 3.54, - 4.135, - 4.962, - 5.39, - 7, - 15 - ] - ReflectiveSurfaceNames: [ - "STEEL_STAINLESS_Fe7Cr2Ni", - "copper", - "G10", - "vm2000", - "ALUMINUM_Al", - "ALUMINUM_PMT", - "ALUMINUM_CRYO" - ] - ReflectiveSurfaceReflectances: [ - [ - 6.6e-1, - 6.4e-1, - 6.2e-1, - 6e-1, - 5.9e-1, - 5.7e-1, - 5.3e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9.02e-1, - 8.41e-1, - 4.64e-1, - 3.79e-1, - 3.45e-1, - 2.99e-1, - 2.87e-1, - 2.64e-1, - 3.37e-1, - 3e-1, - 0, - 0 - ], - [ - 3.93e-1, - 4.05e-1, - 4.04e-1, - 3.52e-1, - 3.23e-1, - 2.43e-1, - 1.27e-1, - 6.5e-2, - 6.8e-2, - 6.8e-2, - 0, - 0 - ], - [ - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 9.3e-1, - 1e-1, - 1e-1, - 7e-1, - 3e-1, - 0, - 0 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ], - [ - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 9e-1, - 4.7e-1, - 3.9e-1, - 3.6e-1, - 2.7e-1, - 2.5e-1 - ] - ] - ScintBirksConstant: 6.9e-2 - ScintByParticleType: true - ScintFastTimeConst: 6 - ScintPreScale: 7.3e-2 - ScintResolutionScale: 1 - ScintSlowTimeConst: 1590 - ScintYield: 24000 - ScintYieldRatio: 2.3e-1 - SlowScintEnergies: [ - 7.2, - 7.9, - 8.3, - 8.6, - 8.9, - 9.1, - 9.3, - 9.6, - 9.7, - 9.8, - 10, - 1.02e1, - 1.03e1, - 1.06e1, - 11, - 1.16e1, - 1.19e1 - ] - SlowScintSpectrum: [ - 0, - 4e-2, - 1.2e-1, - 2.7e-1, - 4.4e-1, - 6.2e-1, - 8e-1, - 9.1e-1, - 9.2e-1, - 8.5e-1, - 7e-1, - 5e-1, - 3.1e-1, - 1.3e-1, - 4e-2, - 1e-2, - 0 - ] - TpbAbsorptionEnergies: [ - 5e-2, - 1.77, - 2.0675, - 7.42, - 7.75, - 8.16, - 8.73, - 9.78, - 1.069e1, - 5.039e1 - ] - TpbAbsorptionSpectrum: [ - 100000, - 100000, - 100000, - 1e-3, - 1e-11, - 1e-11, - 1e-11, - 1e-11, - 1e-11, - 1e-11 - ] - TpbEmmisionEnergies: [ - 5e-2, - 1, - 1.5, - 2.25, - 2.481, - 2.819, - 2.952, - 2.988, - 3.024, - 3.1, - 3.14, - 3.1807, - 3.54, - 5.5, - 5.039e1 - ] - TpbEmmisionSpectrum: [ - 0, - 0, - 0, - 5.88e-2, - 2.35e-1, - 8.53e-1, - 1, - 1, - 9.259e-1, - 7.04e-1, - 2.96e-2, - 1.1e-2, - 0, - 0, - 0 - ] - TpbTimeConstant: 2.5 - service_provider: "LArPropertiesServiceStandard" - } - MemoryTracker: { - dbOutput: { - filename: "MemoryReport.db" - overwrite: true - } - } - NuRandomService: { - endOfJobSummary: false - initSeedPolicy: { - policy: "random" - } - policy: "perEvent" - } - RandomNumberGenerator: {} - SignalShapingICARUSService: { - DeconNorm: 1 - InitialFFTSize: 4096 - NoiseFactVec: [ - [ - 1.151, - 1.151, - 1.151, - 1.151 - ], - [ - 1.152, - 1.152, - 1.152, - 1.152 - ], - [ - 1.096, - 1.096, - 1.096, - 1.096 - ] - ] - PlaneForNormalization: 2 - PrintResponses: "false" - ResponseTools: { - ResponsePlane0: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 0 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 0 - ResponseType: 0 - SignalType: 0 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" - FilterParametersVec: [ - 1, - 0, - 4, - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 0 - tool_type: "Filter" - } - Plane: 0 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - ResponsePlane1: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 1 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 1 - ResponseType: 1 - SignalType: 0 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? ((1. - gaus(0)) * gaus(3)) : 0.0" - FilterParametersVec: [ - 1, - 0, - 4, - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 1 - tool_type: "Filter" - } - Plane: 1 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - ResponsePlane2: { - Correction3D: 1 - ElectronicsResponse: { - ADCPerPCAtLowestASICGain: 5500 - ASICShapingTime: 1.3 - FCperADCMicroS: 3.21e-2 - Plane: 2 - TimeOffset: 0 - tool_type: "ElectronicsResponseBesselApprox" - } - FieldResponse: { - FieldResponseAmplitude: 1 - FieldResponseFileName: "t600_response" - FieldResponseFileVersion: "v0.0" - FieldResponseHistName: "t600_response" - Plane: 2 - ResponseType: 2 - SignalType: 1 - TimeCorrectionFactor: 1000 - tool_type: "FieldResponse" - } - Filter: { - FilterFunction: "(x>0.0) ? gaus(0) : 0.0" - FilterParametersVec: [ - 1, - 0, - 100 - ] - FilterWidthCorrectionFactor: 1 - Plane: 2 - tool_type: "Filter" - } - Plane: 2 - TimeScaleFactor: 1 - UseEmpiricalOffsets: true - tool_type: "Response" - } - } - StoreHistograms: true - } - TFileService: { - fileName: "Supplemental-%ifb_%tc-%p.root" - } - TimeTracker: { - dbOutput: { - filename: "TimingReport.db" - overwrite: true - } - printSummary: true - } - message: { - destinations: { - LogErrorFile: { - append: false - categories: { - default: {} -} - filename: "errors.log" - threshold: "WARNING" - type: "file" -} - LogSeeds: { - append: false - categories: { - NuRandomService: { - limit: -1 - } - default: { - limit: 0 - } - } - filename: "randomseeds.log" - threshold: "INFO" - type: "file" - } - LogStandardOut: { - categories: { - NuRandomService: { - limit: 0 - } - default: {} -} - threshold: "INFO" - type: "cout" -} -} -} - scheduler: { - defaultExceptions: false - } -} From 640a6f52e3c3e72347dfacd1b2902e1b16f1c677 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 4 Nov 2024 16:23:30 -0600 Subject: [PATCH 19/43] Remove old jsonnet files. --- .../icarus/wcls-decode-to-sig-h5.jsonnet | 339 ------------------ .../icarus/wcls-decode-to-sig.jsonnet | 338 ----------------- 2 files changed, 677 deletions(-) delete mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-h5.jsonnet delete mode 100644 icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-h5.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-h5.jsonnet deleted file mode 100644 index 97ead296b..000000000 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-h5.jsonnet +++ /dev/null @@ -1,339 +0,0 @@ -// This is a main entry point to configure a WC/LS job that applies -// noise filtering and signal processing to existing RawDigits. The -// FHiCL is expected to provide the following parameters as attributes -// in the "params" structure. -// -// epoch: the hardware noise fix expoch: "before", "after", "dynamic" or "perfect" -// reality: whether we are running on "data" or "sim"ulation. -// raw_input_label: the art::Event inputTag for the input RawDigit -// -// see the .fcl of the same name for an example Version 2 -// -// Manual testing, eg: -// -// jsonnet -V reality=data -V epoch=dynamic -V raw_input_label=daq \\ -// -V signal_output_form=sparse \\ -// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet -// -// jsonnet -V reality=sim -V epoch=perfect -V raw_input_label=daq \\ -// -V signal_output_form=sparse \\ -// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet - - -local epoch = std.extVar('epoch'); // eg "dynamic", "after", "before", "perfect" -local reality = std.extVar('reality'); -local sigoutform = std.extVar('signal_output_form'); // eg "sparse" or "dense" - -local wc = import 'wirecell.jsonnet'; -local g = import 'pgraph.jsonnet'; - -local raw_input_label = std.extVar('raw_input_label'); // eg "daq" -local volume_label = std.extVar('tpc_volume_label'); // eg "",0,1,2,3 -local volume = if volume_label == '' then -1 else std.parseInt(volume_label); - -// local data_params = import 'params.jsonnet'; -// local simu_params = import 'simparams.jsonnet'; -// local params_init = if reality == 'data' then data_params else simu_params; -local base = import 'pgrapher/experiment/icarus/simparams.jsonnet'; - -// load the electronics response parameters -local er_params = [ - { - gain: std.extVar('gain0')*wc.mV/wc.fC, - shaping: std.extVar('shaping0')*wc.us, - }, - - { - gain: std.extVar('gain1')*wc.mV/wc.fC, - shaping: std.extVar('shaping1')*wc.us, - }, - - { - gain: std.extVar('gain2')*wc.mV/wc.fC, - shaping: std.extVar('shaping2')*wc.us, - }, -]; - - -local params = base { - files: super.files { - fields: [ std.extVar('files_fields'), ], - chresp: null, - }, - - rc_resp: if std.extVar('file_rcresp') != "" then - { - // "icarus_fnal_rc_tail.json" - filename: std.extVar('file_rcresp'), - postgain: 1.0, - start: 0.0, - tick: 0.4*wc.us, - nticks: params.daq.nticks,// 4255, - type: "JsonElecResponse", - } - else super.rc_resp, - - elec: std.mapWithIndex(function (n, eparam) - super.elec[n] + { - gain: eparam.gain, - shaping: eparam.shaping, - }, er_params), - -}; - -// local tools_maker = import 'pgrapher/common/tools.jsonnet'; -local tools_maker = import 'pgrapher/experiment/icarus/icarus_tools.jsonnet'; -local tools = tools_maker(params); - - -local wcls_maker = import 'pgrapher/ui/wcls/nodes.jsonnet'; -local wcls = wcls_maker(params, tools); - -local sp_maker = import 'pgrapher/experiment/icarus/sp.jsonnet'; - -//local chndbm = chndb_maker(params, tools); -//local chndb = if epoch == "dynamic" then chndbm.wcls_multi(name="") else chndbm.wct(epoch); - - -// Collect the WC/LS input converters for use below. Make sure the -// "name" argument matches what is used in the FHiCL that loads this -// file. In particular if there is no ":" in the inputer then name -// must be the emtpy string. -local wcls_input = { - adc_digits: g.pnode({ - type: 'wclsRawFrameSource', - name: 'rfsrc%d' %volume, // to use multiple wirecell instances in a fhicl job - data: { - art_tag: raw_input_label, - frame_tags: ['orig'], // this is a WCT designator - tick: params.daq.tick, - // nticks: params.daq.nticks, - }, - }, nin=0, nout=1), - -}; - -// Collect all the wc/ls output converters for use below. Note the -// "name" MUST match what is used in theh "outputers" parameter in the -// FHiCL that loads this file. -local mega_anode = { - type: 'MegaAnodePlane', - name: 'meganodes%d' % volume, - data: { - anodes_tn: if volume != -1 then [wc.tn(a) for a in tools.anodes[2*volume:2*(volume+1)]] // single volume - else [wc.tn(anode) for anode in tools.anodes], // all volumes - }, -}; -local wcls_output = { - // The noise filtered "ADC" values. These are truncated for - // art::Event but left as floats for the WCT SP. Note, the tag - // "raw" is somewhat historical as the output is not equivalent to - // "raw data". - nf_digits: g.pnode({ - type: 'wclsFrameSaver', - name: 'nfsaver', - data: { - // anode: wc.tn(tools.anode), - anode: wc.tn(mega_anode), - digitize: true, // true means save as RawDigit, else recob::Wire - frame_tags: ['raw'], - // nticks: params.daq.nticks, - chanmaskmaps: ['bad'], - }, - }, nin=1, nout=1, uses=[mega_anode]), - - - // The output of signal processing. Note, there are two signal - // sets each created with its own filter. The "gauss" one is best - // for charge reconstruction, the "wiener" is best for S/N - // separation. Both are used in downstream WC code. - sp_signals: g.pnode({ - type: 'wclsFrameSaver', - name: 'spsaver%d' %volume, // to use multiple wirecell instances in a fhicl job - data: { - // anode: wc.tn(tools.anode), - anode: wc.tn(mega_anode), - digitize: false, // true means save as RawDigit, else recob::Wire - // frame_tags: ['gauss', 'wiener', 'looseLf','shrinkROI','extendROI'], - // frame_scale: [0.1, 0.1, 0.1], - frame_tags: ['gauss','wiener','looseLf','decon','mp3ROI','mp2ROI'], - frame_scale: [std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e')], - // nticks: params.daq.nticks, - chanmaskmaps: [], - nticks: -1, - }, - }, nin=1, nout=1, uses=[mega_anode]), - - h5io: g.pnode({ - type: 'HDF5FrameTap', - name: 'hio_sp%d' % volume, - data: { - anode: wc.tn(mega_anode), - trace_tags: ['gauss' - , 'wiener' - , 'tightLf' - , 'looseLf' - , 'decon' - , 'mp3ROI' - , 'mp2ROI' - ], - filename: "wc-sp-%d.h5" % volume , - chunk: [0, 0], // ncol, nrow - gzip: 2, - high_throughput: true, - }, - }, nin=1, nout=1, uses=[mega_anode]), - -}; - -// local perfect = import 'chndb-perfect.jsonnet'; -local base = import 'pgrapher/experiment/icarus/chndb-base.jsonnet'; -local chndb = [{ - type: 'OmniChannelNoiseDB', - name: 'ocndbperfect%d' % n, - // data: perfect(params, tools.anodes[n], tools.field, n), - data: base(params, tools.anodes[n], tools.field, n){dft:wc.tn(tools.dft)}, - uses: [tools.anodes[n], tools.field, tools.dft], // pnode extension -} for n in std.range(0, std.length(tools.anodes) - 1)]; - -local nf_maker = import 'pgrapher/experiment/icarus/nf.jsonnet'; -local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; - -local sp_override = { // assume all tages sets in base sp.jsonnet - sparse: sigoutform == 'sparse', - use_roi_refinement: true, - use_roi_debug_mode: true, -// wiener_tag: "", - // gauss_tag: "", - tight_lf_tag: "", - // loose_lf_tag: "", - cleanup_roi_tag: "", - break_roi_loop1_tag: "", - break_roi_loop2_tag: "", - shrink_roi_tag: "", - extend_roi_tag: "", - // m_decon_charge_tag: "", - use_multi_plane_protection: true, - mp_tick_resolution: 10, -}; -local sp = sp_maker(params, tools, sp_override); -local sp_pipes = [sp.make_sigproc(a) for a in tools.anodes]; - -local util = import 'pgrapher/experiment/icarus/funcs.jsonnet'; -local chsel_pipes = [ - g.pnode({ - type: 'ChannelSelector', - name: 'chsel%d' % n, - data: { - channels: util.anode_channels(n), - //tags: ['orig%d' % n], // traces tag - }, - }, nin=1, nout=1) - for n in std.range(0, std.length(tools.anodes) - 1) -]; - -local magoutput = 'icarus-data-check.root'; -local magnify = import 'pgrapher/experiment/icarus/magnify-sinks.jsonnet'; -local magnifyio = magnify(tools, magoutput); - -local nfsp_pipes = [ - g.pipeline([ - chsel_pipes[n], - // magnifyio.orig_pipe[n], - - // nf_pipes[n], - // magnifyio.raw_pipe[n], - - sp_pipes[n], - // magnifyio.decon_pipe[n], - // magnifyio.threshold_pipe[n], - // magnifyio.debug_pipe[n], // use_roi_debug_mode: true in sp.jsonnet - ], - 'nfsp_pipe_%d' % n) - for n in std.range(0, std.length(tools.anodes) - 1) -]; - -local fanout_tag_rules = [ - { - frame: { - '.*': 'orig%d' % tools.anodes[n].data.ident, - }, - trace: { - // fake doing Nmult SP pipelines - //orig: ['wiener', 'gauss'], - //'.*': 'orig', - }, - } - for n in std.range(0, std.length(tools.anodes) - 1) - ]; - -local anode_ident = [tools.anodes[n].data.ident for n in std.range(0, std.length(tools.anodes) - 1)]; -local fanin_tag_rules = [ - { - frame: { - //['number%d' % n]: ['output%d' % n, 'output'], - '.*': 'framefanin', - }, - trace: { - // ['extend_roi%d'%ind]:'extend_roi%d'%ind, - // ['shrink_roi%d'%ind]:'shrink_roi%d'%ind, - // ['break_roi_2nd%d'%ind]:'break_roi_2nd%d'%ind, - // ['break_roi_1st%d'%ind]:'break_roi_1st%d'%ind, - // ['cleanup_roi%d'%ind]:'cleanup_roi%d'%ind, - ['gauss%d'%ind]:'gauss%d'%ind, - ['wiener%d'%ind]:'wiener%d'%ind, - ['mp3_roi%d'%ind]:'mp3_roi%d'%ind, -['mp2_roi%d'%ind]:'mp2_roi%d'%ind, - // ['threshold%d'%ind]:'threshold%d'%ind, - // ['tight_lf%d'%ind]:'tight_lf%d'%ind, - ['loose_lf%d'%ind]:'loose_lf%d'%ind, - ['decon%d'%ind]:'decon%d'%ind, - }, - - } - for ind in anode_ident - ]; -local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); - -local retagger = g.pnode({ - type: 'Retagger', - data: { - // Note: retagger keeps tag_rules an array to be like frame fanin/fanout. - tag_rules: [{ - // Retagger also handles "frame" and "trace" like fanin/fanout - // merge separately all traces like gaussXYZ to gauss. - frame: { - '.*': 'retagger', - }, - merge: { - 'gauss\\d\\d\\d': 'gauss', - 'wiener\\d\\d\\d': 'wiener', - // 'tight_lf\\d\\d\\d': 'tightLf', - 'loose_lf\\d\\d\\d': 'looseLf', - 'decon\\d\\d\\d': 'decon', - // 'cleanup_roi\\d\\d\\d': 'cleanupROI', - // 'break_roi_1st\\d\\d\\d': 'breakROI1', - // 'break_roi_2nd\\d\\d\\d': 'breakROI2', - // 'shrink_roi\\d\\d\\d': 'shrinkROI', - // 'extend_roi\\d\\d\\d': 'extendROI', - 'mp3_roi\\d\\d\\d': 'mp3ROI', - 'mp2_roi\\d\\d\\d': 'mp2ROI', - }, - }], - }, -}, nin=1, nout=1); - -local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); - -//wcls_output.h5io -local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); - -local app = { - type: 'Pgrapher', - data: { - edges: g.edges(graph), - }, -}; - -// Finally, the configuration sequence -g.uses(graph) + [app] diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet deleted file mode 100644 index 13457005a..000000000 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig.jsonnet +++ /dev/null @@ -1,338 +0,0 @@ -// This is a main entry point to configure a WC/LS job that applies -// noise filtering and signal processing to existing RawDigits. The -// FHiCL is expected to provide the following parameters as attributes -// in the "params" structure. -// -// epoch: the hardware noise fix expoch: "before", "after", "dynamic" or "perfect" -// reality: whether we are running on "data" or "sim"ulation. -// raw_input_label: the art::Event inputTag for the input RawDigit -// -// see the .fcl of the same name for an example Version 2 -// -// Manual testing, eg: -// -// jsonnet -V reality=data -V epoch=dynamic -V raw_input_label=daq \\ -// -V signal_output_form=sparse \\ -// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet -// -// jsonnet -V reality=sim -V epoch=perfect -V raw_input_label=daq \\ -// -V signal_output_form=sparse \\ -// -J cfg cfg/pgrapher/experiment/uboone/wcls-nf-sp.jsonnet - - -local epoch = std.extVar('epoch'); // eg "dynamic", "after", "before", "perfect" -local reality = std.extVar('reality'); -local sigoutform = std.extVar('signal_output_form'); // eg "sparse" or "dense" - -local wc = import 'wirecell.jsonnet'; -local g = import 'pgraph.jsonnet'; - -local raw_input_label = std.extVar('raw_input_label'); // eg "daq" -local volume_label = std.extVar('tpc_volume_label'); // eg "",0,1,2,3 -local volume = if volume_label == '' then -1 else std.parseInt(volume_label); - -// local data_params = import 'params.jsonnet'; -// local simu_params = import 'simparams.jsonnet'; -// local params_init = if reality == 'data' then data_params else simu_params; -local base = import 'pgrapher/experiment/icarus/simparams.jsonnet'; - -// load the electronics response parameters -local er_params = [ - { - gain: std.extVar('gain0')*wc.mV/wc.fC, - shaping: std.extVar('shaping0')*wc.us, - }, - - { - gain: std.extVar('gain1')*wc.mV/wc.fC, - shaping: std.extVar('shaping1')*wc.us, - }, - - { - gain: std.extVar('gain2')*wc.mV/wc.fC, - shaping: std.extVar('shaping2')*wc.us, - }, -]; - - -local params = base { - files: super.files { - fields: [ std.extVar('files_fields'), ], - chresp: null, - }, - - rc_resp: if std.extVar('file_rcresp') != "" then - { - // "icarus_fnal_rc_tail.json" - filename: std.extVar('file_rcresp'), - postgain: 1.0, - start: 0.0, - tick: 0.4*wc.us, - nticks: params.daq.nticks,// 4255, - type: "JsonElecResponse", - } - else super.rc_resp, - - elec: std.mapWithIndex(function (n, eparam) - super.elec[n] + { - gain: eparam.gain, - shaping: eparam.shaping, - }, er_params), - -}; - -// local tools_maker = import 'pgrapher/common/tools.jsonnet'; -local tools_maker = import 'pgrapher/experiment/icarus/icarus_tools.jsonnet'; -local tools = tools_maker(params); - - -local wcls_maker = import 'pgrapher/ui/wcls/nodes.jsonnet'; -local wcls = wcls_maker(params, tools); - -local sp_maker = import 'pgrapher/experiment/icarus/sp.jsonnet'; - -//local chndbm = chndb_maker(params, tools); -//local chndb = if epoch == "dynamic" then chndbm.wcls_multi(name="") else chndbm.wct(epoch); - - -// Collect the WC/LS input converters for use below. Make sure the -// "name" argument matches what is used in the FHiCL that loads this -// file. In particular if there is no ":" in the inputer then name -// must be the emtpy string. -local wcls_input = { - adc_digits: g.pnode({ - type: 'wclsRawFrameSource', - name: 'rfsrc%d' %volume, // to use multiple wirecell instances in a fhicl job - data: { - art_tag: raw_input_label, - frame_tags: ['orig'], // this is a WCT designator - tick: params.daq.tick, - // nticks: params.daq.nticks, - }, - }, nin=0, nout=1), - -}; - -// Collect all the wc/ls output converters for use below. Note the -// "name" MUST match what is used in theh "outputers" parameter in the -// FHiCL that loads this file. -local mega_anode = { - type: 'MegaAnodePlane', - name: 'meganodes', - data: { - anodes_tn: if volume != -1 then [wc.tn(a) for a in tools.anodes[2*volume:2*(volume+1)]] // single volume - else [wc.tn(anode) for anode in tools.anodes], // all volumes - }, -}; -local wcls_output = { - // The noise filtered "ADC" values. These are truncated for - // art::Event but left as floats for the WCT SP. Note, the tag - // "raw" is somewhat historical as the output is not equivalent to - // "raw data". - nf_digits: g.pnode({ - type: 'wclsFrameSaver', - name: 'nfsaver', - data: { - // anode: wc.tn(tools.anode), - anode: wc.tn(mega_anode), - digitize: true, // true means save as RawDigit, else recob::Wire - frame_tags: ['raw'], - // nticks: params.daq.nticks, - chanmaskmaps: ['bad'], - }, - }, nin=1, nout=1, uses=[mega_anode]), - - - // The output of signal processing. Note, there are two signal - // sets each created with its own filter. The "gauss" one is best - // for charge reconstruction, the "wiener" is best for S/N - // separation. Both are used in downstream WC code. - sp_signals: g.pnode({ - type: 'wclsFrameSaver', - name: 'spsaver%d' %volume, // to use multiple wirecell instances in a fhicl job - data: { - // anode: wc.tn(tools.anode), - anode: wc.tn(mega_anode), - digitize: false, // true means save as RawDigit, else recob::Wire - // frame_tags: ['gauss', 'wiener', 'looseLf','shrinkROI','extendROI'], - // frame_scale: [0.1, 0.1, 0.1], - frame_tags: ['gauss','wiener','looseLf','shrinkROI','extendROI'], - frame_scale: [std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e')], - // nticks: params.daq.nticks, - chanmaskmaps: [], - nticks: -1, - }, - }, nin=1, nout=1, uses=[mega_anode]), - - h5io: g.pnode({ - type: 'HDF5FrameTap', - name: 'hio_sp', - data: { - anode: wc.tn(mega_anode), - trace_tags: ['gauss' - , 'wiener' - , 'tightLf' - , 'looseLf' - , 'decon' - , 'cleanupROI' - , 'breakROI1' - , 'breakROI2' - , 'shrinkROI' - , 'extendROI' - ], - filename: "wc-sp-%d.h5" % volume, - chunk: [0, 0], // ncol, nrow - gzip: 2, - high_throughput: true, - }, - }, nin=1, nout=1, uses=[mega_anode]), - -}; - -// local perfect = import 'chndb-perfect.jsonnet'; -local base = import 'pgrapher/experiment/icarus/chndb-base.jsonnet'; -local chndb = [{ - type: 'OmniChannelNoiseDB', - name: 'ocndbperfect%d' % n, - // data: perfect(params, tools.anodes[n], tools.field, n), - data: base(params, tools.anodes[n], tools.field, n){dft:wc.tn(tools.dft)}, - uses: [tools.anodes[n], tools.field, tools.dft], // pnode extension -} for n in std.range(0, std.length(tools.anodes) - 1)]; - -local nf_maker = import 'pgrapher/experiment/icarus/nf.jsonnet'; -local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; - -local sp_override = { // assume all tages sets in base sp.jsonnet - sparse: sigoutform == 'sparse', - use_roi_refinement: true, - use_roi_debug_mode: true, -// wiener_tag: "", - // gauss_tag: "", - tight_lf_tag: "", - // loose_lf_tag: "", - cleanup_roi_tag: "", - break_roi_loop1_tag: "", - break_roi_loop2_tag: "", - //shrink_roi_tag: "", - //extend_roi_tag: "", - m_decon_charge_tag: "", - use_multi_plane_protection: false, - mp_tick_resolution: 10, -}; -local sp = sp_maker(params, tools, sp_override); -local sp_pipes = [sp.make_sigproc(a) for a in tools.anodes]; - -local util = import 'pgrapher/experiment/icarus/funcs.jsonnet'; -local chsel_pipes = [ - g.pnode({ - type: 'ChannelSelector', - name: 'chsel%d' % n, - data: { - channels: util.anode_channels(n), - //tags: ['orig%d' % n], // traces tag - }, - }, nin=1, nout=1) - for n in std.range(0, std.length(tools.anodes) - 1) -]; - -local magoutput = 'icarus-data-check.root'; -local magnify = import 'pgrapher/experiment/icarus/magnify-sinks.jsonnet'; -local magnifyio = magnify(tools, magoutput); - -local nfsp_pipes = [ - g.pipeline([ - chsel_pipes[n], - // magnifyio.orig_pipe[n], - - // nf_pipes[n], - // magnifyio.raw_pipe[n], - - sp_pipes[n], - // magnifyio.decon_pipe[n], - // magnifyio.threshold_pipe[n], - // magnifyio.debug_pipe[n], // use_roi_debug_mode: true in sp.jsonnet - ], - 'nfsp_pipe_%d' % n) - for n in std.range(0, std.length(tools.anodes) - 1) -]; - -local fanout_tag_rules = [ - { - frame: { - '.*': 'orig%d' % tools.anodes[n].data.ident, - }, - trace: { - // fake doing Nmult SP pipelines - //orig: ['wiener', 'gauss'], - //'.*': 'orig', - }, - } - for n in std.range(0, std.length(tools.anodes) - 1) - ]; - -local anode_ident = [tools.anodes[n].data.ident for n in std.range(0, std.length(tools.anodes) - 1)]; -local fanin_tag_rules = [ - { - frame: { - //['number%d' % n]: ['output%d' % n, 'output'], - '.*': 'framefanin', - }, - trace: { - ['extend_roi%d'%ind]:'extend_roi%d'%ind, - ['shrink_roi%d'%ind]:'shrink_roi%d'%ind, - // ['break_roi_2nd%d'%ind]:'break_roi_2nd%d'%ind, - // ['break_roi_1st%d'%ind]:'break_roi_1st%d'%ind, - // ['cleanup_roi%d'%ind]:'cleanup_roi%d'%ind, - ['gauss%d'%ind]:'gauss%d'%ind, - ['wiener%d'%ind]:'wiener%d'%ind, - // ['threshold%d'%ind]:'threshold%d'%ind, - // ['tight_lf%d'%ind]:'tight_lf%d'%ind, - ['loose_lf%d'%ind]:'loose_lf%d'%ind, - // ['decon%d'%ind]:'decon%d'%ind, - }, - - } - for ind in anode_ident - ]; -local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); - -local retagger = g.pnode({ - type: 'Retagger', - data: { - // Note: retagger keeps tag_rules an array to be like frame fanin/fanout. - tag_rules: [{ - // Retagger also handles "frame" and "trace" like fanin/fanout - // merge separately all traces like gaussXYZ to gauss. - frame: { - '.*': 'retagger', - }, - merge: { - 'gauss\\d\\d\\d': 'gauss', - 'wiener\\d\\d\\d': 'wiener', - // 'tight_lf\\d\\d\\d': 'tightLf', - 'loose_lf\\d\\d\\d': 'looseLf', - // 'decon\\d\\d\\d': 'decon', - // 'cleanup_roi\\d\\d\\d': 'cleanupROI', - // 'break_roi_1st\\d\\d\\d': 'breakROI1', - // 'break_roi_2nd\\d\\d\\d': 'breakROI2', - 'shrink_roi\\d\\d\\d': 'shrinkROI', - 'extend_roi\\d\\d\\d': 'extendROI', - }, - }], - }, -}, nin=1, nout=1); - -local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); - -//wcls_output.h5ioa -local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.sp_signals, sink]); - -local app = { - type: 'Pgrapher', - data: { - edges: g.edges(graph), - }, -}; - -// Finally, the configuration sequence -g.uses(graph) + [app] From 19f4d5d283e2426ca88564ee281876e4ccee28ec Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 5 Nov 2024 10:58:48 -0600 Subject: [PATCH 20/43] Reorganize configurations. Add in signal processing (SP) ana. --- fcl/reco/Definitions/stage0_icarus_defs.fcl | 107 +++++++++++++++--- .../stage0_icarus_driver_common.fcl | 14 +++ .../Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl | 2 +- .../Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl | 8 +- fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl | 2 +- .../Stage0/Run2/stage0_run2_wc_icarus_mc.fcl | 83 +------------- 6 files changed, 108 insertions(+), 108 deletions(-) diff --git a/fcl/reco/Definitions/stage0_icarus_defs.fcl b/fcl/reco/Definitions/stage0_icarus_defs.fcl index beca32490..b9afc4fed 100644 --- a/fcl/reco/Definitions/stage0_icarus_defs.fcl +++ b/fcl/reco/Definitions/stage0_icarus_defs.fcl @@ -19,12 +19,17 @@ #include "wcls-decode-to-sig-base.fcl" #include "icarus_FilterDataIntegrity.fcl" #include "icarus_FilterCRTPMTMatching.fcl" +#include "spana_icarus.fcl" +#include "sp_filter_parameters.fcl" BEGIN_PROLOG ### Analyzers employed during stage 0 processing ### icarus_stage0_analyzers: { + spanaE: @local::spana1d_east + spanaW: @local::spana1d_east + purityinfoana0: { module_type: "TPCPurityInfoAna" PurityInfoLabel: "purityana0" PrintInfo: false @@ -205,19 +210,17 @@ icarus_stage0_multiTPC_TPC: [ decon1droi, roifinder1d ] -icarus_stage0_multiTPC_2d_TPC_init_E:[ decon1droi, - roifinder1d, +icarus_stage0_multiTPC_2d_TPC_E:[ decon2droiEE, decon2droiEW ] -icarus_stage0_multiTPC_2d_TPC_finish_W:[ +icarus_stage0_multiTPC_2d_TPC_W:[ decon2droiWE, decon2droiWW, - roifinder2d ] -icarus_stage0_multiTPC_2d_TPC: [@sequence::icarus_stage0_multiTPC_2d_TPC_init_E, @sequence::icarus_stage0_multiTPC_2d_TPC_finish_W] +icarus_stage0_multiTPC_2d_TPC: [@sequence::icarus_stage0_multiTPC_2d_TPC_E, @sequence::icarus_stage0_multiTPC_2d_TPC_W] icarus_stage0_EastHits_TPC: [ gaushit1dTPCEW, @@ -279,23 +282,14 @@ icarus_stage0_multiTPC: [ @sequence::icarus_stage0_multiTPC_TPC, ] icarus_stage0_2d_multiTPC: [ @sequence::icarus_stage0_multiTPC_2d_TPC, - @sequence::icarus_stage0_EastHits_TPC, - @sequence::icarus_stage0_WestHits_TPC, @sequence::icarus_stage0_EastHits2d_TPC, @sequence::icarus_stage0_WestHits2d_TPC, @sequence::icarus_purity_monitor ] -icarus_stage0_2d_multiTPC_init_E: [ @sequence::icarus_stage0_multiTPC_2d_TPC_init_E] -icarus_stage0_2d_multiTPC_finish_W: [ @sequence::icarus_stage0_multiTPC_2d_TPC_finish_W, - @sequence::icarus_stage0_EastHits_TPC, - @sequence::icarus_stage0_WestHits_TPC, - @sequence::icarus_stage0_EastHits2d_TPC, - @sequence::icarus_stage0_WestHits2d_TPC, - @sequence::icarus_purity_monitor - ] - - +icarus_stage0_2d_multiTPC_E: [ @sequence::icarus_stage0_multiTPC_2d_TPC_E, @sequence::icarus_stage0_EastHits2d_TPC] +icarus_stage0_2d_multiTPC_W: [ @sequence::icarus_stage0_multiTPC_2d_TPC_W, @sequence::icarus_stage0_WestHits2d_TPC] + icarus_stage0_CRT: [ daqCRT, crthit, @@ -401,6 +395,85 @@ icarus_stage0_producers.decon2droiWW.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiWW.wcls_main.loglevels: ["debug", "pgraph:info"] icarus_stage0_producers.decon2droiWW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWW.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] +# Signal processing values +icarus_stage0_producers.decon2droiEE.wcls_main.structs.gain0: 17.05212 +icarus_stage0_producers.decon2droiEW.wcls_main.structs.gain0: 17.05212 +icarus_stage0_producers.decon2droiWE.wcls_main.structs.gain0: 17.05212 +icarus_stage0_producers.decon2droiWW.wcls_main.structs.gain0: 17.05212 + +icarus_stage0_producers.decon2droiEE.wcls_main.structs.gain1: 12.1420344 +icarus_stage0_producers.decon2droiEW.wcls_main.structs.gain1: 12.1420344 +icarus_stage0_producers.decon2droiWE.wcls_main.structs.gain1: 12.1420344 +icarus_stage0_producers.decon2droiWW.wcls_main.structs.gain1: 12.1420344 + +icarus_stage0_producers.decon2droiEE.wcls_main.structs.gain2: 13.0261362 +icarus_stage0_producers.decon2droiEW.wcls_main.structs.gain2: 13.0261362 +icarus_stage0_producers.decon2droiWE.wcls_main.structs.gain2: 13.0261362 +icarus_stage0_producers.decon2droiWW.wcls_main.structs.gain2: 13.0261362 + + +icarus_stage0_producers.decon2droiEE.wcls_main.structs.shaping0: 1.3 +icarus_stage0_producers.decon2droiEW.wcls_main.structs.shaping0: 1.3 +icarus_stage0_producers.decon2droiWE.wcls_main.structs.shaping0: 1.3 +icarus_stage0_producers.decon2droiWW.wcls_main.structs.shaping0: 1.3 + +icarus_stage0_producers.decon2droiEE.wcls_main.structs.shaping1: 1.45 +icarus_stage0_producers.decon2droiEW.wcls_main.structs.shaping1: 1.45 +icarus_stage0_producers.decon2droiWE.wcls_main.structs.shaping1: 1.45 +icarus_stage0_producers.decon2droiWW.wcls_main.structs.shaping1: 1.45 + +icarus_stage0_producers.decon2droiEE.wcls_main.structs.shaping2: 1.3 +icarus_stage0_producers.decon2droiEW.wcls_main.structs.shaping2: 1.3 +icarus_stage0_producers.decon2droiWE.wcls_main.structs.shaping2: 1.3 +icarus_stage0_producers.decon2droiWW.wcls_main.structs.shaping2: 1.3 + +# Defines final gain, in ADC/e- +icarus_stage0_producers.decon2droiEE.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e +icarus_stage0_producers.decon2droiEW.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e +icarus_stage0_producers.decon2droiWE.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e +icarus_stage0_producers.decon2droiWW.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e + +# Filter parameters +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma +icarus_stage0_producers.decon2droiEE.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma + +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma +icarus_stage0_producers.decon2droiEW.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma + +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma +icarus_stage0_producers.decon2droiWE.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma + +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma +icarus_stage0_producers.decon2droiWW.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma + ### Set up to output ROIs from full waveforms icarus_stage0_producers.roifinder1d.WireModuleLabelVec: ["decon1droi:PHYSCRATEDATATPCWW","decon1droi:PHYSCRATEDATATPCWE","decon1droi:PHYSCRATEDATATPCEW","decon1droi:PHYSCRATEDATATPCEE"] icarus_stage0_producers.roifinder1d.OutInstanceLabelVec: ["PHYSCRATEDATATPCWW","PHYSCRATEDATATPCWE","PHYSCRATEDATATPCEW","PHYSCRATEDATATPCEE"] diff --git a/fcl/reco/Definitions/stage0_icarus_driver_common.fcl b/fcl/reco/Definitions/stage0_icarus_driver_common.fcl index 6aff4f89b..89b774ee6 100644 --- a/fcl/reco/Definitions/stage0_icarus_driver_common.fcl +++ b/fcl/reco/Definitions/stage0_icarus_driver_common.fcl @@ -4,6 +4,7 @@ #include "stage0_icarus_defs.fcl" #include "services_common_icarus.fcl" #include "channelmapping_icarus.fcl" +#include "simulationservices_icarus.fcl" process_name: Stage0 @@ -13,8 +14,21 @@ services: IICARUSChannelMap: @local::icarus_channelmappinggservice IPMTTimingCorrectionService: @local::icarus_pmttimingservice @table::icarus_wirecalibration_minimum_services + @table::icarus_backtracking_services # from `simulationservices_icarus.fcl` + +} +services.SpaceChargeService: { + EnableCalEfieldSCE: false + EnableCalSpatialSCE: false + EnableCorrSCE: false + EnableSimEfieldSCE: false + EnableSimSpatialSCE: false + InputFilename: "SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root" + RepresentationType: "Voxelized_TH3" + service_provider: "SpaceChargeServiceICARUS" } + #source is a root file source: { diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl index dddafd72b..93ab23e34 100644 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl @@ -3,7 +3,7 @@ # Run the PMT+CRT stage0, initial TPC and East 2D deconv physics.path: [ @sequence::icarus_stage0_mc_PMT, MCDecodeTPCROI, - @sequence::icarus_stage0_2d_multiTPC_init_E, + @sequence::icarus_stage0_2d_multiTPC_E, @sequence::icarus_stage0_mc_crt ] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl index 285c2c302..a3fcf45f7 100644 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl @@ -1,13 +1,7 @@ #include "stage0_run2_wc_icarus_mc.fcl" # Run the West 2D deconv and finish TPC stage0 -physics.path: [@sequence::icarus_stage0_2d_multiTPC_finish_W] - -# Make hit finding run on WireCell gauss output -physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:gauss" -physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:gauss" -physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:gauss" -physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:gauss" +physics.path: [@sequence::icarus_stage0_2d_multiTPC_W] # Make hit-finding analysis point to WireCell wiener ROI output physics.analyzers.spanaE.WireProducers: ["decon2droiEE:wiener", "decon2droiEW:wiener"] diff --git a/fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl b/fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl index 459f943a1..4d27823b1 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl @@ -10,7 +10,7 @@ process_name: stage0 physics.path: [ @sequence::icarus_stage0_data_crtpmtfilter ] ## boiler plate... -physics.outana: [ purityinfoana0, purityinfoana1 ] +physics.outana: [ spanaE, spanaW, purityinfoana0, purityinfoana1 ] physics.trigger_paths: [ path ] physics.end_paths: [ outana, streamROOT ] diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl index 3f479d622..3a0521207 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl @@ -3,7 +3,7 @@ ## TPC data is included in an artdaq data product from a single instance ## #include "stage0_icarus_mc_defs.fcl" -#include "sp_filter_parameters.fcl" +#include "spana_icarus.fcl" #include "stage0_icarus_driver_common.fcl" process_name: MCstage0 @@ -44,91 +44,10 @@ physics.producers.ophit.InputModule: "opdaq" physics.producers.MCDecodeTPCROI.FragmentsLabelVec: ["daq:TPCWW","daq:TPCWE","daq:TPCEW","daq:TPCEE"] physics.producers.MCDecodeTPCROI.OutInstanceLabelVec: ["PHYSCRATEDATATPCWW", "PHYSCRATEDATATPCWE", "PHYSCRATEDATATPCEW", "PHYSCRATEDATATPCEE"] -physics.producers.decon1droi.RawDigitLabelVec: ["MCDecodeTPCROI:PHYSCRATEDATATPCWW","MCDecodeTPCROI:PHYSCRATEDATATPCWE","MCDecodeTPCROI:PHYSCRATEDATATPCEW","MCDecodeTPCROI:PHYSCRATEDATATPCEE"] - physics.producers.decon2droiEE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEE" physics.producers.decon2droiEW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEW" physics.producers.decon2droiWE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWE" physics.producers.decon2droiWW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWW" -# As per Gray Putname... -physics.producers.decon2droiEE.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiEW.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiWE.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiWW.wcls_main.structs.gain0: 17.05212 - -physics.producers.decon2droiEE.wcls_main.structs.gain1: 12.1420344 -physics.producers.decon2droiEW.wcls_main.structs.gain1: 12.1420344 -physics.producers.decon2droiWE.wcls_main.structs.gain1: 12.1420344 -physics.producers.decon2droiWW.wcls_main.structs.gain1: 12.1420344 - -physics.producers.decon2droiEE.wcls_main.structs.gain2: 13.0261362 -physics.producers.decon2droiEW.wcls_main.structs.gain2: 13.0261362 -physics.producers.decon2droiWE.wcls_main.structs.gain2: 13.0261362 -physics.producers.decon2droiWW.wcls_main.structs.gain2: 13.0261362 - - -physics.producers.decon2droiEE.wcls_main.structs.shaping0: 1.3 -physics.producers.decon2droiEW.wcls_main.structs.shaping0: 1.3 -physics.producers.decon2droiWE.wcls_main.structs.shaping0: 1.3 -physics.producers.decon2droiWW.wcls_main.structs.shaping0: 1.3 - -physics.producers.decon2droiEE.wcls_main.structs.shaping1: 1.45 -physics.producers.decon2droiEW.wcls_main.structs.shaping1: 1.45 -physics.producers.decon2droiWE.wcls_main.structs.shaping1: 1.45 -physics.producers.decon2droiWW.wcls_main.structs.shaping1: 1.45 - -physics.producers.decon2droiEE.wcls_main.structs.shaping2: 1.3 -physics.producers.decon2droiEW.wcls_main.structs.shaping2: 1.3 -physics.producers.decon2droiWE.wcls_main.structs.shaping2: 1.3 -physics.producers.decon2droiWW.wcls_main.structs.shaping2: 1.3 - # restore legacy G4 labels physics.producers.mcophit.SimPhotonsProducer: "largeant" - -# Defines final gain, in ADC/e- -physics.producers.decon2droiEE.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e -physics.producers.decon2droiEW.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e -physics.producers.decon2droiWE.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e -physics.producers.decon2droiWW.wcls_main.structs.gain_ADC_per_e: @local::gain_ADC_per_e - -# Filter parameters -physics.producers.decon2droiEE.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma -physics.producers.decon2droiEE.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power -physics.producers.decon2droiEE.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma -physics.producers.decon2droiEE.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma - -physics.producers.decon2droiEW.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma -physics.producers.decon2droiEW.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power -physics.producers.decon2droiEW.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma -physics.producers.decon2droiEW.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma - -physics.producers.decon2droiWE.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma -physics.producers.decon2droiWE.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power -physics.producers.decon2droiWE.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma -physics.producers.decon2droiWE.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma - -physics.producers.decon2droiWW.wcls_main.structs.Gaus_wide_sigma: @local::Gaus_wide_sigma -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_sigma: @local::Wiener_tight_U_sigma -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_U_power: @local::Wiener_tight_U_power -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_sigma: @local::Wiener_tight_V_sigma -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_V_power: @local::Wiener_tight_V_power -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_sigma: @local::Wiener_tight_W_sigma -physics.producers.decon2droiWW.wcls_main.structs.Wiener_tight_W_power: @local::Wiener_tight_W_power -physics.producers.decon2droiWW.wcls_main.structs.Wire_ind_sigma: @local::Wire_ind_sigma -physics.producers.decon2droiWW.wcls_main.structs.Wire_col_sigma: @local::Wire_col_sigma From 8d8d2117ce3ec16fee8ba34a520b613ff22dce2a Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 5 Nov 2024 11:02:19 -0600 Subject: [PATCH 21/43] Remove SPAna from being run by default. Add output drop commands back in. --- .../stage0_icarus_driver_common.fcl | 14 ------------- .../Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl | 2 -- .../Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl | 4 ---- .../Stage0/Run2/stage0_run2_wc_icarus_mc.fcl | 21 +++++++------------ 4 files changed, 8 insertions(+), 33 deletions(-) diff --git a/fcl/reco/Definitions/stage0_icarus_driver_common.fcl b/fcl/reco/Definitions/stage0_icarus_driver_common.fcl index 89b774ee6..6aff4f89b 100644 --- a/fcl/reco/Definitions/stage0_icarus_driver_common.fcl +++ b/fcl/reco/Definitions/stage0_icarus_driver_common.fcl @@ -4,7 +4,6 @@ #include "stage0_icarus_defs.fcl" #include "services_common_icarus.fcl" #include "channelmapping_icarus.fcl" -#include "simulationservices_icarus.fcl" process_name: Stage0 @@ -14,21 +13,8 @@ services: IICARUSChannelMap: @local::icarus_channelmappinggservice IPMTTimingCorrectionService: @local::icarus_pmttimingservice @table::icarus_wirecalibration_minimum_services - @table::icarus_backtracking_services # from `simulationservices_icarus.fcl` - -} -services.SpaceChargeService: { - EnableCalEfieldSCE: false - EnableCalSpatialSCE: false - EnableCorrSCE: false - EnableSimEfieldSCE: false - EnableSimSpatialSCE: false - InputFilename: "SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root" - RepresentationType: "Voxelized_TH3" - service_provider: "SpaceChargeServiceICARUS" } - #source is a root file source: { diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl index 93ab23e34..7c4d7afe4 100644 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc.fcl @@ -7,6 +7,4 @@ physics.path: [ @sequence::icarus_stage0_mc_PMT, @sequence::icarus_stage0_mc_crt ] -physics.outana: [] - process_name: MCstage0E diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl index a3fcf45f7..5da6bfcc3 100644 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc.fcl @@ -3,8 +3,4 @@ # Run the West 2D deconv and finish TPC stage0 physics.path: [@sequence::icarus_stage0_2d_multiTPC_W] -# Make hit-finding analysis point to WireCell wiener ROI output -physics.analyzers.spanaE.WireProducers: ["decon2droiEE:wiener", "decon2droiEW:wiener"] -physics.analyzers.spanaW.WireProducers: ["decon2droiWE:wiener", "decon2droiWW:wiener"] - process_name: MCstage0W diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl index 3a0521207..f7daf6fae 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl @@ -3,7 +3,6 @@ ## TPC data is included in an artdaq data product from a single instance ## #include "stage0_icarus_mc_defs.fcl" -#include "spana_icarus.fcl" #include "stage0_icarus_driver_common.fcl" process_name: MCstage0 @@ -20,22 +19,18 @@ physics.path: [ @sequence::icarus_stage0_mc_PMT, @sequence::icarus_stage0_mc_crt ] -physics.analyzers.spanaE: @local::spana2d_east -physics.analyzers.spanaW: @local::spana2d_west - ## boiler plate... -physics.outana: [ spanaE, spanaW ] physics.trigger_paths: [ path ] -physics.end_paths: [ outana, streamROOT ] +physics.end_paths: [ streamROOT ] # Drop the artdaq format files on output -# outputs.rootOutput.outputCommands: ["keep *_*_*_*", -# "drop *_daq*_*_*", -# "drop *_MCDecodeTPCROI_*_*", -# "drop *_decon1droi_*_*", -# "drop *_decon2droi*_*_*", -# "drop recob::Wire*_roifinder*_*_*", -# "keep *_daq_simpleSC*_*"] +outputs.rootOutput.outputCommands: ["keep *_*_*_*", + "drop *_daq*_*_*", + "drop *_MCDecodeTPCROI_*_*", + "drop *_decon1droi_*_*", + "drop *_decon2droi*_*_*", + "drop recob::Wire*_roifinder*_*_*", + "keep *_daq_simpleSC*_*"] # Set the expected input for ophit physics.producers.ophit.InputModule: "opdaq" From 3804ec3494b6d01bfa159d353ffd3681d90eacfd Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 5 Nov 2024 11:08:07 -0600 Subject: [PATCH 22/43] Make two-faced signal porcessing configuration the default. Remove old config files. --- fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl | 9 --------- .../Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl | 7 ------- fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl | 6 ------ ...rus_mc_2fdnn.fcl => stage0E_run2_wcdnn_icarus_mc.fcl} | 0 fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl | 3 --- fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl | 9 --------- .../Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl | 7 ------- fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl | 6 ------ ...rus_mc_2fdnn.fcl => stage0W_run2_wcdnn_icarus_mc.fcl} | 0 fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl | 9 --------- ...arus_mc_2fdnn.fcl => stage0_run2_wcdnn_icarus_mc.fcl} | 0 11 files changed, 56 deletions(-) delete mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl delete mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl delete mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl rename fcl/reco/Stage0/Run2/{stage0E_run2_wc_icarus_mc_2fdnn.fcl => stage0E_run2_wcdnn_icarus_mc.fcl} (100%) delete mode 100644 fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl delete mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl delete mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl delete mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl rename fcl/reco/Stage0/Run2/{stage0W_run2_wc_icarus_mc_2fdnn.fcl => stage0W_run2_wcdnn_icarus_mc.fcl} (100%) delete mode 100644 fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl rename fcl/reco/Stage0/Run2/{stage0_run2_wc_icarus_mc_2fdnn.fcl => stage0_run2_wcdnn_icarus_mc.fcl} (100%) diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl deleted file mode 100644 index 582fceda9..000000000 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f.fcl +++ /dev/null @@ -1,9 +0,0 @@ -#include "stage0E_run2_wc_icarus_mc.fcl" -# -# Turn on PCA noise suppression -# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" - -physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl deleted file mode 100644 index 3b7b3946d..000000000 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2f_raw.fcl +++ /dev/null @@ -1,7 +0,0 @@ -#include "stage0E_run2_wc_icarus_mc_2f.fcl" -physics.producers.MCDecodeTPCROI.OutputRawWaveform: true - -physics.producers.decon2droiEE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEERAW" -physics.producers.decon2droiEW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEWRAW" -physics.producers.decon2droiWE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWERAW" -physics.producers.decon2droiWW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWWRAW" diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl deleted file mode 100644 index a3cd262ac..000000000 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_h5.fcl +++ /dev/null @@ -1,6 +0,0 @@ -#include "stage0E_run2_wc_icarus_mc.fcl" - -physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] -physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] -physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] -physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2fdnn.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus_mc.fcl similarity index 100% rename from fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus_mc_2fdnn.fcl rename to fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus_mc.fcl diff --git a/fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl deleted file mode 100644 index 37cf6bd4d..000000000 --- a/fcl/reco/Stage0/Run2/stage0W_gauss_run2_wc_icarus_mc.fcl +++ /dev/null @@ -1,3 +0,0 @@ -#include "stage0W_run2_wc_icarus_mc.fcl" - -physics.producers.roifinder2d.WireModuleLabelVec: ["decon2droiWW:gauss","decon2droiWE:gauss","decon2droiEW:gauss","decon2droiEE:gauss"] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl deleted file mode 100644 index 648e3df18..000000000 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f.fcl +++ /dev/null @@ -1,9 +0,0 @@ -#include "stage0W_run2_wc_icarus_mc.fcl" - -# Turn on PCA noise suppression -# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" - -physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl deleted file mode 100644 index 5390fe12c..000000000 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2f_raw.fcl +++ /dev/null @@ -1,7 +0,0 @@ -#include "stage0W_run2_wc_icarus_mc_2f.fcl" - -physics.producers.MCDecodeTPCROI.OutputRawWaveform: true -physics.producers.decon2droiEE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEERAW" -physics.producers.decon2droiEW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCEWRAW" -physics.producers.decon2droiWE.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWERAW" -physics.producers.decon2droiWW.wcls_main.params.raw_input_label: "MCDecodeTPCROI:PHYSCRATEDATATPCWWRAW" diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl deleted file mode 100644 index 470103dea..000000000 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_h5.fcl +++ /dev/null @@ -1,6 +0,0 @@ -#include "stage0W_run2_wc_icarus_mc.fcl" - -physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] -physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] -physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] -physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-h5.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2fdnn.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus_mc.fcl similarity index 100% rename from fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus_mc_2fdnn.fcl rename to fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus_mc.fcl diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl deleted file mode 100644 index 425df4f49..000000000 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2f.fcl +++ /dev/null @@ -1,9 +0,0 @@ -#include "stage0_run2_wc_icarus_mc.fcl" - -# Turn on PCA noise suppression -# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" - -physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] -physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2fdnn.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl similarity index 100% rename from fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc_2fdnn.fcl rename to fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl From 54059bb3873b4d9821f2841402b508de78ad83f4 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 5 Nov 2024 11:08:43 -0600 Subject: [PATCH 23/43] Update default jsonnet to two-faced SP. --- fcl/reco/Definitions/stage0_icarus_defs.fcl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fcl/reco/Definitions/stage0_icarus_defs.fcl b/fcl/reco/Definitions/stage0_icarus_defs.fcl index b9afc4fed..a18836f91 100644 --- a/fcl/reco/Definitions/stage0_icarus_defs.fcl +++ b/fcl/reco/Definitions/stage0_icarus_defs.fcl @@ -358,6 +358,7 @@ icarus_stage0_producers.decon2droi.wcls_main.params.tpc_volume_label: icarus_stage0_producers.decon2droi.wcls_main.params.signal_output_form: "dense" icarus_stage0_producers.decon2droi.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droi.wcls_main.loglevels: ["debug", "pgraph:info"] +icarus_stage0_producers.decon2droi.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] icarus_stage0_producers.decon2droiEE.wcls_main.inputers: ["wclsRawFrameSource:rfsrc0"] icarus_stage0_producers.decon2droiEE.wcls_main.outputers: ["wclsFrameSaver:spsaver0"] @@ -367,6 +368,7 @@ icarus_stage0_producers.decon2droiEE.wcls_main.params.signal_output_form: icarus_stage0_producers.decon2droiEE.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiEE.wcls_main.loglevels: ["debug", "pgraph:info"] icarus_stage0_producers.decon2droiEE.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiEE.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] +icarus_stage0_producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] icarus_stage0_producers.decon2droiEW.wcls_main.inputers: ["wclsRawFrameSource:rfsrc1"] icarus_stage0_producers.decon2droiEW.wcls_main.outputers: ["wclsFrameSaver:spsaver1"] @@ -376,6 +378,7 @@ icarus_stage0_producers.decon2droiEW.wcls_main.params.signal_output_form: icarus_stage0_producers.decon2droiEW.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiEW.wcls_main.loglevels: ["debug", "pgraph:info"] icarus_stage0_producers.decon2droiEW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiEW.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] +icarus_stage0_producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] icarus_stage0_producers.decon2droiWE.wcls_main.inputers: ["wclsRawFrameSource:rfsrc2"] icarus_stage0_producers.decon2droiWE.wcls_main.outputers: ["wclsFrameSaver:spsaver2"] @@ -385,6 +388,7 @@ icarus_stage0_producers.decon2droiWE.wcls_main.params.signal_output_form: icarus_stage0_producers.decon2droiWE.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiWE.wcls_main.loglevels: ["debug", "pgraph:info"] icarus_stage0_producers.decon2droiWE.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWE.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] +icarus_stage0_producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] icarus_stage0_producers.decon2droiWW.wcls_main.inputers: ["wclsRawFrameSource:rfsrc3"] icarus_stage0_producers.decon2droiWW.wcls_main.outputers: ["wclsFrameSaver:spsaver3"] @@ -394,6 +398,7 @@ icarus_stage0_producers.decon2droiWW.wcls_main.params.signal_output_form: icarus_stage0_producers.decon2droiWW.wcls_main.logsinks: ["stdout"] icarus_stage0_producers.decon2droiWW.wcls_main.loglevels: ["debug", "pgraph:info"] icarus_stage0_producers.decon2droiWW.wcls_main.plugins: [@sequence::icarus_stage0_producers.decon2droiWW.wcls_main.plugins, "WireCellHio", "WireCellPytorch"] +icarus_stage0_producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced.jsonnet"] # Signal processing values icarus_stage0_producers.decon2droiEE.wcls_main.structs.gain0: 17.05212 From def2ea852943e2f15001e99da10e95b0abef2f25 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 5 Nov 2024 11:14:45 -0600 Subject: [PATCH 24/43] Remove SPana from default stage0 configs --- fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl | 2 +- fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl b/fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl index 4d27823b1..459f943a1 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_icarus.fcl @@ -10,7 +10,7 @@ process_name: stage0 physics.path: [ @sequence::icarus_stage0_data_crtpmtfilter ] ## boiler plate... -physics.outana: [ spanaE, spanaW, purityinfoana0, purityinfoana1 ] +physics.outana: [ purityinfoana0, purityinfoana1 ] physics.trigger_paths: [ path ] physics.end_paths: [ outana, streamROOT ] diff --git a/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl index b27a1f090..bad3b013f 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl @@ -21,7 +21,7 @@ physics.path: [ @sequence::icarus_stage0_mc_PMT, ] ## boiler plate... -physics.outana: [ spanaE, spanaW, purityinfoana0, purityinfoana1 ] +physics.outana: [ purityinfoana0, purityinfoana1 ] physics.trigger_paths: [ path ] physics.end_paths: [ outana, streamROOT ] From b9041531591b782bd7b3114172357fac69cc761b Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 5 Nov 2024 11:16:54 -0600 Subject: [PATCH 25/43] Drop extra products in 1D SP config. --- fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl index bad3b013f..4de87f414 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_icarus_mc.fcl @@ -27,12 +27,12 @@ physics.end_paths: [ outana, streamROOT ] # Drop data products that are no longer needed, but make sure to keep important items! # For example, we need to drop the RawDigits from the detector simulation stage but want to keep the SimChannel info from WireCell... -#outputs.rootOutput.outputCommands: ["keep *_*_*_*", -# "drop *_daq*_*_*", -# "drop *_MCDecodeTPCROI_*_*", -# "drop *_decon1droi_*_*", -# "drop recob::Wire*_roifinder_*_*", -# "keep *_daq_simpleSC_*"] +outputs.rootOutput.outputCommands: ["keep *_*_*_*", + "drop *_daq*_*_*", + "drop *_MCDecodeTPCROI_*_*", + "drop *_decon1droi_*_*", + "drop recob::Wire*_roifinder_*_*", + "keep *_daq_simpleSC_*"] # Set the expected input for ophit physics.producers.ophit.InputModule: "opdaq" From 1f6b703dfdcc485b9fb47c5bc8665e7efa80565e Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 5 Nov 2024 11:18:31 -0600 Subject: [PATCH 26/43] Revert nits in stage0 2D SP config. --- fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl index f7daf6fae..26fef30e6 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus_mc.fcl @@ -20,17 +20,18 @@ physics.path: [ @sequence::icarus_stage0_mc_PMT, ] ## boiler plate... +physics.outana: [ ] physics.trigger_paths: [ path ] -physics.end_paths: [ streamROOT ] +physics.end_paths: [ outana, streamROOT ] # Drop the artdaq format files on output outputs.rootOutput.outputCommands: ["keep *_*_*_*", "drop *_daq*_*_*", - "drop *_MCDecodeTPCROI_*_*", - "drop *_decon1droi_*_*", - "drop *_decon2droi*_*_*", - "drop recob::Wire*_roifinder*_*_*", - "keep *_daq_simpleSC*_*"] + "drop *_MCDecodeTPCROI_*_*", + "drop *_decon1droi_*_*", + "drop *_decon2droi*_*_*", + "drop recob::Wire*_roifinder*_*_*", + "keep *_daq_simpleSC*_*"] # Set the expected input for ophit physics.producers.ophit.InputModule: "opdaq" From deca7efc8c6075627da1a9b80a87e363e60f00f0 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 5 Nov 2024 11:32:57 -0600 Subject: [PATCH 27/43] Add data SP configs for E+W and for DNN. --- .../Stage0/Run2/stage0E_run2_wc_icarus.fcl | 10 ++++++ .../Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl | 9 +++++ .../Stage0/Run2/stage0W_run2_wc_icarus.fcl | 8 +++++ .../Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl | 9 +++++ .../Stage0/Run2/stage0_run2_wc_icarus.fcl | 33 ------------------- .../Stage0/Run2/stage0_run2_wcdnn_icarus.fcl | 10 ++++++ 6 files changed, 46 insertions(+), 33 deletions(-) create mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl create mode 100644 fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus.fcl new file mode 100644 index 000000000..a448be2ca --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wc_icarus.fcl @@ -0,0 +1,10 @@ +#include "stage0_run2_wc_icarus.fcl" + +physics.path: [ + filterdataintegrity, + @sequence::icarus_stage0_PMT, + @sequence::icarus_stage0_CRT, + daqTPCROI, + @sequence::icarus_stage0_multiTPC_2d_TPC_E, + @sequence::icarus_stage0_EastHits2d_TPC +] diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl new file mode 100644 index 000000000..3677bd460 --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl @@ -0,0 +1,9 @@ +#include "stage0E_run2_wc_icarus.fcl" +# +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus.fcl new file mode 100644 index 000000000..967076819 --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wc_icarus.fcl @@ -0,0 +1,8 @@ +#include "stage0_run2_wc_icarus.fcl" + +physics.path: [ + @sequence::icarus_stage0_multiTPC_2d_TPC_W, + @sequence::icarus_stage0_WestHits2d_TPC +] + +process_name: stage0W diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl new file mode 100644 index 000000000..591526f1d --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl @@ -0,0 +1,9 @@ +#include "stage0W_run2_wc_icarus.fcl" + +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus.fcl index 50fc99937..e9bc6bc56 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wc_icarus.fcl @@ -32,39 +32,6 @@ outputs.rootOutput.outputCommands: ["keep *_*_*_*", "keep *_daq_ICARUSTriggerV*_*" ] -# Add below as per Gray Putnam (should we move to jsonnet files?) -physics.producers.decon2droiEE.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiEW.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiWE.wcls_main.structs.gain0: 17.05212 -physics.producers.decon2droiWW.wcls_main.structs.gain0: 17.05212 - - -physics.producers.decon2droiEE.wcls_main.structs.gain1: 12.1420344 -physics.producers.decon2droiEW.wcls_main.structs.gain1: 12.1420344 -physics.producers.decon2droiWE.wcls_main.structs.gain1: 12.1420344 -physics.producers.decon2droiWW.wcls_main.structs.gain1: 12.1420344 - -physics.producers.decon2droiEE.wcls_main.structs.gain2: 13.0261362 -physics.producers.decon2droiEW.wcls_main.structs.gain2: 13.0261362 -physics.producers.decon2droiWE.wcls_main.structs.gain2: 13.0261362 -physics.producers.decon2droiWW.wcls_main.structs.gain2: 13.0261362 - - -physics.producers.decon2droiEE.wcls_main.structs.shaping0: 1.3 -physics.producers.decon2droiEW.wcls_main.structs.shaping0: 1.3 -physics.producers.decon2droiWE.wcls_main.structs.shaping0: 1.3 -physics.producers.decon2droiWW.wcls_main.structs.shaping0: 1.3 - -physics.producers.decon2droiEE.wcls_main.structs.shaping1: 1.45 -physics.producers.decon2droiEW.wcls_main.structs.shaping1: 1.45 -physics.producers.decon2droiWE.wcls_main.structs.shaping1: 1.45 -physics.producers.decon2droiWW.wcls_main.structs.shaping1: 1.45 - -physics.producers.decon2droiEE.wcls_main.structs.shaping2: 1.3 -physics.producers.decon2droiEW.wcls_main.structs.shaping2: 1.3 -physics.producers.decon2droiWE.wcls_main.structs.shaping2: 1.3 -physics.producers.decon2droiWW.wcls_main.structs.shaping2: 1.3 - services.message.destinations : { STDCOUT: diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl new file mode 100644 index 000000000..7a120f8ab --- /dev/null +++ b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl @@ -0,0 +1,10 @@ +#include "stage0_run2_wc_icarus.fcl" + +# Turn on PCA noise suppression +# physics.producers.MCDecodeTPCROI.DecoderTool.DenoiserType: "pca" + +physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] + From 7a66108ae18739b3b4ace7f2ea401cc8a040c302 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 6 Nov 2024 17:26:46 -0600 Subject: [PATCH 28/43] Set hit finder wires correctly for DNN configs. --- fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl | 5 +++++ fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus_mc.fcl | 5 +++++ fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl | 5 +++++ fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus_mc.fcl | 5 +++++ fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl | 4 ++++ fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl | 5 +++++ 6 files changed, 29 insertions(+) diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl index 3677bd460..4dee98c0f 100644 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus.fcl @@ -7,3 +7,8 @@ physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/w physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] + +physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:dnnsp" +physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:dnnsp" +physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:dnnsp" +physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:dnnsp" diff --git a/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus_mc.fcl index 9d6e7fbca..496e730dd 100644 --- a/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0E_run2_wcdnn_icarus_mc.fcl @@ -7,3 +7,8 @@ physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/w physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] + +physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:dnnsp" +physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:dnnsp" +physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:dnnsp" +physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:dnnsp" diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl index 591526f1d..e1c5866a7 100644 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus.fcl @@ -7,3 +7,8 @@ physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/w physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] + +physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:dnnsp" +physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:dnnsp" +physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:dnnsp" +physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:dnnsp" diff --git a/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus_mc.fcl index bf5bbf56c..b1661935b 100644 --- a/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0W_run2_wcdnn_icarus_mc.fcl @@ -7,3 +7,8 @@ physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/w physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] + +physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:dnnsp" +physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:dnnsp" +physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:dnnsp" +physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:dnnsp" diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl index 7a120f8ab..70b694516 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus.fcl @@ -8,3 +8,7 @@ physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/w physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] +physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:dnnsp" +physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:dnnsp" +physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:dnnsp" +physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:dnnsp" diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl index d4b172013..e42f69541 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl @@ -7,3 +7,8 @@ physics.producers.decon2droiEE.wcls_main.configs: ["pgrapher/experiment/icarus/w physics.producers.decon2droiEW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWE.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] physics.producers.decon2droiWW.wcls_main.configs: ["pgrapher/experiment/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet"] + +physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:dnnsp" +physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:dnnsp" +physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:dnnsp" +physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:dnnsp" From 48fbc45b823f8817c9bf1748e971e4b8160dff84 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Thu, 7 Nov 2024 11:01:35 -0600 Subject: [PATCH 29/43] Move hit-finder updates into overrides for 2D hit finding. --- fcl/reco/Definitions/stage0_icarus_defs.fcl | 21 +++++++++++++++++++ .../HitFinder/hitfindermodules_icarus.fcl | 13 ++++++------ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/fcl/reco/Definitions/stage0_icarus_defs.fcl b/fcl/reco/Definitions/stage0_icarus_defs.fcl index a18836f91..95fb08b07 100644 --- a/fcl/reco/Definitions/stage0_icarus_defs.fcl +++ b/fcl/reco/Definitions/stage0_icarus_defs.fcl @@ -506,6 +506,27 @@ icarus_stage0_producers.gaushit2dTPCWE.CalDataModuleLabel: icarus_stage0_producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:gauss" icarus_stage0_producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:gauss" +# Lower thresholds for tighter filter width +icarus_stage0_producers.gaushit2dTPCEE.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCEE.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCEE.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCEE.HitFilterAlg.MinPulseHeight: [3., 3., 3.] + +icarus_stage0_producers.gaushit2dTPCEW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCEW.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCEW.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCEW.HitFilterAlg.MinPulseHeight: [3., 3., 3.] + +icarus_stage0_producers.gaushit2dTPCWE.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCWE.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCWE.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCWE.HitFilterAlg.MinPulseHeight: [3., 3., 3.] + +icarus_stage0_producers.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 5. +icarus_stage0_producers.gaushit2dTPCWW.HitFilterAlg.MinPulseHeight: [3., 3., 3.] + icarus_stage0_producers.gausshitTPCWW.CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWW" icarus_stage0_producers.gausshitTPCWE.CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCWE" icarus_stage0_producers.gausshitTPCEW.CalDataModuleLabel: "roifinder:PHYSCRATEDATATPCEW" diff --git a/icaruscode/TPC/SignalProcessing/HitFinder/hitfindermodules_icarus.fcl b/icaruscode/TPC/SignalProcessing/HitFinder/hitfindermodules_icarus.fcl index 1b7efcba6..bda1f1dd9 100644 --- a/icaruscode/TPC/SignalProcessing/HitFinder/hitfindermodules_icarus.fcl +++ b/icaruscode/TPC/SignalProcessing/HitFinder/hitfindermodules_icarus.fcl @@ -92,14 +92,13 @@ gaus_hitfinder_icarus.LongPulseWidth: # These are default settings for production running gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0: @local::candhitfinder_standard # Sets hit finding for plane 0 gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0.Plane: 0 -gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. +gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 9. gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1: @local::candhitfinder_standard # Sets hit finding for plane 1 gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1.Plane: 1 -gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 5 +gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 9.5 gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2: @local::candhitfinder_standard # Sets hit finding for plane 2 gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2.Plane: 2 -gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 5. -gaus_hitfinder_icarus.HitFilterAlg.MinPulseHeight: [3., 3., 3.] +gaus_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 9. # Define icarus version of test version gausshit finder gauss_hitfinder_icarus: @local::gaus_hitfinder @@ -117,13 +116,13 @@ gauss_hitfinder_icarus.LongMaxHits: gauss_hitfinder_icarus.LongPulseWidth: [10, 10, 10] gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0: @local::candhitfinder_standard gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane0.Plane: 0 -gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. +gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 9. gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1: @local::candhitfinder_standard gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane1.Plane: 1 -gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. +gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 9.5 gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2: @local::candhitfinder_standard gauss_hitfinder_icarus.HitFinderToolVec.CandidateHitsPlane2.Plane: 2 -gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 5. +gauss_hitfinder_icarus.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 9. icarus_hitconverter: From e118aac2c3903568ccd04c0ca7c81f4751e2a36e Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 13 Nov 2024 16:12:06 -0600 Subject: [PATCH 30/43] Only create necessary frames. --- .../wcls-decode-to-sig-twofaced.jsonnet | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet index 8066c1dc6..2558e22c8 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet @@ -158,8 +158,8 @@ local wcls_output = { // frame_tags: ['gauss','wiener','looseLf','shrinkROI','extendROI','mp3ROI','mp2ROI', 'cleanupROI'], // frame_scale: [0.009,0.009,0.009,0.009,0.009,0.009,0.009,0.009], - frame_tags: ['gauss', 'wiener', 'looseLf'], - frame_scale: [std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e')], + frame_tags: ['gauss'], + frame_scale: [std.extVar('gain_ADC_per_e')], // nticks: params.daq.nticks, chanmaskmaps: [], @@ -209,19 +209,22 @@ local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', - use_roi_refinement: true, - use_roi_debug_mode: true, -// wiener_tag: "", - // gauss_tag: "", + use_roi_refinement: false, + use_roi_debug_mode: false, + wiener_tag: "", + // gauss_tag: "", tight_lf_tag: "", - // loose_lf_tag: "", + loose_lf_tag: "", break_roi_loop1_tag: "", break_roi_loop2_tag: "", - //shrink_roi_tag: "", - //extend_roi_tag: "", - m_decon_charge_tag: "", - use_multi_plane_protection: true, - mp_tick_resolution: 10, + shrink_roi_tag: "", + extend_roi_tag: "", + m_decon_charge_tag: "", + cleanup_roi_tag: "", + mp2_roi_tag: "", + mp3_roi_tag: "", + use_multi_plane_protection: false, + mp_tick_resolution: 8, process_planes: [0, 1, 2], isWrapped: true, nwires_separate_planes: [ From f381893c9b102664de69b71f204c9ea0b7162655 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 13 Nov 2024 16:12:39 -0600 Subject: [PATCH 31/43] Only save needed frames for DNN. Add in chunking. --- .../TPC/ICARUSWireCell/icarus/dnnroi.jsonnet | 8 ++++-- ...wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 28 +++++++++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet index df53dd248..43c92cb32 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet @@ -10,7 +10,7 @@ local wc = import "wirecell.jsonnet"; local pg = import "pgraph.jsonnet"; -function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0) +function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0, nchunk_u=1, nchunk_v=1) local apaid = anode.data.ident; local prename = prefix + std.toString(apaid); local intags = ['loose_lf%d'%apaid, // 'mp2_roi%d'%apaid, @@ -27,7 +27,8 @@ function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0) outtag: "dnnsp%du"%apaid, output_scale: output_scale, forward: wc.tn(ts_u), - tick_per_slice: 8 + tick_per_slice: 8, + nchunks: nchunk_u } }, nin=1, nout=1, uses=[ts_u, anode]); local dnnroi_v = pg.pnode({ @@ -41,7 +42,8 @@ function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0) outtag: "dnnsp%dv"%apaid, output_scale: output_scale, forward: wc.tn(ts_v), - tick_per_slice: 8 + tick_per_slice: 8, + nchunks: nchunk_v } }, nin=1, nout=1, uses=[ts_v, anode]); local dnnroi_w = pg.pnode({ diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet index 8a0c7817b..d81d8959e 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -158,8 +158,8 @@ local wcls_output = { // frame_tags: ['gauss','wiener','looseLf','shrinkROI','extendROI','mp3ROI','mp2ROI', 'cleanupROI'], // frame_scale: [0.009,0.009,0.009,0.009,0.009,0.009,0.009,0.009], - frame_tags: ['gauss', 'wiener', 'looseLf', 'dnnsp'], - frame_scale: [std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e'), std.extVar('gain_ADC_per_e')], + frame_tags: ['dnnsp'], + frame_scale: [std.extVar('gain_ADC_per_e')], // nticks: params.daq.nticks, chanmaskmaps: [], @@ -210,18 +210,22 @@ local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', - use_roi_refinement: true, - use_roi_debug_mode: true, -// wiener_tag: "", - // gauss_tag: "", - tight_lf_tag: "", - // loose_lf_tag: "", + use_roi_refinement: false, + use_roi_debug_mode: false, + wiener_tag: "", + // gauss_tag: "", + // tight_lf_tag: "", + loose_lf_tag: "", break_roi_loop1_tag: "", break_roi_loop2_tag: "", - //shrink_roi_tag: "", - //extend_roi_tag: "", + shrink_roi_tag: "", + extend_roi_tag: "", + m_decon_charge_tag: "", + cleanup_roi_tag: "", + // mp2_roi_tag: "", + // mp3_roi_tag: "", use_multi_plane_protection: true, - mp_tick_resolution: 10, + mp_tick_resolution: 8, process_planes: [0, 1, 2], isWrapped: true, nwires_separate_planes: [ @@ -277,7 +281,7 @@ local nfsp_pipes = [ // nf_pipes[n], // magnifyio.raw_pipe[n], sp_pipes[n], - dnnroi(tools.anodes[n], ts_u, ts_v, output_scale=1), + dnnroi(tools.anodes[n], ts_u, ts_v, output_scale=1, nchunk_u=2, nchunk_v=4), // magnifyio.decon_pipe[n], // magnifyio.threshold_pipe[n], // magnifyio.debug_pipe[n], // use_roi_debug_mode: true in sp.jsonnet From 4f83c19b21b9f3684e67650acb57d5050c2a0eae Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 13 Nov 2024 16:48:20 -0600 Subject: [PATCH 32/43] fcl typo fix --- fcl/reco/Definitions/stage0_icarus_defs.fcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fcl/reco/Definitions/stage0_icarus_defs.fcl b/fcl/reco/Definitions/stage0_icarus_defs.fcl index 95fb08b07..0e71e272e 100644 --- a/fcl/reco/Definitions/stage0_icarus_defs.fcl +++ b/fcl/reco/Definitions/stage0_icarus_defs.fcl @@ -217,7 +217,7 @@ icarus_stage0_multiTPC_2d_TPC_E:[ icarus_stage0_multiTPC_2d_TPC_W:[ decon2droiWE, - decon2droiWW, + decon2droiWW ] icarus_stage0_multiTPC_2d_TPC: [@sequence::icarus_stage0_multiTPC_2d_TPC_E, @sequence::icarus_stage0_multiTPC_2d_TPC_W] From 8ba40ea7129b731d70773c4a075fee6bfbe95c3f Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 13 Nov 2024 16:48:41 -0600 Subject: [PATCH 33/43] Compilation fix for new recob::Hit --- icaruscode/TPC/SPAna/SPAna_module.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/icaruscode/TPC/SPAna/SPAna_module.cc b/icaruscode/TPC/SPAna/SPAna_module.cc index e6078a968..4a8330e49 100644 --- a/icaruscode/TPC/SPAna/SPAna_module.cc +++ b/icaruscode/TPC/SPAna/SPAna_module.cc @@ -500,7 +500,7 @@ sbn::HitInfo SPAna::MakeHit(const recob::Hit &hit, // information from the hit object h.integral = hit.Integral(); - h.sumadc = hit.SummedADC(); + h.sumadc = hit.ROISummedADC(); h.width = hit.RMS(); h.time = hit.PeakTime(); h.mult = hit.Multiplicity(); From 5e35da26bfe1cee6202bb9246c0fcabdaebc49e5 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 20 Nov 2024 13:07:26 -0600 Subject: [PATCH 34/43] Fix chunking. --- icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet | 2 +- .../icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet index 43c92cb32..e1ede7bd1 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet @@ -10,7 +10,7 @@ local wc = import "wirecell.jsonnet"; local pg = import "pgraph.jsonnet"; -function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0, nchunk_u=1, nchunk_v=1) +function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0, nchunk_u=2, nchunk_v=4) local apaid = anode.data.ident; local prename = prefix + std.toString(apaid); local intags = ['loose_lf%d'%apaid, // 'mp2_roi%d'%apaid, diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet index d81d8959e..718501e6b 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -281,7 +281,7 @@ local nfsp_pipes = [ // nf_pipes[n], // magnifyio.raw_pipe[n], sp_pipes[n], - dnnroi(tools.anodes[n], ts_u, ts_v, output_scale=1, nchunk_u=2, nchunk_v=4), + dnnroi(tools.anodes[n], ts_u, ts_v, output_scale=1), // magnifyio.decon_pipe[n], // magnifyio.threshold_pipe[n], // magnifyio.debug_pipe[n], // use_roi_debug_mode: true in sp.jsonnet From e8e6b6a029a86b8dc0c3cc300e394fba1475b2af Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 20 Nov 2024 13:07:37 -0600 Subject: [PATCH 35/43] Update DNN ROI Model. --- .../icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet index 718501e6b..ccba366c1 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -257,7 +257,7 @@ local ts_u = { type: "TorchService", name: "dnnroi_u", data: { - model: "NNs/UNet-optfilter-opaqueMC_U_Plane.ts", + model: "NNsv2/UNet-randMC_Plane0.ts", device: "cpu", concurrency: 1, }, @@ -267,7 +267,7 @@ local ts_v = { type: "TorchService", name: "dnnroi_v", data: { - model: "NNs/UNet-optfilter-opaqueMC_V_Plane.ts", + model: "NNsv2/UNet-randMC_Plane1.ts", device: "cpu", concurrency: 1, }, From 6df73e51c3d16197601488699b3e50ede7295826 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 4 Dec 2024 10:59:03 -0600 Subject: [PATCH 36/43] Map planes to views correctly. Disble gzip compression (doesn't work with new H5 interface). Fixes to which frames get created. Don't save H5 files by default. --- ...wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 29 +++++++++++++------ .../wcls-decode-to-sig-twofaced.jsonnet | 20 +++++++++---- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet index ccba366c1..77bb63c13 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -138,6 +138,11 @@ local wcls_output = { frame_tags: ['raw'], // nticks: params.daq.nticks, chanmaskmaps: ['bad'], + plane_map: { + "1": 3, // front induction: WireCell::kULayer -> geo::kH (1 -> 3) + "2": 1, // middle induction: WireCell:kVLayer -> geo::kV (2 -> 1) + "4": 0, // collection: WireCell::kWLayer -> geo::kU (4 -> 0) + }, }, }, nin=1, nout=1, uses=[this_anode]), @@ -164,6 +169,11 @@ local wcls_output = { // nticks: params.daq.nticks, chanmaskmaps: [], nticks: -1, + plane_map: { + "1": 3, // front induction: WireCell::kULayer -> geo::kH (1 -> 3) + "2": 1, // middle induction: WireCell:kVLayer -> geo::kV (2 -> 1) + "4": 0, // collection: WireCell::kWLayer -> geo::kU (4 -> 0) + }, }, }, nin=1, nout=1, uses=[this_anode]), @@ -188,7 +198,7 @@ local wcls_output = { ], filename: "wc-sp-%d.h5" % volume, chunk: [0, 0], // ncol, nrow - gzip: 2, + gzip: 0, high_throughput: true, }, }, nin=1, nout=1, uses=[this_anode]), @@ -210,17 +220,17 @@ local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', - use_roi_refinement: false, - use_roi_debug_mode: false, + use_roi_refinement: true, + use_roi_debug_mode: true, wiener_tag: "", // gauss_tag: "", - // tight_lf_tag: "", - loose_lf_tag: "", + tight_lf_tag: "", + // loose_lf_tag: "", break_roi_loop1_tag: "", break_roi_loop2_tag: "", shrink_roi_tag: "", extend_roi_tag: "", - m_decon_charge_tag: "", + // decon_charge_tag: "", cleanup_roi_tag: "", // mp2_roi_tag: "", // mp3_roi_tag: "", @@ -319,7 +329,7 @@ local fanin_tag_rules = [ ['mp2_roi%d'%ind]:'mp2_roi%d'%ind, ['mp3_roi%d'%ind]:'mp3_roi%d'%ind, ['gauss%d'%ind]:'gauss%d'%ind, - ['dnnsp%d'%ind]:'dnnsp%d'%ind, + 'dnnsp\\d':'dnnsp%d'%ind, ['wiener%d'%ind]:'wiener%d'%ind, // ['threshold%d'%ind]:'threshold%d'%ind, // ['tight_lf%d'%ind]:'tight_lf%d'%ind, @@ -330,7 +340,7 @@ local fanin_tag_rules = [ } for ind in [this_anode.data.ident] ]; -// local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); +local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); local retagger = g.pnode({ type: 'Retagger', @@ -363,7 +373,8 @@ local retagger = g.pnode({ local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); -local graph = g.pipeline([wcls_input.adc_digits, chsel_pipes[volume], sp_pipes[volume], dnnroi(this_anode, ts_u, ts_v, output_scale=1), retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); +// local graph = g.pipeline([wcls_input.adc_digits, chsel_pipes[volume], sp_pipes[volume], dnnroi(this_anode, ts_u, ts_v, output_scale=1), retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); +local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.sp_signals, sink]); local app = { type: 'Pgrapher', diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet index 2558e22c8..29e76f823 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet @@ -138,6 +138,11 @@ local wcls_output = { frame_tags: ['raw'], // nticks: params.daq.nticks, chanmaskmaps: ['bad'], + plane_map: { + "1": 3, // front induction: WireCell::kULayer -> geo::kH (1 -> 3) + "2": 1, // middle induction: WireCell:kVLayer -> geo::kV (2 -> 1) + "4": 0, // collection: WireCell::kWLayer -> geo::kU (4 -> 0) + }, }, }, nin=1, nout=1, uses=[this_anode]), @@ -164,6 +169,11 @@ local wcls_output = { // nticks: params.daq.nticks, chanmaskmaps: [], nticks: -1, + plane_map: { + "1": 3, // front induction: WireCell::kULayer -> geo::kH (1 -> 3) + "2": 1, // middle induction: WireCell:kVLayer -> geo::kV (2 -> 1) + "4": 0, // collection: WireCell::kWLayer -> geo::kU (4 -> 0) + }, }, }, nin=1, nout=1, uses=[this_anode]), @@ -187,7 +197,7 @@ local wcls_output = { ], filename: "wc-sp-%d.h5" % volume, chunk: [0, 0], // ncol, nrow - gzip: 2, + gzip: 0, high_throughput: true, }, }, nin=1, nout=1, uses=[this_anode]), @@ -209,9 +219,9 @@ local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', - use_roi_refinement: false, + use_roi_refinement: true, use_roi_debug_mode: false, - wiener_tag: "", + // wiener_tag: "", // gauss_tag: "", tight_lf_tag: "", loose_lf_tag: "", @@ -219,7 +229,7 @@ local sp_override = { // assume all tages sets in base sp.jsonnet break_roi_loop2_tag: "", shrink_roi_tag: "", extend_roi_tag: "", - m_decon_charge_tag: "", + decon_charge_tag: "", cleanup_roi_tag: "", mp2_roi_tag: "", mp3_roi_tag: "", @@ -340,7 +350,7 @@ local retagger = g.pnode({ local sink = g.pnode({ type: 'DumpFrames' }, nin=1, nout=0); -local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.h5io, wcls_output.sp_signals, sink]); +local graph = g.pipeline([wcls_input.adc_digits, fanpipe, retagger, wcls_output.sp_signals, sink]); local app = { type: 'Pgrapher', From f9269f2be7287a473906cc9a4b1003df4d2dd260 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Wed, 4 Dec 2024 10:59:51 -0600 Subject: [PATCH 37/43] Make SPAna default to 2D SP. Fix art tags. --- icaruscode/TPC/SPAna/run_spana_icarus.fcl | 4 ++-- icaruscode/TPC/SPAna/spana_icarus.fcl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/icaruscode/TPC/SPAna/run_spana_icarus.fcl b/icaruscode/TPC/SPAna/run_spana_icarus.fcl index d56e2fe1b..9224fe419 100644 --- a/icaruscode/TPC/SPAna/run_spana_icarus.fcl +++ b/icaruscode/TPC/SPAna/run_spana_icarus.fcl @@ -56,8 +56,8 @@ physics: analyzers: { - spanaE: @local::spana1d_east - spanaW: @local::spana1d_west + spanaE: @local::spana2d_east + spanaW: @local::spana2d_west } runprod: [] diff --git a/icaruscode/TPC/SPAna/spana_icarus.fcl b/icaruscode/TPC/SPAna/spana_icarus.fcl index 833523826..cebb35042 100644 --- a/icaruscode/TPC/SPAna/spana_icarus.fcl +++ b/icaruscode/TPC/SPAna/spana_icarus.fcl @@ -22,7 +22,7 @@ spana2d_east: { module_type: SPAna Cryostat: 0 HitProducers: ["gaushit2dTPCEE", "gaushit2dTPCEW"] - WireProducers: ["roifinder2d:PHYSCRATEDATATPCEE", "roifinder2d:PHYSCRATEDATATPCEW"] + WireProducers: ["decon2droiEE:gauss", "decon2droiEW:gauss"] G4Producer: "largeant" SimChannelProducer: "daq:simpleSC" } @@ -31,7 +31,7 @@ spana2d_west: { module_type: SPAna Cryostat: 1 HitProducers: ["gaushit2dTPCWE", "gaushit2dTPCWW"] - WireProducers: ["roifinder2d:PHYSCRATEDATATPCWE", "roifinder2d:PHYSCRATEDATATPCWW"] + WireProducers: ["decon2droiWE:gauss", "decon2droiWW:gauss"] G4Producer: "largeant" SimChannelProducer: "daq:simpleSC" } From 0d92d3605c46479e62db127df65e3d79984aa0e0 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 6 Jan 2025 14:59:32 -0600 Subject: [PATCH 38/43] Typo fix. --- fcl/reco/Definitions/stage0_icarus_defs.fcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fcl/reco/Definitions/stage0_icarus_defs.fcl b/fcl/reco/Definitions/stage0_icarus_defs.fcl index 0e71e272e..2a6f08f2a 100644 --- a/fcl/reco/Definitions/stage0_icarus_defs.fcl +++ b/fcl/reco/Definitions/stage0_icarus_defs.fcl @@ -28,7 +28,7 @@ BEGIN_PROLOG icarus_stage0_analyzers: { spanaE: @local::spana1d_east - spanaW: @local::spana1d_east + spanaW: @local::spana1d_west purityinfoana0: { module_type: "TPCPurityInfoAna" PurityInfoLabel: "purityana0" From 42fb82a813d8cdfd2b57410f276c4f54efec0130 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Thu, 6 Mar 2025 13:27:10 -0600 Subject: [PATCH 39/43] Lower hit finder thresholds. --- .../Run2/stage0_run2_wcdnn_icarus_mc.fcl | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl index e42f69541..cdfb878da 100644 --- a/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl +++ b/fcl/reco/Stage0/Run2/stage0_run2_wcdnn_icarus_mc.fcl @@ -12,3 +12,29 @@ physics.producers.gaushit2dTPCEE.CalDataModuleLabel: "decon2droiEE:dnnsp" physics.producers.gaushit2dTPCEW.CalDataModuleLabel: "decon2droiEW:dnnsp" physics.producers.gaushit2dTPCWE.CalDataModuleLabel: "decon2droiWE:dnnsp" physics.producers.gaushit2dTPCWW.CalDataModuleLabel: "decon2droiWW:dnnsp" + +physics.producers.gaushit2dTPCEE.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCEE.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCEE.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCEE.HitFilterAlg.MinPulseHeight: [2., 2., 2.] + +physics.producers.gaushit2dTPCEW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCEW.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCEW.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCEW.HitFilterAlg.MinPulseHeight: [2., 2., 2.] + +physics.producers.gaushit2dTPCWE.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCWE.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCWE.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCWE.HitFilterAlg.MinPulseHeight: [2., 2., 2.] + +physics.producers.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane0.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane1.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 2.5 +physics.producers.gaushit2dTPCWW.HitFilterAlg.MinPulseHeight: [2., 2., 2.] + +physics.analyzers.spanaE.HitProducers: ["gaushit2dTPCEE", "gaushit2dTPCEW"] +physics.analyzers.spanaE.WireProducers: ["decon2droiEE:dnnsp", "decon2droiEW:dnnsp"] + +physics.analyzers.spanaW.HitProducers: ["gaushit2dTPCWE", "gaushit2dTPCWW"] +physics.analyzers.spanaW.WireProducers: ["decon2droiWE:dnnsp", "decon2droiWW:dnnsp"] From 513fd26792678d437f8e7bd3af5fee0e286aea28 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Thu, 6 Mar 2025 13:29:37 -0600 Subject: [PATCH 40/43] Add in bad channels to WireCell processing. Integrate (empty) noise filter to accomodate this. --- .../ICARUSWireCell/icarus/chndb-base.jsonnet | 4 +-- .../TPC/ICARUSWireCell/icarus/nf.jsonnet | 36 +++---------------- ...wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 6 ++-- .../wcls-decode-to-sig-twofaced.jsonnet | 6 ++-- 4 files changed, 12 insertions(+), 40 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/chndb-base.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/chndb-base.jsonnet index 02ba66873..48f34af7a 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/chndb-base.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/chndb-base.jsonnet @@ -28,7 +28,7 @@ function(params, anode, field, n, rms_cuts=[]) // Externally determined "bad" channels. - bad: [], + bad: [167, 1795, 1796, 1824, 1826, 1828, 1830, 1860, 1888, 1889, 1890, 1891, 1922, 2013, 2806, 3725, 3743, 4262, 5572, 8523, 8524, 8525, 8526, 8527, 8945, 9180, 9387, 9391, 9664, 10138, 12051, 14028, 14403, 15307, 15737, 16017, 16018, 16019, 16020, 16021, 16022, 16023, 16024, 16025, 16026, 16027, 16028, 16029, 16030, 16031, 16937, 17201, 19580, 23225, 23457, 23984, 23985, 25662, 27219, 27231, 27335, 27967, 28640, 28804, 28805, 28806, 28807, 28808, 28809, 28810, 30496, 30497, 30498, 30499, 30500, 30501, 30502, 30503, 30504, 30505, 30506, 30507, 30508, 30509, 30510, 30511, 30512, 30513, 30514, 30515, 30516, 30517, 30518, 30519, 30520, 30521, 30522, 30523, 30524, 30525, 30526, 30527, 30705, 31316, 31317, 31726, 34220, 38294, 41501, 41975, 42851, 43231, 43518, 44051, 44410, 49216, 49792, 49793, 49794, 49795, 49796, 49797, 49798, 49799, 49800, 49801, 49802, 49803, 49804, 49805, 49806, 49807, 49808, 49809, 49810, 49811, 49812, 49813, 49814, 49815, 49816, 49817, 49818, 49819, 49820, 49821, 49822, 49823, 50080, 50081, 50082, 50083, 50084, 50085, 50086, 50087, 50088, 50089, 50090, 50091, 50092, 50093, 50094, 50095, 50096, 50097, 50098, 50099, 50100, 50101, 50102, 50103, 50104, 50105, 50106, 50107, 50108, 50109, 50110, 50111, 50673, 51900], // Overide defaults for specific channels. If an info is // mentioned for a particular channel in multiple objects in this @@ -41,7 +41,7 @@ function(params, anode, field, n, rms_cuts=[]) // repeat values found here in subsequent entries unless you // wish to change them. { - channels: util.anode_channels(n), + channels: util.anode_channels_twofaced(n), nominal_baseline: 2048.0, // adc count gain_correction: 1.0, // unitless response_offset: 0.0, // ticks? diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/nf.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/nf.jsonnet index cc8b758ce..8cecf585a 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/nf.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/nf.jsonnet @@ -3,34 +3,8 @@ local g = import 'pgraph.jsonnet'; local wc = import 'wirecell.jsonnet'; -local default_dft = { type: 'FftwDFT' }; - -function(params, anode, chndbobj, tools, name='', dft=default_dft) +function(anode, chndbobj, tools, name='') { - - local single = { - type: 'icarusOneChannelNoise', - name: name, - uses: [dft, chndbobj, anode, tools.rc_resp], - data: { - noisedb: wc.tn(chndbobj), - anode: wc.tn(anode), - rcresp: wc.tn(tools.rc_resp), - dft: wc.tn(dft), - }, - }, - local grouped = { - type: 'mbCoherentNoiseSub', - name: name, - uses: [dft, chndbobj, anode], - data: { - noisedb: wc.tn(chndbobj), - anode: wc.tn(anode), - dft: wc.tn(dft), - rms_threshold: 0.0, - }, - }, - local obnf = g.pnode({ type: 'OmnibusNoiseFilter', name: name, @@ -43,18 +17,16 @@ function(params, anode, chndbobj, tools, name='', dft=default_dft) // only when the channelmask is merged to `bad` // maskmap: {sticky: "bad", ledge: "bad", noisy: "bad"}, channel_filters: [ - wc.tn(single), ], grouped_filters: [ - // wc.tn(grouped), ], channel_status_filters: [ ], noisedb: wc.tn(chndbobj), - intraces: 'orig%d' % anode.data.ident, // frame tag get all traces - outtraces: 'raw%d' % anode.data.ident, + intraces: 'orig%d' % anode.data.ident, + outtraces: 'orig%d' % anode.data.ident, }, - }, uses=[chndbobj, anode, tools.rc_resp, single, grouped], nin=1, nout=1), + }, uses=[chndbobj, anode], nin=1, nout=1), pipe: g.pipeline([obnf], name=name), diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet index 77bb63c13..83d16e79f 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -167,7 +167,7 @@ local wcls_output = { frame_scale: [std.extVar('gain_ADC_per_e')], // nticks: params.daq.nticks, - chanmaskmaps: [], + chanmaskmaps: ['bad'], nticks: -1, plane_map: { "1": 3, // front induction: WireCell::kULayer -> geo::kH (1 -> 3) @@ -216,7 +216,7 @@ local chndb = [{ } for n in std.range(0, std.length(tools.anodes) - 1)]; local nf_maker = import 'pgrapher/experiment/icarus/nf.jsonnet'; -local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; +local nf_pipes = [nf_maker(tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', @@ -288,7 +288,7 @@ local nfsp_pipes = [ chsel_pipes[n], // magnifyio.orig_pipe[n], - // nf_pipes[n], + nf_pipes[n], // magnifyio.raw_pipe[n], sp_pipes[n], dnnroi(tools.anodes[n], ts_u, ts_v, output_scale=1), diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet index 29e76f823..555019792 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet @@ -167,7 +167,7 @@ local wcls_output = { frame_scale: [std.extVar('gain_ADC_per_e')], // nticks: params.daq.nticks, - chanmaskmaps: [], + chanmaskmaps: ['bad'], nticks: -1, plane_map: { "1": 3, // front induction: WireCell::kULayer -> geo::kH (1 -> 3) @@ -215,7 +215,7 @@ local chndb = [{ } for n in std.range(0, std.length(tools.anodes) - 1)]; local nf_maker = import 'pgrapher/experiment/icarus/nf.jsonnet'; -local nf_pipes = [nf_maker(params, tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; +local nf_pipes = [nf_maker(tools.anodes[n], chndb[n], tools, name='nf%d' % n) for n in std.range(0, std.length(tools.anodes) - 1)]; local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', @@ -266,7 +266,7 @@ local nfsp_pipes = [ chsel_pipes[n], // magnifyio.orig_pipe[n], - // nf_pipes[n], + nf_pipes[n], // magnifyio.raw_pipe[n], sp_pipes[n], From 7665aef88701915b23e15f13a11dec01f17ccf2e Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Thu, 6 Mar 2025 13:30:08 -0600 Subject: [PATCH 41/43] Update to latest DNN ROI config. --- icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet | 12 ++++++++---- icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet | 12 ++++++------ .../wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 6 +++--- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet index e1ede7bd1..173e8ecc9 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/dnnroi.jsonnet @@ -10,10 +10,10 @@ local wc = import "wirecell.jsonnet"; local pg = import "pgraph.jsonnet"; -function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0, nchunk_u=2, nchunk_v=4) +function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1, nchunk_u=2, nchunk_v=4) local apaid = anode.data.ident; local prename = prefix + std.toString(apaid); - local intags = ['loose_lf%d'%apaid, // 'mp2_roi%d'%apaid, + local intags = ['loose_lf%d'%apaid, 'mp2_roi%d'%apaid, 'mp3_roi%d'%apaid]; local dnnroi_u = pg.pnode({ @@ -22,12 +22,14 @@ function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0, nchunk_u=2, nchu data: { anode: wc.tn(anode), plane: 0, + nticks: 4096, intags: intags, decon_charge_tag: "decon%d" %apaid, outtag: "dnnsp%du"%apaid, output_scale: output_scale, + input_scale: 0.00025, forward: wc.tn(ts_u), - tick_per_slice: 8, + tick_per_slice: 4, nchunks: nchunk_u } }, nin=1, nout=1, uses=[ts_u, anode]); @@ -37,12 +39,14 @@ function (anode, ts_u, ts_v, prefix="dnnroi", output_scale=1.0, nchunk_u=2, nchu data: { anode: wc.tn(anode), plane: 1, + nticks: 4096, intags: intags, decon_charge_tag: "decon%d" %apaid, outtag: "dnnsp%dv"%apaid, output_scale: output_scale, + input_scale: 0.00025, forward: wc.tn(ts_v), - tick_per_slice: 8, + tick_per_slice: 4, nchunks: nchunk_v } }, nin=1, nout=1, uses=[ts_v, anode]); diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet index bc5eadd17..14e05416b 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/splat.jsonnet @@ -18,14 +18,14 @@ function(params, tools, anode, name=null) { // Run wirecell-gen morse-* to find these numbers that match the extra // spread the sigproc induces. "smear_long": [ - 4.55, - 4.55, - 4.55, + 6.6, + 6.6, + 6.6, ], "smear_tran": [ - 1.55, - 1.55, - 0.175, + 1.4, + 1.4, + 0.4, ] }, }, nin=1, nout=1, uses=[anode, tools.field]), diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet index 83d16e79f..0fbcdae12 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -267,7 +267,7 @@ local ts_u = { type: "TorchService", name: "dnnroi_u", data: { - model: "NNsv2/UNet-randMC_Plane0.ts", + model: "NNsv5/plane0.ts", device: "cpu", concurrency: 1, }, @@ -277,7 +277,7 @@ local ts_v = { type: "TorchService", name: "dnnroi_v", data: { - model: "NNsv2/UNet-randMC_Plane1.ts", + model: "NNsv5/plane1.ts", device: "cpu", concurrency: 1, }, @@ -291,7 +291,7 @@ local nfsp_pipes = [ nf_pipes[n], // magnifyio.raw_pipe[n], sp_pipes[n], - dnnroi(tools.anodes[n], ts_u, ts_v, output_scale=1), + dnnroi(tools.anodes[n], ts_u, ts_v), // magnifyio.decon_pipe[n], // magnifyio.threshold_pipe[n], // magnifyio.debug_pipe[n], // use_roi_debug_mode: true in sp.jsonnet From cfcd9e82732c7836df11a686cb62c51fccdd58d3 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Thu, 6 Mar 2025 13:30:42 -0600 Subject: [PATCH 42/43] Make ROI threshold factor configurable. --- .../icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 4 +++- .../ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet | 4 +++- icaruscode/TPC/ICARUSWireCell/wcls-decode-to-sig-base.fcl | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet index 0fbcdae12..e22425fea 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -240,7 +240,9 @@ local sp_override = { // assume all tages sets in base sp.jsonnet isWrapped: true, nwires_separate_planes: [ [1056, 1056], [5600], [5600] - ] + ], + troi_col_th_factor: std.parseJson(std.extVar('col_threshold_factor'))*1.0, // multiply by 1 to make into float + troi_ind_th_factor: std.parseJson(std.extVar('ind_threshold_factor'))*1.0 }; local sp = sp_maker(params, tools, sp_override); local sp_pipes = [sp.make_sigproc(a) for a in tools.anodes]; diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet index 555019792..0da159939 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet @@ -239,7 +239,9 @@ local sp_override = { // assume all tages sets in base sp.jsonnet isWrapped: true, nwires_separate_planes: [ [1056, 1056], [5600], [5600] - ] + ], + troi_col_th_factor: std.parseJson(std.extVar('col_threshold_factor'))*1.0, // multiply by 1 to make into float + troi_ind_th_factor: std.parseJson(std.extVar('ind_threshold_factor'))*1.0 }; local sp = sp_maker(params, tools, sp_override); local sp_pipes = [sp.make_sigproc(a) for a in tools.anodes]; diff --git a/icaruscode/TPC/ICARUSWireCell/wcls-decode-to-sig-base.fcl b/icaruscode/TPC/ICARUSWireCell/wcls-decode-to-sig-base.fcl index 0c8cfaa85..c97b8fa12 100644 --- a/icaruscode/TPC/ICARUSWireCell/wcls-decode-to-sig-base.fcl +++ b/icaruscode/TPC/ICARUSWireCell/wcls-decode-to-sig-base.fcl @@ -54,6 +54,10 @@ standard_wirecell_sigproc: signal_output_form: "sparse" file_rcresp: "icarus_fnal_rc_tail.json" + + // ROI threshold, defined as factor times RMS noise. Per ind/col. + col_threshold_factor: 3.0 + ind_threshold_factor: 3.0 } } } From 1688ecfdd0ea414d0a73c315491bdcf0435ea9cb Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Thu, 6 Mar 2025 13:31:25 -0600 Subject: [PATCH 43/43] Fixes to WireCell configuration: keep negative charge, make uniquie fanout names. --- .../icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet | 3 ++- .../ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet index e22425fea..923cdeed4 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced-dnnroi.jsonnet @@ -222,6 +222,7 @@ local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', use_roi_refinement: true, use_roi_debug_mode: true, + save_negtive_charge: true, wiener_tag: "", // gauss_tag: "", tight_lf_tag: "", @@ -342,7 +343,7 @@ local fanin_tag_rules = [ } for ind in [this_anode.data.ident] ]; -local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); +local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp%d' % volume, [], fanout_tag_rules, fanin_tag_rules); local retagger = g.pnode({ type: 'Retagger', diff --git a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet index 0da159939..a804569da 100644 --- a/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet +++ b/icaruscode/TPC/ICARUSWireCell/icarus/wcls-decode-to-sig-twofaced.jsonnet @@ -221,6 +221,7 @@ local sp_override = { // assume all tages sets in base sp.jsonnet sparse: sigoutform == 'sparse', use_roi_refinement: true, use_roi_debug_mode: false, + save_negtive_charge: true, // wiener_tag: "", // gauss_tag: "", tight_lf_tag: "", @@ -320,7 +321,7 @@ local fanin_tag_rules = [ } for ind in anode_ident ]; -local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp', [], fanout_tag_rules, fanin_tag_rules); +local fanpipe = util.fanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 'nfsp%d' % volume, [], fanout_tag_rules, fanin_tag_rules); local retagger = g.pnode({ type: 'Retagger',