Skip to content

Commit

Permalink
Merge pull request cms-sw#35 from cms-L1TK/LS-port-11_1_0_pre5
Browse files Browse the repository at this point in the history
Ls port 11 1 0 pre5
  • Loading branch information
skinnari authored Sep 23, 2020
2 parents aabdcbc + 4492871 commit 4c616ef
Show file tree
Hide file tree
Showing 37 changed files with 1,446 additions and 1,043 deletions.
3 changes: 2 additions & 1 deletion L1Trigger/TrackFindingTracklet/interface/LayerProjection.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ namespace trklet {
double phiprojapprox,
double zprojapprox,
double phiprojderapprox,
double zprojderapprox);
double zprojderapprox,
bool isPSseed=false);

bool valid() const { return valid_; }

Expand Down
4 changes: 4 additions & 0 deletions L1Trigger/TrackFindingTracklet/interface/MatchEngineUnit.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ namespace trklet {
int projrinv,
int projfinerz,
int projfinephi,
bool usesecond,
bool isPSseed,
Tracklet* proj);

Expand All @@ -39,6 +40,8 @@ namespace trklet {

bool idle() const { return idle_; }

void reset();

void step();

private:
Expand All @@ -52,6 +55,7 @@ namespace trklet {
int projrinv_;
int projfinerz_;
int projfinephi_;
bool usesecond_;
bool isPSseed_;
Tracklet* proj_;

Expand Down
1 change: 1 addition & 0 deletions L1Trigger/TrackFindingTracklet/interface/MatchProcessor.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ namespace trklet {
private:
int layer_;
int disk_;
unsigned int layerdisk_;
bool barrel_;

unsigned int phiregion_;
Expand Down
3 changes: 3 additions & 0 deletions L1Trigger/TrackFindingTracklet/interface/ProjectionTemp.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ namespace trklet {
int projfinerz,
unsigned int projfinephi,
unsigned int iphi,
bool usesecond,
bool isPSseed);

ProjectionTemp();
Expand All @@ -26,6 +27,7 @@ namespace trklet {
int projfinerz() const { return projfinerz_; }
unsigned int projfinephi() const { return projfinephi_; }
unsigned int iphi() const { return iphi_; }
bool usesecond() const { return usesecond_; }
bool isPSseed() const { return isPSseed_; }

private:
Expand All @@ -35,6 +37,7 @@ namespace trklet {
unsigned int projfinerz_;
unsigned int projfinephi_;
unsigned int iphi_;
bool usesecond_;
bool isPSseed_;
};
}; // namespace trklet
Expand Down
2 changes: 2 additions & 0 deletions L1Trigger/TrackFindingTracklet/interface/Sector.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ namespace trklet {

//Processing modules
class VMRouter;
class VMRouterCM;
class TrackletEngine;
class TrackletEngineDisplaced;
class TripletEngine;
Expand Down Expand Up @@ -153,6 +154,7 @@ namespace trklet {

std::map<std::string, std::unique_ptr<ProcessBase> > Processes_;
std::vector<VMRouter*> VMR_;
std::vector<VMRouterCM*> VMRCM_;
std::vector<TrackletEngine*> TE_;
std::vector<TrackletEngineDisplaced*> TED_;
std::vector<TripletEngine*> TRE_;
Expand Down
53 changes: 39 additions & 14 deletions L1Trigger/TrackFindingTracklet/interface/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,13 @@ namespace trklet {
unsigned int nbendbitsmedisk() const { return nbendbitsmedisk_; }

bool useSeed(unsigned int iSeed) const { return useseeding_.find(iSeed) != useseeding_.end(); }
unsigned int nbitsvmte(unsigned int inner, unsigned int iSeed) const { return nbitsvmte_[inner][iSeed]; }
unsigned int nvmte(unsigned int inner, unsigned int iSeed) const { return (1 << nbitsvmte_[inner][iSeed]); }
unsigned int nbitsvmte(unsigned int inner, unsigned int iSeed) const {
if (combined_) {
return nbitsvmtecm_[inner][iSeed];
}
return nbitsvmte_[inner][iSeed];
}
unsigned int nvmte(unsigned int inner, unsigned int iSeed) const { return (1 << nbitsvmte(inner,iSeed)); }

unsigned int nbitsvmme(unsigned int layerdisk) const { return nbitsvmme_[layerdisk]; }
unsigned int nvmme(unsigned int layerdisk) const { return (1 << nbitsvmme_[layerdisk]); }
Expand Down Expand Up @@ -109,8 +114,13 @@ namespace trklet {

double bendcutte(unsigned int inner, unsigned int iSeed) const { return bendcutte_[inner][iSeed]; }
double bendcutme(unsigned int layerdisk) const { return bendcutme_[layerdisk]; }
double nfinephi(unsigned int inner, unsigned int iSeed) const { return nfinephi_[inner][iSeed]; }
double nphireg(unsigned int inner, unsigned int iSeed) const { return nphireg_[inner][iSeed]; }
int nfinephi(unsigned int inner, unsigned int iSeed) const { return nfinephi_[inner][iSeed]; }
double nphireg(unsigned int inner, unsigned int iSeed) const {
if (combined_) {
return nphiregcm_[inner][iSeed];
}
return nphireg_[inner][iSeed];
}
double lutwidthtab(unsigned int inner, unsigned int iSeed) const { return lutwidthtab_[inner][iSeed]; }
double lutwidthtabextended(unsigned int inner, unsigned int iSeed) const {
return lutwidthtabextended_[inner][iSeed];
Expand Down Expand Up @@ -151,6 +161,7 @@ namespace trklet {

bool writeMem() const { return writeMem_; }
bool writeTable() const { return writeTable_; }
std::string tablePath() const { return tablePath_; }

bool writeVerilog() const { return writeVerilog_; }
bool writeHLS() const { return writeHLS_; }
Expand Down Expand Up @@ -384,6 +395,11 @@ namespace trklet {
{{3, 2, 3, 3, 2, 2, 2, 2, 3, 3, 2, 2}},
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1}}}};

std::array<std::array<unsigned int, N_SEED>, 3> nbitsvmtecm_{
{{{2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 3, 2}}, // (3 = #stubs/triplet, only row 1+2 used for tracklet)
{{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2}},
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1}}}};

std::array<std::array<double, 8>, 2> bendcutte_{
{{{1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25}}, //inner (2 = #stubs/tracklet)
{{1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25}}}}; //outer
Expand Down Expand Up @@ -481,12 +497,19 @@ namespace trklet {
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3}}}}; //outermost (triplets only)

//These are the number of bits used for the VM regions in the TE by seedindex
//FIXME not independed nbitsvmte
std::array<std::array<unsigned int, N_SEED>, 3> nphireg_{
{{{5, 4, 4, 4, 4, 4, 4, 3, 4, 4, 5, 4}}, //inner
{{5, 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4}}, //outer
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4}}}}; //outermost (triplets only)

