|
|
Go to the documentation of this file.
39 if (
output.substr(0, 10) ==
"allstubout") {
50 if (
output.substr(0, 9) ==
"vmstubout") {
51 unsigned int pos = 12;
52 int vmbin =
memory->getName().substr(
pos, 1)[0] -
'0';
55 if (
memory->getName().substr(
pos, 1)[0] !=
'n') {
56 vmbin = vmbin * 10 +
memory->getName().substr(
pos, 1)[0] -
'0';
60 if (
memory->getName().substr(3, 2) ==
"TE") {
72 if (seedindex == -1) {
74 vector<VMStubsTEMemory*> vectmp;
81 }
else if (
memory->getName().substr(3, 2) ==
"ME") {
88 throw cms::Exception(
"LogicError") << __FILE__ <<
" " << __LINE__ <<
" memory: " <<
memory->getName()
89 <<
" => should never get here!";
95 throw cms::Exception(
"BadConfig") << __FILE__ <<
" " << __LINE__ <<
" Could not find output : " <<
output;
103 if (
input ==
"stubin") {
106 if (tmp1 !=
nullptr) {
111 throw cms::Exception(
"BadConfig") << __FILE__ <<
" " << __LINE__ <<
" Could not find input : " <<
input;
115 unsigned int allStubCounter = 0;
119 for (
unsigned int i = 0;
i < stubinput->nStubs();
i++) {
122 if (allStubCounter > 127)
125 Stub* stub = stubinput->getStub(
i);
129 bool negdisk = (stub->
disk().
value() < 0);
133 FPGAWord allStubIndex(allStubCounter & 127, 7,
true, __LINE__, __FILE__);
147 char memtype = allstub.first;
148 if ((memtype ==
'R' && iphipos < 5) || (memtype ==
'L' && iphipos >= 3) || (memtype ==
'A' && iphipos < 4) ||
149 (memtype ==
'B' && iphipos >= 4) || (memtype ==
'E' && iphipos >= 4) || (memtype ==
'F' && iphipos < 4) ||
150 (memtype ==
'C' && iphipos >= 4) || (memtype ==
'D' && iphipos < 4))
152 allstub.second->addStub(stub);
161 unsigned int ivmPlus = ivm;
165 unsigned int ivmMinus = ivm;
166 if (extrabits == 0 && ivm != 0)
178 indexr = stub->
r().
value();
216 if (ivmMinus != ivmPlus) {
225 unsigned int iseed = ivmstubTEPHI.seednumber;
240 FPGAWord binlookup(lutval, lutwidth,
true, __LINE__, __FILE__);
242 if (binlookup.
value() < 0)
250 unsigned int tmp = binlookup.
value() & 7;
251 binlookup.
set(
tmp, 3,
true, __LINE__, __FILE__);
255 VMStubTE tmpstub(stub, finephi, stub->
bend(), binlookup, allStubIndex);
257 unsigned int nmem = ivmstubTEPHI.vmstubmem.size();
260 for (
unsigned int l = 0;
l < nmem;
l++) {
263 <<
" bin=" <<
bin <<
" ivmte " << ivmte <<
" finephi " << finephi.
value()
std::vector< std::pair< char, AllStubsMemory * > > allstubs_
std::vector< VMStubsMEMemory * > vmstubsMEPHI_
static const std::string input
void init(unsigned int layerdisk, std::string const &name)
int lookupdisk(int zbin, int rbin)
const FPGAWord & bend() const
unsigned int vmrlutrbits(unsigned int layerdisk) const
unsigned int nbitsallstubs(unsigned int layerdisk) const
void set(int value, int nbits, bool positive=true, int line=-1, const char *file=nullptr)
double lutwidthtab(unsigned int inner, unsigned int iSeed) const
Settings const & settings_
const FPGAWord & r() const
void addInput(MemoryBase *memory, std::string input) override
unsigned int overlapbits_
int lookup(int zbin, int rbin)
const FPGAWord & disk() const
FPGAWord iphivmFineBins(int VMbits, int finebits) const
const FPGAWord & z() const
unsigned int nbitsvmme(unsigned int layerdisk) const
void initLayerDisk(unsigned int pos, int &layer, int &disk)
int nfinephi(unsigned int inner, unsigned int iSeed) const
std::vector< VMStubsTEPHICM > vmstubsTEPHI_
unsigned int NLONGVMBINS() const
unsigned int nvmme(unsigned int layerdisk) const
double nphireg(unsigned int inner, unsigned int iSeed) const
void setAllStubIndex(int nstub)
unsigned int nbitsvmte(unsigned int inner, unsigned int iSeed) const
const FPGAWord & phicorr() const
constexpr unsigned int NFINERZBITS
unsigned int vmrlutzbits(unsigned int layerdisk) const
Log< level::Info, true > LogVerbatim
std::string const & getName() const
void addOutput(MemoryBase *memory, std::string output) override
unsigned int nvmte(unsigned int inner, unsigned int iSeed) const
bool debugTracklet() const
unsigned int maxStep(std::string module) const
void setAllStubIndex(unsigned int index)
std::vector< InputLinkMemory * > stubinputs_
unsigned int nbendbitsmedisk() const