@@ -902,31 +902,33 @@ impl GeneralNoiseModel {
902902 for & qubit in & gate. qubits {
903903 if has_leakage {
904904 add_original_gate = false ;
905+ }
905906
906- // If qubit has leaked and spontaneous emission has occurred... seep the qubit
907- if self . rng . occurs ( self . p1_emission_ratio ) {
908- if let Some ( gates) = self . seep ( qubit) {
909- noise. extend ( gates) ;
910- }
911- }
912- } else if self . rng . occurs ( self . p1 ) {
907+ if self . rng . occurs ( self . p1 ) {
913908 // Spontaneous emission
914909 if self . rng . occurs ( self . p1_emission_ratio ) {
915- add_original_gate = false ;
910+ // If qubit has leaked and spontaneous emission has occurred... seep the qubit
911+ if has_leakage {
912+ if let Some ( gates) = self . seep ( qubit) {
913+ noise. extend ( gates) ;
914+ }
915+ } else {
916+ add_original_gate = false ;
916917
917918 let result = self . p1_emission_model . sample_gates ( & mut self . rng , qubit) ;
918919
919- if result. has_leakage ( ) {
920- // Handle leakage
921- if let Some ( gate) = self . leak ( qubit) {
920+ if result. has_leakage ( ) {
921+ // Handle leakage
922+ if let Some ( gate) = self . leak ( qubit) {
923+ noise. push ( gate) ;
924+ }
925+ } else if let Some ( gate) = result. gate {
926+ // Handle Pauli gate
922927 noise. push ( gate) ;
928+ trace ! ( "Applied Pauli error to qubit {}" , qubit) ;
923929 }
924- } else if let Some ( gate) = result. gate {
925- // Handle Pauli gate
926- noise. push ( gate) ;
927- trace ! ( "Applied Pauli error to qubit {}" , qubit) ;
928930 }
929- } else {
931+ } else if !has_leakage {
930932 // Pauli noise
931933 let result = self . p1_pauli_model . sample_gates ( & mut self . rng , qubit) ;
932934 if let Some ( gate) = result. gate {
0 commit comments