Skip to content
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

[PWGHF] Add D0 D0bar reflection infos tagged from data in D0 task #8891

Merged
merged 12 commits into from
Dec 13, 2024

Conversation

zhangbiao-phy
Copy link
Collaborator

@zhangbiao-phy zhangbiao-phy commented Dec 9, 2024

It's good to know how large the reflection contribution in the data

  • Add D0 D0bar reflection column into the D0 candidate selection table
  • Flii D0 D0bar reflection into the D0 task ThnSparse of Data

@zhangbiao-phy zhangbiao-phy changed the title [PWGHF] Add D0 D0bar reflection infos in D0 selector and task [PWGHF] Add D0 D0bar reflection infos tagged from data in D0 selector and task Dec 10, 2024
@zhangbiao-phy zhangbiao-phy marked this pull request as ready for review December 10, 2024 09:42
@vkucera
Copy link
Collaborator

vkucera commented Dec 10, 2024

Hi @zhangbiao-phy , can you please elaborate on the rationale and logic of your changes?
I don't understand why you cannot use the existing flags.

@zhangbiao-phy
Copy link
Collaborator Author

zhangbiao-phy commented Dec 10, 2024

Hi @zhangbiao-phy , can you please elaborate on the rationale and logic of your changes? I don't understand why you cannot use the existing flags.

Hi @vkucera, I would like to directly estimate the D0 reflected candidates in the data. Indeed, it can be done in the D0 task by candidate.isSelD0bar() && candidate.isSelD0(), but it can not be separated to D0 and D0 bar reflection. So I implement it into the selector. Let me know if you have a better idea for this. Thanks a lot!

@alibuild
Copy link
Collaborator

Error while checking build/O2Physics/o2 for 6cd2384 at 2024-12-12 10:38:

## sw/BUILD/O2Physics-latest/log
/sw/SOURCES/O2Physics/8891-slc9_x86-64/0/Common/TableProducer/Converters/trackQA002Converter.cxx:21:17: error: 'TracksQA_002' is not a member of 'o2::aod'; did you mean 'TracksQA_001'?
/sw/SOURCES/O2Physics/8891-slc9_x86-64/0/Common/TableProducer/Converters/trackQA002Converter.cxx:21:29: error: template argument 1 is invalid
/sw/SOURCES/O2Physics/8891-slc9_x86-64/0/Common/TableProducer/Converters/trackQA002Converter.cxx:25:32: error: 'tracksQA_000' was not declared in this scope; did you mean 'tracksQA_002'?
/sw/SOURCES/O2Physics/8891-slc9_x86-64/0/Common/TableProducer/Converters/trackQA002Converter.cxx:59:32: error: 'tracksQA_001' was not declared in this scope; did you mean 'tracksQA_002'?
ninja: build stopped: subcommand failed.

Full log here.

@vkucera
Copy link
Collaborator

vkucera commented Dec 12, 2024

Hi @zhangbiao-phy , can you please elaborate on the rationale and logic of your changes? I don't understand why you cannot use the existing flags.

Hi @vkucera, I would like to directly estimate the D0 reflection in data. Indeed, it can be done in the D0 task by candidate.isSelD0bar() && candidate.isSelD0(), but it can not be separated to D0 and D0 bar reflection. So I implement it into the selector. Let me know if you have a better idea for this. Thanks a lot!

How would you identify a reflection in real data?

@zhangbiao-phy
Copy link
Collaborator Author

Hi @zhangbiao-phy , can you please elaborate on the rationale and logic of your changes? I don't understand why you cannot use the existing flags.

Hi @vkucera, I would like to directly estimate the D0 reflection in data. Indeed, it can be done in the D0 task by candidate.isSelD0bar() && candidate.isSelD0(), but it can not be separated to D0 and D0 bar reflection. So I implement it into the selector. Let me know if you have a better idea for this. Thanks a lot!

How would you identify a reflection in real data?

The candidates be identified as both D0 and D0 bar, It also be saved in some run2 AliPhysics D0 tasks. I attached one plot from local test based on data.
image

@vkucera
Copy link
Collaborator

vkucera commented Dec 12, 2024

I'm sorry, I'm not getting it.
A D0 reflection is an actual D0 meson whose invariant mass under the swapped daughter mass hypotheses is within the analysis mass range. This cannot be decided with certainty in real data. If it was possible, we would reject all reflections from the selection. The degree of certainty that a candidate is a reflection is equal to the level of certainty that a candidate is a D0, which is quantified in the selection flag. I don't see how any combination of other flags can give you any additional information.

@fcatalan92
Copy link
Collaborator

@zhangbiao-phy Also to me it is not clear how your changes to the selector add any additional information to what is already available. I agree with Vit, by definition we cannot disentangle reflections in data.

@zhangbiao-phy
Copy link
Collaborator Author

zhangbiao-phy commented Dec 12, 2024

@zhangbiao-phy Also to me it is not clear how your changes to the selector add any additional information to what is already available. I agree with Vit, by definition we cannot disentangle reflections in data.

