CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
trklet::TrackletProcessor Class Reference

#include <TrackletProcessor.h>

Inheritance diagram for trklet::TrackletProcessor:
trklet::TrackletCalculatorBase trklet::ProcessBase

Public Member Functions

void addInput (MemoryBase *memory, std::string input) override
 
void addOutput (MemoryBase *memory, std::string output) override
 
void addOutputProjection (TrackletProjectionsMemory *&outputProj, MemoryBase *memory)
 
void buildLUT ()
 
void execute ()
 
 TrackletProcessor (std::string name, Settings const &settings, Globals *globals, unsigned int iSector)
 
void writeTETable ()
 
 ~TrackletProcessor () override=default
 
- Public Member Functions inherited from trklet::TrackletCalculatorBase
void addDiskProj (Tracklet *tracklet, int disk)
 
bool addLayerProj (Tracklet *tracklet, int layer)
 
void addProjection (int layer, int iphi, TrackletProjectionsMemory *trackletprojs, Tracklet *tracklet)
 
void addProjectionDisk (int disk, int iphi, TrackletProjectionsMemory *trackletprojs, Tracklet *tracklet)
 
bool barrelSeeding (const Stub *innerFPGAStub, const L1TStub *innerStub, const Stub *outerFPGAStub, const L1TStub *outerStub)
 
bool diskSeeding (const Stub *innerFPGAStub, const L1TStub *innerStub, const Stub *outerFPGAStub, const L1TStub *outerStub)
 
void exactproj (double rproj, double rinv, double phi0, double t, double z0, double &phiproj, double &zproj, double &phider, double &zder)
 
void exactprojdisk (double zproj, double rinv, double phi0, double t, double z0, double &phiproj, double &rproj, double &phider, double &rder)
 
void exacttracklet (double r1, double z1, double phi1, double r2, double z2, double phi2, double, double &rinv, double &phi0, double &t, double &z0, double phiproj[N_LAYER - 2], double zproj[N_LAYER - 2], double phider[N_LAYER - 2], double zder[N_LAYER - 2], double phiprojdisk[N_DISK], double rprojdisk[N_DISK], double phiderdisk[N_DISK], double rderdisk[N_DISK])
 
void exacttrackletdisk (double r1, double z1, double phi1, double r2, double z2, double phi2, double, double &rinv, double &phi0, double &t, double &z0, double phiprojLayer[N_PSLAYER], double zprojLayer[N_PSLAYER], double phiderLayer[N_PSLAYER], double zderLayer[N_PSLAYER], double phiproj[N_DISK - 2], double rproj[N_DISK - 2], double phider[N_DISK - 2], double rder[N_DISK - 2])
 
void exacttrackletOverlap (double r1, double z1, double phi1, double r2, double z2, double phi2, double, double &rinv, double &phi0, double &t, double &z0, double phiprojLayer[N_PSLAYER], double zprojLayer[N_PSLAYER], double phiderLayer[N_PSLAYER], double zderLayer[N_PSLAYER], double phiproj[N_DISK - 2], double rproj[N_DISK - 2], double phider[N_DISK - 2], double rder[N_DISK - 2])
 
bool goodTrackPars (bool goodrinv, bool goodz0)
 
bool inSector (int iphi0, int irinv, double phi0approx, double rinvapprox)
 
bool overlapSeeding (const Stub *innerFPGAStub, const L1TStub *innerStub, const Stub *outerFPGAStub, const L1TStub *outerStub)
 
 TrackletCalculatorBase (std::string name, Settings const &settings, Globals *global, unsigned int iSector)
 
 ~TrackletCalculatorBase () override=default
 
- Public Member Functions inherited from trklet::ProcessBase
unsigned int getISeed (const std::string &name)
 
std::string const & getName () const
 
unsigned int initLayerDisk (unsigned int pos)
 
void initLayerDisk (unsigned int pos, int &layer, int &disk)
 
void initLayerDisk (unsigned int pos, int &layer, int &disk, int &layerdisk)
 
void initLayerDisksandISeed (unsigned int &layerdisk1, unsigned int &layerdisk2, unsigned int &iSeed)
 
unsigned int nbits (unsigned int power)
 
 ProcessBase (std::string name, Settings const &settings, Globals *global, unsigned int iSector)
 
virtual ~ProcessBase ()=default
 

Private Attributes

int iAllStub_
 
std::vector< AllStubsMemory * > innerallstubs_
 
int innerphibits_
 
int iTC_
 
int nbitsfinephi_
 
int nbitsfinephidiff_
 
unsigned int nbitsrfinebintable_
 
unsigned int nbitsrzbin_
 
unsigned int nbitszfinebintable_
 
std::vector< AllStubsMemory * > outerallstubs_
 
int outerphibits_
 
VMStubsTEMemoryoutervmstubs_
 
std::map< unsigned int, std::vector< bool > > pttableinner_
 
std::vector< bool > pttableinnernew_
 
std::map< unsigned int, std::vector< bool > > pttableouter_
 
std::vector< bool > pttableouternew_
 
std::vector< std::tuple< CircularBuffer< TEData >, unsigned int, unsigned int, unsigned int, unsigned int > > tedatabuffers_
 
std::vector< TrackletEngineUnitteunits_
 
std::vector< std::vector< bool > > useregion_
 
VMRouterTable vmrtable_
 

Additional Inherited Members

- Protected Attributes inherited from trklet::TrackletCalculatorBase
unsigned int iSeed_
 
unsigned int layerdisk1_
 
unsigned int layerdisk2_
 
int TCIndex_
 
TrackletParametersMemorytrackletpars_
 
std::vector< std::vector< TrackletProjectionsMemory * > > trackletprojdisks_
 
std::vector< std::vector< TrackletProjectionsMemory * > > trackletprojlayers_
 
- Protected Attributes inherited from trklet::ProcessBase
Globalsglobals_
 
unsigned int iSector_
 
std::string name_
 
double phimax_
 
double phimin_
 
Settings const & settings_
 

Detailed Description

Definition at line 23 of file TrackletProcessor.h.

Constructor & Destructor Documentation

◆ TrackletProcessor()

TrackletProcessor::TrackletProcessor ( std::string  name,
Settings const &  settings,
Globals globals,
unsigned int  iSector 
)

Definition at line 19 of file TrackletProcessor.cc.

