Hello Geant4’users,
I have some problems that I don’t really understand with the optical photon. I have created my scintillator, I can see all of my optical photon and the properties look good. Now I want to use a light guide which will allows my optical photon to “join” my PMT at the end of my detector. Scintillator = G4_PLASTIC_SC_VINYLTOLUENE & Light guide = G4_PLEXIGLASS.
I see there is a lot of model (glisur, unified, lut, lut_davis). After many tries, I used LUT which seems to be easier to begin. My optical photons seems to be correctly deviated and transmitted to my PMT. What disturbs me at this point is that I didn’t set anything else than RINDEX and ABSLENGTH. Just the model and “polishedlumirrorglue”, all of the other models need another variable.
But if this work with LUT, then I could possibly do it with the unified model? At this point, I tried a lot of things, follow the optical model and the user’s guide but my photon don’t want to go through my Luminar Guide …
I tried to se RINDEX, SPECULARLOBECONSTANT, SPECULARSPIKECONSTANT, BACKSCATTERCONSTANT, REFLECTIVITY, EFFICIENCY. Just to set REFLECTIVITY, EFFICIENCY, TRANSMITTANCE. And of course for each of these try, RINDEX & ABSLENGTH are set.
Everytime I have an error while add some verbose like “NoRindex” between my luminor and my scintillator…
G4WT0 > * G4Track Information: Particle = opticalphoton, Track ID = 76, Parent ID = 1
G4WT0 > *********************************************************************************************************
G4WT0 >
G4WT0 > Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
G4WT0 > 0 0.000649 -0.000133 1.05 2.83e-06 0 0 0 scintillateur_ph initStep
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpBoundary]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: 0.05746772430517991, y: 0.5230285983919432, z: 0.8503755322957871
G4WT0 > Total Momentum = 2.82523155954983e-09[GeV]
G4WT0 > Momentum: 1.623596283625031e-10[GeV], y: 1.477676902724031e-09[GeV], z: 2.402507791311043e-09[GeV]
G4WT0 > Total Energy = 2.82523155954983e-09[GeV]
G4WT0 > Kinetic Energy = 2.82523155954983e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material G4_PLASTIC_SC_VINYLTOLUENE
G4WT0 > InteractionLength= 1.797693134862316e+307[cm]
G4WT0 > G4VDiscreteProcess::PostStepGetPhysicalInteractionLength() - [ OpAbsorption]
G4WT0 > Particle type - opticalphoton
G4WT0 > mass: 0[GeV]
G4WT0 > charge: 0[e]
G4WT0 > Direction x: 0.05746772430517991, y: 0.5230285983919432, z: 0.8503755322957871
G4WT0 > Total Momentum = 2.82523155954983e-09[GeV]
G4WT0 > Momentum: 1.623596283625031e-10[GeV], y: 1.477676902724031e-09[GeV], z: 2.402507791311043e-09[GeV]
G4WT0 > Total Energy = 2.82523155954983e-09[GeV]
G4WT0 > Kinetic Energy = 2.82523155954983e-09[GeV]
G4WT0 > MagneticMoment [MeV/T]: 0
G4WT0 > ProperTime = 0[ns]
G4WT0 > in Material G4_PLASTIC_SC_VINYLTOLUENE
G4WT0 > InteractionLength= 264.3301313730995[cm]
G4WT0 > Photon at Boundary!
G4WT0 > thePrePV: scintillateur_ph
G4WT0 > thePostPV: luminor_ph
G4WT0 > Old Momentum Direction: (0.05746772430517991,0.5230285983919432,0.8503755322957871)
G4WT0 > Old Polarization: (-0.01533844301675322,0.8521452419907701,-0.5230805088304419)
G4WT0 > *** NoRINDEX ***
G4WT0 > 1 0.673 6.12 11 2.83e-06 2.83e-06 11.7 11.7 luminor_ph Transportation
G4WT0 >
I have see that LUT model is based on measures made in another kind of scintillator than plastic. What could be the problem if I use LUT contrary to unified model and why LUT works correctly and not Unified?
If anyone has any ideas or clarifications, I’d love to hear them!
For example, my list try:
scPlastic = nistManager->FindOrBuildMaterial(“G4_PLASTIC_SC_VINYLTOLUENE”);
std::vector EnergyOptical = { 3.046eV, 3.024eV, 2.966eV, 2.95eV, 2.917eV, 2.831eV, 2.774eV, 2.6724eV, 2.5995eV };
std::vector ScintillationEfficiency = { 0.2, 0.4, 0.6, 0.8, 1.0,0.8, 0.6, 0.4, 0.2 };
std::vector RefractionIndex = { 1.58, 1.58,1.58, 1.58,1.58,1.58, 1.58,1.58, 1.58 };
std::vector AbsorptionLength = { 3.80cm, 3.80m, 3.80m, 3.80m, 3.80m, 3.80m, 3.80m, 3.80m, 3.80m};
G4MaterialPropertiesTable* boxProperty = new G4MaterialPropertiesTable();
boxProperty->AddProperty(“SCINTILLATIONCOMPONENT1”, EnergyOptical, ScintillationEfficiency);
boxProperty->AddConstProperty(“RINDEX”, 1.58);
boxProperty->AddProperty(“ABSLENGTH”, EnergyOptical, AbsorptionLength);
std::vector RangeEnergy = {0.1*MeV, 1.*MeV };
std::vector RangeScintillation = {1000. /MeV, 10000. /MeV };
boxProperty->AddProperty(“ELECTRONSCINTILLATIONYIELD”, RangeEnergy,RangeScintillation);
boxProperty->AddConstProperty(“ELECTRONSCINTILLATIONYIELD1”,1.0);
boxProperty->AddConstProperty(“RESOLUTIONSCALE”, 1.0);
boxProperty->AddConstProperty(“SCINTILLATIONTIMECONSTANT1”, 2.1 * ns);
boxProperty->AddConstProperty(“SCINTILLATIONRISETIME1”, 0.9 * ns);
scPlastic->SetMaterialPropertiesTable(boxProperty);//Material Helium
G4MaterialPropertiesTable* worldProperty = new G4MaterialPropertiesTable();
worldProperty->AddConstProperty(“RINDEX”, 1.18);
worldProperty->AddConstProperty(“ABSLENGTH”, 500.*cm);mHe->SetMaterialPropertiesTable(worldProperty);
//Material for Luminance guid
mPlexy = nistManager->FindOrBuildMaterial(“G4_PLEXIGLASS”);
G4MaterialPropertiesTable* mPlexy_MT = new G4MaterialPropertiesTable();
std::vector RangeGuide = { 2.00eV, 4.0eV };
std::vector RefractiveGuide = { 1.492, 1.502 };
mPlexy_MT->AddProperty(“RINDEX”, RangeGuide, RefractiveGuide);
mPlexy_MT->AddConstProperty(“ABSLENGTH”, 500.*cm);mPlexy->SetMaterialPropertiesTable(mPlexy_MT);
G4OpticalSurface* scPlasPlex = new G4OpticalSurface(“Surface-Optique-PlexyScint”);
scPlasPlex->SetType(dielectric_dielectric);
scPlasPlex->SetFinish(polished);
scPlasPlex->SetModel(glisur);
std::vector RangeGuide = { 2.00eV, 3.00eV, 4.00eV };
std::vector Reflectivity = { 0.0, 0.0, 0.0 };
std::vector Transmittance = { 1.0, 1.0, 1.0 };
auto opm = new G4MaterialPropertiesTable();
opm->AddProperty(“REFLECTIVITY”, RangeGuide, Reflectivity);
opm->AddProperty(“EFFICIENCY”, RangeGuide, Reflectivity);
opm->AddProperty(“TRANSMITTANCE”, RangeGuide, Transmittance);
scPlasPlex->SetMaterialPropertiesTable(opm);
G4LogicalBorderSurface PlasPlex = new G4LogicalBorderSurface(“Surface-Between-Plastic-LightGuide”, scPlastic_phys, guid_phys, scPlasPlex);
G4LogicalBorderSurface* PlexPlas = new G4LogicalBorderSurface(“Surface-Between-Plastic-LightGuide”, guid_phys, scPlastic_phys, scPlasPlex);
Thank you in advance,
Nsapsap.