Calculating SNR & Es/No and placing noise onto a signal I have a signal power of -12 dBW from a 16 QAM signal after the first RRC.
I want to create a channel SNR of 30 dB
I calculate my noise power from this, i.e. its -42 dBW and make the noise to add to signal
#Power values below have been converted to Watts  
noise_distribution = np.random.randn(N)  / np.sqrt(2)
noise = np.sqrt((noise_power/signal_power)) * noise_distribution
signal = signal + noise

This noise is inserted into the signal after the first RRC and before the second.
I know my signal power is spread over a symbol rate of 2 MHz, with a 0.35 Roll off on RRC.
Signal PSD = -12 - 10log10(2MHz(1+(2*0.35))) = -77 dBW/Hz
However my noise power is spread over Fs:
-32 dBW - 10log(40MHz) = -95 dBW/Hz
Is this the correct way to do SNR or have I just done Es/No because it doesn't seem to work in my mind, it doesn't end up being 30 dB in PSD terms.
I assume the OP wants the SNR to be 20 dB just prior to decision in the receiver, in which case the noise would be 20 dB below the signal power AFTER being passed through the second RRC filter. The total noise in the bandwidth of this filter would be 20 dB below the total noise of the signal. Since neither if flat over bandwidth, I would not recommend units of dBW/Hz, but work with total power (or as the square root; the standard deviation of signal and noise).