std::array<std::array<unsigned int, N_SEED>, 3> lutwidthtab_{{{{10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 11, 0}},
//For combined modules
std::array<std::array<unsigned int, N_SEED>, 3> nphiregcm_{
{{{5, 4, 4, 4, 4, 4, 4, 3, 4, 4, 5, 4}}, //inner
{{5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4}}, //outer
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4}}}}; //outermost (triplets only)

std::array<std::array<unsigned int, N_SEED>, 3> lutwidthtab_{{{{10, 10, 10, 10, 9, 9, 10, 10, 0, 0, 11, 0}},
{{6, 6, 6, 6, 10, 10, 10, 10, 0, 0, 6, 0}},
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6}}}};

Expand Down Expand Up @@ -576,18 +599,18 @@ namespace trklet {
//Offset to the maximum number of steps in each processing step. Set to 0 for standard
//trunction. Set to large value, e.g. 10000 to remove truncation
unsigned int maxstepoffset_{10000};

//Default number of processing steps for one event
std::unordered_map<std::string, unsigned int> maxstep_{{"Link", 108},
{"MC", 108},
{"MC", 107},
{"ME", 108},
{"MP", 108},
{"PR", 108},
{"TC", 108},
{"TE", 108},
{"PR", 103},
{"TC", 107},
{"TE", 101},
{"TP", 108},
{"TRE", 108},
{"VMR", 108}};
{"VMR", 101}};

