Skip to content

[PWGLF] SigmaPlus MCgen info & PCM reco fix - #17835

Merged
romainschotter merged 5 commits into
AliceO2Group:masterfrom
hfribert:sigma-reco-eff
Sep 9, 2026
Merged

[PWGLF] SigmaPlus MCgen info & PCM reco fix#17835
romainschotter merged 5 commits into
AliceO2Group:masterfrom
hfribert:sigma-reco-eff

Conversation

@hfribert

@hfribert hfribert commented Sep 8, 2026

Copy link
Copy Markdown
Contributor
  • The PCM reconstruction for the SigmaPlus does not use the V0 tables anymore, but searches and fits the electron/positron itself (many are missing in the V0 tables)

  • Added SigmaPlus MC truth pT to the LFKinkDecayTables

  • Added in both the sigmaplusbuilder and the sigmaHadCorr task the ability to save the trueMC-generated SigmaPlus info for efficiency studies

  • Fixed linter issues of the sigmaHadCorr task

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

O2 linter results: ❌ 0 errors, ⚠️ 7 warnings, 🔕 0 disabled

@alibuild

alibuild commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Error while checking build/O2Physics/code-check for ba8b4b3 at 2026-09-08 19:57:

## sw/BUILD/O2Physics-code-check-latest/log
--
========== List of issues found ==========
++ echo 'Found 16 errors and 31 warnings.'
Found 16 errors and 31 warnings.
++ [[ 16 -gt 0 ]]
++ cat /sw/BUILD/7d1ba5c274c654377b372979ee3281600e9abef7/O2Physics-code-check/errors.txt
PWGLF/DataModel/LFKinkDecayTables.h:196:50: error: no header providing "uint8_t" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/DataModel/LFKinkDecayTables.h:197:50: error: no header providing "int16_t" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:40:1: error: included header Vector4D.h is not used directly [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:410:17: error: no header providing "ROOT::Math::PxPyPzMVector" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:58:8: error: constructor does not initialize these fields: ccdb [cppcoreguidelines-pro-type-member-init,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:98:3: error: no header providing "o2::framework::Produces" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:101:3: error: no header providing "o2::framework::Service" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:108:42: error: no header providing "o2::framework::OutputObjHandlingPolicy" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:114:13: error: no header providing "o2::framework::InitContext" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:134:11: error: no header providing "o2::framework::AxisSpec" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:148:40: error: no header providing "o2::framework::kTH1F" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:167:82: error: no header providing "o2::framework::kTH2F" is directly included [misc-include-cleaner,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:403:9: error: uninitialized record type: 'pNeg' [cppcoreguidelines-pro-type-member-init,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:404:9: error: uninitialized record type: 'pPos' [cppcoreguidelines-pro-type-member-init,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:749:5: error: uninitialized record type: 'pProton' [cppcoreguidelines-pro-type-member-init,-warnings-as-errors]
PWGLF/TableProducer/Strangeness/sigmaplusbuilder.cxx:750:5: error: uninitialized record type: 'pGamma1' [cppcoreguidelines-pro-type-member-init,-warnings-as-errors]
++ [[ 31 -gt 0 ]]
++ cat /sw/BUILD/7d1ba5c274c654377b372979ee3281600e9abef7/O2Physics-code-check/warnings.txt
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:61:3: warning: function 'ptHad' should be marked [[nodiscard]] [modernize-use-nodiscard]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:65:3: warning: function 'sigmaPt' should be marked [[nodiscard]] [modernize-use-nodiscard]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:321:57: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:324:38: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:328:62: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:336:32: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:350:34: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:365:78: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:374:18: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:376:20: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:628:33: warning: 2nd argument 'tracks' (passed to 'tracksDauSigma') looks like it might be swapped with the 3rd, 'tracksC' (passed to 'tracks') [readability-suspicious-call-argument]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:664:54: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:666:76: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:668:76: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:672:35: warning: 2nd argument 'tracks' (passed to 'tracksDauSigma') looks like it might be swapped with the 3rd, 'tracksC2' (passed to 'tracks') [readability-suspicious-call-argument]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:686:54: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:688:76: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:690:76: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:694:35: warning: 2nd argument 'tracks' (passed to 'tracksDauSigma') looks like it might be swapped with the 3rd, 'tracksC2' (passed to 'tracks') [readability-suspicious-call-argument]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:720:33: warning: 2nd argument 'tracks' (passed to 'tracksDauSigma') looks like it might be swapped with the 3rd, 'tracksC' (passed to 'tracks') [readability-suspicious-call-argument]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:830:54: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:832:76: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:834:76: warning: statement should be inside braces [readability-braces-around-statements]
PWGLF/TableProducer/Strangeness/sigmaHadCorr.cxx:838:35: warning: 2nd argument 'tracks' (passed to 'tracksDauSigma') looks like it might be swapped with the 3rd, 'tracksC2' (passed to 'tracks') [readability-suspicious-call-argument]
[0 more errors; see full log]

Full log here.

@romainschotter romainschotter left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @hfribert !
The PR looks fine!
However, I understand that you need to use the DCA fitter to reconstruct the kink topology of the Sigma+ --> proton gamma (why not proton pi0?) but I am not entirely sure to understand why it is necessary to rebuild the photon from scratch and not take them from the V0 table produced in the propagationService.
You wrote that a lot of photons were lost in the propagationService. Could you please elaborate a bit more?
It would be useful to understand how and why they are lost in order to fix it centrally.
Thank you very much!

@hfribert

hfribert commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Hi @romainschotter !

Actually we reconstruct the decay to proton + pi0, but due to the short lifetime of the pi0 we assume that the proton and 2 gammas come from one vertex. To boost efficiency we only reconstruct one of the photons via PCM and apply some kinematic constraints such as the pion mass and decay planes etc. to reconstruct the full decay in the end.

Regarding the V0 tables, they have some preselections applying CPA and DCA cuts which seem to be too tight for the dielectrons we try to reconstruct; the 'findable' histograms that we implemented with MC truth showed at least that many dielectrons are not saved in the tables due to that. (If their quality is good enough for reliable dca fits is to be seen)

Screenshot 2026-09-08 at 23 09 42

@romainschotter

Copy link
Copy Markdown
Collaborator

Hi @hfribert !
Thank you very much for the prompt reply!
Regarding the V0 table: I am confused because the propagationService uses very loose selections (cosPA > 0.95, DCA pos/neg to PV > 0.05 cm, which are the loosest selections possible). The only selection that could be "tight" is DCA V0 daughters < 1 cm and we could consider to loosen it, either centrally or in your own analysis ticket in Hyperloop by making a clone of the propagationService.
The other reason for sticking to the propagationService is that, because it has been used and is currently used in photon analyses, it includes useful features to address issues like the fact that TPC-only tracks (and thus PCM photons) are badly constrained in time and are compatible with several collisions. The propagationService includes, for instance, different strategies to address this "deduplication" problem.

@hfribert

hfribert commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Hi @romainschotter, thanks a lot for the insights on the propagationService!

I will follow the recommendation to use the propagationService instead, after checking out the available deduplication options, etc., and considering the possibility of just creating my own propagation-service wagon with looser selections if needed. Thanks again for the quick reply!

I am making some more checks on which cuts specifically have to be loosened, and will update the PR

@romainschotter

Copy link
Copy Markdown
Collaborator

Hi @hfribert !
The choice of the deduplication algorithm can be set in the propagationService via the configurable deduplicationAlgorithm, which is an integer. There are different modes and, by default, the mode 1 is used for PCM photons as it is the one showing the best performances. You can find more information about the different deduplication modes in this presentation, for example: https://indico.cern.ch/event/1547630/#2-update-on-sigma0-baryon-prod
If needed, we can also discuss either privately or at the PAG-Strangeness meeting.
Thank you very much!

@romainschotter
romainschotter enabled auto-merge (squash) September 9, 2026 14:47
@romainschotter
romainschotter merged commit 7e79308 into AliceO2Group:master Sep 9, 2026
13 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

3 participants