00001 #ifndef ASSOCIATIONUTILS_OVERLAPREMOVALTOOL2_H
00002 #define ASSOCIATIONUTILS_OVERLAPREMOVALTOOL2_H
00003
00004
00005 #include "AsgTools/AsgTool.h"
00006 #include "AsgTools/ToolHandle.h"
00007
00008
00009 #include "AssociationUtils/IOverlapRemovalTool.h"
00010 #include "AssociationUtils/IOverlapTool.h"
00011 #include "AssociationUtils/OverlapRemovalDefs.h"
00012 #include "AssociationUtils/OverlapDecorationHelper.h"
00013
00014
00015 #include "AssociationUtils/OverlapRemovalToolLegacy.h"
00016
00017 namespace ORUtils
00018 {
00019
00031 class OverlapRemovalTool : public virtual IOverlapRemovalTool,
00032 public asg::AsgTool
00033 {
00034
00036 ASG_TOOL_CLASS(OverlapRemovalTool, IOverlapRemovalTool)
00037
00038 public:
00039
00041 OverlapRemovalTool(const std::string& name);
00042
00044 virtual StatusCode initialize() override;
00045
00049 virtual StatusCode
00050 removeOverlaps(const xAOD::ElectronContainer* electrons,
00051 const xAOD::MuonContainer* muons,
00052 const xAOD::JetContainer* jets,
00053 const xAOD::TauJetContainer* taus = 0,
00054 const xAOD::PhotonContainer* photons = 0,
00055 const xAOD::JetContainer* fatJets = 0) const override;
00056
00057 private:
00058
00060 StatusCode removeOverlap(const ToolHandle<IOverlapTool>& tool,
00061 const xAOD::IParticleContainer* cont1,
00062 const xAOD::IParticleContainer* cont2) const;
00063
00064 private:
00065
00066
00067
00068
00069
00071 std::string m_inputLabel;
00073 std::string m_outputLabel;
00074
00077 bool m_outputPassValue;
00078
00081 bool m_requireExpectedPointers;
00082
00083
00084
00085
00086
00088 std::unique_ptr<OverlapDecorationHelper> m_decHelper;
00089
00090
00091
00092
00093
00095 ToolHandle<IOverlapTool> m_eleEleORT;
00096
00098 ToolHandle<IOverlapTool> m_eleMuORT;
00099
00101 ToolHandle<IOverlapTool> m_eleJetORT;
00102
00104 ToolHandle<IOverlapTool> m_muJetORT;
00105
00107 ToolHandle<IOverlapTool> m_tauEleORT;
00108
00110 ToolHandle<IOverlapTool> m_tauMuORT;
00111
00113 ToolHandle<IOverlapTool> m_tauJetORT;
00114
00116 ToolHandle<IOverlapTool> m_phoEleORT;
00117
00119 ToolHandle<IOverlapTool> m_phoMuORT;
00120
00122 ToolHandle<IOverlapTool> m_phoJetORT;
00123
00125 ToolHandle<IOverlapTool> m_eleFatJetORT;
00126
00128 ToolHandle<IOverlapTool> m_jetFatJetORT;
00129
00130 };
00131
00132 }
00133
00134 #endif