Make the input line parameters accessible to modules
It would be good to make the input line parameters accessible to modules.
For example if I run
nova -c myjob.fcl -p some_line -runs 10/10/10
Then it would make std::map <std::string, std::string> of the input parameters like this:
input_parameters["c"] = "myjob.fcl";
input_parameters["p"] = "some_line";
input_parameters["runs"] = "10/10/10";
And make this map available to other modules (I guess through a service). This way people could make things configurable from the input line instead of the fcl file if they want to.
For example now we'd like (run, subrun, first event) numbers to be input from the command line, or if we want to skip some number of events, etc., then we could make it happen through this service and without asking you guys to implement some options that we want.
#1 Updated by Rob Kutschke about 10 years ago
My preference would be to make the command line information persistable. If I have data events that went through a processing chain of: raw data, pass 1 reconstruction, pass2 reconstruction, skim 1, skim 2. I would expect to find five command lines persisted. My guess is that this information could be put in the run object since that reduces needless repetition (modulo sparse skims).
#2 Updated by Christopher Green about 10 years ago
- Category set to Infrastructure
- Status changed from New to Rejected
This was discussed with Brian and Mark M. and others at our regular meeting on Friday. The longstanding policy is to have parameter sets be the only method for communication with a module outside the event. This is to ensure that the provenance (the exact conditions that resulted in the production of those exact results) would be easy to track. Certain parameters are set on the command line and injected into the parameter set by the nova (or whatever) application after the main configuration has been read; but this should be minimized in order to preserve as much as possible the reproducibility of results. For instance, a collaborator could give you his favorite config file to reproduce his results, but forget to send you his command line with several tweaks attached.
The executive summary: which items may be specified on the command line is properly the province of the individual experiment; but the mechanism used to transfer them to the modules should be that of the parameter set, and moreover it should be used judiciously as far as possible.
If you have any questions, comments or problems, please let us know.