Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-06-28 02:36:16

0001 #ifndef CaloLayer1Collections_h
0002 #define CaloLayer1Collections_h
0003 
0004 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
0005 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
0006 #include "DataFormats/L1CaloTrigger/interface/L1CaloCollections.h"
0007 #include "EventFilter/L1TRawToDigi/interface/UnpackerCollections.h"
0008 #include "L1TObjectCollections.h"
0009 #include "DataFormats/L1CaloTrigger/interface/CICADA.h"
0010 
0011 namespace l1t {
0012   namespace stage2 {
0013     class CaloLayer1Collections : public L1TObjectCollections {
0014     public:
0015       CaloLayer1Collections(edm::Event& e)
0016           : L1TObjectCollections(e),
0017             ecalDigis_(new EcalTrigPrimDigiCollection()),
0018             hcalDigis_(new HcalTrigPrimDigiCollection()),
0019             caloRegions_(new L1CaloRegionCollection()),
0020             cicadaDigis_(std::make_unique<CICADABxCollection>()) {
0021         // Pre-allocate:
0022         //  72 iPhi values
0023         //  28 iEta values in Ecal, 28 + 12 iEta values in Hcal + HF
0024         //  2 hemispheres
0025         ecalDigis_->reserve(72 * 28 * 2);
0026         hcalDigis_->reserve(72 * 40 * 2);
0027         // 7 regions * 18 cards * 2 hemispheres
0028         caloRegions_->reserve(7 * 18 * 2);
0029         std::generate(
0030             ecalDigisBx_.begin(), ecalDigisBx_.end(), [] { return std::make_unique<EcalTrigPrimDigiCollection>(); });
0031       };
0032 
0033       ~CaloLayer1Collections() override;
0034 
0035       inline EcalTrigPrimDigiCollection* getEcalDigis() { return ecalDigis_.get(); };
0036       inline HcalTrigPrimDigiCollection* getHcalDigis() { return hcalDigis_.get(); };
0037       inline L1CaloRegionCollection* getRegions() { return caloRegions_.get(); };
0038 
0039       inline EcalTrigPrimDigiCollection* getEcalDigisBx(const unsigned int copy) override {
0040         return ecalDigisBx_[copy].get();
0041       };
0042       inline CICADABxCollection* getCICADABxCollection() { return cicadaDigis_.get(); };
0043 
0044     private:
0045       std::unique_ptr<EcalTrigPrimDigiCollection> ecalDigis_;
0046       std::unique_ptr<HcalTrigPrimDigiCollection> hcalDigis_;
0047       std::unique_ptr<L1CaloRegionCollection> caloRegions_;
0048 
0049       std::array<std::unique_ptr<EcalTrigPrimDigiCollection>, 5> ecalDigisBx_;
0050       std::unique_ptr<CICADABxCollection> cicadaDigis_;
0051     };
0052   }  // namespace stage2
0053 }  // namespace l1t
0054 
0055 #endif