I am interested in X-ray polarization.
I am doing simulation of a photon beam scattering in a plastic target. Plastic target is centered in the coordinates origin (0,0,0). The beam has continuous energy spectrum 30-75 keV. The beam is slightly divergent and it flies along direction (0,0,-1). The primary photons are unpolarized with Stokes vector (0,0,0). I am using G4EmLivermorePolarizedPhysics physics list.
The photons get polarized by scattering in the target and the maximum polarization should be at scattering angle around 90°. Therefore I placed a silicon sensor to detect those maximally polarized photons at position (16*cm,0,0). I save Stokes vector components of every photon entering the sensor.
I am really puzzled by the results. I read the Physics Reference Manual about Stokes vector implementation in Geant4. I expected that majority of the photons would have Stokes vector close to (-1,0,0). However, simulation results show that majority of arriving photons have polarization close to (0,1,0) or (0,-1,0). That means that the photons are linearly polarized in two perpendicular planes.
The following picture shows the setup with the silicon sensor (purple) and also a 2D histogram of 2nd Stokes vector component vs. 1st Stokes vector component.
I don’t know whether the problem is in my simulation, in my understanding of Stokes vector and my expectations or in the physics list that I used. Could you please help me?
Is there some way in Geant4 how I could transform Stokes vector into polarization plane in global coordinates frame? I think that might help me to decipher the data.
Geant4 Version: 11.2.0
Operating System: Ubuntu 22.04
Compiler/Version: g++ 11.4.0
CMake Version: 3.22.1