20  : TrackletCalculatorBase(name, settings, globals, iSector), vmrtable_(settings) {
21  iAllStub_ = -1;
22 
23  for (unsigned int ilayer = 0; ilayer < N_LAYER; ilayer++) {
24  vector<TrackletProjectionsMemory*> tmp(settings_.nallstubs(ilayer), nullptr);
25  trackletprojlayers_.push_back(tmp);
26  }
27 
28  for (unsigned int idisk = 0; idisk < N_DISK; idisk++) {
29  vector<TrackletProjectionsMemory*> tmp(settings_.nallstubs(idisk + N_LAYER), nullptr);
30  trackletprojdisks_.push_back(tmp);
31  }
32 
33  outervmstubs_ = nullptr;
34 
36 
39 
41 
43  if (iSeed_ == 4 || iSeed_ == 5)
44  nbitsrzbin_ = 2;
45 
48 
49  // set TC index
50  iTC_ = name_[7] - 'A';
51  assert(iTC_ >= 0 && iTC_ < 14);
52 
53  TCIndex_ = (iSeed_ << 4) + iTC_;
54  assert(TCIndex_ >= 0 && TCIndex_ <= (int)settings_.ntrackletmax());
55 }

References cms::cuda::assert(), trklet::ProcessBase::getName(), iAllStub_, trklet::VMRouterTable::init(), trklet::ProcessBase::initLayerDisksandISeed(), innerphibits_, trklet::TrackletCalculatorBase::iSeed_, iTC_, trklet::TrackletCalculatorBase::layerdisk1_, trklet::TrackletCalculatorBase::layerdisk2_, trklet::N_DISK, trklet::N_LAYER, trklet::Settings::nallstubs(), trklet::ProcessBase::name_, nbitsrfinebintable_, nbitsrzbin_, nbitszfinebintable_, trklet::Settings::nfinephi(), trklet::NFINERZBITS, trklet::Settings::ntrackletmax(), outerphibits_, outervmstubs_, trklet::ProcessBase::settings_, trklet::TrackletCalculatorBase::TCIndex_, createJobs::tmp, trklet::TrackletCalculatorBase::trackletprojdisks_, trklet::TrackletCalculatorBase::trackletprojlayers_, trklet::Settings::vmrlutrbits(), trklet::Settings::vmrlutzbits(), and vmrtable_.

◆ ~TrackletProcessor()

trklet::TrackletProcessor::~TrackletProcessor ( )
overridedefault

Member Function Documentation

◆ addInput()

void TrackletProcessor::addInput ( MemoryBase memory,
std::string  input 
)
overridevirtual

Implements trklet::ProcessBase.

Definition at line 104 of file TrackletProcessor.cc.

104  {
105  if (settings_.writetrace()) {
106  edm::LogVerbatim("Tracklet") << "In " << name_ << " adding input from " << memory->getName() << " to input "
107  << input;
108  }
109 
110  if (input == "outervmstubin") {
111  auto* tmp = dynamic_cast<VMStubsTEMemory*>(memory);
112  assert(tmp != nullptr);
113  outervmstubs_ = tmp;
114  iAllStub_ = tmp->getName()[11] - 'A';
115  if (iSeed_ == 1)
116  iAllStub_ = tmp->getName()[11] - 'I';
117  if (iSeed_ == 6 || iSeed_ == 7) {
118  if (tmp->getName()[11] == 'X')
119  iAllStub_ = 0;
120  if (tmp->getName()[11] == 'Y')
121  iAllStub_ = 1;
122  if (tmp->getName()[11] == 'Z')
123  iAllStub_ = 2;
124  if (tmp->getName()[11] == 'W')
125  iAllStub_ = 3;
126  }
127  buildLUT(); //need iAllStub_ set before building the table //FIXME should be in initiall
128 
131  layerdisk2_,
132  iSeed_,
134  iAllStub_,
137  outervmstubs_);
138  teunits_.resize(6, teunit);
139 
140  return;
141  }
142 
143  if (input == "innerallstubin") {
144  auto* tmp = dynamic_cast<AllStubsMemory*>(memory);
145  assert(tmp != nullptr);
146  if (innerallstubs_.size() == 2) { //FIXME this should be done with better logic with reading the input stubs
147  innerallstubs_.insert(innerallstubs_.begin(), tmp);
148  } else {
149  innerallstubs_.push_back(tmp);
150  }
151 
152  //FIXME should be done once after all inputs are added
153  tedatabuffers_.clear();
154  CircularBuffer<TEData> tedatabuffertmp(5);
155  tedatabuffertmp.reset();
156 
157  tedatabuffers_.emplace_back(tedatabuffertmp, 0, 0, 0, (innerallstubs_.size() + 1) / 2);
158  tedatabuffers_.emplace_back(
159  tedatabuffertmp, 0, (innerallstubs_.size() + 1) / 2, (innerallstubs_.size() + 1) / 2, innerallstubs_.size());
160 
161  return;
162  }
163  if (input == "outerallstubin") {
164  auto* tmp = dynamic_cast<AllStubsMemory*>(memory);
165  assert(tmp != nullptr);
166  outerallstubs_.push_back(tmp);
167  return;
168  }
169  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " Could not find input : " << input;
170 }

References cms::cuda::assert(), buildLUT(), Exception, iAllStub_, innerallstubs_, input, trklet::TrackletCalculatorBase::iSeed_, trklet::TrackletCalculatorBase::layerdisk2_, trklet::ProcessBase::name_, nbitsfinephi_, nbitsfinephidiff_, outerallstubs_, outervmstubs_, pttableinnernew_, pttableouternew_, trklet::CircularBuffer< T >::reset(), trklet::ProcessBase::settings_, tedatabuffers_, teunits_, createJobs::tmp, and trklet::Settings::writetrace().

◆ addOutput()

void TrackletProcessor::addOutput ( MemoryBase memory,
std::string  output 
)
overridevirtual

Implements trklet::ProcessBase.

Definition at line 62 of file TrackletProcessor.cc.

62  {
63  if (settings_.writetrace()) {
64  edm::LogVerbatim("Tracklet") << "In " << name_ << " adding output to " << memory->getName() << " to output "
65  << output;
66  }
67  if (output == "trackpar") {
68  auto* tmp = dynamic_cast<TrackletParametersMemory*>(memory);
69  assert(tmp != nullptr);
71  return;
72  }
73 
74  if (output.substr(0, 7) == "projout") {
75  //output is on the form 'projoutL2PHIC' or 'projoutD3PHIB'
76  auto* tmp = dynamic_cast<TrackletProjectionsMemory*>(memory);
77  assert(tmp != nullptr);
78 
79  unsigned int layerdisk = output[8] - '1'; //layer or disk counting from 0
80  unsigned int phiregion = output[12] - 'A'; //phiregion counting from 0
81 
82  if (output[7] == 'L') {
83  assert(layerdisk < N_LAYER);
84  assert(phiregion < trackletprojlayers_[layerdisk].size());
85  //check that phiregion not already initialized
86  assert(trackletprojlayers_[layerdisk][phiregion] == nullptr);
87  trackletprojlayers_[layerdisk][phiregion] = tmp;
88  return;
89  }
90 
91  if (output[7] == 'D') {
92  assert(layerdisk < N_DISK);
93  assert(phiregion < trackletprojdisks_[layerdisk].size());
94  //check that phiregion not already initialized
95  assert(trackletprojdisks_[layerdisk][phiregion] == nullptr);
96  trackletprojdisks_[layerdisk][phiregion] = tmp;
97  return;
98  }
99  }
100 
101  throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " Could not find output : " << output;
102 }

