Project Juggler issueshttps://eicweb.phy.anl.gov/EIC/juggler/-/issues2023-10-02T18:32:22Zhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/111Rethink container build pipeline2023-10-02T18:32:22ZWhitney ArmstrongRethink container build pipelineNot sure if `eic_container` is still working properly with `juggler`, or if it is even a reasonable thing to rely on the `eic_container` to build `juggler` anymore.Not sure if `eic_container` is still working properly with `juggler`, or if it is even a reasonable thing to rely on the `eic_container` to build `juggler` anymore.Sylvester JoostenSylvester Joostenhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/106Migrate SYCL-enabled island clustering to algorithms2022-09-26T21:00:48ZWouter DeconinckMigrate SYCL-enabled island clustering to algorithmsWouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/73add RICH IRT algorithm2022-08-12T22:39:21ZChristopher Dilksadd RICH IRT algorithmChristopher DilksChristopher Dilkshttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/97ClusterRecoCoG introduces NaN in cluster energies2022-07-05T15:09:06ZWouter DeconinckClusterRecoCoG introduces NaN in cluster energiesFor `tw == 0` the following [lines](https://eicweb.phy.anl.gov/EIC/juggler/-/blob/master/JugReco/src/components/ClusterRecoCoG.cpp#L199) introduce a `NaN`:
```c++
if (tw == 0.) {
warning() << "zero total weights encountered, yo...For `tw == 0` the following [lines](https://eicweb.phy.anl.gov/EIC/juggler/-/blob/master/JugReco/src/components/ClusterRecoCoG.cpp#L199) introduce a `NaN`:
```c++
if (tw == 0.) {
warning() << "zero total weights encountered, you may want to adjust your weighting parameter." << endmsg;
}
cl.setPosition(v / tw);
```Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/99TrackProjector: generalize by passing target surface as option2022-06-25T03:39:33ZWouter DeconinckTrackProjector: generalize by passing target surface as optionThe current [TrackProjector](https://eicweb.phy.anl.gov/EIC/juggler/-/blob/master/JugTrack/src/components/TrackProjector.cpp) has some hardcoded assumptions, i.e. https://eicweb.phy.anl.gov/EIC/juggler/-/blob/master/JugTrack/src/componen...The current [TrackProjector](https://eicweb.phy.anl.gov/EIC/juggler/-/blob/master/JugTrack/src/components/TrackProjector.cpp) has some hardcoded assumptions, i.e. https://eicweb.phy.anl.gov/EIC/juggler/-/blob/master/JugTrack/src/components/TrackProjector.cpp#L128-129
```c++
if (pathlength_at_reflayer<0 && volume==29 && layer==4 && trackstate.hasCalibrated()) pathlength_at_reflayer = pathlength; // 2nd outter barrel
if (pathlength_at_reflayer<0 && pathlength>1700) pathlength_at_reflayer = pathlength; // endcap GEM layer
```
We should change this to be more generic.Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/96Implement SimTrackerHitsMerger to overlay/merge background events2022-06-18T03:28:20ZWouter DeconinckImplement SimTrackerHitsMerger to overlay/merge background eventsSimTrackerHitsCollector is an example class implementation.
Specs:
- SimTrackerHitsMerger can take a number of input collections, along with probabilities for each to be picked,
- With probability, it merges one of each of the input col...SimTrackerHitsCollector is an example class implementation.
Specs:
- SimTrackerHitsMerger can take a number of input collections, along with probabilities for each to be picked,
- With probability, it merges one of each of the input collections into the output collection.Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/95JugFast::MatchClusters needs updating for EDM4hep migration2022-06-10T18:30:37ZSylvester JoostenJugFast::MatchClusters needs updating for EDM4hep migrationhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/94Ensure MRs from forks do not fail due to missing docker secrets2022-06-01T18:23:57ZWouter DeconinckEnsure MRs from forks do not fail due to missing docker secretsThis likely is just a matter of skipping the docker push when no secrets are available.This likely is just a matter of skipping the docker push when no secrets are available.Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/93Break cyclic dependency between juggler and eic_container CI pipelines2022-05-11T23:28:06ZWouter DeconinckBreak cyclic dependency between juggler and eic_container CI pipelinesUse case: backwards incompatible upgrade of acts.
- Upgrading eic_container requires being able to build juggler with new acts
- Upgrading juggler requires having an eic_container that has the new actsUse case: backwards incompatible upgrade of acts.
- Upgrading eic_container requires being able to build juggler with new acts
- Upgrading juggler requires having an eic_container that has the new actsSylvester JoostenSylvester Joostenhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/92Ensure event weights pass through the entire simulation and reconstruction chain2022-04-30T15:19:46ZWouter DeconinckEnsure event weights pass through the entire simulation and reconstruction chainWouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/88Use gsl::owner<T*> in places where clang-tidy suggests it2022-03-24T22:10:43ZWouter DeconinckUse gsl::owner<T*> in places where clang-tidy suggests itWouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/87Figure out cleaner solution to #403: non-const in initializer list needs narr...2022-03-21T23:46:01ZWouter DeconinckFigure out cleaner solution to #403: non-const in initializer list needs narrowingProblem: calculations are locally done in double, but need to be cast into float for output, ideally without any effort. We also want users to use nested initializer lists for the components of the output objects. And we don't want lots ...Problem: calculations are locally done in double, but need to be cast into float for output, ideally without any effort. We also want users to use nested initializer lists for the components of the output objects. And we don't want lots of warnings (or, even worse, errors in clang that work in gcc).
Too much `decltype` in https://eicweb.phy.anl.gov/EIC/juggler/-/merge_requests/403
Maybe add a utility:
```cpp
namespace eicd {
template <class Vector3, class Float = double>
Vector3 castToFloatVector(const Float v1, const Float v2, const Float v3) {
return {static_cast<float>(v1),
static_cast<float>(v2),
static_cast<float>(v3)};
}
}
```Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/85Re-enable inclusive kinematics calculations2022-02-22T05:57:44ZWouter DeconinckRe-enable inclusive kinematics calculationshttps://eicweb.phy.anl.gov/EIC/juggler/-/merge_requests/386https://eicweb.phy.anl.gov/EIC/juggler/-/merge_requests/386Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/84edm4hep::Vector3f etc: introduce theta, phi, eta, mag functions2022-02-18T02:10:15ZWouter Deconinckedm4hep::Vector3f etc: introduce theta, phi, eta, mag functionsFile upstream bug, change in all the places where we now calculate this ourselves.File upstream bug, change in all the places where we now calculate this ourselves.Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/83ParticleSvc: Return charge a float to prevent issues with narrowing2022-02-18T02:01:40ZWouter DeconinckParticleSvc: Return charge a float to prevent issues with narrowingint (uint64_t) requires narrowing when represented in float. Not an actual problem for a charge that is +/- an integer few (where it can always be represented exactly), but even a 32bit float can represent all these charges correctly in ...int (uint64_t) requires narrowing when represented in float. Not an actual problem for a charge that is +/- an integer few (where it can always be represented exactly), but even a 32bit float can represent all these charges correctly in the same bit space and would not generate warnings.Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/82Document auto/float/double strategy and apply consistently2022-02-18T01:45:25ZWouter DeconinckDocument auto/float/double strategy and apply consistentlyE.g. input data has mixture of float and double, algorithm should (typically) upgrade this to double, explicit static_cast<float> for output data that is float, but not for output data saved as double.E.g. input data has mixture of float and double, algorithm should (typically) upgrade this to double, explicit static_cast<float> for output data that is float, but not for output data saved as double.Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/81MC2SmearedParticle: E^2 = p^2 + m^2 should be valid after smearing2022-02-18T01:34:47ZWouter DeconinckMC2SmearedParticle: E^2 = p^2 + m^2 should be valid after smearingWe just smear momentum, but don't modify energy.We just smear momentum, but don't modify energy.Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/80Test the Juggler Birks constant treatment2022-02-18T01:22:34ZWouter DeconinckTest the Juggler Birks constant treatmenthttps://eicweb.phy.anl.gov/EIC/juggler/-/merge_requests/382#note_17718https://eicweb.phy.anl.gov/EIC/juggler/-/merge_requests/382#note_17718Wouter DeconinckWouter Deconinckhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/79Testing CI for Alexander2022-01-28T23:06:31ZDmitry RomanovTesting CI for AlexanderDmitry RomanovDmitry Romanovhttps://eicweb.phy.anl.gov/EIC/juggler/-/issues/77Source linker storage performance2022-01-15T22:29:50ZWouter DeconinckSource linker storage performanceAs pointed out by Paul Gessinger, https://github.com/acts-project/acts/issues/1106#issuecomment-989624406:
> One thing I noticed when looking at the MR over on your Gitlab is that you copied the pattern from our fitting algorithm, where ...As pointed out by Paul Gessinger, https://github.com/acts-project/acts/issues/1106#issuecomment-989624406:
> One thing I noticed when looking at the MR over on your Gitlab is that you copied the pattern from our fitting algorithm, where I introduced an std::list to have stable pointers for the source links I create. This is not necessarily a good idea for a setup meant for any kind of production: std::list is relatively slow. I didn't add anything more clever to that algorithm there because it wasn't needed, but I would suggest you try to work around using this pattern, for example by creating the source links in one pass and only afterwards creating the measurements (when source link pointers are stable)
This needs some thinking.Wouter DeconinckWouter Deconinck