|
|
#include <FitTrack.h>
|
void | addInput (MemoryBase *memory, std::string input) override |
|
void | addOutput (MemoryBase *memory, std::string output) override |
|
void | execute (unsigned int iSector) |
|
| FitTrack (std::string name, Settings const &settings, Globals *global) |
|
std::vector< Tracklet * > | orderedMatches (std::vector< FullMatchMemory * > &fullmatch) |
|
void | trackFitChisq (Tracklet *tracklet, std::vector< const Stub * > &, std::vector< std::pair< int, int >> &) |
|
void | trackFitFake (Tracklet *tracklet, std::vector< const Stub * > &, std::vector< std::pair< int, int >> &) |
|
void | trackFitKF (Tracklet *tracklet, std::vector< const Stub * > &trackstublist, std::vector< std::pair< int, int >> &stubidslist) |
|
| ~FitTrack () override=default |
|
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) |
|
virtual | ~ProcessBase ()=default |
|
Definition at line 18 of file FitTrack.h.
◆ FitTrack()
FitTrack::FitTrack |
( |
std::string |
name, |
|
|
Settings const & |
settings, |
|
|
Globals * |
global |
|
) |
| |
◆ ~FitTrack()
trklet::FitTrack::~FitTrack |
( |
| ) |
|
|
overridedefault |
◆ addInput()
void FitTrack::addInput |
( |
MemoryBase * |
memory, |
|
|
std::string |
input |
|
) |
| |
|
overridevirtual |
Implements trklet::ProcessBase.
Definition at line 32 of file FitTrack.cc.
37 if (
input.substr(0, 4) ==
"tpar") {
38 auto*
tmp = dynamic_cast<TrackletParametersMemory*>(
memory);
43 if (
input.substr(0, 10) ==
"fullmatch1") {
44 auto*
tmp = dynamic_cast<FullMatchMemory*>(
memory);
49 if (
input.substr(0, 10) ==
"fullmatch2") {
50 auto*
tmp = dynamic_cast<FullMatchMemory*>(
memory);
55 if (
input.substr(0, 10) ==
"fullmatch3") {
56 auto*
tmp = dynamic_cast<FullMatchMemory*>(
memory);
61 if (
input.substr(0, 10) ==
"fullmatch4") {
62 auto*
tmp = dynamic_cast<FullMatchMemory*>(
memory);
68 throw cms::Exception(
"BadConfig") << __FILE__ <<
" " << __LINE__ <<
" input = " <<
input <<
" not found";
References cms::cuda::assert(), Exception, fullmatch1_, fullmatch2_, fullmatch3_, fullmatch4_, input, trklet::ProcessBase::name_, seedtracklet_, trklet::ProcessBase::settings_, createJobs::tmp, and trklet::Settings::writetrace().
◆ addOutput()
void FitTrack::addOutput |
( |
MemoryBase * |
memory, |
|
|
std::string |
output |
|
) |
| |
|
overridevirtual |
◆ execute()
void FitTrack::execute |
( |
unsigned int |
iSector | ) |
|
Definition at line 870 of file FitTrack.cc.
879 if (
settings_.
debugTracklet() && (matches1.size() + matches2.size() + matches3.size() + matches4.size()) > 0) {
881 edm::LogVerbatim(
"Tracklet") << imatch->getName() <<
" " << imatch->nMatches();
884 << matches3.size() <<
" " << matches4.size();
887 unsigned int indexArray[4];
888 for (
unsigned int i = 0;
i < 4;
i++) {
898 bestTracklet =
nullptr;
900 if (indexArray[0] < matches1.size()) {
901 if (bestTracklet ==
nullptr) {
902 bestTracklet = matches1[indexArray[0]];
904 if (matches1[indexArray[0]]->TCID() < bestTracklet->
TCID())
905 bestTracklet = matches1[indexArray[0]];
909 if (indexArray[1] < matches2.size()) {
910 if (bestTracklet ==
nullptr) {
911 bestTracklet = matches2[indexArray[1]];
913 if (matches2[indexArray[1]]->TCID() < bestTracklet->
TCID())
914 bestTracklet = matches2[indexArray[1]];
918 if (indexArray[2] < matches3.size()) {
919 if (bestTracklet ==
nullptr) {
920 bestTracklet = matches3[indexArray[2]];
922 if (matches3[indexArray[2]]->TCID() < bestTracklet->
TCID())
923 bestTracklet = matches3[indexArray[2]];
927 if (indexArray[3] < matches4.size()) {
928 if (bestTracklet ==
nullptr) {
929 bestTracklet = matches4[indexArray[3]];
931 if (matches4[indexArray[3]]->TCID() < bestTracklet->
TCID())
932 bestTracklet = matches4[indexArray[3]];
936 if (bestTracklet ==
nullptr)
943 int nMatchesUniq = 0;
946 while (indexArray[0] < matches1.size() && matches1[indexArray[0]] == bestTracklet) {
956 while (indexArray[1] < matches2.size() && matches2[indexArray[1]] == bestTracklet) {
966 while (indexArray[2] < matches3.size() && matches3[indexArray[2]] == bestTracklet) {
976 while (indexArray[3] < matches4.size() && matches4[indexArray[3]] == bestTracklet) {
986 edm::LogVerbatim(
"Tracklet") <<
getName() <<
" : nMatches = " << nMatches <<
" nMatchesUniq = " << nMatchesUniq
987 <<
" " << asinh(bestTracklet->
t());
990 std::vector<const Stub*> trackstublist;
991 std::vector<std::pair<int, int>> stubidslist;
997 trackFitKF(bestTracklet, trackstublist, stubidslist);
1000 trackFitFake(bestTracklet, trackstublist, stubidslist);
1011 }
else if (bestTracklet->
fit()) {
1014 ofstream
fout(
"seeds.txt", ofstream::app);
1015 fout << __FILE__ <<
":" << __LINE__ <<
" " <<
name_ <<
"_"
1016 <<
" " << bestTracklet->
getISeed() << endl;
1024 }
while (bestTracklet !=
nullptr);
References trklet::TrackFitMemory::addStubidsList(), trklet::TrackFitMemory::addStubList(), trklet::TrackFitMemory::addTrack(), cms::cuda::assert(), trklet::Settings::debugTracklet(), trklet::Settings::fakefit(), trklet::Tracklet::fit(), groupFilesInBlocks::fout, fullmatch1_, fullmatch2_, fullmatch3_, fullmatch4_, trklet::Tracklet::getISeed(), trklet::ProcessBase::getName(), trklet::ProcessBase::globals_, mps_fire::i, createfilelist::int, iSector_, match(), trklet::N_SEED_PROMPT, trklet::ProcessBase::name_, trklet::TrackFitMemory::nTracks(), trklet::Globals::ofstream(), orderedMatches(), trklet::Settings::removalType(), trklet::ProcessBase::settings_, trklet::Tracklet::setTrackIndex(), trklet::Tracklet::t(), trklet::Tracklet::TCID(), trackfit_, trackFitChisq(), trackFitFake(), trackFitKF(), and trklet::Settings::writeMonitorData().
◆ orderedMatches()
◆ trackFitChisq()
void FitTrack::trackFitChisq |
( |
Tracklet * |
tracklet, |
|
|
std::vector< const Stub * > & |
, |
|
|
std::vector< std::pair< int, int >> & |
|
|
) |
| |
Definition at line 138 of file FitTrack.cc.
160 unsigned int ndisks = 0;
178 phiresidexact[
i] = 0.0;
179 zresidexact[
i] = 0.0;
182 std::bitset<N_LAYER> lmatches;
183 std::bitset<N_DISK * 2> dmatches;
187 unsigned int layermask = 0;
188 unsigned int diskmask = 0;
189 unsigned int alphaindex = 0;
190 unsigned int power = 1;
192 double t = tracklet->
t();
197 if (
l == (
unsigned int)tracklet->
layer() ||
l == (
unsigned int)tracklet->
layer() + 1) {
203 if (tracklet->
match(
l - 1)) {
218 for (
unsigned int d = 1;
d <=
N_DISK;
d++) {
219 if (layermask & (1 << (
d - 1)))
231 dmatches.set(2 *
d - 1);
232 diskmask |= (1 << (2 * (
N_DISK -
d) + 1));
239 alphaindex += ialpha * power;
241 dmatches.set(2 * (
N_DISK -
d));
242 diskmask |= (1 << (2 * (
N_DISK -
d)));
260 << lmatches.to_string() <<
" " << dmatches.to_string() <<
" " <<
mult << endl;
266 for (
unsigned int l = 1;
l <= 2;
l++) {
267 if (tracklet->
match(
l - 1)) {
287 if (
d == 5 and layermask & (1 << 4))
293 dmatches.set(2 *
d1 - 1);
294 diskmask |= (1 << (2 * (
N_DISK -
d1) + 1));
306 dmatches.set(2 *
d1 - 1);
307 diskmask |= (1 << (2 * (
N_DISK -
d1) + 1));
314 alphaindex += ialpha * power;
317 diskmask |= (1 << (2 * (
N_DISK -
d1)));
337 for (
unsigned int l = 1;
l <= 2;
l++) {
338 if (
l == (
unsigned int)tracklet->
layer()) {
344 if (tracklet->
match(
l - 1)) {
367 if (
d == tracklet->
disk()) {
369 dmatches.set(2 *
d1 - 1);
370 diskmask |= (1 << (2 * (
N_DISK -
d1) + 1));
382 diskmask |= (1 << (2 * (
N_DISK -
d1) + 1));
384 tmp.set(diskmask, 10);
391 alphaindex += ialpha * power;
394 diskmask |= (1 << (2 * (
N_DISK -
d1)));
396 tmp.set(diskmask, 10);
424 if (derivatives ==
nullptr) {
427 tmpl.set(layermask, 6);
428 tmpd.
set(diskmask, 10);
429 edm::LogVerbatim(
"Tracklet") <<
"No derivative for layermask, diskmask : " << layermask <<
" " <<
tmpl.str()
430 <<
" " << diskmask <<
" " << tmpd.
str() <<
" eta = " << asinh(
t);
474 for (
unsigned i = 0;
i < ndisks;
i++) {
490 settings_,
nlayers,
r, ndisks,
z,
alpha,
t,
rinv,
D, iD, MinvDt, iMinvDt, sigma,
kfactor);
496 settings_,
nlayers,
r, ndisks,
z,
alpha,
t,
rinv,
D, iD, MinvDt, iMinvDt, sigma,
kfactor);
499 derivatives->
fill(tracklet->
fpgat().
value(), MinvDtDummy, iMinvDt);
517 double dr = realrstub[
i] -
r[
i];
519 MinvDt[2][2 *
ii + 1] +=
dr * tder;
520 MinvDt[3][2 *
ii + 1] +=
dr * zder;
535 double tseed = tracklet->
tapprox();
536 double z0seed = tracklet->
z0approx();
538 double rinvseedexact = tracklet->
rinv();
539 double phi0seedexact = tracklet->
phi0();
540 double tseedexact = tracklet->
t();
541 double z0seedexact = tracklet->
z0();
543 double chisqseed = 0.0;
544 double chisqseedexact = 0.0;
558 for (
unsigned int i = 0;
i <
n;
i++) {
560 iphiresid[
i] *= (
t / ttabi);
561 phiresid[
i] *= (
t / ttab);
562 phiresidexact[
i] *= (
t / ttab);
565 idelta[
j] = iphiresid[
i];
573 deltaexact[
j++] = phiresidexact[
i];
575 idelta[
j] = izresid[
i];
577 deltaexact[
j++] = zresidexact[
i];
580 chisqseedexact += (deltaexact[
j - 2] * deltaexact[
j - 2] + deltaexact[
j - 1] * deltaexact[
j - 1]);
589 double drinvexact = 0.0;
590 double dphi0exact = 0.0;
591 double dtexact = 0.0;
592 double dz0exact = 0.0;
599 double drinv_cov = 0.0;
600 double dphi0_cov = 0.0;
602 double dz0_cov = 0.0;
604 double drinv_covexact = 0.0;
605 double dphi0_covexact = 0.0;
606 double dt_covexact = 0.0;
607 double dz0_covexact = 0.0;
609 for (
unsigned int j = 0;
j < 2 *
n;
j++) {
610 drinv -= MinvDt[0][
j] *
delta[
j];
611 dphi0 -= MinvDt[1][
j] *
delta[
j];
613 dz0 -= MinvDt[3][
j] *
delta[
j];
620 drinvexact -= MinvDt[0][
j] * deltaexact[
j];
621 dphi0exact -= MinvDt[1][
j] * deltaexact[
j];
622 dtexact -= MinvDt[2][
j] * deltaexact[
j];
623 dz0exact -= MinvDt[3][
j] * deltaexact[
j];
625 drinv_covexact +=
D[0][
j] * deltaexact[
j];
626 dphi0_covexact +=
D[1][
j] * deltaexact[
j];
627 dt_covexact +=
D[2][
j] * deltaexact[
j];
628 dz0_covexact +=
D[3][
j] * deltaexact[
j];
630 idrinv += ((iMinvDt[0][
j] * idelta[
j]));
631 idphi0 += ((iMinvDt[1][
j] * idelta[
j]));
632 idt += ((iMinvDt[2][
j] * idelta[
j]));
633 idz0 += ((iMinvDt[3][
j] * idelta[
j]));
635 if (
false &&
j % 2 == 0) {
637 <<
" " << MinvDt[0][
j] <<
" " <<
delta[
j] * rstub[
j / 2] * 10000 <<
" \n"
645 double deltaChisqexact =
646 drinvexact * drinv_covexact + dphi0exact * dphi0_covexact + dtexact * dt_covexact + dz0exact * dz0_covexact;
661 double rinvfit = rinvseed - drinv;
662 double phi0fit = phi0seed - dphi0;
664 double tfit = tseed -
dt;
665 double z0fit = z0seed - dz0;
667 double rinvfitexact = rinvseedexact - drinvexact;
668 double phi0fitexact = phi0seedexact - dphi0exact;
670 double tfitexact = tseedexact - dtexact;
671 double z0fitexact = z0seedexact - dz0exact;
673 double chisqfitexact = chisqseedexact + deltaChisqexact;
676 bool NewChisqDebug =
false;
677 double chisqfit = 0.0;
688 <<
"drinv/cov = " << drinv <<
"/" << drinv_cov <<
" \n"
689 <<
"dphi0/cov = " << drinv <<
"/" << dphi0_cov <<
" \n"
690 <<
"dt/cov = " << drinv <<
"/" << dt_cov <<
" \n"
691 <<
"dz0/cov = " << drinv <<
"/" << dz0_cov <<
"\n";
693 for (
unsigned int i = 0;
i < 2 *
n;
i++) {
694 myout += std::to_string(
D[0][
i]);
700 for (
unsigned int i = 0;
i <
n;
i++) {
702 phifactor = rstub[
k / 2] *
delta[
k] / sigma[
k] +
D[0][
k] * drinv +
D[1][
k] * dphi0 +
D[2][
k] *
dt +
D[3][
k] * dz0;
704 iD[0][
k] * idrinv - iD[1][
k] * idphi0 - iD[2][
k] * idt - iD[3][
k] * idz0;
708 <<
"sum = " << phifactor -
delta[
k] / sigma[
k] <<
" drinvterm = " <<
D[0][
k] * drinv
709 <<
" dphi0term = " <<
D[1][
k] * dphi0 <<
" dtterm = " <<
D[2][
k] *
dt
710 <<
" dz0term = " <<
D[3][
k] * dz0 <<
"\n phifactor = " << phifactor;
713 chisqfit += phifactor * phifactor;
718 rzfactor =
delta[
k] / sigma[
k] +
D[0][
k] * drinv +
D[1][
k] * dphi0 +
D[2][
k] *
dt +
D[3][
k] * dz0;
720 iD[1][
k] * idphi0 - iD[2][
k] * idt - iD[3][
k] * idz0;
724 <<
"sum = " << rzfactor -
delta[
k] / sigma[
k] <<
" drinvterm = " <<
D[0][
k] * drinv
725 <<
" dphi0term = " <<
D[1][
k] * dphi0 <<
" dtterm = " <<
D[2][
k] *
dt
726 <<
" dz0term = " <<
D[3][
k] * dz0 <<
"\n rzfactor = " << rzfactor;
729 chisqfit += rzfactor * rzfactor;
741 if (ichisqfit >= (1 << 15)) {
743 edm::LogVerbatim(
"Tracklet") <<
"CHISQUARE (" << ichisqfit <<
") LARGER THAN 11 BITS!";
745 ichisqfit = (1 << 15) - 1;
749 ichisqfit = ichisqfit >> 7;
751 if (ichisqfit >= (1 << 8))
752 ichisqfit = (1 << 8) - 1;
754 double phicrit = phi0fit - asin(0.5 *
settings_.
rcrit() * rinvfit);
References funct::abs(), trklet::Stub::alpha(), trklet::L1TStub::alpha(), alpha, trklet::Settings::alphaBitsTable(), cms::cuda::assert(), trklet::TrackDerTable::calculateDerivatives(), trklet::Settings::chisqphifactbits(), trklet::Settings::chisqzfactbits(), ztail::d, d1, trklet::Settings::debugTracklet(), dumpMFGeometry_cfg::delta, trklet::Tracklet::disk(), alignBH_cfg::disks, flavorHistoryFilter_cfi::dr, dt, MillePedeFileConverter_cfg::e, trklet::Settings::exactderivatives(), trklet::Settings::exactderivativesforfloating(), trklet::TrackDer::fill(), trklet::TrackDerTable::fillTable(), trklet::Settings::fitPatternFile(), trklet::Settings::fitphi0bitshift(), trklet::Settings::fitrinvbitshift(), trklet::Settings::fittbitshift(), trklet::Settings::fitz0bitshift(), trklet::Tracklet::fpgaphi0(), trklet::Residual::fpgaphiresid(), trklet::Tracklet::fpgarinv(), trklet::Residual::fpgarzresid(), trklet::Tracklet::fpgat(), trklet::Tracklet::fpgaz0(), trklet::TrackDerTable::getDerivatives(), trklet::TrackDerTable::getEntries(), trklet::ProcessBase::getName(), trklet::ProcessBase::globals_, mps_fire::i, cuy::ii, trklet::Tracklet::innerFPGAStub(), createfilelist::int, trklet::Tracklet::isBarrel(), trklet::Tracklet::isDisk(), trklet::Tracklet::isOverlap(), trklet::L1TStub::isPSmodule(), trklet::TrackDer::itdzcorr(), trklet::TrackDer::iz0dzcorr(), dqmiolumiharvest::j, dqmdumpme::k, runTheMatrix::keep, kfactor, trklet::Settings::kphi(), trklet::Settings::kr(), trklet::Settings::krinvpars(), trklet::Settings::ktpars(), cmsLHEtoEOSManager::l, trklet::Stub::l1tstub(), trklet::Tracklet::layer(), hgcalTopologyTester_cfi::layers, trklet::Tracklet::match(), VarParsing::mult, dqmiodumpmetadata::n, trklet::N_DISK, trklet::N_FITPARAM, trklet::N_FITSTUB, trklet::N_LAYER, trklet::FPGAWord::nbits(), nlayers, trklet::Settings::nrinvBitsTable(), trklet::Globals::ofstream(), trklet::Tracklet::outerFPGAStub(), trklet::Tracklet::phi0(), trklet::Tracklet::phi0approx(), trklet::Settings::phicritmax(), trklet::Settings::phicritmin(), trklet::Residual::phiresid(), trklet::Residual::phiresidapprox(), trklet::L1TStub::r(), alignCSCRings::r, trklet::Settings::rcorrbits(), trklet::Settings::rcrit(), trklet::TrackDerTable::readPatternFile(), trklet::Tracklet::resid(), trklet::rinv(), trklet::Tracklet::rinv(), trklet::Tracklet::rinvapprox(), trklet::Settings::rinvmax(), trklet::Settings::rmean(), trklet::Settings::rPS2S(), trklet::Residual::rzresid(), trklet::Residual::rzresidapprox(), trklet::FPGAWord::set(), trklet::Tracklet::setFitPars(), trklet::ProcessBase::settings_, Validation_hcalonly_cfi::sign, trklet::FPGAWord::str(), AlCaHLTBitMon_QueryRunRegistry::string, trklet::Settings::stripPitch(), trklet::Residual::stubptr(), trklet::Tracklet::t(), submitPVValidationJobs::t, trklet::Tracklet::tapprox(), trklet::TrackDer::tdzcorr(), createJobs::tmp, callgraph::tmpl, trklet::TrackDerTable::tpar(), trklet::Globals::trackDerTable(), parallelization::uint, trklet::FPGAWord::value(), trklet::Settings::warnNoDer(), trklet::Settings::writeMonitorData(), trklet::Tracklet::z0(), trklet::Tracklet::z0approx(), trklet::TrackDer::z0dzcorr(), and trklet::Settings::zmean().
Referenced by execute().
◆ trackFitFake()
void FitTrack::trackFitFake |
( |
Tracklet * |
tracklet, |
|
|
std::vector< const Stub * > & |
, |
|
|
std::vector< std::pair< int, int >> & |
|
|
) |
| |
Definition at line 790 of file FitTrack.cc.
References trklet::Tracklet::d0(), trklet::Tracklet::d0approx(), trklet::Tracklet::fpgad0(), trklet::Tracklet::fpgaphi0(), trklet::Tracklet::fpgarinv(), trklet::Tracklet::fpgat(), trklet::Tracklet::fpgaz0(), trklet::Tracklet::phi0(), trklet::Tracklet::phi0approx(), trklet::Tracklet::rinv(), trklet::Tracklet::rinvapprox(), trklet::Tracklet::setFitPars(), trklet::Tracklet::t(), trklet::Tracklet::tapprox(), trklet::FPGAWord::value(), trklet::Tracklet::z0(), and trklet::Tracklet::z0approx().
Referenced by execute().
◆ trackFitKF()
void trklet::FitTrack::trackFitKF |
( |
Tracklet * |
tracklet, |
|
|
std::vector< const Stub * > & |
trackstublist, |
|
|
std::vector< std::pair< int, int >> & |
stubidslist |
|
) |
| |
◆ fullmatch1_
◆ fullmatch2_
◆ fullmatch3_
◆ fullmatch4_
◆ iSector_
unsigned int trklet::FitTrack::iSector_ |
|
private |
◆ seedtracklet_
◆ trackfit_
ProcessBase(std::string name, Settings const &settings, Globals *global)
bool exactderivatives() const
static void calculateDerivatives(Settings const &settings, unsigned int nlayers, double r[N_LAYER], unsigned int ndisks, double z[N_DISK], double alpha[N_DISK], double t, double rinv, double D[N_FITPARAM][N_FITSTUB *2], int iD[N_FITPARAM][N_FITSTUB *2], double MinvDt[N_FITPARAM][N_FITSTUB *2], int iMinvDt[N_FITPARAM][N_FITSTUB *2], double sigma[N_FITSTUB *2], double kfactor[N_FITSTUB *2])
static const std::string input
void addStubidsList(std::vector< std::pair< int, int >> stubidslist)
const FPGAWord & fpgat() const
int itdzcorr(int i, int j) const
double phiresidapprox() const
int fitz0bitshift() const
int iz0dzcorr(int i, int j) const
void set(int value, int nbits, bool positive=true, int line=-1, const char *file=nullptr)
double rmean(unsigned int iLayer) const
void setTrackIndex(int index)
const FPGAWord & fpgad0() const
Settings const & settings_
double phicritmin() const
double rinvapprox() const
Log< level::Warning, false > LogWarning
constexpr unsigned int N_FITSTUB
static double tpar(Settings const &settings, int diskmask, int layermask)
std::vector< TrackletParametersMemory * > seedtracklet_
const Residual & resid(unsigned int layerdisk)
unsigned int isPSmodule() const
bool exactderivativesforfloating() const
std::vector< FullMatchMemory * > fullmatch1_
double phi0approx() const
double zmean(unsigned int iDisk) const
std::vector< Tracklet * > orderedMatches(std::vector< FullMatchMemory * > &fullmatch)
std::vector< FullMatchMemory * > fullmatch2_
const Stub * stubptr() const
std::vector< FullMatchMemory * > fullmatch4_
TrackFitMemory * trackfit_
double rinv(double phi1, double phi2, double r1, double r2)
constexpr unsigned int N_FITPARAM
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
const TrackDer * getDerivatives(int index) const
double z0dzcorr(int i, int j) const
double phicritmax() const
int chisqphifactbits() const
const unsigned int kfactor
void trackFitFake(Tracklet *tracklet, std::vector< const Stub * > &, std::vector< std::pair< int, int >> &)
void addTrack(Tracklet *tracklet)
const FPGAWord & fpgaz0() const
double alpha(double pitch) const
int fitrinvbitshift() const
double stripPitch(bool isPSmodule) const
const Stub * innerFPGAStub()
void fill(int t, double MinvDt[N_FITPARAM][N_FITSTUB *2], int iMinvDt[N_FITPARAM][N_FITSTUB *2]) const
bool match(unsigned int layerdisk)
constexpr unsigned int N_SEED_PROMPT
bool writeMonitorData(std::string module) const
unsigned int nTracks() const
DecomposeProduct< arg, typename Div::arg > D
std::string removalType() const
int fitphi0bitshift() const
std::vector< FullMatchMemory * > fullmatch3_
std::ofstream & ofstream(std::string fname)
std::string const & fitPatternFile() const
Log< level::Info, true > LogVerbatim
void readPatternFile(std::string fileName)
const Stub * outerFPGAStub()
TrackDerTable *& trackDerTable()
std::string const & getName() const
void setFitPars(double rinvfit, double phi0fit, double d0fit, double tfit, double z0fit, double chisqrphifit, double chisqrzfit, double rinvfitexact, double phi0fitexact, double d0fitexact, double tfitexact, double z0fitexact, double chisqrphifitexact, double chisqrzfitexact, int irinvfit, int iphi0fit, int id0fit, int itfit, int iz0fit, int ichisqrphifit, int ichisqrzfit, int hitpattern, const std::vector< const L1TStub * > &l1stubs=std::vector< const L1TStub * >())
void addStubList(std::vector< const Stub * > stublist)
bool debugTracklet() const
double rzresidapprox() const
int nrinvBitsTable() const
void trackFitChisq(Tracklet *tracklet, std::vector< const Stub * > &, std::vector< std::pair< int, int >> &)
const FPGAWord & fpgarinv() const
const FPGAWord & alpha() const
int chisqzfactbits() const
Abs< T >::type abs(const T &t)
double tdzcorr(int i, int j) const
const FPGAWord & fpgarzresid() const
const FPGAWord & fpgaphi0() const
int alphaBitsTable() const
static constexpr float d1
const FPGAWord & fpgaphiresid() const
void trackFitKF(Tracklet *tracklet, std::vector< const Stub * > &trackstublist, std::vector< std::pair< int, int >> &stubidslist)