Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
488 commits
Select commit Hold shift + click to select a range
074bee7
update code
lastgeorge Apr 8, 2026
72d0aee
examine some codes
lastgeorge Apr 8, 2026
fdfc384
fix some bugs
lastgeorge Apr 9, 2026
c2ce2ec
fix a bug
lastgeorge Apr 9, 2026
d8792a9
make ssm tagger more efficient
lastgeorge Apr 9, 2026
4d3c9d9
remove some warnings
lastgeorge Apr 9, 2026
41cb729
improve code
lastgeorge Apr 9, 2026
1676e22
update code
lastgeorge Apr 9, 2026
716dd5f
improve code
lastgeorge Apr 9, 2026
1209634
update code
lastgeorge Apr 9, 2026
a2b93e6
update code
lastgeorge Apr 9, 2026
db9c73a
improve the algorithm for speed consideration
lastgeorge Apr 10, 2026
ddd413e
improve the clustering_connect
lastgeorge Apr 10, 2026
4a6fc06
update code
lastgeorge Apr 10, 2026
64993b9
examine six functions
lastgeorge Apr 10, 2026
598bbc6
improve code in clustering
lastgeorge Apr 10, 2026
93fb440
add a review document
lastgeorge Apr 10, 2026
acc0ff2
review and improve clustering_protect_overclustering
lastgeorge Apr 10, 2026
cdad17d
improve the code
lastgeorge Apr 10, 2026
0876c06
improve ode
lastgeorge Apr 10, 2026
37339eb
improve the code
lastgeorge Apr 10, 2026
d30bfa7
update code
lastgeorge Apr 10, 2026
e4ccffe
Improve Single Track Fitting
lastgeorge Apr 10, 2026
3b26c38
include TMVA for root build
lastgeorge Apr 11, 2026
4cf26f1
fix some bugs related to loading XML files
lastgeorge Apr 11, 2026
6ccbb24
add protection regarding BDT files loading
lastgeorge Apr 11, 2026
c35c007
fix the shower type query
lastgeorge Apr 11, 2026
7fc5ec6
add a couple more md files for single_track fitting
lastgeorge Apr 11, 2026
dbf8eeb
do_multi_tracking review and bug fixes
lastgeorge Apr 11, 2026
f639218
improve PRVertex PRSegment and PRShower classes and some associated f…
lastgeorge Apr 11, 2026
132f964
add an review segment
lastgeorge Apr 11, 2026
a31b981
improve code for both single track fitting and improve clusters
lastgeorge Apr 11, 2026
dcaa4cc
steiner: apply §8 cosmetic fixes from review
lastgeorge Apr 11, 2026
bf6808a
examine_graph: review, bug fixes, and efficiency improvements
lastgeorge Apr 11, 2026
2ad7f73
pid/kine review: add review doc and apply all code fixes
lastgeorge Apr 11, 2026
9ee4bcf
steiner: fix flag_steiner_terminal element-size mismatch (uint8_t vs …
lastgeorge Apr 11, 2026
3154908
steiner: document flag_steiner_terminal uint8_t/int crash in review doc
lastgeorge Apr 11, 2026
94f1842
examine_structure: review, bug fixes, and efficiency improvements
lastgeorge Apr 11, 2026
6e18641
examine_vertices: review, bug fixes, and efficiency improvements
lastgeorge Apr 11, 2026
487c362
examine_vertices_3: apply E2 efficiency optimisation in phase 2 inner…
lastgeorge Apr 11, 2026
e3ba95d
apply_pointcloud: review, determinism fixes for check_end_point and c…
lastgeorge Apr 12, 2026
76e2c8f
pointcloud_clustering: review, bug fixes for proto_extend_point and g…
lastgeorge Apr 12, 2026
0d042ba
track_shower_sep: review, bug fix in improve_maps_multiple_tracks_in,…
lastgeorge Apr 12, 2026
1d22b0c
examine_structure_final: review, B.1 bug fix, add review doc
lastgeorge Apr 12, 2026
614978f
main_vertex: review, determinism fix in examine_main_vertices_local, …
lastgeorge Apr 12, 2026
be54881
deghosting: pass map_cluster_main_vertices by ref, use ordered_nodes …
lastgeorge Apr 12, 2026
37c9d97
deghosting_kinematics: add review doc
lastgeorge Apr 12, 2026
a0a6ed8
shower_clustering: review, bug fixes for 4 issues
lastgeorge Apr 12, 2026
23cb392
shower_clustering: fix pi0 direction calc and hardcoded electron mass
lastgeorge Apr 12, 2026
d2df16d
vertex_fitting: fix eigenvalue ordering in MyFCN, determinism in impr…
lastgeorge Apr 12, 2026
02c2373
cosmic_tagger: fix units bug, implement FV tolerance, multi-APA front…
lastgeorge Apr 12, 2026
aeb7980
cluster_fc_check: fix unclamped acos() calls, add numu tagger review doc
lastgeorge Apr 12, 2026
b234460
nue/ssm/singlephoton tagger: fix 6 bugs, add review docs
lastgeorge Apr 12, 2026
d13726f
singlephoton_tagger: add comprehensive review doc, update tagger review
lastgeorge Apr 12, 2026
2edf86b
img: fix 16 bugs, 7 efficiency improvements, add examination docs
lastgeorge Apr 12, 2026
21bb1bc
aux: add code examination docs for DFT, frame, cluster/blob/tensor
lastgeorge Apr 12, 2026
c9a32e3
sigproc: fix 17 bugs, 11 efficiency improvements, add examination docs
lastgeorge Apr 12, 2026
f661896
cuda: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
88a9041
apps: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
1f1eb55
util: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
63edd51
iface: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
ffe58fa
pgraph: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
3e279de
sig: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
40b03b3
pyutil: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
b636cc3
pytorch: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
6fdd402
hio: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
4abb016
zio: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
b5e57d7
sio: add code examination docs for bugs, efficiency, and algorithm
lastgeorge Apr 12, 2026
9834d25
root: fix 21 bugs, 7 efficiency improvements, add examination docs
lastgeorge Apr 12, 2026
828ecef
fix a small glitch
lastgeorge Apr 12, 2026
2792b3f
clus: fix break_segments backward-walk overshoot and dl_vtx_cut default
lastgeorge Apr 14, 2026
8ea4c4e
clus: fix stopping-muon + Michel-electron misclassification in examin…
lastgeorge Apr 14, 2026
1a928bb
clus: fix pseudo-mother PDG for isolated hadronic showers in Bee PF tree
lastgeorge Apr 14, 2026
6317183
fix make blob bug for PDVD
Ningclover Apr 15, 2026
12219cc
fix bug
Ningclover Apr 15, 2026
7725a9c
clus: fix flag_switch misfiring on degenerate near-endpoint windows i…
lastgeorge Apr 15, 2026
7283e0a
Merge pull request #462 from WireCell/XN_apply-pointcloud
lastgeorge Apr 15, 2026
6fb22c7
clus: improve DL vertex re-rank scoring based on 36-event empirical a…
lastgeorge Apr 15, 2026
6127bc3
clus: add angle<45° guard to break_segments terminus-stub absorption
lastgeorge Apr 15, 2026
5d23834
add missing md files
lastgeorge Apr 15, 2026
d4c23bc
fix D3Vector operator<
Ningclover Apr 15, 2026
6a725e3
clus: accumulate per-cluster fitted 2D charge for complete T_proj_dat…
lastgeorge Apr 15, 2026
95a6515
root: add UbooneTaggerOutputVisitor to write T_tagger and T_kine trees
lastgeorge Apr 16, 2026
a90ceba
root: add wire-cell-uboone-tagger-compare validation app
lastgeorge Apr 16, 2026
ebebceb
clus/docs: update tagger_validation_plan to reflect completed steps
lastgeorge Apr 16, 2026
00a98ec
docs: add wcwc_config.md documenting view setup and ROOT+TMVA configu…
lastgeorge Apr 17, 2026
314873f
img: remove unused loop_count and loop_sum helper functions
lastgeorge Apr 17, 2026
5407c10
clus: demote sub-logger debug calls to trace for opt-in verbosity
lastgeorge Apr 17, 2026
9759f5b
clus: demote MABC per-visitor/per-segment debug calls to trace
lastgeorge Apr 17, 2026
8b99dfb
root: suppress TMVA Reader booking output with !V:Silent
lastgeorge Apr 17, 2026
22e8f20
clus: add TaggerCheckNeutrino timing, fix spurious warnings
lastgeorge Apr 17, 2026
3a8b382
clus: add per-step MABC timing via Perf helper
lastgeorge Apr 17, 2026
86f14e1
tagger: align branch/field names with prototype
lastgeorge Apr 17, 2026
1d66e69
root: fix numu3 TMVA variable name mismatch after field rename
lastgeorge Apr 17, 2026
ae3faab
compare: show proto/toolkit values in verbose per-branch output
lastgeorge Apr 17, 2026
7da31e4
compare: uniform verbose table with proto/toolkit/default columns
lastgeorge Apr 17, 2026
d539805
compare: add Double_t support, handle mixed Float_t/Double_t branches
lastgeorge Apr 17, 2026
e08d6fb
compare: resolve nu_x/y/z branch→struct field aliases for default lookup
lastgeorge Apr 17, 2026
befda4b
compare: auto-detect NeutrinoTaggerInfo.h from installed prefix
lastgeorge Apr 17, 2026
b7c4597
compare: add fingerprint clustering and sentinel annotations in verbo…
lastgeorge Apr 17, 2026
4002e30
tagger: add unit tests + extend PatternDebugIO for full-chain replay
lastgeorge Apr 17, 2026
7c20381
tagger: add fixture and fix doctest_tagger_check_neutrino
lastgeorge Apr 18, 2026
2522724
pattern_recognition: add unit tests (pure helpers + PR step replay)
lastgeorge Apr 18, 2026
dc68088
pattern_recognition: fix run_through chain and ParticleDataSet ordering
lastgeorge Apr 18, 2026
f890ab7
test: regenerate fixture data files for pattern recognition tests
lastgeorge Apr 18, 2026
4b489e5
catch u
lastgeorge Apr 18, 2026
e9da918
catch up
lastgeorge Apr 18, 2026
52dabf5
gen: fix bent-cathode boundary check and drifter test depo collection
lastgeorge Apr 18, 2026
60e8fe8
Merge remote-tracking branch 'origin/master' into apply-pointcloud
lastgeorge Apr 18, 2026
baf0a1a
fix: raise ValueError when {u,v,w}charge arrays missing from 3d point…
lastgeorge Apr 18, 2026
77f5486
Merge pull request #463 from WireCell/XN_apply-pointcloud
lastgeorge Apr 21, 2026
36bf9da
fix: MagnifySink Trun branch corruption and cross-anode T_bad entries
lastgeorge Apr 21, 2026
a688e52
cfg: add pgrapher/experiment/protodunevd jsonnet library configs
lastgeorge Apr 22, 2026
ccde6b0
clus: make PointTreeMerging and ClusteringSwitchScope tolerate empty …
lastgeorge Apr 23, 2026
1eb0009
gen: Reframer tolerates oversized trace summary
lastgeorge Apr 23, 2026
bb4a3f3
Merge remote-tracking branch 'origin/master' into apply-pointcloud
lastgeorge Apr 23, 2026
4f4c2f6
fix: 5 pre-existing test failures (porting, issue220, quickhull)
lastgeorge Apr 23, 2026
573be55
root: MagnifySink writes optional T_geo per-channel geometry tree
lastgeorge Apr 24, 2026
41e0273
cfg/pdvd: sync NF+SP configs from dunereco for standalone VD processing
lastgeorge Apr 24, 2026
37dfe64
cfg/pdhd: sync pdhd configs from Xuyang's dunereco for standalone NF+…
lastgeorge Apr 24, 2026
3285223
fix: restore 2-plane active tiling in SBND and DUNE-VD multi-3view mode
lastgeorge Apr 25, 2026
1e04669
sio/FrameFileSource: parse filenames whose tag contains underscores
lastgeorge Apr 25, 2026
9dd1dd6
cfg/pdhd: fix DAQ tick to 512 ns and comment out erroneous maskmap
lastgeorge Apr 27, 2026
ab01cc8
cfg/pdhd: pin simulation daq tick at 500 ns (data stays at 512 ns)
lastgeorge Apr 27, 2026
dd7c5ea
cfg/pdhd: fix chndb-base tick to 500 ns (NF runs post-resampler)
lastgeorge Apr 27, 2026
bdc1c8c
sigproc/pdvd: expose adaptive_baseline flag on PDVDOneChannelNoise, e…
lastgeorge Apr 27, 2026
04924cf
cfg/pdvd: disable adaptive_baseline in nf.jsonnet (DC-coupled hardwar…
lastgeorge Apr 27, 2026
eec41e4
sigproc/PDHD: gate IS_RC + adaptive baseline behind adaptive_baseline…
lastgeorge Apr 27, 2026
4d0a8bc
sigproc/OmniChannelNoiseDB: linear-in-wirelength rms_cut mode; PDVD p…
lastgeorge Apr 27, 2026
8cf2d11
sigproc/pdvd: debug log for per-channel RMS noisy check
lastgeorge Apr 27, 2026
54a0593
cfg/pdvd: select per-plane RMS overrides by explicit channel ranges
lastgeorge Apr 27, 2026
9bca772
cfg/pdhd+pdvd: update fixed dead-channel lists
lastgeorge Apr 28, 2026
16cf986
sigproc+cfg/pdhd: enable RMS noisy cut and scale ADC thresholds with …
lastgeorge Apr 28, 2026
48002e7
cfg/pdvd: add top-electronics bad channels to fixed dead-channel list
lastgeorge Apr 28, 2026
1ad6c35
cfg/pdvd: add CRP4 hand-scan bad channels from run 039324 anode 0
lastgeorge Apr 28, 2026
5b79a0b
sigproc/pdhd+pdvd: only log noisy channels; cfg/pdvd: add anode-4 han…
lastgeorge Apr 28, 2026
5c28cc6
cfg/pdvd: raise top-TPC max_rms_cut from 15 to 30 ADC for anodes 4-7
lastgeorge Apr 28, 2026
84cfacf
fix(sio): FrameFileSink sorts channels but not summary, causing thres…
lastgeorge Apr 28, 2026
d4aa89e
sigproc: remove temporary diagnostic debug prints
lastgeorge Apr 28, 2026
dbf9245
cfg/pdvd: gate gain_scale on anode index; top cuts are gain-invariant
lastgeorge Apr 28, 2026
a226fbd
feat(sigproc/cfg): add per-channel frequency mask consumer for PDVD NF
lastgeorge Apr 28, 2026
38427cd
feat(sigproc/cfg): add per-channel frequency mask consumer for PDHD NF
lastgeorge Apr 28, 2026
7cbeb7e
cfg/pdvd: mask 23.5 kHz harmonic noise on W-plane anode-0 channels 21…
lastgeorge Apr 28, 2026
859e3d5
cfg/pdvd + sigproc: fix nf.nsamples=8000 and add freqmask debug log
lastgeorge Apr 28, 2026
daa4788
sigproc/PDVD,PDHD: warn loudly when chndb freqmask size mismatches FFT
lastgeorge Apr 28, 2026
b042901
sigproc/OmniChannelNoiseDB: auto-rebuild spectra to match runtime fra…
lastgeorge Apr 28, 2026
7a7e140
sigproc/OmniChannelNoiseDB: support physical-frequency freqmasks entries
lastgeorge Apr 28, 2026
3b0cc54
sigproc/docs: document freqmask physical-freq schema and auto-rebuild
lastgeorge Apr 28, 2026
2ffd840
cfg/pdhd: update freqmasks guidance comments to wc.freqmasks_phys
lastgeorge Apr 28, 2026
35372aa
cfg/{sbnd,uboone}: document freqmasks_phys helper in chndb comments
lastgeorge Apr 28, 2026
b47c262
cfg/pdsp: document freqmasks_phys helper in chndb comments
lastgeorge Apr 28, 2026
646c87e
cfg: document freqmasks_phys helper across remaining experiments
lastgeorge Apr 28, 2026
5158296
test/pdsp-simsn-nfsp: restore elec.gain and adc.resolution overrides
lastgeorge Apr 28, 2026
9591cfa
cfg/sbnd: fix missing comma in chndb-base channel_info
lastgeorge Apr 28, 2026
96012ff
cfg/protodunevd: fix unconditional W-harmonic freqmask + add top-anod…
lastgeorge Apr 28, 2026
9e151a1
cfg/pdhd: fix U/V coherent-noise group boundaries with +3 cyclic shift
lastgeorge Apr 28, 2026
476f96e
Merge branch 'master' into apply-pointcloud
lastgeorge Apr 29, 2026
6d47bc2
cfg/pdhd + sigproc: PDHD-specific chndb-resp kernel and gain scaling
lastgeorge Apr 29, 2026
6e76e06
Fix ROOT detection and doctest comment warnings
HaiwangYu Apr 29, 2026
5a97f1f
Merge branch 'apply-pointcloud' of github.com:WireCell/wire-cell-tool…
HaiwangYu Apr 29, 2026
83ea625
cfg/pdhd, sigproc: tune coherent-NF thresholds and disable APA-0 V-pl…
lastgeorge Apr 29, 2026
dfe52e4
cfg/protodunevd: wire FR⊗ER chndb-resp kernels for top + bottom CRP
lastgeorge Apr 29, 2026
0a3e352
cfg/{pdhd,protodunevd}: tune coherent-NF thresholds; remove gain_scal…
lastgeorge Apr 29, 2026
ae4ce78
sigproc/{pdhd,pdvd}: NF coherent sub reuses SP HfFilter/LfFilter
lastgeorge Apr 29, 2026
1b6b520
sigproc/{pdhd,pdvd}: opt-in coherent-NF debug dump (NPZ per group)
lastgeorge Apr 30, 2026
af040e4
cfg/{pdhd,pdvd}: retune coherent-NF ADC/decon thresholds; sigproc/pdv…
lastgeorge Apr 30, 2026
47d1667
aux/FftwDFT: fix run-to-run non-determinism in FFTW plan cache
lastgeorge Apr 30, 2026
71d0530
sigproc/docs/l1sp: add L1SP algorithm explainer and pdhd/pdvd applica…
lastgeorge Apr 30, 2026
ccd4200
sigproc: add L1SPFilterPD skeleton for PDHD/PDVD unipolar-induction L1SP
lastgeorge May 1, 2026
f235f71
sigproc/L1SPFilterPD + cfg/{pdhd,protodunevd}: add per-ROI calib dump…
lastgeorge May 1, 2026
4667d4e
fix: normalize flag+mixin
HaiwangYu May 1, 2026
9070574
Merge branch 'apply-pointcloud' of github.com:WireCell/wire-cell-tool…
HaiwangYu May 1, 2026
bf47b66
debug not in use
HaiwangYu May 1, 2026
cad842d
cfg/{pdhd,protodunevd}/sp.jsonnet: fix L1SPFilterPD wiring to use Fra…
lastgeorge May 1, 2026
27ca7c2
cfg/protodunevd: switch field response to imbalance3p_260501
lastgeorge May 1, 2026
abcc66a
add femb noise removal
Ningclover May 1, 2026
c209da9
sigproc/L1SPFilterPD: implement clean PD processing mode
lastgeorge May 1, 2026
c505e25
sigproc/docs/l1sp: update README for L1SPFilterPD PD design decisions
lastgeorge May 1, 2026
139d782
sigproc/PDHD: harden FEMBNoiseSub (empty guard, multi-ROI, configurab…
lastgeorge May 1, 2026
a1067ab
sigproc/L1SPFilterPD: extend dump-mode NPZ with Tier 1/2 per-ROI columns
lastgeorge May 1, 2026
cf5bf05
sigproc/L1SPFilterPD: implement Strategy-B per-ROI trigger gate
lastgeorge May 2, 2026
1071533
sigproc/L1SPFilterPD: auto-derive smearing kernel from Gaus_wide
lastgeorge May 2, 2026
9f0179f
cfg/protodunevd: split top/bottom filter instances
lastgeorge May 2, 2026
2cbc40a
docs: note PDVD per-side filter instance split
lastgeorge May 2, 2026
e90a7b6
sigproc/L1SPFilterPD: load pre-built kernels from JSON+bz2 file
lastgeorge May 2, 2026
e5d4bd3
sigproc/L1SPFilterPD: add kernels_scale for FE-gain correction
lastgeorge May 2, 2026
855dcd7
sigproc/L1SPFilterPD: add per-triggered-ROI waveform dump
lastgeorge May 2, 2026
5c40aed
sigproc/L1SPFilterPD: fix output normalization and LASSO time frame
lastgeorge May 2, 2026
6705c84
sigproc/L1SPFilterPD: document lambda in physical (electron) units
lastgeorge May 3, 2026
b9387f9
sigproc/L1SPFilterPD: pad LASSO input window to fix boundary spikes
lastgeorge May 3, 2026
eab4e6a
cfg/pdhd: route L1SP output into both gauss and wiener tags
lastgeorge May 3, 2026
616cfcb
cfg/pdhd: enable L1SP by default in make_sigproc
lastgeorge May 3, 2026
4394800
sigproc/L1SPFilterPD: document run-to-run determinism
lastgeorge May 3, 2026
7d05a7c
sigproc/FrameMerger: propagate trace summaries and channel masks
lastgeorge May 3, 2026
22781d8
sigproc/L1SPFilterPD: cross-channel adjacency expansion
lastgeorge May 3, 2026
05d8baf
sigproc/L1SPFilterPD: enable cross-channel adjacency by default
lastgeorge May 3, 2026
bf7109b
sigproc/L1SPFilterPD: iterative cross-channel adjacency expansion
lastgeorge May 3, 2026
d553e5c
sigproc/L1SPFilterPD: sign-aligned asym precondition for adjacency
lastgeorge May 3, 2026
d830879
sigproc/L1SPFilterPD: add very-long arm for long-but-moderate-asym ar…
lastgeorge May 3, 2026
ba563cd
sigproc/L1SPFilterPD: efficiency refactor, no semantic change
lastgeorge May 3, 2026
ec1d9d8
sigproc/L1SPFilterPD: setup-side cleanups (no semantic change)
lastgeorge May 3, 2026
bc7817f
sigproc/L1SPFilterPD: document performance profile
lastgeorge May 3, 2026
4e37cd8
aux/DftTools+sigproc/OmnibusSigProc: skip redundant 2D-array copies i…
lastgeorge May 3, 2026
4270518
sigproc/OmnibusSigProc: batch per-channel electronics FFTs
lastgeorge May 3, 2026
6789bcf
sigproc/docs/l1sp/L1SPFilterPD: record OmnibusSigProc Tier 1+2 follow-up
lastgeorge May 3, 2026
ae43013
sigproc/test: add PDHD NF+SP test suite (atomic + APA1 regression)
lastgeorge May 3, 2026
4d2218f
cfg/protodunevd+sigproc/L1SPFilterPD: wire L1SP into PDVD nf+sp
lastgeorge May 3, 2026
d453442
cfg/protodunevd/sp: update L1SP kernel-file TODO with real filenames
lastgeorge May 3, 2026
abb24dd
cfg/protodunevd/sp: populate L1SP kernels_file paths
lastgeorge May 3, 2026
a87f593
cfg/protodunevd/chndb: add anode 0 V-plane bad channels 1365, 1366
lastgeorge May 3, 2026
546b2da
cfg/protodunevd: PDVD postgain de-compensation after FR sentinel-path…
lastgeorge May 4, 2026
68569eb
sigproc/L1SPFilterPD+protodunevd/sp: add PDVD-only opt-in track veto
lastgeorge May 4, 2026
86a8c50
sigproc/L1SPFilterPD: widen negative-polarity build_G window for trou…
lastgeorge May 4, 2026
bab26dc
catch up
lastgeorge May 4, 2026
14b6c6d
sigproc/OmnibusSigProc: add opt-in 'rawdecon' tap (pre-Wire-filter, p…
lastgeorge May 5, 2026
b4d6198
sigproc/OmnibusSigProc: trim rawdecon to (m_nwires x m_nticks) grid
lastgeorge May 6, 2026
75d59ee
cfg/protodunevd: bump ROI_loose_lf_t tau 0.002 -> 0.003 MHz
lastgeorge May 6, 2026
dc61376
sigproc/ROI_refinement: fix iterator UB and use-after-free in BreakROIs
lastgeorge May 6, 2026
6977751
sigproc/ProtoduneVD+nf.jsonnet: add ShieldCouplingSub diagnostic npz …
lastgeorge May 6, 2026
36489a2
sigproc/OmnibusSigProc: fix uninitialized FFT-padding rows in decon_2…
lastgeorge May 7, 2026
3d7d084
sigproc/test: refresh PDHD APA1 reference
lastgeorge May 7, 2026
dd97c3b
sigproc/test: add PDVD anode 0 NF+SP regression test
lastgeorge May 7, 2026
cc301c2
sigproc/docs/l1sp: document PDVD anode 0 BATS test and PDHD reference…
lastgeorge May 7, 2026
d2f3c00
cfg/pdhd+protodunevd+sigproc: update ROI_loose_lf tau to 0.003 for bo…
lastgeorge May 7, 2026
76d4cfb
cfg/pdsp+sigproc/test: restore PDSP standalone defaults broken by 41e…
lastgeorge May 7, 2026
cc68664
sigproc/test: refresh PDHD+PDVD references after ROI_loose_lf tau bump
lastgeorge May 7, 2026
9b4ebd5
sigproc/ROI_refinement: restore BreakROI1 second pass dropped by dc61…
lastgeorge May 7, 2026
c19c0e8
sigproc/test: freeze PDVD/PDHD bats configs as pre-rendered JSON
lastgeorge May 7, 2026
4bf2ec4
cfg/protodunevd/sp: enable L1SP process mode for top-CRP (ident >= 4)
lastgeorge May 8, 2026
1a5f9d6
sigproc/test: add PDVD top-CRP anode 7 NF+SP regression test
lastgeorge May 8, 2026
ac9898d
sigproc/docs/l1sp: document anode-7 top-CRP BATS test; drop done pend…
lastgeorge May 8, 2026
eed09ec
sigproc/L1SPFilterPD: merge per-ROI waveform dump with calibration fe…
lastgeorge May 9, 2026
1f95fc5
pytorch: add DNNROIFindingMultiPlane node for multi-plane DNN-ROI
lastgeorge May 12, 2026
5de81f2
pytorch: input-driven tick sizing for DNN-ROI nodes
lastgeorge May 12, 2026
301ac21
cfg/pdhd: add dnnroi_pp.jsonnet (per-plane sequential subgraph)
lastgeorge May 12, 2026
02d1e86
cfg/pdhd: add l1sp_after_dnnroi.jsonnet (L1SP wired after DNN-ROI)
lastgeorge May 12, 2026
12448bd
cfg/pdhd/l1sp_after_dnnroi: drop unused sp_frame_tap parameter
lastgeorge May 12, 2026
1aab86e
cfg/pdhd/dnnroi_pp: propagate Wiener-threshold trace_summary
lastgeorge May 12, 2026
5bec84e
update NF
Ningclover May 13, 2026
6ecc86e
pdhd dnnroi: support 6-channel DNN-ROI models
lastgeorge May 16, 2026
cef110c
docs/components/DNNROIFinding: document input normalization
lastgeorge May 17, 2026
eb61a51
feat: protodunevd 4-channel DNN-ROI multi-plane config
lastgeorge May 17, 2026
5e0cf48
fix: PDVD dnnroi_mp emits gauss+wiener so Magnify gets the threshold
lastgeorge May 17, 2026
283c683
feat: PDVD retuned-noise-spectra toggle (default off)
lastgeorge May 18, 2026
d51979c
fix: PDVD sim uses the data-retuned noise spectra directly
lastgeorge May 18, 2026
7c491a1
feat: strict gain-based noise-spectra selector for PDVD and PDHD
lastgeorge May 18, 2026
89c0fb0
Merge remote-tracking branch 'origin/master' into apply-pointcloud
lastgeorge May 18, 2026
e12919e
fix: drop obsolete wiener_threshold_tag from PDVD/PDHD sp configs
lastgeorge May 18, 2026
dcaa9f9
fix: restore uboone config compilation broken by the dunereco sync
lastgeorge May 18, 2026
b9605f3
fix: make test_minimal_torch find extsmod.ts regardless of cwd
lastgeorge May 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ ltximg
*.vtu
*.pdf
*.json
!sigproc/test/data/*.json
.snakemake
*.old
*.junk
Expand Down
54 changes: 54 additions & 0 deletions apps/docs/examination/00-plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# apps/ Code Examination Plan

## Scope

Systematic examination of the Wire Cell Toolkit `apps` module (~800 lines of C++
across 12 source files) for:

1. **Potential bugs** -- logic errors, missing error handling, null dereferences, resource leaks
2. **Running efficiency** -- unnecessary copies, redundant iterations, missing checks
3. **Algorithm documentation** -- what each component does, how it fits into the WCT pipeline

## File Inventory

### Group 1: Main Class (~520 lines) -- highest priority
| File | Lines | Role |
|------|-------|------|
| `Main.h` | 118 | Main class interface and member declarations |
| `Main.cxx` | 414 | Core orchestrator: cmdline parsing, initialization, execution |

### Group 2: Application Components (~220 lines)
| File | Lines | Role |
|------|-------|------|
| `AnodeDumper.h` | 25 | AnodeDumper interface |
| `AnodeDumper.cxx` | 77 | Anode geometry dumper |
| `ConfigDumper.h` | 25 | ConfigDumper interface |
| `ConfigDumper.cxx` | 65 | Component default configuration dumper |
| `NodeDumper.h` | 25 | NodeDumper interface |
| `NodeDumper.cxx` | 82 | Node type metadata dumper |

### Group 3: CLI Executables (~250 lines)
| File | Lines | Role |
|------|-------|------|
| `wire-cell.cxx` | 29 | Main WCT entry point |
| `wcsonnet.cxx` | 96 | Jsonnet compiler CLI |
| `wcwires.cxx` | 124 | Wire geometry validator/converter CLI |

### Group 4: Tests
| File | Lines | Role |
|------|-------|------|
| `test_dlopen.cxx` | 54 | Plugin/factory singleton tests |
| `test_apps.bats` | 23 | CLI smoke tests |
| `anode-dumper.jsonnet` | 28 | AnodeDumper configuration example |

## Output Documents

| Document | Contents |
|----------|----------|
| `00-plan.md` | This plan |
| `01-overview.md` | Architecture overview, design patterns, pipeline flow |
| `02-main-class.md` | Main.h/Main.cxx deep examination |
| `03-app-components.md` | AnodeDumper, ConfigDumper, NodeDumper examination |
| `04-cli-tools.md` | wire-cell.cxx, wcsonnet.cxx, wcwires.cxx examination |
| `05-bug-summary.md` | Consolidated bug table |
| `06-efficiency-summary.md` | Consolidated efficiency recommendations |
162 changes: 162 additions & 0 deletions apps/docs/examination/01-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
# apps/ Architecture Overview and Algorithm Documentation

## Role in the Wire-Cell Toolkit

The `apps` module is the **top-level application layer** of the Wire-Cell Toolkit (WCT).
It sits above the interface (`iface`), utility (`util`), and all component modules
(e.g., `gen`, `sigproc`, `img`). Its responsibilities are:

1. **Bootstrap the toolkit** -- parse CLI arguments, load plugins, read configuration,
instantiate and configure components
2. **Execute application components** -- run registered `IApplication` objects in sequence
3. **Provide CLI programs** -- `wire-cell` (general entry point), `wcsonnet` (Jsonnet compiler),
`wcwires` (wire geometry validator)
4. **Provide diagnostic dumpers** -- `AnodeDumper`, `ConfigDumper`, `NodeDumper` for
inspecting component state

## Architecture

```
CLI Programs Diagnostic Apps External Embedders
(wire-cell, (AnodeDumper, (LArSoft art/FHiCL)
wcsonnet, wcwires) ConfigDumper,
| NodeDumper)
| |
v v
+-------------------------------+
| Main class | <-- Central orchestrator
| cmdline() -> initialize() |
| -> operator()() -> finalize()|
+-------------------------------+
| | |
v v v
Persist Plugin Factory
(Jsonnet Manager (Named
config) (dlopen) Factory)
| | |
v v v
+-------------------------------+
| WCT Component Ecosystem |
| (IConfigurable, IApplication,|
| INode, ITerminal, INamed) |
+-------------------------------+
```

## Main Class Lifecycle

The `Main` class orchestrates the entire WCT boot-up sequence. It can be driven
either through `cmdline()` (for CLI use) or through fine-grained setup methods
(for embedding in frameworks like LArSoft).

### Phase 1: Setup (cmdline or explicit calls)

Configuration is accumulated into member variables:
- `m_cfgfiles`: configuration file paths (Jsonnet/JSON)
- `m_plugins`: plugin library names to load
- `m_apps`: application components to execute
- `m_load_path`: search paths for configuration file resolution
- `m_extvars`, `m_extcode`, `m_tlavars`, `m_tlacode`: Jsonnet external variables

### Phase 2: Initialization (initialize)

Sequential steps:
1. **Set up logging** -- configure spdlog pattern and create "main" logger
2. **Load configuration** -- parse each Jsonnet/JSON file using `Persist::Parser`
with the accumulated load paths and external variables, merge into `ConfigManager`
3. **Extract "wire-cell" entry** -- special config entry carries plugin and app lists
4. **Load plugins** -- use `PluginManager` to dlopen shared libraries
5. **Instantiate components** -- iterate all config entries, call `Factory::lookup<Interface>`
to create component instances
6. **Set component names** -- find components implementing `INamed`, call `set_name()`
7. **Apply log configuration** -- set log levels for named loggers
8. **Configure components** -- for each `IConfigurable`, get default config, merge with
user config via `update()`, and call `configure()`

### Phase 3: Execution (operator())

1. Look up all `IApplication` objects by their type:name strings
2. If TBB is available and thread limit is set, create `tbb::global_control`
3. Execute each application sequentially via `aobj->execute()`

### Phase 4: Finalization (finalize, also called by destructor)

1. Iterate all config entries, find components implementing `ITerminal`
2. Call `finalize()` on each terminal component for cleanup

## Design Patterns

### Factory Pattern
All WCT components are created through `NamedFactory`. Components register themselves
via `WIRECELL_FACTORY` macros. The factory system supports:
- Type-based lookup: `Factory::lookup<IFace>(type, name)`
- Named instances: same type can have multiple named instances
- Singleton caching: same (type, name) always returns the same instance

### Plugin Pattern
Component implementations live in shared libraries (plugins). The `PluginManager`
uses `dlopen()` to load them at runtime. This allows the apps layer to be generic --
it doesn't link against any specific component implementations.

### Configuration Pattern
Configuration flows through the system as `Json::Value` objects:
1. Jsonnet files are compiled to JSON
2. JSON is organized as an array of `{type, name, data}` objects
3. Each component's `default_configuration()` provides defaults
4. User config is merged on top via `update()` (recursive merge)
5. The merged config is passed to `configure()`

The special `wire-cell` config entry (type="wire-cell") carries top-level
orchestration data: which plugins to load and which apps to run.

### Interface Segregation
Components implement only the interfaces they need:
- `IApplication`: has `execute()` -- top-level runnable
- `IConfigurable`: has `configure()`, `default_configuration()` -- accepts configuration
- `ITerminal`: has `finalize()` -- needs cleanup
- `INamed`: has `set_name()` -- accepts a string name
- `INode`: has `input_types()`, `output_types()`, `concurrency()`, `category()` -- data flow node

## CLI Programs

### wire-cell
The main WCT entry point. Ultra-thin wrapper: creates `Main`, calls `cmdline()`,
`initialize()`, and `operator()()`. Catches `WireCell::Exception` and prints error details.
This is the program that end-users typically invoke to run WCT processing pipelines.

### wcsonnet
A Jsonnet compiler that is aware of WCT conventions. Uses `Persist::Parser` which
internally uses the Go-based Jsonnet library (faster than the C++ reference implementation).
Honors `WIRECELL_PATH` environment variable for import resolution. Useful for debugging
Jsonnet configuration files independently of WCT execution.

### wcwires
A wire geometry utility that loads, validates, and optionally converts wire description
files. Supports correction levels (load, order, direction, pitch) that progressively
fix common issues in wire geometry definitions. The validator checks geometric properties
with a configurable epsilon tolerance.

## Diagnostic App Components

### AnodeDumper
Dumps anode plane geometry to JSON. Traverses the anode -> face -> plane hierarchy
and extracts identifiers, channel counts, and wire counts. Useful for verifying
detector geometry is correctly configured.

### ConfigDumper
Dumps default configurations for components. Can dump all known `IConfigurable`
components or a specified subset. Useful for discovering what configuration options
a component accepts.

### NodeDumper
Dumps node type metadata including input/output port types, concurrency model,
and category. Useful for understanding the data flow graph structure.

## Test Infrastructure

The module has minimal testing:
- `test_dlopen.cxx`: Verifies plugin loading, factory singleton behavior, and named
instance distinctness. This is a critical infrastructure test.
- `test_apps.bats`: BATS shell tests verifying that CLI executables exist and produce
expected output (smoke tests).
- `anode-dumper.jsonnet`: Example Jsonnet configuration for AnodeDumper, parameterized
by detector (default: "pdsp"). Demonstrates the configuration pattern.
Loading