00001
00002
00003 #ifndef JETMOMENTTOOLS_JETVERTEXFRACTIONTOOL_H
00004 #define JETMOMENTTOOLS_JETVERTEXFRACTIONTOOL_H
00005
00028
00029
00030 #include "AsgTools/ToolHandle.h"
00031
00032 #include "xAODTracking/Vertex.h"
00033 #include "xAODTracking/VertexContainer.h"
00034 #include "xAODTracking/TrackParticle.h"
00035 #include "xAODTracking/TrackParticleContainer.h"
00036
00037 #include "JetInterface/IJetTrackSelector.h"
00038 #include "JetRec/JetModifierBase.h"
00039 #include "JetEDM/TrackVertexAssociation.h"
00040
00041 #include <vector>
00042 #include <string>
00043
00044 class JetVertexFractionTool : public JetModifierBase {
00045 ASG_TOOL_CLASS(JetVertexFractionTool,IJetModifier)
00046
00047 public:
00048
00049
00050 JetVertexFractionTool(const std::string& name);
00051
00052
00053 StatusCode initialize();
00054
00055
00056
00057 virtual int modifyJet(xAOD::Jet& jet) const;
00058
00059
00060 const std::vector<float> getJetVertexFraction(const xAOD::VertexContainer*,
00061 const std::vector<const xAOD::TrackParticle*>&,
00062 const jet::TrackVertexAssociation*) const;
00063
00064
00065 float getJetVertexFraction(const xAOD::Vertex*,
00066 const std::vector<const xAOD::TrackParticle*>&,
00067 const jet::TrackVertexAssociation*) const;
00068
00069
00070 ElementLink<xAOD::VertexContainer> getMaxJetVertexFraction(const xAOD::VertexContainer*,
00071 const std::vector<float>&) const;
00072
00073 private:
00074
00075
00076 std::string m_verticesName;
00077 std::string m_assocTracksName;
00078 std::string m_tvaName;
00079 ToolHandle<IJetTrackSelector> m_htsel;
00080 std::string m_jvfname;
00081
00082 private:
00083
00084 std::vector<float> getEmptyJetVertexFraction(const xAOD::VertexContainer*) const;
00085
00086 };
00087
00088
00089 #endif
00090