Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19:38

0001 #ifndef L1Trigger_DemonstratorTools_GTTInterface_h
0002 #define L1Trigger_DemonstratorTools_GTTInterface_h
0003 
0004 #include <cstddef>
0005 
0006 #include "L1Trigger/DemonstratorTools/interface/LinkId.h"
0007 #include "L1Trigger/DemonstratorTools/interface/ChannelSpec.h"
0008 #include "L1Trigger/DemonstratorTools/interface/EventData.h"
0009 #include "L1Trigger/DemonstratorTools/interface/FileFormat.h"
0010 #include "L1Trigger/DemonstratorTools/interface/Frame.h"
0011 
0012 namespace l1t::demo::gtt {
0013   // map of logical channel ID -> [TMUX period, interpacket-gap & offset; channel indices]
0014   typedef std::map<LinkId, std::pair<ChannelSpec, std::vector<size_t>>> ChannelMap_t;
0015 
0016   static constexpr size_t kFramesPerTMUXPeriod = 9;
0017   static constexpr size_t kGapLengthInput = 6;                //defined in terms of nTracks * (3/2) - 3 * 54?
0018   static constexpr size_t kGapLengthOutputToCorrelator = 44;  //can be defined in terms of 54 - nVertices?
0019   static constexpr size_t kGapLengthOutputToGlobalTriggerSums = 3;
0020   static constexpr size_t kGapLengthOutputToGlobalTriggerTaus = 36;
0021   static constexpr size_t kGapLengthOutputToGlobalTriggerMesons = 15;
0022   static constexpr size_t kGapLengthOutputToGlobalTriggerVertices = 6;
0023   static constexpr size_t kTrackTMUX = 18;  //TMUX of the TrackFindingProcessors
0024   static constexpr size_t kGTTBoardTMUX =
0025       6;  //TMUX of the GTT in the current configuration: 6 boards running 3 events in parallel, with a paired board running parallel algorithms
0026   static constexpr size_t kMaxLinesPerFile = 1024;
0027 
0028   static constexpr size_t kVertexChanIndex = 0;
0029 
0030   // TRACKS from TFP
0031   static const std::map<l1t::demo::LinkId, std::vector<size_t>> kChannelIdsInput = {
0032       /* logical channel within time slice -> vector of channel indices (one entry per time slice) */
0033       /* for first link in a time slice, the channel index is 1 for 1st time slice, channel 19 in the 2nd*/
0034       {{"tracks", 0}, {0, 18, 36}},
0035       {{"tracks", 1}, {1, 19, 37}},
0036       {{"tracks", 2}, {2, 20, 38}},
0037       {{"tracks", 3}, {3, 21, 39}},
0038       {{"tracks", 4}, {4, 22, 40}},
0039       {{"tracks", 5}, {5, 23, 41}},
0040       {{"tracks", 6}, {6, 24, 42}},
0041       {{"tracks", 7}, {7, 25, 43}},
0042       {{"tracks", 8}, {8, 26, 44}},
0043       {{"tracks", 9}, {9, 27, 45}},
0044       {{"tracks", 10}, {10, 28, 46}},
0045       {{"tracks", 11}, {11, 29, 47}},
0046       {{"tracks", 12}, {12, 30, 48}},
0047       {{"tracks", 13}, {13, 31, 49}},
0048       {{"tracks", 14}, {14, 32, 50}},
0049       {{"tracks", 15}, {15, 33, 51}},
0050       {{"tracks", 16}, {16, 34, 52}},
0051       {{"tracks", 17}, {17, 35, 53}}};
0052 
0053   static const ChannelMap_t kChannelMapInput = {
0054       /* logical channel within time slice -> {{link TMUX, inter-packet gap}, vector of channel indices} */
0055       {{"tracks", 0}, {{kTrackTMUX, kGapLengthInput}, {0, 18, 36}}},
0056       {{"tracks", 1}, {{kTrackTMUX, kGapLengthInput}, {1, 19, 37}}},
0057       {{"tracks", 2}, {{kTrackTMUX, kGapLengthInput}, {2, 20, 38}}},
0058       {{"tracks", 3}, {{kTrackTMUX, kGapLengthInput}, {3, 21, 39}}},
0059       {{"tracks", 4}, {{kTrackTMUX, kGapLengthInput}, {4, 22, 40}}},
0060       {{"tracks", 5}, {{kTrackTMUX, kGapLengthInput}, {5, 23, 41}}},
0061       {{"tracks", 6}, {{kTrackTMUX, kGapLengthInput}, {6, 24, 42}}},
0062       {{"tracks", 7}, {{kTrackTMUX, kGapLengthInput}, {7, 25, 43}}},
0063       {{"tracks", 8}, {{kTrackTMUX, kGapLengthInput}, {8, 26, 44}}},
0064       {{"tracks", 9}, {{kTrackTMUX, kGapLengthInput}, {9, 27, 45}}},
0065       {{"tracks", 10}, {{kTrackTMUX, kGapLengthInput}, {10, 28, 46}}},
0066       {{"tracks", 11}, {{kTrackTMUX, kGapLengthInput}, {11, 29, 47}}},
0067       {{"tracks", 12}, {{kTrackTMUX, kGapLengthInput}, {12, 30, 48}}},
0068       {{"tracks", 13}, {{kTrackTMUX, kGapLengthInput}, {13, 31, 49}}},
0069       {{"tracks", 14}, {{kTrackTMUX, kGapLengthInput}, {14, 32, 50}}},
0070       {{"tracks", 15}, {{kTrackTMUX, kGapLengthInput}, {15, 33, 51}}},
0071       {{"tracks", 16}, {{kTrackTMUX, kGapLengthInput}, {16, 34, 52}}},
0072       {{"tracks", 17}, {{kTrackTMUX, kGapLengthInput}, {17, 35, 53}}}};
0073 
0074   static const std::map<std::string, l1t::demo::ChannelSpec> kChannelSpecsInput = {
0075       /* interface name -> {link TMUX, inter-packet gap} */
0076       {"tracks", {kTrackTMUX, kGapLengthInput}}};
0077 
0078   //OUTPUTS to Correlator
0079   static const ChannelMap_t kChannelMapOutputToCorrelator = {
0080       /* logical channel within time slice -> {{link TMUX, inter-packet gap}, vector of channel indices} */
0081       {{"vertices", 0}, {{kGTTBoardTMUX, kGapLengthOutputToCorrelator}, {0}}}};
0082 
0083   static const std::map<l1t::demo::LinkId, std::vector<size_t>> kChannelIdsOutputToCorrelator = {
0084       /* logical channel within time slice -> vector of channel indices */
0085       {{"vertices", 0}, {0}}};
0086 
0087   static const std::map<std::string, l1t::demo::ChannelSpec> kChannelSpecsOutputToCorrelator = {
0088       /* interface name -> {link TMUX, inter-packet gap} */
0089       {"vertices", {kGTTBoardTMUX, kGapLengthOutputToCorrelator}}};
0090 
0091   //OUTPUTS to Global Trigger
0092   static const std::map<l1t::demo::LinkId, std::vector<size_t>> kChannelIdsOutputToGlobalTrigger = {
0093       /* logical channel within time slice -> vector of channel indices (one entry per time slice) */
0094       {{"sums", 0}, {0}},
0095       {{"taus", 1}, {1}},
0096       {{"mesons", 2}, {2}},
0097       {{"vertices", 3}, {3}}};
0098 
0099   static const std::map<std::string, l1t::demo::ChannelSpec> kChannelSpecsOutputToGlobalTrigger = {
0100       /* interface name -> {link TMUX, inter-packet gap} */
0101       {"sums", {kGTTBoardTMUX, kGapLengthOutputToGlobalTriggerSums}},
0102       {"taus", {kGTTBoardTMUX, kGapLengthOutputToGlobalTriggerTaus}},
0103       {"mesons", {kGTTBoardTMUX, kGapLengthOutputToGlobalTriggerMesons}},
0104       {"vertices", {kGTTBoardTMUX, kGapLengthOutputToGlobalTriggerVertices}}};
0105 
0106 }  // namespace l1t::demo::gtt
0107 
0108 #endif