Different results when using Geant4 version 11 for optical simulation

Hi all,

I’ve moved over from using Geant4 version 10.7 to the most recent version 11 and I’m getting different results from my optical physics simulation.

My set-up is as follows: plastic scintillation detector with photodetector that is modelled as a sensitive detector. The information I’m recording is the globaltime of the scintillation photons that hit the photodetector. In G4 10.7 I get an average time of approx 19 ns, however in G4 11 I get an average time of approx 24 ns. I can’t figure out what is different, since I haven’t changed anything between the versions.

I did need to change some of the values in the material property table to ensure values were in increasing order of magnitude, but that shouldn’t cause a difference in results?

Anyone have any ideas?

Hi,

The names of the material properties have changed between 10.7 and 11, to accommodate 3 time constants. Did you switch to SCINTILLATIONTIMECONSTANT1 etc.? (see the Book for Application Developers.)

Hi, thanks for your reply.

Yes, I’ve got three time constants and the associated yields. I was using version 10.7 before and the only difference was I had to specify that I was using the enhanced time constants, but that is no longer required.

The other differences are I can no longer include the YIELDRATIO, which I previously had set to 1 - but I think that is the default value anyway? Also in the PhysicsList in 10.7 I had SetScintillationExcitationRatio to 0 but that isn’t an option in Version 11.

Incidentally, when I comment those out in V 10.7 it doesn’t impact my results… so I don’t think that is it.

Hi,

As you have said, you have changed your code from 10.7 to 11.0, so a change in the average scintillation photon arrival time at the photodetector is not unexpected. If your time constants or the relative yield for them has changed, that could change the arrival time.

In 11.0, there is no YIELDRATIO (ratio of fast decay component yield/total scintillation yield). Instead, you set the relative yields for the three time constants for each exciting particle type (e.g., gammas, alphas, etc.) via commands like (example is for gamma rays/electrons and would be equivalent to YIELDRATIO=1 if there were two components and component 1 was the fastest one):

MPTScintillator->AddConstProperty("ELECTRONSCINTILLATIONYIELD1",1.00); //Relative yield of component 1 for electrons
MPTScintillator->AddConstProperty("ELECTRONSCINTILLATIONYIELD2",0.00); //Relative yield of component 2
MPTScintillator->AddConstProperty("ELECTRONSCINTILLATIONYIELD3",0.00); //Relative yield of component 3

Have you done this for the exciting particles you are considering?

Also, have you enabled scintillation rise times and added or modified the rise time for any of the components?

Hi John,
Many thanks for your reply. I haven’t adjusted for the different particle types, so that may be where the issue lies. I’ll have a look and get back to you.
Carrie.

Hi,

I did what was suggested. I am now getting the same results between versions for gamma, but I am still getting differing results for neutrons.

This is my code in Geant4 version 10.7

  /// Creating the materials property table and adding entries into
  /// properties table
  
 G4MaterialPropertiesTable* EJ276_mpt = new G4MaterialPropertiesTable();
 EJ276_mpt->AddProperty("SCINTILLATIONCOMPONENT1", photonEnergyEM,emEJ276,nEM);
 EJ276_mpt->AddProperty("SCINTILLATIONCOMPONENT2", photonEnergyEM, emEJ276, nEM);
 EJ276_mpt->AddProperty("SCINTILLATIONCOMPONENT3", photonEnergyEM, emEJ276, nEM);
 EJ276_mpt->AddProperty("RINDEX", photonEnergyRindex,refractiveIndexEJ276,nRINDEX);


 EJ276_mpt->AddProperty("ABSLENGTH", photonEnergyAbsLength,absLengthEJ276,nABS);
 EJ276_mpt->AddConstProperty("SCINTILLATIONYIELD", 8600/MeV);	//8600 
 EJ276_mpt->AddConstProperty("RESOLUTIONSCALE", 1.0); 

 EJ276_mpt->AddConstProperty("SCINTILLATIONTIMECONSTANT1", 4.3*ns);	/// Hanke model gamma
 EJ276_mpt->AddConstProperty("SCINTILLATIONTIMECONSTANT2", 18.*ns);	
 EJ276_mpt->AddConstProperty("SCINTILLATIONTIMECONSTANT3", 140.*ns);
 EJ276_mpt->AddConstProperty("SCINTILLATIONYIELD1", 0.740);		/// 0.740 gamma weightings
 EJ276_mpt->AddConstProperty("SCINTILLATIONYIELD2", 0.140);  		/// 0.140
 EJ276_mpt->AddConstProperty("SCINTILLATIONYIELD3", 0.120);		/// 0.120


  EJ276_mpt->AddConstProperty("SCINTILLATIONTIMECONSTANT1", 4.5*ns);	/// Hanke model neutron
  EJ276_mpt->AddConstProperty("SCINTILLATIONTIMECONSTANT2", 20.*ns);
  EJ276_mpt->AddConstProperty("SCINTILLATIONTIMECONSTANT3", 170.*ns);
  EJ276_mpt->AddConstProperty("SCINTILLATIONYIELD1", 0.580);		/// neutron
  EJ276_mpt->AddConstProperty("SCINTILLATIONYIELD2", 0.180);
  EJ276_mpt->AddConstProperty("SCINTILLATIONYIELD3", 0.240);


 EJ276_mpt->AddConstProperty("YIELDFACTOR", 1.0);

 EJ276->GetIonisation()->SetBirksConstant(0.126*mm/MeV);

 EJ276->SetMaterialPropertiesTable(EJ276_mpt);

