Repository navigation
LArSoft v10_29_00
LArSoft v10_29_00 Release Notes
Download instructions for larsoft v10_29_00
Download instructions for just larsoftobj v10_07_00
Purpose
- approved PRs
New features
- LArSoft/larpandoracontent#107
- New 2D to 3D matching algorithms.
- The option to apply more aggressive stitching of cathode crossing tracks when those tracks are nearly parallel to the cathode.
- More flexible gap crossing configuration for tracks based on the angle of incidence of the track.
- Updates to metric calculations.
- A change to CosmicRayTaggingTool variable visibility to allow ND derivation.
- Removal of deprecated reclustering algorithms.
- All features are opt-in, so no product changes are expected.
- LArSoft/larpandora#57
- Add support for particle ID directly within larpandora, along with a number of utility functions.
- No product changes are expected.
- LArSoft/larana#46
- Including a new algorithm for OpHitFinder that can handle correction to a pulse's area due to electronics saturation. For this, a new parameter is needed to be passed on to the algorithm: the channel number. The new algorithm was based on the AlgoSiPM one. A tool is implemented and allows different setups in the experiment specific code.
- An example of configured tool can be found here DUNE/duneopdet#153.
- LArSoft/lardata#41
- This PR consolidates the matching logic to be consistent with
art::Event handlegetters- Bug fix: the pattern was ignored. The matcher builds its regular expressions from the candidate tag instead of the user's pattern:
cpp std::regex label_re(!tag.label().empty() ? tag.label() : ".*"); // `tag` is the candidateso every tag matches itself andgetManyByRegexTagreturns all products of typeT, whatever pattern is requested. The patterns are now taken from the user's tag. - Consistency with
art::Eventhandle getters. For a non-regex tag,e.getHandle<T>(input_tag)andlar::util::getManyByRegexTag<T>(e, input_tag)must return consistent results, i.e. the same handle. Even with the pattern fixed, this is not the case:
- an empty instance name is treated as "any instance", while for art it is a value like any other;
- products from all processes are returned, while art returns the one from the most recent process.
- Bug fix: the pattern was ignored. The matcher builds its regular expressions from the candidate tag instead of the user's pattern:
- Selection logic
-
Pattern matching. Each tag field is a
std::regexthat must match the whole field (gaushitdoes not matchgaushitStage2):- label and instance are matched as given: an empty pattern matches only an empty value (use
.*for any instance); -
an empty process means "any process".
- label and instance are matched as given: an empty pattern matches only an empty value (use
-
Newest matching process. art returns the matching tags grouped by process, newest first. Only the products of the first process with a valid matching product are returned.
- This is the rule art applies in
getHandle(resolve_unique_product: "The first process with a
match wins."), so for a literal tag the result is either{P}, wherePis the producte.getHandle<T>(tag)returns, or empty when that handle is invalid.
-
- Examples
- Event history
reco1→reco2(newest), productsgaushit::reco1,gaushit:uncalib:reco1,gaushitStage2::reco1,gaushit::reco2,fasthit::reco2:
- Event history
- This PR consolidates the matching logic to be consistent with
| tag | result |
|---|---|
gaushit |
gaushit::reco2, same as e.getHandle<T>("gaushit") |
gaushit.*::reco1 |
gaushit::reco1, gaushitStage2::reco1 |
gaushit.* |
gaushit::reco2 (gaushitStage2 only exists in reco1) |
gaushit:.*:reco1 |
gaushit::reco1, gaushit:uncalib:reco1 |
gaushit:uncalib |
gaushit:uncalib:reco1 (newest process with a match) |
- Implementation
detail::RegexTagMatcheris replaced bydetail::RegexTagSelector, anart::SelectorBasepassed toart::Event::getInputTags<T>(selector), so the filtering happens inside art. It takes three patterns (label, instance, process), compiled once at construction.getManyByRegexTagmaps an empty process to.*and keeps only the newest matching process.gallery::Eventis no longer supported: itsgetInputTags()takes no selector and it has nogetHandle().- New Boost unit test
test/ArtDataHelper/getManyByRegexTag_test.cc, with a mock event that, like
art, returns the tags grouped by process, newest first, and one case per documented example.
- Impact on existing users
- Because of the bug fix, callers now receive only the products matching their pattern instead ofevery product of type
T. Callers relying on an empty instance meaning "any instance", or on products from older processes, must update their tags (e.g.caldata→caldata:.*). Known users:GausHitFinder_module.cc(larreco),TriggerAnaTree_module.ccandTriggerPrimitiveMakerTPC_module.cc(dunetrigger).
- Because of the bug fix, callers now receive only the products matching their pattern instead ofevery product of type
Bug fixes
Updated dependencies
Change List
larsoft v10_29_00
- "changes since v10_28_00":v10_28_00...v10_29_00
lareventdisplay v10_01_14
- "changes since v10_01_13":LArSoft/lareventdisplay@v10_01_13...v10_01_14
larexamples v10_02_09
- "changes since v10_02_08":LArSoft/larexamples@v10_02_08...v10_02_09
larpandora v10_08_00
- "changes since v10_07_00":LArSoft/larpandora@v10_07_00...v10_08_00
larsimrad v10_01_13
- "changes since v10_01_12":LArSoft/larsimrad@v10_01_12...v10_01_13
larsimdnn v10_02_12
- "changes since v10_02_11":LArSoft/larsimdnn@v10_02_11...v10_02_12
larrecodnn v10_05_06
- "changes since v10_05_05":LArSoft/larrecodnn@v10_05_05...v10_05_06
larwirecell v10_04_06
- "changes since v10_04_05":LArSoft/larwirecell@v10_04_05...v10_04_06
larana v10_04_00
- "changes since v10_03_03":LArSoft/larana@v10_03_03...v10_04_00
larreco v10_07_02
- "changes since v10_07_01":LArSoft/larreco@v10_07_01...v10_07_02
larsim v10_23_02
- "changes since v10_23_01":LArSoft/larsim@v10_23_01...v10_23_02
larg4 v10_20_09
- "changes since v10_20_08":LArSoft/larg4@v10_20_08...v10_20_09
larevt v10_00_25
- "changes since v10_00_24":LArSoft/larevt@v10_00_24...v10_00_25
lardata v10_02_00
- "changes since v10_01_00":LArSoft/lardata@v10_01_00...v10_02_00
larcore v10_00_07
larpandoracontent v05_08_00
- "changes since v05_07_00":LArSoft/larpandoracontent@v05_07_00...v05_08_00