-
Notifications
You must be signed in to change notification settings - Fork 5
Version of GausHitFinder with 2 unfolds #21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -62,6 +62,18 @@ iteration is replaced by that sequence of algorithms. | |||||||||||||||||
| 3. register_find_hits_with_gaussians_design1.cpp | ||||||||||||||||||
| 4. test_find_hits_with_gaussians_design1.jsonnet | ||||||||||||||||||
|
|
||||||||||||||||||
| These files extend design1 by also replacing the inner | ||||||||||||||||||
| parallel_for (over ROIs) with a second unfold-transform-fold. | ||||||||||||||||||
| The resulting layer hierarchy is: | ||||||||||||||||||
| spill -> wire -> roi. A `wire_roi_data` struct bundles | ||||||||||||||||||
| a single ROI (`datarange_t`) with the wire-level context | ||||||||||||||||||
| (channel, view) needed by the transform. | ||||||||||||||||||
|
|
||||||||||||||||||
| 1. find_hits_with_gaussians_design2.hpp | ||||||||||||||||||
| 2. find_hits_with_gaussians_design2.cpp | ||||||||||||||||||
| 3. register_find_hits_with_gaussians_design2.cpp | ||||||||||||||||||
| 4. test_find_hits_with_gaussians_design2.jsonnet | ||||||||||||||||||
|
|
||||||||||||||||||
| We plan to implement more prototype migrations | ||||||||||||||||||
| of GausHitFinder in the future to explore the | ||||||||||||||||||
| possibilities and execute tests. | ||||||||||||||||||
|
|
@@ -114,10 +126,11 @@ Getting the single transform to work was a good first step. | |||||||||||||||||
|
|
||||||||||||||||||
| The next thing we implemented was replacing the | ||||||||||||||||||
| outer `parallel_for` with an `unfold`, `transform`, and `fold` | ||||||||||||||||||
| sequence of algorithms. In the future, we plan to create other | ||||||||||||||||||
| versions pushing the division into separate algorithms to lower | ||||||||||||||||||
| levels. Then we plan to run tests and compare the different | ||||||||||||||||||
| versions. | ||||||||||||||||||
| sequence of algorithms (design1). After that, we created | ||||||||||||||||||
| design2 which also replaces the inner `parallel_for` (over ROIs) | ||||||||||||||||||
| with a second `unfold`, `transform`, and `fold` sequence, | ||||||||||||||||||
| resulting in a three-layer hierarchy (spill -> wire -> roi). | ||||||||||||||||||
|
Comment on lines
+129
to
+132
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Use spaced design names in prose. Write “design 1” and “design 2” here; the unspaced forms should remain reserved for filenames and identifiers. Suggested wording- sequence of algorithms (design1). After that, we created
- design2 which also replaces the inner `parallel_for` (over ROIs)
+ sequence of algorithms (design 1). After that, we created
+ design 2 which also replaces the inner `parallel_for` (over ROIs)📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[grammar] ~129-~129: Ensure spelling is correct (QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1) 🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||||||||||||||||||
| We plan to run tests and compare the different versions. | ||||||||||||||||||
|
|
||||||||||||||||||
| `Phlex` will not support the `Tools` feature that existed in | ||||||||||||||||||
| `art`. One possibility is that algorithm nodes scheduled | ||||||||||||||||||
|
|
@@ -223,7 +236,7 @@ Two output data members of `Hit` were ignored because they depend on the `Geomet | |||||||||||||||||
| geo::WireID fWireID; ///< WireID for the hit (Cryostat, TPC, Plane, Wire) | ||||||||||||||||||
| ``` | ||||||||||||||||||
|
|
||||||||||||||||||
| This was done for both `phlex` versions of GausHitFinder. The output of both are identical with each other and with the `art` version. | ||||||||||||||||||
| This was done for all `phlex` versions of GausHitFinder. The output of all versions are identical with each other and with the `art` version. | ||||||||||||||||||
|
|
||||||||||||||||||
| The `phlex` process was run with multithreading and that causes the order of `Hit` objects to vary from one execution to the next and also the order of events to vary. In the comparison the `Hit` objects were sorted and we had to be careful to compare matching events. | ||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: Framework-R-D/phlex-examples
Length of output: 2121
🏁 Script executed:
Repository: Framework-R-D/phlex-examples
Length of output: 6145
Use a resource lock for shared hit outputs.
The
DEPENDSchain works, but every new design still has to hard-code the previous design’s comparison test names. Those tests all read/write the same${CMAKE_CURRENT_BINARY_DIR}/hits_${n}.txtfiles under the lock named in the diff, so a sharedRESOURCE_LOCKexpresses the real constraint and keeps filtered ctest runs safe without adding test-name dependency chains.🤖 Prompt for AI Agents