Message: Wrong Propagation time for Optical Photons Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question Wrong Propagation time for Optical Photons 

Forum: Processes Involving Optical Photons
Date: 24 Aug, 2017
From: Jonas Kasper <Jonas Kasper>

Hi at all,

I simulated for a bigger simulation events including optical photons, which are produced in a scintillator bar and than propagated through this bar. Afterwards I reconstructed the position of the optical photon creation with the help of the time of the first photon that reaches the respective end of the bar.

Within the course of this work I realized that there where photons that propagated faster in the scintillator bar than they should according to the defined material properties. For further easier tests I set up an small simulation that only simulations an single bar and a particle gun that shoots in the bar optical photons. The material of the bar is implemented with an constant refraction index of 1.84 and an constant attenuation length, but no Rayleigh scattering length.

	const G4int NUMENTRIES = 25;

	double energy[NUMENTRIES];
	double n_ref[NUMENTRIES];
	double att_length[NUMENTRIES];

	for(int i=0; i<NUMENTRIES;i++){

	G4MaterialPropertiesTable * mpt_material = new G4MaterialPropertiesTable();

In this simulation I print (in the Stepping action) for each step of a track that associated to an optical photon the following thinks:

	void SteppingAction::UserSteppingAction(const G4Step* aStep ) {

	std::cout << "Track : " << aStep->GetTrack()->GetTrackID() << std::endl;
	std::cout << "Step length: " << aStep->GetStepLength()/CLHEP::mm << std::endl;
	std::cout << "Time PreStep: " << aStep->GetPreStepPoint()->GetGlobalTime() << std::endl;
	std::cout << "Time PostStep: " << aStep->GetPostStepPoint()->GetGlobalTime() << std::endl;
	std::cout << "Time Delta: " << aStep->GetDeltaTime() << std::endl;
	std::cout << "Velocity: " << aStep->GetTrack()->GetVelocity() << std::endl;
	std::cout << "Calculated Velocity: " << (aStep->GetStepLength())/aStep->GetDeltaTime() << std::endl;


The result is that the velocity given by aStep->GetTrack()->GetVelocity() is unequal to the one calculated by "aStep->GetDeltaTime()" and "aStep->GetStepLength()".

Furthermore I recognized that this only occurs during the first step of each optical photon track. The calculated velocity shows values that are equal to n_actually = (1+n_set)/2. I know that optical photons are propagated with the group velocity but this should be the same as the single photon velocity for a constant refraction index.

Since a step of a photon is only limited by discrete processes can this first step occur to be quit huge and result in a respective time error.

I provide the code for the mentioned small test simulation here: (Duratioin of two weeks) It is build with the Geant version 10.2.2., CMake 2.6 and requires boost.

Does somebody maybe see an error in my code? Or can explain this behavior?

Best regards,


 Add Message Add Message
to: "Wrong Propagation time for Optical Photons"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews