File indexing completed on 2024-11-15 23:40:44
0001
0002 #ifndef L1Trigger_TrackFindingTracklet_interface_VMRouterCM_h
0003 #define L1Trigger_TrackFindingTracklet_interface_VMRouterCM_h
0004
0005 #include "L1Trigger/TrackFindingTracklet/interface/ProcessBase.h"
0006 #include "L1Trigger/TrackFindingTracklet/interface/FPGAWord.h"
0007 #include "L1Trigger/TrackFindingTracklet/interface/TrackletLUT.h"
0008
0009 #include <string>
0010 #include <vector>
0011 #include <utility>
0012
0013 namespace trklet {
0014
0015 class Settings;
0016 class Globals;
0017 class MemoryBase;
0018 class InputLinkMemory;
0019 class AllStubsMemory;
0020 class AllInnerStubsMemory;
0021 class VMStubsMEMemory;
0022 class VMStubsTEMemory;
0023
0024 struct VMStubsTEPHICM {
0025 VMStubsTEPHICM(unsigned int seednumber_,
0026 unsigned int stubposition_,
0027 const std::vector<std::vector<VMStubsTEMemory*> >& vmstubmem_)
0028 : seednumber(seednumber_), stubposition(stubposition_), vmstubmem(vmstubmem_) {};
0029
0030 unsigned int seednumber;
0031 unsigned int stubposition;
0032
0033
0034
0035 std::vector<std::vector<VMStubsTEMemory*> >
0036 vmstubmem;
0037 };
0038
0039 class VMRouterCM : public ProcessBase {
0040 public:
0041 VMRouterCM(std::string name, Settings const& settings, Globals* global);
0042
0043 ~VMRouterCM() override = default;
0044
0045 void addOutput(MemoryBase* memory, std::string output) override;
0046 void addInput(MemoryBase* memory, std::string input) override;
0047
0048 void execute(unsigned int iSector);
0049
0050 private:
0051
0052 unsigned int layerdisk_;
0053
0054
0055
0056 unsigned int overlapbits_;
0057 unsigned int nextrabits_;
0058
0059 int nbitszfinebintable_;
0060 int nbitsrfinebintable_;
0061
0062 unsigned int nvmmebins_;
0063
0064 TrackletLUT meTable_;
0065 TrackletLUT diskTable_;
0066
0067
0068
0069 TrackletLUT meTableOld_;
0070 TrackletLUT diskTableOld_;
0071 TrackletLUT innerTable_;
0072 TrackletLUT innerOverlapTable_;
0073 TrackletLUT innerThirdTable_;
0074
0075
0076 std::vector<InputLinkMemory*> stubinputs_;
0077
0078
0079 std::vector<AllStubsMemory*> allstubs_;
0080 std::vector<std::pair<char, AllInnerStubsMemory*> > allinnerstubs_;
0081
0082
0083 std::vector<VMStubsMEMemory*> vmstubsMEPHI_;
0084
0085
0086 std::vector<VMStubsTEPHICM> vmstubsTEPHI_;
0087 };
0088 };
0089 #endif