References cms::cuda::assert(), Exception, trklet::N_DISK, trklet::N_LAYER, trklet::ProcessBase::name_, convertSQLitetoXML_cfg::output, trklet::ProcessBase::settings_, findQualityFiles::size, createJobs::tmp, trklet::TrackletCalculatorBase::trackletpars_, trklet::TrackletCalculatorBase::trackletprojdisks_, trklet::TrackletCalculatorBase::trackletprojlayers_, and trklet::Settings::writetrace().

◆ addOutputProjection()

void TrackletProcessor::addOutputProjection ( TrackletProjectionsMemory *&  outputProj,
MemoryBase memory 
)

Definition at line 57 of file TrackletProcessor.cc.

57  {
58  outputProj = dynamic_cast<TrackletProjectionsMemory*>(memory);
59  assert(outputProj != nullptr);
60 }

References cms::cuda::assert().

◆ buildLUT()

void TrackletProcessor::buildLUT ( )

Definition at line 424 of file TrackletProcessor.cc.

424  {
425  //number of fine phi bins in sector
426  int nfinephibins =
428  double dfinephi = settings_.dphisectorHG() / nfinephibins;
429 
430  double rmin = -1.0;
431  double rmax = -1.0;
432 
433  if (iSeed_ < 4) {
434  rmin = settings_.rmean(layerdisk1_);
435  rmax = settings_.rmean(layerdisk2_);
436  } else {
437  if (iSeed_ > 5) {
438  if (iSeed_ == 6) {
440  } else if (iSeed_ == 7) {
441  rmax = settings_.rmaxdiskvm();
442  }
443  rmin = settings_.rmean(layerdisk1_);
444  } else {
445  rmax = settings_.rmaxdiskvm();
446  rmin = rmax * settings_.zmean(layerdisk2_ - 6 - 1) / settings_.zmean(layerdisk2_ - 6);
447  }
448  }
449 
450  double dphimax = asin(0.5 * settings_.maxrinv() * rmax) - asin(0.5 * settings_.maxrinv() * rmin);
451 
452  int nbins = 2.0 * (dphimax / dfinephi + 1.0);
453 
454  nbitsfinephidiff_ = log(nbins) / log(2.0) + 1;
455 
457 
458  int outerrbits = 3;
459  if (iSeed_ < 4) {
460  outerrbits = 0;
461  }
462 
463  int outerrbins = (1 << outerrbits);
464 
465  double dphi[2];
466  double router[2];
467 
468  unsigned int nbendbitsinner = 3;
469  unsigned int nbendbitsouter = 3;
470  if (iSeed_ == 2) {
471  nbendbitsouter = 4;
472  } else if (iSeed_ == 3) {
473  nbendbitsinner = 4;
474  nbendbitsouter = 4;
475  }
476 
477  int nbinsfinephidiff = (1 << nbitsfinephidiff_);
478 
479  for (int iphibin = 0; iphibin < nbinsfinephidiff; iphibin++) {
480  int iphidiff = iphibin;
481  if (iphibin >= nbinsfinephidiff / 2) {
482  iphidiff = iphibin - nbinsfinephidiff;
483  }
484  //min and max dphi
485  dphi[0] = (iphidiff - 1.5) * dfinephi;
486  dphi[1] = (iphidiff + 1.5) * dfinephi;
487  for (int irouterbin = 0; irouterbin < outerrbins; irouterbin++) {
488  if (iSeed_ >= 4) {
489  router[0] =
490  settings_.rmindiskvm() + irouterbin * (settings_.rmaxdiskvm() - settings_.rmindiskvm()) / outerrbins;
491  router[1] =
492  settings_.rmindiskvm() + (irouterbin + 1) * (settings_.rmaxdiskvm() - settings_.rmindiskvm()) / outerrbins;
493  } else {
494  router[0] = settings_.rmean(layerdisk2_);
495  router[1] = settings_.rmean(layerdisk2_);
496  }
497 
498  double bendinnermin = 20.0;
499  double bendinnermax = -20.0;
500  double bendoutermin = 20.0;
501  double bendoutermax = -20.0;
502  double rinvmin = 1.0;
503  for (int i2 = 0; i2 < 2; i2++) {
504  for (int i3 = 0; i3 < 2; i3++) {
505  double rinner = 0.0;
506  if (iSeed_ == 4 || iSeed_ == 5) {
508  } else {
509  rinner = settings_.rmean(layerdisk1_);
510  }
511  double rinv1 = rinv(0.0, dphi[i2], rinner, router[i3]);
512  double pitchinner = (rinner < settings_.rcrit()) ? settings_.stripPitch(true) : settings_.stripPitch(false);
513  double pitchouter =
514  (router[i3] < settings_.rcrit()) ? settings_.stripPitch(true) : settings_.stripPitch(false);
515  double abendinner = -bend(rinner, rinv1, pitchinner);
516  double abendouter = -bend(router[i3], rinv1, pitchouter);
517  if (abendinner < bendinnermin)
518  bendinnermin = abendinner;
519  if (abendinner > bendinnermax)
520  bendinnermax = abendinner;
521  if (abendouter < bendoutermin)
522  bendoutermin = abendouter;
523  if (abendouter > bendoutermax)
524  bendoutermax = abendouter;
525  if (std::abs(rinv1) < rinvmin) {
526  rinvmin = std::abs(rinv1);
527  }
528  }
529  }
530 
531  bool passptcut = rinvmin < settings_.rinvcutte();
532 
533  for (int ibend = 0; ibend < (1 << nbendbitsinner); ibend++) {
534  double bend = benddecode(ibend, nbendbitsinner == 3);
535 
536  bool passinner = bend - bendinnermin > -settings_.bendcutte(0, iSeed_) &&
537  bend - bendinnermax < settings_.bendcutte(0, iSeed_);
538  pttableinnernew_.push_back(passinner && passptcut);
539  }
540 
541  for (int ibend = 0; ibend < (1 << nbendbitsouter); ibend++) {
542  double bend = benddecode(ibend, nbendbitsouter == 3);
543 
544  bool passouter = bend - bendoutermin > -settings_.bendcutte(1, iSeed_) &&
545  bend - bendoutermax < settings_.bendcutte(1, iSeed_);
546  pttableouternew_.push_back(passouter && passptcut);
547  }
548  }
549  }
550 
551  int nirbits = 0;
552  if (iSeed_ >= 4)
553  nirbits = 3;
554 
555  int nregmax = 0;
556 
557  for (int innerfinephi = 0; innerfinephi < (1 << nbitsfinephi_); innerfinephi++) {
558  for (int innerbend = 0; innerbend < (1 << nbendbitsinner); innerbend++) {
559  for (int ir = 0; ir < (1 << nirbits); ir++) {
560  int nreg = 0;
561  vector<bool> usereg;
562  for (unsigned int ireg = 0; ireg < settings_.nvmte(1, iSeed_); ireg++) {
563  bool match = false;
564  for (int ifinephiouter = 0; ifinephiouter < (1 << settings_.nfinephi(1, iSeed_)); ifinephiouter++) {
565  int outerfinephi = iAllStub_ * (1 << (nbitsfinephi_ - settings_.nbitsallstubs(layerdisk2_))) +
566  ireg * (1 << settings_.nfinephi(1, iSeed_)) + ifinephiouter;
567  int idphi = outerfinephi - innerfinephi;
568  bool inrange = (idphi < (1 << (nbitsfinephidiff_ - 1))) && (idphi >= -(1 << (nbitsfinephidiff_ - 1)));
569  if (idphi < 0)
570  idphi = idphi + (1 << nbitsfinephidiff_);
571  int idphi1 = idphi;
572  if (iSeed_ >= 4)
573  idphi1 = (idphi << 3) + ir;
574  int ptinnerindexnew = (idphi1 << nbendbitsinner) + innerbend;
575  match = match || (inrange && pttableinnernew_[ptinnerindexnew]);
576  }
577  if (match && ir < 3)
578  nreg++;
579  usereg.push_back(match);
580  }
581 
582  useregion_.push_back(usereg);
583  if (nreg > nregmax)
584  nregmax = nreg;
585  }
586  }
587  }
588 }

