Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
559 commits
Select commit Hold shift + click to select a range
81fa291
Add tiny portion of PAAL with some example code.
brettviren Jun 23, 2025
e60b0fb
Add config for steiner
brettviren Jun 23, 2025
be6e582
Refactor retile-related config and add some "fake" retile + graph/pc …
brettviren Jun 24, 2025
8523fec
Move LLM generated files into new llm-summaries repo
brettviren Jun 25, 2025
0d98921
Move the bare "voronoi" code example to a Graphs function of that name.
brettviren Jun 25, 2025
ade1b4c
fill in a new function
lastgeorge Jun 26, 2025
261a4b8
port the calc_charge_wcp function
lastgeorge Jun 26, 2025
2f424b8
implement find_peak_point_indices and find_steiner_terminals
lastgeorge Jun 26, 2025
e90f783
implement the get_extreme_wcps() functions
lastgeorge Jun 26, 2025
b4aa882
add functions for establish and remove edges for Steiner Tree Creation
lastgeorge Jun 26, 2025
a983f4b
Fix compiler warnings introduced by recent commits.
brettviren Jun 26, 2025
e6a7a88
Merge branch 'apply-pointcloud' of github.com:WireCell/wire-cell-tool…
brettviren Jun 26, 2025
9ed57d9
Add a Voronoi::path() helper to give shortest path from given vertex …
brettviren Jun 26, 2025
912d4c4
Add WCP's Steiner graph algorithm
brettviren Jun 26, 2025
5bbd0a0
Move methods out of Voronoi to free functions
brettviren Jun 26, 2025
6633272
Include example of calling steiner_graph() in the 'fake' method
brettviren Jun 26, 2025
a407837
update
lastgeorge Jun 26, 2025
8da4e50
add code about Create_Steiner_Tree, there must be bugs in these algor…
lastgeorge Jul 1, 2025
238f881
start to prepare for the validation
lastgeorge Jul 3, 2025
6d8f324
copy scalar data in separating
lastgeorge Jul 3, 2025
5b9e471
improve validation
lastgeorge Jul 3, 2025
c0493bc
add charge_stepped sampling method
lastgeorge Jul 3, 2025
2216e9e
validate the calc_charge_wcp function
lastgeorge Jul 3, 2025
39c8bea
improve graph creation fixed some bugs
lastgeorge Jul 4, 2025
ba15e16
add a new connect graph function
lastgeorge Jul 7, 2025
73ba79c
add another graph method
lastgeorge Jul 7, 2025
a042995
validate the find_peak_point_indices
lastgeorge Jul 7, 2025
b1fb5ec
validate the get_extreme_wcps function
lastgeorge Jul 7, 2025
da1c689
update the cache for Facade::Grouping
lastgeorge Jul 8, 2025
d7b37b7
update code confirming the input data
lastgeorge Jul 9, 2025
d8bb72c
validate the charge
lastgeorge Jul 9, 2025
f6ad90c
catch up
lastgeorge Jul 9, 2025
74f1321
fix a small bug
lastgeorge Jul 9, 2025
f1ea1e8
add code
lastgeorge Jul 9, 2025
eeeccd2
validate the establish and remove steiner edge functions
lastgeorge Jul 9, 2025
ae88539
catch up
lastgeorge Jul 9, 2025
6afae61
Extend UbooneClusterSource to remake all live slices from ROOT data.
brettviren Jul 9, 2025
2a81b67
Merge branch 'apply-pointcloud' of github.com:WireCell/wire-cell-tool…
brettviren Jul 9, 2025
98bf3bb
ad TC and TDC in uBooNEClusterSource
lastgeorge Jul 9, 2025
b78c221
fix a bug
lastgeorge Jul 9, 2025
9b2bf8a
catch up
lastgeorge Jul 10, 2025
9382fd2
put in an improved Steiner Tree Creation
lastgeorge Jul 10, 2025
0bb248d
update code
lastgeorge Jul 10, 2025
79853df
check the disable_mixed_Dead_blob flag
lastgeorge Jul 10, 2025
a0cb397
fix get_two_boundary function, so that it can fit multiple APA/face
lastgeorge Jul 10, 2025
b040a90
fixed the create_steiner_tree alg
lastgeorge Jul 10, 2025
d72ebe4
work out the establish_same_mcell_steiner_edge for steiner_graph
lastgeorge Jul 11, 2025
3cd53b4
store the steiner_graph
lastgeorge Jul 11, 2025
a733d7d
update the code to implement a method to get boundary points for stei…
lastgeorge Jul 11, 2025
bbbd6a7
update code
lastgeorge Jul 11, 2025
16a7cdf
add Steiner KD tree methods
lastgeorge Jul 11, 2025
a89a3e2
update some tests
lastgeorge Jul 11, 2025
7191e49
add wpid for the Steiner PC
lastgeorge Jul 11, 2025
0c16c44
add two ImproveCluster class
lastgeorge Jul 12, 2025
e3c2baf
update code
lastgeorge Jul 12, 2025
d1c4ac5
update code
lastgeorge Jul 12, 2025
c2b47b2
implement get_activity, hack_acgivity sample_live in the ImproveClust…
lastgeorge Jul 12, 2025
a5b5655
sort out the ImproveCluster_1
lastgeorge Jul 13, 2025
45ace1b
add a new clustering recovering bundle function
lastgeorge Jul 13, 2025
332028c
work through improvecluster_2
lastgeorge Jul 13, 2025
3e8f698
update configuration for print out
lastgeorge Jul 13, 2025
b7b2e07
fix a bug in points creation for retiled cluster
lastgeorge Jul 13, 2025
f26b5a6
fix a bug in coordinate system
lastgeorge Jul 13, 2025
f669b11
pass the steiner graph and pc
lastgeorge Jul 13, 2025
bab9bde
remove fake method
lastgeorge Jul 13, 2025
7a3ff4b
add flag_steiner_terminal to the point cloud
lastgeorge Jul 13, 2025
dab06f1
update
lastgeorge Jul 14, 2025
f08ec94
catch up
lastgeorge Jul 14, 2025
cb50499
update Bee dumpter on filter for Xuyang
lastgeorge Jul 21, 2025
be09d6f
output Steiner Point Cloud to Bee
lastgeorge Jul 21, 2025
05167d4
Add support to generate compile_commands.json to assist in using clan…
brettviren Jul 22, 2025
03662fa
Merge branch 'apply-pointcloud' of github.com:wirecell/wire-cell-tool…
brettviren Jul 22, 2025
b12b077
Fix non-C++-17 code.
brettviren Jul 22, 2025
ff07806
fix warnings from compiler
lastgeorge Jul 22, 2025
9f679ad
Remove errant 'template' directive in calling method that clang-19 do…
brettviren Jul 22, 2025
782d630
fix clang 19 warnings
lastgeorge Jul 23, 2025
df1827d
Remove the now vestigial patrec.
brettviren Jul 23, 2025
0388f47
Merge branch 'apply-pointcloud' of github.com:WireCell/wire-cell-tool…
brettviren Jul 23, 2025
2495d51
Some docs from the just-removed patrec
brettviren Jul 23, 2025
4588abb
Add more subpackages to doxygen
brettviren Jul 25, 2025
5377e2d
Actually honor '/** ... */' and '/// ...' comments
brettviren Jul 25, 2025
1456427
Remove nanoflann's inherited mainpage directive.
brettviren Jul 25, 2025
8c6a220
Initial start at vertex/segment related infrastructure.
brettviren Jul 25, 2025
d1a0a00
Fix bug of channel searching in fill_wrap_points in DynamicPointCloud…
Ningclover Jul 28, 2025
cfe9ca0
More checking on boost subgraph
brettviren Jul 28, 2025
818a02c
Merge branch 'apply-pointcloud' of github.com:WireCell/wire-cell-tool…
brettviren Jul 28, 2025
5a1e963
add a new ensemble visitor for check_stm tagger
lastgeorge Jul 29, 2025
860ecca
add a TrackFitting empty class
lastgeorge Jul 29, 2025
0af417e
Add initial skeleton for porting ToyFiducial to support stm tagger po…
brettviren Jul 29, 2025
864f0a9
Merge branch 'apply-pointcloud' of github.com:WireCell/wire-cell-tool…
brettviren Jul 29, 2025
cab8b0f
Add note that steiner test is failing
brettviren Jul 29, 2025
ca67c3e
update tests and catch up on the mabc jsonnet
lastgeorge Jul 29, 2025
99d5982
fix a bug
lastgeorge Jul 29, 2025
02e658b
Add fork of boost subgraph to make it work with setS and some other m…
brettviren Jul 29, 2025
f06f11d
fix a bug
lastgeorge Jul 29, 2025
46f9cb4
Take a different, simpler tact for the trajectory graph.
brettviren Aug 1, 2025
8b5f746
Merge branch 'apply-pointcloud' of github.com:wirecell/wire-cell-tool…
brettviren Aug 1, 2025
ce3f1eb
Latest chapter on PR infrastructure and fix some new compiler warnings
brettviren Aug 4, 2025
5234576
update code
lastgeorge Aug 5, 2025
01c6bb3
catch up
lastgeorge Aug 5, 2025
1c94b44
fill in two functions
lastgeorge Aug 5, 2025
c42c365
fix a bug in the PolyFiducial
lastgeorge Aug 5, 2025
a651375
implement fiducial volume
lastgeorge Aug 6, 2025
9b19a42
complete inside_fiducial_volume
lastgeorge Aug 6, 2025
bc6c4d3
update code
lastgeorge Aug 6, 2025
6588242
update code
lastgeorge Aug 6, 2025
590c40c
update code
lastgeorge Aug 6, 2025
a23bf24
add code
lastgeorge Aug 6, 2025
94a0a22
Make find_endpoints() pair of vertices returned be ordered by segment…
brettviren Aug 6, 2025
aa85b22
fix a bug in the PRGraph.h
lastgeorge Aug 6, 2025
7ac7a42
Add 1D linear interpolation components.
brettviren Aug 6, 2025
d3a867e
Merge branch 'apply-pointcloud' of github.com:wirecell/wire-cell-tool…
brettviren Aug 6, 2025
b6c5dc3
Remove ident and cluster_id from PR::{Vertex,Segment} and add Cluster…
brettviren Aug 6, 2025
0ee406d
catch up
lastgeorge Aug 6, 2025
bb59389
pass segment from STM to track fitting
lastgeorge Aug 6, 2025
83a8337
add anode access inside TrackFitting
lastgeorge Aug 6, 2025
bc98845
add wire channel cache
lastgeorge Aug 6, 2025
02ffabf
Fix file name extension
brettviren Aug 7, 2025
1b0ea6f
Merge branch 'apply-pointcloud' of github.com:wirecell/wire-cell-tool…
brettviren Aug 7, 2025
129099f
One and two sample Kolmogorov-Smirnov tests
brettviren Aug 7, 2025
a793eaf
Add kslike_compare() similar to ROOT's TH1::KomologorovTest to match …
brettviren Aug 7, 2025
991b3c7
prepare data product for porting
lastgeorge Aug 8, 2025
8777391
Move cluster pointer to mixin and add mixin to hold named DynamicPoin…
brettviren Aug 8, 2025
f81124a
Merge branch 'apply-pointcloud' of github.com:wirecell/wire-cell-tool…
brettviren Aug 8, 2025
168f0ce
improve
lastgeorge Aug 8, 2025
28d63da
add il fill charge information
lastgeorge Aug 9, 2025
3b4e476
catch up
lastgeorge Aug 9, 2025
80a29a1
add one more function
lastgeorge Aug 9, 2025
c75ac58
add information
lastgeorge Aug 9, 2025
b21c533
add more data
lastgeorge Aug 9, 2025
51228a7
add a new function organize_wcps_path
lastgeorge Aug 9, 2025
dbaa296
adding some initial code for examine_end_ps
lastgeorge Aug 9, 2025
da00072
add PCTransform to STM tagger
lastgeorge Aug 9, 2025
3f9c3a8
finish porting the examine_end_ps
lastgeorge Aug 9, 2025
41605c8
add a function of organize_ps_path
lastgeorge Aug 9, 2025
25d915f
update code
lastgeorge Aug 11, 2025
09e557d
add more code
lastgeorge Aug 11, 2025
401656b
add first function
lastgeorge Aug 11, 2025
ec236ed
update code
lastgeorge Aug 11, 2025
525a163
initialize examine_point_association
lastgeorge Aug 11, 2025
db016d4
update code
lastgeorge Aug 11, 2025
ffeb695
finish filling the function of examine_point_association
lastgeorge Aug 11, 2025
3d9b8fc
filled in the algorithm for form_map
lastgeorge Aug 11, 2025
b21b439
prepare for two more functions
lastgeorge Aug 11, 2025
8f04f12
catch up
lastgeorge Aug 12, 2025
e71bca6
add fitting results into the class
lastgeorge Aug 12, 2025
5ee11bf
update fitting
lastgeorge Aug 12, 2025
c2dc8af
fix a bug in single track fitting
lastgeorge Aug 12, 2025
5a8e86c
update code
lastgeorge Aug 12, 2025
47d5ebf
add skip_trakectory function
lastgeorge Aug 12, 2025
71cdd3c
figure out how to deal with offset
lastgeorge Aug 12, 2025
35c7f26
add two functions for the cal_gaus_integral
lastgeorge Aug 12, 2025
2afb2a9
update code
lastgeorge Aug 12, 2025
25f260e
add cla_compact matrix function
lastgeorge Aug 12, 2025
35b248a
finish filling the dQ_dx_fill function
lastgeorge Aug 12, 2025
763436a
initialize the dQ_dx_fit function
lastgeorge Aug 12, 2025
bb7c77e
add configuration parameters
lastgeorge Aug 13, 2025
13f4067
add a preconfig file
lastgeorge Aug 13, 2025
aa62ba9
update configuration
lastgeorge Aug 13, 2025
7e4c617
catch up
lastgeorge Aug 13, 2025
f3feee8
catch up
lastgeorge Aug 13, 2025
0d6d857
update code
lastgeorge Aug 13, 2025
0285dc8
add more code
lastgeorge Aug 13, 2025
139f4cb
add the dQ_dx_fit function
lastgeorge Aug 13, 2025
c84c2c8
catch up
lastgeorge Aug 13, 2025
e90da41
add do_single_tracking
lastgeorge Aug 13, 2025
9535269
update code
lastgeorge Aug 14, 2025
76d998e
update code
lastgeorge Aug 14, 2025
6ba6d7f
update code
lastgeorge Aug 14, 2025
27bb38b
finish adjust rough path alg
lastgeorge Aug 14, 2025
2539e7c
catch up
lastgeorge Aug 14, 2025
b8a31c2
catch up
lastgeorge Aug 14, 2025
384a386
update code
lastgeorge Aug 14, 2025
12409d6
update code for the find_first_kink
lastgeorge Aug 14, 2025
059b850
update code
lastgeorge Aug 14, 2025
3f4aaf3
fill in a function of check_other_clusters
lastgeorge Aug 14, 2025
37f726c
catch up
lastgeorge Aug 14, 2025
2b8ee8b
update code
lastgeorge Aug 14, 2025
4dd81f9
update code
lastgeorge Aug 14, 2025
ea4d292
update code
lastgeorge Aug 14, 2025
3e53961
update code
lastgeorge Aug 14, 2025
7b424d8
update code
lastgeorge Aug 14, 2025
e4e8759
update code
lastgeorge Aug 14, 2025
571fbbd
update code
lastgeorge Aug 14, 2025
c693712
update code
lastgeorge Aug 14, 2025
7135b8a
Remove unused arguments that are breaking the compilation
brettviren Aug 14, 2025
e9675a4
Simplify the choice of regular vs irregular from two types of compone…
brettviren Aug 14, 2025
60cd5de
Merge fixes
brettviren Aug 14, 2025
19c6273
update code
lastgeorge Aug 14, 2025
6a5e506
register LnterpFunction as factory component
lastgeorge Aug 14, 2025
213f017
register LnterpFunction as factory component
lastgeorge Aug 14, 2025
bf0f4b2
update code
lastgeorge Aug 14, 2025
eff8302
finish filling the detector_proton function
lastgeorge Aug 14, 2025
b38146f
update code
lastgeorge Aug 14, 2025
48027ce
update code
lastgeorge Aug 14, 2025
951fda7
catch up
lastgeorge Aug 14, 2025
725202f
update code
lastgeorge Aug 14, 2025
05e8d48
add code
lastgeorge Aug 15, 2025
e0550b3
update code
lastgeorge Aug 15, 2025
2fabd5d
fix: Positional argument after a named argument is not allowed
HaiwangYu Aug 20, 2025
a8f0495
validation catch up
lastgeorge Sep 1, 2025
74ca9ba
update code for validation
lastgeorge Sep 1, 2025
c7b9128
fix cluster t0 to be consistent between forward and backward
lastgeorge Sep 3, 2025
b5ef526
update code
lastgeorge Sep 3, 2025
bd30f28
validate trajectory fitting
lastgeorge Sep 3, 2025
dabcbe4
fix a few bugs for dQ calculation
lastgeorge Sep 4, 2025
b982879
validate dQ/dx fit
lastgeorge Sep 4, 2025
63054e6
remove hacks
lastgeorge Sep 4, 2025
d1fc520
fix some bugys
lastgeorge Sep 8, 2025
96fd933
finish validating detect_proton function
lastgeorge Sep 8, 2025
5f3e602
finish validating STM tagger
lastgeorge Sep 8, 2025
ea92b01
catch up
lastgeorge Sep 24, 2025
b1f410a
warm up
lastgeorge Sep 27, 2025
7f2e3aa
fill in functions of get length etc
lastgeorge Sep 27, 2025
d45bfeb
add max_deviation function
lastgeorge Sep 27, 2025
9fe17a6
add rms dQ/dx code
lastgeorge Sep 27, 2025
936e168
add a function about eval_ks_rati
lastgeorge Sep 27, 2025
407ed85
add function of search_kink
lastgeorge Sep 27, 2025
422fb0b
add is_shower_trajectory function
lastgeorge Sep 27, 2025
e3b120f
fill in the cal_dir_3vector functions
lastgeorge Sep 27, 2025
462eb37
add recombination model in
lastgeorge Sep 28, 2025
e1b2aa6
add PIDDataSet class
lastgeorge Sep 28, 2025
60a8a87
update configurations
lastgeorge Sep 28, 2025
1fe348d
add do_track_comp
lastgeorge Sep 28, 2025
275c644
update functions
lastgeorge Sep 28, 2025
a774424
add do_track_PID function
lastgeorge Sep 28, 2025
44430d3
implement cal_4mom function
lastgeorge Sep 28, 2025
6066cd0
add 4-momentum vector as well as particle info
lastgeorge Sep 28, 2025
cd860e7
catch up
lastgeorge Sep 28, 2025
efa944f
improve PRSegment
lastgeorge Sep 28, 2025
0e743ab
add a function of determine_dir_track
lastgeorge Sep 29, 2025
6b6526d
add a new function
lastgeorge Sep 29, 2025
936346c
get points associated to the segment
lastgeorge Sep 30, 2025
7f9cc7d
add function of determine_shower_direction
lastgeorge Oct 1, 2025
e1b94d7
add is_shower_topology
lastgeorge Oct 1, 2025
96b8bae
finish implement Segment functions
lastgeorge Oct 1, 2025
0a4ce50
prepare for multi-track fitting
lastgeorge Oct 5, 2025
cf29151
fiill in organize_segments_path function
lastgeorge Oct 5, 2025
a22d26b
update_association
lastgeorge Oct 5, 2025
c7f531f
fix some bugs
lastgeorge Oct 5, 2025
908af96
update code
lastgeorge Oct 5, 2025
3d8c3ba
form_map_multi
lastgeorge Oct 5, 2025
bc9f266
add examine_trajectory
lastgeorge Oct 5, 2025
792b7aa
add fit_point function
lastgeorge Oct 5, 2025
dc46f4c
implement the multi_Trajectory_fit
lastgeorge Oct 6, 2025
3e42672
catch up
lastgeorge Oct 6, 2025
b2230cf
catch up
lastgeorge Oct 6, 2025
b7e6198
add calculate_compact_matrix_multi
lastgeorge Oct 6, 2025
fb441d4
implement dQ_dx_multi_fit
lastgeorge Oct 6, 2025
4512f11
add main function
lastgeorge Oct 6, 2025
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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .aiexclude
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
**/docs/
**/test/
56 changes: 1 addition & 55 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,90 +1,36 @@
---
Language: Cpp
# BasedOnStyle: sphenix
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: true
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterClass: true
AfterControlStatement: true
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Stroustrup
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: true
DisableFormat: true
ExperimentalAutoDetectBinPacking: false
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeCategories:
- Regex: '^<.*\.h>'
Priority: 1
- Regex: '^<.*'
Priority: 2
- Regex: '.*'
Priority: 3
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Right
ReflowComments: true
SortIncludes: false
SpaceAfterCStyleCast: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
TabWidth: 8
UseTab: Never
DisableFormat: true
...

