1 #ifndef L1Trigger_TrackFindingTMTT_KFbase_h 2 #define L1Trigger_TrackFindingTMTT_KFbase_h 52 static const unsigned int nEta_ = 16;
62 {{7, 7}, {0, 7}, {1, 7}, {5, 7}, {4, 7}, {3, 7}, {7, 7}, {2, 7}},
63 {{7, 7}, {0, 7}, {1, 7}, {5, 7}, {4, 7}, {3, 7}, {7, 7}, {2, 7}},
64 {{7, 7}, {0, 7}, {1, 7}, {5, 7}, {4, 7}, {3, 7}, {7, 7}, {2, 7}},
65 {{7, 7}, {0, 7}, {1, 7}, {5, 7}, {4, 7}, {3, 7}, {7, 7}, {2, 7}},
66 {{7, 7}, {0, 7}, {1, 7}, {5, 4}, {4, 5}, {3, 6}, {7, 7}, {2, 7}},
67 {{7, 7}, {0, 7}, {1, 7}, {7, 3}, {7, 4}, {2, 5}, {7, 6}, {2, 6}},
68 {{7, 7}, {0, 7}, {1, 7}, {7, 2}, {7, 3}, {7, 4}, {7, 5}, {7, 6}},
69 {{7, 7}, {0, 7}, {7, 7}, {7, 1}, {7, 2}, {7, 3}, {7, 4}, {7, 5}},
100 virtual TVectorD
vectorM(
const Stub *stub)
const = 0;
106 virtual TMatrixD
matrixH(
const Stub *stub)
const = 0;
110 TMatrixD
matrixHCHt(
const TMatrixD &
h,
const TMatrixD &
c)
const;
112 TMatrixD
matrixRinv(
const TMatrixD &matH,
const TMatrixD &matCref,
const TMatrixD &matV)
const;
114 TMatrixD
getKalmanGainMatrix(
const TMatrixD &
h,
const TMatrixD &pxcov,
const TMatrixD &covRinv)
const;
117 virtual TVectorD
residual(
const Stub *stub,
const TVectorD &x,
double candQoverPt)
const;
121 const TMatrixD &pxcov,
124 const TVectorD &
delta,
126 TMatrixD &new_xcov)
const;
129 const TMatrixD &covRinv,
130 const TVectorD &
delta,
132 double &chi2rz)
const;
152 unsigned int iEtaReg,
unsigned int layerIDreduced,
bool barrel,
float r,
float z)
const;
159 float approxB(
float z,
float r)
const;
162 virtual bool isHLS() {
return false; };
static constexpr std::pair< unsigned, unsigned > layerMap_[nEta_/2][nGPlayer_+1]
unsigned int numPhiNonants() const
KFbase & operator=(const KFbase &kf)=delete
void printStubLayers(const std::vector< Stub *> &stubs, unsigned int iEtaReg) const
void adjustState(const TMatrixD &K, const TMatrixD &pxcov, const TVectorD &x, const TMatrixD &h, const TVectorD &delta, TVectorD &new_x, TMatrixD &new_xcov) const
void printTP(const TP *tp) const
virtual unsigned int kalmanLayer(unsigned int iEtaReg, unsigned int layerIDreduced, bool barrel, float r, float z) const
void printStubs(const std::vector< Stub *> &stubs) const
L1fittedTrack fit(const L1track3D &l1track3D) override
std::set< unsigned > kalmanDeadLayers(bool &remove2PSCut) const
float approxB(float z, float r) const
static const unsigned int nEta_
virtual TVectorD trackParams(const KalmanState *state) const =0
const KalmanState * mkState(const L1track3D &candidate, unsigned nSkipped, unsigned layer, const KalmanState *last_state, const TVectorD &x, const TMatrixD &pxx, const TMatrixD &K, const TMatrixD &dcov, Stub *stub, double chi2rphi, double chi2rz)
virtual const KalmanState * kalmanUpdate(unsigned nSkipped, unsigned layer, Stub *stub, const KalmanState *state, const TP *tp)
static const unsigned int nKFlayer_
virtual bool kalmanAmbiguousLayer(unsigned int iEtaReg, unsigned int kfLayer)
virtual TMatrixD matrixV(const Stub *stub, const KalmanState *state) const =0
static constexpr unsigned int invalidKFlayer_
virtual TVectorD seedX(const L1track3D &l1track3D) const =0
const KalmanState * doKF(const L1track3D &l1track3D, const std::vector< Stub *> &stubs, const TP *tpa)
const Settings * settings_
void printStub(const Stub *stub) const
virtual TMatrixD seedC(const L1track3D &l1track3D) const =0
virtual TMatrixD matrixH(const Stub *stub) const =0
TMatrixD matrixHCHt(const TMatrixD &h, const TMatrixD &c) const
virtual TVectorD trackParams_BeamConstr(const KalmanState *state, double &chi2rphi_bcon) const =0
virtual TVectorD residual(const Stub *stub, const TVectorD &x, double candQoverPt) const
TMatrixD matrixRinv(const TMatrixD &matH, const TMatrixD &matCref, const TMatrixD &matV) const
KFbase(const Settings *settings, const uint nHelixPar, const std::string &fitterName="", const uint nMeas=2)
TMatrixD getKalmanGainMatrix(const TMatrixD &h, const TMatrixD &pxcov, const TMatrixD &covRinv) const
=== This is the base class for the linearised chi-squared track fit algorithms.
virtual bool isGoodState(const KalmanState &state) const =0
unsigned int numUpdateCalls_
virtual TVectorD vectorM(const Stub *stub) const =0
static const unsigned int nGPlayer_
std::vector< std::unique_ptr< const KalmanState > > listAllStates_
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
unsigned int numPhiSectors() const
virtual TMatrixD matrixF(const Stub *stub=nullptr, const KalmanState *state=nullptr) const =0
virtual void adjustChi2(const KalmanState *state, const TMatrixD &covRinv, const TVectorD &delta, double &chi2rphi, double &chi2rz) const