Newer
Older
TB_Chris / TbAlgorithms / src / .svn / text-base / TbClusterPlots.h.svn-base
  1. #ifndef TB_CLUSTERPLOTS_H
  2. #define TB_CLUSTERPLOTS_H 1
  3.  
  4. // AIDA
  5. #include "AIDA/IHistogram1D.h"
  6. #include "AIDA/IHistogram2D.h"
  7.  
  8. // Tb/TbEvent
  9. #include "Event/TbCluster.h"
  10.  
  11. // Tb/TbKernel
  12. #include "TbKernel/ITbClusterFinder.h"
  13. #include "TbKernel/TbAlgorithm.h"
  14.  
  15. /** @class TbClusterPlots TbClusterPlots.h
  16. *
  17. * Algorithm to produce monitoring histograms for Timepix3 clusters.
  18. *
  19. * @author Dan Saunders
  20. */
  21.  
  22. class TbClusterPlots : public TbAlgorithm {
  23. public:
  24. /// Standard constructor
  25. TbClusterPlots(const std::string& name, ISvcLocator* pSvcLocator);
  26. /// Destructor
  27. virtual ~TbClusterPlots();
  28.  
  29. virtual StatusCode initialize(); ///< Algorithm initialization
  30. virtual StatusCode execute(); ///< Algorithm execution
  31. virtual StatusCode finalize();
  32.  
  33. private:
  34. /// TES location of clusters
  35. std::string m_clusterLocation;
  36. /// Index of reference plane
  37. unsigned int m_referencePlane;
  38. /// Time window (in ns) for correlation/difference plots
  39. double m_twindow;
  40.  
  41. /// Parameters for ToT distribution histograms
  42. Gaudi::Histo1DDef m_parToT;
  43. /// Parameters for charge distribution histograms
  44. Gaudi::Histo1DDef m_parCharge;
  45. /// Parameters for x/y histograms (hitmaps and correlations)
  46. Gaudi::Histo1DDef m_parXY;
  47. /// Parameters for time histograms
  48. Gaudi::Histo1DDef m_parTime;
  49. /// Parameters for x/y difference histograms
  50. Gaudi::Histo1DDef m_parDifferenceXY;
  51. /// Parameters for phi difference histograms
  52. Gaudi::Histo1DDef m_parDifferenceRot;
  53. /// Parameters for time difference histograms
  54. Gaudi::Histo1DDef m_parDifferenceT;
  55. Gaudi::Histo1DDef m_parSamples;
  56.  
  57. AIDA::IHistogram1D* m_telHitOccupancy;
  58. AIDA::IHistogram1D* m_telHitOccupancy_tracked;
  59. AIDA::IHistogram1D* m_nClusters_vs_telHitOccupancy;
  60. AIDA::IHistogram1D* m_nTrackedClusters_vs_telHitOccupancy;
  61. AIDA::IHistogram1D* m_fractionTrackedClusters_vs_telHitOccupancy;
  62.  
  63. AIDA::IHistogram1D* m_telCharge;
  64. AIDA::IHistogram1D* m_nClusters_vs_telCharge;
  65. AIDA::IHistogram1D* m_nTrackedClusters_vs_telCharge;
  66. AIDA::IHistogram1D* m_fractionTrackedClusters_vs_telCharge;
  67.  
  68. AIDA::IHistogram1D* m_telClusterOccupancy;
  69. AIDA::IHistogram1D* m_telClusterOccupancy_tracked;
  70. AIDA::IHistogram1D* m_nClusters_vs_telClusterOccupancy;
  71. AIDA::IHistogram1D* m_nTrackedClusters_vs_telClusterOccupancy;
  72. AIDA::IHistogram1D* m_fractionTrackedClusters_vs_telClusterOccupancy;
  73.  
  74. bool m_fillSamples;
  75. bool m_fillComparisonPlots; // Much faster to turn off.
  76. bool m_fillTrackingEfficiency; /// slow and pattern recognition-y
  77. /// Cluster finder helper class
  78. ITbClusterFinder* m_clusterFinder;
  79. unsigned int m_event;
  80. double m_chargeCutLow;
  81.  
  82. // Histograms
  83. // ToT distribution
  84. std::vector<AIDA::IHistogram1D*> m_hToT;
  85. std::vector<AIDA::IHistogram1D*> m_hToTOnePixel;
  86. std::vector<AIDA::IHistogram1D*> m_hToTTwoPixel;
  87. std::vector<AIDA::IHistogram1D*> m_hToTThreePixel;
  88. std::vector<AIDA::IHistogram1D*> m_hToTFourPixel;
  89. std::vector<AIDA::IHistogram1D*> m_hToTAssociated;
  90. std::vector<AIDA::IHistogram1D*> m_hToTNonAssociated;
  91. // Charge distribution
  92. std::vector<AIDA::IHistogram1D*> m_hCharge;
  93. std::vector<AIDA::IHistogram1D*> m_hChargeOnePixel;
  94. std::vector<AIDA::IHistogram1D*> m_hChargeTwoPixel;
  95. std::vector<AIDA::IHistogram1D*> m_hChargeThreePixel;
  96. std::vector<AIDA::IHistogram1D*> m_hChargeFourPixel;
  97. std::vector<AIDA::IHistogram1D*> m_hChargeAssociated;
  98. std::vector<AIDA::IHistogram1D*> m_hChargeNonAssociated;
  99. // Cluster size
  100. std::vector<AIDA::IHistogram1D*> m_hSize;
  101. std::vector<AIDA::IHistogram1D*> m_hSizeAssociated;
  102. std::vector<AIDA::IHistogram1D*> m_hSizeNonAssociated;
  103. std::vector<AIDA::IHistogram1D*> m_hWidthCol;
  104. std::vector<AIDA::IHistogram1D*> m_hWidthRow;
  105. // Cluster time
  106. std::vector<AIDA::IHistogram1D*> m_hTime;
  107. std::vector<AIDA::IHistogram1D*> m_hTimeAssociated;
  108. std::vector<AIDA::IHistogram1D*> m_hTimeNonAssociated;
  109. std::vector<AIDA::IHistogram1D*> m_hTimeBetweenClusters;
  110. // Time spread of pixel hits in a cluster
  111. std::vector<AIDA::IHistogram1D*> m_hTimeSeedMinusHit;
  112.  
  113. // Hitmaps
  114. std::vector<AIDA::IHistogram2D*> m_hHitMap;
  115. std::vector<AIDA::IHistogram2D*> m_hHitMapAssociated;
  116. std::vector<AIDA::IHistogram2D*> m_hHitMapNonAssociated;
  117.  
  118. AIDA::IHistogram2D* m_hGlobalXvsZ;
  119. AIDA::IHistogram2D* m_hGlobalYvsZ;
  120.  
  121. // Global correlations.
  122. std::vector<AIDA::IHistogram2D*> m_gx_correls;
  123. std::vector<AIDA::IHistogram2D*> m_gy_correls;
  124. std::vector<AIDA::IHistogram2D*> m_gt_correls;
  125.  
  126. // Global differences.
  127. std::vector<AIDA::IHistogram1D*> m_gx_diffs;
  128. std::vector<AIDA::IHistogram1D*> m_gy_diffs;
  129. std::vector<AIDA::IHistogram1D*> m_gt_diffs;
  130.  
  131. std::vector<AIDA::IHistogram2D*> m_clusterVisuals;
  132.  
  133. void setupPlots();
  134. void fillPerChipPlots(const LHCb::TbClusters* clusters);
  135. void fillComparisonPlots();
  136. void fillSamples(const LHCb::TbClusters* clusters);
  137. void fillClusterVisuals(const LHCb::TbClusters* clusters);
  138. void fillTrackingEfficiency();
  139. };
  140. #endif