File indexing completed on 2025-06-03 00:12:12
0001 #ifndef L1Trigger_TrackerDTC_DTC_h
0002 #define L1Trigger_TrackerDTC_DTC_h
0003
0004 #include "DataFormats/L1TrackTrigger/interface/TTDTC.h"
0005 #include "L1Trigger/TrackTrigger/interface/Setup.h"
0006 #include "L1Trigger/TrackerDTC/interface/LayerEncoding.h"
0007 #include "L1Trigger/TrackerDTC/interface/Stub.h"
0008 #include "L1Trigger/TrackerTFP/interface/DataFormats.h"
0009
0010 #include <vector>
0011 #include <deque>
0012
0013 namespace trackerDTC {
0014
0015
0016
0017
0018
0019
0020 class DTC {
0021 private:
0022 typedef std::deque<Stub*> Stubs;
0023 typedef std::vector<Stubs> Stubss;
0024 typedef std::vector<Stubss> Stubsss;
0025
0026 public:
0027 DTC(const tt::Setup* setup,
0028 const trackerTFP::DataFormats* dataFormats,
0029 const LayerEncoding* layerEncoding,
0030 int dtcId,
0031 const std::vector<std::vector<TTStubRef>>& stubsDTC);
0032 ~DTC() = default;
0033
0034 void produce(TTDTC& accepted, TTDTC& lost);
0035
0036 private:
0037
0038 void merge(Stubss& inputs, Stubs& output, Stubs& lost);
0039
0040 void split(Stubss& inputs, Stubss& outputs);
0041
0042 void produce(const Stubss& stubss, TTDTC& product);
0043
0044 Stub* pop_front(Stubs& stubs);
0045
0046 const tt::Setup* setup_;
0047
0048 const trackerTFP::DataFormats* dataFormats_;
0049
0050 int region_;
0051
0052 int board_;
0053
0054 std::vector<tt::SensorModule*> modules_;
0055
0056 std::vector<Stub> stubs_;
0057
0058 Stubsss input_;
0059
0060 Stubss lost_;
0061 };
0062
0063 }
0064
0065 #endif