246 unsigned int nDataMuons = 0;
247 unsigned int nEmulMuons = 0;
248 int dataMuonArray[8][10], emuMuonArray[8][10];
250 for (
int par = 0; par < 3; par++) {
251 dataMuonArray[
muon][par] = 0;
252 emuMuonArray[
muon][par] = 0;
254 emuMuonArray[
muon][3] = -1;
255 dataMuonArray[
muon][3] = -1;
257 emuMuonArray[
muon][4] = 7;
258 dataMuonArray[
muon][4] = 7;
260 for (
int par2 = 5; par2 < 10; par2++) {
261 emuMuonArray[
muon][par2] = -1;
262 dataMuonArray[
muon][par2] = -1;
273 LogWarning(
"L1TdeCSCTF") <<
"\n No valid [data tracks] product found: "
274 <<
" L1CSCTrackCollection" << endl;
278 for (L1CSCTrackCollection::const_iterator trk = tracks.
product()->begin(); trk != tracks.
product()->end(); trk++) {
281 if ((trk->first.BX() < 2) && (trk->first.BX() > -1)) {
284 dataMuonArray[nDataMuons][0] = trk->first.ptLUTAddress();
285 dataMuonArray[nDataMuons][1] = trk->first.sector();
286 dataMuonArray[nDataMuons][2] = trk->first.endcap();
287 dataMuonArray[nDataMuons][8] = trk->first.outputLink();
288 dataMuonArray[nDataMuons][4] = trk->first.BX();
289 dataMuonArray[nDataMuons][5] = trk->first.rank();
290 dataMuonArray[nDataMuons][6] = trk->first.localPhi();
291 dataMuonArray[nDataMuons][7] = trk->first.eta_packed();
292 dataMuonArray[nDataMuons][9] = trk->first.modeExtended();
305 LogWarning(
"L1TdeCSCTF") <<
"\n No valid [emulator tracks] product found: "
306 <<
" L1CSCTrackCollection" << endl;
310 for (L1CSCTrackCollection::const_iterator trk = tracks.
product()->begin(); trk != tracks.
product()->end(); trk++) {
313 if ((trk->first.BX() < 2) && (trk->first.BX() > -1)) {
316 emuMuonArray[nEmulMuons][0] = trk->first.ptLUTAddress();
317 emuMuonArray[nEmulMuons][1] = trk->first.sector();
318 emuMuonArray[nEmulMuons][2] = trk->first.endcap();
319 emuMuonArray[nEmulMuons][4] = trk->first.BX();
320 emuMuonArray[nEmulMuons][5] = trk->first.rank();
321 emuMuonArray[nEmulMuons][6] = trk->first.localPhi();
322 emuMuonArray[nEmulMuons][7] = trk->first.eta_packed();
323 emuMuonArray[nEmulMuons][9] = trk->first.modeExtended();
329 if ((nDataMuons != 0) || (nEmulMuons != 0)) {
335 if (nDataMuons == nEmulMuons) {
337 for (
unsigned int mu1 = 0; mu1 < nDataMuons; mu1++) {
338 for (
unsigned int mu2 = 0; mu2 < nEmulMuons; mu2++)
339 if ((emuMuonArray[mu2][1] == dataMuonArray[mu1][1]) && (emuMuonArray[mu2][2] == dataMuonArray[mu1][2])) {
340 if (emuMuonArray[mu2][0] == dataMuonArray[mu1][0]) {
341 emuMuonArray[mu2][3] = mu1;
342 dataMuonArray[mu1][3] = 1;
347 for (
unsigned int c2a = 0; c2a < nEmulMuons; c2a++) {
348 if (emuMuonArray[c2a][3] == -1) {
349 for (
unsigned int cor_a = 0; cor_a < nDataMuons; cor_a++) {
350 if ((dataMuonArray[cor_a][1] == emuMuonArray[c2a][1]) &&
351 (dataMuonArray[cor_a][2] == emuMuonArray[c2a][2]))
353 emuMuonArray[c2a][3] = cor_a;
354 dataMuonArray[cor_a][3] = 1;
360 bool multiMap =
false;
361 if (nEmulMuons > 1) {
362 for (
unsigned int c1a = 0; c1a < (nEmulMuons - 1); c1a++) {
363 for (
unsigned int c1b = (c1a + 1); c1b < nEmulMuons; c1b++) {
364 if (emuMuonArray[c1a][3] == emuMuonArray[c1b][3]) {
375 for (
unsigned int mu3 = 0; mu3 < nEmulMuons; mu3++) {
376 int mapping = emuMuonArray[mu3][3];
377 if ((mapping != -1) && (multiMap ==
false)) {
379 int emuPhi12 = (0x0000ff & emuMuonArray[mu3][0]);
380 int datPhi12 = (0x0000ff & dataMuonArray[mapping][0]);
381 int emuPhi23 = (0x000f00 & emuMuonArray[mu3][0]) >> 8;
382 int datPhi23 = (0x000f00 & dataMuonArray[mapping][0]) >> 8;
383 int emuEta = (0x00f000 & emuMuonArray[mu3][0]) >> 12;
384 int datEta = (0x00f000 & dataMuonArray[mapping][0]) >> 12;
387 int emuFrSin = (0xf00000 & emuMuonArray[mu3][0]) >> 20;
388 int datFrSin = (0xf00000 & dataMuonArray[mapping][0]) >> 20;
390 int emuQual = emuMuonArray[mu3][5] >> 5;
391 int datQual = dataMuonArray[mapping][5] >> 5;
392 int emuPt = 0x1f & emuMuonArray[mu3][5];
393 int datPt = 0x1f & dataMuonArray[mapping][5];
394 int emuModeExtended = emuMuonArray[mu3][9];
395 int datModeExtended = dataMuonArray[mapping][9];
401 if (emuModeExtended == datModeExtended) {
412 if (dataMuonArray[mapping][8] == 1)
419 phiComp->
Fill(dataMuonArray[mapping][6], emuMuonArray[mu3][6]);
420 etaComp->
Fill(dataMuonArray[mapping][7], emuMuonArray[mu3][7]);
436 for (
int dJ = 0; dJ < 7; dJ++) {
437 for (
int dK = 0; dK < 15; dK++) {
438 eDtStub[dJ][dK] = -55;
439 dDtStub[dJ][dK] = -55;
440 dDtStub[7][dK] = -55;
450 LogWarning(
"L1TdeCSCTF") <<
"\n No valid [Data Stubs] product found: "
451 <<
" L1CSCTrackCollection" << endl;
457 vector<csctf::TrackStub> stuList = stub_list.
get();
458 vector<csctf::TrackStub>::const_iterator stu = stuList.begin();
459 for (; stu != stuList.end(); stu++) {
460 if (dDtCounter >= 15)
462 if ((stu->BX() > 4) && (stu->BX() < 9)) {
463 dDtStub[0][dDtCounter] = stu->phiPacked();
464 dDtStub[1][dDtCounter] = stu->getQuality();
465 dDtStub[2][dDtCounter] = stu->endcap();
466 dDtStub[3][dDtCounter] = stu->sector();
467 dDtStub[4][dDtCounter] = stu->subsector();
480 LogWarning(
"L1TdeCSCTF") <<
"\n No valid [Data Stubs] product found: "
481 <<
" L1CSCTrackCollection" << endl;
485 vector<csctf::TrackStub> emuList = emulStub.
get();
486 vector<csctf::TrackStub>::const_iterator eStu = emuList.begin();
487 for (; eStu != emuList.end(); eStu++) {
488 if (eDtCounter >= 15)
490 if ((eStu->BX() > 4) && (eStu->BX() < 9)) {
491 eDtStub[0][eDtCounter] = eStu->phiPacked();
492 eDtStub[1][eDtCounter] = eStu->getQuality();
493 eDtStub[2][eDtCounter] = eStu->endcap();
494 eDtStub[3][eDtCounter] = eStu->sector();
495 eDtStub[4][eDtCounter] = eStu->subsector();
503 for (
int eS = 0; eS < eDtCounter; eS++) {
505 for (
int dS = 0; dS < dDtCounter; dS++) {
507 if (eDtStub[2][eS] == dDtStub[2][dS]) {
509 if (eDtStub[3][eS] == dDtStub[3][dS]) {
511 if (eDtStub[4][eS] == dDtStub[4][dS]) {
513 if ((eDtStub[0][eS] == dDtStub[0][dS]) && (eDtStub[1][eS] == dDtStub[1][dS]) && (eDtStub[6][eS] != 1) &&
514 (dDtStub[6][dS] != 1)) {
528 for (
int eS2 = 0; eS2 < eDtCounter; eS2++) {
529 for (
int dS2 = 0; dS2 < dDtCounter; dS2++) {
531 if ((eDtStub[2][eS2] == dDtStub[2][dS2]) && (eDtStub[3][eS2] == dDtStub[3][dS2]) &&
532 (eDtStub[4][eS2] == dDtStub[4][dS2])) {
534 if (((dDtStub[7][eS2] == -55) || (dDtStub[7][dS2] > (
abs(eDtStub[0][eS2] - dDtStub[0][dS2])))) &&
535 (eDtStub[6][eS2] != 1) && (dDtStub[6][dS2] != 1)) {
537 dDtStub[5][dS2] = eS2;
539 eDtStub[5][eS2] = dS2;
541 dDtStub[7][dS2] =
abs(eDtStub[0][eS2] - dDtStub[0][dS2]);
548 bool dtSMulti =
false;
551 for (
int eS3a = 0; eS3a < eDtCounter - 1; eS3a++)
552 for (
int eS3b = eS3a + 1; eS3b < eDtCounter; eS3b++) {
553 if (eDtStub[5][eS3a] == eDtStub[5][eS3b])
555 if (eDtStub[5][eS3a] == -55 || eDtStub[5][eS3b] == -55)
560 for (
int dS3a = 0; dS3a < dDtCounter - 1; dS3a++)
561 for (
int dS3b = dS3a + 1; dS3b < dDtCounter; dS3b++) {
562 if (dDtStub[5][dS3a] == dDtStub[5][dS3b])
564 if (dDtStub[5][dS3a] == -55 || dDtStub[5][dS3b] == -55)
572 if (dtSMulti ==
false && dtUnmap == 0) {
573 for (
int phil = 0; phil < eDtCounter; phil++) {
574 if (eDtStub[6][phil] == 1 || eDtStub[6][phil] == 2) {
575 int indexFil = eDtStub[3][phil] * 2 + eDtStub[4][phil] - 1;
576 dtStubPhi->
Fill(eDtStub[0][phil], dDtStub[0][eDtStub[5][phil]]);
578 if (eDtStub[0][phil] != dDtStub[0][eDtStub[5][phil]])
MonitorElement * etaComp_1d
MonitorElement * qualComp
std::vector< T > get() const
std::unique_ptr< CSCTFDTReceiver > my_dtrc
edm::EDGetTokenT< L1CSCTrackCollection > emulTrackProducer
edm::EDGetTokenT< L1CSCTrackCollection > dataTrackProducer
MonitorElement * qualComp_1d
constexpr bool isUninitialized() const noexcept
MonitorElement * dtStubPhi
auto const & tracks
cannot be loose
MonitorElement * phiComp_1d
edm::EDGetTokenT< L1MuDTChambPhContainer > emulStubProducer
MonitorElement * ptComp_1d
Abs< T >::type abs(const T &t)
void push_many(const std::vector< T > &data)
MonitorElement * pt1Comp_1d
edm::EDGetTokenT< CSCTriggerContainer< csctf::TrackStub > > dataStubProducer
MonitorElement * occComp_1d
MonitorElement * dtStubPhi_1d
T const * product() const
MonitorElement * pt5Comp_1d
MonitorElement * badDtStubSector
MonitorElement * pt4Comp_1d
MonitorElement * pt2Comp_1d
MonitorElement * pt3Comp_1d
Log< level::Warning, false > LogWarning