CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
MatchCalculator.cc
Go to the documentation of this file.
11 
15 
16 using namespace std;
17 using namespace trklet;
18 
19 MatchCalculator::MatchCalculator(string name, Settings const& settings, Globals* global, unsigned int iSector)
20  : ProcessBase(name, settings, global, iSector) {
22 
23  phiregion_ = name[8] - 'A';
25 
26  fullMatches_.resize(12, nullptr);
27 
28  //TODO - need to sort out constants here
29  icorrshift_ = 7;
30 
31  if (layerdisk_ < N_PSLAYER) {
33  } else {
35  }
36  phi0shift_ = 3;
37  fact_ = 1;
38  if (layerdisk_ >= N_PSLAYER && layerdisk_ < N_LAYER) {
39  fact_ = (1 << (settings_.nzbitsstub(0) - settings_.nzbitsstub(5)));
43  phi0shift_ = 0;
44  }
45 
46  for (unsigned int iSeed = 0; iSeed < N_SEED; iSeed++) {
47  if (layerdisk_ < N_LAYER) {
48  phimatchcut_[iSeed] =
50  zmatchcut_[iSeed] = settings_.zmatchcut(iSeed, layerdisk_) / settings_.kz();
51  } else {
56  }
57  }
58 
59  if (iSector_ == 0 && layerdisk_ < N_LAYER && settings_.writeTable()) {
60  ofstream outphicut;
61  outphicut.open(getName() + "_phicut.tab");
62  outphicut << "{" << endl;
63  for (unsigned int seedindex = 0; seedindex < N_SEED; seedindex++) {
64  if (seedindex != 0)
65  outphicut << "," << endl;
66  outphicut << phimatchcut_[seedindex];
67  }
68  outphicut << endl << "};" << endl;
69  outphicut.close();
70 
71  ofstream outzcut;
72  outzcut.open(getName() + "_zcut.tab");
73  outzcut << "{" << endl;
74  for (unsigned int seedindex = 0; seedindex < N_SEED; seedindex++) {
75  if (seedindex != 0)
76  outzcut << "," << endl;
77  outzcut << zmatchcut_[seedindex];
78  }
79  outzcut << endl << "};" << endl;
80  outzcut.close();
81  }
82 
83  if (iSector_ == 0 && layerdisk_ >= N_LAYER && settings_.writeTable()) {
84  ofstream outphicut;
85  outphicut.open(getName() + "_PSphicut.tab");
86  outphicut << "{" << endl;
87  for (unsigned int seedindex = 0; seedindex < N_SEED; seedindex++) {
88  if (seedindex != 0)
89  outphicut << "," << endl;
90  outphicut << rphicutPS_[seedindex];
91  }
92  outphicut << endl << "};" << endl;
93  outphicut.close();
94 
95  outphicut.open(getName() + "_2Sphicut.tab");
96  outphicut << "{" << endl;
97  for (unsigned int seedindex = 0; seedindex < N_SEED; seedindex++) {
98  if (seedindex != 0)
99  outphicut << "," << endl;
100  outphicut << rphicut2S_[seedindex];
101  }
102  outphicut << endl << "};" << endl;
103  outphicut.close();
104 
105  ofstream outzcut;
106  outzcut.open(getName() + "_PSrcut.tab");
107  outzcut << "{" << endl;
108  for (unsigned int seedindex = 0; seedindex < N_SEED; seedindex++) {
109  if (seedindex != 0)
110  outzcut << "," << endl;
111  outzcut << rcutPS_[seedindex];
112  }
113  outzcut << endl << "};" << endl;
114  outzcut.close();
115 
116  outzcut.open(getName() + "_2Srcut.tab");
117  outzcut << "{" << endl;
118  for (unsigned int seedindex = 0; seedindex < N_SEED; seedindex++) {
119  if (seedindex != 0)
120  outzcut << "," << endl;
121  outzcut << rcut2S_[seedindex];
122  }
123  outzcut << endl << "};" << endl;
124  outzcut.close();
125  }
126 
127  for (unsigned int i = 0; i < N_DSS_MOD * 2; i++) {
129  (1 << (settings_.nbitsalpha() - 1)) / (settings_.rDSSinner(i) * settings_.rDSSinner(i)) /
130  settings_.kphi();
132  (1 << (settings_.nbitsalpha() - 1)) / (settings_.rDSSouter(i) * settings_.rDSSouter(i)) /
133  settings_.kphi();
134  }
135 }
136 
138  if (settings_.writetrace()) {
139  edm::LogVerbatim("Tracklet") << "In " << name_ << " adding output to " << memory->getName() << " to output "
140  << output;
141  }
142  if (output.substr(0, 8) == "matchout") {
143  auto* tmp = dynamic_cast<FullMatchMemory*>(memory);
144  assert(tmp != nullptr);
145  unsigned int iSeed = getISeed(memory->getName());
146  fullMatches_[iSeed] = tmp;
147  return;
148  }
149  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " could not find output " << output;
150 }
151 
153  if (settings_.writetrace()) {
154  edm::LogVerbatim("Tracklet") << "In " << name_ << " adding input from " << memory->getName() << " to input "
155  << input;
156  }
157  if (input == "allstubin") {
158  auto* tmp = dynamic_cast<AllStubsMemory*>(memory);
159  assert(tmp != nullptr);
160  allstubs_ = tmp;
161  return;
162  }
163  if (input == "allprojin") {
164  auto* tmp = dynamic_cast<AllProjectionsMemory*>(memory);
165  assert(tmp != nullptr);
166  allprojs_ = tmp;
167  return;
168  }
169  if (input.substr(0, 5) == "match" && input.substr(input.size() - 2, 2) == "in") {
170  auto* tmp = dynamic_cast<CandidateMatchMemory*>(memory);
171  assert(tmp != nullptr);
172  matches_.push_back(tmp);
173  return;
174  }
175  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " could not find input " << input;
176 }
177 
179  unsigned int countall = 0;
180  unsigned int countsel = 0;
181 
182  Tracklet* oldTracklet = nullptr;
183 
184  std::vector<std::pair<std::pair<Tracklet*, int>, const Stub*> > mergedMatches = mergeMatches(matches_);
185 
186  for (unsigned int j = 0; j < mergedMatches.size(); j++) {
187  if (settings_.debugTracklet() && j == 0) {
188  edm::LogVerbatim("Tracklet") << getName() << " has " << mergedMatches.size() << " candidate matches";
189  }
190 
191  countall++;
192 
193  const Stub* fpgastub = mergedMatches[j].second;
194  Tracklet* tracklet = mergedMatches[j].first.first;
195  const L1TStub* stub = fpgastub->l1tstub();
196 
197  //check that the matches are orderd correctly
198  //allow equal here since we can have more than one cadidate match per tracklet projection
199  if (oldTracklet != nullptr) {
200  assert(oldTracklet->TCID() <= tracklet->TCID());
201  }
202  oldTracklet = tracklet;
203 
204  if (layerdisk_ < N_LAYER) {
205  //Integer calculation
206 
207  int ir = fpgastub->r().value();
208  int iphi = tracklet->fpgaphiproj(layerdisk_ + 1).value();
209  int icorr = (ir * tracklet->fpgaphiprojder(layerdisk_ + 1).value()) >> icorrshift_;
210  iphi += icorr;
211 
212  int iz = tracklet->fpgazproj(layerdisk_ + 1).value();
213  int izcor = (ir * tracklet->fpgazprojder(layerdisk_ + 1).value() + (1 << (icorzshift_ - 1))) >> icorzshift_;
214  iz += izcor;
215 
216  int ideltaz = fpgastub->z().value() - iz;
217  int ideltaphi = (fpgastub->phi().value() << phi0shift_) - (iphi << (settings_.phi0bitshift() - 1 + phi0shift_));
218 
219  //Floating point calculations
220 
221  double phi = stub->phi() - phioffset_;
222  double r = stub->r();
223  double z = stub->z();
224 
225  if (settings_.useapprox()) {
226  double dphi = reco::reduceRange(phi - fpgastub->phiapprox(0.0, 0.0));
227  assert(std::abs(dphi) < 0.001);
228  phi = fpgastub->phiapprox(0.0, 0.0);
229  z = fpgastub->zapprox();
230  r = fpgastub->rapprox();
231  }
232 
233  if (phi < 0)
234  phi += 2 * M_PI;
235 
236  double dr = r - tracklet->rproj(layerdisk_ + 1);
238 
239  double dphi =
240  reco::reduceRange(phi - (tracklet->phiproj(layerdisk_ + 1) + dr * tracklet->phiprojder(layerdisk_ + 1)));
241 
242  double dz = z - (tracklet->zproj(layerdisk_ + 1) + dr * tracklet->zprojder(layerdisk_ + 1));
243 
244  double dphiapprox = reco::reduceRange(
245  phi - (tracklet->phiprojapprox(layerdisk_ + 1) + dr * tracklet->phiprojderapprox(layerdisk_ + 1)));
246 
247  double dzapprox = z - (tracklet->zprojapprox(layerdisk_ + 1) + dr * tracklet->zprojderapprox(layerdisk_ + 1));
248 
249  int seedindex = tracklet->getISeed();
250 
251  assert(phimatchcut_[seedindex] > 0);
252  assert(zmatchcut_[seedindex] > 0);
253 
254  if (settings_.bookHistos()) {
255  bool truthmatch = tracklet->stubtruthmatch(stub);
256 
258  hists->FillLayerResidual(layerdisk_ + 1,
259  seedindex,
260  dphiapprox * settings_.rmean(layerdisk_),
261  ideltaphi * settings_.kphi1() * settings_.rmean(layerdisk_),
262  ideltaz * fact_ * settings_.kz(),
263  dz,
264  truthmatch);
265  }
266 
267  if (std::abs(dphi) > 0.2 || std::abs(dphiapprox) > 0.2) {
268  edm::LogProblem("Tracklet") << "WARNING dphi and/or dphiapprox too large : " << dphi << " " << dphiapprox
269  << endl;
270  }
271  assert(std::abs(dphi) < 0.2);
272  assert(std::abs(dphiapprox) < 0.2);
273 
274  if (settings_.writeMonitorData("Residuals")) {
275  double pt = 0.01 * settings_.c() * settings_.bfield() / std::abs(tracklet->rinv());
276 
277  globals_->ofstream("layerresiduals.txt")
278  << layerdisk_ + 1 << " " << seedindex << " " << pt << " "
279  << ideltaphi * settings_.kphi1() * settings_.rmean(layerdisk_) << " "
280  << dphiapprox * settings_.rmean(layerdisk_) << " "
281  << phimatchcut_[seedindex] * settings_.kphi1() * settings_.rmean(layerdisk_) << " "
282  << ideltaz * fact_ * settings_.kz() << " " << dz << " " << zmatchcut_[seedindex] * settings_.kz() << endl;
283  }
284 
285  bool imatch = (std::abs(ideltaphi) <= (int)phimatchcut_[seedindex]) &&
286  (std::abs(ideltaz * fact_) <= (int)zmatchcut_[seedindex]);
287 
288  if (settings_.debugTracklet()) {
289  edm::LogVerbatim("Tracklet") << getName() << " imatch = " << imatch << " ideltaphi cut " << ideltaphi << " "
290  << phimatchcut_[seedindex] << " ideltaz*fact cut " << ideltaz * fact_ << " "
291  << zmatchcut_[seedindex];
292  }
293 
294  if (imatch) {
295  countsel++;
296 
297  tracklet->addMatch(layerdisk_ + 1,
298  ideltaphi,
299  ideltaz,
300  dphi,
301  dz,
302  dphiapprox,
303  dzapprox,
304  (phiregion_ << 7) + fpgastub->stubindex().value(),
305  stub->r(),
306  mergedMatches[j].second);
307 
308  if (settings_.debugTracklet()) {
309  edm::LogVerbatim("Tracklet") << "Accepted full match in layer " << getName() << " " << tracklet << " "
310  << iSector_;
311  }
312 
313  fullMatches_[seedindex]->addMatch(tracklet, mergedMatches[j].second);
314  }
315  } else { //disk matches
316 
317  //check that stubs and projections in same half of detector
318  assert(stub->z() * tracklet->t() > 0.0);
319 
320  int sign = (tracklet->t() > 0.0) ? 1 : -1;
321  int disk = sign * (layerdisk_ - (N_LAYER - 1));
322  assert(disk != 0);
323 
324  //Perform integer calculations here
325 
326  int iz = fpgastub->z().value();
327  int iphi = tracklet->fpgaphiprojdisk(disk).value();
328 
329  //TODO - need to express interms of constants
330  int shifttmp = 6;
331  int iphicorr = (iz * tracklet->fpgaphiprojderdisk(disk).value()) >> shifttmp;
332 
333  iphi += iphicorr;
334 
335  int ir = tracklet->fpgarprojdisk(disk).value();
336 
337  //TODO - need to express interms of constants
338  int shifttmp2 = 7;
339  int ircorr = (iz * tracklet->fpgarprojderdisk(disk).value()) >> shifttmp2;
340 
341  ir += ircorr;
342 
343  int ideltaphi = fpgastub->phi().value() * settings_.kphi() / settings_.kphi() - iphi;
344 
345  int irstub = fpgastub->r().value();
346  int ialphafact = 0;
347  if (!stub->isPSmodule()) {
348  assert(irstub < (int)N_DSS_MOD * 2);
349  if (abs(disk) <= 2) {
350  ialphafact = ialphafactinner_[irstub];
351  irstub = settings_.rDSSinner(irstub) / settings_.kr();
352  } else {
353  ialphafact = ialphafactouter_[irstub];
354  irstub = settings_.rDSSouter(irstub) / settings_.kr();
355  }
356  }
357 
358  //TODO stub and projection r should not use different # bits...
359  int ideltar = (irstub >> 1) - ir;
360 
361  if (!stub->isPSmodule()) {
362  int ialphanew = fpgastub->alphanew().value();
363  int iphialphacor = ((ideltar * ialphanew * ialphafact) >> settings_.alphashift());
364  ideltaphi += iphialphacor;
365  }
366 
367  //Perform floating point calculations here
368 
369  double phi = stub->phi() - phioffset_;
370  double z = stub->z();
371  double r = stub->r();
372 
373  if (settings_.useapprox()) {
374  double dphi = reco::reduceRange(phi - fpgastub->phiapprox(0.0, 0.0));
375  assert(std::abs(dphi) < 0.001);
376  phi = fpgastub->phiapprox(0.0, 0.0);
377  z = fpgastub->zapprox();
378  r = fpgastub->rapprox();
379  }
380 
381  if (phi < 0)
382  phi += 2 * M_PI;
383 
384  double dz = z - sign * settings_.zmean(layerdisk_ - N_LAYER);
385 
386  if (std::abs(dz) > settings_.dzmax()) {
387  throw cms::Exception("LogicError")
388  << __FILE__ << " " << __LINE__ << " " << name_ << "_" << iSector_ << " " << tracklet->getISeed()
389  << "\n stub " << stub->z() << " disk " << disk << " " << dz;
390  }
391 
392  double phiproj = tracklet->phiprojdisk(disk) + dz * tracklet->phiprojderdisk(disk);
393 
394  double rproj = tracklet->rprojdisk(disk) + dz * tracklet->rprojderdisk(disk);
395 
396  double deltar = r - rproj;
397 
398  double dr = stub->r() - rproj;
399 
400  double dphi = reco::reduceRange(phi - phiproj);
401 
402  double dphiapprox =
403  reco::reduceRange(phi - (tracklet->phiprojapproxdisk(disk) + dz * tracklet->phiprojderapproxdisk(disk)));
404 
405  double drapprox = stub->r() - (tracklet->rprojapproxdisk(disk) + dz * tracklet->rprojderapproxdisk(disk));
406 
407  double drphi = dphi * stub->r();
408  double drphiapprox = dphiapprox * stub->r();
409 
410  if (!stub->isPSmodule()) {
411  double alphanorm = stub->alphanorm();
412  dphi += dr * alphanorm * settings_.half2SmoduleWidth() / stub->r2();
413  dphiapprox += drapprox * alphanorm * settings_.half2SmoduleWidth() / stub->r2();
414 
415  drphi += dr * alphanorm * settings_.half2SmoduleWidth() / stub->r();
416  drphiapprox += dr * alphanorm * settings_.half2SmoduleWidth() / stub->r();
417  }
418 
419  int seedindex = tracklet->getISeed();
420 
421  int idrphicut = rphicutPS_[seedindex];
422  int idrcut = rcutPS_[seedindex];
423  if (!stub->isPSmodule()) {
424  idrphicut = rphicut2S_[seedindex];
425  idrcut = rcut2S_[seedindex];
426  }
427 
428  double drphicut = idrphicut * settings_.kphi() * settings_.kr();
429  double drcut = idrcut * settings_.krprojshiftdisk();
430 
431  if (settings_.writeMonitorData("Residuals")) {
432  double pt = 0.01 * settings_.c() * settings_.bfield() / std::abs(tracklet->rinv());
433 
434  globals_->ofstream("diskresiduals.txt")
435  << disk << " " << stub->isPSmodule() << " " << tracklet->layer() << " " << abs(tracklet->disk()) << " "
436  << pt << " " << ideltaphi * settings_.kphi() * stub->r() << " " << drphiapprox << " " << drphicut << " "
437  << ideltar * settings_.krprojshiftdisk() << " " << deltar << " " << drcut << " " << endl;
438  }
439 
440  bool match = (std::abs(drphi) < drphicut) && (std::abs(deltar) < drcut);
441 
442  bool imatch = (std::abs(ideltaphi * irstub) < idrphicut) && (std::abs(ideltar) < idrcut);
443 
444  if (settings_.debugTracklet()) {
445  edm::LogVerbatim("Tracklet") << "imatch match disk: " << imatch << " " << match << " " << std::abs(ideltaphi)
446  << " " << drphicut / (settings_.kphi() * stub->r()) << " " << std::abs(ideltar)
447  << " " << drcut / settings_.krprojshiftdisk() << " r = " << stub->r();
448  }
449 
450  if (imatch) {
451  countsel++;
452 
453  if (settings_.debugTracklet()) {
454  edm::LogVerbatim("Tracklet") << "MatchCalculator found match in disk " << getName();
455  }
456 
457  if (std::abs(dphi) >= 0.25) {
458  edm::LogVerbatim("Tracklet") << "dphi " << dphi << " Seed / ISeed " << tracklet->getISeed();
459  }
460  assert(std::abs(dphi) < 0.25);
461  assert(std::abs(dphiapprox) < 0.25);
462 
463  tracklet->addMatchDisk(disk,
464  ideltaphi,
465  ideltar,
466  drphi / stub->r(),
467  dr,
468  drphiapprox / stub->r(),
469  drapprox,
470  stub->alpha(settings_.stripPitch(stub->isPSmodule())),
471  (phiregion_ << 7) + fpgastub->stubindex().value(),
472  stub->z(),
473  fpgastub);
474  if (settings_.debugTracklet()) {
475  edm::LogVerbatim("Tracklet") << "Accepted full match in disk " << getName() << " " << tracklet << " "
476  << iSector_;
477  }
478 
479  fullMatches_[seedindex]->addMatch(tracklet, mergedMatches[j].second);
480  }
481  }
482  if (countall >= settings_.maxStep("MC"))
483  break;
484  }
485 
486  if (settings_.writeMonitorData("MC")) {
487  globals_->ofstream("matchcalculator.txt") << getName() << " " << countall << " " << countsel << endl;
488  }
489 }
490 
491 std::vector<std::pair<std::pair<Tracklet*, int>, const Stub*> > MatchCalculator::mergeMatches(
492  vector<CandidateMatchMemory*>& candmatch) {
493  std::vector<std::pair<std::pair<Tracklet*, int>, const Stub*> > tmp;
494 
495  std::vector<unsigned int> indexArray;
496  indexArray.reserve(candmatch.size());
497  for (unsigned int i = 0; i < candmatch.size(); i++) {
498  indexArray.push_back(0);
499  }
500 
501  int bestIndex = -1;
502  do {
503  int bestSector = 100;
504  int bestTCID = (1 << 16);
505  bestIndex = -1;
506  for (unsigned int i = 0; i < candmatch.size(); i++) {
507  if (indexArray[i] >= candmatch[i]->nMatches()) {
508  // skip as we were at the end
509  continue;
510  }
511  int TCID = candmatch[i]->getMatch(indexArray[i]).first.first->TCID();
512  int dSector = 0;
513  if (dSector > 2)
514  dSector -= N_SECTOR;
515  if (dSector < -2)
516  dSector += N_SECTOR;
517  assert(abs(dSector) < 2);
518  if (dSector == -1)
519  dSector = 2;
520  if (dSector < bestSector) {
521  bestSector = dSector;
522  bestTCID = TCID;
523  bestIndex = i;
524  }
525  if (dSector == bestSector) {
526  if (TCID < bestTCID) {
527  bestTCID = TCID;
528  bestIndex = i;
529  }
530  }
531  }
532  if (bestIndex != -1) {
533  tmp.push_back(candmatch[bestIndex]->getMatch(indexArray[bestIndex]));
534  indexArray[bestIndex]++;
535  }
536  } while (bestIndex != -1);
537 
538  if (layerdisk_ < N_LAYER) {
539  int lastTCID = -1;
540  bool error = false;
541 
542  //Allow equal TCIDs since we can have multiple candidate matches
543  for (unsigned int i = 1; i < tmp.size(); i++) {
544  if (lastTCID > tmp[i].first.first->TCID()) {
545  edm::LogProblem("Tracklet") << "Wrong TCID ordering for projections in " << getName() << " last " << lastTCID
546  << " " << tmp[i].first.first->TCID();
547  error = true;
548  } else {
549  lastTCID = tmp[i].first.first->TCID();
550  }
551  }
552 
553  if (error) {
554  for (unsigned int i = 1; i < tmp.size(); i++) {
555  edm::LogProblem("Tracklet") << "Wrong order for in " << getName() << " " << i << " " << tmp[i].first.first
556  << " " << tmp[i].first.first->TCID();
557  }
558  }
559  }
560 
561  for (unsigned int i = 0; i < tmp.size(); i++) {
562  if (i > 0) {
563  //This allows for equal TCIDs. This means that we can e.g. have a track seeded
564  //in L1L2 that projects to both L3 and D4. The algorithm will pick up the first hit and
565  //drop the second
566 
567  assert(tmp[i - 1].first.first->TCID() <= tmp[i].first.first->TCID());
568  }
569  }
570 
571  return tmp;
572 }
trklet::N_PSLAYER
constexpr unsigned int N_PSLAYER
Definition: Settings.h:21
Util.h
trklet::Tracklet::stubtruthmatch
bool stubtruthmatch(const L1TStub *stub)
Definition: Tracklet.cc:149
trklet::Tracklet::fpgaphiprojder
const FPGAWord & fpgaphiprojder(int layer) const
Definition: Tracklet.h:94
trklet::MatchCalculator::phiregion_
unsigned int phiregion_
Definition: MatchCalculator.h:37
MatchCalculator.h
mps_fire.i
i
Definition: mps_fire.py:355
trklet::Settings::writetrace
bool writetrace() const
Definition: Settings.h:147
trklet::MatchCalculator::rphicutPS_
unsigned int rphicutPS_[N_SEED]
Definition: MatchCalculator.h:47
trklet::Settings::rphimatchcut
double rphimatchcut(unsigned int iSeed, unsigned int ilayer) const
Definition: Settings.h:121
input
static const std::string input
Definition: EdmProvDump.cc:48
MessageLogger.h
trklet::Settings::krprojshiftdisk
double krprojshiftdisk() const
Definition: Settings.h:341
trklet::Tracklet::fpgaphiprojdisk
const FPGAWord & fpgaphiprojdisk(int disk) const
Definition: Tracklet.h:266
trklet::Stub::phi
const FPGAWord & phi() const
Definition: Stub.h:51
AllStubsMemory.h
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:32
trklet::Settings::dzmax
double dzmax() const
Definition: Settings.h:106
trklet::Tracklet::rprojderdisk
double rprojderdisk(int disk) const
Definition: Tracklet.h:321
CandidateMatchMemory.h
trklet::N_SECTOR
constexpr unsigned int N_SECTOR
Definition: Settings.h:17
trklet::Settings
Definition: Settings.h:26
trklet::L1TStub
Definition: L1TStub.h:12
trklet::L1TStub::z
double z() const
Definition: L1TStub.h:56
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
cms::cuda::assert
assert(be >=bs)
Validation_hcalonly_cfi.sign
sign
Definition: Validation_hcalonly_cfi.py:32
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:215
deltar
Definition: deltar.py:1
trklet::Settings::rphicutPS
double rphicutPS(unsigned int iSeed, unsigned int idisk) const
Definition: Settings.h:123
trklet::Settings::rmean
double rmean(unsigned int iLayer) const
Definition: Settings.h:128
trklet::ProcessBase::settings_
Settings const & settings_
Definition: ProcessBase.h:44
compare.hists
hists
Definition: compare.py:319
trklet::Stub::phiapprox
double phiapprox(double phimin, double) const
Definition: Stub.cc:236
trklet::MatchCalculator::addInput
void addInput(MemoryBase *memory, std::string input) override
Definition: MatchCalculator.cc:152
trklet::Settings::kphi1
double kphi1() const
Definition: Settings.h:247
FullMatchMemory.h
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
trklet::Settings::rDSSinner
double rDSSinner(unsigned int iBin) const
Definition: Settings.h:135
trklet::Settings::half2SmoduleWidth
double half2SmoduleWidth() const
Definition: Settings.h:108
trklet::Globals
Definition: Globals.h:32
relativeConstraints.error
error
Definition: relativeConstraints.py:53
trklet::MatchCalculator::rphicut2S_
unsigned int rphicut2S_[N_SEED]
Definition: MatchCalculator.h:48
trklet::MatchCalculator::rcutPS_
unsigned int rcutPS_[N_SEED]
Definition: MatchCalculator.h:49
dqmdumpme.first
first
Definition: dqmdumpme.py:55
trklet::MatchCalculator::icorzshift_
int icorzshift_
Definition: MatchCalculator.h:41
trklet::Stub::r
const FPGAWord & r() const
Definition: Stub.h:49
trklet::Settings::bfield
double bfield() const
Definition: Settings.h:212
trklet::Settings::bookHistos
bool bookHistos() const
Definition: Settings.h:166
trklet::Tracklet::fpgarprojderdisk
const FPGAWord & fpgarprojderdisk(int disk) const
Definition: Tracklet.h:281
trklet::Settings::nrbitsstub
unsigned int nrbitsstub(unsigned int layerdisk) const
Definition: Settings.h:66
trklet::HistBase
Definition: HistBase.h:16
trklet::Settings::writeTable
bool writeTable() const
Definition: Settings.h:153
trklet::Tracklet::fpgazprojder
const FPGAWord & fpgazprojder(int layer) const
Definition: Tracklet.h:109
trklet::Tracklet
Definition: Tracklet.h:28
trklet::Settings::rDSSouter
double rDSSouter(unsigned int iBin) const
Definition: Settings.h:138
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
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::MatchCalculator::allprojs_
AllProjectionsMemory * allprojs_
Definition: MatchCalculator.h:56
trklet::Tracklet::fpgazproj
const FPGAWord & fpgazproj(int layer) const
Definition: Tracklet.h:99
trklet::Stub::z
const FPGAWord & z() const
Definition: Stub.h:50
trklet::Stub
Definition: Stub.h:16
trklet::Tracklet::rprojdisk
double rprojdisk(int disk) const
Definition: Tracklet.h:316
trklet::L1TStub::isPSmodule
unsigned int isPSmodule() const
Definition: L1TStub.h:93
trklet::Settings::alphashift
int alphashift() const
Definition: Settings.h:175
trklet::Settings::rcut2S
double rcut2S(unsigned int iSeed, unsigned int idisk) const
Definition: Settings.h:126
trklet::N_LAYER
constexpr int N_LAYER
Definition: Settings.h:19
AllProjectionsMemory.h
trklet::MatchCalculator::ialphafactouter_
int ialphafactouter_[N_DSS_MOD *2]
Definition: MatchCalculator.h:53
trklet::MatchCalculator::addOutput
void addOutput(MemoryBase *memory, std::string output) override
Definition: MatchCalculator.cc:137
trklet::Tracklet::phiprojder
double phiprojder(int layer) const
Definition: Tracklet.h:159
trklet::Settings::zmean
double zmean(unsigned int iDisk) const
Definition: Settings.h:131
trklet::MatchCalculator::fullMatches_
std::vector< FullMatchMemory * > fullMatches_
Definition: MatchCalculator.h:59
trklet::Tracklet::phiprojderapprox
double phiprojderapprox(int layer) const
Definition: Tracklet.h:189
trklet::Tracklet::rproj
double rproj(int layer) const
Definition: Tracklet.h:194
trklet::MatchCalculator::phimatchcut_
unsigned int phimatchcut_[N_SEED]
Definition: MatchCalculator.h:45
trklet::Tracklet::zproj
double zproj(int layer) const
Definition: Tracklet.h:164
trklet::Tracklet::phiprojderapproxdisk
double phiprojderapproxdisk(int disk) const
Definition: Tracklet.h:291
trklet::Tracklet::zprojderapprox
double zprojderapprox(int layer) const
Definition: Tracklet.h:179
trklet::ProcessBase::initLayerDisk
void initLayerDisk(unsigned int pos, int &layer, int &disk)
Definition: ProcessBase.cc:45
trklet::Settings::kr
double kr() const
Definition: Settings.h:250
trklet::N_SEED
constexpr unsigned int N_SEED
Definition: Settings.h:22
trklet::Settings::drmax
double drmax() const
Definition: Settings.h:105
trklet::MatchCalculator::phi0shift_
int phi0shift_
Definition: MatchCalculator.h:42
trklet::MemoryBase
Definition: MemoryBase.h:13
trklet::Settings::rcutPS
double rcutPS(unsigned int iSeed, unsigned int idisk) const
Definition: Settings.h:124
trklet::Stub::alphanew
const FPGAWord & alphanew() const
Definition: Stub.h:53
trklet::N_DSS_MOD
constexpr unsigned int N_DSS_MOD
Definition: Settings.h:24
trklet::MatchCalculator::icorrshift_
int icorrshift_
Definition: MatchCalculator.h:40
trklet::Tracklet::TCID
int TCID() const
Definition: Tracklet.h:500
trklet::MatchCalculator::matches_
std::vector< CandidateMatchMemory * > matches_
Definition: MatchCalculator.h:58
HistBase.h
trklet::Settings::nzbitsstub
unsigned int nzbitsstub(unsigned int layerdisk) const
Definition: Settings.h:64
edm::LogProblem
Definition: MessageLogger.h:387
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
trklet::MatchCalculator::phioffset_
double phioffset_
Definition: MatchCalculator.h:43
trklet::Tracklet::phiprojdisk
double phiprojdisk(int disk) const
Definition: Tracklet.h:306
trklet::Stub::rapprox
double rapprox() const
Definition: Stub.cc:209
createfilelist.int
int
Definition: createfilelist.py:10
trklet::L1TStub::alphanorm
double alphanorm() const
Definition: L1TStub.cc:91
trklet::Tracklet::phiprojapproxdisk
double phiprojapproxdisk(int disk) const
Definition: Tracklet.h:286
Globals.h
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:50
edm::LogVerbatim
Definition: MessageLogger.h:297
trklet::MatchCalculator::layerdisk_
unsigned int layerdisk_
Definition: MatchCalculator.h:36
trklet::Tracklet::rprojderapproxdisk
double rprojderapproxdisk(int disk) const
Definition: Tracklet.h:301
trklet::L1TStub::alpha
double alpha(double pitch) const
Definition: L1TStub.cc:79
trklet
Definition: AllProjectionsMemory.h:9
trklet::FPGAWord::value
int value() const
Definition: FPGAWord.h:24
trklet::Settings::nbitsalpha
int nbitsalpha() const
Definition: Settings.h:176
trklet::Settings::stripPitch
double stripPitch(bool isPSmodule) const
Definition: Settings.h:219
trklet::Settings::kphi
double kphi() const
Definition: Settings.h:246
alignCSCRings.r
r
Definition: alignCSCRings.py:93
trklet::Settings::writeMonitorData
bool writeMonitorData(std::string module) const
Definition: Settings.h:86
trklet::Tracklet::rinv
double rinv() const
Definition: Tracklet.h:409
std
Definition: JetResolutionObject.h:76
trklet::ProcessBase
Definition: ProcessBase.h:12
trklet::Settings::SS_zderL_shift
int SS_zderL_shift() const
Definition: Settings.h:296
trklet::Globals::ofstream
std::ofstream & ofstream(std::string fname)
Definition: Globals.cc:44
trklet::Stub::l1tstub
L1TStub * l1tstub()
Definition: Stub.h:69
PVValHelper::dz
Definition: PVValidationHelpers.h:50
trklet::ProcessBase::getISeed
unsigned int getISeed(std::string name)
Definition: ProcessBase.cc:131
trklet::MatchCalculator::execute
void execute()
Definition: MatchCalculator.cc:178
trklet::Tracklet::zprojder
double zprojder(int layer) const
Definition: Tracklet.h:169
trklet::Settings::useapprox
bool useapprox() const
Definition: Settings.h:193
flavorHistoryFilter_cfi.dr
dr
Definition: flavorHistoryFilter_cfi.py:37
Exception
Definition: hltDiff.cc:246
trklet::Tracklet::phiproj
double phiproj(int layer) const
Definition: Tracklet.h:154
trklet::ProcessBase::getName
std::string const & getName() const
Definition: ProcessBase.h:22
trklet::Tracklet::fpgaphiproj
const FPGAWord & fpgaphiproj(int layer) const
Definition: Tracklet.h:104
trklet::Settings::kz
double kz() const
Definition: Settings.h:249
trklet::ProcessBase::name_
std::string name_
Definition: ProcessBase.h:38
trklet::Stub::stubindex
const FPGAWord & stubindex() const
Definition: Stub.h:55
trklet::Settings::phi0bitshift
int phi0bitshift() const
Definition: Settings.h:306
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
trklet::ProcessBase::iSector_
unsigned int iSector_
Definition: ProcessBase.h:39
trklet::Settings::debugTracklet
bool debugTracklet() const
Definition: Settings.h:146
trklet::Settings::zmatchcut
double zmatchcut(unsigned int iSeed, unsigned int ilayer) const
Definition: Settings.h:122
trklet::MatchCalculator::ialphafactinner_
int ialphafactinner_[N_DSS_MOD *2]
Definition: MatchCalculator.h:52
Exception.h
trklet::Settings::rphicut2S
double rphicut2S(unsigned int iSeed, unsigned int idisk) const
Definition: Settings.h:125
trklet::Tracklet::fpgarprojdisk
const FPGAWord & fpgarprojdisk(int disk) const
Definition: Tracklet.h:276
trklet::Tracklet::disk
int disk() const
Definition: Tracklet.cc:822
trklet::Settings::maxStep
unsigned int maxStep(std::string module) const
Definition: Settings.h:93
trklet::L1TStub::r
double r() const
Definition: L1TStub.h:57
trklet::Settings::PS_zderL_shift
int PS_zderL_shift() const
Definition: Settings.h:295
trklet::Tracklet::rprojapproxdisk
double rprojapproxdisk(int disk) const
Definition: Tracklet.h:296
trklet::ProcessBase::phimin_
double phimin_
Definition: ProcessBase.h:41
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
trklet::Tracklet::fpgaphiprojderdisk
const FPGAWord & fpgaphiprojderdisk(int disk) const
Definition: Tracklet.h:271
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
trklet::Globals::histograms
HistBase *& histograms()
Definition: Globals.h:40
trklet::ProcessBase::globals_
Globals * globals_
Definition: ProcessBase.h:45
trklet::Tracklet::phiprojderdisk
double phiprojderdisk(int disk) const
Definition: Tracklet.h:311
trklet::Tracklet::t
double t() const
Definition: Tracklet.h:412
trklet::Settings::c
double c() const
Definition: Settings.h:171
trklet::MatchCalculator::allstubs_
AllStubsMemory * allstubs_
Definition: MatchCalculator.h:55
trklet::MatchCalculator::zmatchcut_
unsigned int zmatchcut_[N_SEED]
Definition: MatchCalculator.h:46
Stub.h
trklet::MatchCalculator::fact_
int fact_
Definition: MatchCalculator.h:39
trklet::MatchCalculator::rcut2S_
unsigned int rcut2S_[N_SEED]
Definition: MatchCalculator.h:50
trklet::Tracklet::phiprojapprox
double phiprojapprox(int layer) const
Definition: Tracklet.h:184
Tracklet.h
deltaPhi.h
trklet::MatchCalculator::mergeMatches
std::vector< std::pair< std::pair< Tracklet *, int >, const Stub * > > mergeMatches(std::vector< CandidateMatchMemory * > &candmatch)
Definition: MatchCalculator.cc:491
trklet::Stub::zapprox
double zapprox() const
Definition: Stub.cc:217
trklet::L1TStub::r2
double r2() const
Definition: L1TStub.h:59
trklet::Tracklet::layer
int layer() const
Definition: Tracklet.cc:815
trklet::Tracklet::zprojapprox
double zprojapprox(int layer) const
Definition: Tracklet.h:174
trklet::L1TStub::phi
double phi() const
Definition: L1TStub.h:62
memory
Definition: vlib.h:178
reco::reduceRange
constexpr T reduceRange(T x)
Definition: deltaPhi.h:18