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

Contribution of PC and PV currents #265

Open
mmikhasenko opened this issue Dec 1, 2022 · 1 comment
Open

Contribution of PC and PV currents #265

mmikhasenko opened this issue Dec 1, 2022 · 1 comment
Labels
📝 Docs Improvements or additions to documentation
Milestone

Comments

@mmikhasenko
Copy link
Contributor

Just a curious physics question that I wonder often: what is a decay rate of Lc that goes via PC and PV currents.
Dump it here, and remove from my head. We might check it one day.

Two clues to investigate it:

  • LS is eigenbasis for the parity operator
  • PC and PV do not interfere

Essentially, one just need the decay rate matrix in LS basis. One can either:

  • use the alternative LS model, or
  • map the default model to LS: compute couplings, validate exact equality, compute the rate matrix.
@redeboer redeboer added the 📝 Docs Improvements or additions to documentation label Dec 9, 2022
@redeboer redeboer added this to the 0.0.6 milestone Dec 9, 2022
@redeboer redeboer modified the milestones: 0.0.6, 0.1.0 Jan 17, 2023
@mmikhasenko
Copy link
Contributor Author

mmikhasenko commented Oct 18, 2023

Here, one needs to modify the compute_decay_rates function from
https://github.com/ComPWA/polarimetry/blob/main/docs/intensity.ipynb

something in this direction,

# Assuming each resonance has an attribute 'couplings' that lists its couplings
all_couplings = [coupling for resonance in resonances for coupling in resonance.couplings]
n_couplings = len(all_couplings)

def compute_decay_rates_for_couplings(func, integration_sample: DataSample):
    decay_rates = np.zeros(shape=(n_couplings, n_couplings))
    combinations = list(product(enumerate(all_couplings), enumerate(all_couplings)))
    progress_bar = tqdm(
        desc="Calculating rate matrix for couplings",
        disable=NO_TQDM,
        total=(len(combinations) + n_couplings) // 2,
    )
    I_tot = integrate_intensity(intensity_func(integration_sample))
    for (i, coupling1), (j, coupling2) in combinations:
        if j < i:
            continue
        progress_bar.postfix = f"{coupling1.name} × {coupling2.name}"
        coup1 = to_regex(coupling1.name)
        coup2 = to_regex(coupling2.name)
        if coup1 == coup2:
            I_sub = sub_intensity(
                func, integration_sample, non_zero_couplings=[coup1]
            )
        else:
            I_sub = interference_intensity(func, integration_sample, [coup1], [coup2])
        decay_rates[i, j] = I_sub / I_tot
        if i != j:
            decay_rates[j, i] = decay_rates[i, j]
        progress_bar.update()
    progress_bar.close()
    return decay_rates

and run the computation for the LS model

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📝 Docs Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants