|
|
Go to the documentation of this file.
37 if (
output.substr(0, 10) ==
"allstubout") {
44 if (
output.substr(0, 12) ==
"vmstuboutPHI") {
45 char seedtype =
memory->getName().substr(11, 1)[0];
46 unsigned int pos = 12;
47 int vmbin =
memory->getName().substr(
pos, 1)[0] -
'0';
50 if (
memory->getName().substr(
pos, 1)[0] !=
'n') {
51 vmbin = vmbin * 10 +
memory->getName().substr(
pos, 1)[0] -
'0';
57 unsigned int inner = 1;
58 if (
memory->getName().substr(3, 2) ==
"TE") {
74 }
else if (seedtype <
'M') {
79 }
else if (seedtype <=
'Z') {
86 }
else if (seedtype < 'o' && seedtype >=
'a') {
91 }
else if (seedtype >
'o' && seedtype <=
'z') {
98 throw cms::Exception(
"LogicError") << __FILE__ <<
" " << __LINE__ <<
" Invalid seeding!";
107 if (seedindex == -1) {
109 vector<VMStubsTEMemory*> avectmp;
116 }
else if (
memory->getName().substr(3, 2) ==
"ME") {
121 throw cms::Exception(
"LogicError") << __FILE__ <<
" " << __LINE__ <<
" should never get here!";
127 throw cms::Exception(
"BadConfig") << __FILE__ <<
" " << __LINE__ <<
" Could not find output : " <<
output;
135 if (
input ==
"stubin") {
138 if (tmp1 !=
nullptr) {
143 throw cms::Exception(
"BadConfig") << __FILE__ <<
" " << __LINE__ <<
" Could not find input : " <<
input;
147 unsigned int allStubCounter = 0;
151 for (
unsigned int i = 0;
i < stubinput->nStubs();
i++) {
154 if (allStubCounter > 127)
156 Stub* stub = stubinput->getStub(
i);
159 bool negdisk = (stub->
disk().
value() < 0);
163 FPGAWord allStubIndex(allStubCounter & 127, 7,
true, __LINE__, __FILE__);
174 allstub->addStub(stub);
185 unsigned int ivmPlus = ivm;
189 unsigned int ivmMinus = ivm;
190 if (extrabits == 0 && ivm != 0)
202 indexr = stub->
r().
value();
220 int vmbin = melut >> 3;
223 int rzfine = melut & 7;
232 FPGAWord(rzfine, 3,
true, __LINE__, __FILE__),
239 if (ivmMinus != ivmPlus) {
247 unsigned int iseed = ivmstubTEPHI.seednumber;
248 unsigned int inner = ivmstubTEPHI.stubposition;
265 if (stub->
r().
value() < 10) {
266 lutval = 8 * (1 + (stub->
r().
value() >> 2));
279 if (iseed < 6 || iseed > 7) {
290 lutval += (lutval2 << 10);
296 FPGAWord binlookup(lutval, lutwidth,
true, __LINE__, __FILE__);
298 if (binlookup.
value() < 0)
308 unsigned int tmp = binlookup.
value() & 7;
309 binlookup.
set(
tmp, 3,
true, __LINE__, __FILE__);
314 VMStubTE tmpstub(stub, finephi, stub->
bend(), binlookup, allStubIndex);
316 unsigned int nmem = ivmstubTEPHI.vmstubmem[ivmte].size();
320 for (
unsigned int l = 0;
l < nmem;
l++) {
323 << ivmstubTEPHI.vmstubmem[ivmte][
l]->getName() <<
" inner=" <<
inner
327 ivmstubTEPHI.vmstubmem[ivmte][
l]->addVMStub(tmpstub);
329 ivmstubTEPHI.vmstubmem[ivmte][
l]->addVMStub(tmpstub,
bin);
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_
int lookupinneroverlap(int zbin, int rbin)
const FPGAWord & r() const
int lookup(int zbin, int rbin)
const FPGAWord & disk() const
FPGAWord iphivmFineBins(int VMbits, int finebits) const
const FPGAWord & z() const
double lutwidthtabextended(unsigned int inner, unsigned int iSeed) const
unsigned int overlapbits_
unsigned int nbitsvmme(unsigned int layerdisk) const
int lookupinnerThird(int zbin, int rbin)
std::vector< VMStubsTEPHI > vmstubsTEPHI_
std::vector< AllStubsMemory * > allstubs_
int lookupinner(int zbin, int rbin)
void initLayerDisk(unsigned int pos, int &layer, int &disk)
std::vector< InputLinkMemory * > stubinputs_
int nfinephi(unsigned int inner, unsigned int iSeed) const
unsigned int nvmme(unsigned int layerdisk) const
double rmindiskl3overlapvm() 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
unsigned int vmrlutzbits(unsigned int layerdisk) const
Log< level::Info, true > LogVerbatim
void addInput(MemoryBase *memory, std::string input) override
std::string const & getName() const
unsigned int nvmte(unsigned int inner, unsigned int iSeed) const
bool debugTracklet() const
std::vector< VMStubsMEMemory * > vmstubsMEPHI_
unsigned int maxStep(std::string module) const
void setAllStubIndex(unsigned int index)
void addOutput(MemoryBase *memory, std::string output) override
unsigned int nbendbitsmedisk() const