00001 #ifndef TAUREC_PHOTONCONVERSIONVERTEX_H
00002 #define TAUREC_PHOTONCONVERSIONVERTEX_H
00003
00004 #include "tauRecTools/TauRecToolBase.h"
00005 #include "GaudiKernel/ToolHandle.h"
00006
00007 namespace Analysis {
00008 class TauJetContainer;
00009 }
00010
00011 namespace Rec {
00012 class TrackParticle;
00013 }
00014
00015 namespace InDet {
00016 class IVertexFinder;
00017 }
00018
00030 class PhotonConversionVertex : virtual public TauRecToolBase {
00031 public:
00032
00034
00035 PhotonConversionVertex(const std::string& name);
00036 ASG_TOOL_CLASS2(PhotonConversionVertex, TauRecToolBase, ITauToolBase);
00037 ~PhotonConversionVertex();
00038
00039
00041
00042 virtual StatusCode initialize();
00043 virtual StatusCode finalize();
00044 virtual StatusCode eventFinalize();
00045 virtual StatusCode execute(xAOD::TauJet&) { return StatusCode::SUCCESS; }
00046 virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
00047
00048 virtual void print() const { }
00049
00050 private:
00051
00053
00054 template <class T>
00055 bool openContainer(T* &container, std::string containerName);
00056
00057 template <class T>
00058 bool saveContainer(T* &container, std::string containerName);
00059
00060 template <class T>
00061 bool retrieveTool(T &tool);
00062
00063
00065
00066 double getMinDrTauDecay(const xAOD::TauJetContainer* tauJetCont, const xAOD::TrackParticle *trackParticle);
00067
00068 private:
00069
00071
00072 std::string m_inputTauJetContainerName;
00073 std::string m_inputTrackParticleContainerName;
00074 std::string m_outputConversionVertexContainerName;
00075
00076
00078
00079 double m_maxTauJetDr;
00080
00081
00083
00084 ToolHandle<InDet::IVertexFinder> m_vertexFinderTool;
00085 };
00086
00087 #endif