Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:20:05

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   ///assertions/temporary
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   /// list of collections to be produced
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   ///rnd # settings
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   /// define the data collections
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   /// fill candidate collections
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   /// put collection
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 }