|Message: Re: Setting Track Info for secondaries||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)|
I add some comments as a developer of Track category.
On Tue, 26 Nov 2013 21:37:00 GMT, Gumplinger Peter wrote:
> Hello Nigel, > > Good points, all! I'll respond to what I can. > > > I thought that the recently-added function > > G4Step::GetSecondaryInCurrentStep() would be just what I needed, but > > there are problems. > > > > This function returns a vector of pointers to const G4Track, so it's not > > easy to add an information object pointer via > > G4Track::SetUserInformation(). I'd be interested to know why the design > > was done this way, as the self-same track pointers are available in > > non-const form via the likes of G4Step::GetSecondary(), if you only knew > > which ones relate to the current step. > > The idea was so user can't modify secondary tracks or add/remove tracks > but your issue may have been an oversight. I'll confirm that the > developer is aware of your posting.
In principle, we do not assume that users modify secondary tracks before passing them to tracking manager (That's way the track ID is not assigned to secondary tracks in the secondary bucket.), because such operations are dangerous potentially. So, GetSecondaryInCurrentStep() gives non-const pointer to the secondary tracks.
However, you can utilize following recipe if you understand the mechanism of Geant4 tracking.
> You could use the GetfSecondary() as in: > > http://www-geant4.kek.jp/lxr/source//examples/extended/optical/LXe/src/LXeSteppingAction.cc#L105 > > This also shows you how to extract just the secondaries in the current > step. >
> > (3) Is there a way for the user to intervene at the moment a secondary > > is created, in order to (for example) implement routine copying of > > context-dependent information from parent to secondary? > > Well, yes - but not exactly 'at the moment a secondary is created' > because this happens inside processes. > > You can implement ClassifyNewTrack in your StackingAction: > > http://www-geant4.kek.jp/lxr/source/event/include/G4UserStackingAction.hh#L60Yes. StackingAction is the proper point for users to modify secondary track information.
|Inline Depth:||Outline Depth:||Add message:|