ComPWA / polarimetry

Polarimetry for the decay Λc → p K π
https://compwa.github.io/polarimetry
Apache License 2.0
5 stars 1 forks source link

Contribution of PC and PV currents #265

Open mmikhasenko opened 1 year ago

mmikhasenko commented 1 year ago

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:

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

mmikhasenko commented 1 year ago

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