00001 #ifndef PhotonVertexSelection_IElectronRemovalTool_h 00002 #define PhotonVertexSelection_IElectronRemovalTool_h 00003 00004 // Framework includes 00005 #include "AsgTools/IAsgTool.h" 00006 00007 // EDM includes 00008 #include "xAODEgamma/ElectronContainer.h" 00009 #include "xAODTracking/VertexContainer.h" 00010 #include "xAODEventInfo/EventInfo.h" 00011 00012 namespace CP { 00013 00014 class IElectronRemovalTool : public virtual asg::IAsgTool { 00015 00017 ASG_TOOL_INTERFACE(CP::IElectronRemovalTool) 00018 00019 public: 00021 virtual StatusCode removeElectronsFromVertex(xAOD::VertexContainer & output, const xAOD::VertexContainer & input, xAOD::ElectronContainer & toRemove, bool updateAuxInfo = true) const = 0; 00022 00023 //if you already have a non-const vertex container to modify 00024 virtual StatusCode removeElectronsFromVertex(xAOD::VertexContainer & vertices, xAOD::ElectronContainer & toRemove, bool updateAuxInfo = true) const = 0; 00025 00026 //version returning a pointer to a vertex container - caller takes ownership 00027 virtual xAOD::VertexContainer * removeElectronsFromVertex(const xAOD::VertexContainer & input, xAOD::ElectronContainer & toRemove, bool updateAuxInfo = true) const = 0; 00028 00029 00030 00031 }; // class IElectronRemovalTool 00032 00033 } // namespace CP 00034 00035 00036 #endif // PhotonVertexSelection_IPhotonPointingTool_h