Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 13:30:41

0001 #ifndef L1Trigger_TrackFindingTMTT_KFParamsComb_h
0002 #define L1Trigger_TrackFindingTMTT_KFParamsComb_h
0003 
0004 #include "L1Trigger/TrackFindingTMTT/interface/KFbase.h"
0005 #include "L1Trigger/TrackFindingTMTT/interface/L1track3D.h"
0006 
0007 ///=== This is the Kalman Combinatorial Filter for 4 & 5 helix parameters track fit algorithm.
0008 ///=== All variable names & equations come from Fruhwirth KF paper
0009 ///=== http://dx.doi.org/10.1016/0168-9002%2887%2990887-4
0010 
0011 namespace tmtt {
0012 
0013   class KFParamsComb : public KFbase {
0014   public:
0015     KFParamsComb(const Settings* settings, const uint nHelixPar, const std::string& fitterName);
0016 
0017     ~KFParamsComb() override = default;
0018 
0019   protected:
0020     //--- Input data
0021 
0022     // Seed track helix params & covariance matrix
0023     TVectorD seedX(const L1track3D& l1track3D) const override;
0024     TMatrixD seedC(const L1track3D& l1track3D) const override;
0025 
0026     // Stub coordinate measurements & resolution
0027     TVectorD vectorM(const Stub* stub) const override;
0028     TMatrixD matrixV(const Stub* stub, const KalmanState* state) const override;
0029 
0030     //--- KF maths matrix multiplications
0031 
0032     // Derivate of helix intercept point w.r.t. helix params.
0033     TMatrixD matrixH(const Stub* stub) const override;
0034     // Kalman helix ref point extrapolation matrix
0035     TMatrixD matrixF(const Stub* stub, const KalmanState* state) const override;
0036 
0037     // Convert to physical helix params instead of local ones used by KF
0038     TVectorD trackParams(const KalmanState* state) const override;
0039     TVectorD trackParams_BeamConstr(const KalmanState* state, double& chi2rphi) const override;
0040 
0041     // Does helix state pass cuts?
0042     bool isGoodState(const KalmanState& state) const override;
0043 
0044   protected:
0045     std::vector<double> kfLayerVsPtToler_;
0046     std::vector<double> kfLayerVsD0Cut5_;
0047     std::vector<double> kfLayerVsZ0Cut5_;
0048     std::vector<double> kfLayerVsZ0Cut4_;
0049     std::vector<double> kfLayerVsChiSq5_;
0050     std::vector<double> kfLayerVsChiSq4_;
0051   };
0052 
0053 }  // namespace tmtt
0054 
0055 #endif