References funct::abs(), trklet::bend(), trklet::Settings::bendcutte(), trklet::benddecode(), trklet::Settings::dphisectorHG(), testProducerWithPsetDescEmpty_cfi::i2, testProducerWithPsetDescEmpty_cfi::i3, iAllStub_, trklet::TrackletCalculatorBase::iSeed_, trklet::TrackletCalculatorBase::layerdisk1_, trklet::TrackletCalculatorBase::layerdisk2_, dqm-mbProfile::log, match(), trklet::Settings::maxrinv(), trklet::N_LAYER, trklet::Settings::nallstubs(), LaserClient_cfi::nbins, trklet::Settings::nbitsallstubs(), nbitsfinephi_, nbitsfinephidiff_, trklet::Settings::nbitsvmte(), trklet::Settings::nfinephi(), trklet::Settings::nvmte(), pttableinnernew_, pttableouternew_, trklet::Settings::rcrit(), trklet::rinv(), trklet::Settings::rinvcutte(), trklet::Settings::rmaxdiskl1overlapvm(), trklet::Settings::rmaxdiskvm(), trklet::Settings::rmean(), trklet::Settings::rmindiskvm(), trklet::ProcessBase::settings_, trklet::Settings::stripPitch(), useregion_, and trklet::Settings::zmean().

Referenced by addInput().

◆ execute()

void TrackletProcessor::execute ( void  )

Definition at line 172 of file TrackletProcessor.cc.

