File indexing completed on 2024-04-06 12:21:44
0001 #ifndef L1Trigger_TrackerTFP_ZHoughTransform_h
0002 #define L1Trigger_TrackerTFP_ZHoughTransform_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 <deque>
0010
0011 namespace trackerTFP {
0012
0013
0014 class ZHoughTransform {
0015 public:
0016 ZHoughTransform(const edm::ParameterSet& iConfig,
0017 const tt::Setup* setup,
0018 const DataFormats* dataFormats,
0019 int region);
0020 ~ZHoughTransform() {}
0021
0022
0023 void consume(const tt::StreamsStub& streams);
0024
0025 void produce(tt::StreamsStub& accepted, tt::StreamsStub& lost);
0026
0027 private:
0028
0029 template <class T>
0030 T* pop_front(std::deque<T*>& ts) const;
0031
0032 void fill(int channel, const std::deque<StubZHT*>& input, std::vector<std::deque<StubZHT*>>& output);
0033
0034 void slb(std::vector<std::deque<StubZHT*>>& inputs, std::deque<StubZHT*>& accepted, tt::StreamStub& lost) const;
0035
0036 void merge(std::deque<StubZHT*>& stubs, tt::StreamStub& stream) const;
0037
0038
0039 bool enableTruncation_;
0040
0041 const tt::Setup* setup_;
0042
0043 const DataFormats* dataFormats_;
0044
0045 int region_;
0046
0047 std::vector<StubZHT> stubsZHT_;
0048
0049 std::vector<std::vector<StubZHT*>> input_;
0050
0051 int stage_;
0052 };
0053
0054 }
0055
0056 #endif