00001
00002
00003 #ifndef JETMOMENTTOOLS_JETTRACKMOMENTSTOOL_H
00004 #define JETMOMENTTOOLS_JETTRACKMOMENTSTOOL_H
00005
00016
00017 #include "AsgTools/ToolHandle.h"
00018 #include "JetInterface/IJetTrackSelector.h"
00019 #include "JetRec/JetModifierBase.h"
00020 #include "JetEDM/TrackVertexAssociation.h"
00021
00022 #include "xAODTracking/TrackParticle.h"
00023 #include "xAODTracking/Vertex.h"
00024 #include "xAODTracking/VertexContainer.h"
00025
00026 #include <vector>
00027 #include <string>
00028
00029
00030 class JetTrackMomentsTool : public JetModifierBase {
00031 ASG_TOOL_CLASS(JetTrackMomentsTool,IJetModifier)
00032
00033 public:
00034
00035
00036 JetTrackMomentsTool(const std::string& name);
00037
00038
00039 StatusCode initialize();
00040
00041
00042
00043 virtual int modifyJet(xAOD::Jet& jet) const;
00044
00045 private:
00046
00047
00048 std::string m_vertexContainer;
00049 std::string m_assocTracksName;
00050 std::string m_tva;
00051 std::vector<float> m_minTrackPt;
00052 ToolHandle<IJetTrackSelector> m_htsel;
00053
00054
00055
00056 struct TrackMomentStruct { int numTrk; double sumPtTrk; double trackWidth; };
00057
00058
00059 const std::vector<TrackMomentStruct>
00060 getTrackMoments(const xAOD::Jet& jet, const xAOD::VertexContainer* vertices,
00061 const float minTrackPt, const std::vector<const xAOD::TrackParticle*>& tracks,
00062 const jet::TrackVertexAssociation* tva) const;
00063
00064
00065 TrackMomentStruct
00066 getTrackMoments(const xAOD::Jet&, const xAOD::Vertex* vertex, const float minTrackPt,
00067 const std::vector<const xAOD::TrackParticle*>& tracks,
00068 const jet::TrackVertexAssociation* tva) const;
00069
00070
00071 const std::string getMomentBaseName(const float minTrackPt) const;
00072
00073 };
00074
00075 #endif
00076