172  {
173  if (!settings_.useSeed(iSeed_))
174  return;
175 
176  //Consistency checks
177  assert(iAllStub_ >= 0);
179  assert(outervmstubs_ != nullptr);
180 
181  //used to collect performance data
182  unsigned int countall = 0;
183  unsigned int countsel = 0;
184 
185  unsigned int countteall = 0;
186  unsigned int stubpairs = 0;
187 
188  unsigned int ntedata = 0;
189 
190  unsigned int ninnerstubs = 0;
191 
192  //Actual implemenation starts here
193 
194  //Reset the tebuffers
195  for (auto& tebuffer : tedatabuffers_) {
196  std::get<0>(tebuffer).reset();
197  std::get<1>(tebuffer) = 0;
198  std::get<2>(tebuffer) = std::get<3>(tebuffer);
199  }
200 
201  //Reset the teunits
202  for (auto& teunit : teunits_) {
203  teunit.reset();
204  }
205 
206  for (unsigned int istep = 0; istep < settings_.maxStep("TP"); istep++) {
207  for (auto& tebuffer : tedatabuffers_) {
208  CircularBuffer<TEData>& tedatabuffer = std::get<0>(tebuffer);
209  unsigned int& istub = std::get<1>(tebuffer);
210  unsigned int& imem = std::get<2>(tebuffer);
211  unsigned int imemend = std::get<4>(tebuffer);
212 
213  if ((!tedatabuffer.full()) && imem < imemend && istub < innerallstubs_[imem]->nStubs()) {
214  ninnerstubs++;
215 
216  const Stub* stub = innerallstubs_[imem]->getStub(istub);
217 
218  bool negdisk = (stub->disk().value() < 0); //FIXME stub needs to contain bit for +/- z disk
219 
220  FPGAWord phicorr = stub->phicorr();
221  int innerfinephi = phicorr.bits(phicorr.nbits() - nbitsfinephi_, nbitsfinephi_);
222  FPGAWord innerbend = stub->bend();
223 
224  //Take the top nbitszfinebintable_ bits of the z coordinate
225  int indexz =
226  (((1 << (stub->z().nbits() - 1)) + stub->z().value()) >> (stub->z().nbits() - nbitszfinebintable_));
227  int indexr = -1;
228  if (layerdisk1_ > (N_LAYER - 1)) {
229  if (negdisk) {
230  indexz = (1 << nbitszfinebintable_) - indexz;
231  }
232  indexr = stub->r().value();
233  if (stub->isPSmodule()) {
234  indexr = stub->r().value() >> (stub->r().nbits() - nbitsrfinebintable_);
235  }
236  } else {
237  //Take the top nbitsfinebintable_ bits of the z coordinate
238  indexr = (((1 << (stub->r().nbits() - 1)) + stub->r().value()) >> (stub->r().nbits() - nbitsrfinebintable_));
239  }
240 
241  int lutval = -1;
242  if (iSeed_ < 6) { //FIXME should only be one table...
243  lutval = vmrtable_.lookupinner(indexz, indexr);
244  } else {
245  lutval = vmrtable_.lookupinneroverlap(indexz, indexr);
246  }
247 
248  if (lutval != -1) {
249  unsigned int lutwidth = settings_.lutwidthtab(0, iSeed_);
250  FPGAWord lookupbits(lutval, lutwidth, true, __LINE__, __FILE__);
251 
252  int rzfinebinfirst = lookupbits.bits(0, 3); //finephi
253  int next = lookupbits.bits(3, 1); //next r/z bin
254  int start = lookupbits.bits(4, nbitsrzbin_);
255  int rzdiffmax = lookupbits.bits(lookupbits.nbits() - 3, 3);
256 
257  if ((iSeed_ == 4 || iSeed_ == 5) && negdisk) { //TODO - need to store negative disk
258  start += 4;
259  }
260  int last = start + next;
261 
262  int nbins = 8;
263 
264  unsigned int useregindex = (innerfinephi << innerbend.nbits()) + innerbend.value();
265  if (iSeed_ >= 4) {
266  //FIXME If the lookupbits were rationally organized this would be much simpler
267  int ir = ((start & 3) << 1) + (rzfinebinfirst >> 2);
268  useregindex = (useregindex << 3) + ir;
269  }
270 
271  assert(useregindex < useregion_.size());
272  vector<bool> usereg = useregion_[useregindex];
273 
274  TEData tedata;
275  tedata.stub_ = stub;
276  tedata.rzbinfirst_ = rzfinebinfirst;
277  tedata.start_ = start;
278  tedata.innerfinephi_ = innerfinephi;
279  tedata.rzdiffmax_ = rzdiffmax;
280  tedata.innerbend_ = innerbend;
281 
282  for (unsigned int ireg = 0; ireg < settings_.nvmte(1, iSeed_); ireg++) {
283  assert(ireg < usereg.size());
284  if (!usereg[ireg])
285  continue;
286 
287  for (int ibin = start; ibin <= last; ibin++) {
288  if (settings_.debugTracklet()) {
289  edm::LogVerbatim("Tracklet") << getName() << " looking for matching stub in bin " << ibin << " with "
290  << outervmstubs_->nVMStubsBinned(ireg * nbins + ibin) << " stubs";
291  }
292  assert(ireg * nbins + ibin < outervmstubs_->nBin());
293  int nstubs = outervmstubs_->nVMStubsBinned(ireg * nbins + ibin);
294  if (nstubs > 0) {
295  tedata.regions_.emplace_back(tuple<int, int, int>(ibin - start, ireg, nstubs));
296  countteall += nstubs;
297  }
298  }
299  }
300 
301  if (!tedata.regions_.empty()) {
302  ntedata++;
303  //cout << getName() << " adding TE data" << endl;
304  tedatabuffer.store(tedata);
305  }
306  }
307  istub++;
308  if (istub >= innerallstubs_[imem]->nStubs()) {
309  istub = 0;
310  imem++;
311  }
312  }
313  }
314 
315  bool tedatabuffersdone = true;
316  for (auto& tebuffer : tedatabuffers_) {
317  CircularBuffer<TEData>& tedatabuffer = std::get<0>(tebuffer);
318  tedatabuffersdone &= tedatabuffer.empty(); //buffer empty
319  tedatabuffersdone &= (std::get<2>(tebuffer) == std::get<4>(tebuffer)); //buffer processed all stubs
320  if (!tedatabuffer.empty()) {
321  for (auto& teunit : teunits_) {
322  if (teunit.empty() && teunit.idle()) {
323  teunit.init(tedatabuffer.read());
324  break;
325  }
326  }
327  }
328  }
329 
330  bool teunitsdone = true;
331  TrackletEngineUnit* teunitptr = nullptr;
332  for (auto& teunit : teunits_) {
333  if (!teunit.idle()) {
334  teunit.step();
335  teunitsdone = false;
336  }
337  if (!teunit.empty()) {
338  teunitptr = &teunit;
339  teunitsdone = false;
340  }
341  }
342 
343  if (teunitptr != nullptr) {
344  auto stubpair = teunitptr->read();
345  stubpairs++;
346 
348  edm::LogVerbatim("Tracklet") << "Will break on too many tracklets in " << getName();
349  break;
350  }
351  countall++;
352  const Stub* innerFPGAStub = stubpair.first;
353  const L1TStub* innerStub = innerFPGAStub->l1tstub();
354 
355  const Stub* outerFPGAStub = stubpair.second;
356  const L1TStub* outerStub = outerFPGAStub->l1tstub();
357 
358  if (settings_.debugTracklet()) {
359  edm::LogVerbatim("Tracklet") << "TrackletProcessor execute " << getName() << "[" << iSector_ << "]";
360  }
361 
362  bool accept = false;
363 
364  if (iSeed_ < 4) {
365  accept = barrelSeeding(innerFPGAStub, innerStub, outerFPGAStub, outerStub);
366  } else if (iSeed_ < 6) {
367  accept = diskSeeding(innerFPGAStub, innerStub, outerFPGAStub, outerStub);
368  } else {
369  accept = overlapSeeding(outerFPGAStub, outerStub, innerFPGAStub, innerStub);
370  }
371 
372  if (accept)
373  countsel++;
374 
376  edm::LogVerbatim("Tracklet") << "Will break on number of tracklets in " << getName();
377  break;
378  }
379 
380  if (settings_.debugTracklet()) {
381  edm::LogVerbatim("Tracklet") << "TrackletProcessor execute done";
382  }
383  }
384 
385  if (settings_.writeMonitorData("TP")) {
386  globals_->ofstream("trackletprocessor.txt") << getName() << " " << ninnerstubs //# inner stubs
387  << " " << outervmstubs_->nVMStubs() //# outer stubs
388  << " " << countteall //# pairs tried in TE
389  << " " << stubpairs //# stubs pairs
390  << " " << countsel //# tracklets found
391  << endl;
392  }
393 
394  if (teunitsdone && tedatabuffersdone) {
395  break;
396  }
397  }
398 }

