Refactoring user interfaces
Currently we use mostly dictionaries or lists as input to the high level functions of our AnalysisTools
framework.
These are easy to create and served their purpose well enough during the development of the framework and our current use case. However, the structure of these inputs are not very intuitive and other people how have not been part of the development process might not easily get how to use them. Furthermore, the input is not always -- or rather rarely -- checked, which makes it even harder for new users to adapt to the framework.
Thus, it would be nice to implement interfaces for the user inputs, which are:
- signal config
- global config
- batch config
- final state particles
- decay channels
- observables
- ROE masks
- skim cuts
- best candidate selection settings which depend on the needs of the respective analysis.
Such interfaces would read these settings or provide abstract classes which the user must implement. These would also make it easier to maintain the code in the future and add unit tests for the respective objects.