File indexing completed on 2023-03-17 11:13:44
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 ChannelAssignment() {}
0023 ChannelAssignment(const edm::ParameterSet& iConfig, const tt::Setup* setup);
0024 ~ChannelAssignment() {}
0025
0026 bool channelId(const TTTrackRef& ttTrackRef, int& channelId);
0027
0028 int numChannelsTrack() const { return numChannelsTrack_; }
0029
0030 int numChannelsStub() const { return numChannelsStub_; }
0031
0032 int numSeedTypes() const { return numSeedTypes_; }
0033
0034 bool layerId(int seedType, const TTStubRef& ttStubRef, int& layerId) const;
0035
0036 int numProjectionLayers(int seedType) const { return (int)seedTypesProjectionLayers_.at(seedType).size(); }
0037
0038 int maxNumProjectionLayers() const { return maxNumProjectionLayers_; }
0039
0040 const std::vector<int>& channelEncoding() const { return channelEncoding_; }
0041
0042 int offsetStub(int channelTrack) const;
0043
0044 const std::vector<int>& seedingLayers(int seedType) const { return seedTypesSeedLayers_.at(seedType); }
0045
0046 tt::SensorModule::Type type(const TTStubRef& ttStubRef) const { return setup_->type(ttStubRef); }
0047
0048 int layerId(int seedType, int channel) const { return seedTypesProjectionLayers_.at(seedType).at(channel); }
0049
0050 int channelId(int seedType, int layerId) const;
0051
0052 int numSeedingLayers() const { return numSeedingLayers_; }
0053
0054 private:
0055
0056 const tt::Setup* setup_;
0057
0058 bool useDuplicateRemoval_;
0059
0060 std::vector<double> boundaries_;
0061
0062 std::vector<std::string> seedTypeNames_;
0063
0064 int numSeedTypes_;
0065
0066 int numChannelsTrack_;
0067
0068 int numChannelsStub_;
0069
0070 std::vector<std::vector<int>> seedTypesSeedLayers_;
0071
0072 std::vector<std::vector<int>> seedTypesProjectionLayers_;
0073
0074 int maxNumProjectionLayers_;
0075
0076 std::vector<int> channelEncoding_;
0077
0078 std::vector<int> offsetsStubs_;
0079
0080 int numSeedingLayers_;
0081 };
0082
0083 }
0084
0085 EVENTSETUP_DATA_DEFAULT_RECORD(trklet::ChannelAssignment, trklet::ChannelAssignmentRcd);
0086
0087 #endif