References accept(), cms::cuda::assert(), trklet::TrackletCalculatorBase::barrelSeeding(), trklet::Stub::bend(), trklet::FPGAWord::bits(), trklet::Settings::debugTracklet(), trklet::Stub::disk(), trklet::TrackletCalculatorBase::diskSeeding(), trklet::CircularBuffer< T >::empty(), trklet::CircularBuffer< T >::full(), trklet::ProcessBase::getName(), trklet::ProcessBase::globals_, iAllStub_, innerallstubs_, trklet::TEData::innerbend_, trklet::TEData::innerfinephi_, trklet::ProcessBase::iSector_, trklet::TrackletCalculatorBase::iSeed_, trklet::Stub::isPSmodule(), trklet::Stub::l1tstub(), dqmdumpme::last, trklet::TrackletCalculatorBase::layerdisk1_, trklet::TrackletCalculatorBase::layerdisk2_, trklet::VMRouterTable::lookupinner(), trklet::VMRouterTable::lookupinneroverlap(), trklet::Settings::lutwidthtab(), trklet::Settings::maxStep(), trklet::N_LAYER, trklet::Settings::nallstubs(), PFElectronDQMAnalyzer_cfi::nBin, LaserClient_cfi::nbins, trklet::FPGAWord::nbits(), nbitsfinephi_, nbitsrfinebintable_, nbitsrzbin_, nbitszfinebintable_, GetRecoTauVFromDQM_MC_cff::next, trklet::Settings::ntrackletmax(), trklet::TrackletParametersMemory::nTracklets(), trklet::VMStubsTEMemory::nVMStubs(), trklet::VMStubsTEMemory::nVMStubsBinned(), trklet::Settings::nvmte(), trklet::Globals::ofstream(), outervmstubs_, trklet::TrackletCalculatorBase::overlapSeeding(), trklet::Stub::phicorr(), trklet::Stub::r(), trklet::CircularBuffer< T >::read(), trklet::TrackletEngineUnit::read(), trklet::TEData::regions_, trklet::TEData::rzbinfirst_, trklet::TEData::rzdiffmax_, trklet::ProcessBase::settings_, command_line::start, trklet::TEData::start_, trklet::TrackletEngineUnit::step(), trklet::CircularBuffer< T >::store(), trklet::TEData::stub_, tedatabuffers_, teunits_, trklet::TrackletCalculatorBase::trackletpars_, useregion_, trklet::Settings::useSeed(), trklet::FPGAWord::value(), vmrtable_, trklet::Settings::writeMonitorData(), and trklet::Stub::z().

◆ writeTETable()

void TrackletProcessor::writeTETable ( )

Definition at line 400 of file TrackletProcessor.cc.

400  {
401  ofstream outstubptinnercut;
402  outstubptinnercut.open(getName() + "_stubptinnercut.tab");
403  outstubptinnercut << "{" << endl;
404  // the below is outcommented as the writing of these tables are currently not implemented, to be adressed
405  //for(unsigned int i=0;i<pttableinner_.size();i++){
406  // if (i!=0) outstubptinnercut<<","<<endl;
407  // outstubptinnercut << pttableinner_[i];
408  //}
409  outstubptinnercut << endl << "};" << endl;
410  outstubptinnercut.close();
411 
412  ofstream outstubptoutercut;
413  outstubptoutercut.open(getName() + "_stubptoutercut.tab");
414  outstubptoutercut << "{" << endl;
415  // the below is outcommented as the writing of these tables are currently not implemented, to be adressed
416  //for(unsigned int i=0;i<pttableouter_.size();i++){
417  // if (i!=0) outstubptoutercut<<","<<endl;
418  // outstubptoutercut << pttableouter_[i];
419  //}
420  outstubptoutercut << endl << "};" << endl;
421  outstubptoutercut.close();
422 }

References trklet::ProcessBase::getName().

Member Data Documentation

◆ iAllStub_

int trklet::TrackletProcessor::iAllStub_
private

Definition at line 43 of file TrackletProcessor.h.

Referenced by addInput(), buildLUT(), execute(), and TrackletProcessor().

◆ innerallstubs_

std::vector<AllStubsMemory*> trklet::TrackletProcessor::innerallstubs_
private

Definition at line 56 of file TrackletProcessor.h.

Referenced by addInput(), and execute().

◆ innerphibits_

int trklet::TrackletProcessor::innerphibits_
private

Definition at line 70 of file TrackletProcessor.h.

Referenced by TrackletProcessor().

◆ iTC_

int trklet::TrackletProcessor::iTC_
private

Definition at line 42 of file TrackletProcessor.h.

Referenced by TrackletProcessor().

◆ nbitsfinephi_

int trklet::TrackletProcessor::nbitsfinephi_
private

Definition at line 67 of file TrackletProcessor.h.

Referenced by addInput(), buildLUT(), and execute().

◆ nbitsfinephidiff_

int trklet::TrackletProcessor::nbitsfinephidiff_
private

Definition at line 68 of file TrackletProcessor.h.

Referenced by addInput(), and buildLUT().

◆ nbitsrfinebintable_

unsigned int trklet::TrackletProcessor::nbitsrfinebintable_
private

Definition at line 74 of file TrackletProcessor.h.

Referenced by execute(), and TrackletProcessor().

◆ nbitsrzbin_

unsigned int trklet::TrackletProcessor::nbitsrzbin_
private

Definition at line 76 of file TrackletProcessor.h.

Referenced by execute(), and TrackletProcessor().

◆ nbitszfinebintable_

unsigned int trklet::TrackletProcessor::nbitszfinebintable_
private

Definition at line 73 of file TrackletProcessor.h.

Referenced by execute(), and TrackletProcessor().

◆ outerallstubs_

std::vector<AllStubsMemory*> trklet::TrackletProcessor::outerallstubs_
private

Definition at line 57 of file TrackletProcessor.h.

Referenced by addInput().

◆ outerphibits_

int trklet::TrackletProcessor::outerphibits_
private

Definition at line 71 of file TrackletProcessor.h.

Referenced by TrackletProcessor().

◆ outervmstubs_

VMStubsTEMemory* trklet::TrackletProcessor::outervmstubs_
private

Definition at line 45 of file TrackletProcessor.h.

Referenced by addInput(), execute(), and TrackletProcessor().

◆ pttableinner_

std::map<unsigned int, std::vector<bool> > trklet::TrackletProcessor::pttableinner_
private

Definition at line 59 of file TrackletProcessor.h.

◆ pttableinnernew_

std::vector<bool> trklet::TrackletProcessor::pttableinnernew_
private

Definition at line 62 of file TrackletProcessor.h.

Referenced by addInput(), and buildLUT().

◆ pttableouter_

std::map<unsigned int, std::vector<bool> > trklet::TrackletProcessor::pttableouter_
private

Definition at line 60 of file TrackletProcessor.h.

◆ pttableouternew_

std::vector<bool> trklet::TrackletProcessor::pttableouternew_
private

Definition at line 63 of file TrackletProcessor.h.

Referenced by addInput(), and buildLUT().

◆ tedatabuffers_

std::vector<std::tuple<CircularBuffer<TEData>, unsigned int, unsigned int, unsigned int, unsigned int> > trklet::TrackletProcessor::tedatabuffers_
private

Definition at line 52 of file TrackletProcessor.h.

Referenced by addInput(), and execute().

◆ teunits_

std::vector<TrackletEngineUnit> trklet::TrackletProcessor::teunits_
private

Definition at line 54 of file TrackletProcessor.h.

Referenced by addInput(), and execute().

◆ useregion_

std::vector<std::vector<bool> > trklet::TrackletProcessor::useregion_
private

Definition at line 65 of file TrackletProcessor.h.

Referenced by buildLUT(), and execute().

◆ vmrtable_

VMRouterTable trklet::TrackletProcessor::vmrtable_
private

Definition at line 78 of file TrackletProcessor.h.

