00001 #ifndef PhotonVertexSelection_ElectronRemovalTool_h 00002 #define PhotonVertexSelection_ElectronRemovalTool_h 00003 00004 // Framework includes 00005 #include "AsgTools/AsgTool.h" 00006 00007 // Local includes 00008 #include "PhotonVertexSelection/IElectronRemovalTool.h" 00009 00010 // Forward declarations 00011 00012 namespace CP { 00013 00021 class ElectronRemovalTool : public virtual IElectronRemovalTool, 00022 public asg::AsgTool { 00023 00025 ASG_TOOL_CLASS(ElectronRemovalTool, CP::IElectronRemovalTool) 00026 00027 private: 00028 00029 std::vector<const xAOD::TrackParticle *> getElectronTPs( xAOD::ElectronContainer & electrons) const; 00030 00031 public: 00032 ElectronRemovalTool(const std::string &name); 00033 virtual ~ElectronRemovalTool(); 00034 00037 00039 virtual StatusCode initialize(); 00040 00042 00046 StatusCode removeElectronsFromVertex(xAOD::VertexContainer & output, const xAOD::VertexContainer & input, xAOD::ElectronContainer & toRemove, bool updateAuxInfo = true) const; 00047 00048 //if you already have a non-const vertex container to modify 00049 StatusCode removeElectronsFromVertex(xAOD::VertexContainer & vertices, xAOD::ElectronContainer & toRemove, bool updateAuxInfo = true) const; 00050 00051 //version returning a pointer to a vertex container - caller takes ownership 00052 xAOD::VertexContainer * removeElectronsFromVertex(const xAOD::VertexContainer & input, xAOD::ElectronContainer & toRemove, bool updateAuxInfo = true) const; 00053 00055 00056 }; // class ElectronRemovalTool 00057 00058 } // namespace CP 00059 00060 00061 #endif // PhotonVertexSelection_ElectronRemovalTool_H