The same set of three time constants ( SCINTILLATIONTIMECONSTANT1/2/3) should be used for all exciting particles. Your second block of code (4.5ns, etc.) thus overwrites your first block (4.3ns, etc.).

Also the parameters you are using for yield (SCINTILLATIONYIELD1/2/3) are for particle independent scintillation. Since you are doing particle dependent scintillation, in the first block you need to replace SCINTILLATIONYIELD1 etc.
with ELECTRONSCINTILLATIONYIELD1 etc. for gamma ray excitation.

In the second block, you need to replace SCINTILLATIONYIELD1 etc.
with PROTONSCINTILLATIONYIELD1 etc. for neutron excitation.

See the Book for Application Developers Version 11.1 page 248 and following (subsections ‘Scintillation independent of particle type’ and ‘Scintillation dependent on particle type’).

1 Like

Hi John,

Thanks for your reply, all seems to be working OK now. One block of code is for gamma particles and one is for neutrons - the scintillator I am simulating has separate time constants for gamma/neutrons as it is a PSD plastic. I comment the neutron out when I am using gamma, and vice versa. There may be a better way of doing this.

For particle-independent scintillation do you simply remove all the ELECTRONSCINTILLATIONYIELD1 etc and just have SCINTILLATIONYIELD1/2/3, then?

Carrie

Hi Carrie,

Thanks for your reply, all seems to be working OK now.

That’s great.

the scintillator I am simulating has separate time constants for gamma/neutrons as it is a PSD plastic

I see what you are doing now. Strictly speaking, the decay time constants are an intrinsic property of the scintillator and they do not differ for different exciting particles. What does differ is the ratio of the yields from each decay component, that is, the ratio SCINTILLATIONYIELD1/SCINTILLATIONYIELD2/SCINTILLATIONYIELD3 is different for gammas and neutrons. That is why you have the ELECTRONSCINTILLATIONYIELDx, PROTONSCINTILLATIONYIELDx, etc. parameters. In your implementation, you are using a differing apparent time constant for each particle, presumably caused by the different component yield ratios following processing through some conditioning circuitry. I don’t think there is anything wrong with that approach. It’s one more step removed from the actual scintillation physics but since the entire scintillation simulation package is based on empirical input values anyway, it’s not a big deal (in my opinion).

For particle-independent scintillation do you simply remove all the ELECTRONSCINTILLATIONYIELD1 etc and just have SCINTILLATIONYIELD1/2/3, then?

Yes. You have to ensure you are doing particle-independent scintillation by issuing the following instruction in your code (I am not sure whether default is true or false so I set it explicitly):
G4OpticalParameters::Instance()->SetScintByParticleType(false);
and then use SCINTILLATIONYIELD1/2/3.

John,

Strictly speaking, the decay time constants are an intrinsic property of the scintillator and they do not differ for different exciting particles.

While this may be true, I am not sure if Geant is capable of simulation the intricate nature of different decay times from gamma/neutron events.

1 Like

I agree. The Geant4 scintillation package is a fairly flexible, semi empirical model. You insert values for parameters that can be easily (or not so easily) measured or looked up from the literature for your chosen scintillator. It does not try to model the full scintillation processes based on the fundamental atomic excitation/deexcitation processes. That would be very complicated and little would be gained for most Geant4 applications.

True. However, considering you can have different scintillation yields for different particles, it would be nice to be able to specify different decays for different particles. It would not be difficult to implement, and would help in applications where you are trying to model dependent results from complex sources.

As it stands, the best way to do it is to change the decay times and re-compile the simulation depending on which particle you use.

1 Like

it would be nice to be able to specify different decays for different particles.

Perhaps it would be worthwhile submitting a feature enhancement request through Bugzilla.

2 Likes

To make sure I understand the request/implementation. Specifically, you’d like material constant properties ELECTRONSCINTILLATIONTIMECONSTANT1/2/3, for the various particles. That seems do-able.

Yes, That would be helpful. Typically gamma and neutron decay times are compared. When implementing in GEANT4 the neutron times would have to be set for alpha/triton/ion, etc. Whichever particles actually deposit the energy from the neutron event.

Yes, this would be incredibly useful and improve Geant4 for modelling PSD-capable scintillators.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.