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