|Message: Re: Optical photons propagating at c instead of group velocity||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)|
Glad you discovered this bug so promptly after the 9.5 release. I am very embarrassed, unfortunately, that its there and the effect so blatant - wasting your time.
I'll file a bug report for the records. In the meantime, and until a workable fix is found, I can only suggest that you move to 9.4.p03 (because 9.4.p02 is similarly buggy - but for an entirely different reason).
The reason why the working version 9.4.p03 wasn't carried over to 9.5 can be found at:
Looks like in 9.5:
mat=fpTouchable->GetVolume()->GetLogicalVolume()->GetMaterial(); groupvel = mat->GetMaterialPropertiesTable()->GetProperty("GROUPVEL"); velocity = groupvel->Value(current_momentum);
in G4Track::CalculateVelocityForOpticalPhoton() calculates the velocity of the PreStepPoint and not, as expected, that of the PostStepPoint. Thus, the velocity after refraction is wrong.
But it gets worse!
has this line in it:
if (!isVelocityChanged)theVelocityChange = pStep->GetTrack()->CalculateVelocity();
what this means is that every other type of optical photon step also triggers CalculateVelocityForOpticalPhoton.
That includes the zero-step-length reallocation step. It too triggers CalculateVelocityForOpticalPhoton. This now calculates and sets the velocity of the outside medium.
The attached macro shows this for vanilla /examples/novice/N06
We changed too many lines of code in four different directories (processes/transportation, track, tracking and /processes/optical) and got it wrong.
|Inline Depth:||Outline Depth:||Add message:|