How to code geant4 to generate left and right circulary polarized photons?

Hello Geant4 experts,

I would like to know the line of code that simulates the firing of circularly polarized photons at a target. I think I know how to fire unpolarized and linear polarized photons. Although my primary interest is to know how to simulate circularly polarized photons, it would be helpful if someone could check if my understanding is also correct on how to generate unpolarized and linearly polarized photons.

For instance

  1. Although I’m guessing that the default setting for photons is that they are unpolarized, but if I wanted to explicitly write a line of code that fires unpolarized photons along the z-axis would it be correct to write?


  1. Or if I want to fire horizontally polarized photons along the z-axis would it be correct to write?


  1. Or If I want to fire vertically polarized photons along the z-axis would it be correct to write?


  1. Or if I want to fire linearly polarized photons along the z-axis orientated at 45 degrees to the x-axis would it be correct to write?


But I have no clue how to define left an right circularly polarized photons traveling along the z-axis.

Left circularly polarized photons…

  1. ??????

Right circularly polarized photons…

  1. ??????

For the life of me, so far I cannot find any code on the internet, in the Geant4 examples (including Pol01) or in the online Geant4 manual that shows the line of code that generates circularly polarized photons, so it would be great if someone can explicitly show me how to define them.


Individual optical photons in Geant4 get a linear polarization. To get a circularly polarized beam, or unpolarized beam, etc., shoot multiple photons with an appropriate distribution of linear polarizations.

Some processes (like G4OpBoundaryProcess) assume the optical photon is polarized, so likely you do not want to set the polarization of an individual photon to (0,0,0).

Thank you for the reply.

I would like to track individual circularly polarized gamma photons. Do you know if that’s possible using Geant4?


On page 348 of the geant4 User’s guide and applications manual (refer to following link)

it states that
"Pol01 - interaction of polarized beam (e.g. circularly polarized photons) with polarized target"

On lines 25 and 26 in the histo.mac file of Pol01 it has the following two lines of code
/gun/polarization 0. 0. -1.
/gun/particle gamma
The direction of this gamma beam is along the z-axis, and so, assuming the code is correct, the first line of code cannot be describing the polarization state of the electric field. Am I to take it then that, in this context, the first line defines the photon spin projection? Is there some kind of function overloading going on here with the polarization command?

In Geant4 there are two different photons. G4OpticalPhotons (“opticalphoton”) are generated by Cerenkov and scintillation (e.g.), and may refract or reflect at surfaces. G4Gamma (“gamma”) are generated by bremsstrahlung (e.g.), and don’t undergo optical processes. Geant4 will not give you opticalphotons unless you explicitly ask for them. The example Pol01 considers gammas. I think the polarization is the Stokes vector, but I don’t see it documented.

It seems like you want gammas. My previous answer assumed opticalphotons.

The official documentation is here. It’s nice, you can link directly to the section of the html doc.

I’ve gone through that website several times in the hope of finding some information regarding how to define circularly polarized photons. I’ve gone through that website and haven’t found anything that helps.

Thanks anyway.

Did you try the Stokes vector? The Pol01 macro looks like it uses that.

It’s suggestive, but who knows for sure. I have not read anything that it’s a Stokes vector in anything I’ve seen online. In fact, I haven’t even come across anything in geant4 that shows the definition of linearly polarized states are in terms of coding.

The only way I will know for sure is to perform some tests of my own. I’m perplexed as to why it is so difficult to find a single explicit definition in geant4 manuals about how to define a circular, let alone linear, polarized photons.


Hi Peter,

It is described in the physics reference manual -> Electromagnetic-> Polarized Electron/Positron/Gamma Incident -> Stokes Vector

I think for electrons and positrons the vector in SetParticlePolarization describes the polarization in x,y and z . Then for photons its linear polarization, linear polarization but pi/4 to right and circular polarization. So for circular polarization you would need (0,0,1/-1)

Kind regards,


1 Like

Dear Jennifer,
Thank you for your reply. I can confirm your intuition, since I ran simulations to confirm that geant4 uses stokes vectors. As an example, the graph below shows the angular distribution for horizontally (1,0,0) polarized Compton scattered 511 keV photons compared to the Klein-Nishina predictions.

Thanks again for taking the time to respond.
Best regards

1 Like