00001 #ifndef ASSOCIATIONUTILS_BASEOVERLAPTOOL_H 00002 #define ASSOCIATIONUTILS_BASEOVERLAPTOOL_H 00003 00004 // System includes 00005 #include <string> 00006 #include <memory> 00007 00008 // Framework includes 00009 #include "AsgTools/AsgTool.h" 00010 00011 // EDM includes 00012 #include "xAODBase/IParticle.h" 00013 00014 // Local includes 00015 #include "AssociationUtils/OverlapDecorationHelper.h" 00016 #include "AssociationUtils/OverlapLinkHelper.h" 00017 00018 namespace ORUtils 00019 { 00020 00033 class BaseOverlapTool : public asg::AsgTool 00034 { 00035 00037 ASG_TOOL_CLASS(BaseOverlapTool, asg::IAsgTool) 00038 00039 public: 00040 00042 BaseOverlapTool(const std::string& name); 00043 00047 StatusCode initialize() override final; 00048 00049 protected: 00050 00053 virtual StatusCode initializeDerived() 00054 { return StatusCode::SUCCESS; } 00055 00063 virtual StatusCode handleOverlap(const xAOD::IParticle* testParticle, 00064 const xAOD::IParticle* refParticle) const; 00065 00068 00070 std::string m_inputLabel; 00072 std::string m_outputLabel; 00073 00076 bool m_outputPassValue; 00077 00079 bool m_linkOverlapObjects; 00080 00082 00083 protected: 00086 00088 std::unique_ptr<OverlapDecorationHelper> m_decHelper; 00089 00091 std::unique_ptr<OverlapLinkHelper> m_objLinkHelper; 00092 00094 00095 }; // class BaseOverlapTool 00096 00097 } // namespace ORUtils 00098 00099 #endif