#ifndef TB_VERTEXTRACKING_H #define TB_VERTEXTRACKING_H 1 // AIDA #include "AIDA/IHistogram2D.h" // Tb/TbKernel #include "TbKernel/ITbTrackFit.h" #include "TbKernel/ITbClusterFinder.h" #include "TbKernel/TbAlgorithm.h" // Tb/TbEvent #include "Event/TbCluster.h" #include "Event/TbTrack.h" #include "Event/TbVertex.h" /** @class TbVertexTracking TbVertexTracking.h * * Algorithm for tracks with vertices reconstruction * * @author Dan Saunders */ class TbVertexTracking : public TbAlgorithm { public: TbVertexTracking(const std::string &name, ISvcLocator *pSvcLocator); virtual ~TbVertexTracking(); virtual StatusCode initialize(); virtual StatusCode execute(); private: LHCb::TbTracks *m_tracks; LHCb::TbVertices *m_vertices; /// Name of the track fit tool std::string m_trackFitTool; /// Track fit tool ITbTrackFit *m_trackFit; ITbClusterFinder *m_clusterFinder; std::string m_clusterLocation; std::string m_trackLocation; std::vector<std::vector<bool> > m_endCluster; std::vector<std::vector<bool> > m_vertexedCluster; std::vector<std::vector<bool> > m_volumed; double m_twindow; unsigned int m_MinNClusters; unsigned int m_MinNClustersRepeat; double m_ChiSqRedCut; std::string m_ClusterFinderSearchAlgorithm; std::vector<unsigned int> m_PlaneSearchOrder; unsigned int m_clusterSizeCut; bool m_viewerOutput; unsigned int m_viewerEvent; unsigned int m_event; bool m_combatRun; double m_radialCut; bool m_doVertexting; bool m_doRepeat; double m_angleCut; double m_currentAngleCut; double m_vertexDelR; double m_vertexDelT; // Historgrams ______________________________________________________________ AIDA::IHistogram2D *initialStateVsFitStateTx; AIDA::IHistogram2D *initialStateVsFitStateTy; // Methods __________________________________________________________________ bool fillTrack(LHCb::TbTrack *, LHCb::TbCluster *, LHCb::TbCluster *); void evalHoughState(LHCb::TbCluster *, LHCb::TbCluster *, LHCb::TbState *); void outputViewerData(); void performVertexTracking(); void timeOrderTracks(); void formTrack(LHCb::TbCluster *); void outputPatternRecog(double, double, double, double); void outputHoughState(LHCb::TbCluster *, LHCb::TbCluster *); void collectIntoVertices(); void outputVertices(); }; #endif