264 unsigned int nDataMuons = 0;
265 unsigned int nEmulMuons = 0;
266 int dataMuonArray[8][10], emuMuonArray[8][10];
269 for(
int par=0; par<3; par++)
271 dataMuonArray[
muon][par]=0;
272 emuMuonArray[
muon][par] =0;
274 emuMuonArray[
muon][3] =-1;
275 dataMuonArray[
muon][3]=-1;
277 emuMuonArray[
muon][4]=7;
278 dataMuonArray[
muon][4]=7;
280 for(
int par2=5; par2<10; par2++)
282 emuMuonArray[
muon][par2]= -1;
283 dataMuonArray[
muon][par2]= -1;
296 <<
"\n No valid [data tracks] product found: "
297 <<
" L1CSCTrackCollection"
303 for(L1CSCTrackCollection::const_iterator trk=tracks.
product()->begin(); trk!=tracks.
product()->end(); trk++)
307 if ( (trk->first.BX() <2) && (trk->first.BX() > -1) )
311 dataMuonArray[nDataMuons][0] = trk->first.ptLUTAddress();
312 dataMuonArray[nDataMuons][1] = trk->first.sector();
313 dataMuonArray[nDataMuons][2] = trk->first.endcap();
314 dataMuonArray[nDataMuons][8] = trk->first.outputLink();
315 dataMuonArray[nDataMuons][4] = trk->first.BX();
316 dataMuonArray[nDataMuons][5] = trk->first.rank();
317 dataMuonArray[nDataMuons][6] = trk->first.localPhi();
318 dataMuonArray[nDataMuons][7] = trk->first.eta_packed();
319 dataMuonArray[nDataMuons][9] = trk->first.modeExtended();
334 <<
"\n No valid [emulator tracks] product found: "
335 <<
" L1CSCTrackCollection"
340 for(L1CSCTrackCollection::const_iterator trk=tracks.
product()->begin(); trk!=tracks.
product()->end(); trk++)
344 if((trk->first.BX() <2) && (trk->first.BX() >-1))
348 emuMuonArray[nEmulMuons][0] = trk->first.ptLUTAddress();
349 emuMuonArray[nEmulMuons][1] = trk->first.sector();
350 emuMuonArray[nEmulMuons][2] = trk->first.endcap();
351 emuMuonArray[nEmulMuons][4] = trk->first.BX();
352 emuMuonArray[nEmulMuons][5] = trk->first.rank();
353 emuMuonArray[nEmulMuons][6] = trk->first.localPhi();
354 emuMuonArray[nEmulMuons][7] = trk->first.eta_packed();
355 emuMuonArray[nEmulMuons][9] = trk->first.modeExtended();
361 if( (nDataMuons!=0)||(nEmulMuons!=0) ) {
367 if(nDataMuons==nEmulMuons)
370 for(
unsigned int mu1=0; mu1<nDataMuons; mu1++)
372 for(
unsigned int mu2=0; mu2<nEmulMuons; mu2++)
373 if((emuMuonArray[mu2][1]==dataMuonArray[mu1][1])&&(emuMuonArray[mu2][2]==dataMuonArray[mu1][2]))
375 if(emuMuonArray[mu2][0]==dataMuonArray[mu1][0])
377 emuMuonArray[mu2][3]=mu1;
378 dataMuonArray[mu1][3]=1;
383 for(
unsigned int c2a=0; c2a<nEmulMuons; c2a++)
385 if(emuMuonArray[c2a][3]==-1)
387 for(
unsigned int cor_a=0; cor_a<nDataMuons; cor_a++)
389 if( (dataMuonArray[cor_a][1]==emuMuonArray[c2a][1]) && (dataMuonArray[cor_a][2]==emuMuonArray[c2a][2]))
391 emuMuonArray[c2a][3]=cor_a;
392 dataMuonArray[cor_a][3]=1;
398 bool multiMap =
false;
401 for(
unsigned int c1a=0; c1a<(nEmulMuons-1); c1a++)
403 for(
unsigned int c1b=(c1a+1); c1b<nEmulMuons; c1b++)
405 if(emuMuonArray[c1a][3]==emuMuonArray[c1b][3])
417 for(
unsigned int mu3=0; mu3<nEmulMuons; mu3++)
419 int mapping = emuMuonArray[mu3][3];
420 if((mapping!=-1)&&(multiMap==
false))
423 int emuPhi12 = (0x0000ff & emuMuonArray[mu3][0]);
424 int datPhi12 = (0x0000ff & dataMuonArray[mapping][0]);
425 int emuPhi23 = (0x000f00 & emuMuonArray[mu3][0])>>8;
426 int datPhi23 = (0x000f00 & dataMuonArray[mapping][0])>>8;
427 int emuEta = (0x00f000 & emuMuonArray[mu3][0])>>12;
428 int datEta = (0x00f000 & dataMuonArray[mapping][0])>>12;
431 int emuFrSin = (0xf00000 & emuMuonArray[mu3][0])>>20;
432 int datFrSin = (0xf00000 & dataMuonArray[mapping][0])>>20;
434 int emuQual = emuMuonArray[mu3][5]>>5;
435 int datQual = dataMuonArray[mapping][5]>>5;
436 int emuPt = 0x1f & emuMuonArray[mu3][5];
437 int datPt = 0x1f & dataMuonArray[mapping][5];
438 int emuModeExtended = emuMuonArray[mu3][9];
439 int datModeExtended = dataMuonArray[mapping][9];
445 if(emuModeExtended==datModeExtended)
453 if(dataMuonArray[mapping][8]==1)
458 phiComp->
Fill(dataMuonArray[mapping][6],emuMuonArray[mu3][6]);
459 etaComp->
Fill(dataMuonArray[mapping][7],emuMuonArray[mu3][7]);
475 for(
int dJ=0; dJ<7; dJ++)
477 for(
int dK=0; dK<15; dK++)
479 eDtStub[dJ][dK] = -55;
480 dDtStub[dJ][dK] = -55;
481 dDtStub[7][dK] = -55;
493 <<
"\n No valid [Data Stubs] product found: "
494 <<
" L1CSCTrackCollection"
501 vector<csctf::TrackStub> stuList = stub_list.
get();
502 vector<csctf::TrackStub>::const_iterator stu= stuList.begin();
503 for(; stu!=stuList.end(); stu++)
507 if((stu->BX()>4) && (stu->BX()<9))
509 dDtStub[0][dDtCounter] = stu->phiPacked();
510 dDtStub[1][dDtCounter] = stu->getQuality();
511 dDtStub[2][dDtCounter] = stu->endcap();
512 dDtStub[3][dDtCounter] = stu->sector();
513 dDtStub[4][dDtCounter] = stu->subsector();
528 <<
"\n No valid [Data Stubs] product found: "
529 <<
" L1CSCTrackCollection"
534 vector<csctf::TrackStub> emuList = emulStub.
get();
535 vector<csctf::TrackStub>::const_iterator eStu=emuList.begin();
536 for(; eStu!=emuList.end(); eStu++)
540 if((eStu->BX()>4) && (eStu->BX()<9) )
542 eDtStub[0][eDtCounter] = eStu->phiPacked();
543 eDtStub[1][eDtCounter] = eStu->getQuality();
544 eDtStub[2][eDtCounter] = eStu->endcap();
545 eDtStub[3][eDtCounter] = eStu->sector();
546 eDtStub[4][eDtCounter] = eStu->subsector();
554 for(
int eS=0; eS<eDtCounter; eS++)
557 for(
int dS=0; dS<dDtCounter; dS++)
560 if(eDtStub[2][eS]==dDtStub[2][dS])
563 if(eDtStub[3][eS]==dDtStub[3][dS])
566 if(eDtStub[4][eS]==dDtStub[4][dS])
569 if( (eDtStub[0][eS]==dDtStub[0][dS]) && (eDtStub[1][eS]==dDtStub[1][dS]) && (eDtStub[6][eS]!=1) && (dDtStub[6][dS]!=1) )
584 for(
int eS2=0; eS2<eDtCounter; eS2++)
586 for(
int dS2=0; dS2<dDtCounter; dS2++)
589 if( (eDtStub[2][eS2]==dDtStub[2][dS2]) && (eDtStub[3][eS2]==dDtStub[3][dS2]) && (eDtStub[4][eS2]==dDtStub[4][dS2]) )
592 if( ((dDtStub[7][eS2]==-55) || (dDtStub[7][dS2]>(
abs(eDtStub[0][eS2]-dDtStub[0][dS2]))) ) && (eDtStub[6][eS2]!=1) && (dDtStub[6][dS2]!=1) )
595 dDtStub[5][dS2] = eS2;
597 eDtStub[5][eS2] = dS2;
599 dDtStub[7][dS2] =
abs(eDtStub[0][eS2]-dDtStub[0][dS2]);
606 bool dtSMulti =
false;
609 for(
int eS3a=0; eS3a<eDtCounter-1; eS3a++)
610 for(
int eS3b=eS3a+1; eS3b<eDtCounter; eS3b++)
612 if( eDtStub[5][eS3a]==eDtStub[5][eS3b] ) dtSMulti=
true;
613 if( eDtStub[5][eS3a]==-55 || eDtStub[5][eS3b]==-55 ) dtUnmap++;
617 for(
int dS3a=0; dS3a<dDtCounter-1; dS3a++)
618 for(
int dS3b=dS3a+1; dS3b<dDtCounter; dS3b++)
620 if( dDtStub[5][dS3a]==dDtStub[5][dS3b] ) dtSMulti=
true;
621 if( dDtStub[5][dS3a]==-55||dDtStub[5][dS3b]==-55 ) dtUnmap++;
628 if(dtSMulti==
false && dtUnmap==0)
630 for(
int phil=0; phil<eDtCounter; phil++)
632 if(eDtStub[6][phil]==1 || eDtStub[6][phil]==2)
634 int indexFil = eDtStub[3][phil]*2+eDtStub[4][phil]-1;
635 dtStubPhi->
Fill(eDtStub[0][phil], dDtStub[0][ eDtStub[5][phil] ]);
637 if( eDtStub[0][phil] != dDtStub[0][ eDtStub[5][phil] ])
MonitorElement * etaComp_1d
MonitorElement * qualComp
std::vector< T > get() const
edm::EDGetTokenT< L1CSCTrackCollection > emulTrackProducer
edm::EDGetTokenT< L1CSCTrackCollection > dataTrackProducer
MonitorElement * qualComp_1d
MonitorElement * dtStubPhi
MonitorElement * phiComp_1d
CSCTriggerContainer< csctf::TrackStub > process(const L1MuDTChambPhContainer *)
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
bool isUninitialized() const
MonitorElement * pt3Comp_1d
CSCTFDTReceiver * my_dtrc