00001 #ifndef ASSOCIATIONUTILS_IOVERLAPREMOVALTOOL_H
00002 #define ASSOCIATIONUTILS_IOVERLAPREMOVALTOOL_H
00003
00004
00005 #include "AsgTools/IAsgTool.h"
00006
00007
00008 #include "xAODEgamma/ElectronContainer.h"
00009 #include "xAODEgamma/PhotonContainer.h"
00010 #include "xAODJet/JetContainer.h"
00011 #include "xAODMuon/MuonContainer.h"
00012 #include "xAODTau/TauJetContainer.h"
00013
00014
00019 class IOverlapRemovalTool : public virtual asg::IAsgTool
00020 {
00021
00023 ASG_TOOL_INTERFACE(IOverlapRemovalTool)
00024
00025 public:
00026
00032 virtual StatusCode removeOverlaps(const xAOD::ElectronContainer* electrons,
00033 const xAOD::MuonContainer* muons,
00034 const xAOD::JetContainer* jets,
00035 const xAOD::TauJetContainer* taus = 0,
00036 const xAOD::PhotonContainer* photons = 0) = 0;
00037
00044 virtual StatusCode removeOverlaps(const xAOD::ElectronContainer* electrons,
00045 const xAOD::MuonContainer* muons,
00046 const xAOD::JetContainer* jets,
00047 const xAOD::TauJetContainer* taus,
00048 const xAOD::ElectronContainer* looseElectrons,
00049 const xAOD::MuonContainer* looseMuons,
00050 const xAOD::PhotonContainer* photons = 0) = 0;
00051
00055 virtual StatusCode removeEleJetOverlap(const xAOD::ElectronContainer& electrons,
00056 const xAOD::JetContainer& jets) = 0;
00057
00059 virtual StatusCode removeMuonJetOverlap(const xAOD::MuonContainer& muons,
00060 const xAOD::JetContainer& jets) = 0;
00061
00063 virtual StatusCode removeEleMuonOverlap(const xAOD::ElectronContainer& electrons,
00064 const xAOD::MuonContainer& muons) = 0;
00065
00067 virtual StatusCode removeTauJetOverlap(const xAOD::TauJetContainer& taus,
00068 const xAOD::JetContainer& jets) = 0;
00069
00071 virtual StatusCode removeTauEleOverlap(const xAOD::TauJetContainer& taus,
00072 const xAOD::ElectronContainer& electrons) = 0;
00073
00075 virtual StatusCode removeTauMuonOverlap(const xAOD::TauJetContainer& taus,
00076 const xAOD::MuonContainer& muons) = 0;
00077
00079 virtual StatusCode removePhotonEleOverlap(const xAOD::PhotonContainer& photons,
00080 const xAOD::ElectronContainer& electrons) = 0;
00081
00083 virtual StatusCode removePhotonMuonOverlap(const xAOD::PhotonContainer& photons,
00084 const xAOD::MuonContainer& muons) = 0;
00085
00087 virtual StatusCode removePhotonPhotonOverlap(const xAOD::PhotonContainer& photons) = 0;
00088
00090 virtual StatusCode removePhotonJetOverlap(const xAOD::PhotonContainer& photons,
00091 const xAOD::JetContainer& jets) = 0;
00092
00093 };
00094
00095 #endif