// If set to true this will generate debub printout in text files
std::unordered_map<std::string, bool> writeMonitorData_{{"IL", false},
Expand All @@ -598,7 +621,8 @@ namespace trklet {
{"Seeds", false},
{"FT", false},
{"Residuals", false},
{"MC", false},
{"MC", false},
{"MP", false},
{"ME", false},
{"AP", false},
{"VMP", false},
Expand Down Expand Up @@ -636,8 +660,9 @@ namespace trklet {
bool warnNoDer_{false}; //If true will print out warnings about missing track fit derivatives

bool writeMem_{false}; //If true will print out content of memories to files
bool writeTable_{false}; //IF true will print out content of LUTs to files

bool writeTable_{false}; //If true will print out content of LUTs to files
std::string tablePath_{"../data/LUTs/"}; //path to writing LUTs

// Write various lookup tables and autogenerated code (from iMath)
bool writeVerilog_{false}; //Write out auto-generated Verilog mudules used by TCs
bool writeHLS_{false}; //Write out auto-generated HLS mudules used by TCs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,6 @@ namespace trklet {

int TCIndex_;

double phioffset_;

int layer_;
int disk_;

TrackletParametersMemory* trackletpars_;

//First index is layer/disk second is phi region
Expand Down
77 changes: 77 additions & 0 deletions L1Trigger/TrackFindingTracklet/interface/TrackletEngineUnit.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#ifndef L1Trigger_TrackFindingTracklet_interface_TrackletEngineUnit_h
#define L1Trigger_TrackFindingTracklet_interface_TrackletEngineUnit_h

#include "L1Trigger/TrackFindingTracklet/interface/VMStubsTEMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/CircularBuffer.h"

#include <cassert>
#include <vector>


namespace trklet {

class Settings;
class Stub;
class L1TStub;
class FPGAWord;

struct TEData{
const Stub* stub_;
int start_;
int rzbinfirst_;
int rzdiffmax_;
int innerfinephi_;
FPGAWord innerbend_;
std::vector< std::tuple<int, int, int> > regions_; // next z/r bin; phi-region; nstub
};


class TrackletEngineUnit {
public:
TrackletEngineUnit(const Settings* const settings, unsigned int nbitsfinephi, unsigned int layerdisk2, unsigned int iSeed, unsigned int nbitsfinephiediff, unsigned int iAllStub, std::vector<bool> pttableinner, std::vector<bool> pttableouter, VMStubsTEMemory* outervmstubs);

~TrackletEngineUnit() = default;

void init(const TEData& tedata);

bool empty() const { return candpairs_.empty(); }

std::pair<const Stub*, const Stub*> read() { return candpairs_.read(); }

std::pair<const Stub*, const Stub*> peek() const { return candpairs_.peek(); }

bool idle() const { return idle_; }

void reset();

void step();

private:
VMStubsTEMemory* outervmstubs_;
TEData tedata_;
const Settings* settings_;
unsigned int nbitsfinephi_;
unsigned int layerdisk2_;
unsigned int iSeed_;
unsigned int nbitsfinephidiff_;

unsigned int iAllStub_;

//unsigned int memory slot
unsigned int nreg_;
unsigned int istub_;
unsigned int ireg_;
unsigned int next_;
unsigned int nstub_;

bool idle_;

std::vector<bool> pttableinner_;
std::vector<bool> pttableouter_;

//save the candidate matches
CircularBuffer<std::pair<const Stub*, const Stub*> > candpairs_;
}; // TrackletEngineUnit

}; // namespace trklet
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ namespace trklet {
Timer TETimer_;
Timer TEDTimer_;
Timer TRETimer_;
Timer TPTimer_;
Timer TCTimer_;
Timer TCDTimer_;
Timer PRTimer_;
Expand Down
45 changes: 34 additions & 11 deletions L1Trigger/TrackFindingTracklet/interface/TrackletProcessor.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,22 @@
#define L1Trigger_TrackFindingTracklet_interface_TrackletProcessor_h

#include "L1Trigger/TrackFindingTracklet/interface/TrackletCalculatorBase.h"
#include "L1Trigger/TrackFindingTracklet/interface/VMStubsTEMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/StubPairsMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletProjectionsMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/AllStubsMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/VMRouterTable.h"
#include "L1Trigger/TrackFindingTracklet/interface/CircularBuffer.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletEngineUnit.h"


#include <vector>
#include <tuple>
#include <map>

namespace trklet {

class Settings;
class Globals;
class MemoryBase;
class AllStubsMemory;
class VMStubsTEMemory;

class TrackletProcessor : public TrackletCalculatorBase {
public:
Expand All @@ -32,27 +35,47 @@ namespace trklet {

void execute();

void setVMPhiBin();

void writeTETable();

void buildLUT();

private:
int iTC_;
int iAllStub_;

VMStubsTEMemory* outervmstubs_;

// istub imem start imem end imem
std::vector<std::tuple<CircularBuffer<TEData>, unsigned int , unsigned int, unsigned int, unsigned int> > tedatabuffers_;

std::vector<VMStubsTEMemory*> innervmstubs_;
std::vector<VMStubsTEMemory*> outervmstubs_;
std::vector<TrackletEngineUnit> teunits_;


std::vector<AllStubsMemory*> innerallstubs_;
std::vector<AllStubsMemory*> outerallstubs_;

bool extra_;

std::map<unsigned int, std::vector<bool> > phitable_;
std::map<unsigned int, std::vector<bool> > pttableinner_;
std::map<unsigned int, std::vector<bool> > pttableouter_;

std::vector<bool> pttableinnernew_;
std::vector<bool> pttableouternew_;

std::vector<std::vector<bool> > useregion_;

int nbitsfinephi_;
int nbitsfinephidiff_;

int innerphibits_;
int outerphibits_;

unsigned int nbitszfinebintable_;
unsigned int nbitsrfinebintable_;

unsigned int nbitsrzbin_;


VMRouterTable vmrtable_;

};

}; // namespace trklet
Expand Down
Loading

0 comments on commit 4c616ef

Please sign in to comment.