CMS 3D CMS Logo

Tracklet.cc
Go to the documentation of this file.
5 
8 
9 #include <sstream>
10 
11 using namespace std;
12 using namespace trklet;
13 
14 Tracklet::Tracklet(Settings const& settings,
15  const L1TStub* innerStub,
16  const L1TStub* middleStub,
17  const L1TStub* outerStub,
18  const Stub* innerFPGAStub,
19  const Stub* middleFPGAStub,
20  const Stub* outerFPGAStub,
21  double rinv,
22  double phi0,
23  double d0,
24  double z0,
25  double t,
26  double rinvapprox,
27  double phi0approx,
28  double d0approx,
29  double z0approx,
30  double tapprox,
31  int irinv,
32  int iphi0,
33  int id0,
34  int iz0,
35  int it,
36  LayerProjection layerprojs[N_PROJ],
37  DiskProjection diskprojs[N_PROJ],
38  bool disk,
39  bool overlap)
40  : settings_(settings) {
41  overlap_ = overlap;
42  disk_ = disk;
43  assert(!(disk && overlap));
44  barrel_ = (!disk) && (!overlap);
45  triplet_ = false;
46 
47  trackletIndex_ = -1;
48  TCIndex_ = -1;
49 
51 
52  if (barrel_ && middleStub == nullptr)
54 
61 
62  trackpars_.init(rinv, phi0, d0, t, z0);
63 
65 
66  fpgapars_.rinv().set(irinv, settings_.nbitsrinv(), false, __LINE__, __FILE__);
67  fpgapars_.phi0().set(iphi0, settings_.nbitsphi0(), false, __LINE__, __FILE__);
68  fpgapars_.d0().set(id0, settings_.nbitsd0(), false, __LINE__, __FILE__);
69  fpgapars_.z0().set(iz0, settings_.nbitsz0(), false, __LINE__, __FILE__);
70  fpgapars_.t().set(it, settings_.nbitst(), false, __LINE__, __FILE__);
71 
72  fpgatrack_ = nullptr;
73 
74  if (innerStub_)
76  if (middleStub_)
78  if (outerStub_)
80 
82 
83  triplet_ = (seedIndex_ >= 8);
84 
85  //fill projection layers
86  for (unsigned int i = 0; i < N_LAYER - 2; i++) {
87  projlayer_[i] = settings.projlayers(seedIndex_, i);
88  }
89 
90  //fill projection disks
91  for (unsigned int i = 0; i < N_DISK; i++) {
92  projdisk_[i] = settings.projdisks(seedIndex_, i);
93  }
94 
95  //Handle projections to the layers
96  for (unsigned int i = 0; i < N_LAYER - 2; i++) {
97  if (projlayer_[i] == 0)
98  continue;
99  if (!layerprojs[i].valid())
100  continue;
101 
102  layerproj_[projlayer_[i] - 1] = layerprojs[i];
103  }
104  //Now handle projections to the disks
105  for (unsigned int i = 0; i < N_DISK; i++) {
106  if (projdisk_[i] == 0)
107  continue;
108  if (!diskprojs[i].valid())
109  continue;
110 
111  diskproj_[projdisk_[i] - 1] = diskprojs[i];
112  }
113 
114  ichisqrphifit_.set(-1, 8, false);
115  ichisqrzfit_.set(-1, 8, false);
116 }
117 
119  set<int> tpset;
120 
121  set<int> tpsetstubinner;
122  set<int> tpsetstubouter;
123 
124  vector<int> tps = innerStub_->tps();
125  for (auto tp : tps) {
126  if (tp != 0) {
127  tpsetstubinner.insert(tp);
128  tpset.insert(abs(tp));
129  }
130  }
131 
132  tps = outerStub_->tps();
133  for (auto tp : tps) {
134  if (tp != 0) {
135  tpsetstubouter.insert(tp);
136  tpset.insert(abs(tp));
137  }
138  }
139 
140  for (auto& tp : tpset) {
141  if (tpsetstubinner.find(tp) != tpsetstubinner.end() && tpsetstubinner.find(-tp) != tpsetstubinner.end() &&
142  tpsetstubouter.find(tp) != tpsetstubouter.end() && tpsetstubouter.find(-tp) != tpsetstubouter.end()) {
143  return tp;
144  }
145  }
146  return 0;
147 }
148 
150  set<int> tpset;
151  set<int> tpsetstub;
152  set<int> tpsetstubinner;
153  set<int> tpsetstubouter;
154 
155  vector<int> tps = stub->tps();
156  for (auto tp : tps) {
157  if (tp != 0) {
158  tpsetstub.insert(tp);
159  tpset.insert(abs(tp));
160  }
161  }
162  tps = innerStub_->tps();
163  for (auto tp : tps) {
164  if (tp != 0) {
165  tpsetstubinner.insert(tp);
166  tpset.insert(abs(tp));
167  }
168  }
169  tps = outerStub_->tps();
170  for (auto tp : tps) {
171  if (tp != 0) {
172  tpsetstubouter.insert(tp);
173  tpset.insert(abs(tp));
174  }
175  }
176 
177  for (auto tp : tpset) {
178  if (tpsetstub.find(tp) != tpsetstub.end() && tpsetstub.find(-tp) != tpsetstub.end() &&
179  tpsetstubinner.find(tp) != tpsetstubinner.end() && tpsetstubinner.find(-tp) != tpsetstubinner.end() &&
180  tpsetstubouter.find(tp) != tpsetstubouter.end() && tpsetstubouter.find(-tp) != tpsetstubouter.end()) {
181  return true;
182  }
183  }
184 
185  return false;
186 }
187 
191  if (middleFPGAStub_) {
193  }
195 
196  return str;
197 }
198 
200  if (settings_.writeoutReal()) {
201  std::string oss = std::to_string(fpgapars_.rinv().value() * settings_.krinvpars()) + " " +
202  std::to_string(fpgapars_.phi0().value() * settings_.kphi0pars()) + " " +
203  std::to_string(fpgapars_.d0().value() * settings_.kd0pars()) + " " +
204  std::to_string(fpgapars_.z0().value() * settings_.kz()) + " " +
205  std::to_string(fpgapars_.t().value() * settings_.ktpars());
206  return oss;
207  } else {
209  if (middleFPGAStub_) {
210  str += middleFPGAStub_->stubindex().str() + "|";
211  }
212  str += outerFPGAStub_->stubindex().str() + "|" + fpgapars_.rinv().str() + "|" + fpgapars_.phi0().str() + "|";
213  if (middleFPGAStub_)
214  str += fpgapars_.d0().str() + "|";
215  str += fpgapars_.z0().str() + "|" + fpgapars_.t().str();
216  return str;
217  }
218 }
219 
220 std::string Tracklet::vmstrlayer(int layer, unsigned int allstubindex) {
221  FPGAWord index;
222  if (allstubindex >= (1 << 7)) {
223  edm::LogPrint("Tracklet") << "Warning projection number too large!";
224  index.set((1 << 7) - 1, 7, true, __LINE__, __FILE__);
225  } else {
226  index.set(allstubindex, 7, true, __LINE__, __FILE__);
227  }
228 
229  // This is a shortcut.
230  //int irinvvm=16+(fpgarinv().value()>>(fpgarinv().nbits()-5));
231  // rinv is not directly available in the TrackletProjection.
232  // can be inferred from phi derivative: rinv = - phider * 2
233  int tmp_irinv = layerproj_[layer - 1].fpgaphiprojder().value() * (-2);
234  int nbits_irinv = layerproj_[layer - 1].fpgaphiprojder().nbits() + 1;
235 
236  // irinv in VMProjection:
237  // top 5 bits of rinv and shifted to be positive
238  int irinvvm = 16 + (tmp_irinv >> (nbits_irinv - 5));
239 
240  if (settings_.extended() && (irinvvm > 31)) { //TODO - displaced tracking should protect against this
241  edm::LogPrint("Tracklet") << "Warning irinvvm too large:" << irinvvm;
242  irinvvm = 31;
243  }
244 
245  assert(irinvvm >= 0);
246  assert(irinvvm < 32);
247  FPGAWord tmp;
248  tmp.set(irinvvm, 5, true, __LINE__, __FILE__);
249  std::string oss = index.str() + "|" + layerproj_[layer - 1].fpgazbin1projvm().str() + "|" +
250  layerproj_[layer - 1].fpgazbin2projvm().str() + "|" + layerproj_[layer - 1].fpgafinezvm().str() +
251  "|" + tmp.str() + "|" + std::to_string(PSseed());
252  return oss;
253 }
254 
255 std::string Tracklet::vmstrdisk(int disk, unsigned int allstubindex) {
256  FPGAWord index;
257  if (allstubindex >= (1 << 7)) {
258  edm::LogPrint("Tracklet") << "Warning projection number too large!";
259  index.set((1 << 7) - 1, 7, true, __LINE__, __FILE__);
260  } else {
261  index.set(allstubindex, 7, true, __LINE__, __FILE__);
262  }
263  std::string oss = index.str() + "|" + diskproj_[disk - 1].fpgarbin1projvm().str() + "|" +
264  diskproj_[disk - 1].fpgarbin2projvm().str() + "|" + diskproj_[disk - 1].fpgafinervm().str() + "|" +
265  diskproj_[disk - 1].getBendIndex().str();
266  return oss;
267 }
268 
270  assert(layer > 0 && layer <= N_LAYER);
271  FPGAWord tmp;
272  if (trackletIndex_ < 0 || trackletIndex_ > (int)settings_.ntrackletmax()) {
273  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " trackletIndex_ = " << trackletIndex_;
274  }
275  tmp.set(trackletIndex_, 7, true, __LINE__, __FILE__);
276  FPGAWord tcid;
277  if (settings_.extended()) {
278  tcid.set(TCIndex_, 8, true, __LINE__, __FILE__);
279  } else {
280  tcid.set(TCIndex_, 7, true, __LINE__, __FILE__);
281  }
282 
283  std::string oss = tcid.str() + "|" + tmp.str() + "|" + layerproj_[layer - 1].fpgaphiproj().str() + "|" +
284  layerproj_[layer - 1].fpgazproj().str() + "|" + layerproj_[layer - 1].fpgaphiprojder().str() + "|" +
285  layerproj_[layer - 1].fpgazprojder().str();
286  return oss;
287 }
288 
290  assert(abs(disk) <= N_DISK);
291  FPGAWord tmp;
292  if (trackletIndex_ < 0 || trackletIndex_ > (int)settings_.ntrackletmax()) {
293  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " trackletIndex_ = " << trackletIndex_;
294  }
295  tmp.set(trackletIndex_, 7, true, __LINE__, __FILE__);
296  FPGAWord tcid;
297  if (settings_.extended()) {
298  tcid.set(TCIndex_, 8, true, __LINE__, __FILE__);
299  } else {
300  tcid.set(TCIndex_, 7, true, __LINE__, __FILE__);
301  }
302  std::string oss = tcid.str() + "|" + tmp.str() + "|" + diskproj_[abs(disk) - 1].fpgaphiproj().str() + "|" +
303  diskproj_[abs(disk) - 1].fpgarproj().str() + "|" + diskproj_[abs(disk) - 1].fpgaphiprojder().str() +
304  "|" + diskproj_[abs(disk) - 1].fpgarprojder().str();
305  return oss;
306 }
307 
308 void Tracklet::addMatch(int layer,
309  int ideltaphi,
310  int ideltaz,
311  double dphi,
312  double dz,
313  double dphiapprox,
314  double dzapprox,
315  int stubid,
316  double rstub,
317  const trklet::Stub* stubptr) {
318  assert(layer > 0 && layer <= N_LAYER);
319  layerresid_[layer - 1].init(
320  settings_, layer, ideltaphi, ideltaz, stubid, dphi, dz, dphiapprox, dzapprox, rstub, stubptr);
321 }
322 
324  int ideltaphi,
325  int ideltar,
326  double dphi,
327  double dr,
328  double dphiapprox,
329  double drapprox,
330  double alpha,
331  int stubid,
332  double zstub,
333  const trklet::Stub* stubptr) {
334  assert(abs(disk) <= N_DISK);
336  disk,
337  ideltaphi,
338  ideltar,
339  stubid,
340  dphi,
341  dr,
342  dphiapprox,
343  drapprox,
344  zstub,
345  alpha,
346  stubptr->alphanew(),
347  stubptr);
348 }
349 
351  int nmatches = 0;
352 
353  for (const auto& ilayerresid : layerresid_) {
354  if (ilayerresid.valid()) {
355  nmatches++;
356  }
357  }
358 
359  return nmatches;
360 }
361 
363  int nmatches = 0;
364 
365  for (const auto& idiskresid : diskresid_) {
366  if (idiskresid.valid()) {
367  nmatches++;
368  }
369  }
370  return nmatches;
371 }
372 
374  assert(layer > 0 && layer <= N_LAYER);
375 
376  FPGAWord tmp;
377  if (trackletIndex_ < 0 || trackletIndex_ > (int)settings_.ntrackletmax()) {
378  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " trackletIndex_ = " << trackletIndex_;
379  }
380  tmp.set(trackletIndex_, 7, true, __LINE__, __FILE__);
381  FPGAWord tcid;
382  if (settings_.extended()) {
383  tcid.set(TCIndex_, 8, true, __LINE__, __FILE__);
384  } else {
385  tcid.set(TCIndex_, 7, true, __LINE__, __FILE__);
386  }
387  std::string oss = tcid.str() + "|" + tmp.str() + "|" + layerresid_[layer - 1].fpgastubid().str() + "|" +
388  layerresid_[layer - 1].fpgaphiresid().str() + "|" + layerresid_[layer - 1].fpgazresid().str();
389  return oss;
390 }
391 
393  assert(disk > 0 && disk <= N_DISK);
394 
395  FPGAWord tmp;
396  if (trackletIndex_ < 0 || trackletIndex_ > (int)settings_.ntrackletmax()) {
397  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " trackletIndex_ = " << trackletIndex_;
398  }
399  tmp.set(trackletIndex_, 7, true, __LINE__, __FILE__);
400  FPGAWord tcid;
401  if (settings_.extended()) {
402  tcid.set(TCIndex_, 8, true, __LINE__, __FILE__);
403  } else {
404  tcid.set(TCIndex_, 7, true, __LINE__, __FILE__);
405  }
406  std::string oss = tcid.str() + "|" + tmp.str() + "|" + diskresid_[disk - 1].fpgastubid().str() + "|" +
407  diskresid_[disk - 1].fpgaphiresid().str() + "|" + diskresid_[disk - 1].fpgarresid().str();
408  return oss;
409 }
410 
411 std::vector<const L1TStub*> Tracklet::getL1Stubs() {
412  std::vector<const L1TStub*> tmp;
413 
414  if (innerStub_)
415  tmp.push_back(innerStub_);
416  if (middleStub_)
417  tmp.push_back(middleStub_);
418  if (outerStub_)
419  tmp.push_back(outerStub_);
420 
421  for (const auto& ilayerresid : layerresid_) {
422  if (ilayerresid.valid())
423  tmp.push_back(ilayerresid.stubptr()->l1tstub());
424  }
425 
426  for (const auto& idiskresid : diskresid_) {
427  if (idiskresid.valid())
428  tmp.push_back(idiskresid.stubptr()->l1tstub());
429  }
430 
431  return tmp;
432 }
433 
434 std::map<int, int> Tracklet::getStubIDs() {
435  std::map<int, int> stubIDs;
436 
437  // For future reference, *resid_[i] uses i as the absolute stub index. (0-5 for barrel, 0-4 for disk)
438  // On the other hand, proj*_[i] uses i almost like *resid_[i], except the *seeding* layer indices are removed entirely.
439  // E.g. An L3L4 track has 0=L1, 1=L2, 2=L4, 3=L5 for the barrels (for proj*_[i])
440 
441  if (innerFPGAStub_)
443  if (middleFPGAStub_)
445  if (outerFPGAStub_)
447 
448  if (barrel_) {
449  for (int i = 0; i < N_LAYER; i++) {
450  //check barrel
451  if (layerresid_[i].valid()) {
452  // two extra bits to indicate if the matched stub is local or from neighbor
453  int location = 1; // local
455 
456  stubIDs[1 + i] = layerresid_[i].fpgastubid().value() + location;
457  }
458 
459  //check disk
460  if (i >= N_DISK)
461  continue; //i=[0..4] for disks
462  if (diskresid_[i].valid()) {
463  if (i == 3 && layerresid_[0].valid() && innerFPGAStub_->layer().value() == 1)
464  continue; // Don't add D4 if track has L1 stub
465  // two extra bits to indicate if the matched stub is local or from neighbor
466  int location = 1; // local
468 
469  if (itfit().value() < 0) {
470  stubIDs[-11 - i] = diskresid_[i].fpgastubid().value() + location;
471  } else {
472  stubIDs[11 + i] = diskresid_[i].fpgastubid().value() + location;
473  }
474  }
475  }
476 
477  //get stubs making up tracklet
478  if (innerFPGAStub_)
479  stubIDs[innerFPGAStub_->layer().value() + 1] = innerFPGAStub_->phiregionaddress() + (1 << 10);
480  if (middleFPGAStub_)
481  stubIDs[middleFPGAStub_->layer().value() + 1] = middleFPGAStub_->phiregionaddress() + (1 << 10);
482  if (outerFPGAStub_)
483  stubIDs[outerFPGAStub_->layer().value() + 1] = outerFPGAStub_->phiregionaddress() + (1 << 10);
484 
485  } else if (disk_) {
486  for (int i = 0; i < N_DISK; i++) {
487  //check barrel
488  if (layerresid_[i].valid()) {
489  // two extra bits to indicate if the matched stub is local or from neighbor
490  int location = 1; // local
492 
493  stubIDs[1 + i] = layerresid_[i].fpgastubid().value() + location;
494  }
495 
496  //check disks
497  if (i == 4 && layerresid_[1].valid())
498  continue; // Don't add D5 if track has L2 stub
499  if (diskresid_[i].valid()) {
500  // two extra bits to indicate if the matched stub is local or from neighbor
501  int location = 1; // local
503 
504  if (innerStub_->disk() < 0) {
505  stubIDs[-11 - i] = diskresid_[i].fpgastubid().value() + location;
506  } else {
507  stubIDs[11 + i] = diskresid_[i].fpgastubid().value() + location;
508  }
509  }
510  }
511 
512  //get stubs making up tracklet
513  if (innerFPGAStub_->disk().value() < 0) { //negative side runs 6-10
514  if (innerFPGAStub_)
515  stubIDs[innerFPGAStub_->disk().value() - 10] = innerFPGAStub_->phiregionaddress() + (1 << 10);
516  if (middleFPGAStub_)
517  stubIDs[middleFPGAStub_->disk().value() - 10] = middleFPGAStub_->phiregionaddress() + (1 << 10);
518  if (outerFPGAStub_)
519  stubIDs[outerFPGAStub_->disk().value() - 10] = outerFPGAStub_->phiregionaddress() + (1 << 10);
520  } else { // positive side runs 11-15]
521  if (innerFPGAStub_)
522  stubIDs[innerFPGAStub_->disk().value() + 10] = innerFPGAStub_->phiregionaddress() + (1 << 10);
523  if (middleFPGAStub_)
524  stubIDs[middleFPGAStub_->disk().value() + 10] = middleFPGAStub_->phiregionaddress() + (1 << 10);
525  if (outerFPGAStub_)
526  stubIDs[outerFPGAStub_->disk().value() + 10] = outerFPGAStub_->phiregionaddress() + (1 << 10);
527  }
528 
529  } else if (overlap_) {
530  for (int i = 0; i < N_DISK; i++) {
531  //check barrel
532  if (layerresid_[i].valid()) {
533  // two extra bits to indicate if the matched stub is local or from neighbor
534  int location = 1; // local
536 
537  stubIDs[1 + i] = layerresid_[i].fpgastubid().value() + location;
538  }
539 
540  //check disks
541  if (diskresid_[i].valid()) {
542  // two extra bits to indicate if the matched stub is local or from neighbor
543  int location = 1; // local
545 
546  if (innerStub_->disk() < 0) { // if negative overlap
547  if (innerFPGAStub_->layer().value() != 2 || !layerresid_[0].valid() ||
548  i != 3) { // Don't add D4 if this is an L3L2 track with an L1 stub
549  stubIDs[-11 - i] = diskresid_[i].fpgastubid().value() + location;
550  }
551  } else {
552  if (innerFPGAStub_->layer().value() != 2 || !layerresid_[0].valid() || i != 3) {
553  stubIDs[11 + i] = diskresid_[i].fpgastubid().value() + location;
554  }
555  }
556  }
557  }
558 
559  //get stubs making up tracklet
560 
561  if (innerFPGAStub_->layer().value() == 2) { // L3L2 track
562  if (innerFPGAStub_)
563  stubIDs[innerFPGAStub_->layer().value() + 1] = innerFPGAStub_->phiregionaddress() + (1 << 10);
564  if (middleFPGAStub_)
565  stubIDs[middleFPGAStub_->layer().value() + 1] = middleFPGAStub_->phiregionaddress() + (1 << 10);
566  if (outerFPGAStub_)
567  stubIDs[outerFPGAStub_->layer().value() + 1] = outerFPGAStub_->phiregionaddress() + (1 << 10);
568  } else if (innerFPGAStub_->disk().value() < 0) { //negative side runs -11 - -15
569  if (innerFPGAStub_)
570  stubIDs[innerFPGAStub_->disk().value() - 10] = innerFPGAStub_->phiregionaddress() + (1 << 10);
571  if (middleFPGAStub_)
572  stubIDs[middleFPGAStub_->layer().value() + 1] = middleFPGAStub_->phiregionaddress() + (1 << 10);
573  if (outerFPGAStub_)
574  stubIDs[outerFPGAStub_->layer().value() + 1] = outerFPGAStub_->phiregionaddress() + (1 << 10);
575  } else { // positive side runs 11-15]
576  if (innerFPGAStub_)
577  stubIDs[innerFPGAStub_->disk().value() + 10] = innerFPGAStub_->phiregionaddress() + (1 << 10);
578  if (middleFPGAStub_)
579  stubIDs[middleFPGAStub_->layer().value() + 1] = middleFPGAStub_->phiregionaddress() + (1 << 10);
580  if (outerFPGAStub_)
581  stubIDs[outerFPGAStub_->layer().value() + 1] = outerFPGAStub_->phiregionaddress() + (1 << 10);
582  }
583  }
584 
585  return stubIDs;
586 }
587 
588 void Tracklet::setFitPars(double rinvfit,
589  double phi0fit,
590  double d0fit,
591  double tfit,
592  double z0fit,
593  double chisqrphifit,
594  double chisqrzfit,
595  double rinvfitexact,
596  double phi0fitexact,
597  double d0fitexact,
598  double tfitexact,
599  double z0fitexact,
600  double chisqrphifitexact,
601  double chisqrzfitexact,
602  int irinvfit,
603  int iphi0fit,
604  int id0fit,
605  int itfit,
606  int iz0fit,
607  int ichisqrphifit,
608  int ichisqrzfit,
609  int hitpattern,
610  const vector<const L1TStub*>& l1stubs) {
612  chisqrphifit_ = chisqrphifit;
613  chisqrzfit_ = chisqrzfit;
614 
616  chisqrphifitexact_ = chisqrphifitexact;
617  chisqrzfitexact_ = chisqrzfitexact;
618 
619  if (irinvfit > (1 << 14))
620  irinvfit = (1 << 14);
621  if (irinvfit <= -(1 << 14))
622  irinvfit = -(1 << 14) + 1;
623  fpgafitpars_.rinv().set(irinvfit, 15, false, __LINE__, __FILE__);
624  fpgafitpars_.phi0().set(iphi0fit, 19, false, __LINE__, __FILE__);
625  fpgafitpars_.d0().set(id0fit, 19, false, __LINE__, __FILE__);
626  fpgafitpars_.t().set(itfit, 14, false, __LINE__, __FILE__);
627 
628  if (iz0fit >= (1 << (settings_.nbitsz0() - 1))) {
629  iz0fit = (1 << (settings_.nbitsz0() - 1)) - 1;
630  }
631 
632  if (iz0fit <= -(1 << (settings_.nbitsz0() - 1))) {
633  iz0fit = 1 - (1 << (settings_.nbitsz0() - 1));
634  }
635 
636  fpgafitpars_.z0().set(iz0fit, settings_.nbitsz0(), false, __LINE__, __FILE__);
637  ichisqrphifit_.set(ichisqrphifit, 8, true, __LINE__, __FILE__);
638  ichisqrzfit_.set(ichisqrzfit, 8, true, __LINE__, __FILE__);
639 
640  hitpattern_ = hitpattern;
641 
642  fpgatrack_.reset(new Track(makeTrack(l1stubs)));
643 }
644 
646  string stubid0 = "111111111";
647  string stubid1 = "111111111";
648  string stubid2 = "111111111";
649  string stubid3 = "111111111";
650 
651  if (isBarrel()) {
652  if (layer() == 1) {
653  if (layerresid_[2].valid()) {
654  stubid0 = layerresid_[2].fpgastubid().str();
655  }
656  if (layerresid_[3].valid()) {
657  stubid1 = layerresid_[3].fpgastubid().str();
658  }
659  if (layerresid_[4].valid()) {
660  stubid2 = layerresid_[4].fpgastubid().str();
661  }
662  if (layerresid_[5].valid()) {
663  stubid3 = layerresid_[5].fpgastubid().str();
664  }
665  if (diskresid_[0].valid()) {
666  stubid3 = diskresid_[0].fpgastubid().str();
667  }
668  if (diskresid_[1].valid()) {
669  stubid2 = diskresid_[1].fpgastubid().str();
670  }
671  if (diskresid_[2].valid()) {
672  stubid1 = diskresid_[2].fpgastubid().str();
673  }
674  if (diskresid_[3].valid()) {
675  stubid0 = diskresid_[3].fpgastubid().str();
676  }
677  }
678 
679  if (layer() == 3) {
680  if (layerresid_[0].valid()) {
681  stubid0 = layerresid_[0].fpgastubid().str();
682  }
683  if (layerresid_[1].valid()) {
684  stubid1 = layerresid_[1].fpgastubid().str();
685  }
686  if (layerresid_[4].valid()) {
687  stubid2 = layerresid_[4].fpgastubid().str();
688  }
689  if (layerresid_[5].valid()) {
690  stubid3 = layerresid_[5].fpgastubid().str();
691  }
692  if (diskresid_[0].valid()) {
693  stubid3 = diskresid_[0].fpgastubid().str();
694  }
695  if (diskresid_[1].valid()) {
696  stubid2 = diskresid_[1].fpgastubid().str();
697  }
698  }
699 
700  if (layer() == 5) {
701  if (layerresid_[0].valid()) {
702  stubid0 = layerresid_[0].fpgastubid().str();
703  }
704  if (layerresid_[1].valid()) {
705  stubid1 = layerresid_[1].fpgastubid().str();
706  }
707  if (layerresid_[2].valid()) {
708  stubid2 = layerresid_[2].fpgastubid().str();
709  }
710  if (layerresid_[3].valid()) {
711  stubid3 = layerresid_[3].fpgastubid().str();
712  }
713  }
714  }
715 
716  if (isDisk()) {
717  if (disk() == 1) {
718  if (layerresid_[0].valid()) {
719  stubid0 = layerresid_[0].fpgastubid().str();
720  }
721  if (diskresid_[2].valid()) {
722  stubid1 = diskresid_[2].fpgastubid().str();
723  }
724  if (diskresid_[3].valid()) {
725  stubid2 = diskresid_[3].fpgastubid().str();
726  }
727  if (diskresid_[4].valid()) {
728  stubid3 = diskresid_[4].fpgastubid().str();
729  } else if (layerresid_[1].valid()) {
730  stubid3 = layerresid_[1].fpgastubid().str();
731  }
732  }
733 
734  if (disk() == 3) {
735  if (layerresid_[0].valid()) {
736  stubid0 = layerresid_[0].fpgastubid().str();
737  }
738  if (diskresid_[0].valid()) {
739  stubid1 = diskresid_[0].fpgastubid().str();
740  }
741  if (diskresid_[1].valid()) {
742  stubid2 = diskresid_[1].fpgastubid().str();
743  }
744  if (diskresid_[4].valid()) {
745  stubid3 = diskresid_[4].fpgastubid().str();
746  } else if (layerresid_[1].valid()) {
747  stubid3 = layerresid_[1].fpgastubid().str();
748  }
749  }
750  }
751 
752  if (isOverlap()) {
753  if (layer() == 1) {
754  if (diskresid_[1].valid()) {
755  stubid0 = diskresid_[1].fpgastubid().str();
756  }
757  if (diskresid_[2].valid()) {
758  stubid1 = diskresid_[2].fpgastubid().str();
759  }
760  if (diskresid_[3].valid()) {
761  stubid2 = diskresid_[3].fpgastubid().str();
762  }
763  if (diskresid_[4].valid()) {
764  stubid3 = diskresid_[4].fpgastubid().str();
765  }
766  }
767  }
768 
769  std::string oss;
770  // real Q print out for fitted tracks
771  if (settings_.writeoutReal()) {
772  oss = std::to_string((fpgafitpars_.rinv().value()) * settings_.krinvpars()) + " " +
773  std::to_string((fpgafitpars_.phi0().value()) * settings_.kphi0pars()) + " " +
774  std::to_string((fpgafitpars_.d0().value()) * settings_.kd0pars()) + " " +
775  std::to_string((fpgafitpars_.t().value()) * settings_.ktpars()) + " " +
776  std::to_string((fpgafitpars_.z0().value()) * settings_.kz()) + " " + innerFPGAStub_->phiregionaddressstr() +
777  " ";
778  }
779  //Binary print out
780  if (!settings_.writeoutReal()) {
781  oss = fpgafitpars_.rinv().str() + "|" + fpgafitpars_.phi0().str() + "|" + fpgafitpars_.d0().str() + "|" +
782  fpgafitpars_.t().str() + "|" + fpgafitpars_.z0().str() + "|" + innerFPGAStub_->phiregionaddressstr() + "|";
783  }
784  if (middleFPGAStub_) {
785  oss += middleFPGAStub_->phiregionaddressstr() + " ";
786  }
787  oss += outerFPGAStub_->phiregionaddressstr() + " " + stubid0 + "|" + stubid1 + "|" + stubid2 + "|" + stubid3;
788 
789  return oss;
790 }
791 
792 Track Tracklet::makeTrack(const vector<const L1TStub*>& l1stubs) {
793  assert(fit());
794 
795  TrackPars<int> ipars(fpgafitpars_.rinv().value(),
796  fpgafitpars_.phi0().value(),
797  fpgafitpars_.d0().value(),
798  fpgafitpars_.t().value(),
799  fpgafitpars_.z0().value());
800 
801  Track tmpTrack(
802  ipars,
806  chisqrzfit_,
807  hitpattern_,
808  getStubIDs(),
809  (l1stubs.empty()) ? getL1Stubs() : l1stubs, // If fitter produced no stub list, take it from original tracklet.
810  getISeed());
811 
812  return tmpTrack;
813 }
814 
815 int Tracklet::layer() const {
816  int l1 = (innerFPGAStub_ && innerFPGAStub_->isBarrel()) ? innerStub_->layer() + 1 : 999,
817  l2 = (middleFPGAStub_ && middleFPGAStub_->isBarrel()) ? middleStub_->layer() + 1 : 999,
818  l3 = (outerFPGAStub_ && outerFPGAStub_->isBarrel()) ? outerStub_->layer() + 1 : 999, l = min(min(l1, l2), l3);
819  return (l < 999 ? l : 0);
820 }
821 
822 int Tracklet::disk() const {
823  int d1 = (innerFPGAStub_ && innerFPGAStub_->isDisk()) ? innerStub_->disk() : 999,
824  d2 = (middleFPGAStub_ && middleFPGAStub_->isDisk()) ? middleStub_->disk() : 999,
825  d3 = (outerFPGAStub_ && outerFPGAStub_->isDisk()) ? outerStub_->disk() : 999, d = 999;
826  if (abs(d1) < min(abs(d2), abs(d3)))
827  d = d1;
828  if (abs(d2) < min(abs(d1), abs(d3)))
829  d = d2;
830  if (abs(d3) < min(abs(d1), abs(d2)))
831  d = d3;
832  return (d < 999 ? d : 0);
833 }
834 
835 int Tracklet::disk2() const {
836  if (innerStub_->disk() > 0) {
837  return innerStub_->disk() + 1;
838  }
839  return innerStub_->disk() - 1;
840 }
841 
844  assert(index < 128);
845 }
846 
847 int Tracklet::getISeed() const {
848  int iSeed = TCIndex_ >> 4;
849  assert(iSeed >= 0 && iSeed <= (int)N_SEED);
850  return iSeed;
851 }
852 
853 int Tracklet::getITC() const {
854  int iSeed = getISeed(), iTC = TCIndex_ - (iSeed << 4);
855  assert(iTC >= 0 && iTC <= 14);
856  return iTC;
857 }
858 
859 unsigned int Tracklet::calcSeedIndex() const {
860  int seedindex = -1;
861  int seedlayer = layer();
862  int seeddisk = disk();
863 
864  if (seedlayer == 1 && seeddisk == 0)
865  seedindex = 0; //L1L2
866  if (seedlayer == 3 && seeddisk == 0)
867  seedindex = 2; //L3L4
868  if (seedlayer == 5 && seeddisk == 0)
869  seedindex = 3; //L5L6
870  if (seedlayer == 0 && abs(seeddisk) == 1)
871  seedindex = 4; //D1D2
872  if (seedlayer == 0 && abs(seeddisk) == 3)
873  seedindex = 5; //D3D4
874  if (seedlayer == 1 && abs(seeddisk) == 1)
875  seedindex = 6; //L1D1
876  if (seedlayer == 2 && abs(seeddisk) == 1)
877  seedindex = 7; //L2D1
878  if (seedlayer == 2 && abs(seeddisk) == 0)
879  seedindex = 1; //L2L3
880  if (middleFPGAStub_ && seedlayer == 2 && seeddisk == 0)
881  seedindex = 8; // L3L4L2
882  if (middleFPGAStub_ && seedlayer == 4 && seeddisk == 0)
883  seedindex = 9; // L5L6L4
884  assert(innerFPGAStub_ != nullptr);
885  assert(outerFPGAStub_ != nullptr);
886  if (middleFPGAStub_ && seedlayer == 2 && abs(seeddisk) == 1) {
887  int l1 = (innerFPGAStub_ && innerFPGAStub_->isBarrel()) ? innerStub_->layer() + 1 : 999,
888  l2 = (middleFPGAStub_ && middleFPGAStub_->isBarrel()) ? middleStub_->layer() + 1 : 999,
889  l3 = (outerFPGAStub_ && outerFPGAStub_->isBarrel()) ? outerStub_->layer() + 1 : 999;
890  if (l1 + l2 + l3 < 1998) { // If two stubs are layer stubs
891  seedindex = 10; // L2L3D1
892  } else {
893  seedindex = 11; // D1D2L2
894  }
895  }
896 
897  if (seedindex < 0) {
898  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " seedlayer abs(seeddisk) : " << seedlayer
899  << " " << abs(seeddisk);
900  }
901 
902  return seedindex;
903 }
Settings.h
trklet::LayerProjection::fpgafinezvm
const FPGAWord & fpgafinezvm() const
Definition: LayerProjection.h:79
trklet::Tracklet::fullmatchstr
std::string fullmatchstr(int layer)
Definition: Tracklet.cc:373
trklet::Tracklet::addressstr
std::string addressstr()
Definition: Tracklet.cc:188
trklet::Tracklet::stubtruthmatch
bool stubtruthmatch(const L1TStub *stub)
Definition: Tracklet.cc:149
trklet::L1TStub::tps
std::vector< int > tps() const
Definition: L1TStub.h:78
trklet::Tracklet::chisqrphifitexact_
double chisqrphifitexact_
Definition: Tracklet.h:551
mps_fire.i
i
Definition: mps_fire.py:355
trklet::Settings::ntrackletmax
unsigned int ntrackletmax() const
Definition: Settings.h:274
trklet::Tracklet::diskproj_
DiskProjection diskproj_[N_DISK]
Definition: Tracklet.h:559
trklet::Tracklet::PSseed
unsigned int PSseed() const
Definition: Tracklet.h:505
MessageLogger.h
trklet::Tracklet::z0approx
double z0approx() const
Definition: Tracklet.h:419
trklet::Stub::phiregionaddressstr
std::string phiregionaddressstr() const
Definition: Stub.cc:182
trklet::Tracklet::settings_
Settings const & settings_
Definition: Tracklet.h:564
trklet::FPGAWord::str
std::string str() const
Definition: FPGAWord.cc:54
trklet::Tracklet::phi0fitexact
double phi0fitexact() const
Definition: Tracklet.h:435
trklet::Tracklet::fitpars_
TrackPars< double > fitpars_
Definition: Tracklet.h:546
trklet::DiskProjection::getBendIndex
const FPGAWord & getBendIndex() const
Definition: DiskProjection.h:133
trklet::Settings::ktpars
double ktpars() const
Definition: Settings.h:332
trklet::Tracklet::nMatchesDisk
int nMatchesDisk()
Definition: Tracklet.cc:362
trklet::L1TStub::layer
unsigned int layer() const
Definition: L1TStub.h:44
trklet::Settings::krinvpars
double krinvpars() const
Definition: Settings.h:327
trklet::Tracklet::chisqrzfitexact_
double chisqrzfitexact_
Definition: Tracklet.h:552
trklet::Tracklet::trackletIndex_
int trackletIndex_
Definition: Tracklet.h:528
trklet::Tracklet::ichisqrphifit_
FPGAWord ichisqrphifit_
Definition: Tracklet.h:543
trklet::Tracklet::getITC
int getITC() const
Definition: Tracklet.cc:853
trklet::Tracklet::phi0
double phi0() const
Definition: Tracklet.h:410
trklet::Tracklet::overlap_
bool overlap_
Definition: Tracklet.h:517
min
T min(T a, T b)
Definition: MathUtil.h:58
trklet::DiskProjection::fpgarprojder
const FPGAWord & fpgarprojder() const
Definition: DiskProjection.h:61
zMuMuMuonUserData.alpha
alpha
zGenParticlesMatch = cms.InputTag(""),
Definition: zMuMuMuonUserData.py:9
trklet::Tracklet::innerStub_
const L1TStub * innerStub_
Definition: Tracklet.h:524
trklet::Tracklet::d0approx
double d0approx() const
Definition: Tracklet.h:417
trklet::LayerResidual::init
void init(Settings const &settings, int layer, int iphiresid, int izresid, int istubid, double phiresid, double zresid, double phiresidapprox, double zresidapprox, double rstub, const Stub *stubptr)
Definition: LayerResidual.cc:7
trklet::Tracklet::diskresid_
DiskResidual diskresid_[N_DISK]
Definition: Tracklet.h:562
trklet::Tracklet::middleFPGAStub_
const Stub * middleFPGAStub_
Definition: Tracklet.h:521
trklet::Tracklet::trackpars_
TrackPars< double > trackpars_
Definition: Tracklet.h:534
trklet::Tracklet::layerproj_
LayerProjection layerproj_[N_LAYER]
Definition: Tracklet.h:558
trklet::Settings
Definition: Settings.h:26
trklet::LayerResidual::fpgaphiresid
const FPGAWord & fpgaphiresid() const
Definition: LayerResidual.h:33
trklet::L1TStub
Definition: L1TStub.h:12
trklet::Tracklet::getISeed
int getISeed() const
Definition: Tracklet.cc:847
trklet::Tracklet::addMatch
void addMatch(int layer, int ideltaphi, int ideltaz, double dphi, double dz, double dphiapprox, double dzapprox, int stubid, double rstub, const trklet::Stub *stubptr)
Definition: Tracklet.cc:308
trklet::Tracklet::layerresid_
LayerResidual layerresid_[N_LAYER]
Definition: Tracklet.h:561
cms::cuda::assert
assert(be >=bs)
trklet::FPGAWord::set
void set(int value, int nbits, bool positive=true, int line=-1, const char *file=nullptr)
Definition: FPGAWord.cc:14
trklet::Tracklet::TCIndex_
int TCIndex_
Definition: Tracklet.h:529
trklet::DiskProjection::fpgafinervm
const FPGAWord & fpgafinervm() const
Definition: DiskProjection.h:91
trklet::Settings::nbitst
int nbitst() const
Definition: Settings.h:279
trklet::N_DISK
constexpr int N_DISK
Definition: Settings.h:20
trklet::Tracklet::d0fitexact
double d0fitexact() const
Definition: Tracklet.h:436
trklet::DiskProjection::fpgarbin2projvm
const FPGAWord & fpgarbin2projvm() const
Definition: DiskProjection.h:86
trklet::Tracklet::itfit
const FPGAWord & itfit() const
Definition: Tracklet.h:443
trklet::Tracklet::tfit
double tfit() const
Definition: Tracklet.h:430
trklet::Tracklet::fit
bool fit() const
Definition: Tracklet.h:482
trklet::Tracklet::rinvapprox
double rinvapprox() const
Definition: Tracklet.h:415
trklet::Tracklet::z0fitexact
double z0fitexact() const
Definition: Tracklet.h:438
trklet::FPGAWord::nbits
int nbits() const
Definition: FPGAWord.h:25
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
trklet::Tracklet::vmstrdisk
std::string vmstrdisk(int disk, unsigned int allstubindex)
Definition: Tracklet.cc:255
trklet::Tracklet::irinvfit
const FPGAWord & irinvfit() const
Definition: Tracklet.h:440
trklet::Stub::isBarrel
bool isBarrel() const
Definition: Stub.h:60
trklet::LayerProjection
Definition: LayerProjection.h:10
trklet::Tracklet::tpseed
int tpseed()
Definition: Tracklet.cc:118
trklet::Tracklet::triplet_
bool triplet_
Definition: Tracklet.h:518
trklet::Tracklet::isDisk
int isDisk() const
Definition: Tracklet.h:490
trklet::DiskProjection::fpgaphiproj
const FPGAWord & fpgaphiproj() const
Definition: DiskProjection.h:46
validateGeometry_cfg.valid
valid
Definition: validateGeometry_cfg.py:21
trklet::Tracklet::outerFPGAStub_
const Stub * outerFPGAStub_
Definition: Tracklet.h:522
trklet::Tracklet::addMatchDisk
void addMatchDisk(int disk, int ideltaphi, int ideltar, double dphi, double dr, double dphiapprox, double drapprox, double alpha, int stubid, double zstub, const trklet::Stub *stubptr)
Definition: Tracklet.cc:323
trklet::Tracklet::fpgatrack_
std::unique_ptr< Track > fpgatrack_
Definition: Tracklet.h:556
trklet::Tracklet::middleFPGAStub
const Stub * middleFPGAStub()
Definition: Tracklet.h:69
trklet::Tracklet::barrel_
bool barrel_
Definition: Tracklet.h:515
trklet::Settings::projdisks
unsigned int projdisks(unsigned int iSeed, unsigned int i) const
Definition: Settings.h:120
trklet::Stub::disk
const FPGAWord & disk() const
Definition: Stub.h:57
trklet::Tracklet::trackletprojstr
std::string trackletprojstr(int layer) const
Definition: Tracklet.cc:269
trklet::LayerProjection::fpgaphiproj
const FPGAWord & fpgaphiproj() const
Definition: LayerProjection.h:44
trklet::Stub
Definition: Stub.h:16
trklet::Tracklet::middleStub
const L1TStub * middleStub()
Definition: Tracklet.h:68
trklet::Track
Definition: Track.h:18
trklet::Tracklet::isOverlap
bool isOverlap() const
Definition: Tracklet.h:489
trklet::Tracklet::stubptr
const trklet::Stub * stubptr(int layer) const
Definition: Tracklet.h:370
trklet::DiskResidual::fpgastubid
const FPGAWord & fpgastubid() const
Definition: DiskResidual.h:45
trklet::Tracklet::innerStub
const L1TStub * innerStub()
Definition: Tracklet.h:65
trklet::DiskProjection::fpgaphiprojder
const FPGAWord & fpgaphiprojder() const
Definition: DiskProjection.h:56
trklet::Tracklet::trackletprojstrD
std::string trackletprojstrD(int disk) const
Definition: Tracklet.cc:289
trklet::DiskResidual::init
void init(Settings const &settings, int disk, int iphiresid, int irresid, int istubid, double phiresid, double rresid, double phiresidapprox, double rresidapprox, double zstub, double alpha, FPGAWord ialpha, const Stub *stubptr)
Definition: DiskResidual.cc:7
trklet::Tracklet::phi0approx
double phi0approx() const
Definition: Tracklet.h:416
trklet::DiskProjection
Definition: DiskProjection.h:12
trklet::Tracklet::hitpattern_
int hitpattern_
Definition: Tracklet.h:554
str
#define str(s)
Definition: TestProcessor.cc:48
trklet::Tracklet::fullmatchdiskstr
std::string fullmatchdiskstr(int disk)
Definition: Tracklet.cc:392
trklet::N_LAYER
constexpr int N_LAYER
Definition: Settings.h:19
trklet::Tracklet::nMatches
int nMatches()
Definition: Tracklet.cc:350
trklet::Tracklet::projdisk_
int projdisk_[N_DISK]
Definition: Tracklet.h:539
trklet::LayerProjection::fpgazproj
const FPGAWord & fpgazproj() const
Definition: LayerProjection.h:49
trklet::Settings::nbitsd0
unsigned int nbitsd0() const
Definition: Settings.h:254
trklet::Stub::isDisk
bool isDisk() const
Definition: Stub.h:61
HLTMuonOfflineAnalyzer_cfi.z0
z0
Definition: HLTMuonOfflineAnalyzer_cfi.py:98
trklet::Settings::kd0pars
double kd0pars() const
Definition: Settings.h:334
OrderedSet.t
t
Definition: OrderedSet.py:90
trklet::Tracklet::d0fit
double d0fit() const
Definition: Tracklet.h:429
trklet::Tracklet::calcSeedIndex
unsigned int calcSeedIndex() const
Definition: Tracklet.cc:859
cmsswSequenceInfo.tp
tp
Definition: cmsswSequenceInfo.py:17
trklet::FPGAWord
Definition: FPGAWord.h:9
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
trklet::LayerProjection::fpgaphiprojder
const FPGAWord & fpgaphiprojder() const
Definition: LayerProjection.h:54
trklet::N_SEED
constexpr unsigned int N_SEED
Definition: Settings.h:22
trklet::LayerResidual::valid
bool valid() const
Definition: LayerResidual.h:31
trklet::Settings::kphi0pars
double kphi0pars() const
Definition: Settings.h:331
trklet::Stub::alphanew
const FPGAWord & alphanew() const
Definition: Stub.h:53
trklet::rinv
double rinv(double phi1, double phi2, double r1, double r2)
Definition: Util.h:167
trklet::Tracklet::phi0fit
double phi0fit() const
Definition: Tracklet.h:428
trklet::Tracklet::iphi0fit
const FPGAWord & iphi0fit() const
Definition: Tracklet.h:441
trklet::Settings::extended
bool extended() const
Definition: Settings.h:207
trklet::Settings::projlayers
unsigned int projlayers(unsigned int iSeed, unsigned int i) const
Definition: Settings.h:119
trklet::Tracklet::outerStub_
const L1TStub * outerStub_
Definition: Tracklet.h:526
trklet::N_PROJ
constexpr unsigned int N_PROJ
Definition: Settings.h:731
trklet::Tracklet::trackletparstr
std::string trackletparstr()
Definition: Tracklet.cc:199
trklet::Tracklet::rinvfitexact
double rinvfitexact() const
Definition: Tracklet.h:434
trklet::DiskProjection::fpgarproj
const FPGAWord & fpgarproj() const
Definition: DiskProjection.h:51
trklet::Tracklet::tapprox
double tapprox() const
Definition: Tracklet.h:418
trklet::Tracklet::getStubIDs
std::map< int, int > getStubIDs()
Definition: Tracklet.cc:434
trklet::Tracklet::innerFPGAStub_
const Stub * innerFPGAStub_
Definition: Tracklet.h:520
trklet::L1TStub::disk
int disk() const
Definition: L1TStub.h:45
trklet::Tracklet::outerStub
const L1TStub * outerStub()
Definition: Tracklet.h:71
edm::LogPrint
Definition: MessageLogger.h:342
trklet::Settings::nbitsrinv
int nbitsrinv() const
Definition: Settings.h:277
trklet::Tracklet::rstub
double rstub(int layer)
Definition: Tracklet.h:199
goodZToMuMu_cfi.overlap
overlap
Definition: goodZToMuMu_cfi.py:108
trklet::DiskResidual::fpgaphiresid
const FPGAWord & fpgaphiresid() const
Definition: DiskResidual.h:35
trklet::TrackPars< int >
trklet::TrackPars::init
void init(T rinv, T phi0, T d0, T t, T z0)
Definition: TrackPars.h:21
trklet::Tracklet::setTrackletIndex
void setTrackletIndex(int index)
Definition: Tracklet.cc:842
trklet::Tracklet::id0fit
const FPGAWord & id0fit() const
Definition: Tracklet.h:442
trklet
Definition: AllProjectionsMemory.h:9
trklet::FPGAWord::value
int value() const
Definition: FPGAWord.h:24
trklet::Tracklet::isBarrel
bool isBarrel() const
Definition: Tracklet.h:488
trklet::Tracklet::fpgafitpars_
TrackPars< FPGAWord > fpgafitpars_
Definition: Tracklet.h:542
trklet::Tracklet::tfitexact
double tfitexact() const
Definition: Tracklet.h:437
trklet::LayerResidual::fpgastubid
const FPGAWord & fpgastubid() const
Definition: LayerResidual.h:43
trklet::Tracklet::rinvfit
double rinvfit() const
Definition: Tracklet.h:427
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:193
trklet::Tracklet::innerFPGAStub
const Stub * innerFPGAStub()
Definition: Tracklet.h:66
trklet::Settings::nbitsz0
int nbitsz0() const
Definition: Settings.h:280
trklet::Tracklet::z0
double z0() const
Definition: Tracklet.h:413
trklet::Tracklet::rinv
double rinv() const
Definition: Tracklet.h:409
trklet::DiskResidual::fpgarresid
const FPGAWord & fpgarresid() const
Definition: DiskResidual.h:40
trklet::Stub::phiregionaddress
unsigned int phiregionaddress() const
Definition: Stub.cc:177
trklet::Tracklet::d0
double d0() const
Definition: Tracklet.h:411
std
Definition: JetResolutionObject.h:76
trklet::Settings::nbitsphi0
int nbitsphi0() const
Definition: Settings.h:278
trklet::Tracklet::chisqrphifit_
double chisqrphifit_
Definition: Tracklet.h:547
trklet::Tracklet::disk2
int disk2() const
Definition: Tracklet.cc:835
Track.h
PVValHelper::dz
Definition: PVValidationHelpers.h:50
trklet::Tracklet::makeTrack
Track makeTrack(const std::vector< const L1TStub * > &l1stubs)
Definition: Tracklet.cc:792
relativeConstraints.value
value
Definition: relativeConstraints.py:53
trklet::LayerProjection::fpgazprojder
const FPGAWord & fpgazprojder() const
Definition: LayerProjection.h:59
trklet::Tracklet::fpgapars_
TrackPars< FPGAWord > fpgapars_
Definition: Tracklet.h:532
trklet::Tracklet::outerFPGAStub
const Stub * outerFPGAStub()
Definition: Tracklet.h:72
flavorHistoryFilter_cfi.dr
dr
Definition: flavorHistoryFilter_cfi.py:37
Exception
Definition: hltDiff.cc:246
trklet::Tracklet::setFitPars
void setFitPars(double rinvfit, double phi0fit, double d0fit, double tfit, double z0fit, double chisqrphifit, double chisqrzfit, double rinvfitexact, double phi0fitexact, double d0fitexact, double tfitexact, double z0fitexact, double chisqrphifitexact, double chisqrzfitexact, int irinvfit, int iphi0fit, int id0fit, int itfit, int iz0fit, int ichisqrphifit, int ichisqrzfit, int hitpattern, const std::vector< const L1TStub * > &l1stubs=std::vector< const L1TStub * >())
Definition: Tracklet.cc:588
trklet::Settings::kz
double kz() const
Definition: Settings.h:249
trklet::Stub::stubindex
const FPGAWord & stubindex() const
Definition: Stub.h:55
trklet::Tracklet::chisqrzfit_
double chisqrzfit_
Definition: Tracklet.h:548
trklet::Tracklet::trackfitstr
std::string trackfitstr()
Definition: Tracklet.cc:645
trklet::LayerProjection::fpgazbin2projvm
const FPGAWord & fpgazbin2projvm() const
Definition: LayerProjection.h:74
Exception.h
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
trklet::Tracklet::disk
int disk() const
Definition: Tracklet.cc:822
EcalCondDBWriter_cfi.location
location
Definition: EcalCondDBWriter_cfi.py:63
ztail.d
d
Definition: ztail.py:151
trklet::Tracklet::z0fit
double z0fit() const
Definition: Tracklet.h:431
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
trklet::LayerResidual::fpgazresid
const FPGAWord & fpgazresid() const
Definition: LayerResidual.h:38
trklet::Tracklet::ichisqrzfit_
FPGAWord ichisqrzfit_
Definition: Tracklet.h:544
trklet::Stub::layer
const FPGAWord & layer() const
Definition: Stub.h:56
trklet::DiskProjection::fpgarbin1projvm
const FPGAWord & fpgarbin1projvm() const
Definition: DiskProjection.h:81
trklet::Tracklet::t
double t() const
Definition: Tracklet.h:412
trklet::Tracklet::trackparsapprox_
TrackPars< double > trackparsapprox_
Definition: Tracklet.h:535
trklet::Tracklet::seedIndex_
unsigned int seedIndex_
Definition: Tracklet.h:512
trklet::Tracklet::middleStub_
const L1TStub * middleStub_
Definition: Tracklet.h:525
trklet::Tracklet::getL1Stubs
std::vector< const L1TStub * > getL1Stubs()
Definition: Tracklet.cc:411
d0
static constexpr float d0
Definition: L1EGammaCrystalsEmulatorProducer.cc:85
trklet::Tracklet::disk_
bool disk_
Definition: Tracklet.h:516
trklet::Tracklet::fitparsexact_
TrackPars< double > fitparsexact_
Definition: Tracklet.h:550
Stub.h
trklet::LayerProjection::fpgazbin1projvm
const FPGAWord & fpgazbin1projvm() const
Definition: LayerProjection.h:69
d1
static constexpr float d1
Definition: L1EGammaCrystalsEmulatorProducer.cc:85
Tracklet.h
trklet::Settings::writeoutReal
bool writeoutReal() const
Definition: Settings.h:164
trklet::Tracklet::layer
int layer() const
Definition: Tracklet.cc:815
trklet::Tracklet::vmstrlayer
std::string vmstrlayer(int layer, unsigned int allstubindex)
Definition: Tracklet.cc:220
trklet::Tracklet::projlayer_
int projlayer_[N_LAYER - 2]
Definition: Tracklet.h:538
trklet::Tracklet::iz0fit
const FPGAWord & iz0fit() const
Definition: Tracklet.h:444