|
|
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;
234 FPGAWord(rzfine, 3,
true, __LINE__, __FILE__),
241 if (ivmMinus != ivmPlus) {
249 unsigned int iseed = ivmstubTEPHI.seednumber;
250 unsigned int inner = ivmstubTEPHI.stubposition;
267 if (stub->
r().
value() < 10) {
268 lutval = 8 * (1 + (stub->
r().
value() >> 2));
281 if (iseed < 6 || iseed > 7) {
292 lutval += (lutval2 << 10);
298 FPGAWord binlookup(lutval, lutwidth,
true, __LINE__, __FILE__);
300 if (binlookup.
value() < 0)
310 unsigned int tmp = binlookup.
value() & 7;
311 binlookup.
set(
tmp, 3,
true, __LINE__, __FILE__);
316 VMStubTE tmpstub(stub, finephi, stub->
bend(), binlookup, allStubIndex);
318 unsigned int nmem = ivmstubTEPHI.vmstubmem[ivmte].size();
322 for (
unsigned int l = 0;
l < nmem;
l++) {
325 << ivmstubTEPHI.vmstubmem[ivmte][
l]->getName() <<
" inner=" <<
inner
329 ivmstubTEPHI.vmstubmem[ivmte][
l]->addVMStub(tmpstub);
331 ivmstubTEPHI.vmstubmem[ivmte][
l]->addVMStub(tmpstub,
bin);
static const std::string input
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_
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
void init(unsigned int layerdisk)
const FPGAWord & phicorr() const
unsigned int vmrlutzbits(unsigned int layerdisk) const
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
double nfinephi(unsigned int inner, unsigned int iSeed) const
void setAllStubIndex(unsigned int index)
void addOutput(MemoryBase *memory, std::string output) override
unsigned int nbendbitsmedisk() const