File indexing completed on 2023-03-17 11:12:47
0001 #ifndef OMTFinputMaker_H
0002 #define OMTFinputMaker_H
0003
0004 #include <vector>
0005 #include <cstdint>
0006 #include <memory>
0007
0008 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
0009 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
0010 #include "DataFormats/L1TMuon/interface/RegionalMuonCandFwd.h"
0011 #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
0012 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h"
0013 #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
0014 #include "L1Trigger/L1TMuonOverlap/interface/OMTFinput.h"
0015
0016 class AngleConverter;
0017 class OMTFConfiguration;
0018
0019 class OMTFinputMaker {
0020 public:
0021 OMTFinputMaker(edm::ConsumesCollector &, bool getDuringEvent = true);
0022
0023 ~OMTFinputMaker();
0024
0025 void initialize(const edm::EventSetup &, const OMTFConfiguration *);
0026
0027
0028 OMTFinput buildInputForProcessor(const L1MuDTChambPhContainer *dtPhDigis,
0029 const L1MuDTChambThContainer *dtThDigis,
0030 const CSCCorrelatedLCTDigiCollection *cscDigis,
0031 const RPCDigiCollection *rpcDigis,
0032 unsigned int iProcessor,
0033 l1t::tftype type = l1t::tftype::omtf_pos,
0034 int bx = 0);
0035
0036 void setFlag(int aFlag) { flag = aFlag; }
0037 int getFlag() const { return flag; }
0038
0039 private:
0040
0041
0042
0043 OMTFinput processDT(const L1MuDTChambPhContainer *dtPhDigis,
0044 const L1MuDTChambThContainer *dtThDigis,
0045 unsigned int iProcessor,
0046 l1t::tftype type,
0047 int bx);
0048
0049
0050
0051
0052 OMTFinput processCSC(const CSCCorrelatedLCTDigiCollection *cscDigis,
0053 unsigned int iProcessor,
0054 l1t::tftype type,
0055 int bx);
0056
0057
0058
0059
0060 OMTFinput processRPC(const RPCDigiCollection *rpcDigis, unsigned int iProcessor, l1t::tftype type, int bx);
0061
0062
0063
0064 bool acceptDigi(uint32_t rawId, unsigned int iProcessor, l1t::tftype type);
0065
0066
0067
0068
0069 unsigned int getInputNumber(unsigned int rawId, unsigned int iProcessor, l1t::tftype type);
0070
0071 std::unique_ptr<AngleConverter> myAngleConverter;
0072
0073 const OMTFConfiguration *myOmtfConfig;
0074
0075 int flag;
0076 };
0077
0078 #endif