BosonSampling.BosonSamplingDistribution
— TypeBosonSamplingDistribution <: OutputMeasurementType
Container 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::ModeOccupation
BosonSampling.FockSample
— TypeFockSample <: OutputMeasurementType
Container 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::Partition
BosonSampling.PartitionSample
— TypePartitionSample <: OutputMeasurementType
Container 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
— TypeStateMeasurement
Type 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::ThresholdModeOccupation
BosonSampling.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.