diff --git a/README.md b/README.md index fbc745e5..f242033e 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,9 @@ python scripts/generate_analysis_config.py ``` `analyse` executes the analysis and optional plug-ins. `plot` renders figures using the produced ROOT file. +## Plug-in architecture +See [docs/plugin_class_diagram.puml](docs/plugin_class_diagram.puml) for the relationships between plug-in interfaces, managers, and example implementations. + ## Example plug-ins The configuration files contain analysis and plotting directives. diff --git a/docs/plugin_class_diagram.puml b/docs/plugin_class_diagram.puml new file mode 100644 index 00000000..88f81dd9 --- /dev/null +++ b/docs/plugin_class_diagram.puml @@ -0,0 +1,47 @@ +@startuml +left to right direction +skinparam { + linetype ortho + packageStyle rectangle + classAttributeIconSize 0 + shadowing false + dpi 150 + pageMargin 10 + pageWidth 8.27in + pageHeight 11.69in + roundCorner 15 + classFontName Helvetica +} + +hide empty members + +package plug #LightYellow { + top to bottom direction + interface IAnalysisPlugin { + +onInitialisation() + +onEvent() + +onFinalisation() + } + + class AnalysisPluginManager { + +register() + } + + interface IPlotPlugin { + +run() + } + + class PlotPluginManager { + +register() + } + + class RocCurvePlugin + class CutFlowPlotPlugin +} + +IAnalysisPlugin <|-- RocCurvePlugin +IPlotPlugin <|-- CutFlowPlotPlugin +AnalysisPluginManager o--> IAnalysisPlugin : manages +PlotPluginManager o--> IPlotPlugin : manages + +@enduml