8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,11 @@ spng
.cache
.clangd
junk*
downloads
tmp*

doxy
*.bak
doxy_quick
html
latex
19 changes: 12 additions & 7 deletions Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,11 @@ SHORT_NAMES = NO
# description. If set to NO, the Javadoc-style will behave just like regular Qt-
# style comments (thus requiring an explicit @brief command for a brief
# description.)
### this is comments like /** ... */
# The default value is: NO.

JAVADOC_AUTOBRIEF = NO
JAVADOC_AUTOBRIEF = YES
CSharp_comments = YES

# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
Expand Down Expand Up @@ -280,7 +282,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.

EXTENSION_MAPPING =
EXTENSION_MAPPING = org=md

# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
Expand Down Expand Up @@ -753,7 +755,7 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.

INPUT = README.org apps util iface gen sigproc sio sst tbb
INPUT = README.org apps aux cfg clus docs gen hio iface img pgraph pytorch root sigproc sio tbb test util zio

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
Expand All @@ -773,7 +775,8 @@ INPUT_ENCODING = UTF-8
# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
# *.qsf, *.as and *.js.

FILE_PATTERNS = *.c \
FILE_PATTERNS = *.org \
*.c \
*.cc \
*.cxx \
*.cpp \
Expand Down Expand Up @@ -845,7 +848,7 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*

