File indexing completed on 2025-06-03 00:12:20
0001 #ifndef L1Trigger_TrackFindingTracklet_ChannelAssignment_h
0002 #define L1Trigger_TrackFindingTracklet_ChannelAssignment_h
0003
0004 #include "FWCore/Framework/interface/data_default_record_trait.h"
0005 #include "L1Trigger/TrackFindingTracklet/interface/ChannelAssignmentRcd.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0007 #include "DataFormats/L1TrackTrigger/interface/TTTypes.h"
0008 #include "L1Trigger/TrackTrigger/interface/Setup.h"
0009
0010 #include <vector>
0011
0012 namespace trklet {
0013
0014
0015
0016
0017
0018
0019
0020 class ChannelAssignment {
0021 public:
0022 struct Config {
0023 std::vector<std::string> tmMuxOrder_;
0024 int tmNumLayers_;
0025 int tmWidthStubId_;
0026 int tmWidthCot_;
0027 int numComparisonModules_;
0028 int minIdenticalStubs_;
0029 std::vector<std::string> seedTypeNames_;
0030 int numChannelsStub_;
0031 std::vector<std::vector<int>> seedTypesSeedLayers_;
0032 std::vector<std::vector<int>> seedTypesProjectionLayers_;
0033 int maxNumProjectionLayers_;
0034 std::vector<int> channelEncoding_;
0035 std::vector<int> offsetsStubs_;
0036 int numSeedingLayers_;
0037 std::vector<int> tmMuxOrderInt_;
0038 };
0039 ChannelAssignment() {}
0040 ChannelAssignment(const Config& iConfig, const tt::Setup* setup);
0041 ~ChannelAssignment() = default;
0042
0043 const tt::Setup* setup() const { return setup_; }
0044
0045 int channelId(const TTTrackRef& ttTrackRef) const;
0046
0047 int numChannelsTrack() const { return numChannelsTrack_; }
0048
0049 int numChannelsStub() const { return numChannelsStub_; }
0050
0051 const std::vector<int>& tmMuxOrder() const { return tmMuxOrderInt_; }
0052
0053 int tmNumLayers() const { return tmNumLayers_; }
0054
0055 int tmWidthStubId() const { return tmWidthStubId_; }
0056
0057 int tmWidthCot() const { return tmWidthCot_; }
0058
0059 int numComparisonModules() const { return numComparisonModules_; }
0060
0061 int minIdenticalStubs() const { return minIdenticalStubs_; }
0062
0063 int numSeedTypes() const { return numSeedTypes_; }
0064
0065 bool layerId(int seedType, const TTStubRef& ttStubRef, int& layerId) const;
0066
0067 int numProjectionLayers(int seedType) const { return (int)seedTypesProjectionLayers_.at(seedType).size(); }
0068
0069 int maxNumProjectionLayers() const { return maxNumProjectionLayers_; }
0070
0071 const std::vector<int>& channelEncoding() const { return channelEncoding_; }
0072
0073 int offsetStub(int channelTrack) const;
0074
0075 const std::vector<int>& seedingLayers(int seedType) const { return seedTypesSeedLayers_.at(seedType); }
0076
0077 tt::SensorModule::Type type(const TTStubRef& ttStubRef) const { return setup_->type(ttStubRef); }
0078
0079 int layerId(int seedType, int channel) const;
0080
0081 int channelId(int seedType, int layerId) const;
0082
0083 int numSeedingLayers() const { return numSeedingLayers_; }
0084
0085 private:
0086
0087 const tt::Setup* setup_;
0088
0089 std::vector<std::string> tmMuxOrder_;
0090
0091 int tmNumLayers_;
0092
0093 int tmWidthStubId_;
0094
0095 int tmWidthCot_;
0096
0097 int numComparisonModules_;
0098
0099 int minIdenticalStubs_;
0100
0101 std::vector<std::string> seedTypeNames_;
0102
0103 int numSeedTypes_;
0104
0105 int numChannelsTrack_;
0106
0107 int numChannelsStub_;
0108
0109 std::vector<std::vector<int>> seedTypesSeedLayers_;
0110
0111 std::vector<std::vector<int>> seedTypesProjectionLayers_;
0112
0113 int maxNumProjectionLayers_;
0114
0115 std::vector<int> channelEncoding_;
0116
0117 std::vector<int> offsetsStubs_;
0118
0119 int numSeedingLayers_;
0120
0121 std::vector<int> tmMuxOrderInt_;
0122 };
0123
0124 }
0125
0126 EVENTSETUP_DATA_DEFAULT_RECORD(trklet::ChannelAssignment, trklet::ChannelAssignmentRcd);
0127
0128 #endif