00001 #ifndef ASSOCIATIONUTILS_ORTOOLBOX_H
00002 #define ASSOCIATIONUTILS_ORTOOLBOX_H
00003
00004
00005 #ifdef ROOTCORE
00006
00007
00008 #include "AsgTools/AsgTool.h"
00009 #include "AsgTools/AnaToolHandle.h"
00010
00011
00012 #include "AssociationUtils/IOverlapTool.h"
00013 #include "AssociationUtils/IOverlapRemovalTool.h"
00014
00015
00016 namespace ORUtils
00017 {
00018
00026 class ToolBoxBase
00027 {
00028
00029 public:
00030
00031
00032 using MapType_t = std::map< std::string, std::unique_ptr<asg::AsgTool> >;
00033 using const_iterator = typename MapType_t::const_iterator;
00034
00036 StatusCode initialize();
00037
00039 void setMsgLevel(MSG::Level lvl);
00040
00043 asg::AsgTool* getTool(const std::string& key, bool quiet=false);
00044
00047 void setTool(const std::string& key, std::unique_ptr<asg::AsgTool> tool);
00048
00050 const_iterator begin() const;
00052 const_iterator end() const;
00053
00054 private:
00055
00059 MapType_t m_tools;
00060
00061 };
00062
00063
00064
00072 class ORToolBox : public ToolBoxBase
00073 {
00074
00075 public:
00076
00078 asg::AsgTool* getMasterTool();
00079
00081 void setMasterTool(std::unique_ptr<asg::AsgTool> tool);
00082
00087 StatusCode addOverlapTool(std::unique_ptr<asg::AsgTool> tool,
00088 std::string key = "");
00089
00091 ToolHandle<IOverlapTool> getHandle(const std::string& key);
00092
00094 ToolHandle<IOverlapRemovalTool> getMasterHandle();
00095
00096 };
00097
00098 }
00099
00100 #endif // ROOTCORE
00101
00102 #endif // ASSOCIATIONUTILS_ORTOOLBOX_H