BosonSampling.BosonSamplingDistribution — TypeBosonSamplingDistribution <: OutputMeasurementTypeContainer holding the entire boson sampling distribution for a given type of parameters, input, etc.
BosonSampling.BosonSamplingThresholdDistribution — Typemutable struct BosonSamplingThresholdDistribution <: OutputMeasurementType <: OutputMeasurementType
Container holding the entire boson sampling distribution for a given type of parameters, input, etc with threshold detectors.
BosonSampling.DarkCountFockSample — TypeDarkCountFockSample(p)Same as FockSample but each output mode has an extra probability p of giving a positive reading no matter if there is genuinely a photon.
BosonSampling.FockDetection — TypeFockDetection(s::ModeOccupation)Measuring the probability of getting the ModeOccupation s at the output.
Fields:
- s::ModeOccupationBosonSampling.FockSample — TypeFockSample <: OutputMeasurementTypeContainer holding a sample from typical boson sampler.
BosonSampling.MultipleCounts — TypeMultipleCounts()
MultipleCounts(counts, proba)Holds something like the photon counting probabilities with their respective probability (in order to use them as a single observation). Can be declared empty as a placeholder.
Fields:
- counts::Union{Nothing, Vector{ModeOccupation}, Vector{PartitionOccupancy}, Vector{ThresholdModeOccupation}},
- proba::Union{Nothing,Vector{Real},Vector{Int}}!!! Warning:
The naming of `proba` and `counts` was done at a much earlier stage of the project. Understand `counts` as detector readings. `proba` can hold either probabilites or also number of times an event was observed.BosonSampling.PartitionCountsAll — TypePartitionCountsAll(part::Partition)Measuring all possible counts probabilities in the partition part.
Fields:
- part::PartitionBosonSampling.PartitionSample — TypePartitionSample <: OutputMeasurementTypeContainer holding a sample from Partition photon count.
BosonSampling.RealisticDetectorsFockSample — TypeRealisticDetectorsFockSample(p_dark::Real, p_no_count::Real)Same as DarkCountFockSample with the added possibility that no reading is observed although there is a photon. This same probability also removes dark counts (first a dark count sample is generated then readings are discarded with probability p_no_count).
BosonSampling.StateMeasurement — TypeStateMeasurementType trait to know which kind of state the detectors will measure, such as Fock or Gaussian.
BosonSampling.ThresholdFockDetection — TypeThresholdFockDetection(s::ThresholdModeOccupation)Measuring the probability of getting the ThresholdModeOccupation s at the output.
Fields:
- s::ThresholdModeOccupationBosonSampling.all_threshold_detections — Methodfunction all_threshold_detections(n, m; only_photon_number_conserving = true)Return all possible ThresholdFockDetection for n modes and m photons.
BosonSampling.all_threshold_mode_occupations — Methodfunction all_threshold_mode_occupations(n, m; only_photon_number_conserving = true)Return all possible ThresholdModeOccupation for n modes and m photons.
BosonSampling.convert_state_to_n_ary_number — Methodconvertstatetonary_number(state::Vector{Int64}, n)
Convert a vector of integers into a binary number. The first element of the vector is the least significant bit. This gives a hash function for a vector of integers.
Need to give n = the number of input photons.
BosonSampling.to_proba! — Methodto_proba!(mc::MultipleCounts)Converts a MultipleCounts which has count values (Int) of detector observations into a relative proba of each observation (renormalize).
BosonSampling.to_threshold — Methodto_threshold(mc::MultipleCounts)Transforms a MultipleCounts into the equivalent for threshold detectors.