Issues reading data products with instance names in the event display
This is a follow up from LArSoft's issue #10538 .
There is a lot of magic ongoing in the event displaying support code, that I don't fully understand.
Apparently the system is able to automatically create a dialogue window for each service whose name ends with
It maintains a
ServiceTable and uses that information to create dialogue windows to change service configuration at run time.
When clicking on "Apply", those dialogue windows create a new parameter set with all the values they contain, but they elect to create it as a FHiCL-parseable string. Then the caller parses that FHiCL string and uses the parsed
fhicl::ParameterSet to reconfigure.
All good, except that in the process of creating that configuration string, the FHiCL rule about string value quoting is ignored.
This has some interesting consequences when changing a text entry, say,
product:instancein the text box:
label:product:instanceFHiCL string is created, that is invalid FHiCL; reconfiguration fails
"product:instance"in the text box:
label:"product:instance"FHiCL string is created, that is valid FHiCL, with value
- the next time the dialogue is opened, the text box is initialized with that value and unless you manually add the double quotes again you are back in the first case
It's not apparent to me the need of using
string rather than
fhicl::ParameterSet as intermediate representation... can the double conversion be elided? that would solve this issue.
FHiCL C++ has evolved a lot, and critical limitations might have been removed since the time
ServiceTable was designed.