- #ifndef TB_TRACKFITTER_H
- #define TB_TRACKFITTER_H 1
- #include "TH1.h"
- #include "TH2.h"
- #include "GaudiAlg/GaudiTupleAlg.h"
- #include "GaudiKernel/RndmGenerators.h"
- #include "TbKernel/ITbGeometrySvc.h"
- #include "TbKernel/ITbTrackFit.h"
- /** @class TbTrackFitter TbTrackFitter.h
- * Author: Panagiotis Tsopelas
- */
- class TbTrackFitter : public GaudiTupleAlg {
- public:
- TbTrackFitter(const std::string& name, ISvcLocator* pSvcLocator);
- virtual ~TbTrackFitter() {}
- virtual StatusCode initialize(); ///< Algorithm initialization
- virtual StatusCode execute(); ///< Algorithm execution
- private:
- Rndm::Numbers m_gauss;
- bool m_onOff_hists;
- unsigned int m_nPlanes;
- ITbTrackFit* m_trackFit;
- double m_scat2;
- double m_hiterror2;
- double m_theta0;
- int m_direction;
- double sigmax;
- double sigmay;
- double scatRx0[8];
- double scatRy0[8];
- mutable ITbGeometrySvc* m_geomSvc; /// Access geometry service on-demand
- ITbGeometrySvc* geomSvc() const {
- if (!m_geomSvc) m_geomSvc = svc<ITbGeometrySvc>("TbGeometrySvc", true);
- return m_geomSvc;
- }
- // Histograms
- TH1D* m_clustersX;
- TH1D* m_clustersY;
- // straight line fit
- TH1D* m_Sfit_chi2;
- TH1D* m_Sfit_prob;
- TH1D* m_slopesX;
- TH1D* m_slopesY;
- std::vector<TH1D*> m_resSfit_X;
- std::vector<TH1D*> m_resSfit_Y;
- std::vector<TH1D*> m_trueSfit_X;
- std::vector<TH1D*> m_trueSfit_Y;
- std::vector<TH1D*> m_respullSfit_X;
- std::vector<TH1D*> m_respullSfit_Y;
- std::vector<TH1D*> m_trackpullSfit_X;
- std::vector<TH1D*> m_trackpullSfit_Y;
- // Kalman filter
- TH1D* m_Kfit_chi2;
- TH1D* m_Kfit_prob;
- // unbiased residuals
- std::vector<TH1D*> m_XunresKfit;
- std::vector<TH1D*> m_YunresKfit;
- std::vector<TH1D*> m_resKfit_X;
- std::vector<TH1D*> m_resKfit_Y;
- std::vector<TH1D*> m_reserrKfit_X;
- std::vector<TH1D*> m_reserrKfit_Y;
- std::vector<TH1D*> m_respullKfit_X;
- std::vector<TH1D*> m_respullKfit_Y;
- std::vector<TH1D*> m_trueKfit_X;
- std::vector<TH1D*> m_trueKfit_Y;
- std::vector<TH1D*> m_trueerrKfit_X;
- std::vector<TH1D*> m_trueerrKfit_Y;
- std::vector<TH1D*> m_trackpullKfit_X;
- std::vector<TH1D*> m_trackpullKfit_Y;
- // Histograms functions
- void setup_hists();
- void fill_hists(std::vector<LHCb::TbTrack*>&);
- void fill_khists(std::vector<LHCb::TbKalmanTrack*>&);
- // Modifiers and Accessors
- void setNPlanes(unsigned int nplanes) { m_nPlanes = nplanes; }
- int nPlanes() { return m_nPlanes; }
- bool onOff_hists() { return m_onOff_hists; }
- };
- #endif