File indexing completed on 2024-04-06 12:10:51
0001 #ifndef GMTCollections_h
0002 #define GMTCollections_h
0003
0004 #include "DataFormats/L1TMuon/interface/RegionalMuonCand.h"
0005 #include "DataFormats/L1Trigger/interface/Muon.h"
0006
0007 #include "DataFormats/L1TMuon/interface/RegionalMuonShower.h"
0008 #include "DataFormats/L1Trigger/interface/MuonShower.h"
0009
0010 #include "L1TObjectCollections.h"
0011
0012 #include <array>
0013
0014 namespace l1t {
0015 namespace stage2 {
0016 class GMTCollections : public L1TObjectCollections {
0017 public:
0018
0019
0020
0021
0022 GMTCollections(
0023 edm::Event& e, const int iFirstBx = -2, const int iLastBx = 2, const int oFirstBx = -2, const int oLastBx = 2)
0024 : L1TObjectCollections(e),
0025 regionalMuonCandsBMTF_(std::make_unique<RegionalMuonCandBxCollection>(0, iFirstBx, iLastBx)),
0026 regionalMuonCandsOMTF_(std::make_unique<RegionalMuonCandBxCollection>(0, iFirstBx, iLastBx)),
0027 regionalMuonCandsEMTF_(std::make_unique<RegionalMuonCandBxCollection>(0, iFirstBx, iLastBx)),
0028 muons_(),
0029 imdMuonsBMTF_(std::make_unique<MuonBxCollection>(0, oFirstBx, oLastBx)),
0030 imdMuonsEMTFNeg_(std::make_unique<MuonBxCollection>(0, oFirstBx, oLastBx)),
0031 imdMuonsEMTFPos_(std::make_unique<MuonBxCollection>(0, oFirstBx, oLastBx)),
0032 imdMuonsOMTFNeg_(std::make_unique<MuonBxCollection>(0, oFirstBx, oLastBx)),
0033 imdMuonsOMTFPos_(std::make_unique<MuonBxCollection>(0, oFirstBx, oLastBx)),
0034
0035 regionalMuonShowersEMTF_(std::make_unique<RegionalMuonShowerBxCollection>(0, iFirstBx, iLastBx)),
0036 muonShowers_() {
0037 std::generate(muons_.begin(), muons_.end(), [&oFirstBx, &oLastBx] {
0038 return std::make_unique<MuonBxCollection>(0, oFirstBx, oLastBx);
0039 });
0040 std::generate(muonShowers_.begin(), muonShowers_.end(), [&oFirstBx, &oLastBx] {
0041 return std::make_unique<MuonShowerBxCollection>(0, oFirstBx, oLastBx);
0042 });
0043 };
0044
0045 ~GMTCollections() override;
0046
0047 inline RegionalMuonCandBxCollection* getRegionalMuonCandsBMTF() { return regionalMuonCandsBMTF_.get(); };
0048 inline RegionalMuonCandBxCollection* getRegionalMuonCandsOMTF() { return regionalMuonCandsOMTF_.get(); };
0049 inline RegionalMuonCandBxCollection* getRegionalMuonCandsEMTF() { return regionalMuonCandsEMTF_.get(); };
0050 inline MuonBxCollection* getMuons(const unsigned int copy) override { return muons_[copy].get(); };
0051 inline MuonBxCollection* getImdMuonsBMTF() { return imdMuonsBMTF_.get(); };
0052 inline MuonBxCollection* getImdMuonsEMTFNeg() { return imdMuonsEMTFNeg_.get(); };
0053 inline MuonBxCollection* getImdMuonsEMTFPos() { return imdMuonsEMTFPos_.get(); };
0054 inline MuonBxCollection* getImdMuonsOMTFNeg() { return imdMuonsOMTFNeg_.get(); };
0055 inline MuonBxCollection* getImdMuonsOMTFPos() { return imdMuonsOMTFPos_.get(); };
0056
0057 inline RegionalMuonShowerBxCollection* getRegionalMuonShowersEMTF() { return regionalMuonShowersEMTF_.get(); };
0058 inline MuonShowerBxCollection* getMuonShowers(const unsigned int copy) override {
0059 return muonShowers_[copy].get();
0060 };
0061
0062 static constexpr size_t NUM_OUTPUT_COPIES{6};
0063
0064 private:
0065 std::unique_ptr<RegionalMuonCandBxCollection> regionalMuonCandsBMTF_;
0066 std::unique_ptr<RegionalMuonCandBxCollection> regionalMuonCandsOMTF_;
0067 std::unique_ptr<RegionalMuonCandBxCollection> regionalMuonCandsEMTF_;
0068 std::array<std::unique_ptr<MuonBxCollection>, 6> muons_;
0069 std::unique_ptr<MuonBxCollection> imdMuonsBMTF_;
0070 std::unique_ptr<MuonBxCollection> imdMuonsEMTFNeg_;
0071 std::unique_ptr<MuonBxCollection> imdMuonsEMTFPos_;
0072 std::unique_ptr<MuonBxCollection> imdMuonsOMTFNeg_;
0073 std::unique_ptr<MuonBxCollection> imdMuonsOMTFPos_;
0074
0075 std::unique_ptr<RegionalMuonShowerBxCollection> regionalMuonShowersEMTF_;
0076 std::array<std::unique_ptr<MuonShowerBxCollection>, 6> muonShowers_;
0077 };
0078 }
0079 }
0080
0081 #endif