File indexing completed on 2024-04-06 12:21:44
0001 #ifndef L1Trigger_TrackerTFP_MiniHoughTransform_h
0002 #define L1Trigger_TrackerTFP_MiniHoughTransform_h
0003
0004 #include "L1Trigger/TrackTrigger/interface/Setup.h"
0005 #include "L1Trigger/TrackerTFP/interface/DataFormats.h"
0006 #include "DataFormats/L1TrackTrigger/interface/TTTypes.h"
0007
0008 #include <vector>
0009 #include <set>
0010 #include <deque>
0011
0012 namespace trackerTFP {
0013
0014
0015 class MiniHoughTransform {
0016 public:
0017 MiniHoughTransform(const edm::ParameterSet& iConfig,
0018 const tt::Setup* setup,
0019 const DataFormats* dataFormats,
0020 int region);
0021 ~MiniHoughTransform() {}
0022
0023
0024 void consume(const tt::StreamsStub& streams);
0025
0026 void produce(tt::StreamsStub& accepted, tt::StreamsStub& lost);
0027
0028 private:
0029
0030 template <class T>
0031 T* pop_front(std::deque<T*>& ts) const;
0032
0033 void fill(int channel, const std::vector<StubHT*>& input, std::vector<std::deque<StubMHT*>>& output);
0034
0035 void slb(std::vector<std::deque<StubMHT*>>& inputs, std::vector<StubMHT*>& accepted, tt::StreamStub& lost) const;
0036
0037 void dlb(std::vector<std::vector<StubMHT*>>& streams) const;
0038
0039
0040 bool enableTruncation_;
0041
0042 const tt::Setup* setup_;
0043
0044 const DataFormats* dataFormats_;
0045
0046 DataFormat inv2R_;
0047
0048 DataFormat phiT_;
0049
0050 int region_;
0051
0052 int numBinsInv2R_;
0053
0054 int numCells_;
0055
0056 int numNodes_;
0057
0058 int numChannel_;
0059
0060 std::vector<StubHT> stubsHT_;
0061
0062 std::vector<StubMHT> stubsMHT_;
0063
0064 std::vector<std::vector<StubHT*>> input_;
0065 };
0066
0067 }
0068
0069 #endif