Newer
Older
TB_Chris / TbAlgorithms / src / .svn / text-base / TbTrackPlots.h.svn-base
  1. #ifndef TB_TRACKPLOTS_H
  2. #define TB_TRACKPLOTS_H 1
  3.  
  4. // AIDA
  5. #include "AIDA/IHistogram1D.h"
  6. #include "AIDA/IHistogram2D.h"
  7.  
  8. #include "AIDA/IProfile2D.h"
  9. #include "AIDA/IProfile1D.h"
  10.  
  11. // Tb/TbEvent
  12. #include "Event/TbTrack.h"
  13.  
  14. // Tb/TbKernel
  15. #include "TbKernel/ITbTrackFit.h"
  16. #include "TbKernel/TbAlgorithm.h"
  17.  
  18. /** @class TbTrackPlots TbTrackPlots.h
  19. *
  20. * Algorithm to produce monitoring histograms for telescope tracks.
  21. *
  22. * @author Dan Saunders
  23. */
  24.  
  25. class TbTrackPlots : public TbAlgorithm {
  26. public:
  27. /// Constructor
  28. TbTrackPlots(const std::string& name, ISvcLocator* pSvcLocator);
  29. /// Destructor
  30. virtual ~TbTrackPlots() {}
  31.  
  32. virtual StatusCode initialize(); ///< Algorithm initialization
  33. virtual StatusCode execute(); ///< Algorithm execution
  34. virtual StatusCode finalize(); ///< Algorithm finalization
  35.  
  36. private:
  37. std::string m_trackLocation;
  38. std::string m_clusterLocation;
  39.  
  40. /// Track intercepts.
  41. std::vector<AIDA::IHistogram2D*> m_hIntercepts;
  42. std::vector<AIDA::IHistogram2D*> m_hInterceptsAssociated;
  43. std::vector<AIDA::IHistogram2D*> m_hInterceptsNonAssociated;
  44. /// Biased residuals.
  45. std::vector<AIDA::IHistogram1D*> m_hBiasedResGX;
  46. std::vector<AIDA::IHistogram1D*> m_hBiasedResGY;
  47. std::vector<AIDA::IHistogram1D*> m_hBiasedResLX;
  48. std::vector<AIDA::IHistogram1D*> m_hBiasedResLY;
  49. /// Unbiased residuals.
  50. std::vector<AIDA::IHistogram1D*> m_hUnbiasedResGX;
  51. std::vector<AIDA::IHistogram1D*> m_hUnbiasedResGY;
  52. std::vector<AIDA::IHistogram1D*> m_hUnbiasedResLX;
  53. std::vector<AIDA::IHistogram1D*> m_hUnbiasedResLY;
  54.  
  55. /// Biased residuals as functions of x/y.
  56. std::vector<AIDA::IHistogram2D*> m_hBiasedResGXvsLX;
  57. std::vector<AIDA::IHistogram2D*> m_hBiasedResGYvsLY;
  58. /// Unbiased residuals as functions of x/y.
  59. std::vector<AIDA::IHistogram2D*> m_hUnbiasedResGXvsGX;
  60. std::vector<AIDA::IHistogram2D*> m_hUnbiasedResGYvsGY;
  61. /// Biased residuals as functions of track probability.
  62. std::vector<AIDA::IHistogram2D*> m_hBiasedResGXvsTrackProb;
  63. std::vector<AIDA::IHistogram2D*> m_hBiasedResGYvsTrackProb;
  64.  
  65. /// Cluster time residuals.
  66. std::vector<AIDA::IHistogram1D*> m_hBiasedResT;
  67. /// Cluster time residuals as function of global x.
  68. std::vector<AIDA::IHistogram2D*> m_hBiasedResTvsGX;
  69. /// Pixel time residuals as function of column number.
  70. std::vector<AIDA::IHistogram2D*> m_hBiasedResPixelTvsColumn;
  71.  
  72. /// Tracking efficiency plots.
  73. AIDA::IHistogram1D* m_hRatioTracksClustersCentral;
  74. AIDA::IHistogram1D* m_hnClustersPerPlaneCentral;
  75. AIDA::IHistogram1D* m_hnTracksInterceptCentral;
  76. AIDA::IHistogram1D* m_hFractionTrackedClusters;
  77. AIDA::IHistogram1D* m_hnClustersPerPlane;
  78. AIDA::IHistogram1D* m_hnTrackedClusters;
  79.  
  80. /// Other.
  81. AIDA::IHistogram1D* m_hTimeDifferenceTrackTrigger;
  82.  
  83. std::vector<AIDA::IHistogram1D*> m_hSyncDifferences;
  84. std::vector<AIDA::IProfile1D*> m_syncInRun;
  85.  
  86. AIDA::IHistogram1D* m_hChi2;
  87. AIDA::IHistogram1D* m_hProb;
  88. AIDA::IHistogram1D* m_hTrackSize;
  89. AIDA::IHistogram1D* m_hSlopeXZ;
  90. AIDA::IHistogram1D* m_hSlopeYZ;
  91. AIDA::IHistogram1D* m_hFirstStateX;
  92. AIDA::IHistogram1D* m_hFirstStateY;
  93. AIDA::IHistogram2D* m_hSlopeXvsX;
  94. AIDA::IHistogram2D* m_hSlopeYvsY;
  95.  
  96. /// Parameters for chi-squared distribution
  97. Gaudi::Histo1DDef m_parChi2;
  98. /// Parameters for x/y residual distributions
  99. Gaudi::Histo1DDef m_parResidualsXY;
  100. /// Parameters for time residual distributions
  101. Gaudi::Histo1DDef m_parResidualsT;
  102. /// Parameters for x/y histograms (hitmaps)
  103. Gaudi::Histo1DDef m_parXY;
  104. /// Parameters for track slope distributions
  105. Gaudi::Histo1DDef m_parSlope;
  106. /// Parameters for central region cuts.
  107. Gaudi::Histo1DDef m_parCentral;
  108.  
  109. /// Name of the track fit tool
  110. std::string m_trackFitTool;
  111. /// Track fit tool
  112. ITbTrackFit* m_trackFit;
  113.  
  114. void setupPlots();
  115. void fillClusterLoopPlots(const LHCb::TbClusters* clusters,
  116. const unsigned int plane);
  117. void fillTrackLoopPlots(LHCb::TbTracks* tracks);
  118. void fillResiduals(LHCb::TbTrack* track);
  119. };
  120. #endif