File indexing completed on 2024-04-06 12:21:44
0001 #ifndef L1Trigger_TrackerTFP_State_h
0002 #define L1Trigger_TrackerTFP_State_h
0003
0004 #include "L1Trigger/TrackTrigger/interface/Setup.h"
0005 #include "L1Trigger/TrackerTFP/interface/DataFormats.h"
0006
0007 #include <vector>
0008 #include <numeric>
0009
0010 namespace trackerTFP {
0011
0012
0013 class State {
0014 public:
0015
0016 State(State* state);
0017
0018 State(const DataFormats* dataFormats, TrackKFin* track, int trackId);
0019
0020 State(State* state, StubKFin* stub);
0021
0022 State(State* state, const std::vector<double>& doubles);
0023 ~State() {}
0024
0025
0026 void finish();
0027
0028 int numSkippedLayers() const { return numSkippedLayers_; }
0029
0030 int numConsistentLayers() const { return numConsistentLayers_; }
0031
0032 TrackKFin* track() const { return track_; }
0033
0034 State* parent() const { return parent_; }
0035
0036 StubKFin* stub() const { return stub_; }
0037
0038 const TTBV& hitPattern() const { return hitPattern_; }
0039
0040 int trackId() const { return trackId_; }
0041
0042 TTBV maybePattern() const { return track_->maybePattern(); }
0043
0044 const std::vector<int>& layerMap() const { return layerMap_; }
0045
0046 int layer() const { return stub_->layer(); }
0047
0048 double x0() const { return x0_; }
0049
0050 double x1() const { return x1_; }
0051
0052 double x2() const { return x2_; }
0053
0054 double x3() const { return x3_; }
0055
0056 double C00() const { return C00_; }
0057
0058 double C01() const { return C01_; }
0059
0060 double C11() const { return C11_; }
0061
0062 double C22() const { return C22_; }
0063
0064 double C23() const { return C23_; }
0065
0066 double C33() const { return C33_; }
0067
0068 double H00() const { return stub_->r(); }
0069
0070 double H12() const { return stub_->r() + dataFormats_->chosenRofPhi() - setup_->chosenRofZ(); }
0071
0072 double m0() const { return stub_->phi(); }
0073
0074 double m1() const { return stub_->z(); }
0075
0076 double dPhi() const { return stub_->dPhi(); }
0077
0078 double dZ() const { return stub_->dZ(); }
0079
0080 double v0() const { return pow(stub_->dPhi(), 2); }
0081
0082 double v1() const { return pow(stub_->dZ(), 2); }
0083
0084 tt::FrameTrack frame() const { return TrackKF(*track_, x1_, x0_, x3_, x2_).frame(); }
0085
0086 void fill(std::vector<StubKF>& stubs) const;
0087
0088 private:
0089
0090 const DataFormats* dataFormats_;
0091
0092 const tt::Setup* setup_;
0093
0094 TrackKFin* track_;
0095
0096 int trackId_;
0097
0098 State* parent_;
0099
0100 StubKFin* stub_;
0101
0102 std::vector<int> layerMap_;
0103
0104 TTBV hitPattern_;
0105
0106 double x0_;
0107
0108 double x1_;
0109
0110 double x2_;
0111
0112 double x3_;
0113
0114
0115
0116 double C00_;
0117 double C01_;
0118 double C11_;
0119 double C22_;
0120 double C23_;
0121 double C33_;
0122
0123
0124 int numSkippedLayers_;
0125
0126 int numConsistentLayers_;
0127 };
0128
0129 }
0130
0131 #endif