|Message: Range checking with UIcommand parameters -- expressions?||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)|
The documentation for G4UIcommand::SetRange() is a bit sparse (Application Developers' Book, sec. 7.2.2):
'Define a range of the parameter(s). Use C++ notation, e.g., "x > 0 && x < 10", with variable name(s) defined by the SetParameterName() method. For the case of a G4ThreeVector, you can set the relation between parameters, e.g., "x > y".'
Where could I find a list of what expressions are or are not allowed?
In particular, I was hoping to apply a computational limit on a parameter, to restrict my geometry to even-sided polygons only:
SidePanelsCmd->SetRange("N>3 && N%2==0");
That is normal "C++ notation," but fails at runtime because "%" is not allowed. I can impose the limit in the SetSidePanels() function itself, which is what the Messenger will call, but it seems more appropriate to use the range-checking.
-- Michael Kelsey