CMS 3D CMS Logo

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:151
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:428
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:72
trklet::Settings::dzmax
double dzmax() const
Definition: Settings.h:106
trklet::Tracklet::rprojderdisk
double rprojderdisk(int disk) const
Definition: Tracklet.h:321
deltaPhi.h
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:849
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:310
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:222
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:325
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
edm::LogProblem
Log< level::Error, true > LogProblem
Definition: MessageLogger.h:131
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
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:49
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
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
mps_setup.memory
memory
Definition: mps_setup.py:156
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:824
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
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:817
trklet::Tracklet::zprojapprox
double zprojapprox(int layer) const
Definition: Tracklet.h:174
trklet::L1TStub::phi
double phi() const
Definition: L1TStub.h:62
reco::reduceRange
constexpr T reduceRange(T x)
Definition: deltaPhi.h:18