Hi @vkucera and @fcatalan92, Thanks for the discussion! We can call that "reflection candidates" instead of "reflection D0 or D0 bar" since it includes signal and bkg. Tagging reflections in real data by requiring the overlap between D0 and D0bar selections is a valid approach to identifying reflection candidates. For some D0 charge-dependent analysis (like D0 v1 or D0 event by event fluctuation), it will be helpful to understand the reflection contribution and the response in data and mc. Reflection studies can indeed shed light on the systematic effects and detector responses (PID) that might otherwise bias such measurements. Indeed, further analysis is necessary to separate the true signal from background contributions within this tagged sample. This ensures accurate signal extraction and proper treatment of reflections in the physics analysis. What do you think?

@fcatalan92
Copy link
Collaborator

fcatalan92 commented Dec 12, 2024

@zhangbiao-phy I see your motivation for performing these checks.

Tagging reflections in real data by requiring the overlap between D0 and D0bar selections is a valid approach to identifying reflection candidates

On this I agree, and it corresponds to requiring candidate.isSelD0bar() && candidate.isSelD0() in the task. I do not think what you are doing in the selector now can provide more information than this, which is already available. Is there a difference?

@vkucera vkucera marked this pull request as draft December 12, 2024 11:56
@fgrosa
Copy link
Collaborator

fgrosa commented Dec 12, 2024

@vkucera @fcatalan92 indeed the reflected-over-signal can be determined in data by extracting separately the D0 signal for candidates that are compatible with one hypothesis, the other, or both (see e.g. slide 6 https://indico.cern.ch/event/1043402/contributions/4394133/attachments/2258188/3832203/promptD0_update_2018PbPb.pdf), but I agree that the information provided by candidate.isSelD0bar() and candidate.isSelD0() should be sufficient.

@zhangbiao-phy
Copy link
Collaborator Author

zhangbiao-phy commented Dec 12, 2024

@zhangbiao-phy I see your motivation for performing these checks.

Tagging reflections in real data by requiring the overlap between D0 and D0bar selections is a valid approach to identifying reflection candidates

On this I agree, and it corresponds to requiring candidate.isSelD0bar() && candidate.isSelD0() in the task. I do not think what you are doing in the selector now can provide more information than this, which is already available. Is there a difference?

hi @fcatalan92, there are some differences in the selector since we have the function selectionTopolConjugate, there we can do the selection for D0 and D0bar. Then, if you tag the reflection in the D0 task, it already merged for D0 D0bar reflection, So the difference between D0 with D0bar reflection only is the Inv. mass hypothesis. But I think even we do the different topo selection, it should be always reflected since the PID not perfect always. So I will do that in the task this time.

@zhangbiao-phy
Copy link
Collaborator Author

zhangbiao-phy commented Dec 12, 2024

@vkucera @fcatalan92 indeed the reflected-over-signal can be determined in data by extracting separately the D0 signal for candidates that are compatible with one hypothesis, the other, or both (see e.g. slide 6 https://indico.cern.ch/event/1043402/contributions/4394133/attachments/2258188/3832203/promptD0_update_2018PbPb.pdf), but I agree that the information provided by candidate.isSelD0bar() and candidate.isSelD0() should be sufficient.

Hi @vkucera @fcatalan92 @fgrosa all, after the discussion, I implemented this only in the D0 task but added two types for pure D0 and pure D0 bar for the checks. You can see the plot below, they are third and fourth-bin content. Let me know if you have any comments and suggestions! Thanks a lot! If no, I will open the PR for ready review.
image

@zhangbiao-phy zhangbiao-phy marked this pull request as ready for review December 12, 2024 16:59
@alibuild
Copy link
Collaborator

Error while checking build/O2Physics/o2 for 289668e at 2024-12-12 18:09:

## sw/BUILD/O2Physics-latest/log
/sw/SOURCES/O2Physics/8891-slc9_x86-64/0/Common/TableProducer/Converters/trackQA002Converter.cxx:21:17: error: 'TracksQA_002' is not a member of 'o2::aod'; did you mean 'TracksQA_001'?
/sw/SOURCES/O2Physics/8891-slc9_x86-64/0/Common/TableProducer/Converters/trackQA002Converter.cxx:21:29: error: template argument 1 is invalid
/sw/SOURCES/O2Physics/8891-slc9_x86-64/0/Common/TableProducer/Converters/trackQA002Converter.cxx:26:19: error: expression cannot be used as a function
/sw/SOURCES/O2Physics/8891-slc9_x86-64/0/Common/TableProducer/Converters/trackQA002Converter.cxx:60:19: error: expression cannot be used as a function
ninja: build stopped: subcommand failed.

Full log here.

@zhangbiao-phy zhangbiao-phy changed the title [PWGHF] Add D0 D0bar reflection infos tagged from data in D0 selector and task [PWGHF] Add D0 D0bar reflection infos tagged from data in D0 task Dec 12, 2024
@fcatalan92 fcatalan92 enabled auto-merge (squash) December 13, 2024 17:06
@fcatalan92 fcatalan92 merged commit ea2fd76 into AliceO2Group:master Dec 13, 2024
11 of 14 checks passed
hernasab pushed a commit to hernasab/O2Physics that referenced this pull request Dec 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pwghf PWG-HF
Development

Successfully merging this pull request may close these issues.

5 participants