File indexing completed on 2024-11-15 23:40:40
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #ifndef L1MUBM_TRACK_FINDER_H
0022 #define L1MUBM_TRACK_FINDER_H
0023
0024
0025
0026
0027
0028 #include <vector>
0029 #include <iostream>
0030 #include <memory>
0031
0032
0033
0034
0035
0036 #include <map>
0037
0038
0039
0040
0041
0042 #include "FWCore/Framework/interface/Event.h"
0043 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0044 #include "FWCore/Framework/interface/ConsumesCollector.h"
0045 #include "FWCore/Utilities/interface/EDGetToken.h"
0046 #include "FWCore/Utilities/interface/ESGetToken.h"
0047 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
0048 #include "DataFormats/L1TMuon/interface/RegionalMuonCand.h"
0049 #include "DataFormats/L1TMuon/interface/L1MuBMTrack.h"
0050 #include "DataFormats/L1TMuon/interface/L1MuBMTrackSegEta.h"
0051 #include "DataFormats/L1TMuon/interface/L1MuBMTrackSegPhi.h"
0052 #include "CondFormats/L1TObjects/interface/L1TMuonBarrelParams.h"
0053 #include "CondFormats/DataRecord/interface/L1TMuonBarrelParamsRcd.h"
0054 #include "L1Trigger/L1TMuonBarrel/interface/L1MuBMTFConfig.h"
0055 #include "L1Trigger/L1TMuonBarrel/interface/L1MuBMSecProcMap.h"
0056 #include "L1Trigger/L1TMuonBarrel/interface/L1MuBMMuonSorter.h"
0057
0058 class L1MuBMSecProcId;
0059 class L1MuBMSectorProcessor;
0060 class L1MuBMEtaProcessor;
0061 class L1MuBMWedgeSorter;
0062 class L1MuRegionalCand;
0063 class L1MuDTTrack;
0064 class L1MuDTTrackSegPhi;
0065 class L1MuDTTrackSegEta;
0066
0067
0068
0069
0070
0071 class L1MuBMTrackFinder {
0072 public:
0073
0074 typedef l1t::RegionalMuonCandBxCollection::const_iterator TFtracks_const_iter;
0075 typedef l1t::RegionalMuonCandBxCollection::iterator TFtracks_iter;
0076
0077
0078 L1MuBMTrackFinder(const edm::ParameterSet& ps, edm::ConsumesCollector&& iC);
0079
0080
0081 virtual ~L1MuBMTrackFinder();
0082
0083
0084 void setup(edm::ConsumesCollector&&);
0085
0086
0087 void run(const edm::Event& e, const edm::EventSetup& c);
0088
0089
0090 void reset();
0091
0092 inline int setAdd(int ust, int rel_add);
0093
0094
0095 const L1MuBMSectorProcessor* sp(const L1MuBMSecProcId&) const;
0096 L1MuBMSectorProcessor* sp(const L1MuBMSecProcId&);
0097
0098
0099 inline const L1MuBMEtaProcessor* ep(int id) const { return m_epvec[id].get(); }
0100
0101
0102 inline const L1MuBMWedgeSorter* ws(int id) const { return m_wsvec[id].get(); }
0103
0104
0105 inline const L1MuBMMuonSorter& ms() const { return m_ms; }
0106
0107
0108 int numberOfTracks();
0109
0110 TFtracks_const_iter begin(int bx);
0111
0112 TFtracks_const_iter end(int bx);
0113
0114 void clear();
0115
0116
0117 int numberOfTracks(int bx);
0118
0119
0120 const L1MuBMTFConfig& config() const { return m_config; }
0121
0122 l1t::RegionalMuonCandBxCollection& getcache() { return _cache; }
0123 l1t::RegionalMuonCandBxCollection& getcache0() { return _cache0; }
0124 L1MuBMTrackCollection& getcache1() { return _cache1; }
0125 L1MuBMTrackSegPhiCollection& getcache2() { return _cache2; }
0126 L1MuBMTrackSegEtaCollection& getcache3() { return _cache3; }
0127
0128 private:
0129
0130 virtual void reconstruct(const edm::Event& e, const edm::EventSetup& c) {
0131 reset();
0132 run(e, c);
0133 }
0134
0135 private:
0136 l1t::RegionalMuonCandBxCollection _cache0;
0137 l1t::RegionalMuonCandBxCollection _cache;
0138 L1MuBMTrackCollection _cache1;
0139 L1MuBMTrackSegPhiCollection _cache2;
0140 L1MuBMTrackSegEtaCollection _cache3;
0141
0142 L1MuBMSecProcMap m_spmap;
0143 std::vector<std::unique_ptr<L1MuBMEtaProcessor>> m_epvec;
0144 std::vector<std::unique_ptr<L1MuBMWedgeSorter>> m_wsvec;
0145 L1MuBMMuonSorter m_ms;
0146
0147 L1MuBMTFConfig m_config;
0148
0149 unsigned long long m_recordCache = 0;
0150 edm::EDGetTokenT<L1MuDTChambPhContainer> m_DTDigiToken;
0151 edm::ESGetToken<L1TMuonBarrelParams, L1TMuonBarrelParamsRcd> m_mbParamsToken;
0152 };
0153
0154 #endif