00001
00002
00003 #ifndef JETMOMENTTOOLS_JETVERTEXTAGGERTOOL_H
00004 #define JETMOMENTTOOLS_JETVERTEXTAGGERTOOL_H
00005
00046
00047 #include "AsgTools/ToolHandle.h"
00048 #include "AsgTools/AsgTool.h"
00049 #include "xAODTracking/Vertex.h"
00050 #include "xAODTracking/VertexContainer.h"
00051 #include "xAODTracking/TrackParticle.h"
00052 #include "xAODTracking/TrackParticleContainer.h"
00053
00054 #include "JetInterface/IJetTrackSelector.h"
00055 #include "JetRec/JetModifierBase.h"
00056 #include "JetEDM/TrackVertexAssociation.h"
00057 #include "JetInterface/IJetModifier.h"
00058 #include "JetInterface/IJetUpdateJvt.h"
00059
00060 #include <vector>
00061 #include <string>
00062
00063 #include <TFile.h>
00064 #include <TString.h>
00065 #include <TH1D.h>
00066 #include <TH2D.h>
00067
00068 class JetVertexTaggerTool
00069 : public asg::AsgTool,
00070 virtual public IJetModifier,
00071 virtual public IJetUpdateJvt {
00072 ASG_TOOL_CLASS2(JetVertexTaggerTool,IJetModifier,IJetUpdateJvt)
00073
00074 public:
00075
00076 JetVertexTaggerTool(const std::string& name);
00077
00078
00079 StatusCode initialize();
00080
00081
00082 virtual int modify(xAOD::JetContainer& jetCont) const;
00083
00084
00085 StatusCode finalize();
00086
00087
00088 float evaluateJvt(float rpt, float jvfcorr) const;
00089
00090
00091
00092
00093
00094
00095 float updateJvt(const xAOD::Jet& jet, std::string sjvt = "Jvt",
00096 std::string scale ="JetPileupScaleMomentum") const;
00097
00098
00099
00100 std::pair<float,float>
00101 getJetVertexTrackSums(const xAOD::Vertex*,
00102 const std::vector<const xAOD::TrackParticle*>&,
00103 const jet::TrackVertexAssociation*) const;
00104
00105
00106 int getPileupTrackCount(const xAOD::Vertex*,
00107 const xAOD::TrackParticleContainer*&,
00108 const jet::TrackVertexAssociation*) const;
00109
00110
00111 const xAOD::Vertex* findHSVertex(const xAOD::VertexContainer*&) const;
00112
00113 private:
00114
00115
00116 std::string m_verticesName;
00117 std::string m_assocTracksName;
00118 std::string m_tvaName;
00119 std::string m_tracksName;
00120 std::string m_jvtlikelihoodHistName;
00121 std::string m_jvtfileName;
00122 std::string m_jvtName;
00123 ToolHandle<IJetTrackSelector> m_htsel;
00124 TString m_fn;
00125 TFile * m_jvtfile;
00126 TH2F * m_jvthisto;
00127 float m_kcorrJVF;
00128 float m_z0cut;
00129 float m_PUtrkptcut;
00130
00131 };
00132
00133
00134 #endif
00135