EXCLUDE_PATTERNS = */test/*
EXCLUDE_PATTERNS = */test/* **/talks/*

# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
Expand Down Expand Up @@ -908,7 +911,9 @@ INPUT_FILTER =
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.

FILTER_PATTERNS =
## Run "./run-doxygen" instead of bare "doxygen" to make this line work
## Note, the filter takes the source file as first arg and prints result to stdout
FILTER_PATTERNS = "*.org=run-doxygen org2md"

# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER ) will also be used to filter the input files that are used for
Expand All @@ -930,7 +935,7 @@ FILTER_SOURCE_PATTERNS =
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.

USE_MDFILE_AS_MAINPAGE = docs/README.org
USE_MDFILE_AS_MAINPAGE = README.org

#---------------------------------------------------------------------------
# Configuration options related to source browsing
Expand Down
5 changes: 5 additions & 0 deletions README.org
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
#+BEGIN_COMMENT
\mainpage
#+END_COMMENT

#+TITLE: Wire-Cell Toolkit
#+SETUPFILE: docs/setup-readme.org



Welcome to the Wire-Cell Toolkit (WCT) source repository at https://github.com/wirecell/wire-cell-toolkit.

* Overview
Expand Down
1 change: 1 addition & 0 deletions apps/src/ConfigDumper.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,5 @@ void ConfigDumper::execute()
}

Persist::dump(get<string>(m_cfg, "filename"), cm.all());
(void)nfailed; // unused, but useful for debugging
}
46 changes: 46 additions & 0 deletions aux/inc/WireCellAux/LinterpFunction.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#include "WireCellIface/IScalarFunction.h"
#include "WireCellIface/IConfigurable.h"
#include "WireCellUtil/Interpolate.h"

namespace WireCell::Aux {

/** A scalar function implemented as linear interpolation on regularly or
* irregularly spaced points.
*
* Extrapolation returns end point values.
*/
class LinterpFunction : public WireCell::IScalarFunction, WireCell::IConfigurable {
public:
virtual ~LinterpFunction();

virtual void configure(const WireCell::Configuration& config);
virtual WireCell::Configuration default_configuration() const {
return Configuration{}; // user must supply all
}

virtual double scalar_function(double x);
private:

/// Config: values
///
/// Array of function samples.
///
/// Config: coords
///
/// Array of the coordinates at which values are sampled.
///
/// Config: start
///
/// The first abscissa value.
///
/// Config: step
///
/// Distance between regular samples
///
/// Note: coords and (start,step) are mutually exclusive. The former
/// implies irregular sample interpolation and the latter regular.

std::function<double(const double&)> m_terp;
};

}
128 changes: 128 additions & 0 deletions aux/inc/WireCellAux/ParticleInfo.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
#ifndef WIRECELLAUX_PARTICLEINFO
#define WIRECELLAUX_PARTICLEINFO

