18 phimatchcuttable_(settings),
19 zmatchcuttable_(settings),
20 rphicutPStable_(settings),
21 rphicut2Stable_(settings),
22 rcutPStable_(settings),
23 rcut2Stable_(settings),
25 rinvbendlut_(settings),
95 if (
output.find(
"matchout") != std::string::npos) {
104 throw cms::Exception(
"BadConfig") << __FILE__ <<
" " << __LINE__ <<
" could not find output: " <<
output;
112 if (
input ==
"allstubin") {
118 if (
input ==
"vmstubin") {
124 if (
input ==
"projin") {
130 throw cms::Exception(
"BadConfig") << __FILE__ <<
" " << __LINE__ <<
" could not find input: " <<
input;
157 unsigned int countme = 0;
158 unsigned int countall = 0;
159 unsigned int countsel = 0;
160 unsigned int countinputproj = 0;
162 unsigned int iprojmem = 0;
167 unsigned int iproj = 0;
172 countinputproj += inputproj->nTracklets();
203 bool projdone =
false;
208 unsigned int iMEbest = 0;
214 if (tcid < bestTCID) {
221 std::pair<Tracklet*, const Stub*> candmatch =
matchengines_[iMEbest].read();
223 const Stub* fpgastub = candmatch.second;
224 Tracklet* tracklet = candmatch.first;
226 if (oldTracklet !=
nullptr) {
231 oldTracklet = tracklet;
247 bool addedProjection =
false;
279 print && (iME == 0));
280 addedProjection =
true;
295 tmpProj__ = tmpProj_;
302 if (!projBuffNearFull) {
314 int overlapbits =
nvmbits_ + nextrabits;
316 unsigned int extrabits = fpgaphi.
bits(fpgaphi.
nbits() - overlapbits, nextrabits);
318 unsigned int ivmPlus =
iphi;
326 unsigned int ivmMinus =
iphi;
327 if (extrabits == 0 &&
iphi != 0) {
346 int phiderindex = (
proj->proj(
layerdisk_).fpgaphiprojder().value() >>
350 int signindex =
proj->proj(
layerdisk_).fpgarzprojder().value() < 0;
360 unsigned int slot =
proj->proj(
layerdisk_).fpgarzbin1projvm().value();
363 unsigned int projfinephi =
367 bool isPSseed =
proj->PSseed();
375 bool usefirstMinus = stubmem->
nStubsBin(ivmMinus *
nbins + slot) != 0;
377 bool usefirstPlus = ivmPlus != ivmMinus && stubmem->
nStubsBin(ivmPlus *
nbins + slot) != 0;
378 bool usesecondPlus = ivmPlus != ivmMinus && (
second && (stubmem->
nStubsBin(ivmPlus *
nbins + slot + 1) != 0));
380 good_ = usefirstPlus || usesecondPlus || usefirstMinus || usesecondMinus;
408 projdone =
true && !good_ && !good__;
421 <<
" " << countme <<
" " << countinputproj << endl;
437 int ir = fpgastub->
r().
value();
438 int iphi =
proj.fpgaphiproj().value();
442 int iz =
proj.fpgarzproj().value();
446 int ideltaz = fpgastub->
z().
value() - iz;
451 double phi = stub->
phi();
452 double r = stub->
r();
453 double z = stub->
z();
472 double dz = z - (
proj.rzproj() +
dr *
proj.rzprojder());
476 double dzapprox = z - (
proj.rzprojapprox() +
dr *
proj.rzprojderapprox());
478 int seedindex = tracklet->
getISeed();
500 <<
layerdisk_ + 1 <<
" " << seedindex <<
" " <<
pt <<
" " 519 throw cms::Exception(
"LogicError") <<
"WARNING dphi and/or dphiapprox too large : " << dphi <<
" " << dphiapprox
549 assert(stub->
z() * tracklet->
t() > 0.0);
551 int sign = (tracklet->
t() > 0.0) ? 1 : -1;
557 int iz = fpgastub->
z().
value();
561 int iphi =
proj.fpgaphiproj().value();
566 int ir =
proj.fpgarzproj().value();
572 int irstub = fpgastub->
r().
value();
590 ideltaphi += iphialphacor;
595 double phi = stub->
phi();
596 double z = stub->
z();
597 double r = stub->
r();
619 double phiproj =
proj.phiproj() +
dz *
proj.phiprojder();
620 double rproj =
proj.rzproj() +
dz *
proj.rzprojder();
623 double dr = stub->
r() - rproj;
624 double drapprox = stub->
r() - (
proj.rzprojapprox() +
dz *
proj.rzprojderapprox());
630 double drphi = dphi * stub->
r();
631 double drphiapprox = dphiapprox * stub->
r();
643 int seedindex = tracklet->
getISeed();
666 bool imatch = (
std::abs(ideltaphi * irstub) < idrphicut) && (
std::abs(ideltar) < idrcut);
690 drphiapprox / stub->
r(),
Log< level::Info, true > LogVerbatim
void initBendMatch(unsigned int layerdisk)
constexpr unsigned int N_RZBITS
unsigned int maxStep(std::string module) const
const FPGAWord & r() const
unsigned int projrinv() const
double kphiderdisk() const
void initmatchcut(unsigned int layerdisk, MatchType type, unsigned int region)
double rDSSinner(unsigned int iBin) const
constexpr T reduceRange(T x)
void addInput(MemoryBase *memory, std::string input) override
double phiapprox(double phimin, double) const
std::vector< MatchEngineUnit > matchengines_
constexpr unsigned int NRINVBITS
const FPGAWord & z() const
void initProjectionBend(double k_phider, unsigned int idisk, unsigned int nrbits, unsigned int nphiderbits)
double dphisectorHG() const
unsigned int projfinephi() const
Projection & proj(int layerdisk)
Settings const & settings_
TrackletLUT phimatchcuttable_
int lookup(unsigned int index) const
std::vector< TrackletProjectionsMemory * > inputprojs_
constexpr unsigned int N_DSS_MOD
static std::string const input
unsigned int isPSmodule() const
void addMatch(unsigned int layerdisk, int ideltaphi, int ideltarz, double dphi, double drz, double dphiapprox, double drzapprox, int stubid, const trklet::Stub *stubptr)
U second(std::pair< T, U > const &p)
unsigned int nbitsallstubs(unsigned int layerdisk) const
double half2SmoduleWidth() const
unsigned int nzbitsstub(unsigned int layerdisk) const
unsigned int nphibitsstub(unsigned int layerdisk) const
double rmean(unsigned int iLayer) const
double rDSSouter(unsigned int iBin) const
bool use(unsigned int nextrzbin, unsigned int nextiphibin) const
std::vector< FullMatchMemory * > fullmatches_
VarAdjustK der_phiD_final
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Abs< T >::type abs(const T &t)
Tracklet * getTracklet(unsigned int i)
IMATH_TrackletCalculator * ITC_L1L2()
std::string const & getName() const
unsigned int nbitsvmme(unsigned int layerdisk) const
CircularBuffer< ProjectionTemp > inputProjBuffer_
bool writeMonitorData(std::string module) const
Log< level::Warning, true > LogPrint
double zmean(unsigned int iDisk) const
void initLayerDisk(unsigned int pos, int &layer, int &disk)
const FPGAWord & stubindex() const
TrackletLUT rphicutPStable_
unsigned int nallstubs(unsigned int layerdisk) const
bool debugTracklet() const
bool matchCalculator(Tracklet *tracklet, const Stub *fpgastub, bool print, unsigned int istep)
unsigned int iphi() const
TrackletLUT rphicut2Stable_
unsigned int nTracklets() const
unsigned int slot() const
int ialphafactinner_[N_DSS_MOD *2]
bool stubtruthmatch(const L1TStub *stub)
void addOutput(MemoryBase *memory, std::string output) override
constexpr unsigned int NFINEPHIBITS
unsigned int getISeed(const std::string &name)
unsigned int nvmme(unsigned int layerdisk) const
const FPGAWord & alpha() const
void execute(unsigned int iSector, double phimin)
unsigned int nMatchEngines_
std::ofstream & ofstream(std::string fname)
static unsigned int const shift
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
double krprojshiftdisk() const
const FPGAWord & phi() const
std::vector< VMStubsMEMemory * > vmstubs_
unsigned int nStubsBin(unsigned int bin) const
unsigned int bits(unsigned int lsb, unsigned int nbit) const
std::string const & getName() const
AllStubsMemory * allstubs_
TrackletLUT zmatchcuttable_
int ialphafactouter_[N_DSS_MOD *2]
constexpr unsigned int N_BITSMEMADDRESS
Log< level::Error, true > LogProblem