Newer
Older
TB_Chris / TbAnalysis / src / .svn / text-base / TbEffPur.h.svn-base
  1. #ifndef TB_EFFICIENCY_H
  2. #define TB_EFFICIENCY_H 1
  3.  
  4. // AIDA
  5. #include "AIDA/IHistogram1D.h"
  6. #include "AIDA/IHistogram2D.h"
  7. #include "TEfficiency.h"
  8. #include "AIDA/IAxis.h"
  9.  
  10. #include "AIDA/IProfile2D.h"
  11. #include "AIDA/IProfile1D.h"
  12.  
  13. // Tb/TbEvent
  14. #include "Event/TbTrack.h"
  15. #include "Event/TbCluster.h"
  16. #include "Event/TbVertex.h"
  17.  
  18. // Tb/TbKernel
  19. #include "TbKernel/ITbTrackFit.h"
  20. #include "TbKernel/TbAlgorithm.h"
  21. #include "TbKernel/ITbClusterFinder.h"
  22.  
  23. #include "TFile.h"
  24. #include "GaudiUtils/Aida2ROOT.h"
  25.  
  26. #include "TH2D.h"
  27.  
  28.  
  29. /** @class TbEffPur TbEffPur.h
  30. *
  31. * @author Dan Saunders
  32. */
  33.  
  34. class TbEffPur : public TbAlgorithm {
  35. public:
  36. TbEffPur(const std::string& name, ISvcLocator* pSvcLocator);
  37. virtual ~TbEffPur() {}
  38.  
  39. // Gaudi methods.
  40. StatusCode initialize();
  41. StatusCode execute();
  42. StatusCode finalize();
  43.  
  44. private:
  45. // Members.
  46. std::string m_trackLocation;
  47. std::string m_vertexLocation;
  48. std::string m_clusterLocation;
  49. unsigned int m_DUTindex;
  50. LHCb::TbTracks * m_tracks;
  51. LHCb::TbClusters * m_clusters;
  52. ITbTrackFit * m_trackFit;
  53. double m_pitch;
  54. int m_nDUTpixels;
  55.  
  56.  
  57. unsigned int m_nTracks;
  58. unsigned int m_nClusters;
  59. unsigned int m_nTrackedClusters;
  60.  
  61. unsigned int m_nClustersPassedCentral;
  62. unsigned int m_nTracksCentral;
  63.  
  64. unsigned int m_nClustersPassedCorner;
  65. unsigned int m_nTracksCorner;
  66.  
  67. double m_eff;
  68. double m_pur;
  69. double m_telescopeClusterVetoDelT;
  70. double m_edgeVetoDistance;
  71.  
  72. TEfficiency * m_effs;
  73. TEfficiency * m_purs;
  74. TEfficiency * m_effHitmap;
  75. TEfficiency * m_purHitmap;
  76. TEfficiency * m_effHitmapInterPixel;
  77. TEfficiency * m_effHitmapInterPixelTriple;
  78. TEfficiency * m_purHitmapInterPixel;
  79. TEfficiency * m_effX;
  80. TEfficiency * m_effY;
  81. std::vector<TEfficiency*> m_effHitmapInterPixelVsSizes;
  82.  
  83. unsigned int m_deadAreaRadius;
  84. double m_xLow;
  85. double m_xUp;
  86. double m_yLow;
  87. double m_yUp;
  88. double m_probCut;
  89.  
  90. double m_rResidualCut;
  91. double m_tResidualCut;
  92.  
  93. unsigned int m_chargeCutLow;
  94. unsigned int m_chargeCutUp;
  95.  
  96. unsigned int m_litSquareSide;
  97. unsigned int m_nEvent;
  98. bool m_viewerOutput;
  99. unsigned int m_viewerEvent;
  100. double m_tGap;
  101. double m_correlationTimeWindow;
  102. bool m_applyVeto;
  103. std::vector<bool> * m_trackAssociated;
  104.  
  105. // Plots.
  106. AIDA::IHistogram2D * m_remainsCorrelationsX;
  107. AIDA::IHistogram2D * m_remainsCorrelationsY;
  108. AIDA::IHistogram2D * m_remainsDifferencesXY;
  109. AIDA::IHistogram2D * m_clusterRemainsPositionsGlobal;
  110. AIDA::IHistogram2D * m_trackRemainsPositionsGlobal;
  111. AIDA::IHistogram2D * m_clusterRemainsPositionsLocal;
  112. AIDA::IHistogram2D * m_trackRemainsPositionsLocal;
  113. AIDA::IHistogram2D * m_vetoTracksHitmap;
  114. AIDA::IHistogram2D * m_vetoClustersHitmap;
  115. AIDA::IHistogram2D * m_timeResidualVsColumn;
  116.  
  117.  
  118. // Methods.
  119. void effPur();
  120. void trackClusters(std::vector<LHCb::TbCluster*> * cutClusters,
  121. std::vector<LHCb::TbTrack*> * cutTracks);
  122. bool matchTrackToCluster(LHCb::TbCluster * cluster,
  123. LHCb::TbTrack * track);
  124. double getRadialSeparation(LHCb::TbCluster * cluster,
  125. LHCb::TbTrack * track);
  126. bool litPixel(LHCb::TbCluster * cluster,
  127. LHCb::TbTrack * track);
  128. bool globalCutPosition(Gaudi::XYZPoint);
  129. void outputViewerData();
  130. void applyVeto(std::vector<LHCb::TbCluster*> * cutClusters,
  131. std::vector<LHCb::TbTrack*> * cutTracks);
  132. void correlateRemains(std::vector<LHCb::TbTrack*> * cutTracks,
  133. std::vector<LHCb::TbCluster*> * cutClusters);
  134. void fillTrackClusters(std::vector<LHCb::TbCluster*> * cutClusters,
  135. std::vector<LHCb::TbTrack*> * cutTracks, double tlow, double tup);
  136. void fillAllTrackClusters(std::vector<LHCb::TbCluster*> * cutClusters,
  137. std::vector<LHCb::TbTrack*> * cutTracks);
  138. void outputDeadRegion(unsigned int, unsigned int);
  139. bool outsideDUT(Gaudi::XYZPoint);
  140. bool interceptDeadPixel(Gaudi::XYZPoint);
  141. };
  142. #endif