#ifndef TB_TRACKPLOTS_H #define TB_TRACKPLOTS_H 1 // AIDA #include "AIDA/IHistogram1D.h" #include "AIDA/IHistogram2D.h" #include "AIDA/IProfile2D.h" #include "AIDA/IProfile1D.h" // Tb/TbEvent #include "Event/TbTrack.h" // Tb/TbKernel #include "TbKernel/ITbTrackFit.h" #include "TbKernel/TbAlgorithm.h" /** @class TbTrackPlots TbTrackPlots.h * * Algorithm to produce monitoring histograms for telescope tracks. * * @author Dan Saunders */ class TbTrackPlots : public TbAlgorithm { public: /// Constructor TbTrackPlots(const std::string& name, ISvcLocator* pSvcLocator); /// Destructor virtual ~TbTrackPlots() {} virtual StatusCode initialize(); ///< Algorithm initialization virtual StatusCode execute(); ///< Algorithm execution virtual StatusCode finalize(); ///< Algorithm finalization private: std::string m_trackLocation; std::string m_clusterLocation; /// Track intercepts. std::vector<AIDA::IHistogram2D*> m_hIntercepts; std::vector<AIDA::IHistogram2D*> m_hInterceptsAssociated; std::vector<AIDA::IHistogram2D*> m_hInterceptsNonAssociated; /// Biased residuals. std::vector<AIDA::IHistogram1D*> m_hBiasedResGX; std::vector<AIDA::IHistogram1D*> m_hBiasedResGY; std::vector<AIDA::IHistogram1D*> m_hBiasedResLX; std::vector<AIDA::IHistogram1D*> m_hBiasedResLY; /// Unbiased residuals. std::vector<AIDA::IHistogram1D*> m_hUnbiasedResGX; std::vector<AIDA::IHistogram1D*> m_hUnbiasedResGY; std::vector<AIDA::IHistogram1D*> m_hUnbiasedResLX; std::vector<AIDA::IHistogram1D*> m_hUnbiasedResLY; /// Biased residuals as functions of x/y. std::vector<AIDA::IHistogram2D*> m_hBiasedResGXvsLX; std::vector<AIDA::IHistogram2D*> m_hBiasedResGYvsLY; /// Unbiased residuals as functions of x/y. std::vector<AIDA::IHistogram2D*> m_hUnbiasedResGXvsGX; std::vector<AIDA::IHistogram2D*> m_hUnbiasedResGYvsGY; /// Biased residuals as functions of track probability. std::vector<AIDA::IHistogram2D*> m_hBiasedResGXvsTrackProb; std::vector<AIDA::IHistogram2D*> m_hBiasedResGYvsTrackProb; /// Cluster time residuals. std::vector<AIDA::IHistogram1D*> m_hBiasedResT; /// Cluster time residuals as function of global x. std::vector<AIDA::IHistogram2D*> m_hBiasedResTvsGX; /// Pixel time residuals as function of column number. std::vector<AIDA::IHistogram2D*> m_hBiasedResPixelTvsColumn; /// Tracking efficiency plots. AIDA::IHistogram1D* m_hRatioTracksClustersCentral; AIDA::IHistogram1D* m_hnClustersPerPlaneCentral; AIDA::IHistogram1D* m_hnTracksInterceptCentral; AIDA::IHistogram1D* m_hFractionTrackedClusters; AIDA::IHistogram1D* m_hnClustersPerPlane; AIDA::IHistogram1D* m_hnTrackedClusters; /// Other. AIDA::IHistogram1D* m_hTimeDifferenceTrackTrigger; std::vector<AIDA::IHistogram1D*> m_hSyncDifferences; std::vector<AIDA::IProfile1D*> m_syncInRun; AIDA::IHistogram1D* m_hChi2; AIDA::IHistogram1D* m_hProb; AIDA::IHistogram1D* m_hTrackSize; AIDA::IHistogram1D* m_hSlopeXZ; AIDA::IHistogram1D* m_hSlopeYZ; AIDA::IHistogram1D* m_hFirstStateX; AIDA::IHistogram1D* m_hFirstStateY; AIDA::IHistogram2D* m_hSlopeXvsX; AIDA::IHistogram2D* m_hSlopeYvsY; /// Parameters for chi-squared distribution Gaudi::Histo1DDef m_parChi2; /// Parameters for x/y residual distributions Gaudi::Histo1DDef m_parResidualsXY; /// Parameters for time residual distributions Gaudi::Histo1DDef m_parResidualsT; /// Parameters for x/y histograms (hitmaps) Gaudi::Histo1DDef m_parXY; /// Parameters for track slope distributions Gaudi::Histo1DDef m_parSlope; /// Parameters for central region cuts. Gaudi::Histo1DDef m_parCentral; /// Name of the track fit tool std::string m_trackFitTool; /// Track fit tool ITbTrackFit* m_trackFit; void setupPlots(); void fillClusterLoopPlots(const LHCb::TbClusters* clusters, const unsigned int plane); void fillTrackLoopPlots(LHCb::TbTracks* tracks); void fillResiduals(LHCb::TbTrack* track); }; #endif