Hello,
I am having problems configuring a geometry to produce opticalphotons
via scintillation. I am following the documentation in Physics Processes — Book For Application Developers 10.7 documentation and using v10.7.2. I have only managed to create these photons in version v11.0.0 but rolled back due to some other issues.
I am generating the geometry with geant4, exporting to GDML and then loading it back into geant4.
If I only define the properties found in the documentation:
G4Material* scintillator = new G4Material(/*...*/);
std::vector<G4double> energy = {2.034*eV, 3.*eV, 4.136*eV};
std::vector<G4double> rindex = {1.3435, 1.351, 1.3608};
std::vector<G4double> absorption = {344.8*cm, 850.*cm, 1450.0*cm};
G4MaterialPropertiesTable* MPT = new G4MaterialPropertiesTable();
// property independent of energy
MPT->AddConstProperty("SCINTILLATIONYIELD", 100./MeV);
// properties that depend on energy
MPT->AddProperty("RINDEX", energy, rindex)->SetSpline(true);
MPT->AddProperty("ABSLENGTH", energy, absorption)->SetSpline(true);
scintillator->SetMaterialPropertiesTable(MPT);
I cannot see opticalphotons
created by Scintillation, only some due to Cerenkov. However, regardless of the properties I define I see the process “Scintillation” in my log, just no optical photons are generated from it.
I have managed (after reading the examples) to create a valid geometry that generated the scintillation photons using the following properties:
scintillatorMaterialPropertiesTable->AddProperty("SCINTILLATIONCOMPONENT1", photonEnergy, scintillation);
scintillatorMaterialPropertiesTable->AddProperty("RINDEX", photonEnergy, refractiveIndexScintillator);
scintillatorMaterialPropertiesTable->AddProperty("ABSLENGTH", photonEnergy, absorptionLength);
scintillatorMaterialPropertiesTable->AddConstProperty("SCINTILLATIONYIELD", 10000. / MeV);
scintillatorMaterialPropertiesTable->AddConstProperty("RESOLUTIONSCALE", 1.0);
scintillatorMaterialPropertiesTable->AddConstProperty("SCINTILLATIONRISETIME1", 0.9 * ns);
scintillatorMaterialPropertiesTable->AddConstProperty("SCINTILLATIONTIMECONSTANT1", 0.9 * ns);
scintillatorMaterialPropertiesTable->AddConstProperty("SCINTILLATIONYIELD1", 1.0);
scintillatorMaterial->SetMaterialPropertiesTable(scintillatorMaterialPropertiesTable);
However, this only seems to work with version v11.0.0, not with v10.7.2, but I have no idea how to change it so does it works.
Also I have found that the scintillatorMaterial->GetIonisation()->SetBirksConstant(0.110 * mm / MeV);
line does “nothing” and does not change the generated GDML so I am wondering what this does.
Here are the parameters of my optical physics list:
=======================================================================
====== Optical Physics Parameters ========
=======================================================================
Cerenkov process active: 1
Cerenkov maximum photons per step: 100
Cerenkov maximum beta change per step: 10 %
Cerenkov stack photons: 1
Cerenkov track secondaries first: 1
Scintillation process active: 1
Scintillation finite rise time: 0
Scintillation by particle type: 0
Scintillation record track info: 0
Scintillation stack photons: 1
Scintillation track secondaries first: 1
WLS process active: 1
WLS time profile name: delta
WLS2 process active: 1
WLS2 time profile name: delta
Boundary process active: 1
Boundary invoke sensitive detector: 0
Rayleigh process active: 1
MieHG process active: 1
Absorption process active: 1
=======================================================================
I would really appreciate a minimalistic material configuration to produce scintillation light, or a way to debug this problem.
Thanks!