|Message: Re: About volume boundary crossing precision||Not Logged In (login)|
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
> suppose that you want to propagate optical photons through two > consecutive volumes, that are put in contact each other (they belong to > the same mother volume). In general I know that some issues can be > caused by decimal precision loss in volume definition if you don't keep > them slightly spaced.
I don't know what codes you are talking about, but in Geant4, you have to absolutely put the two volumes abut next to each other!!! There must not be any space between them.
> I think it's a quite common problem, but it's not > clear to me how and if propagation of optical photon is affected by > that.
If the G4Navigator 'detects' that it is leaving the daughter into the mother (the space between your two volumes) you'll get the index of refraction of the daughter and the mother; e.g. you'll have a small gap made up of the mother's material.
> I was wondering if in Geant4 there any options to set volume boundary > crossing precision to say: "if two volumes are closer that X*mm then > they really share a surface". In principle this could definitely avoid > any problem with optical photon propagation between different volumes. > Or Geant4 has a different approach for this kind of problems?
One way to overcome issues with two volumes 'touching' each other is to make one volume the daughter of the other - if that's possible within your geometry definition. In that case, the boundary crossing is unique. A track leaving the daughter will enter the mother and a track encountering the daughter will go in. As well, when the daughter shares a surface with the mother, the G4Navigator will determine that the track - coming from the outside of the mother - will go directly into the daughter.
If you want to know what is the navigation tolerance for surfaces in your simulation, print:
G4cout << "Computed tolerance = "
<< G4GeometryTolerance::GetInstance()->GetSurfaceTolerance()/mm << " mm" << G4endl;
The default is 1E-9*mm
|Inline Depth:||Outline Depth:||Add message:|