CMS 3D CMS Logo

L1DummyProducer.h
Go to the documentation of this file.
1 #ifndef L1_DUMMY_PRODUCER_H
2 #define L1_DUMMY_PRODUCER_H
3 
4 /*\class L1DummyProducer
5  *\description produces simplified, random L1 trigger digis
6  *\usage pattern and monitoring software test and validation
7  *\author Nuno Leonardo (CERN)
8  *\date 07.07
9  */
10 
11 // system includes
12 #include <memory>
13 #include <string>
14 #include <iostream>
15 #include <fstream>
16 #include <iomanip>
17 #include <vector>
18 #include <algorithm>
19 #include "TMath.h"
20 #include <bitset>
21 
22 // common includes
29 
30 // l1 dataformats, d|e record includes
32 
33 // random # generator
34 #include "CLHEP/Random/RandomEngine.h"
35 #include "CLHEP/Random/RandGaussQ.h"
36 
38 public:
39  explicit L1DummyProducer(const edm::ParameterSet&);
40  ~L1DummyProducer() override;
41 
42 private:
43  void beginJob(void) override{};
44  //virtual void beginRun(edm::Run&, const edm::EventSetup&);
45  void produce(edm::Event&, const edm::EventSetup&) override;
46  void endJob() override{};
47 
48 public:
49  template <class T>
50  void SimpleDigi(CLHEP::HepRandomEngine*, std::unique_ptr<T>& data, int type = 0);
51 
52 private:
53  int verbose_;
54  int verbose() { return verbose_; }
55  int nevt_;
56 
59 
60  double EBase_;
61  double ESigm_;
62 };
63 
64 template <class T>
65 void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine*, std::unique_ptr<T>& data, int type) {
66  /*collections generated in specializations below*/
67 }
68 
69 template <>
70 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
71  std::unique_ptr<EcalTrigPrimDigiCollection>& data,
72  int type) {
73  if (verbose())
74  std::cout << "L1DummyProducer::SimpleDigi<EcalTrigPrimDigiCollection>....\n" << std::flush;
75  int side = (engine->flat() > 0.5) ? -1 : 1;
76  int ieta = (int)(1 + 17 * engine->flat()); //1-17
77  int iphi = (int)(1 + 72 * engine->flat()); //1-72
78  const EcalTrigTowerDetId e_id(side, EcalBarrel, ieta, iphi, 0);
79  EcalTriggerPrimitiveDigi e_digi(e_id);
80  int energy = (int)(EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine));
81  bool fg = (engine->flat() > 0.5);
82  int ttf = (int)(8 * engine->flat()); //0-7
83  EcalTriggerPrimitiveSample e_sample(energy, fg, ttf);
84  e_digi.setSize(1); //set sampleOfInterest to 0
85  e_digi.setSample(0, e_sample);
86  data->push_back(e_digi);
87  //EcalTriggerPrimitiveSample(int encodedEt, bool finegrain, int triggerFlag);
88  //const EcalTrigTowerDetId e_id( zside , EcalBarrel, etaTT, phiTT, 0);
89  if (verbose())
90  std::cout << "L1DummyProducer::SimpleDigi<EcalTrigPrimDigiCollection> end.\n" << std::flush;
91 }
92 
93 template <>
94 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
95  std::unique_ptr<HcalTrigPrimDigiCollection>& data,
96  int type) {
97  if (verbose())
98  std::cout << "L1DummyProducer::SimpleDigi<HcalTrigPrimDigiCollection>....\n" << std::flush;
99  int side = (engine->flat() > 0.5) ? -1 : 1;
100  int ieta = (int)(1 + 17 * engine->flat());
101  int iphi = (int)(1 + 72 * engine->flat());
102  const HcalTrigTowerDetId h_id(side * ieta, iphi);
103  HcalTriggerPrimitiveDigi h_digi(h_id);
104  int energy = (int)(EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine));
105  HcalTriggerPrimitiveSample h_sample(energy, false, 0, 0);
106  h_digi.setSize(1); //set sampleOfInterest to 0
107  h_digi.setSample(0, h_sample);
108  data->push_back(h_digi);
109  //HcalTriggerPrimitiveSample(int encodedEt, bool finegrain, int slb, int slbchan);
110  //HcalTrigTowerDetId(int ieta, int iphi);
111  if (verbose())
112  std::cout << "L1DummyProducer::SimpleDigi<HcalTrigPrimDigiCollection> end.\n" << std::flush;
113 }
114 
115 template <>
116 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
117  std::unique_ptr<L1CaloEmCollection>& data,
118  int type) {
119  if (verbose())
120  std::cout << "L1DummyProducer::SimpleDigi<L1CaloEmCollection>....\n" << std::flush;
121  int energy = (int)(EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine));
122  unsigned rank = energy & 0x3f;
123  unsigned region = (engine->flat() > 0.5 ? 0 : 1);
124  unsigned card = (unsigned)(7 * engine->flat());
125  unsigned crate = (unsigned)(18 * engine->flat());
126  bool iso = (engine->flat() > 0.4);
127  uint16_t index = (unsigned)(4 * engine->flat());
128  int16_t bx = nevt_;
129  L1CaloEmCand cand(rank, region, card, crate, iso, index, bx);
130  data->push_back(cand);
131  //L1CaloEmCand(unsigned rank, unsigned region, unsigned card, unsigned crate, bool iso, uint16_t index, int16_t bx);
132  if (verbose())
133  std::cout << "L1DummyProducer::SimpleDigi<L1CaloEmCollection> end.\n" << std::flush;
134 }
135 
136 template <>
137 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
138  std::unique_ptr<L1CaloRegionCollection>& data,
139  int type) {
140  if (verbose())
141  std::cout << "L1DummyProducer::SimpleDigi<L1CaloRegionCollection>....\n" << std::flush;
142  int energy = (int)(EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine));
143  unsigned et = energy & 0x3ff;
144  bool overFlow = false; //(engine->flat()>0.4);
145  bool tauVeto = false; //(engine->flat()>0.3);
146  bool mip = false; //(engine->flat()>0.1);
147  bool quiet = false; //(engine->flat()>0.6);
148  unsigned crate = (unsigned)(18 * engine->flat());
149  unsigned card = (unsigned)(7 * engine->flat());
150  unsigned rgn = crate % 2; //(engine->flat()>0.5?0:1);
151  L1CaloRegion cand(et, overFlow, tauVeto, mip, quiet, crate, card, rgn);
152  data->push_back(cand);
153  //L1CaloRegion(unsigned et, bool overFlow, bool tauVeto, bool mip, bool quiet, unsigned crate, unsigned card, unsigned rgn);
154  if (verbose())
155  std::cout << "L1DummyProducer::SimpleDigi<L1CaloRegionCollection> end.\n" << std::flush;
156 }
157 
158 template <>
159 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
160  std::unique_ptr<L1GctEmCandCollection>& data,
161  int type) {
162  if (verbose())
163  std::cout << "L1DummyProducer::SimpleDigi<L1GctEmCandCollection>....\n" << std::flush;
164  bool iso; //= type==0;
165  switch (type) { // 0 iso, 1 noniso
166  case 0:
167  iso = true;
168  break;
169  case 1:
170  iso = false;
171  break;
172  default:
173  throw cms::Exception("L1DummyProducerInvalidType")
174  << "L1DummyProducer::SimpleDigi production of L1GctEmCandCollection "
175  << " invalid type: " << type << std::endl;
176  }
177  int energy = (int)(EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine));
178  unsigned rank = energy & 0x3f;
179  unsigned phi = (unsigned)(18 * engine->flat());
180  unsigned eta = (unsigned)(7 * engine->flat());
181  if (engine->flat() > 0.5) //-z (eta sign)
182  eta = (eta & 0x7) + (0x1 << 3);
183  L1GctEmCand cand(rank, phi, eta, iso);
184  data->push_back(cand);
185  // eta = -6 to -0, +0 to +6. Sign is bit 3, 1 means -ve Z, 0 means +ve Z
186  //L1GctEmCand(unsigned rank, unsigned phi, unsigned eta, bool iso);
187  if (verbose())
188  std::cout << "L1DummyProducer::SimpleDigi<L1GctEmCandCollection> end.\n" << std::flush;
189 }
190 
191 template <>
192 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
193  std::unique_ptr<L1GctJetCandCollection>& data,
194  int type) {
195  if (verbose())
196  std::cout << "L1DummyProducer::SimpleDigi<L1GctJetCandCollection>....\n" << std::flush;
197  bool isFor, isTau;
198  switch (type) { // 0 cen, 1 for, 2 tau
199  case 0:
200  isFor = false;
201  isTau = false;
202  break;
203  case 1:
204  isFor = true;
205  isTau = false;
206  break;
207  case 2:
208  isFor = false;
209  isTau = true;
210  break;
211  default:
212  throw cms::Exception("L1DummyProducerInvalidType")
213  << "L1DummyProducer::SimpleDigi production of L1GctJetCandCollection "
214  << " invalid type: " << type << std::endl;
215  }
216 
217  int energy = (int)(EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine));
218  unsigned rank = energy & 0x3f;
219  unsigned phi = (unsigned)(18 * engine->flat());
220  unsigned eta = (unsigned)(7 * engine->flat());
221  if (engine->flat() > 0.5) //-z (eta sign)
222  eta = (eta & 0x7) + (0x1 << 3);
223  L1GctJetCand cand(rank, phi, eta, isTau, isFor);
224  data->push_back(cand);
225  //L1GctJetCand(unsigned rank, unsigned phi, unsigned eta, bool isTau, bool isFor);
226  if (verbose())
227  std::cout << "L1DummyProducer::SimpleDigi<L1GctJetCandCollection> end.\n" << std::flush;
228 }
229 
230 template <>
231 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
232  std::unique_ptr<L1MuRegionalCandCollection>& data,
233  int type) {
234  if (verbose())
235  std::cout << "L1DummyProducer::SimpleDigi<L1MuRegionalCandCollection>....\n" << std::flush;
236  //typedef std::vector<L1MuRegionalCand> L1MuRegionalCandCollection;
237  assert(type >= 0 && type < 4);
238  unsigned type_idx = type; //tType: 0 DT, 1 bRPC, 2 CSC, 3 fRPC
239  int bx = 0;
240  unsigned phi, eta, pt, charge, ch_valid, finehalo, quality;
241  float phiv(0.), etav(0.), ptv(0.); //linear translation? 0.2pi,-2.5..2.5,0..100
242  for (int i = 0; i < 4; i++) {
243  phi = (int)(144 * engine->flat()); //8bits, 0..143
244  eta = (int)(63 * engine->flat()); //6bits code
245  phiv = phi * 2 * TMath::Pi() / 144.;
246  etav = 2.5 * (-1 + 2 * eta / 63.);
247  pt = ((int)(32 * engine->flat())) & 0x1f; //5bits: 0..31
248  ptv = 100 * (pt / 31.);
249  charge = (engine->flat() > 0.5 ? 0 : 1);
250  ;
251  ch_valid = 0;
252  finehalo = 0;
253  quality = (int)(8 * engine->flat()); //3bits: 0..7
254  L1MuRegionalCand cand(type_idx, phi, eta, pt, charge, ch_valid, finehalo, quality, bx);
255  cand.setPhiValue(phiv);
256  cand.setEtaValue(etav);
257  cand.setPtValue(ptv);
258  data->push_back(cand);
259  }
260  //L1MuRegionalCand(unsigned type_idx, unsigned phi, unsigned eta, unsigned pt,
261  //unsigned charge, unsigned ch_valid, unsigned finehalo, unsigned quality, int bx);
262  if (verbose())
263  std::cout << "L1DummyProducer::SimpleDigi<L1MuRegionalCandCollection> end.\n" << std::flush;
264 }
265 
266 template <>
267 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
268  std::unique_ptr<L1MuDTTrackContainer>& data,
269  int type) {
270  assert(type == 0);
271  int type_idx = type; //choose data type: 0 DT, 1 bRPC, 2 CSC, 3 fRPC
272  if (verbose())
273  std::cout << "L1DummyProducer::SimpleDigi<L1MuDTTrackContainer>....\n" << std::flush;
274  std::unique_ptr<L1MuRegionalCandCollection> tracks(new L1MuRegionalCandCollection());
275  SimpleDigi(engine, tracks, type_idx);
276  typedef std::vector<L1MuDTTrackCand> L1MuDTTrackCandCollection;
277  std::unique_ptr<L1MuDTTrackCandCollection> tracksd(new L1MuDTTrackCandCollection());
278  for (L1MuRegionalCandCollection::const_iterator it = tracks->begin(); it != tracks->end(); it++) {
279  L1MuDTTrackCand* cnd = new L1MuDTTrackCand();
280  cnd->setDataWord(it->getDataWord());
281  cnd->setBx(it->bx());
282  tracksd->push_back(L1MuDTTrackCand());
283  tracksd->push_back(*cnd);
284  }
285  data->setContainer(*tracksd);
286  if (verbose())
287  std::cout << "L1DummyProducer::SimpleDigi<L1MuDTTrackContainer> end.\n" << std::flush;
288  //L1MuDTTrackCand( unsigned dataword, int bx, int uwh, int usc, int utag,
289  // int adr1, int adr2, int adr3, int adr4, int utc );
290 }
291 
292 template <>
293 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
294  std::unique_ptr<L1MuDTChambPhContainer>& data,
295  int type) {
296  if (verbose())
297  std::cout << "L1DummyProducer::SimpleDigi<L1MuDTChambPhContainer>....\n" << std::flush;
298  typedef std::vector<L1MuDTChambPhDigi> Phi_Container;
299  int ntrk = 4;
300  Phi_Container tracks(ntrk);
301  int ubx, uwh, usc, ust, uphr, uphb, uqua, utag, ucnt;
302  for (int i = 0; i < ntrk; i++) {
303  ubx = 0; //bxNum() - bx
304  uwh = 0; //whNum() - wheel
305  usc = 0; //scNum() - sector
306  ust = 0; //stNum() - station
307  uphr = 0; //phi() - radialAngle
308  uphb = 0; //phiB() - bendingAngle
309  uqua = 0; //code() - qualityCode
310  utag = 0; //Ts2Tag() - Ts2TagCode
311  ucnt = 0; //BxCnt() - BxCntCode
312  uwh = (int)(-2 + 5 * engine->flat());
313  usc = (int)(12 * engine->flat());
314  ust = (int)(1. + 4 * engine->flat());
315  uqua = (int)(8 * engine->flat());
316  L1MuDTChambPhDigi cand(ubx, uwh, usc, ust, uphr, uphb, uqua, utag, ucnt);
317  tracks.push_back(cand);
318  }
319  data->setContainer(tracks);
320  //L1MuDTChambPhDigi( int ubx, int uwh, int usc, int ust,
321  // int uphr, int uphb, int uqua, int utag, int ucnt );
322  if (verbose())
323  std::cout << "L1DummyProducer::SimpleDigi<L1MuDTChambPhContainer> end.\n" << std::flush;
324 }
325 
326 template <>
327 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
328  std::unique_ptr<L1MuDTChambThContainer>& data,
329  int type) {
330  if (verbose())
331  std::cout << "L1DummyProducer::SimpleDigi<L1MuDTChambThContainer>....\n" << std::flush;
332  typedef std::vector<L1MuDTChambThDigi> The_Container;
333  int ntrk = 4;
334  The_Container tracks(ntrk);
335  int ubx, uwh, usc, ust, uos[7], uqa[7];
336  for (int i = 0; i < ntrk; i++) {
337  ubx = 0;
338  uwh = (int)(-2 + 5 * engine->flat());
339  usc = (int)(12 * engine->flat());
340  ust = (int)(1. + 4 * engine->flat());
341  for (int j = 0; j < 7; j++) {
342  uos[j] = (engine->flat() > 0.5 ? 0 : 1);
343  uqa[j] = (engine->flat() > 0.5 ? 0 : 1);
344  }
345  L1MuDTChambThDigi cand(ubx, uwh, usc, ust, uos, uqa);
346  tracks.push_back(cand);
347  }
348  data->setContainer(tracks);
349  //L1MuDTChambThDigi( int ubx, int uwh, int usc, int ust,
350  // int* uos, [int* uqual] );
351  //"DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
352  if (verbose())
353  std::cout << "L1DummyProducer::SimpleDigi<L1MuDTChambThContainer> end.\n" << std::flush;
354 }
355 
356 template <>
357 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
358  std::unique_ptr<L1MuGMTCandCollection>& data,
359  int type) {
360  if (verbose())
361  std::cout << "L1DummyProducer::SimpleDigi<L1MuGMTCandCollection>....\n" << std::flush;
362  //typedef std::vector<L1MuGMTCand> L1MuGMTCandCollection;
363  L1MuGMTCand cand(0, nevt_);
364  //cand.setPhiPacked();//8bits
365  //cand.setPtPacked ();//5bits
366  //cand.setQuality ();//3bits
367  //cand.setEtaPacked();//6bits
368  //cand.setIsolation();//1bit
369  //cand.setMIP ();//1bit
370  //cand.setChargePacked();//0:+, 1:-, 2:undef, 3:sync
371  //cand.setBx (nevt_);
372  //set physical values
373  double eng = EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine);
374  double phi = 2 * TMath::Pi() * engine->flat();
375  double eta = 2.5 * (-1 + 2 * engine->flat());
376  cand.setPtValue(eng);
377  cand.setPhiValue(phi);
378  cand.setEtaValue(eta);
379  unsigned engp = (unsigned)(EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine));
380  unsigned phip = (unsigned)(255 * engine->flat());
381  unsigned etap = (unsigned)(63 * engine->flat());
382  cand.setPtPacked(engp & 0x1f);
383  cand.setPhiPacked(phip & 0x7f);
384  cand.setEtaPacked(etap & 0x3f);
385  double r = engine->flat();
386  cand.setIsolation(r > 0.2);
387  cand.setMIP(r > 0.7);
388  cand.setChargePacked(r > 0.5 ? 0 : 1);
389  cand.setBx(0);
390  data->push_back(cand);
391  if (verbose())
392  std::cout << "L1DummyProducer::SimpleDigi<L1MuGMTCandCollection> end.\n" << std::flush;
393 }
394 
395 template <>
396 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
397  std::unique_ptr<L1MuGMTReadoutCollection>& data,
398  int type) {
399  if (verbose())
400  std::cout << "L1DummyProducer::SimpleDigi<L1MuGMTReadoutCollection>....\n" << std::flush;
401  L1MuGMTReadoutRecord rec(0);
402  int bxn = nevt_;
403  rec.setBxNr(bxn);
404  rec.setEvNr(bxn);
405  rec.setBxInEvent(0);
406  std::unique_ptr<L1MuRegionalCandCollection> trks_dttf(new L1MuRegionalCandCollection);
407  std::unique_ptr<L1MuRegionalCandCollection> trks_rpcb(new L1MuRegionalCandCollection);
408  std::unique_ptr<L1MuRegionalCandCollection> trks_csc(new L1MuRegionalCandCollection);
409  std::unique_ptr<L1MuRegionalCandCollection> trks_rpcf(new L1MuRegionalCandCollection);
410  SimpleDigi(engine, trks_dttf, 0);
411  SimpleDigi(engine, trks_rpcb, 1);
412  SimpleDigi(engine, trks_csc, 2);
413  SimpleDigi(engine, trks_rpcf, 3);
414  for (int i = 0; i < 4; i++) {
415  rec.setInputCand(i, trks_dttf->at(i)); //dt : 0..3
416  rec.setInputCand(i + 4, trks_rpcb->at(i)); //rpcb: 4..7
417  rec.setInputCand(i + 8, trks_csc->at(i)); //csc : 8..11
418  rec.setInputCand(i + 12, trks_rpcf->at(i)); //rpcf:12..15
419  }
420  for (int nr = 0; nr < 4; nr++) {
421  int eng = (int)(EBase_ + ESigm_ * CLHEP::RandGaussQ::shoot(engine));
422  rec.setGMTBrlCand(nr, eng & 0x11, eng & 0x11); //set GMT barrel candidate
423  rec.setGMTFwdCand(nr, eng & 0x11, eng & 0x11); //set GMT forward candidate
424  rec.setGMTCand(nr, eng & 0x11); //set GMT candidate (does not store rank)
425  int eta = (int)(14 * engine->flat()); //0..13
426  int phi = (int)(18 * engine->flat()); //0..17
427  rec.setMIPbit(eta, phi);
428  rec.setQuietbit(eta, phi);
429  }
430  data->addRecord(rec);
432  //rec.setBCERR(int bcerr);
433  //rec.setGMTBrlCand(int nr, L1MuGMTExtendedCand const& cand);
434  //rec.setGMTFwdCand(int nr, L1MuGMTExtendedCand const& cand);
435  //rec.setGMTCand (int nr, L1MuGMTExtendedCand const& cand);
436  //rec.setInputCand (int nr, L1MuRegionalCand const& cand);
437  //L1MuGMTReadoutCollection :: std::vector<L1MuGMTReadoutRecord> m_Records;
438  //L1MuGMTReadoutCollection(int nbx) { m_Records.reserve(nbx); };
439  //L1MuGMTExtendedCand(unsigned data, unsigned rank, int bx=0) : L1MuGMTCand (data, bx), m_rank(rank) {}
440  if (verbose())
441  std::cout << "L1DummyProducer::SimpleDigi<L1MuGMTReadoutCollection> end.\n" << std::flush;
442 }
443 
444 template <>
445 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine*, std::unique_ptr<LTCDigiCollection>& data, int type) {
446  if (verbose())
447  std::cout << "L1DummyProducer::SimpleDigi<LTCDigiCollection>....\n" << std::flush;
448  //LTCs are FED id 816-823
449  /*
450  6 64-bit words
451  uint64_t *ld = (uint64_t*)data;
452 
453  word0: 59:56 4 bit ld[0]>>56 & 0xf trigType
454  55:32 24 bit ld[0]>>32 & 0x00ffffff eventID
455  31:20 12 bit ld[0]>>20 & 0xfff bunchNumber
456  19: 8 12 bit ld[0]>> 8 & 0x00000fff sourceID (816-823?)
457 
458  word1: 63:32 32 bit ld[1]>>32 & 0xffffffff orbitNumber
459  31:24 8 bit ld[1]>>24 & 0xff versionNumber
460  3: 0 4 bit ld[1 & 0xf daqPartition
461 
462  word2: 63:32 32 bit ld[0]>>32 & 0xffffffff runNumber
463  31: 0 32 bit ld[0] & 0xffffffff eventNumber
464 
465  word3: 63:32 32 bit ld[3]>>32 & 0xffffffff trigInhibitNumber
466  31: 0 32 bit ld[3] & 0xffffffff trigInputStat
467 
468  word4: 63:0 64 bit ld[4] bstGpsTime
469 
470  word5: (empty)
471  */
472  //need to make up something meaningfull to produce here..
473  //LTCDigi(const unsigned char* data);
474  if (verbose())
475  std::cout << "L1DummyProducer::SimpleDigi<LTCDigiCollection> end.\n" << std::flush;
476 }
477 
478 template <>
479 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
480  std::unique_ptr<CSCCorrelatedLCTDigiCollection>& data,
481  int type) {
482  if (verbose())
483  std::cout << "L1DummyProducer::SimpleDigi<CSCCorrelatedLCTDigiCollection>....\n" << std::flush;
484  //typedef MuonDigiCollection<CSCDetId,CSCCorrelatedLCTDigi> CSCCorrelatedLCTDigiCollection;
485  //CSCCorrelatedLCTDigi(const int trknmb, const int valid, const int quality, const int keywire, const int strip, const int clct_pattern, const int bend, const int bx, const int& mpclink = 0, const uint16_t & bx0=0, const uint16_t & syncErr = 0, const uint16_t & cscID=0);
487  //tbd: set non-trivial random values
488  dg.clear(); // set contents to zero
489  //CSCDetId( int iendcap, int istation, int iring, int ichamber, int ilayer = 0 );
490  enum eMinNum { MIN_ENDCAP = 1, MIN_STATION = 1, MIN_RING = 1, MIN_CHAMBER = 1, MIN_LAYER = 1 };
491  enum eMaxNum { MAX_ENDCAP = 2, MAX_STATION = 4, MAX_RING = 4, MAX_CHAMBER = 36, MAX_LAYER = 6 };
492  float rnd = engine->flat();
493  int ec = (int)(MIN_ENDCAP + (MAX_ENDCAP - MIN_ENDCAP) * rnd + 1);
494  int st = (int)(MIN_STATION + (MAX_STATION - MIN_STATION) * rnd + 1);
495  int rg = (int)(MIN_RING + (MAX_RING - MIN_RING) * rnd + 1);
496  int ch = (int)(MIN_CHAMBER + (MAX_CHAMBER - MIN_CHAMBER) * rnd + 1);
497  int lr = (int)(MIN_LAYER + (MAX_LAYER - MIN_LAYER) * rnd + 1);
498  CSCDetId did = CSCDetId(ec, st, rg, ch, lr);
499  //CSCDetId did = CSCDetId(); //DetId(DetId::Muon, MuonSubdetId::CSC)
500  //MuonDigiCollection::insertDigi(const IndexType& index, const DigiType& digi)
501  data->insertDigi(did, dg);
502  if (verbose())
503  std::cout << "L1DummyProducer::SimpleDigi<CSCCorrelatedLCTDigiCollection> end.\n" << std::flush;
504 }
505 
506 template <>
507 inline void L1DummyProducer::SimpleDigi(CLHEP::HepRandomEngine* engine,
508  std::unique_ptr<L1CSCTrackCollection>& data,
509  int type) {
510  if (verbose())
511  std::cout << "L1DummyProducer::SimpleDigi<L1CSCTrackCollection>...\n" << std::flush;
512  std::unique_ptr<CSCCorrelatedLCTDigiCollection> dgcoll(new CSCCorrelatedLCTDigiCollection);
513  SimpleDigi(engine, dgcoll, 0);
514  csc::L1Track l1trk = csc::L1Track();
515  std::unique_ptr<L1MuRegionalCandCollection> regcoll(new L1MuRegionalCandCollection);
516  SimpleDigi(engine, regcoll, 2);
517  L1MuRegionalCand regcand = *(regcoll->begin());
518  l1trk.setDataWord(regcand.getDataWord());
519  l1trk.setBx(regcand.bx());
520  l1trk.setPhiValue(regcand.phiValue());
521  l1trk.setEtaValue(regcand.etaValue());
522  l1trk.setPtValue(regcand.ptValue());
523  L1CSCTrack l1csctrk = std::make_pair(l1trk, *dgcoll);
524  data->push_back(l1csctrk);
525  //typedef std::vector<L1CSCTrack> L1CSCTrackCollection;
526  //typedef std::pair<csc::L1Track,CSCCorrelatedLCTDigiCollection> L1CSCTrack;
527  //L1Track() : L1MuRegionalCand(), m_name("csc::L1Track") { setType(2); setPtPacked(0); }
528  //L1MuRegionalCand(unsigned dataword = 0, int bx = 0);
529  if (verbose())
530  std::cout << "L1DummyProducer::SimpleDigi<L1CSCTrackCollection> end.\n" << std::flush;
531 }
532 
533 #endif
L1DummyProducer::SimpleDigi
void SimpleDigi(CLHEP::HepRandomEngine *, std::unique_ptr< T > &data, int type=0)
Definition: L1DummyProducer.h:65
L1MuRegionalCand::bx
int bx() const
return bunch crossing identifier
Definition: L1MuRegionalCand.h:79
L1MuRegionalCand::setPtValue
void setPtValue(float ptVal)
Set Pt Value.
Definition: L1MuRegionalCand.h:148
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
mps_fire.i
i
Definition: mps_fire.py:355
L1MuRegionalCand::etaValue
float etaValue() const
get eta-value of muon candidate
Definition: L1MuRegionalCand.cc:87
L1GctJetCand
Level-1 Trigger jet candidate.
Definition: L1GctJetCand.h:17
MessageLogger.h
L1CSCTrack
std::pair< csc::L1Track, CSCCorrelatedLCTDigiCollection > L1CSCTrack
Definition: L1CSCTrackCollection.h:7
EDProducer.h
L1CaloRegion
A calorimeter trigger region (sum of 4x4 trigger towers)
Definition: L1CaloRegion.h:21
L1DummyProducer::~L1DummyProducer
~L1DummyProducer() override
Definition: L1DummyProducer.cc:139
L1MuGMTReadoutRecord::setInputCand
void setInputCand(int nr, unsigned data)
set Input muon
Definition: L1MuGMTReadoutRecord.cc:223
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
HcalTriggerPrimitiveSample
Definition: HcalTriggerPrimitiveSample.h:11
L1MuGMTReadoutRecord::setBxInEvent
void setBxInEvent(int bxie)
Definition: L1MuGMTReadoutRecord.h:105
gather_cfg.cout
cout
Definition: gather_cfg.py:144
L1MuRegionalCand::setPhiValue
void setPhiValue(float phiVal)
Set Phi Value.
Definition: L1MuRegionalCand.h:145
L1MuGMTReadoutRecord::setGMTBrlCand
void setGMTBrlCand(int nr, L1MuGMTExtendedCand const &cand)
set GMT barrel candidate
Definition: L1MuGMTReadoutRecord.cc:230
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
emtf::MAX_ENDCAP
constexpr int MAX_ENDCAP
Definition: Common.h:46
L1GctEmCand
Level-1 Trigger EM candidate at output of GCT.
Definition: L1GctEmCand.h:21
cms::cuda::assert
assert(be >=bs)
L1DummyProducer::ESigm_
double ESigm_
Definition: L1DummyProducer.h:61
L1DummyProducer::nevt_
int nevt_
Definition: L1DummyProducer.h:55
EcalTrigTowerDetId
Definition: EcalTrigTowerDetId.h:14
L1MuGMTReadoutRecord::setGMTFwdCand
void setGMTFwdCand(int nr, L1MuGMTExtendedCand const &cand)
set GMT forward candidate
Definition: L1MuGMTReadoutRecord.cc:244
HcalTriggerPrimitiveDigi::setSample
void setSample(int i, const HcalTriggerPrimitiveSample &sam)
Definition: HcalTriggerPrimitiveDigi.h:43
L1MuGMTReadoutRecord::setMIPbit
void setMIPbit(int eta, int phi)
set MIP bit
Definition: L1MuGMTReadoutRecord.cc:292
L1MuGMTCand
Definition: L1MuGMTCand.h:39
EcalBarrel
Definition: EcalSubdetector.h:10
L1DummyProducer::verbose_
int verbose_
Definition: L1DummyProducer.h:53
L1MuDTTrackCand
Definition: L1MuDTTrackCand.h:33
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
L1MuRegionalCand::getDataWord
unsigned getDataWord() const
return data word
Definition: L1MuRegionalCand.h:107
L1MuRegionalCand::setBx
void setBx(int bx)
Set Bunch Crossing.
Definition: L1MuRegionalCand.h:117
MakerMacros.h
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
L1MuRegionalCand::setEtaValue
void setEtaValue(float etaVal)
Set Eta Value (need to set type, first)
Definition: L1MuRegionalCand.h:151
L1MuGMTReadoutRecord
Definition: L1MuGMTReadoutRecord.h:44
PVValHelper::eta
Definition: PVValidationHelpers.h:69
emtf::MIN_ENDCAP
constexpr int MIN_ENDCAP
Definition: Common.h:45
L1MuRegionalCand::phiValue
float phiValue() const
get phi-value of muon candidate in radians (low edge of bin)
Definition: L1MuRegionalCand.cc:80
L1MuRegionalCand
Definition: L1MuRegionalCand.h:26
L1MuGMTReadoutRecord::setQuietbit
void setQuietbit(int eta, int phi)
set Quiet bit
Definition: L1MuGMTReadoutRecord.cc:306
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
EcalTriggerPrimitiveDigi::setSize
void setSize(int size)
Definition: EcalTriggerPrimitiveDigi.cc:60
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
HcalTriggerPrimitiveDigi
Definition: HcalTriggerPrimitiveDigi.h:13
edm::ParameterSet
Definition: ParameterSet.h:36
EgHLTOffHistBins_cfi.nr
nr
Definition: EgHLTOffHistBins_cfi.py:4
L1DummyProducer::beginJob
void beginJob(void) override
Definition: L1DummyProducer.h:43
Event.h
L1MuRegionalCand::setDataWord
void setDataWord(unsigned dataword)
Set data word.
Definition: L1MuRegionalCand.h:166
CSCDetId
Definition: CSCDetId.h:26
EcalTriggerPrimitiveDigi::setSample
void setSample(int i, const EcalTriggerPrimitiveSample &sam)
Definition: EcalTriggerPrimitiveDigi.h:36
cand
Definition: decayParser.h:34
createfilelist.int
int
Definition: createfilelist.py:10
DEtrait.h
EgHLTOffHistBins_cfi.et
et
Definition: EgHLTOffHistBins_cfi.py:8
edm::EventSetup
Definition: EventSetup.h:57
CSCCorrelatedLCTDigi::clear
void clear()
clear this LCT
Definition: CSCCorrelatedLCTDigi.cc:50
CSCCorrelatedLCTDigiCollection
L1DummyProducer::L1DummyProducer
L1DummyProducer(const edm::ParameterSet &)
Definition: L1DummyProducer.cc:9
alignCSCRings.r
r
Definition: alignCSCRings.py:93
dedefs::DEnsys
const int DEnsys
Definition: DEtrait.h:38
DDAxes::phi
type
type
Definition: HCALResponse.h:21
L1MuGMTReadoutRecord::setGMTCand
void setGMTCand(int nr, L1MuGMTExtendedCand const &cand)
set GMT candidate (does not store rank)
Definition: L1MuGMTReadoutRecord.cc:258
L1DummyProducer::EBase_
double EBase_
Definition: L1DummyProducer.h:60
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
L1DummyProducer::endJob
void endJob() override
Definition: L1DummyProducer.h:46
L1MuDTChambThDigi
Definition: L1MuDTChambThDigi.h:33
Frameworkfwd.h
EcalTriggerPrimitiveDigi
Definition: EcalTriggerPrimitiveDigi.h:16
L1MuGMTReadoutRecord::setEvNr
void setEvNr(int evnr)
Definition: L1MuGMTReadoutRecord.h:106
Exception
Definition: hltDiff.cc:246
HLT_2018_cff.region
region
Definition: HLT_2018_cff.py:81479
L1DummyProducer::instName
std::string instName[dedefs::DEnsys][5]
Definition: L1DummyProducer.h:58
edm::EDProducer
Definition: EDProducer.h:36
csc::L1Track
Definition: L1Track.h:21
L1MuRegionalCandCollection
std::vector< L1MuRegionalCand > L1MuRegionalCandCollection
Definition: RPCRecHitFilter.cc:53
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
L1DummyProducer::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: L1DummyProducer.cc:141
Pi
const double Pi
Definition: CosmicMuonParameters.h:18
EcalTriggerPrimitiveSample
Definition: EcalTriggerPrimitiveSample.h:12
reco::isTau
bool isTau(const Candidate &part)
Definition: pdgIdUtils.h:11
ParameterSet.h
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
L1DummyProducer::verbose
int verbose()
Definition: L1DummyProducer.h:54
L1MuRegionalCand::ptValue
float ptValue() const
get pt-value of muon candidate in GeV
Definition: L1MuRegionalCand.cc:94
edm::Event
Definition: Event.h:73
L1CaloEmCand
Level-1 Region Calorimeter Trigger EM candidate.
Definition: L1CaloEmCand.h:17
HcalTriggerPrimitiveDigi::setSize
void setSize(int size)
Definition: HcalTriggerPrimitiveDigi.cc:7
CSCCorrelatedLCTDigi
Definition: CSCCorrelatedLCTDigi.h:19
L1DummyProducer
Definition: L1DummyProducer.h:37
L1MuDTChambPhDigi
Definition: L1MuDTChambPhDigi.h:31
L1MuGMTReadoutRecord::setBxNr
void setBxNr(int bxnr)
set counters
Definition: L1MuGMTReadoutRecord.h:103
HcalTrigTowerDetId
Definition: HcalTrigTowerDetId.h:14
L1DummyProducer::m_doSys
bool m_doSys[dedefs::DEnsys]
Definition: L1DummyProducer.h:57