Changes between Version 8 and Version 9 of Density


Ignore:
Timestamp:
Oct 24, 2025, 4:34:45 PM (4 days ago)
Author:
Durupt
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Density

    v8 v9  
    4040}}}
    4141
    42 With this code, for each event of the file, you read the value `density` which contains the independent coefficients of the density matrix. The utility function `square_matrix` allows to write it in the usual matrix form needed for further analysis.
     42With this code, for each event of the file, you read the value `density` which contains the independent coefficients of the density matrix. The utility function `square_matrix` allows to write it in the usual matrix form needed for further analysis.\\
     43For the rest of this page, we will use the same import names as in this block of code.
    4344
    4445== Implementation of the quantum information obseravbles
    4546Now that we have the density matrices for each event, we can compute any quantum information observable that we want. The library `Density_functions.py` contains a non-exaustive list of them that will be listed here and that can be called (example of the concurrence here) via.
    4647{{{#!python
    47 dens.Get_Concurrence(density)
     48concurrence = dens.Get_Concurrence(square_density)
    4849}}}
    4950We will now give a list of the different quantum information observables currently available in the library.
    5051For more physical and more detailed descriptions of the observables, read https://arxiv.org/abs/2510.17730.
    5152
    52 === Purity
     53=== Purity
     54Purity represents how mixed a quantum system is.\\ Available for all systems \\It can be computed with the following syntax:
     55{{{#!python
     56purity = dens.Get_Purity(square_density)
     57}}}
     58Normalised purity (which only differs in the normalisation factor) can be computed with the following syntax:
     59{{{#!python
     60purity_normalised = dens.Get_Normalised_Purity(square_density)
     61}}}
    5362
    5463=== Concurrence
     64Concurrence is an entanglement marker. Concurrence = 0 means the system is separable, and if Concurrence > 0, the bigger it is the more entangled is the system.\\
     65Available for qubit-qubit (2 x 2) systems only.\\
     66It can be computed with the following syntax:
     67{{{#!python
     68concurrence = dens.Get_Concurrence(square_density)
     69}}}
     70
     71For the qutrit-qutrit (3 x 3) system, lower and upper bounds (the square of these bounds are computed more precisely) are known and be computer with the following syntax:
     72{{{#!python
     73lower_bound_concurrence_squared = dens.ConcLB2(square_density, pdg_pos)
     74upper_bound_concurrence_squared = dens.ConcUB2(square_density, pdg_pos)
     75}}}
     76Note that `pdg_pos` is a the list of the `PDG` codes of the particles in the density matrix. If you study a system W^+^ W^-^, we would have `pdg_pos = [24, -24]`
     77
    5578
    5679=== Bell test
     80For the case of qubit-qubit systems, the Bell inequality is very simple to compute.\\
     81Available for qubit-qubit (2 x 2) systems only.\\
     82It can be computed with the following syntax:
     83{{{#!python
     84bell_test, flag_test = dens.Get_Bell_Test(CTC)
     85}}}
     86where `CTC` is the product of the transposed spin correlation matrix with the spin correlation matrix and `flag_test` is a boolean being `True` if `\lambda_1 + \lambda_2 > 1`.
    5787
    5888=== D coefficients
     89The D coefficients are conditions for entanglement that are commonly used for the process `p p > t t~`. They are useful to determinate which singlet/triplet state corresponds to a region of high entanglement.\\
     90Available for qubit-qubit (2 x 2) systems with zero average polarisation.\\
     91They can be computed with the following syntax:
     92{{{#!python
     93D1, Dn, Dr, Dk, boolD = dens.Get_Dcoef(C)
     94}}}
     95where `C` is the spin-correlation matrix and `D1, Dn, Dr, Dk` are the D coefficients and `boolD` is `True` if the system shows entanglement.
    5996
    6097=== Entanglement of formation
     98Entanglement of formation is an entanglement marker that has interesting interpretations in term of von Neumann entropy.
     99Available for qubit-qubit (2 x 2) systems.\\
     100They can be computed with the following syntax:
     101{{{#!python
     102Ef = dens.Get_Entanglement_Formation(square_density)
     103}}}
    61104
    62105=== Magic
     106Magic is not an entanglement marker, it quantifies another purely quantum feature of a quantum state: the "non-stabiliserness". \\
     107Available for qubit-qubit (2 x 2) systems.\\
     108They can be computed with the following syntax:
     109{{{#!python
     110Magic = dens.Magic_Mixed(square_density, n)
     111}}}
     112where `n` is the number of particles in the density matrix, this has only been tested for `n = 2`.
    63113
    64114=== Negativity
     115Negativity is an entanglement marker based on measuring how negative are the eigenvalues of the partially transposed density matrix. It is based on the Peres-Horodecki criterion which is necessary and sufficient for qubit-qubit (2 x 2) and qubit-qutrit (2 x 3) systems only. Like purity there are two common normalisations, negativity and logarithmic negativity.\\
     116Computable for every system but interpretation available only for qubit-qubit (2 x 2) and qubit-qutrit (2 x 3) systems.\\
     117It can be computed with the following syntax:
     118{{{#!python
     119Negativity, LogNegativity = dens.Negativity(square_density, pdg_pos)
     120}}}
     121where `pdg_pos` is the list of the `PDG` codes in the density matrix.
    65122
    66123=== Mana
     124Mana is an approximation of magic in systems for which magic is not defined.\\
     125Computable for d x d (d odd) systems like qutrit-qutrit (3 x 3).\\
     126It can be computed with the following syntax:
     127{{{#!python
     128Mana = dens.Get_Mana(square_density, d1, d2)
     129}}}
     130where `d1` and `d2` are the dimensions of the Hilbert space on which each of the two particles in the density matrix are defined. Usually we have `d1 = 3 = d2`.
    67131
    68132=== Peres-Horodecki criterion
     133The Peres-Horodecki critetion is the main theorem we have to determine if a system is separable or entangled. The criterion is necessary but not sufficient for all systems and necessary and sufficient for 2 x 2 and 2 x 3 systems. It tells in these cases that: if any of the eigenvalues of the partially transposed density matrix are negative, then the system is entangled.\\
     134What we compute is the list of the eigenvalues of the partially transposed density matrix.\\
     135It can be computed with the following syntax:
     136{{{#!python
     137flag_entanglement, eigvals = dens.PeresHorodecki_criterion(square_density, pdg_code)
     138}}}
     139where `flag_entanglement` is `True` if the system is entangled and `eigvals` are the eigenvalues.
    69140
    70 === Trace distance
     141=== Trace and fidelity distance
     142To compare two different density matrices (from different models, different parameters, different processes, etc.) we can compute "distances". Their interpretation is that the distance is zero if the two matrices represent the same physical process and the distance grows as the matrices get more and more different. We have two computable distances, the trace distance and the fidelity distance.\\
     143They can be computed for any system with the following syntax:
     144{{{#!python
     145trace_distance = dens.trace_distance(square_matrix1, square_matrix2)
     146fidelity_distance = dens.Fidelity_distance(square_matrix1, square_matrix2)
     147}}}
    71148
    72 === Fidelity distance
    73