File indexing completed on 2023-03-17 11:11:38
0001 #include "L1Trigger/HardwareValidation/plugins/L1DummyProducer.h"
0002
0003 #include "FWCore/ServiceRegistry/interface/Service.h"
0004 #include "FWCore/Utilities/interface/Exception.h"
0005 #include "FWCore/Utilities/interface/RandomNumberGenerator.h"
0006
0007 using namespace dedefs;
0008
0009 L1DummyProducer::L1DummyProducer(const edm::ParameterSet& iConfig) {
0010 verbose_ = iConfig.getUntrackedParameter<int>("VerboseFlag", 0);
0011
0012 if (verbose())
0013 std::cout << "L1DummyProducer::L1DummyProducer...\n" << std::flush;
0014
0015 std::vector<unsigned int> compColls = iConfig.getUntrackedParameter<std::vector<unsigned int> >("DO_SYSTEM");
0016
0017 for (int i = 0; i < DEnsys; i++)
0018 m_doSys[i] = compColls[i];
0019
0020 if (verbose()) {
0021 std::cout << "[L1DummyProducer] do sys? ";
0022 for (int i = 0; i < DEnsys; i++)
0023 std::cout << m_doSys[i];
0024 std::cout << std::endl;
0025 for (int i = 0; i < DEnsys; i++)
0026 if (m_doSys[i])
0027 std::cout << SystLabel[i] << " ";
0028 std::cout << std::endl;
0029 }
0030
0031 std::string CollInstName[DEnsys][5];
0032 for (int i = 0; i < DEnsys; i++)
0033 for (int j = 0; j < 5; j++)
0034 CollInstName[i][j] = std::string("");
0035
0036 CollInstName[GCT][0] += "isoEm";
0037 CollInstName[GCT][1] += "nonIsoEm";
0038 CollInstName[GCT][2] += "cenJets";
0039 CollInstName[GCT][3] += "forJets";
0040 CollInstName[GCT][4] += "tauJets";
0041 CollInstName[DTF][0] += "DT";
0042 CollInstName[DTF][1] += "DTTF";
0043 CollInstName[CTF][0] += "CSC";
0044 CollInstName[CTF][1] += "";
0045 CollInstName[RPC][0] += "RPCb";
0046 CollInstName[RPC][1] += "RPCf";
0047
0048 for (int i = 0; i < DEnsys; i++)
0049 for (int j = 0; j < 5; j++)
0050 instName[i][j] = CollInstName[i][j];
0051
0052 if (verbose()) {
0053 std::cout << "[L1DummyProducer] instName:\n";
0054 for (int i = 0; i < DEnsys; i++)
0055 for (int j = 0; j < 5; j++)
0056 if (!instName[i][j].empty())
0057 std::cout << i << " " << SystLabel[i] << " " << j << " " << instName[i][j] << std::endl;
0058 std::cout << std::flush;
0059 }
0060
0061
0062 assert(ETP == 0);
0063 assert(HTP == 1);
0064 assert(RCT == 2);
0065 assert(GCT == 3);
0066 assert(DTP == 4);
0067 assert(DTF == 5);
0068 assert(CTP == 6);
0069 assert(CTF == 7);
0070 assert(RPC == 8);
0071 assert(LTC == 9);
0072 assert(GMT == 10);
0073 assert(GLT == 11);
0074
0075
0076 if (m_doSys[ETP])
0077 produces<EcalTrigPrimDigiCollection>(instName[ETP][0]);
0078 if (m_doSys[HTP])
0079 produces<HcalTrigPrimDigiCollection>(instName[HTP][0]);
0080 if (m_doSys[RCT])
0081 produces<L1CaloEmCollection>(instName[RCT][0]);
0082 if (m_doSys[RCT])
0083 produces<L1CaloRegionCollection>(instName[RCT][0]);
0084 if (m_doSys[GCT])
0085 produces<L1GctEmCandCollection>(instName[GCT][0]);
0086 if (m_doSys[GCT])
0087 produces<L1GctEmCandCollection>(instName[GCT][1]);
0088 if (m_doSys[GCT])
0089 produces<L1GctJetCandCollection>(instName[GCT][2]);
0090 if (m_doSys[GCT])
0091 produces<L1GctJetCandCollection>(instName[GCT][3]);
0092 if (m_doSys[GCT])
0093 produces<L1GctJetCandCollection>(instName[GCT][4]);
0094 if (m_doSys[DTP])
0095 produces<L1MuDTChambPhContainer>(instName[DTP][0]);
0096 if (m_doSys[DTP])
0097 produces<L1MuDTChambThContainer>(instName[DTP][0]);
0098 if (m_doSys[DTF])
0099 produces<L1MuRegionalCandCollection>(instName[DTF][0]);
0100 if (m_doSys[DTF])
0101 produces<L1MuDTTrackContainer>(instName[DTF][1]);
0102 if (m_doSys[CTP])
0103 produces<CSCCorrelatedLCTDigiCollection>(instName[CTP][0]);
0104 if (m_doSys[CTF])
0105 produces<L1MuRegionalCandCollection>(instName[CTF][0]);
0106 if (m_doSys[CTF])
0107 produces<L1CSCTrackCollection>(instName[CTF][1]);
0108 if (m_doSys[RPC])
0109 produces<L1MuRegionalCandCollection>(instName[RPC][0]);
0110 if (m_doSys[RPC])
0111 produces<L1MuRegionalCandCollection>(instName[RPC][1]);
0112 if (m_doSys[LTC])
0113 produces<LTCDigiCollection>(instName[LTC][0]);
0114 if (m_doSys[GMT])
0115 produces<L1MuGMTCandCollection>(instName[GMT][0]);
0116 if (m_doSys[GMT])
0117 produces<L1MuGMTReadoutCollection>(instName[GMT][0]);
0118 if (m_doSys[GLT])
0119 produces<L1GlobalTriggerReadoutRecord>(instName[GLT][0]);
0120 if (m_doSys[GLT])
0121 produces<L1GlobalTriggerEvmReadoutRecord>(instName[GLT][0]);
0122 if (m_doSys[GLT])
0123 produces<L1GlobalTriggerObjectMapRecord>(instName[GLT][0]);
0124
0125
0126 edm::Service<edm::RandomNumberGenerator> rng;
0127 if (!rng.isAvailable()) {
0128 throw cms::Exception("Configuration")
0129 << "L1DummyProducer requires the RandomNumberGeneratorService\n"
0130 "which is not present in the configuration file. You must add the service\n"
0131 "in the configuration file or remove the modules that require it.";
0132 }
0133 EBase_ = iConfig.getUntrackedParameter<double>("EnergyBase", 100.);
0134 ESigm_ = iConfig.getUntrackedParameter<double>("EnergySigm", 10.);
0135
0136 nevt_ = 0;
0137 }
0138
0139 L1DummyProducer::~L1DummyProducer() {}
0140
0141 void L1DummyProducer::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
0142 edm::Service<edm::RandomNumberGenerator> rng;
0143 CLHEP::HepRandomEngine* engine = &rng->getEngine(iEvent.streamID());
0144
0145 if (verbose())
0146 std::cout << "L1DummyProducer::produce...\n" << std::flush;
0147
0148
0149 std::unique_ptr<EcalTrigPrimDigiCollection> ecal_tp_data(new EcalTrigPrimDigiCollection);
0150 std::unique_ptr<HcalTrigPrimDigiCollection> hcal_tp_data(new HcalTrigPrimDigiCollection);
0151 std::unique_ptr<L1CaloEmCollection> rct_em_data(new L1CaloEmCollection);
0152 std::unique_ptr<L1CaloRegionCollection> rct_rgn_data(new L1CaloRegionCollection);
0153 std::unique_ptr<L1GctEmCandCollection> gct_isolaem_data(new L1GctEmCandCollection);
0154 std::unique_ptr<L1GctEmCandCollection> gct_noisoem_data(new L1GctEmCandCollection);
0155 std::unique_ptr<L1GctJetCandCollection> gct_cenjets_data(new L1GctJetCandCollection);
0156 std::unique_ptr<L1GctJetCandCollection> gct_forjets_data(new L1GctJetCandCollection);
0157 std::unique_ptr<L1GctJetCandCollection> gct_taujets_data(new L1GctJetCandCollection);
0158 std::unique_ptr<L1MuDTChambPhContainer> dtp_ph_data(new L1MuDTChambPhContainer);
0159 std::unique_ptr<L1MuDTChambThContainer> dtp_th_data(new L1MuDTChambThContainer);
0160 std::unique_ptr<L1MuRegionalCandCollection> dtf_data(new L1MuRegionalCandCollection);
0161 std::unique_ptr<L1MuDTTrackContainer> dtf_trk_data(new L1MuDTTrackContainer);
0162 std::unique_ptr<CSCCorrelatedLCTDigiCollection> ctp_data(new CSCCorrelatedLCTDigiCollection);
0163 std::unique_ptr<L1MuRegionalCandCollection> ctf_data(new L1MuRegionalCandCollection);
0164 std::unique_ptr<L1CSCTrackCollection> ctf_trk_data(new L1CSCTrackCollection);
0165 std::unique_ptr<L1MuRegionalCandCollection> rpc_cen_data(new L1MuRegionalCandCollection);
0166 std::unique_ptr<L1MuRegionalCandCollection> rpc_for_data(new L1MuRegionalCandCollection);
0167 std::unique_ptr<LTCDigiCollection> ltc_data(new LTCDigiCollection);
0168 std::unique_ptr<L1MuGMTCandCollection> gmt_data(new L1MuGMTCandCollection);
0169 std::unique_ptr<L1MuGMTReadoutCollection> gmt_rdt_data(new L1MuGMTReadoutCollection);
0170 std::unique_ptr<L1GlobalTriggerReadoutRecord> glt_rdt_data(new L1GlobalTriggerReadoutRecord);
0171 std::unique_ptr<L1GlobalTriggerEvmReadoutRecord> glt_evm_data(new L1GlobalTriggerEvmReadoutRecord);
0172 std::unique_ptr<L1GlobalTriggerObjectMapRecord> glt_obj_data(new L1GlobalTriggerObjectMapRecord);
0173
0174 int nevt = nevt_++;
0175
0176 if (m_doSys[ETP])
0177 SimpleDigi(nevt, engine, ecal_tp_data);
0178 if (m_doSys[HTP])
0179 SimpleDigi(nevt, engine, hcal_tp_data);
0180 if (m_doSys[RCT])
0181 SimpleDigi(nevt, engine, rct_em_data);
0182 if (m_doSys[RCT])
0183 SimpleDigi(nevt, engine, rct_rgn_data);
0184 if (m_doSys[GCT])
0185 SimpleDigi(nevt, engine, gct_isolaem_data, 0);
0186 if (m_doSys[GCT])
0187 SimpleDigi(nevt, engine, gct_noisoem_data, 1);
0188 if (m_doSys[GCT])
0189 SimpleDigi(nevt, engine, gct_cenjets_data, 0);
0190 if (m_doSys[GCT])
0191 SimpleDigi(nevt, engine, gct_forjets_data, 1);
0192 if (m_doSys[GCT])
0193 SimpleDigi(nevt, engine, gct_taujets_data, 2);
0194 if (m_doSys[DTP])
0195 SimpleDigi(nevt, engine, dtp_ph_data);
0196 if (m_doSys[DTP])
0197 SimpleDigi(nevt, engine, dtp_th_data);
0198 if (m_doSys[DTF])
0199 SimpleDigi(nevt, engine, dtf_data, 0);
0200 if (m_doSys[DTF])
0201 SimpleDigi(nevt, engine, dtf_trk_data);
0202 if (m_doSys[CTP])
0203 SimpleDigi(nevt, engine, ctp_data);
0204 if (m_doSys[CTF])
0205 SimpleDigi(nevt, engine, ctf_data, 2);
0206 if (m_doSys[CTF])
0207 SimpleDigi(nevt, engine, ctf_trk_data);
0208 if (m_doSys[RPC])
0209 SimpleDigi(nevt, engine, rpc_cen_data, 1);
0210 if (m_doSys[RPC])
0211 SimpleDigi(nevt, engine, rpc_for_data, 3);
0212 if (m_doSys[LTC])
0213 SimpleDigi(nevt, engine, ltc_data);
0214 if (m_doSys[GMT])
0215 SimpleDigi(nevt, engine, gmt_data);
0216 if (m_doSys[GMT])
0217 SimpleDigi(nevt, engine, gmt_rdt_data);
0218 if (m_doSys[GLT])
0219 SimpleDigi(nevt, engine, glt_rdt_data);
0220 if (m_doSys[GLT])
0221 SimpleDigi(nevt, engine, glt_evm_data);
0222 if (m_doSys[GLT])
0223 SimpleDigi(nevt, engine, glt_obj_data);
0224
0225
0226 if (m_doSys[ETP])
0227 iEvent.put(std::move(ecal_tp_data), instName[ETP][0]);
0228 if (m_doSys[HTP])
0229 iEvent.put(std::move(hcal_tp_data), instName[HTP][0]);
0230 if (m_doSys[RCT])
0231 iEvent.put(std::move(rct_em_data), instName[RCT][0]);
0232 if (m_doSys[RCT])
0233 iEvent.put(std::move(rct_rgn_data), instName[RCT][0]);
0234 if (m_doSys[GCT])
0235 iEvent.put(std::move(gct_isolaem_data), instName[GCT][0]);
0236 if (m_doSys[GCT])
0237 iEvent.put(std::move(gct_noisoem_data), instName[GCT][1]);
0238 if (m_doSys[GCT])
0239 iEvent.put(std::move(gct_cenjets_data), instName[GCT][2]);
0240 if (m_doSys[GCT])
0241 iEvent.put(std::move(gct_forjets_data), instName[GCT][3]);
0242 if (m_doSys[GCT])
0243 iEvent.put(std::move(gct_taujets_data), instName[GCT][4]);
0244 if (m_doSys[DTP])
0245 iEvent.put(std::move(dtp_ph_data), instName[DTP][0]);
0246 if (m_doSys[DTP])
0247 iEvent.put(std::move(dtp_th_data), instName[DTP][0]);
0248 if (m_doSys[DTF])
0249 iEvent.put(std::move(dtf_data), instName[DTF][0]);
0250 if (m_doSys[DTF])
0251 iEvent.put(std::move(dtf_trk_data), instName[DTF][1]);
0252 if (m_doSys[CTP])
0253 iEvent.put(std::move(ctp_data), instName[CTP][0]);
0254 if (m_doSys[CTF])
0255 iEvent.put(std::move(ctf_data), instName[CTF][0]);
0256 if (m_doSys[CTF])
0257 iEvent.put(std::move(ctf_trk_data), instName[CTF][1]);
0258 if (m_doSys[RPC])
0259 iEvent.put(std::move(rpc_cen_data), instName[RPC][0]);
0260 if (m_doSys[RPC])
0261 iEvent.put(std::move(rpc_for_data), instName[RPC][1]);
0262 if (m_doSys[LTC])
0263 iEvent.put(std::move(ltc_data), instName[LTC][0]);
0264 if (m_doSys[GMT])
0265 iEvent.put(std::move(gmt_data), instName[GMT][0]);
0266 if (m_doSys[GMT])
0267 iEvent.put(std::move(gmt_rdt_data), instName[GMT][0]);
0268 if (m_doSys[GLT])
0269 iEvent.put(std::move(glt_rdt_data), instName[GLT][0]);
0270 if (m_doSys[GLT])
0271 iEvent.put(std::move(glt_evm_data), instName[GLT][0]);
0272 if (m_doSys[GLT])
0273 iEvent.put(std::move(glt_obj_data), instName[GLT][0]);
0274
0275 if (verbose())
0276 std::cout << "L1DummyProducer::produce end.\n" << std::flush;
0277 }