Skip to content

[PWGLF] Add finite-width resonance injection and particle definitions#2405

Open
mjkim525 wants to merge 3 commits into
AliceO2Group:masterfrom
mjkim525:ResonanceWidthInjection
Open

[PWGLF] Add finite-width resonance injection and particle definitions#2405
mjkim525 wants to merge 3 commits into
AliceO2Group:masterfrom
mjkim525:ResonanceWidthInjection

Conversation

@mjkim525

@mjkim525 mjkim525 commented Jul 14, 2026

Copy link
Copy Markdown

This PR adds finite-width support for injected resonances in pp at $\sqrt{s}=13.6$ and $5.36$ TeV with Pythia8.

It also introduces configuration files containing additional particle-data definitions and the resonance lists used for injection.

Additional particle-data definitions

generator_pythia8_LF_rapidity_width.C extends the existing LF resonance-injection implementation by loading the additional particle definitions into both:

  • mPythia, which owns the particle-data table used by the combined minimum-bias and injected event; and
  • mPythiaGun, which is used to generate and decay the injected resonances.

This initialization is implemented at lines 155–170. The helper function that extracts the particle-data entries from the configuration and loads them into the Pythia objects is implemented at lines 586–629.

When a minimum-bias event is copied into the event used for resonance injection, its particle-data pointer is explicitly rebound to the particle-data table owned by mPythia. This is implemented at lines 578–584.

This rebinding is required for custom resonances that are not included in Pythia’s default particle database, such as $\Xi(1820)$ and $\Omega(2012)$. Without it, copied particles may no longer be associated with valid particle definitions. Consequently, the injected particles can remain with status code 11 and may not be propagated correctly to the AO2D output.

Finite-width mass sampling

Previously, the masses of injected resonances were always taken as fixed values from the generator configuration. As a result, the generated invariant-mass distributions did not reflect the physical decay widths of the resonances.

The new sampleMass() implementation, located at lines 515–527, uses Pythia’s ParticleData::mSel() function whenever a nonzero particle width is defined.

The sampled mass is then used when constructing the injected particles at:

  • lines 282–308; and
  • lines 392–409.

Consequently, the generated mass distributions now reflect the mass and width information stored either:

  • in Pythia’s built-in particle database; or
  • in the additional particle definitions supplied through the new configuration files.

The following plot shows the results of the local tests performed with the updates introduced in this PR with pp 13.6 TeV.

final_channel_mass_all

Note that $\Omega(2012)$ PDG code is assumed 123334, following previous studies such as [the Run 2 result] (https://journals.aps.org/prd/abstract/10.1103/v4mh-3r8z)

@github-actions

Copy link
Copy Markdown

REQUEST FOR PRODUCTION RELEASES:
To request your PR to be included in production software, please add the corresponding labels called "async-" to your PR. Add the labels directly (if you have the permissions) or add a comment of the form (note that labels are separated by a ",")

+async-label <label1>, <label2>, !<label3> ...

This will add <label1> and <label2> and removes <label3>.

The following labels are available
async-2023-pbpb-apass4
async-2023-pp-apass4
async-2024-pp-apass1
async-2022-pp-apass7
async-2024-pp-cpass0
async-2024-PbPb-apass1
async-2024-ppRef-apass1
async-2024-PbPb-apass2
async-2023-PbPb-apass5

}
};

double sampleMass(const ConfigContainer& cfg)

@mjkim525 mjkim525 Jul 14, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Helper function for sampling the injected resonance mass

const double phi = gRandom->Uniform(0, TMath::TwoPi());
const double px{pt * std::cos(phi)};
const double py{pt * std::sin(phi)};
const double mass = sampleMass(cfg);

@mjkim525 mjkim525 Jul 14, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Use the sampled mass when constructing generator-decayed injected particles

@mjkim525 mjkim525 changed the title [PWGLF] Update resonance-injection code and particle lists [PWGLF] Add finite-width resonance injection and particle definitions Jul 14, 2026
const double phi = gRandom->Uniform(0, TMath::TwoPi());
const double px{pt * std::cos(phi)};
const double py{pt * std::sin(phi)};
const double mass = sampleMass(cfg);

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Use the same mass-sampling prescription for transport-decayed injected particles

{
mPythia.event = pythiaObjectMinimumBias.event;
// Event assignment adopts the source ParticleData pointer; use the import table for injected custom PDGs.
mPythia.event.init("Minimum-bias event with injected particles", &mPythia.particleData);

@mjkim525 mjkim525 Jul 14, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Rebind the copied event to mPythia’s particle-data table so that custom particle definitions remain accessible.

@mjkim525 mjkim525 marked this pull request as ready for review July 14, 2026 04:06
@mjkim525 mjkim525 requested a review from a team as a code owner July 14, 2026 04:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant