File indexing completed on 2023-10-25 09:45:37
0001 #include "EventFilter/L1TRawToDigi/plugins/PackerFactory.h"
0002 #include "EventFilter/L1TRawToDigi/plugins/PackingSetupFactory.h"
0003 #include "EventFilter/L1TRawToDigi/plugins/UnpackerFactory.h"
0004
0005 #include "EventFilter/L1TRawToDigi/plugins/implementations_stage2/MuonPacker.h"
0006 #include "EventFilter/L1TRawToDigi/plugins/implementations_stage2/MuonUnpacker.h"
0007 #include "EventFilter/L1TRawToDigi/plugins/implementations_stage2/EGammaUnpacker.h"
0008 #include "EventFilter/L1TRawToDigi/plugins/implementations_stage2/EtSumUnpacker.h"
0009 #include "EventFilter/L1TRawToDigi/plugins/implementations_stage2/ZDCUnpacker.h"
0010 #include "EventFilter/L1TRawToDigi/plugins/implementations_stage2/JetUnpacker.h"
0011 #include "EventFilter/L1TRawToDigi/plugins/implementations_stage2/TauUnpacker.h"
0012
0013 #include "GTSetup.h"
0014
0015 const unsigned int l1t::stage2::zdc::nOutputFramePerBX = 6;
0016
0017 namespace l1t {
0018 namespace stage2 {
0019
0020 std::unique_ptr<PackerTokens> GTSetup::registerConsumes(const edm::ParameterSet& cfg, edm::ConsumesCollector& cc) {
0021 return std::unique_ptr<PackerTokens>(new GTTokens(cfg, cc));
0022 }
0023
0024 void GTSetup::fillDescription(edm::ParameterSetDescription& desc) {
0025 desc.addOptional<edm::InputTag>("GtInputTag")->setComment("for stage2");
0026 desc.addOptional<edm::InputTag>("ExtInputTag")->setComment("for stage2");
0027 desc.addOptional<edm::InputTag>("MuonInputTag")->setComment("for stage2");
0028 desc.addOptional<edm::InputTag>("ShowerInputTag")->setComment("for Run3");
0029 desc.addOptional<edm::InputTag>("EGammaInputTag")->setComment("for stage2");
0030 desc.addOptional<edm::InputTag>("JetInputTag")->setComment("for stage2");
0031 desc.addOptional<edm::InputTag>("TauInputTag")->setComment("for stage2");
0032 desc.addOptional<edm::InputTag>("EtSumInputTag")->setComment("for stage2");
0033 }
0034
0035 PackerMap GTSetup::getPackers(int fed, unsigned int fw) {
0036 PackerMap res;
0037
0038 if ((fed == 1404) || (fed == 1405)) {
0039
0040
0041 auto gt_muon_packer =
0042 static_pointer_cast<l1t::stage2::GTMuonPacker>(PackerFactory::get()->make("stage2::GTMuonPacker"));
0043 gt_muon_packer->setFed(fed);
0044 gt_muon_packer->setFwVersion(fw);
0045 res[{1, 1}] = {gt_muon_packer,
0046 PackerFactory::get()->make("stage2::GTEGammaPacker"),
0047 PackerFactory::get()->make("stage2::GTEtSumPacker"),
0048 PackerFactory::get()->make("stage2::GTJetPacker"),
0049 PackerFactory::get()->make("stage2::GTTauPacker"),
0050 PackerFactory::get()->make("stage2::GlobalAlgBlkPacker"),
0051 PackerFactory::get()->make("stage2::GlobalExtBlkPacker")};
0052 }
0053
0054 return res;
0055 }
0056
0057 void GTSetup::registerProducts(edm::ProducesCollector prod) {
0058 prod.produces<MuonBxCollection>("Muon");
0059 prod.produces<MuonShowerBxCollection>("MuonShower");
0060 prod.produces<EGammaBxCollection>("EGamma");
0061 prod.produces<EtSumBxCollection>("EtSum");
0062 prod.produces<EtSumBxCollection>("EtSumZDC");
0063 prod.produces<JetBxCollection>("Jet");
0064 prod.produces<TauBxCollection>("Tau");
0065 prod.produces<GlobalAlgBlkBxCollection>();
0066 prod.produces<GlobalExtBlkBxCollection>();
0067 for (int i = 2; i < 7; ++i) {
0068 prod.produces<MuonBxCollection>("Muon" + std::to_string(i));
0069 prod.produces<MuonShowerBxCollection>("MuonShower" + std::to_string(i));
0070 prod.produces<EGammaBxCollection>("EGamma" + std::to_string(i));
0071 prod.produces<EtSumBxCollection>("EtSum" + std::to_string(i));
0072 prod.produces<EtSumBxCollection>("EtSumZDC" + std::to_string(i));
0073 prod.produces<JetBxCollection>("Jet" + std::to_string(i));
0074 prod.produces<TauBxCollection>("Tau" + std::to_string(i));
0075 }
0076 }
0077
0078 std::unique_ptr<UnpackerCollections> GTSetup::getCollections(edm::Event& e) {
0079 return std::unique_ptr<UnpackerCollections>(new GTCollections(e));
0080 }
0081
0082 UnpackerMap GTSetup::getUnpackers(int fed, int board, int amc, unsigned int fw) {
0083 auto muon_unp =
0084 static_pointer_cast<l1t::stage2::MuonUnpacker>(UnpackerFactory::get()->make("stage2::MuonUnpacker"));
0085 auto egamma_unp =
0086 static_pointer_cast<l1t::stage2::EGammaUnpacker>(UnpackerFactory::get()->make("stage2::EGammaUnpacker"));
0087 auto etsum_unp =
0088 static_pointer_cast<l1t::stage2::EtSumUnpacker>(UnpackerFactory::get()->make("stage2::EtSumUnpacker"));
0089 auto zdc_unp = static_pointer_cast<l1t::stage2::ZDCUnpacker>(UnpackerFactory::get()->make("stage2::ZDCUnpacker"));
0090 auto jet_unp = static_pointer_cast<l1t::stage2::JetUnpacker>(UnpackerFactory::get()->make("stage2::JetUnpacker"));
0091 auto tau_unp = static_pointer_cast<l1t::stage2::TauUnpacker>(UnpackerFactory::get()->make("stage2::TauUnpacker"));
0092
0093 if (fw >= 0x10f2) {
0094 etsum_unp = static_pointer_cast<l1t::stage2::EtSumUnpacker>(
0095 UnpackerFactory::get()->make("stage2::EtSumUnpacker_0x10010057"));
0096 }
0097
0098 auto alg_unp = UnpackerFactory::get()->make("stage2::GlobalAlgBlkUnpacker");
0099 auto ext_unp = UnpackerFactory::get()->make("stage2::GlobalExtBlkUnpacker");
0100
0101 muon_unp->setAlgoVersion(fw);
0102 muon_unp->setFedNumber(fed);
0103
0104 muon_unp->setMuonCopy(amc - 1);
0105 egamma_unp->setEGammaCopy(amc - 1);
0106 etsum_unp->setEtSumCopy(amc - 1);
0107 zdc_unp->setEtSumZDCCopy(amc - 1);
0108 jet_unp->setJetCopy(amc - 1);
0109 tau_unp->setTauCopy(amc - 1);
0110
0111 UnpackerMap res;
0112
0113 if ((fed == 1404) || (fed == 1405)) {
0114
0115
0116 res[0] = muon_unp;
0117 res[2] = muon_unp;
0118 res[4] = muon_unp;
0119 res[6] = muon_unp;
0120 res[8] = egamma_unp;
0121 res[10] = egamma_unp;
0122 res[12] = jet_unp;
0123 res[14] = jet_unp;
0124 res[16] = tau_unp;
0125 res[18] = tau_unp;
0126 res[20] = etsum_unp;
0127
0128 if (amc == 1) {
0129 res[24] = ext_unp;
0130
0131 res[26] = ext_unp;
0132 res[28] = ext_unp;
0133 res[30] = ext_unp;
0134 }
0135
0136
0137 res[33] = alg_unp;
0138 res[35] = alg_unp;
0139 res[37] = alg_unp;
0140 res[39] = alg_unp;
0141 res[41] = alg_unp;
0142 res[43] = alg_unp;
0143 res[45] = alg_unp;
0144 res[47] = alg_unp;
0145 res[49] = alg_unp;
0146
0147 res[142] = zdc_unp;
0148 }
0149
0150 return res;
0151 }
0152 }
0153 }
0154
0155 DEFINE_L1T_PACKING_SETUP(l1t::stage2::GTSetup);