#include "WireCellUtil/Point.h"
#include "WireCellUtil/Units.h"
#include "WireCellUtil/D4Vector.h"
#include <string>
#include <map>

namespace WireCell::Aux {

/**
* @brief A comprehensive particle information storage class
*
* This class stores all relevant particle physics information including
* PDG codes, 4-momentum, mass, name, and kinetic energy. It follows
* Wire-Cell toolkit conventions and integrates well with existing
* deposition and clustering infrastructure.
*/
class ParticleInfo {
public:
// Default constructor - creates an invalid/empty particle
ParticleInfo();

// Comprehensive constructor
ParticleInfo(int pdg_code,
double mass,
const std::string& name,
double kinetic_energy,
const WireCell::Point& momentum_3vec,
int id = 0,
double charge = 0.0);

// Constructor from 4-momentum
ParticleInfo(int pdg_code,
double mass,
const std::string& name,
const WireCell::D4Vector<double>& four_momentum,
int id = 0,
double charge = 0.0);

virtual ~ParticleInfo() = default;

// Core particle properties
int pdg() const { return m_pdg_code; }
double mass() const { return m_mass; }
const std::string& name() const { return m_name; }
double kinetic_energy() const { return m_kinetic_energy; }
int id() const { return m_id; }
double charge() const { return m_charge; }

// 4-momentum access
double energy() const { return m_four_momentum.e(); }
WireCell::Point momentum() const { return WireCell::Point(m_four_momentum.px(), m_four_momentum.py(), m_four_momentum.pz()); }
const WireCell::D4Vector<double>& four_momentum() const { return m_four_momentum; }

// Derived quantities
double momentum_magnitude() const { return m_four_momentum.p(); }
double beta() const { return m_four_momentum.beta(); } // v/c
double gamma() const { return m_four_momentum.gamma(); } // Lorentz factor
double rapidity() const { return m_four_momentum.rapidity(); } // 0.5 * ln((E+pz)/(E-pz))

// Utility methods
bool is_valid() const { return m_pdg_code != 0; }
bool is_charged() const { return std::abs(m_charge) > 1e-6; }
bool is_stable() const; // Based on PDG code

// Setters (for cases where you need to modify after construction)
void set_pdg(int pdg) { m_pdg_code = pdg; }
void set_mass(double mass) { m_mass = mass; update_kinematics(); }
void set_name(const std::string& name) { m_name = name; }
void set_momentum(const WireCell::Point& momentum_3vec);
void set_four_momentum(const WireCell::D4Vector<double>& four_momentum);
void set_kinetic_energy(double ke);
void set_id(int id) { m_id = id; }
void set_charge(double charge) { m_charge = charge; }

// Static utility methods for PDG lookups
static std::string pdg_to_name(int pdg_code);
static double pdg_to_mass(int pdg_code);
static double pdg_to_charge(int pdg_code);

// Factory method to create from PDG code
static ParticleInfo from_pdg(int pdg_code,
const WireCell::Point& momentum_3vec,
int id = 0);

double particle_score() const { return m_particle_score; }
void set_particle_score(double score) { m_particle_score = score; }

private:
// Core data members
int m_pdg_code;
double m_mass;
std::string m_name;
double m_kinetic_energy;
WireCell::D4Vector<double> m_four_momentum; // (E, px, py, pz)
int m_id;
double m_charge;
double m_particle_score{-1.0}; // Optional score for particle ID confidence

// Internal helper methods
void update_kinematics(); // Recalculate energy/momentum relationships
void validate_inputs(); // Check for physical consistency

// Static data for PDG lookups
static const std::map<int, std::string>& get_pdg_name_map();
static const std::map<int, double>& get_pdg_mass_map();
static const std::map<int, double>& get_pdg_charge_map();
};

// Convenience typedefs
using ParticleInfoPtr = std::shared_ptr<ParticleInfo>;
using ParticleInfoVector = std::vector<ParticleInfo>;
using ParticleInfoSelection = std::vector<ParticleInfo*>;

// Helper functions for common particle types
namespace ParticleHelpers {
ParticleInfo electron(const WireCell::Point& momentum, int id = 0);
ParticleInfo muon(const WireCell::Point& momentum, int charge_sign = 1, int id = 0);
ParticleInfo pion_charged(const WireCell::Point& momentum, int charge_sign = 1, int id = 0);
ParticleInfo proton(const WireCell::Point& momentum, int id = 0);
ParticleInfo photon(const WireCell::Point& momentum, int id = 0);
}

} // namespace WireCell::Aux

#endif // WIRECELLAUX_PARTICLEINFO
Loading