File indexing completed on 2025-01-15 23:25:03
0001 #ifndef L1TGlobalProducer_h
0002 #define L1TGlobalProducer_h
0003
0004
0005
0006
0007 #include <string>
0008 #include <vector>
0009 #include <iostream>
0010 #include <fstream>
0011
0012 #include "FWCore/Framework/interface/Frameworkfwd.h"
0013 #include "FWCore/Framework/interface/stream/EDProducer.h"
0014 #include "FWCore/Framework/interface/Event.h"
0015 #include "FWCore/Framework/interface/EventSetup.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "FWCore/Utilities/interface/InputTag.h"
0018 #include "FWCore/Utilities/interface/ESGetToken.h"
0019
0020 #include "L1Trigger/L1TGlobal/interface/GlobalBoard.h"
0021
0022 #include "CondFormats/L1TObjects/interface/L1TGlobalParameters.h"
0023 #include "L1Trigger/L1TGlobal/interface/GlobalParamsHelper.h"
0024 #include "L1Trigger/L1TGlobal/interface/PrescalesVetosFractHelper.h"
0025 #include "CondFormats/L1TObjects/interface/L1TUtmTriggerMenu.h"
0026 #include "CondFormats/DataRecord/interface/L1TUtmTriggerMenuRcd.h"
0027 #include "CondFormats/L1TObjects/interface/L1TGlobalParameters.h"
0028 #include "CondFormats/DataRecord/interface/L1TGlobalParametersRcd.h"
0029 #include "CondFormats/L1TObjects/interface/L1TGlobalPrescalesVetosFract.h"
0030 #include "CondFormats/DataRecord/interface/L1TGlobalPrescalesVetosFractRcd.h"
0031
0032 class L1TGlobalParameters;
0033 class L1GtParameters;
0034 class L1GtBoardMaps;
0035
0036 class L1GtPrescaleFactors;
0037 class L1GtTriggerMask;
0038
0039 class TriggerMenu;
0040
0041
0042
0043 class L1TGlobalProducer : public edm::stream::EDProducer<> {
0044 public:
0045 explicit L1TGlobalProducer(const edm::ParameterSet&);
0046 ~L1TGlobalProducer() override = default;
0047
0048 void beginRun(edm::Run const& iRun, const edm::EventSetup& iEventSetup) override;
0049
0050 void produce(edm::Event& iEvent, const edm::EventSetup& iEventSetup) override;
0051
0052 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0053
0054 private:
0055
0056 std::unique_ptr<TriggerMenu> m_l1GtMenu;
0057 L1TUtmTriggerMenu const* m_utml1GtMenu;
0058
0059
0060 unsigned int m_numberPhysTriggers;
0061
0062
0063 unsigned int m_numberDaqPartitions;
0064
0065
0066 int m_nrL1Mu;
0067 int m_nrL1MuShower;
0068 int m_nrL1EG;
0069 int m_nrL1Tau;
0070
0071 int m_nrL1Jet;
0072
0073
0074 int m_ifMuEtaNumberBits;
0075 int m_ifCaloEtaNumberBits;
0076
0077
0078 int m_totalBxInEvent;
0079
0080
0081 uint16_t m_activeBoardsGtDaq;
0082
0083
0084 unsigned int m_bstLengthBytes;
0085
0086
0087 const L1GtBoardMaps* m_l1GtBM;
0088 unsigned long long m_l1GtBMCacheID;
0089
0090
0091 const l1t::PrescalesVetosFractHelper* m_l1GtPrescalesVetosFract;
0092 unsigned long long m_l1GtPfAlgoCacheID;
0093
0094 const std::vector<std::vector<double>>* m_prescaleFactorsAlgoTrig;
0095 std::vector<std::vector<double>> m_initialPrescaleFactorsAlgoTrig;
0096
0097
0098 const L1GtTriggerMask* m_l1GtTmAlgo;
0099 unsigned long long m_l1GtTmAlgoCacheID;
0100
0101 const L1GtTriggerMask* m_l1GtTmVetoAlgo;
0102 unsigned long long m_l1GtTmVetoAlgoCacheID;
0103
0104 const std::vector<unsigned int>* m_triggerMaskAlgoTrig;
0105 std::vector<unsigned int> m_initialTriggerMaskAlgoTrig;
0106
0107 const std::vector<int>* m_triggerMaskVetoAlgoTrig;
0108 std::vector<int> m_initialTriggerMaskVetoAlgoTrig;
0109
0110 std::unique_ptr<l1t::GlobalBoard> m_uGtBrd;
0111
0112
0113 edm::InputTag m_muInputTag;
0114 edm::InputTag m_muShowerInputTag;
0115 edm::EDGetTokenT<BXVector<l1t::Muon>> m_muInputToken;
0116 edm::EDGetTokenT<BXVector<l1t::MuonShower>> m_muShowerInputToken;
0117
0118
0119 edm::InputTag m_egInputTag;
0120 edm::InputTag m_tauInputTag;
0121 edm::InputTag m_jetInputTag;
0122 edm::InputTag m_sumInputTag;
0123 edm::InputTag m_sumZdcInputTag;
0124 edm::InputTag m_CICADAInputTag;
0125 edm::EDGetTokenT<BXVector<l1t::EGamma>> m_egInputToken;
0126 edm::EDGetTokenT<BXVector<l1t::Tau>> m_tauInputToken;
0127 edm::EDGetTokenT<BXVector<l1t::Jet>> m_jetInputToken;
0128 edm::EDGetTokenT<BXVector<l1t::EtSum>> m_sumInputToken;
0129 edm::EDGetTokenT<BXVector<l1t::EtSum>> m_sumZdcInputToken;
0130 edm::EDGetTokenT<BXVector<float>> m_CICADAInputToken;
0131
0132
0133 edm::InputTag m_extInputTag;
0134 edm::EDGetTokenT<BXVector<GlobalExtBlk>> m_extInputToken;
0135
0136
0137 bool m_produceL1GtDaqRecord;
0138
0139
0140 bool m_produceL1GtObjectMapRecord;
0141
0142
0143 bool m_writePsbL1GtDaqRecord;
0144
0145
0146
0147
0148
0149 int m_emulateBxInEvent;
0150
0151
0152 int m_L1DataBxInEvent;
0153
0154
0155
0156 unsigned int m_alternativeNrBxBoardDaq;
0157
0158
0159 int m_psBstLengthBytes;
0160
0161
0162 unsigned int m_prescaleSet;
0163
0164
0165
0166
0167 bool m_algorithmTriggersUnprescaled;
0168
0169
0170
0171 bool m_algorithmTriggersUnmasked;
0172
0173
0174 int m_verbosity;
0175 bool m_printL1Menu;
0176 bool m_isDebugEnabled;
0177
0178 bool m_getPrescaleColumnFromData;
0179 bool m_requireMenuToMatchAlgoBlkInput;
0180 edm::InputTag m_algoblkInputTag;
0181 edm::EDGetTokenT<BXVector<GlobalAlgBlk>> m_algoblkInputToken;
0182
0183 edm::ESGetToken<L1TGlobalParameters, L1TGlobalParametersRcd> m_l1GtStableParToken;
0184 edm::ESGetToken<L1TUtmTriggerMenu, L1TUtmTriggerMenuRcd> m_l1GtMenuToken;
0185 edm::ESGetToken<L1TGlobalPrescalesVetosFract, L1TGlobalPrescalesVetosFractRcd> m_l1GtPrescaleVetosToken;
0186
0187
0188 bool m_resetPSCountersEachLumiSec;
0189
0190
0191
0192 bool m_semiRandomInitialPSCounters;
0193
0194
0195 bool m_useMuonShowers;
0196
0197
0198 bool m_produceAXOL1TLScore;
0199 };
0200
0201 #endif