CMS 3D CMS Logo

CSCTriggerPrimitivesBuilder.cc
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 //
3 // Class: CSCTriggerPrimitivesBuilder
4 //
5 // Description: Algorithm to build anode, cathode, and correlated LCTs
6 // in each endcap muon CSC chamber from wire and comparator
7 // digis.
8 //
9 // Author List: S. Valuev, UCLA.
10 //
11 //
12 // Modifications:
13 //
14 //-----------------------------------------------------------------------------
15 
22 
24 
29 
30 //------------------
31 // Static variables
32 //------------------
43 
44 //-------------
45 // Constructor
46 //-------------
48 {
49  // Receives ParameterSet percolated down from EDProducer.
50 
51  // special configuration parameters for ME11 treatment
52  edm::ParameterSet commonParams = conf.getParameter<edm::ParameterSet>("commonParam");
53  smartME1aME1b = commonParams.getParameter<bool>("smartME1aME1b");
54  disableME1a = commonParams.getParameter<bool>("disableME1a");
55  disableME42 = commonParams.getParameter<bool>("disableME42");
56 
57  checkBadChambers_ = conf.getParameter<bool>("checkBadChambers");
58 
59  runME11ILT_ = commonParams.existsAs<bool>("runME11ILT")?commonParams.getParameter<bool>("runME11ILT"):false;
60  runME21ILT_ = commonParams.existsAs<bool>("runME21ILT")?commonParams.getParameter<bool>("runME21ILT"):false;
61  runME3141ILT_ = commonParams.existsAs<bool>("runME3141ILT")?commonParams.getParameter<bool>("runME3141ILT"):false;
62  useClusters_ = commonParams.existsAs<bool>("useClusters")?commonParams.getParameter<bool>("useClusters"):false;
63 
64  // Initializing boards.
65  for (int endc = min_endcap; endc <= max_endcap; endc++)
66  {
67  for (int stat = min_station; stat <= max_station; stat++)
68  {
69  int numsubs = ((stat == 1) ? max_subsector : 1);
70  for (int sect = min_sector; sect <= max_sector; sect++)
71  {
72  for (int subs = min_subsector; subs <= numsubs; subs++)
73  {
74  for (int cham = min_chamber; cham <= max_chamber; cham++)
75  {
76  if ((endc <= 0 || endc > MAX_ENDCAPS) ||
77  (stat <= 0 || stat > MAX_STATIONS) ||
78  (sect <= 0 || sect > MAX_SECTORS) ||
79  (subs <= 0 || subs > MAX_SUBSECTORS) ||
80  (cham <= 0 || cham > MAX_CHAMBERS))
81  {
82  edm::LogError("L1CSCTPEmulatorSetupError")
83  << "+++ trying to instantiate TMB of illegal CSC id ["
84  << " endcap = " << endc << " station = " << stat
85  << " sector = " << sect << " subsector = " << subs
86  << " chamber = " << cham << "]; skipping it... +++\n";
87  continue;
88  }
90  // When the motherboard is instantiated, it instantiates ALCT
91  // and CLCT processors.
92  if (stat==1 && ring==1 && smartME1aME1b && !runME11ILT_)
93  tmb_[endc-1][stat-1][sect-1][subs-1][cham-1].reset( new CSCMotherboardME11(endc, stat, sect, subs, cham, conf) );
94  else if (stat==1 && ring==1 && smartME1aME1b && runME11ILT_)
95  tmb_[endc-1][stat-1][sect-1][subs-1][cham-1].reset( new CSCGEMMotherboardME11(endc, stat, sect, subs, cham, conf) );
96  else if (stat==2 && ring==1 && runME21ILT_)
97  tmb_[endc-1][stat-1][sect-1][subs-1][cham-1].reset( new CSCGEMMotherboardME21(endc, stat, sect, subs, cham, conf) );
98  else if ((stat==3 || stat==4) && ring==1 && runME3141ILT_)
99  tmb_[endc-1][stat-1][sect-1][subs-1][cham-1].reset( new CSCMotherboardME3141(endc, stat, sect, subs, cham, conf) );
100  else
101  tmb_[endc-1][stat-1][sect-1][subs-1][cham-1].reset( new CSCMotherboard(endc, stat, sect, subs, cham, conf) );
102  }
103  }
104  }
105  }
106  }
107 
108  // Get min and max BX to sort LCTs in MPC.
109  m_minBX = conf.getParameter<int>("MinBX");
110  m_maxBX = conf.getParameter<int>("MaxBX");
111 
112  // Init MPC
113  m_muonportcard.reset( new CSCMuonPortCard(conf) );
114 }
115 
116 //------------
117 // Destructor
118 //------------
120 {
121 }
122 
123 //------------
124 // Operations
125 //------------
126 // Set configuration parameters obtained via EventSetup mechanism.
128 {
129  // Receives CSCDBL1TPParameters percolated down from ESProducer.
130 
131  for (int endc = min_endcap; endc <= max_endcap; endc++)
132  {
133  for (int stat = min_station; stat <= max_station; stat++)
134  {
135  int numsubs = ((stat == 1) ? max_subsector : 1);
136  for (int sect = min_sector; sect <= max_sector; sect++)
137  {
138  for (int subs = min_subsector; subs <= numsubs; subs++)
139  {
140  for (int cham = min_chamber; cham <= max_chamber; cham++)
141  {
142  tmb_[endc-1][stat-1][sect-1][subs-1][cham-1]->setConfigParameters(conf);
143  }
144  }
145  }
146  }
147  }
148 }
149 
150 // Build anode, cathode, and correlated LCTs in each chamber and fill them
151 // into output collections. Pass collections of wire and comparator digis
152 // to Trigger MotherBoard (TMB) processors, which, in turn, pass them to
153 // ALCT and CLCT processors. Up to 2 anode and 2 cathode LCTs can be found
154 // in each chamber during any bunch crossing. The 2 projections are then
155 // combined into three-dimensional "correlated" LCTs in the TMB. Finally,
156 // MPC processor sorts up to 18 LCTs from 9 TMBs and writes collections of
157 // up to 3 best LCTs per (sub)sector into Event (to be used by the Sector
158 // Receiver).
160  const CSCWireDigiCollection* wiredc,
161  const CSCComparatorDigiCollection* compdc,
162  const GEMPadDigiCollection* gemPads,
163  const GEMPadDigiClusterCollection* gemClusters,
164  CSCALCTDigiCollection& oc_alct,
165  CSCCLCTDigiCollection& oc_clct,
166  CSCCLCTPreTriggerDigiCollection& oc_pretrigger,
167  CSCCLCTPreTriggerCollection & oc_pretrig,
169  CSCCorrelatedLCTDigiCollection& oc_sorted_lct,
170  GEMCoPadDigiCollection& oc_gemcopad)
171 {
172  // CSC geometry.
173  for (int endc = min_endcap; endc <= max_endcap; endc++)
174  {
175  for (int stat = min_station; stat <= max_station; stat++)
176  {
177  int numsubs = ((stat == 1) ? max_subsector : 1);
178  for (int sect = min_sector; sect <= max_sector; sect++)
179  {
180  for (int subs = min_subsector; subs <= numsubs; subs++)
181  {
182  for (int cham = min_chamber; cham <= max_chamber; cham++)
183  {
184  // extract the ring number
186 
187  // case when you want to ignore ME42
188  if (disableME42 && stat==4 && ring==2) continue;
189 
190  CSCMotherboard* tmb = tmb_[endc-1][stat-1][sect-1][subs-1][cham-1].get();
191 
192  tmb->setCSCGeometry(csc_g);
193 
194  // actual chamber number =/= trigger chamber number
196 
197  // 0th layer means whole chamber.
198  CSCDetId detid(endc, stat, ring, chid, 0);
199 
200  // Run processors only if chamber exists in geometry.
201  if (tmb == nullptr || csc_g->chamber(detid) == nullptr) continue;
202 
203  // Skip chambers marked as bad (usually includes most of ME4/2 chambers;
204  // also, there's no ME1/a-1/b separation, it's whole ME1/1)
205  if (checkBadChambers_ && badChambers->isInBadChamber(detid)) continue;
206 
207 
208  // running upgraded ME1/1 TMBs
209  if (stat==1 && ring==1 && smartME1aME1b && !runME11ILT_)
210  {
211  // run the TMB
212  CSCMotherboardME11* tmb11 = static_cast<CSCMotherboardME11*>(tmb);
213  LogTrace("CSCTriggerPrimitivesBuilder")<<"CSCTriggerPrimitivesBuilder::build in E:"<<endc<<" S:"<<stat<<" R:"<<ring;
214  tmb11->run(wiredc,compdc);
215 
216  // get all collections
217  const std::vector<CSCCorrelatedLCTDigi>& lctV = tmb11->readoutLCTs1b();
218  const std::vector<CSCCorrelatedLCTDigi>& lctV1a = tmb11->readoutLCTs1a();
219  std::vector<CSCALCTDigi> alctV1a, alctV = tmb11->alct->readoutALCTs();
220  const std::vector<CSCCLCTDigi>& clctV = tmb11->clct->readoutCLCTs();
221  const std::vector<int> preTriggerBXs = tmb11->clct->preTriggerBXs();
222  const std::vector<CSCCLCTPreTriggerDigi>& pretriggerV = tmb11->clct->preTriggerDigis();
223  const std::vector<CSCCLCTDigi>& clctV1a = tmb11->clct1a->readoutCLCTs();
224  const std::vector<int> preTriggerBXs1a = tmb11->clct1a->preTriggerBXs();
225  const std::vector<CSCCLCTPreTriggerDigi>& pretriggerV1a = tmb11->clct1a->preTriggerDigis();
226 
227  // perform simple separation of ALCTs into 1/a and 1/b
228  // for 'smart' case. Some duplication occurs for WG [10,15]
229  std::vector<CSCALCTDigi> tmpV(alctV);
230  alctV.clear();
231  for (unsigned int al=0; al < tmpV.size(); al++)
232  {
233  if (tmpV[al].getKeyWG()<=15) alctV1a.push_back(tmpV[al]);
234  if (tmpV[al].getKeyWG()>=10) alctV.push_back(tmpV[al]);
235  }
236 
237  LogTrace("CSCTriggerPrimitivesBuilder")<<"CSCTriggerPrimitivesBuilder:: a="<<alctV.size()<<" c="<<clctV.size()<<" l="<<lctV.size()
238  <<" 1a: a="<<alctV1a.size()<<" c="<<clctV1a.size()<<" l="<<lctV1a.size();
239 
240  // ME1/b
241 
242  if (!(lctV.empty()&&alctV.empty()&&clctV.empty())) {
243  LogTrace("L1CSCTrigger")
244  << "CSCTriggerPrimitivesBuilder results in " <<detid;
245  }
246 
247  // put collections in event
248  put(lctV, oc_lct, detid, " ME1b LCT digi");
249  put(alctV, oc_alct, detid, " ME1b ALCT digi");
250  put(clctV, oc_clct, detid, " ME1b CLCT digi");
251  put(pretriggerV, oc_pretrigger, detid, " ME1b CLCT pre-trigger digi");
252  put(preTriggerBXs, oc_pretrig, detid, " ME1b CLCT pre-trigger BX");
253 
254  // ME1/a
255 
256  if (disableME1a) continue;
257 
258  CSCDetId detid1a(endc, stat, 4, chid, 0);
259 
260  if (!(lctV1a.empty()&&alctV1a.empty()&&clctV1a.empty())){
261  LogTrace("L1CSCTrigger") << "CSCTriggerPrimitivesBuilder results in " <<detid1a;
262  }
263 
264  // put collections in event
265  put(lctV1a, oc_lct, detid1a, " ME1a LCT digi");
266  put(alctV1a, oc_alct, detid1a, " ME1a ALCT digi");
267  put(clctV1a, oc_clct, detid1a, " ME1a CLCT digi");
268  put(pretriggerV1a, oc_pretrigger, detid1a, " ME1a CLCT pre-trigger digi");
269  put(preTriggerBXs1a, oc_pretrig, detid1a, " ME1a CLCT pre-trigger BX");
270  } // upgraded TMB
271 
272  // running upgraded ME1/1 TMBs with GEMs
273  else if (stat==1 && ring==1 && smartME1aME1b && runME11ILT_)
274  {
275  // run the TMB
276  CSCGEMMotherboardME11* tmb11GEM = static_cast<CSCGEMMotherboardME11*>(tmb);
277  tmb11GEM->setCSCGeometry(csc_g);
278  tmb11GEM->setGEMGeometry(gem_g);
279  LogTrace("CSCTriggerPrimitivesBuilder")<<"CSCTriggerPrimitivesBuilder::build in E:"<<endc<<" S:"<<stat<<" R:"<<ring;
280  tmb11GEM->run(wiredc, compdc, gemPads);
281 
282  // 0th layer means whole chamber.
283  GEMDetId gemId(detid.zendcap(), 1, 1, 0, chid, 0);
284 
285  // get the collections
286  const std::vector<CSCCorrelatedLCTDigi>& lctV = tmb11GEM->readoutLCTs1b();
287  const std::vector<CSCCorrelatedLCTDigi>& lctV1a = tmb11GEM->readoutLCTs1a();
288  std::vector<CSCALCTDigi> alctV1a, alctV = tmb11GEM->alct->readoutALCTs();
289  const std::vector<CSCCLCTDigi>& clctV = tmb11GEM->clct->readoutCLCTs();
290  const std::vector<int>& preTriggerBXs = tmb11GEM->clct->preTriggerBXs();
291  const std::vector<CSCCLCTPreTriggerDigi>& pretriggerV = tmb11GEM->clct->preTriggerDigis();
292  const std::vector<CSCCLCTDigi>& clctV1a = tmb11GEM->clct1a->readoutCLCTs();
293  const std::vector<int>& preTriggerBXs1a = tmb11GEM->clct1a->preTriggerBXs();
294  const std::vector<CSCCLCTPreTriggerDigi>& pretriggerV1a = tmb11GEM->clct1a->preTriggerDigis();
295  const std::vector<GEMCoPadDigi>& copads = tmb11GEM->coPadProcessor->readoutCoPads();
296 
297  // perform simple separation of ALCTs into 1/a and 1/b
298  // for 'smart' case. Some duplication occurs for WG [10,15]
299  std::vector<CSCALCTDigi> tmpV(alctV);
300  alctV.clear();
301  for (unsigned int al=0; al < tmpV.size(); al++)
302  {
303  if (tmpV[al].getKeyWG()<=15) alctV1a.push_back(tmpV[al]);
304  if (tmpV[al].getKeyWG()>=10) alctV.push_back(tmpV[al]);
305  }
306  //LogTrace("CSCTriggerPrimitivesBuilder")<<"CSCTriggerPrimitivesBuilder:: a="<<alctV.size()<<" c="<<clctV.size()<<" l="<<lctV.size()
307  // <<" 1a: a="<<alctV1a.size()<<" c="<<clctV1a.size()<<" l="<<lctV1a.size();
308 
309  // ME1/b
310  if (!(lctV.empty()&&alctV.empty()&&clctV.empty())) {
311  LogTrace("L1CSCTrigger")
312  << "CSCTriggerPrimitivesBuilder results in " <<detid;
313  }
314 
315  // put collections in event
316  put(lctV, oc_lct, detid, " ME1b LCT digi");
317  put(alctV, oc_alct, detid, " ME1b ALCT digi");
318  put(clctV, oc_clct, detid, " ME1b CLCT digi");
319  put(pretriggerV, oc_pretrigger, detid, " ME1b CLCT pre-trigger digi");
320  put(preTriggerBXs, oc_pretrig, detid, " ME1b CLCT pre-trigger BX");
321  put(copads, oc_gemcopad, gemId, " GEM coincidence pad");
322 
323  // ME1/a
324  if (disableME1a) continue;
325 
326  CSCDetId detid1a(endc, stat, 4, chid, 0);
327 
328  if (!(lctV1a.empty()&&alctV1a.empty()&&clctV1a.empty())){
329  LogTrace("L1CSCTrigger") << "CSCTriggerPrimitivesBuilder results in " <<detid1a;
330  }
331 
332  // put collections in event
333  put(lctV1a, oc_lct, detid1a, " ME1a LCT digi");
334  put(alctV1a, oc_alct, detid1a, " ME1a ALCT digi");
335  put(clctV1a, oc_clct, detid1a, " ME1a CLCT digi");
336  put(pretriggerV1a, oc_pretrigger, detid1a, " ME1a CLCT pre-trigger digi");
337  put(preTriggerBXs1a, oc_pretrig, detid1a, " ME1a CLCT pre-trigger BX");
338  }
339 
340  // running upgraded ME2/1 TMBs
341  else if (stat==2 && ring==1 && runME21ILT_)
342  {
343  // run the TMB
344  CSCGEMMotherboardME21* tmb21GEM = static_cast<CSCGEMMotherboardME21*>(tmb);
345  tmb21GEM->setCSCGeometry(csc_g);
346  tmb21GEM->setGEMGeometry(gem_g);
347  tmb21GEM->run(wiredc, compdc, gemPads);
348 
349  // 0th layer means whole chamber.
350  GEMDetId gemId(detid.zendcap(), 1, 2, 0, chid, 0);
351 
352  // get the collections
353  const std::vector<CSCCorrelatedLCTDigi>& lctV = tmb21GEM->readoutLCTs();
354  const std::vector<CSCALCTDigi>& alctV = tmb21GEM->alct->readoutALCTs();
355  const std::vector<CSCCLCTDigi>& clctV = tmb21GEM->clct->readoutCLCTs();
356  const std::vector<int>& preTriggerBXs = tmb21GEM->clct->preTriggerBXs();
357  const std::vector<CSCCLCTPreTriggerDigi>& pretriggerV = tmb21GEM->clct->preTriggerDigis();
358  const std::vector<GEMCoPadDigi>& copads = tmb21GEM->coPadProcessor->readoutCoPads();
359 
360  if (!(alctV.empty() && clctV.empty() && lctV.empty())) {
361  LogTrace("L1CSCTrigger")
362  << "CSCTriggerPrimitivesBuilder got results in " <<detid;
363  }
364 
365  // put collections in event
366  put(lctV, oc_lct, detid, " ME21 LCT digi");
367  put(alctV, oc_alct, detid, " ME21 ALCT digi");
368  put(clctV, oc_clct, detid, " ME21 CLCT digi");
369  put(pretriggerV, oc_pretrigger, detid, " ME21 CLCT pre-trigger digi");
370  put(preTriggerBXs, oc_pretrig, detid, " ME21 CLCT pre-trigger BX");
371  put(copads, oc_gemcopad, gemId, " GEM coincidence pad");
372  }
373  // running upgraded ME3/1-ME4/1 TMBs
374  else if ((stat==3 or stat==4) && ring==1 && runME3141ILT_)
375  {
376  // run the TMB
377  CSCMotherboardME3141* tmb3141 = static_cast<CSCMotherboardME3141*>(tmb);
378  tmb3141->setCSCGeometry(csc_g);
379  tmb3141->run(wiredc, compdc);
380 
381  // get the collections
382  const std::vector<CSCCorrelatedLCTDigi>& lctV = tmb3141->readoutLCTs();
383  const std::vector<CSCALCTDigi>& alctV = tmb3141->alct->readoutALCTs();
384  const std::vector<CSCCLCTDigi>& clctV = tmb3141->clct->readoutCLCTs();
385  const std::vector<int>& preTriggerBXs = tmb3141->clct->preTriggerBXs();
386  const std::vector<CSCCLCTPreTriggerDigi>& pretriggerV = tmb3141->clct->preTriggerDigis();
387 
388  if (!(alctV.empty() && clctV.empty() && lctV.empty())) {
389  LogTrace("L1CSCTrigger")
390  << "CSCTriggerPrimitivesBuilder got results in " <<detid;
391  }
392 
393  // put collections in event
394  put(lctV, oc_lct, detid, " ME21 LCT digi");
395  put(alctV, oc_alct, detid, " ME21 ALCT digi");
396  put(clctV, oc_clct, detid, " ME21 CLCT digi");
397  put(pretriggerV, oc_pretrigger, detid, " ME21 CLCT pre-trigger digi");
398  put(preTriggerBXs, oc_pretrig, detid, " ME21 CLCT pre-trigger BX");
399  }
400 
401  // running non-upgraded TMB
402  else
403  {
404  // run the TMB
405  tmb->run(wiredc,compdc);
406 
407  // get the collections
408  const std::vector<CSCCorrelatedLCTDigi>& lctV = tmb->readoutLCTs();
409  const std::vector<CSCALCTDigi>& alctV = tmb->alct->readoutALCTs();
410  const std::vector<CSCCLCTDigi>& clctV = tmb->clct->readoutCLCTs();
411  const std::vector<int>& preTriggerBXs = tmb->clct->preTriggerBXs();
412  const std::vector<CSCCLCTPreTriggerDigi>& pretriggerV = tmb->clct->preTriggerDigis();
413 
414  if (!(alctV.empty() && clctV.empty() && lctV.empty())) {
415  LogTrace("L1CSCTrigger")
416  << "CSCTriggerPrimitivesBuilder got results in " <<detid;
417  }
418 
419  // put collections in event
420  const std::string chamberString("ME" + std::to_string(stat) + "" + std::to_string(ring) + " ");
421  put(lctV, oc_lct, detid, chamberString + " LCT digi");
422  put(alctV, oc_alct, detid, chamberString + " ALCT digi");
423  put(clctV, oc_clct, detid, chamberString + " CLCT digi");
424  put(pretriggerV, oc_pretrigger, detid, chamberString + " CLCT pre-trigger digi");
425  put(preTriggerBXs, oc_pretrig, detid, chamberString + " CLCT pre-trigger BX");
426  } // non-upgraded TMB
427  }
428  }
429  }
430  }
431  }
432 
433  // run MPC simulation
434  m_muonportcard->loadDigis(oc_lct);
435 
436  // sort the LCTs per sector
437  // insert them into the result vector
438  std::vector<csctf::TrackStub> result;
439  for(int bx = m_minBX; bx <= m_maxBX; ++bx)
440  for(int e = min_endcap; e <= max_endcap; ++e)
441  for(int st = min_station; st <= max_station; ++st)
442  for(int se = min_sector; se <= max_sector; ++se)
443  {
444  if(st == 1)
445  {
446  std::vector<csctf::TrackStub> subs1, subs2;
447  subs1 = m_muonportcard->sort(e, st, se, 1, bx);
448  subs2 = m_muonportcard->sort(e, st, se, 2, bx);
449  result.insert(result.end(), subs1.begin(), subs1.end());
450  result.insert(result.end(), subs2.begin(), subs2.end());
451  }
452  else
453  {
454  std::vector<csctf::TrackStub> sector;
455  sector = m_muonportcard->sort(e, st, se, 0, bx);
456  result.insert(result.end(), sector.begin(), sector.end());
457  }
458  }
459 
460  // now convert csctf::TrackStub back into CSCCorrelatedLCTDigi
461  // put MPC stubs into the event
462  std::vector<csctf::TrackStub>::const_iterator itr = result.begin();
463  for (; itr != result.end(); itr++)
464  {
465  oc_sorted_lct.insertDigi(CSCDetId(itr->getDetId().rawId()), *(itr->getDigi()));
466  LogDebug("L1CSCTrigger")
467  << "MPC " << *(itr->getDigi()) << " found in ME"
468  << ((itr->endcap() == 1) ? "+" : "-") << itr->station() << "/"
469  << CSCDetId(itr->getDetId().rawId()).ring() << "/"
470  << CSCDetId(itr->getDetId().rawId()).chamber()
471  << " (sector " << itr->sector()
472  << " trig id. " << itr->cscid() << ")" << "\n";
473  }
474 }
#define LogDebug(id)
T getParameter(std::string const &) const
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc)
void setCSCGeometry(const CSCGeometry *g)
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc)
std::unique_ptr< CSCMotherboard > tmb_[MAX_ENDCAPS][MAX_STATIONS][MAX_SECTORS][MAX_SUBSECTORS][MAX_CHAMBERS]
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:186
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiCollection *gemPads) override
static int minEndcapId()
Definition: CSCDetId.h:236
void setGEMGeometry(const GEMGeometry *g)
set CSC and GEM geometries for the matching needs
static int maxTriggerSectorId()
static int maxStationId()
Definition: CSCDetId.h:239
void setCSCGeometry(const CSCGeometry *g)
static int minTriggerSectorId()
static int ringFromTriggerLabels(int station, int triggerCSCID)
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1b() const
std::unique_ptr< CSCCathodeLCTProcessor > clct1a
void setConfigParameters(const CSCDBL1TPParameters *conf)
bool isInBadChamber(IndexType ichamber) const
Is the chamber with index &#39;ichamber&#39; flagged as bad?
void build(const CSCBadChambers *badChambers, const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiCollection *gemPads, const GEMPadDigiClusterCollection *gemPadClusters, CSCALCTDigiCollection &oc_alct, CSCCLCTDigiCollection &oc_clct, CSCCLCTPreTriggerDigiCollection &oc_clctpretrigger, CSCCLCTPreTriggerCollection &oc_pretrig, CSCCorrelatedLCTDigiCollection &oc_lct, CSCCorrelatedLCTDigiCollection &oc_sorted_lct, GEMCoPadDigiCollection &oc_gemcopad)
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1a() const
CSCTriggerPrimitivesBuilder(const edm::ParameterSet &)
std::unique_ptr< GEMCoPadProcessor > coPadProcessor
static int minStationId()
Definition: CSCDetId.h:238
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
void run(const std::vector< int > w_time[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES], const std::vector< int > hs_times[CSCConstants::NUM_LAYERS][CSCConstants::NUM_HALF_STRIPS_7CFEBS], const std::vector< int > ds_times[CSCConstants::NUM_LAYERS][CSCConstants::NUM_HALF_STRIPS_7CFEBS])
static int maxEndcapId()
Definition: CSCDetId.h:237
std::unique_ptr< CSCCathodeLCTProcessor > clct1a
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1a() const
#define LogTrace(id)
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1b() const
short int zendcap() const
Definition: CSCDetId.h:100
static int minTriggerSubSectorId()
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
Definition: CSCGeometry.cc:118
void put(const T &, S &, const CSCDetId &, std::string comment)
bool checkBadChambers_
a flag whether to skip chambers from the bad chambers map
std::vector< CSCCorrelatedLCTDigi > readoutLCTs() const
std::unique_ptr< CSCAnodeLCTProcessor > alct
std::unique_ptr< CSCCathodeLCTProcessor > clct
std::unique_ptr< CSCMuonPortCard > m_muonportcard
std::vector< CSCCorrelatedLCTDigi > readoutLCTs() const
static int chamberFromTriggerLabels(int TriggerSector, int TriggerSubSector, int station, int TriggerCSCID)
std::vector< CSCCorrelatedLCTDigi > readoutLCTs() const
static int maxTriggerSubSectorId()
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiCollection *gemPads) override