Filtered backprojection implementatoin I am wondering the detail of the filtered backprojection.

Suppose I have a projection file:

$p(s,\theta)$=[1 2 3 1 2]

Then to get its filtered backprojection version using ramp filter, I should 


apply FFT to it, to get its Fourier version $P(\omega,\theta)$
To use |$\omega$| to multiply $P(\omega,\theta)$
Backprojection


I am a little confused at second step here.

Using the numeric example above, to apply FFT to [1 2 3 1 2], we will get a complex sequence

   9.0000 + 0.0000i 
  -1.0000 - 1.1756i
  -1.0000 + 1.9021i
  -1.0000 - 1.9021i
  -1.0000 + 1.1756i


Should I apply |$\omega$| to both real and complex part  of the sequence above, then do inverse FFT? Or should I only take the magnitude of above sequence, apply |$\omega$| to the magnitude, then do inverse FFT?

Either way, it seems I will get a complex sequence as the final results, but shouldn't the filtered projection be a real sequence? Anyone give me some pointers here? Thanks
I did it by creating a convolution kernel, then FFT the kernel, FFT the projection file, then multiply these two, then do IFFT to the product. Then the result of the IFFT is the filtered backprojection.