Newer
Older
TB_Chris / TbAlgorithms / src / .svn / text-base / TbVertexTracking.h.svn-base
  1. #ifndef TB_VERTEXTRACKING_H
  2. #define TB_VERTEXTRACKING_H 1
  3.  
  4. // AIDA
  5. #include "AIDA/IHistogram2D.h"
  6.  
  7. // Tb/TbKernel
  8. #include "TbKernel/ITbTrackFit.h"
  9. #include "TbKernel/ITbClusterFinder.h"
  10. #include "TbKernel/TbAlgorithm.h"
  11.  
  12. // Tb/TbEvent
  13. #include "Event/TbCluster.h"
  14. #include "Event/TbTrack.h"
  15. #include "Event/TbVertex.h"
  16.  
  17. /** @class TbVertexTracking TbVertexTracking.h
  18. *
  19. * Algorithm for tracks with vertices reconstruction
  20. *
  21. * @author Dan Saunders
  22. */
  23.  
  24. class TbVertexTracking : public TbAlgorithm {
  25. public:
  26. TbVertexTracking(const std::string &name, ISvcLocator *pSvcLocator);
  27. virtual ~TbVertexTracking();
  28. virtual StatusCode initialize();
  29. virtual StatusCode execute();
  30.  
  31. private:
  32. LHCb::TbTracks *m_tracks;
  33. LHCb::TbVertices *m_vertices;
  34.  
  35. /// Name of the track fit tool
  36. std::string m_trackFitTool;
  37. /// Track fit tool
  38. ITbTrackFit *m_trackFit;
  39. ITbClusterFinder *m_clusterFinder;
  40. std::string m_clusterLocation;
  41. std::string m_trackLocation;
  42. std::vector<std::vector<bool> > m_endCluster;
  43. std::vector<std::vector<bool> > m_vertexedCluster;
  44. std::vector<std::vector<bool> > m_volumed;
  45.  
  46. double m_twindow;
  47. unsigned int m_MinNClusters;
  48. unsigned int m_MinNClustersRepeat;
  49. double m_ChiSqRedCut;
  50. std::string m_ClusterFinderSearchAlgorithm;
  51. std::vector<unsigned int> m_PlaneSearchOrder;
  52. unsigned int m_clusterSizeCut;
  53.  
  54. bool m_viewerOutput;
  55. unsigned int m_viewerEvent;
  56. unsigned int m_event;
  57. bool m_combatRun;
  58. double m_radialCut;
  59. bool m_doVertexting;
  60. bool m_doRepeat;
  61. double m_angleCut;
  62. double m_currentAngleCut;
  63. double m_vertexDelR;
  64. double m_vertexDelT;
  65.  
  66. // Historgrams ______________________________________________________________
  67. AIDA::IHistogram2D *initialStateVsFitStateTx;
  68. AIDA::IHistogram2D *initialStateVsFitStateTy;
  69.  
  70. // Methods __________________________________________________________________
  71. bool fillTrack(LHCb::TbTrack *, LHCb::TbCluster *, LHCb::TbCluster *);
  72. void evalHoughState(LHCb::TbCluster *, LHCb::TbCluster *, LHCb::TbState *);
  73. void outputViewerData();
  74. void performVertexTracking();
  75. void timeOrderTracks();
  76. void formTrack(LHCb::TbCluster *);
  77. void outputPatternRecog(double, double, double, double);
  78. void outputHoughState(LHCb::TbCluster *, LHCb::TbCluster *);
  79. void collectIntoVertices();
  80. void outputVertices();
  81. };
  82. #endif