Hello,
I am trying to simulate my first detector geometry which should consist of a plastic scintillator with embedded wavelength shifting fibers. My problem is that I haven’t figured out a way of proper implementing wls fibers. I am wondering if I should expect to see an optical photon being absorbed by the fiber, and then photons being reemitted isotropically, if I shoot one optical photon into the fiber in GUI mode. Until now this is not what happens. My optical photon simply gets refracted when entering the fiber, in and then out of the fiber.
The properties look like this at the moment:
// Core (Polystyrene)
//
G4double refractiveIndexWLSfiber[] =
{ 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60};
assert(sizeof(refractiveIndexWLSfiber) == sizeof(photonEnergy));
G4double absWLSfiber[] =
{5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,
5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,
5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,5.40*m,1.10*m,
1.10*m,1.10*m,1.10*m,1.10*m,1.10*m,1.10*m, 1.*mm, 1.*mm, 1.*mm, 1.*mm,
1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm, 1.*mm};
// assert(sizeof(absWLSfiber) == sizeof(photonEnergy));
G4double emissionFib[] =
{0.05, 0.10, 0.30, 0.50, 0.75, 1.00, 1.50, 1.85, 2.30, 2.75,
3.25, 3.80, 4.50, 5.20, 6.00, 7.00, 8.50, 9.50, 11.1, 12.4,
12.9, 13.0, 12.8, 12.3, 11.1, 11.0, 12.0, 11.0, 17.0, 16.9,
15.0, 9.00, 2.50, 1.00, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00};
assert(sizeof(emissionFib) == sizeof(photonEnergy));
// Add entries into properties table
G4MaterialPropertiesTable* mptWLSfiber = new G4MaterialPropertiesTable();
mptWLSfiber->
AddProperty("RINDEX",photonEnergy,refractiveIndexWLSfiber,nEntries);
// mptWLSfiber->AddProperty("ABSLENGTH",photonEnergy,absWLSfiber,nEntries);
mptWLSfiber->AddProperty("WLSABSLENGTH",photonEnergy,absWLSfiber,nEntries);
mptWLSfiber->AddProperty("WLSCOMPONENT",photonEnergy,emissionFib,nEntries);
mptWLSfiber->AddConstProperty("WLSTIMECONSTANT", 0.5*ns);
Polystyrene->SetMaterialPropertiesTable(mptWLSfiber);
//
// Cladding 1 (PMMA)
//
G4double refractiveIndexClad1[] =
{ 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49};
assert(sizeof(refractiveIndexClad1) == sizeof(photonEnergy));
G4double absClad[] =
{20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,
20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,
20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,
20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,
20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m,20.0*m};
assert(sizeof(absClad) == sizeof(photonEnergy));
// Add entries into properties table
G4MaterialPropertiesTable* mptClad1 = new G4MaterialPropertiesTable();
mptClad1->AddProperty("RINDEX",photonEnergy,refractiveIndexClad1,nEntries);
mptClad1->AddProperty("ABSLENGTH",photonEnergy,absClad,nEntries);
PMMA->SetMaterialPropertiesTable(mptClad1);
// Cladding 2
//
G4double refractiveIndexClad2[] =
{ 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42};
assert(sizeof(refractiveIndexClad2) == sizeof(photonEnergy));
// Add entries into properties table
G4MaterialPropertiesTable* mptClad2 = new G4MaterialPropertiesTable();
mptClad2->AddProperty("RINDEX",photonEnergy,refractiveIndexClad2,nEntries);
mptClad2->AddProperty("ABSLENGTH",photonEnergy,absClad,nEntries);
FP->SetMaterialPropertiesTable(mptClad2);
Mostly taken from the optical examples. I haven’t specified surface properties yet. What am I missing or not understanding right?