00001 #ifndef ASSOCIATIONUTILS_TAU_ANTITAU_JET_OVERLAPTOOL_H
00002 #define ASSOCIATIONUTILS_TAU_ANTITAU_JET_OVERLAPTOOL_H
00003
00004
00005 #include "AsgTools/AsgTool.h"
00006
00007
00008 #include "xAODTau/TauJetContainer.h"
00009 #include "xAODJet/JetContainer.h"
00010
00011
00012 #include "AssociationUtils/IOverlapTool.h"
00013 #include "AssociationUtils/BaseOverlapTool.h"
00014 #include "AssociationUtils/BJetHelper.h"
00015 #include "AssociationUtils/IObjectAssociator.h"
00016
00017 namespace ORUtils
00018 {
00019
00045 class TauAntiTauJetOverlapTool : public virtual IOverlapTool,
00046 public BaseOverlapTool
00047 {
00048
00050 ASG_TOOL_CLASS(TauAntiTauJetOverlapTool, IOverlapTool)
00051
00052 public:
00053
00055 TauAntiTauJetOverlapTool(const std::string& name);
00056
00058 virtual StatusCode
00059 findOverlaps(const xAOD::IParticleContainer& cont1,
00060 const xAOD::IParticleContainer& cont2) const override;
00061
00064 virtual StatusCode
00065 findOverlaps(const xAOD::JetContainer& jets,
00066 const xAOD::TauJetContainer& taus) const;
00067
00068 protected:
00071
00072 protected:
00073
00075 virtual StatusCode initializeDerived() override;
00076
00079 bool isBJet(const xAOD::Jet& jet) const;
00080
00083 bool isSurvivingAntiTau(const xAOD::TauJet& tau) const;
00084
00085 private:
00088
00090 std::string m_bJetLabel;
00091
00093 std::string m_antiTauLabel;
00094
00096 float m_dR;
00098 bool m_useRapidity;
00099
00101
00102 private:
00105
00107 std::unique_ptr<BJetHelper> m_bJetHelper;
00108
00110 std::unique_ptr<IParticleAssociator> m_dRMatcher;
00111
00113
00114
00116 std::unique_ptr<OverlapDecorationHelper> m_antiTauDecHelper;
00117
00119
00120 };
00121
00122 }
00123
00124 #endif