00001 #ifndef TAUREC_TAUVERTEXFINDER_H
00002 #define TAUREC_TAUVERTEXFINDER_H
00003
00004 #include "tauRecTools/TauRecToolBase.h"
00005 #include "GaudiKernel/ToolHandle.h"
00006 #include "xAODTracking/VertexContainer.h"
00007 #include "JetEDM/TrackVertexAssociation.h"
00008
00010
00022 class TauVertexFinder : virtual public TauRecToolBase {
00023 public:
00024
00026
00027 TauVertexFinder(const std::string& name);
00028 ASG_TOOL_CLASS2(TauVertexFinder, TauRecToolBase, ITauToolBase);
00029 ~TauVertexFinder();
00030
00031
00033
00034 virtual StatusCode initialize();
00035 virtual StatusCode eventInitialize();
00036 virtual StatusCode execute(xAOD::TauJet& pTau);
00037 virtual StatusCode eventFinalize();
00038 virtual StatusCode finalize();
00039
00040 virtual void cleanup(xAOD::TauJet* ) { }
00041 virtual void print() const { }
00042
00043 ElementLink<xAOD::VertexContainer> getPV_TJVA(const xAOD::TauJet& tauJet, const xAOD::VertexContainer& vertices);
00044
00045 private:
00046 float getJetVertexFraction(const xAOD::Vertex* vertex, const std::vector<const xAOD::TrackParticle*>& tracks, const jet::TrackVertexAssociation* tva) const;
00047
00048
00050
00051 template <class T>
00052 bool openContainer(T* &container, std::string containerName, bool printFATAL=false);
00053
00054 template <class T>
00055 bool retrieveTool(T &tool);
00056
00057 private:
00058 bool m_printMissingContainerINFO;
00059 float m_maxJVF;
00060
00061
00063
00064 bool m_useTJVA;
00065 std::string m_inputPrimaryVertexContainerName;
00066 std::string m_assocTracksName;
00067 std::string m_trackVertexAssocName;
00068 };
00069
00070 #endif // not TAUREC_TAUVERTEXFINDER_H