|Message: Re: Question for G4VSolid::SurfaceNormal()||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|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)|
Thanks for your clear and useful answer!
If the Point is mostly very near to the surface then it is easy to deal with. I can use a larger Tolerance, for example, 10*kCarTolerence or 100*kCarTolerence to check if on one of the surfaces. However, if the point is far from the surface, I can return the normal of the nearest surface.
In my case the surface are analytic surface therefore the normal will be accurate. The only approximation will happen if point are far from the surface.
Best regards, Yuefeng
On Thu, 08 May 2014 06:48:51 GMT, John Apostolakis wrote:
> Dear Yuefeng, > > The point p should be on or near the surface. By 'near' I mean points which are calculated to be on the surface, but due to inaccuracies are not within the 'kTolerance' distance which is Geant4's convention for a surface point. > > However occasionally you may get calls for points which are not on it. It is ok not to give a valid answer for points which are far from the surface, for example outside. > > The importance of the function depends on the application. In case you are doing transport of optical photons, the surface normal (determined from this method, and also from the 'DistanceToOut' method, matters - it is used for reflection and refraction. So the accuracy of the normal could determine the accuracy of a simulation; it could have a larger or smaller effect depending on the magnitude (and sign) of the inaccuracy and on the optical properties of the surface (metal/dielectric, smooth or rough, .. ) Small inaccuracies (e.g. < 1e-4 or 1e-3 ) will almost certainly be irrelevant. > > In addition the surface is used to help identify boundary crossing of a track in a magnetic field - but in this cause it is an auxiliary role. Significant errors could confuse tracking; in this case too small inaccuracies (e.g. < 1e-4) will be irrelevant. > > John > =================================================== > John Apostolakis, PH Department, CERN > > On May 7, 2014, at 4:49 PM, Yuefeng Qiu wrote: > > > > > *** Discussion title: Geometry > > > > Hello everyone! > > > > I am going to implement a new kind of solid. In order to implement the > > new class I have some questions about overloading the > > G4VSolid::SurfaceNormal(const G4ThreeVector& p): > > > > 1. whether the point p in always on the surface? I can handle situations > > that the p is inside the solid or on the surface, but if it is outside > > the solid then it is a bad new s for me; > > > > 2. whether this function is very important? If I offer a approximate > > solution, how large is the influence? > > > > Thanks in advance! > > > > Best regards, > > > > Yuefeng > > > > ------------------------------------------------------------- > > Visit this GEANT4 at hypernews.slac.stanford.edu message (to reply or unsubscribe) at: > > http://hypernews.slac.stanford.edu/HyperNews/geant4/get/geometry/1341.html >
|Inline Depth:||Outline Depth:||Add message:|