Referenced by execute(), and TrackletProcessor().

trklet::TEData::rzbinfirst_
int rzbinfirst_
Definition: TrackletEngineUnit.h:20
trklet::TEData::start_
int start_
Definition: TrackletEngineUnit.h:19
trklet::TrackletCalculatorBase::iSeed_
unsigned int iSeed_
Definition: TrackletCalculatorBase.h:128
testProducerWithPsetDescEmpty_cfi.i2
i2
Definition: testProducerWithPsetDescEmpty_cfi.py:46
testProducerWithPsetDescEmpty_cfi.i3
i3
Definition: testProducerWithPsetDescEmpty_cfi.py:47
trklet::Settings::rmindiskvm
double rmindiskvm() const
Definition: Settings.h:281
trklet::Settings::ntrackletmax
unsigned int ntrackletmax() const
Definition: Settings.h:297
trklet::Settings::writetrace
bool writetrace() const
Definition: Settings.h:162
start
Definition: start.py:1
input
static const std::string input
Definition: EdmProvDump.cc:48
trklet::VMRouterTable::init
void init(unsigned int layerdisk, std::string const &name)
Definition: VMRouterTable.cc:17
trklet::TrackletProcessor::useregion_
std::vector< std::vector< bool > > useregion_
Definition: TrackletProcessor.h:65
trklet::TrackletCalculatorBase::trackletpars_
TrackletParametersMemory * trackletpars_
Definition: TrackletCalculatorBase.h:134
trklet::TrackletProcessor::nbitszfinebintable_
unsigned int nbitszfinebintable_
Definition: TrackletProcessor.h:73
trklet::Settings::maxrinv
double maxrinv() const
Definition: Settings.h:273
trklet::TEData::rzdiffmax_
int rzdiffmax_
Definition: TrackletEngineUnit.h:21
trklet::CircularBuffer::full
bool full() const
Definition: CircularBuffer.h:26
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
trklet::Settings::rmaxdiskl1overlapvm
double rmaxdiskl1overlapvm() const
Definition: Settings.h:284
trklet::CircularBuffer::read
const T & read()
Definition: CircularBuffer.h:34
trklet::Stub::bend
const FPGAWord & bend() const
Definition: Stub.h:47
memory
Definition: HGCRecHitSoA.h:20
trklet::Settings::vmrlutrbits
unsigned int vmrlutrbits(unsigned int layerdisk) const
Definition: Settings.h:158
trklet::L1TStub
Definition: L1TStub.h:12
trklet::Settings::nbitsallstubs
unsigned int nbitsallstubs(unsigned int layerdisk) const
Definition: Settings.h:93
cms::cuda::assert
assert(be >=bs)
trklet::TrackletProcessor::vmrtable_
VMRouterTable vmrtable_
Definition: TrackletProcessor.h:78
trklet::TrackletProcessor::pttableinnernew_
std::vector< bool > pttableinnernew_
Definition: TrackletProcessor.h:62
trklet::Settings::rmean
double rmean(unsigned int iLayer) const
Definition: Settings.h:143
trklet::TrackletCalculatorBase::barrelSeeding
bool barrelSeeding(const Stub *innerFPGAStub, const L1TStub *innerStub, const Stub *outerFPGAStub, const L1TStub *outerStub)
Definition: TrackletCalculatorBase.cc:331
trklet::Settings::lutwidthtab
double lutwidthtab(unsigned int inner, unsigned int iSeed) const
Definition: Settings.h:129
trklet::N_DISK
constexpr int N_DISK
Definition: Settings.h:20
trklet::TEData::innerbend_
FPGAWord innerbend_
Definition: TrackletEngineUnit.h:23
trklet::TrackletProcessor::iAllStub_
int iAllStub_
Definition: TrackletProcessor.h:43
trklet::ProcessBase::settings_
Settings const & settings_
Definition: ProcessBase.h:44
trklet::TrackletProcessor::teunits_
std::vector< TrackletEngineUnit > teunits_
Definition: TrackletProcessor.h:54
trklet::VMRouterTable::lookupinneroverlap
int lookupinneroverlap(int zbin, int rbin)
Definition: VMRouterTable.cc:316
trklet::FPGAWord::nbits
int nbits() const
Definition: FPGAWord.h:25
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
trklet::TrackletCalculatorBase::trackletprojlayers_
std::vector< std::vector< TrackletProjectionsMemory * > > trackletprojlayers_
Definition: TrackletCalculatorBase.h:137
trklet::Stub::r
const FPGAWord & r() const
Definition: Stub.h:49
PFElectronDQMAnalyzer_cfi.nBin
nBin
Definition: PFElectronDQMAnalyzer_cfi.py:25
trklet::TrackletProcessor::nbitsrzbin_
unsigned int nbitsrzbin_
Definition: TrackletProcessor.h:76
trklet::TrackletProcessor::innerallstubs_
std::vector< AllStubsMemory * > innerallstubs_
Definition: TrackletProcessor.h:56
trklet::VMStubsTEMemory::nVMStubs
unsigned int nVMStubs() const
Definition: VMStubsTEMemory.h:28
accept
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:31
dqmdumpme.last
last
Definition: dqmdumpme.py:56
trklet::Stub::disk
const FPGAWord & disk() const
Definition: Stub.h:57
trklet::Stub::z
const FPGAWord & z() const
Definition: Stub.h:50
trklet::TEData::innerfinephi_
int innerfinephi_
Definition: TrackletEngineUnit.h:22
trklet::Settings::dphisectorHG
double dphisectorHG() const
Definition: Settings.h:251
trklet::Stub
Definition: Stub.h:16
trklet::FPGAWord::bits
unsigned int bits(unsigned int lsb, unsigned int nbit) const
Definition: FPGAWord.cc:74
trklet::TrackletProcessor::tedatabuffers_
std::vector< std::tuple< CircularBuffer< TEData >, unsigned int, unsigned int, unsigned int, unsigned int > > tedatabuffers_
Definition: TrackletProcessor.h:52
trklet::TrackletEngineUnit
Definition: TrackletEngineUnit.h:27
trklet::TrackletEngineUnit::read
const std::pair< const Stub *, const Stub * > & read()
Definition: TrackletEngineUnit.h:45
trklet::N_LAYER
constexpr int N_LAYER
Definition: Settings.h:19
LaserClient_cfi.nbins
nbins
Definition: LaserClient_cfi.py:51
trklet::TrackletProcessor::outerphibits_
int outerphibits_
Definition: TrackletProcessor.h:71
trklet::Settings::zmean
double zmean(unsigned int iDisk) const
Definition: Settings.h:146
trklet::ProcessBase::initLayerDisksandISeed
void initLayerDisksandISeed(unsigned int &layerdisk1, unsigned int &layerdisk2, unsigned int &iSeed)
Definition: ProcessBase.cc:75
trklet::TrackletCalculatorBase::diskSeeding
bool diskSeeding(const Stub *innerFPGAStub, const L1TStub *innerStub, const Stub *outerFPGAStub, const L1TStub *outerStub)
Definition: TrackletCalculatorBase.cc:755
trklet::FPGAWord
Definition: FPGAWord.h:9
trklet::VMRouterTable::lookupinner
int lookupinner(int zbin, int rbin)
Definition: VMRouterTable.cc:310
trklet::Settings::nfinephi
int nfinephi(unsigned int inner, unsigned int iSeed) const
Definition: Settings.h:122
trklet::TrackletCalculatorBase::layerdisk1_
unsigned int layerdisk1_
Definition: TrackletCalculatorBase.h:129
trklet::rinv
double rinv(double phi1, double phi2, double r1, double r2)
Definition: Util.h:173
trklet::CircularBuffer
Definition: CircularBuffer.h:10
trklet::TrackletCalculatorBase::layerdisk2_
unsigned int layerdisk2_
Definition: TrackletCalculatorBase.h:130
trklet::TrackletProcessor::innerphibits_
int innerphibits_
Definition: TrackletProcessor.h:70
trklet::TrackletProcessor::nbitsfinephidiff_
int nbitsfinephidiff_
Definition: TrackletProcessor.h:68
trklet::TrackletCalculatorBase::overlapSeeding
bool overlapSeeding(const Stub *innerFPGAStub, const L1TStub *innerStub, const Stub *outerFPGAStub, const L1TStub *outerStub)
Definition: TrackletCalculatorBase.cc:1111
trklet::TrackletEngineUnit::step
void step()
Definition: TrackletEngineUnit.cc:43
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::Settings::bendcutte
double bendcutte(unsigned int inner, unsigned int iSeed) const
Definition: Settings.h:120
trklet::TrackletCalculatorBase::trackletprojdisks_
std::vector< std::vector< TrackletProjectionsMemory * > > trackletprojdisks_
Definition: TrackletCalculatorBase.h:138
trklet::CircularBuffer::store
void store(T element)
Definition: CircularBuffer.h:46
trklet::Settings::rinvcutte
double rinvcutte() const
Definition: Settings.h:279
trklet::TrackletCalculatorBase::TrackletCalculatorBase
TrackletCalculatorBase(std::string name, Settings const &settings, Globals *global, unsigned int iSector)
Definition: TrackletCalculatorBase.cc:17
trklet::TrackletProcessor::outerallstubs_
std::vector< AllStubsMemory * > outerallstubs_
Definition: TrackletProcessor.h:57
trklet::TrackletProcessor::buildLUT
void buildLUT()
Definition: TrackletProcessor.cc:424
trklet::FPGAWord::value
int value() const
Definition: FPGAWord.h:24
trklet::Settings::stripPitch
double stripPitch(bool isPSmodule) const
Definition: Settings.h:237
trklet::Settings::nbitsvmte
unsigned int nbitsvmte(unsigned int inner, unsigned int iSeed) const
Definition: Settings.h:82
trklet::Settings::writeMonitorData
bool writeMonitorData(std::string module) const
Definition: Settings.h:96
trklet::TrackletCalculatorBase::TCIndex_
int TCIndex_
Definition: TrackletCalculatorBase.h:132
trklet::TrackletParametersMemory::nTracklets
unsigned int nTracklets() const
Definition: TrackletParametersMemory.h:25
trklet::TEData::stub_
const Stub * stub_
Definition: TrackletEngineUnit.h:18
trklet::Stub::phicorr
const FPGAWord & phicorr() const
Definition: Stub.h:52
trklet::NFINERZBITS
constexpr unsigned int NFINERZBITS
Definition: Settings.h:27
trklet::Globals::ofstream
std::ofstream & ofstream(std::string fname)
Definition: Globals.cc:44
trklet::Stub::l1tstub
L1TStub * l1tstub()
Definition: Stub.h:69
trklet::Settings::vmrlutzbits
unsigned int vmrlutzbits(unsigned int layerdisk) const
Definition: Settings.h:157
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
trklet::bend
double bend(double r, double rinv, double stripPitch)
Definition: Util.h:166
Exception
Definition: hltDiff.cc:245
trklet::ProcessBase::getName
std::string const & getName() const
Definition: ProcessBase.h:22
trklet::TrackletProcessor::pttableouternew_
std::vector< bool > pttableouternew_
Definition: TrackletProcessor.h:63
trklet::Settings::nvmte
unsigned int nvmte(unsigned int inner, unsigned int iSeed) const
Definition: Settings.h:88
trklet::ProcessBase::name_
std::string name_
Definition: ProcessBase.h:38
trklet::Settings::nallstubs
unsigned int nallstubs(unsigned int layerdisk) const
Definition: Settings.h:94
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:161
trklet::Settings::rcrit
double rcrit() const
Definition: Settings.h:257
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
trklet::Stub::isPSmodule
bool isPSmodule() const
Definition: Stub.h:63
trklet::Settings::maxStep
unsigned int maxStep(std::string module) const
Definition: Settings.h:103
trklet::TEData::regions_
std::vector< std::tuple< int, int, int > > regions_
Definition: TrackletEngineUnit.h:24
trklet::benddecode
double benddecode(int ibend, bool isPS)
Definition: Util.h:106
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
trklet::TrackletProcessor::iTC_
int iTC_
Definition: TrackletProcessor.h:42
command_line.start
start
Definition: command_line.py:167
trklet::ProcessBase::globals_
Globals * globals_
Definition: ProcessBase.h:45
trklet::Settings::useSeed
bool useSeed(unsigned int iSeed) const
Definition: Settings.h:81
trklet::VMStubsTEMemory::nVMStubsBinned
unsigned int nVMStubsBinned(unsigned int bin) const
Definition: VMStubsTEMemory.h:30
trklet::TrackletProcessor::nbitsrfinebintable_
unsigned int nbitsrfinebintable_
Definition: TrackletProcessor.h:74
trklet::CircularBuffer::empty
bool empty() const
Definition: CircularBuffer.h:32
trklet::TrackletProcessor::nbitsfinephi_
int nbitsfinephi_
Definition: TrackletProcessor.h:67
trklet::TEData
Definition: TrackletEngineUnit.h:17
GetRecoTauVFromDQM_MC_cff.next
next
Definition: GetRecoTauVFromDQM_MC_cff.py:31
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
trklet::TrackletProcessor::outervmstubs_
VMStubsTEMemory * outervmstubs_
Definition: TrackletProcessor.h:45
trklet::Settings::rmaxdiskvm
double rmaxdiskvm() const
Definition: Settings.h:282