File indexing completed on 2024-04-06 12:21:48
0001 #ifndef L1Trigger_TrackFindingTMTT_KalmanState_h
0002 #define L1Trigger_TrackFindingTMTT_KalmanState_h
0003
0004 #include "L1Trigger/TrackFindingTMTT/interface/Stub.h"
0005 #include "L1Trigger/TrackFindingTMTT/interface/KFbase.h"
0006 #include <TMatrixD.h>
0007 #include <TVectorD.h>
0008
0009 #include <map>
0010
0011
0012
0013
0014
0015 namespace tmtt {
0016
0017 class KFbase;
0018 class KalmanState;
0019 class Stub;
0020 class Settings;
0021
0022 class KalmanState {
0023 public:
0024 KalmanState(const Settings *settings,
0025 const L1track3D &candidate,
0026 unsigned nSkipped,
0027 int kLayer,
0028 const KalmanState *last_state,
0029 const TVectorD &vecX,
0030 const TMatrixD &matC,
0031 const TMatrixD &matK,
0032 const TMatrixD &matV,
0033 Stub *stub,
0034 double chi2rphi,
0035 double chi2rz);
0036
0037 const Settings *settings() const { return settings_; }
0038
0039 unsigned nextLayer() const { return (1 + kLayer_); }
0040
0041 int layer() const { return kLayer_; }
0042 bool barrel() const { return barrel_; }
0043 unsigned nSkippedLayers() const { return nSkipped_; }
0044
0045 double r() const { return r_; }
0046 double z() const { return z_; }
0047 const KalmanState *last_state() const { return last_state_; }
0048
0049 const TVectorD &vectorX() const { return vecX_; }
0050
0051 const TMatrixD &matrixC() const { return matC_; }
0052
0053 const TMatrixD &matrixK() const { return matK_; }
0054
0055 const TMatrixD &matrixV() const { return matV_; }
0056
0057 Stub *stub() const { return stub_; }
0058
0059 const L1track3D &candidate() const { return l1track3D_; }
0060
0061 double chi2() const { return chi2rphi_ + chi2rz_; }
0062 double chi2scaled() const { return chi2rphi_ / kalmanChi2RphiScale_ + chi2rz_; }
0063 double chi2rphi() const { return chi2rphi_; }
0064 double chi2rz() const { return chi2rz_; }
0065 unsigned nStubLayers() const { return n_stubs_; }
0066 unsigned int hitPattern() const { return hitPattern_; }
0067
0068 bool good(const TP *tp) const;
0069 double reducedChi2() const;
0070 const KalmanState *last_update_state() const;
0071 std::vector<Stub *> stubs() const;
0072
0073 void setChi2(double chi2rphi, double chi2rz) {
0074 chi2rphi_ = chi2rphi;
0075 chi2rz_ = chi2rz;
0076 }
0077
0078 private:
0079 const Settings *settings_;
0080 int kLayer_;
0081 double r_;
0082 double z_;
0083 const KalmanState *last_state_;
0084 TVectorD vecX_;
0085 TMatrixD matC_;
0086 TMatrixD matK_;
0087 TMatrixD matV_;
0088 Stub *stub_;
0089 double chi2rphi_;
0090 double chi2rz_;
0091 unsigned int kalmanChi2RphiScale_;
0092 unsigned n_stubs_;
0093 bool barrel_;
0094 unsigned nSkipped_;
0095 L1track3D l1track3D_;
0096 unsigned int hitPattern_;
0097 };
0098
0099 }
0100
0101 #endif