File indexing completed on 2024-04-06 12:10:48
0001 #include "FWCore/Utilities/interface/InputTag.h"
0002
0003 #include "EventFilter/L1TRawToDigi/plugins/PackerFactory.h"
0004 #include "EventFilter/L1TRawToDigi/plugins/PackingSetupFactory.h"
0005 #include "EventFilter/L1TRawToDigi/plugins/UnpackerFactory.h"
0006
0007 #include "CaloSetup.h"
0008
0009 using namespace l1t;
0010 using namespace l1t::stage1;
0011
0012 std::unique_ptr<PackerTokens> CaloSetup::registerConsumes(const edm::ParameterSet& cfg, edm::ConsumesCollector& cc) {
0013 return std::unique_ptr<PackerTokens>(new CaloTokens(cfg, cc));
0014 }
0015
0016 void CaloSetup::fillDescription(edm::ParameterSetDescription& desc) {
0017 desc.addOptional<edm::InputTag>("TauInputLabel")->setComment("for stage1");
0018 desc.addOptional<edm::InputTag>("IsoTauInputLabel")->setComment("for stage1");
0019 desc.addOptional<edm::InputTag>("HFBitCountsInputLabel")->setComment("for stage1");
0020 desc.addOptional<edm::InputTag>("HFRingSumsInputLabel")->setComment("for stage1");
0021 desc.addOptional<edm::InputTag>("RegionInputLabel")->setComment("for stage1");
0022 desc.addOptional<edm::InputTag>("EmCandInputLabel")->setComment("for stage1");
0023 }
0024
0025 PackerMap CaloSetup::getPackers(int fed, unsigned int fw) {
0026 PackerMap res;
0027
0028 res[{1, 0x2300}] = {
0029 PackerFactory::get()->make("stage1::IsoEGammaPacker"),
0030 PackerFactory::get()->make("stage1::NonIsoEGammaPacker"),
0031 PackerFactory::get()->make("stage1::CentralJetPacker"),
0032 PackerFactory::get()->make("stage1::ForwardJetPacker"),
0033 PackerFactory::get()->make("stage1::TauPacker"),
0034 PackerFactory::get()->make("stage1::IsoTauPacker"),
0035 PackerFactory::get()->make("stage1::EtSumPacker"),
0036 PackerFactory::get()->make("stage1::MissEtPacker"),
0037 PackerFactory::get()->make("stage1::CaloSpareHFPacker"),
0038 PackerFactory::get()->make("stage1::MissHtPacker"),
0039 PackerFactory::get()->make("stage1::RCTEmRegionPacker"),
0040 };
0041
0042 return res;
0043 }
0044
0045 void CaloSetup::registerProducts(edm::ProducesCollector prod) {
0046 prod.produces<L1CaloEmCollection>();
0047 prod.produces<CaloSpareBxCollection>("HFBitCounts");
0048 prod.produces<CaloSpareBxCollection>("HFRingSums");
0049 prod.produces<L1CaloRegionCollection>();
0050 prod.produces<CaloTowerBxCollection>();
0051 prod.produces<EGammaBxCollection>();
0052 prod.produces<EtSumBxCollection>();
0053 prod.produces<JetBxCollection>();
0054 prod.produces<TauBxCollection>("rlxTaus");
0055 prod.produces<TauBxCollection>("isoTaus");
0056 }
0057
0058 std::unique_ptr<UnpackerCollections> CaloSetup::getCollections(edm::Event& e) {
0059 return std::unique_ptr<UnpackerCollections>(new CaloCollections(e));
0060 }
0061
0062 UnpackerMap CaloSetup::getUnpackers(int fed, int board, int amc, unsigned int fw) {
0063 UnpackerMap res;
0064
0065
0066
0067
0068 if ((fw >> 24) == 0xff) {
0069 auto cjet_unp = UnpackerFactory::get()->make("stage1::legacy::CentralJetUnpacker");
0070 auto fjet_unp = UnpackerFactory::get()->make("stage1::legacy::ForwardJetUnpacker");
0071
0072 if (fed == 1352) {
0073 if (board == 0x200D) {
0074 auto iegamma_unp = UnpackerFactory::get()->make("stage1::legacy::IsoEGammaUnpacker");
0075 auto niegamma_unp = UnpackerFactory::get()->make("stage1::legacy::NonIsoEGammaUnpacker");
0076 auto tau_unp = UnpackerFactory::get()->make("stage1::legacy::TauUnpacker");
0077 auto isotau_unp = UnpackerFactory::get()->make("stage1::legacy::IsoTauUnpacker");
0078 auto etsum_unp = UnpackerFactory::get()->make("stage1::legacy::EtSumUnpacker");
0079 auto ring_unp = UnpackerFactory::get()->make("stage1::legacy::HFRingUnpacker");
0080
0081 res[1] = iegamma_unp;
0082 res[2] = niegamma_unp;
0083 res[3] = cjet_unp;
0084 res[4] = fjet_unp;
0085 res[5] = tau_unp;
0086 res[6] = etsum_unp;
0087 res[7] = ring_unp;
0088 res[8] = isotau_unp;
0089 }
0090 }
0091 } else {
0092 auto cjet_unp_Left = UnpackerFactory::get()->make("stage1::CentralJetUnpackerLeft");
0093 auto fjet_unp_Left = UnpackerFactory::get()->make("stage1::ForwardJetUnpackerLeft");
0094 auto iegamma_unp_Left = UnpackerFactory::get()->make("stage1::IsoEGammaUnpackerLeft");
0095 auto niegamma_unp_Left = UnpackerFactory::get()->make("stage1::NonIsoEGammaUnpackerLeft");
0096 auto tau_unp_Left = UnpackerFactory::get()->make("stage1::TauUnpackerLeft");
0097 auto isotau_unp_Left = UnpackerFactory::get()->make("stage1::IsoTauUnpackerLeft");
0098 auto cjet_unp_Right = UnpackerFactory::get()->make("stage1::CentralJetUnpackerRight");
0099 auto fjet_unp_Right = UnpackerFactory::get()->make("stage1::ForwardJetUnpackerRight");
0100 auto iegamma_unp_Right = UnpackerFactory::get()->make("stage1::IsoEGammaUnpackerRight");
0101 auto niegamma_unp_Right = UnpackerFactory::get()->make("stage1::NonIsoEGammaUnpackerRight");
0102 auto tau_unp_Right = UnpackerFactory::get()->make("stage1::TauUnpackerRight");
0103 auto isotau_unp_Right = UnpackerFactory::get()->make("stage1::IsoTauUnpackerRight");
0104 auto etsum_unp = UnpackerFactory::get()->make("stage1::EtSumUnpacker");
0105 auto missetsum_unp = UnpackerFactory::get()->make("stage1::MissEtUnpacker");
0106 auto calospare_unp = UnpackerFactory::get()->make("stage1::CaloSpareHFUnpacker");
0107 auto misshtsum_unp = UnpackerFactory::get()->make("stage1::MissHtUnpacker");
0108
0109 if (fed == 1352) {
0110 auto rct_unp = UnpackerFactory::get()->make("stage1::RCTEmRegionUnpacker");
0111
0112
0113 if (board == 0x2300) {
0114 res[77] = cjet_unp_Left;
0115 res[79] = cjet_unp_Right;
0116 res[81] = fjet_unp_Left;
0117 res[83] = fjet_unp_Right;
0118 res[85] = iegamma_unp_Left;
0119 res[87] = iegamma_unp_Right;
0120 res[89] = niegamma_unp_Left;
0121 res[91] = niegamma_unp_Right;
0122 res[93] = etsum_unp;
0123 res[95] = missetsum_unp;
0124 res[97] = calospare_unp;
0125 res[99] = misshtsum_unp;
0126 res[101] = tau_unp_Left;
0127 res[103] = tau_unp_Right;
0128 res[105] = isotau_unp_Left;
0129 res[107] = isotau_unp_Right;
0130
0131 for (int m = 0; m < 36; m++) {
0132 res[m * 2] = rct_unp;
0133 }
0134 }
0135 }
0136 }
0137 return res;
0138 }
0139
0140 DEFINE_L1T_PACKING_SETUP(l1t::stage1::CaloSetup);