Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-01-09 23:33:30

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 #include "GMTPutTokens.h"
0012 
0013 #include <array>
0014 
0015 namespace l1t {
0016   namespace stage2 {
0017     class GMTCollections : public L1TObjectCollections {
0018     public:
0019       // If the zero suppression deletes all the blocks used to
0020       // fill a collection the BX range cannot be determined.
0021       // Set default values here to then create an empty collection
0022       // with a defined BX range.
0023       GMTCollections(edm::Event& e,
0024                      GMTPutTokens const& iTokens,
0025                      const int iFirstBx = -2,
0026                      const int iLastBx = 2,
0027                      const int oFirstBx = -2,
0028                      const int oLastBx = 2)
0029           : L1TObjectCollections(e),
0030             regionalMuonCandsBMTF_(0, iFirstBx, iLastBx),
0031             regionalMuonCandsOMTF_(0, iFirstBx, iLastBx),
0032             regionalMuonCandsEMTF_(0, iFirstBx, iLastBx),
0033             muons_{{{0, oFirstBx, oLastBx},
0034                     {0, oFirstBx, oLastBx},
0035                     {0, oFirstBx, oLastBx},
0036                     {0, oFirstBx, oLastBx},
0037                     {0, oFirstBx, oLastBx},
0038                     {0, oFirstBx, oLastBx}}},
0039             imdMuonsBMTF_(0, oFirstBx, oLastBx),
0040             imdMuonsEMTFNeg_(0, oFirstBx, oLastBx),
0041             imdMuonsEMTFPos_(0, oFirstBx, oLastBx),
0042             imdMuonsOMTFNeg_(0, oFirstBx, oLastBx),
0043             imdMuonsOMTFPos_(0, oFirstBx, oLastBx),
0044             regionalMuonShowersEMTF_(0, iFirstBx, iLastBx),
0045             muonShowers_{{{0, oFirstBx, oLastBx},
0046                           {0, oFirstBx, oLastBx},
0047                           {0, oFirstBx, oLastBx},
0048                           {0, oFirstBx, oLastBx},
0049                           {0, oFirstBx, oLastBx},
0050                           {0, oFirstBx, oLastBx}}},
0051             tokens_(iTokens) {};
0052 
0053       ~GMTCollections() override;
0054 
0055       inline RegionalMuonCandBxCollection* getRegionalMuonCandsBMTF() { return &regionalMuonCandsBMTF_; };
0056       inline RegionalMuonCandBxCollection* getRegionalMuonCandsOMTF() { return &regionalMuonCandsOMTF_; };
0057       inline RegionalMuonCandBxCollection* getRegionalMuonCandsEMTF() { return &regionalMuonCandsEMTF_; };
0058       inline MuonBxCollection* getMuons(const unsigned int copy) override { return &muons_[copy]; };
0059       inline MuonBxCollection* getImdMuonsBMTF() { return &imdMuonsBMTF_; };
0060       inline MuonBxCollection* getImdMuonsEMTFNeg() { return &imdMuonsEMTFNeg_; };
0061       inline MuonBxCollection* getImdMuonsEMTFPos() { return &imdMuonsEMTFPos_; };
0062       inline MuonBxCollection* getImdMuonsOMTFNeg() { return &imdMuonsOMTFNeg_; };
0063       inline MuonBxCollection* getImdMuonsOMTFPos() { return &imdMuonsOMTFPos_; };
0064 
0065       inline RegionalMuonShowerBxCollection* getRegionalMuonShowersEMTF() { return &regionalMuonShowersEMTF_; };
0066       inline MuonShowerBxCollection* getMuonShowers(const unsigned int copy) override { return &muonShowers_[copy]; };
0067 
0068       static constexpr size_t NUM_OUTPUT_COPIES{6};
0069 
0070     private:
0071       RegionalMuonCandBxCollection regionalMuonCandsBMTF_;
0072       RegionalMuonCandBxCollection regionalMuonCandsOMTF_;
0073       RegionalMuonCandBxCollection regionalMuonCandsEMTF_;
0074       std::array<MuonBxCollection, 6> muons_;
0075       MuonBxCollection imdMuonsBMTF_;
0076       MuonBxCollection imdMuonsEMTFNeg_;
0077       MuonBxCollection imdMuonsEMTFPos_;
0078       MuonBxCollection imdMuonsOMTFNeg_;
0079       MuonBxCollection imdMuonsOMTFPos_;
0080 
0081       RegionalMuonShowerBxCollection regionalMuonShowersEMTF_;
0082       std::array<MuonShowerBxCollection, 6> muonShowers_;
0083       GMTPutTokens tokens_;
0084     };
0085   }  // namespace stage2
0086 }  // namespace l1t
0087 
0088 #endif