CMS 3D CMS Logo

DTBtiCard.cc
Go to the documentation of this file.
1 //-------------------------------------------------
2 //
3 // Class: DTBtiCard
4 //
5 // Description: Contains active DTBtiChips
6 //
7 //
8 // Author List:
9 // C. Grandi
10 // Modifications:
11 // S. Vanini
12 // 22/VI/04 SV: last trigger code update - digi offset subtracted from digi time
13 // III/05 SV : NEWGEO : trigger in new geometry !
14 // 05/II/07 SV : new DTConfig update
15 // 30/III/07 SV : config with DTConfigManager every single chip
16 //----------------------------------------------------------------
17 
18 //-----------------------
19 // This Class's Header --
20 //-----------------------
22 
23 //-------------------------------
24 // Collaborating Class Headers --
25 //-------------------------------
30 
34 
39 
45 
46 //---------------
47 // C++ Headers --
48 //---------------
49 #include <iostream>
50 #include <cmath>
51 #include <utility>
52 #include <vector>
53 
54 using namespace edm;
55 
56 //----------------
57 // Constructors --
58 //----------------
59 
61  //_configBti = new DTConfigBti(bti_pset);
62  //_configBti->print();
63 
64  //DTChamberId sid = ChamberId();
65  //_conf_bti_map = conf_manager->getDTConfigBtiMap(sid);
66  //_debug = conf_manager->getDTTPGDebug();
67 
68  //_finedelay = conf_manager->getDTConfigTrigUnit(sid)->MCSetupTime();
69  //_MCdelay = conf_manager->getDTConfigTrigUnit(sid)->MCDigiOffset();
70 }
71 
72 //--------------
73 // Destructor --
74 //--------------
75 
77  localClear();
78  //delete _conf_Bti;
79 }
80 
81 //--------------
82 // Operations --
83 //--------------
84 
87  localClear();
88 }
89 
91  DTChamberId sid = ChamberId();
92  _conf_bti_map = conf->getDTConfigBtiMap(sid);
93  _debug = conf->getDTTPGDebug();
95 
96  // get bti acceptance flag
97  _flag_acc = conf->useAcceptParam();
98 }
99 
101  // Clear the maps
102  for (int i = 0; i < 3; i++) {
103  for (BTI_iter p = _btimap[i].begin(); p != _btimap[i].end(); p++) {
104  delete (*p).second;
105  }
106  _btimap[i].clear();
107  }
108 
109  //clear digis
110  std::vector<DTDigi*>::const_iterator p;
111  for (p = _digis.begin(); p < _digis.end(); p++)
112  delete (*p);
113  _digis.clear();
114 }
115 
116 // void
117 // //DTBtiCard::loadBTI() {
118 // DTBtiCard::loadBTI(const DTDigiCollection dtDigis) {
119 
120 // localClear();
121 
122 // int ndigis = stat()->ndigis();
123 
124 // // /*
125 // // //SV version for tb2003 data
126 // // // loop over chambers, superlayers and layers
127 // // DTBXSetUp* setup = Singleton<DTBXSetUp>::instance();
128 // // DTDetectorMap* detMap = setup->chamberMap();
129 // // std::vector<DTChamber*> chambers = detMap->chambers();
130 // // DTDetectorMap::ChamIter stat;
131 // // for ( stat = chambers.begin(); stat != chambers.end(); stat++ ) {
132 // // */
133 
134 // // // Get DTDigi's from DTChamber (stat is DTChamber*)
135 // // // Loop over all Digis and make a local copy
136 // // // Store a pointer to them in the relevant DTBtiChip's
137 
138 // if(ndigis){
139 
140 // if(debug()){
141 // std::cout << "====================================================" << std::endl;
142 // std::cout << ndigis << " DIGIS in wheel " << wheel() <<
143 // " station " << station() <<
144 // " sector " << sector() << std::endl;
145 // }
146 
147 // std::vector<DTDigi> digi_container = stat()->digis();
148 // std::vector<DTDigi>::const_iterator digi_iter;
149 
150 // for(digi_iter=digi_container.begin(); digi_iter<digi_container.end(); digi_iter++){
151 
152 // /*Testbeam 2004 specific code
153 // //digi.time in ns; digi.countsTDC in tdcunits
154 // //float tdrift = (*digi_iter).time()-1.0*DTDigiParameters::offset;
155 // //TB2004 version: no offset subtraction because digi are already t0 off!!!!
156 // //tdrift must be float, otherwise DTDigi constructor assumes tdcunits!
157 // //add chamber specific delay
158 // int tdctime = (*digi_iter).countsTDC();
159 // int mcdelay = (stat()->id().station()==1) ? config()->SetupTimeMB1() : config()->SetupTimeMB
160 // 3();
161 // tdctime += mcdelay;
162 // */
163 // float tdrift = (*digi_iter).time()-1.0*DTDigiParameters::offset;
164 // DTWireId idwire( wheel(), station(), sector(), (*digi_iter).slayer(),
165 // (*digi_iter).layer(), (*digi_iter).wire() );
166 
167 // /*
168 // //NEWGEO TEST: sw testpulse for testing new geometry in wire 1 of each sl
169 // for(int l=0;l<12;l++){
170 // int sl = int(l/4.) + 1;
171 // if(station()!=4 || sl!=2){
172 // int lay = int(fmod(l,4.)) + 1;
173 // int wire = 2*sector();
174 // if(geom()->posFE(sl)==0 || station()==1 || sl==2)
175 // wire += lay==4? 1:2;
176 // else if(geom()->posFE(sl)==1)
177 // wire += lay==3? 3:2;
178 
179 // //int wire = 1;
180 // //tmax=400ns, straight tracks in middle : 200ns (float for ns, int for tdc_counts)
181 // //float tdrift = 187.5;
182 // float tdrift = 200.0;
183 // DTWireId idwire( wheel(), station(), sector(), sl, lay, wire);
184 // */
185 
186 // DTDigi* pdigi = new DTDigi(idwire,tdrift);
187 // _digis.push_back(const_cast<DTDigi*>(pdigi));
188 
189 // if(debug())
190 // pdigi->print();
191 
192 // int sln = pdigi->slayer();
193 // int layn = pdigi->layer();
194 // int tube = pdigi->wire();
195 
196 // // map in FE channel number:
197 // int nch = geom()->mapTubeInFEch(sln,layn,tube);
198 
199 // // assign ch numbers to btis: depends on layer staggering!
200 // int nbti = nch + geom()->layerFEStaggering(sln,layn);
201 
202 // if(debug()){
203 // std::cout << "FE ch " << nch;
204 // std::cout << " of bti " << nbti;
205 // std::cout << " staggering " << geom()->layerFEStaggering(sln,layn);
206 // std::cout << " now nbti is " << nch;
207 // std::cout << " SL phi offset " << geom()->phiSLOffset() << std::endl;
208 // }
209 
210 // switch(layn) {
211 // case 1:
212 // if(activeGetBTI(sln, nbti )) activeGetBTI(sln, nbti )->add_digi(4, pdigi);
213 // if(activeGetBTI(sln, nbti-1)) activeGetBTI(sln, nbti-1)->add_digi(8, pdigi);
214 // break;
215 // case 2:
216 // if(activeGetBTI(sln, nbti )) activeGetBTI(sln, nbti )->add_digi(2, pdigi);
217 // if(activeGetBTI(sln, nbti-1)) activeGetBTI(sln, nbti-1)->add_digi(6, pdigi);
218 // break;
219 // case 3:
220 // if(activeGetBTI(sln, nbti )) activeGetBTI(sln, nbti )->add_digi(3, pdigi);
221 // if(activeGetBTI(sln, nbti-1)) activeGetBTI(sln, nbti-1)->add_digi(7, pdigi);
222 // break;
223 // case 4:
224 // if(activeGetBTI(sln, nbti )) activeGetBTI(sln, nbti )->add_digi(1, pdigi);
225 // if(activeGetBTI(sln, nbti-1)) activeGetBTI(sln, nbti-1)->add_digi(5, pdigi);
226 // if(activeGetBTI(sln, nbti-2)) activeGetBTI(sln, nbti-2)->add_digi(9, pdigi);
227 // break;
228 // }
229 // }//end loop on digi
230 
231 // if(debug())
232 // std::cout << "====================================================" << std::endl;
233 
234 // }//end if(ndigis)
235 // }
236 
238  localClear();
239 
240  if (debug()) {
241  std::cout << "DTBtiCard::loadBTI called for wheel=" << wheel();
242  std::cout << ", station=" << station();
243  std::cout << ", sector=" << sector() << std::endl;
244  }
245 
247  for (detUnitIt = dtDigis.begin(); detUnitIt != dtDigis.end(); ++detUnitIt) {
248  const DTLayerId& id = (*detUnitIt).first;
249  const DTDigiCollection::Range& range = (*detUnitIt).second;
250 
251  // DTLayerId print-out
252  if (debug()) {
253  std::cout << "--------------" << std::endl;
254  std::cout << "id: " << id;
255  }
256 
257  // Loop over the digis of this DetUnit
258  for (DTDigiCollection::const_iterator digiIt = range.first; digiIt != range.second; ++digiIt) {
259  int tube = (*digiIt).wire();
260  const DTWireId tubeid(id, tube);
261  float tdrift = (*digiIt).time() - _pedestals->getOffset(tubeid);
262 
263  if (debug()) {
264  std::cout << " digi time : " << (*digiIt).time();
265  std::cout << " pedestal offset : " << _pedestals->getOffset(tubeid) << std::endl;
266  std::cout << " drift time after subtraction : " << tdrift << std::endl;
267  }
268 
269  if (tdrift < 500 && tdrift > -500) {
270  if (debug())
271  (*digiIt).print();
272 
273  // get bti number for access to the configuration for this bti chip : SV
274  // FIX: for the moment take first bti configuration!!!!! ok fixed
275  DTSuperLayerId slnum = id.superlayerId();
276  //DTChamberId dtcham =id.chamberId();
277  int sln = slnum.superlayer();
278  int layn = id.layer();
279  //int tube = (*digiIt).wire();
280 
281  // map in FE channel number: SL theta tubes are numbered inversely w.r.t. hardware setup in new geometry 19/06/06
282  // assign ch numbers to btis: in new geometry does not depend on layer staggering anymore! Same staggering anywhere.
283  //int nch = geom()->mapTubeInFEch(sln,layn,tube);
284  // int nbti = nch + geom()->layerFEStaggering(sln,layn);
285 
286  int nch = geom()->mapTubeInFEch(sln, layn, tube);
287  int nbti = nch;
288 
289  if (debug()) {
290  std::cout << "FE ch " << nch;
291  std::cout << " of bti " << nbti;
292  // std::cout << " staggering " << geom()->layerFEStaggering(sln,layn);
293  std::cout << " now nbti is " << nch << std::endl;
294  // std::cout << " SL phi offset " << geom()->phiSLOffset() << std::endl;
295  }
296 
297  // FIXED get configuration for the nbti chip Identifier, and from it MCdelay + finedelay
298  //DTChamberId sid = geom()->statId();
299  //DTBtiId _id = DTBtiId(sid, sln, nbti);
300 
301  DTDigi* pdigi = new DTDigi((*digiIt).wire(), tdrift);
302  _digis.push_back(pdigi);
303 
304  switch (layn) {
305  case 1:
306  if (activeGetBTI(sln, nbti))
307  activeGetBTI(sln, nbti)->add_digi(4, pdigi);
308  if (activeGetBTI(sln, nbti - 1))
309  activeGetBTI(sln, nbti - 1)->add_digi(8, pdigi);
310  break;
311  case 2:
312  if (activeGetBTI(sln, nbti))
313  activeGetBTI(sln, nbti)->add_digi(2, pdigi);
314  if (activeGetBTI(sln, nbti - 1))
315  activeGetBTI(sln, nbti - 1)->add_digi(6, pdigi);
316  break;
317  case 3:
318  if (activeGetBTI(sln, nbti))
319  activeGetBTI(sln, nbti)->add_digi(3, pdigi);
320  if (activeGetBTI(sln, nbti - 1))
321  activeGetBTI(sln, nbti - 1)->add_digi(7, pdigi);
322  break;
323  case 4:
324  if (activeGetBTI(sln, nbti))
325  activeGetBTI(sln, nbti)->add_digi(1, pdigi);
326  if (activeGetBTI(sln, nbti - 1))
327  activeGetBTI(sln, nbti - 1)->add_digi(5, pdigi);
328  if (activeGetBTI(sln, nbti - 2))
329  activeGetBTI(sln, nbti - 2)->add_digi(9, pdigi);
330  break;
331  }
332  } //end loop on digi
333  // }//end loop on lay
334  // }//end loop on sl
335  }
336  }
337 }
338 
340  int nbtisig = _btimap[0].size() + _btimap[1].size() + _btimap[2].size();
341 
342  if (debug()) {
343  std::cout << "DTBtiCard::runBTI called for wheel=" << wheel();
344  std::cout << ", station=" << station();
345  std::cout << ", sector=" << sector();
346  std::cout << ", " << nbtisig << " BTIs with signal" << std::endl;
347  }
348 
349  if (nbtisig) {
350  if (debug()) {
351  std::cout << "====================================================" << std::endl;
352  std::cout << " BTI triggers " << std::endl;
353  }
354 
355  // run DTBtiChip algorithm on all non-empty BTI
356  for (int sl = 1; sl <= 3; sl++) {
357  if (!_btimap[sl - 1].empty()) {
358  BTI_iter pbti;
359  for (pbti = _btimap[sl - 1].begin(); pbti != _btimap[sl - 1].end(); pbti++) {
360  DTBtiChip* bti = (*pbti).second;
361  if (bti->number() < 200)
362  bti->run();
363  for (int step = DTConfig::NSTEPF; step <= DTConfig::NSTEPL; step++) {
364  if (bti->nTrig(step) > 0) {
365  _cache.push_back(bti->triggerData(step, 1));
366  //localPosition(&(bti->triggerData(step,1)));
367  //localDirection(&(bti->triggerData(step,1)));
368  }
369  }
370  }
371  }
372  }
373 
374  if (debug())
375  std::cout << "====================================================" << std::endl;
376  } //end if(nbtisig)
377 }
378 
380  DTBtiChip* bti = nullptr;
381  //check if BTi is out of range before all
382  if (n < 1 || n > geom()->nCell(sl)) {
383  if (debug()) {
384  std::cout << "DTBtiCard::activeGetBTI :";
385  std::cout << " invalid bti number: " << n;
386  std::cout << " not in range [1," << geom()->nCell(sl) << "]";
387  std::cout << " dummy BTI returned!" << std::endl;
388  }
389  sl = 1;
390  n = 999;
391  return bti;
392  }
393 
394  // get configuration for this chip Identifier
395  DTChamberId sid = geom()->statId();
396  DTBtiId _id = DTBtiId(sid, sl, n);
397 
398  //debug this chip
399  int _debug_bti = config_bti(_id)->debug();
400 
401  if (_debug_bti == 3) {
402  std::cout << "DTBtiCard::activeGetBTI :";
403  std::cout << " bti number: " << n << std::endl;
404  }
405 
406  if (sl < 1 || sl > 3) {
407  if (_debug_bti > 1) {
408  std::cout << "DTBtiCard::activeGetBTI :";
409  std::cout << " invalid superlayer number: " << sl;
410  std::cout << " dummy BTI returned!" << std::endl;
411  }
412  sl = 1;
413  n = 999;
414  return bti;
415  }
416 
417  BTI_iter pbti = _btimap[sl - 1].find(n);
418  if (pbti != _btimap[sl - 1].end()) {
419  bti = (*pbti).second;
420  } else {
421  bti = new DTBtiChip(this, geom(), sl, n, config_bti(_id));
422  _btimap[sl - 1][n] = bti;
423  }
424  return bti;
425 }
426 
427 DTBtiChip* DTBtiCard::getBTI(int sl, int n) const {
428  if (sl < 1 || sl > 3 || n == 999) {
429  std::cout << "DTBtiCard::getBTI :";
430  std::cout << " invalid superlayer number: " << sl;
431  std::cout << " 0 returned!" << std::endl;
432  return nullptr;
433  }
434  BTI_const_iter pbti = _btimap[sl - 1].find(n);
435  if (pbti == _btimap[sl - 1].end()) {
436  return nullptr;
437  }
438  return (*pbti).second;
439 }
440 
441 std::vector<DTBtiChip*> DTBtiCard::btiList(int sl) {
442  std::vector<DTBtiChip*> blist;
443 
444  if (size() < 1)
445  return blist;
446 
447  if (sl < 1 || sl > 3) {
448  std::cout << "DTBtiCard::btiList :";
449  std::cout << " invalid superlayer number: " << sl;
450  std::cout << " empty list returned" << std::endl;
451  return blist;
452  }
453 
454  for (BTI_const_iter p = _btimap[sl - 1].begin(); p != _btimap[sl - 1].end(); p++) {
455  blist.push_back((*p).second);
456  }
457  return blist;
458 }
459 
461  DTBtiId btiid = td.parentId();
462  if (!(btiid.wheel() == wheel() && btiid.sector() == sector() && btiid.station() == station()))
463  return nullptr;
464  std::cout << "DTBtiCard::trigger: trigger not belonging to this card! ";
465  std::cout << "card=(" << wheel() << "," << station() << "," << sector() << ") ";
466  std::cout << "trig=(" << btiid.wheel() << "," << btiid.station() << "," << btiid.sector() << ")";
467  // get the appropriate BTI
468  DTBtiChip* bti = activeGetBTI(btiid.superlayer(), btiid.bti());
469  // create a new trigger in the BTI
470  auto trig = std::make_unique<DTBtiTrig>(bti, td);
471  auto pTrig = trig.get();
472  // add the trigger to the BTI
473  bti->addTrig(td.step(), std::move(trig));
474  // return the trigger
475  return pTrig;
476 }
477 
478 /*
479 LocalPoint
480 DTBtiCard::localPosition(const DTTrigData* tr) const {
481 //OBSOLETE!!!!!
482  //@@ patch for Sun 4.2 compiler
483  DTBtiTrigData* trig = dynamic_cast<DTBtiTrigData*>(const_cast<DTTrigData*>(tr));
484  // const DTBtiTrigData* trig = dynamic_cast<const DTBtiTrigData*>(tr);
485  if(!trig) {
486  std::cout << "DTBtiCard::localPosition called with wrong argument!" << std::endl;
487  return LocalPoint(0,0,0);
488  }
489  float x = geom()->localPosition(trig->parentId()).x();
490  float y = geom()->localPosition(trig->parentId()).y();
491  float z = geom()->localPosition(trig->parentId()).z();
492 
493  //FE position
494  int FE = geom()->posFE(trig->parentId().superlayer());
495 
496  //trigger position in the BTI frame
497  float xt = 0;
498  float yt = 0;
499  float xtrig = (float)trig->X() * geom()->cellPitch() / (config()->ST());
500  if(trig->btiSL()==2)
501  yt = - xtrig;
502  else
503  xt = + xtrig;
504 
505  if(FE==1){//FE in negative y
506  xt = - xt;
507  yt = - yt;
508  }
509 
510  std::cout << "DTBtiCard::localPosition of BTI in ("<<x<<","<<y<<","<<z<<")"<<std::endl;
511  std::cout << " called for trig ";
512  trig->print();
513  std::cout << "in Local Point ("<<x+xt<<","<<y+yt<<","<<z<<")"<<std::endl;
514 
515  return LocalPoint(x+xt,y+yt,z);
516 }
517 */
518 
520  //NEWGEO!!!
521  const DTBtiTrigData* trig = dynamic_cast<const DTBtiTrigData*>(tr);
522  if (!trig) {
523  std::cout << "DTBtiCard::localPosition called with wrong argument!" << std::endl;
524  return LocalPoint(0, 0, 0);
525  }
526 
527  //BTI position in chamber frame
528  float x = geom()->localPosition(trig->parentId()).x();
529  float y = geom()->localPosition(trig->parentId()).y();
530  float z = geom()->localPosition(trig->parentId()).z();
531 
532  //FE position
533  //int FE = geom()->posFE(trig->parentId().superlayer());
534 
535  //trigger position in the BTI frame
536  float xt = 0;
537  float yt = 0;
538 
539  DTBtiId _btiid = trig->parentId();
540  float xtrig = (float)trig->X() * geom()->cellPitch() / (config_bti(_btiid)->ST());
541  if (trig->btiSL() == 2)
542  yt = -xtrig;
543  else
544  xt = +xtrig;
545 
546  // 17/07/06 Should be obsolete in CMSSW
547  // if(FE==1){//FE in negative y
548  // xt = - xt;
549  // yt = - yt;
550  // }
551 
552  if (debug()) {
553  std::cout << "DTBtiCard::localPosition of BTI in (" << x << "," << y << "," << z << ")" << std::endl;
554  std::cout << " called for trig ";
555  trig->print();
556  std::cout << "in Local Point (" << x + xt << "," << y + yt << "," << z << ")" << std::endl;
557  }
558 
559  return LocalPoint(x + xt, y + yt, z);
560 }
561 
563  //NEWGEO
564  const DTBtiTrigData* trig = dynamic_cast<const DTBtiTrigData*>(tr);
565  //this method is only for check purpose
566  if (!trig) {
567  std::cout << "DTBtiCard::localDirection called with wrong argument!" << std::endl;
568  return LocalVector(0, 0, 0);
569  }
570 
571  //FE position
572  //int FE = geom()->posFE(trig->parentId().superlayer());
573 
574  // psi in BTI frame
575  DTBtiId _btiid = trig->parentId();
576  float psi = atan((float)(trig->K() - config_bti(_btiid)->ST()) * geom()->cellPitch() /
577  (2 * geom()->cellH() * config_bti(_btiid)->ST()));
578  // (xd,yd,zd) in chamber frame
579  float xd = 0;
580  float yd = 0;
581  float zd = -cos(psi);
582  if (trig->btiSL() == 2)
583  yd = sin(psi);
584  else
585  xd = -sin(psi);
586 
587  // 17/07/06 Ths should be obsolete in CMSSW
588  // if(FE==1){//FE in negative y
589  // xd = - xd;
590  // yd = - yd;
591  // }
592 
593  if (debug()) {
594  //BTI position in chamber frame
595  float xb = geom()->localPosition(trig->parentId()).x();
596  float yb = geom()->localPosition(trig->parentId()).y();
597  float zb = geom()->localPosition(trig->parentId()).z();
598 
599  std::cout << "DTBtiCard::localDirection of BTI in (" << xb << "," << yb << "," << zb << ")" << std::endl;
600  std::cout << " called for trig ";
601  trig->print();
602  std::cout << "in Local Direction (" << xd << "," << yd << "," << zd << ")" << std::endl;
603  }
604 
605  return LocalVector(xd, yd, zd);
606 }
607 
608 /*
609 
610 LocalVector
611 DTBtiCard::localDirection(const DTTrigData* tr) const {
612 //OBSOLETE!!!!
613  //@@ patch for Sun 4.2 compiler
614  const DTBtiTrigData* trig = dynamic_cast<const DTBtiTrigData*>(const_cast<DTTrigData*>(tr));
615  // const DTBtiTrigData* trig = dynamic_cast<const DTBtiTrigData*>(tr);
616  if(!trig) {
617  std::cout << "DTBtiCard::localDirection called with wrong argument!" << std::endl;
618  return LocalVector(0,0,0);
619  }
620  float x1,r,x,y,z;
621  x1 = -(float)trig->K() * geom()->cellPitch() /
622  (float)(config()->ST());
623  z = - 2 * geom()->cellH();
624  r = sqrt(x1*x1+z*z);
625  if(trig->btiSL()!=2) {
626  x = x1/r;
627  y = 0;
628  } else {
629  x = 0;
630  y = x1/r;
631  }
632  z /= r;
633  return LocalVector(x,y,z);
634 }
635 */
636 
638  //loop on map to find bti
639  ConfBtiMap::const_iterator biter = _conf_bti_map.find(btiid);
640  if (biter == _conf_bti_map.end()) {
641  std::cout << "DTBtiCard::config_bti : BTI (" << btiid.wheel() << "," << btiid.sector() << "," << btiid.station()
642  << "," << btiid.superlayer() << "," << btiid.bti() << ") not found, return 0" << std::endl;
643  return nullptr;
644  }
645 
646  return const_cast<DTConfigBti*>(&(*biter).second);
647 }
DTBtiTrigData triggerData(int step, unsigned n) const
Return the data part of the requested trigger.
Definition: DTBtiChip.cc:360
int station() const
Return station number.
LocalPoint localPosition(const DTBtiId) const
Local position in chamber of a BTI.
Definition: DTTrigGeom.cc:508
BTIContainer _btimap[3]
Definition: DTBtiCard.h:130
std::vector< DTDigi * > _digis
Definition: DTBtiCard.h:133
my_collection _cache
Definition: DTCache.h:53
Local3DVector LocalVector
Definition: LocalVector.h:12
bool getDTTPGDebug() const
Get global debug flag.
ConfBtiMap _conf_bti_map
Definition: DTBtiCard.h:131
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
int sector() const
Returns sector number.
Definition: DTBtiId.h:62
float cellPitch() const
Width of a cell (cm) i.e. distance between ywo wires.
Definition: DTTrigGeom.h:76
std::vector< DTBtiChip * > btiList(int)
Returns the active BTI list in a given superlayer.
Definition: DTBtiCard.cc:441
DTBtiTrig * storeTrigger(DTBtiTrigData)
Definition: DTBtiCard.cc:460
const std::map< DTBtiId, DTConfigBti > & getDTConfigBtiMap(DTChamberId) const
Get desired BTI configuration map for a given DTChamber.
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
DTBtiCard(DTTrigGeom *)
Constructor.
Definition: DTBtiCard.cc:60
void clearCache()
Clear all BTI stuff (map & cache)
Definition: DTBtiCard.cc:85
static const int NSTEPF
Definition: DTConfig.h:35
DTBtiChip * activeGetBTI(int sl, int n)
Returns the required DTBtiChip. Create it if it doesn&#39;t exist.
Definition: DTBtiCard.cc:379
int bti() const
Returns the bti.
Definition: DTBtiId.h:66
std::map< std::string, int, std::less< std::string > > psi
const DTConfigPedestals * _pedestals
Definition: DTBtiCard.h:136
bool _debug
Definition: DTBtiCard.h:135
~DTBtiCard() override
Destructor.
Definition: DTBtiCard.cc:76
void setConfig(const DTConfigManager *conf)
Set configuration.
Definition: DTBtiCard.cc:90
void run()
Run DTBtiChip algorithm.
Definition: DTBtiChip.cc:482
DTBtiChip * getBTI(int sl, int n) const
Returns the required BTI. Return 0 if it doesn&#39;t exist.
Definition: DTBtiCard.cc:427
int size() const
Get cache vector&#39;s size.
Definition: DTCache.h:44
int wheel() const
Returns wheel number.
Definition: DTBtiId.h:58
DTTrigGeom * geom() const
Associated geometry.
int number() const
Return DTBtiChip number.
Definition: DTBtiChip.h:89
int wheel() const
Return wheel number.
int sector() const
Return sector number.
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
BTIContainer::const_iterator BTI_const_iter
Definition: DTBtiCard.h:55
DTChamberId statId() const
Identifier of the associated chamber.
Definition: DTTrigGeom.h:53
int superlayer() const
Returns the superlayer.
Definition: DTBtiId.h:64
const_iterator end() const
Get last cache element.
Definition: DTCache.h:41
static const int NSTEPL
Constants: first and last step to start trigger finding.
Definition: DTConfig.h:35
Definition: DTDigi.h:17
bool useAcceptParam() const
Use Bti acceptance parameters (LL,LH,CL,CH,RL,RH)
DTConfigBti * config_bti(DTBtiId &btiid) const
Return bti chip configuration.
Definition: DTBtiCard.cc:637
float cellH() const
Height of a cell (cm)
Definition: DTTrigGeom.h:73
int superlayer() const
Return the superlayer number (deprecated method name)
BTIContainer::iterator BTI_iter
Definition: DTBtiCard.h:56
float getOffset(const DTWireId &wire) const
Get wire by wire delay.
std::pair< const_iterator, const_iterator > Range
std::vector< DigiType >::const_iterator const_iterator
LocalPoint localPosition(const DTTrigData *) const override
NEWGEO Local position in chamber of a trigger-data object.
Definition: DTBtiCard.cc:519
int debug() const
Debug flag.
Definition: DTConfigBti.h:58
int mapTubeInFEch(int nsl, int nlay, int ntube) const
Staggering of first wire of layer respect to default: obsolete 19/6/06.
Definition: DTTrigGeom.cc:144
const DTConfigPedestals * getDTConfigPedestals() const
Get desired Pedestals configuration.
HLT enums.
DTChamberId ChamberId() const
Identifier of the associated chamber.
LocalVector localDirection(const DTTrigData *) const override
NEWGEO Local direction in chamber of a trigger-data object.
Definition: DTBtiCard.cc:562
float ST() const
Max drift time in 12.5 ns steps.
Definition: DTConfigBti.h:61
void loadBTI(const DTDigiCollection dtDigis)
store digi&#39;s in DTBtiChip&#39;s
Definition: DTBtiCard.cc:237
int nTrig(int step) const
Number of triggers found.
Definition: DTBtiChip.cc:327
step
Definition: StallMonitor.cc:83
DTBtiId parentId() const
Return parent BTI identifier.
Definition: DTBtiTrigData.h:90
void add_digi(int cell, const DTDigi *digi)
Add a digi to the DTBtiChip.
Definition: DTBtiChip.cc:212
int station() const
Returns station number.
Definition: DTBtiId.h:60
bool debug() const
Return TU debug flag.
Definition: DTBtiCard.h:77
bool _flag_acc
Definition: DTBtiCard.h:138
void runBTI()
run DTBtiChip algorithm
Definition: DTBtiCard.cc:339
void clearCache()
Clear cache vector.
Definition: DTCache.h:47
const_iterator begin() const
Get first cache element.
Definition: DTCache.h:38
void localClear()
clear the BTI maps
Definition: DTBtiCard.cc:100
int step() const
Return trigger step.
def move(src, dest)
Definition: eostools.py:511
int nCell(int sl) const
Number of BTIs in a required superlayer (i.e. nCells in lay 1)
Definition: DTTrigGeom.h:88