45 return new Muon( *
this );
52 for (
int iC = 0; iC < nAll; ++iC){
63 for( std::vector<MuonChamberMatch>::const_iterator chamberMatch =
muMatches_.begin();
64 chamberMatch !=
muMatches_.end(); chamberMatch++ )
67 if(chamberMatch->rpcMatches.empty())
continue;
68 matches += chamberMatch->rpcMatches.size();
72 if(chamberMatch->segmentMatches.empty())
continue;
78 for( std::vector<MuonSegmentMatch>::const_iterator segmentMatch = chamberMatch->segmentMatches.begin();
79 segmentMatch != chamberMatch->segmentMatches.end(); segmentMatch++ )
100 if(segmentMatch->isMask(type)) {
116 for(
int it = 0; it < 8; ++it)
117 if (theStationMask & 1<<it)
125 unsigned int totMask(0);
126 unsigned int curMask(0);
128 for( std::vector<MuonChamberMatch>::const_iterator chamberMatch =
muMatches_.begin();
129 chamberMatch !=
muMatches_.end(); chamberMatch++ )
132 if(chamberMatch->rpcMatches.empty())
continue;
135 const int region = rollId.
region();
136 int rpcIndex = 1;
if (region!=0) rpcIndex = 2;
138 for( std::vector<MuonRPCHitMatch>::const_iterator rpcMatch = chamberMatch->rpcMatches.begin();
139 rpcMatch != chamberMatch->rpcMatches.end(); rpcMatch++ )
141 curMask = 1<<( (chamberMatch->station()-1)+4*(rpcIndex-1) );
144 if(!(totMask & curMask))
150 if(chamberMatch->segmentMatches.empty())
continue;
152 curMask = 1<<( (chamberMatch->station()-1)+4*(chamberMatch->detector()-1) );
154 if(!(totMask & curMask))
159 for( std::vector<MuonSegmentMatch>::const_iterator segmentMatch = chamberMatch->segmentMatches.begin();
160 segmentMatch != chamberMatch->segmentMatches.end(); segmentMatch++ )
164 curMask = 1<<( (chamberMatch->station()-1)+4*(chamberMatch->detector()-1) );
166 if(!(totMask & curMask))
173 curMask = 1<<( (chamberMatch->station()-1)+4*(chamberMatch->detector()-1) );
175 if(!(totMask & curMask))
183 curMask = 1<<( (chamberMatch->station()-1)+4*(chamberMatch->detector()-1) );
185 if(!(totMask & curMask))
190 if(segmentMatch->isMask(type)) {
191 curMask = 1<<( (chamberMatch->station()-1)+4*(chamberMatch->detector()-1) );
193 if(!(totMask & curMask))
209 for(
int it = 0; it < 10; ++it)
210 if (theRPCLayerMask & 1<<it)
218 unsigned int totMask(0);
219 unsigned int curMask(0);
220 for( std::vector<MuonChamberMatch>::const_iterator chamberMatch =
muMatches_.begin();
221 chamberMatch !=
muMatches_.end(); chamberMatch++ )
223 if(chamberMatch->rpcMatches.empty())
continue;
226 const int region = rollId.
region();
228 const int layer = rollId.
layer();
229 int rpcLayer = chamberMatch->station();
231 rpcLayer = chamberMatch->station()-1 + chamberMatch->station()*layer;
232 if ((chamberMatch->station()==2 && layer==2) || (chamberMatch->station()==4 && layer==1)) rpcLayer -= 1;
233 }
else rpcLayer += 6;
235 for( std::vector<MuonRPCHitMatch>::const_iterator rpcMatch = chamberMatch->rpcMatches.begin();
236 rpcMatch != chamberMatch->rpcMatches.end(); rpcMatch++ )
238 curMask = 1<<(rpcLayer-1);
241 if(!(totMask & curMask))
252 unsigned int totMask(0);
255 for(
int detectorIndex = 1; detectorIndex < 4; detectorIndex++ )
257 unsigned int curMask(0);
258 for( std::vector<MuonChamberMatch>::const_iterator chamberMatch =
muMatches_.begin();
259 chamberMatch !=
muMatches_.end(); chamberMatch++ )
261 if(!(chamberMatch->station()==
stationIndex && chamberMatch->detector()==detectorIndex))
continue;
263 float edgeX = chamberMatch->edgeX;
264 float edgeY = chamberMatch->edgeY;
265 if(edgeX<0 && fabs(edgeX)>fabs(distanceCut) &&
266 edgeY<0 && fabs(edgeY)>fabs(distanceCut))
271 if( ( fabs(edgeX) < fabs(distanceCut) && edgeY < fabs(distanceCut) ) ||
272 ( fabs(edgeY) < fabs(distanceCut) && edgeX < fabs(distanceCut) ) )
285 unsigned int totMask(0);
288 for(
int detectorIndex = 1; detectorIndex < 4; detectorIndex++ )
290 unsigned int curMask(0);
291 for( std::vector<MuonChamberMatch>::const_iterator chamberMatch =
muMatches_.begin();
292 chamberMatch !=
muMatches_.end(); chamberMatch++ )
294 if(!(chamberMatch->station()==
stationIndex && chamberMatch->detector()==detectorIndex))
continue;
296 float edgeX = chamberMatch->edgeX;
297 float edgeY = chamberMatch->edgeY;
298 float xErr = chamberMatch->xErr+0.000001;
299 float yErr = chamberMatch->yErr+0.000001;
300 if(edgeX<0 && fabs(edgeX/xErr)>fabs(sigmaCut) &&
301 edgeY<0 && fabs(edgeY/yErr)>fabs(sigmaCut))
306 if( ( fabs(edgeX/xErr) < fabs(sigmaCut) && edgeY/yErr < fabs(sigmaCut) ) ||
307 ( fabs(edgeY/yErr) < fabs(sigmaCut) && edgeX/xErr < fabs(sigmaCut) ) )
321 for( std::vector<MuonChamberMatch>::const_iterator chamberMatch =
muMatches_.begin();
322 chamberMatch !=
muMatches_.end(); chamberMatch++ )
324 if(chamberMatch->segmentMatches.empty())
continue;
325 if(!(chamberMatch->station()==station && chamberMatch->detector()==muonSubdetId))
continue;
328 segments += chamberMatch->segmentMatches.size();
332 for( std::vector<MuonSegmentMatch>::const_iterator segmentMatch = chamberMatch->segmentMatches.begin();
333 segmentMatch != chamberMatch->segmentMatches.end(); segmentMatch++ )
354 if(segmentMatch->isMask(type)) {
366 std::vector<const MuonChamberMatch*>
chambers;
367 for(std::vector<MuonChamberMatch>::const_iterator chamberMatch =
muMatches_.begin();
368 chamberMatch !=
muMatches_.end(); chamberMatch++)
369 if(chamberMatch->station()==station && chamberMatch->detector()==muonSubdetId)
370 chambers.push_back(&(*chamberMatch));
374 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*>
Muon::pair(
const std::vector<const MuonChamberMatch*> &
chambers,
379 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair(m,s);
381 if(chambers.empty())
return chamberSegmentPair;
382 for( std::vector<const MuonChamberMatch*>::const_iterator chamberMatch = chambers.begin();
383 chamberMatch != chambers.end(); chamberMatch++ )
385 if((*chamberMatch)->segmentMatches.empty())
continue;
387 return std::make_pair(*chamberMatch, &((*chamberMatch)->segmentMatches.front()));
389 for( std::vector<MuonSegmentMatch>::const_iterator segmentMatch = (*chamberMatch)->segmentMatches.begin();
390 segmentMatch != (*chamberMatch)->segmentMatches.end(); segmentMatch++ )
394 return std::make_pair(*chamberMatch, &(*segmentMatch));
398 return std::make_pair(*chamberMatch, &(*segmentMatch));
403 return std::make_pair(*chamberMatch, &(*segmentMatch));
405 if(segmentMatch->isMask(type))
406 return std::make_pair(*chamberMatch, &(*segmentMatch));
410 return chamberSegmentPair;
415 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
416 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
417 if(! chamberSegmentPair.second->hasPhi())
return 999999;
418 return chamberSegmentPair.first->x-chamberSegmentPair.second->x;
424 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
425 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
426 if(! chamberSegmentPair.second->hasZed())
return 999999;
427 return chamberSegmentPair.first->y-chamberSegmentPair.second->y;
432 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
433 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
434 if(! chamberSegmentPair.second->hasPhi())
return 999999;
435 return chamberSegmentPair.first->dXdZ-chamberSegmentPair.second->dXdZ;
441 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
442 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
443 if(! chamberSegmentPair.second->hasZed())
return 999999;
444 return chamberSegmentPair.first->dYdZ-chamberSegmentPair.second->dYdZ;
449 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
450 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
451 if(! chamberSegmentPair.second->hasPhi())
return 999999;
452 if(includeSegmentError)
453 return (chamberSegmentPair.first->x-chamberSegmentPair.second->x)/
sqrt(
pow(chamberSegmentPair.first->xErr,2)+
pow(chamberSegmentPair.second->xErr,2));
454 return (chamberSegmentPair.first->x-chamberSegmentPair.second->x)/chamberSegmentPair.first->xErr;
460 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
461 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
462 if(! chamberSegmentPair.second->hasZed())
return 999999;
463 if(includeSegmentError)
464 return (chamberSegmentPair.first->y-chamberSegmentPair.second->y)/
sqrt(
pow(chamberSegmentPair.first->yErr,2)+
pow(chamberSegmentPair.second->yErr,2));
465 return (chamberSegmentPair.first->y-chamberSegmentPair.second->y)/chamberSegmentPair.first->yErr;
470 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
471 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
472 if(! chamberSegmentPair.second->hasPhi())
return 999999;
473 if(includeSegmentError)
474 return (chamberSegmentPair.first->dXdZ-chamberSegmentPair.second->dXdZ)/
sqrt(
pow(chamberSegmentPair.first->dXdZErr,2)+
pow(chamberSegmentPair.second->dXdZErr,2));
475 return (chamberSegmentPair.first->dXdZ-chamberSegmentPair.second->dXdZ)/chamberSegmentPair.first->dXdZErr;
481 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
482 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
483 if(! chamberSegmentPair.second->hasZed())
return 999999;
484 if(includeSegmentError)
485 return (chamberSegmentPair.first->dYdZ-chamberSegmentPair.second->dYdZ)/
sqrt(
pow(chamberSegmentPair.first->dYdZErr,2)+
pow(chamberSegmentPair.second->dYdZErr,2));
486 return (chamberSegmentPair.first->dYdZ-chamberSegmentPair.second->dYdZ)/chamberSegmentPair.first->dYdZErr;
491 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
492 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
493 if(! chamberSegmentPair.second->hasPhi())
return 999999;
494 return chamberSegmentPair.second->x;
500 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
501 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
502 if(! chamberSegmentPair.second->hasZed())
return 999999;
503 return chamberSegmentPair.second->y;
508 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
509 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
510 if(! chamberSegmentPair.second->hasPhi())
return 999999;
511 return chamberSegmentPair.second->dXdZ;
517 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
518 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
519 if(! chamberSegmentPair.second->hasZed())
return 999999;
520 return chamberSegmentPair.second->dYdZ;
525 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
526 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
527 if(! chamberSegmentPair.second->hasPhi())
return 999999;
528 return chamberSegmentPair.second->xErr;
534 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
535 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
536 if(! chamberSegmentPair.second->hasZed())
return 999999;
537 return chamberSegmentPair.second->yErr;
542 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
543 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
544 if(! chamberSegmentPair.second->hasPhi())
return 999999;
545 return chamberSegmentPair.second->dXdZErr;
551 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(
chambers(station,muonSubdetId),type);
552 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0)
return 999999;
553 if(! chamberSegmentPair.second->hasZed())
return 999999;
554 return chamberSegmentPair.second->dYdZErr;
559 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
560 if(muonChambers.empty())
return 999999;
562 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
563 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
565 float supVar = 999999;
566 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
567 muonChamber != muonChambers.end(); ++muonChamber) {
568 float currDist = (*muonChamber)->dist();
571 supVar = (*muonChamber)->edgeX;
575 }
else return chamberSegmentPair.first->edgeX;
580 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
581 if(muonChambers.empty())
return 999999;
583 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
584 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
586 float supVar = 999999;
587 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
588 muonChamber != muonChambers.end(); ++muonChamber) {
589 float currDist = (*muonChamber)->dist();
592 supVar = (*muonChamber)->edgeY;
596 }
else return chamberSegmentPair.first->edgeY;
601 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
602 if(muonChambers.empty())
return 999999;
604 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
605 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
607 float supVar = 999999;
608 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
609 muonChamber != muonChambers.end(); ++muonChamber) {
610 float currDist = (*muonChamber)->dist();
613 supVar = (*muonChamber)->x;
617 }
else return chamberSegmentPair.first->x;
622 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
623 if(muonChambers.empty())
return 999999;
625 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
626 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
628 float supVar = 999999;
629 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
630 muonChamber != muonChambers.end(); ++muonChamber) {
631 float currDist = (*muonChamber)->dist();
634 supVar = (*muonChamber)->y;
638 }
else return chamberSegmentPair.first->y;
643 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
644 if(muonChambers.empty())
return 999999;
646 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
647 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
649 float supVar = 999999;
650 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
651 muonChamber != muonChambers.end(); ++muonChamber) {
652 float currDist = (*muonChamber)->dist();
655 supVar = (*muonChamber)->dXdZ;
659 }
else return chamberSegmentPair.first->dXdZ;
664 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
665 if(muonChambers.empty())
return 999999;
667 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
668 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
670 float supVar = 999999;
671 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
672 muonChamber != muonChambers.end(); ++muonChamber) {
673 float currDist = (*muonChamber)->dist();
676 supVar = (*muonChamber)->dYdZ;
680 }
else return chamberSegmentPair.first->dYdZ;
685 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
686 if(muonChambers.empty())
return 999999;
688 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
689 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
691 float supVar = 999999;
692 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
693 muonChamber != muonChambers.end(); ++muonChamber) {
694 float currDist = (*muonChamber)->dist();
697 supVar = (*muonChamber)->xErr;
701 }
else return chamberSegmentPair.first->xErr;
706 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
707 if(muonChambers.empty())
return 999999;
709 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
710 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
712 float supVar = 999999;
713 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
714 muonChamber != muonChambers.end(); ++muonChamber) {
715 float currDist = (*muonChamber)->dist();
718 supVar = (*muonChamber)->yErr;
722 }
else return chamberSegmentPair.first->yErr;
727 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
728 if(muonChambers.empty())
return 999999;
730 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
731 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
733 float supVar = 999999;
734 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
735 muonChamber != muonChambers.end(); ++muonChamber) {
736 float currDist = (*muonChamber)->dist();
739 supVar = (*muonChamber)->dXdZErr;
743 }
else return chamberSegmentPair.first->dXdZErr;
748 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
749 if(muonChambers.empty())
return 999999;
751 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
752 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
754 float supVar = 999999;
755 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
756 muonChamber != muonChambers.end(); ++muonChamber) {
757 float currDist = (*muonChamber)->dist();
760 supVar = (*muonChamber)->dYdZErr;
764 }
else return chamberSegmentPair.first->dYdZErr;
769 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
770 if(muonChambers.empty())
return 999999;
772 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
773 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
775 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
776 muonChamber != muonChambers.end(); ++muonChamber) {
777 float currDist = (*muonChamber)->dist();
778 if(currDist<dist) dist = currDist;
781 }
else return chamberSegmentPair.first->dist();
786 const std::vector<const MuonChamberMatch*> muonChambers =
chambers(station, muonSubdetId);
787 if(muonChambers.empty())
return 999999;
789 std::pair<const MuonChamberMatch*,const MuonSegmentMatch*> chamberSegmentPair =
pair(muonChambers,type);
790 if(chamberSegmentPair.first==0 || chamberSegmentPair.second==0) {
792 float supVar = 999999;
793 for(std::vector<const MuonChamberMatch*>::const_iterator muonChamber = muonChambers.begin();
794 muonChamber != muonChambers.end(); ++muonChamber) {
795 float currDist = (*muonChamber)->dist();
798 supVar = (*muonChamber)->distErr();
802 }
else return chamberSegmentPair.first->distErr();
815 if(label==
"pfIsolationR03")
818 if(label==
"pfIsolationR04")
821 if(label==
"pfIsoMeanDRProfileR03")
824 if(label==
"pfIsoMeanDRProfileR04")
827 if(label==
"pfIsoSumDRProfileR03")
830 if(label==
"pfIsoSumDRProfileR04")
MuonPFIsolation pfIsoSumDRR03_
float segmentXErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
int Charge
electric charge type
bool checkOverlap(const R &r1, const R &r2) const
check if two components overlap
reco::Candidate::LorentzVector pfP4_
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
float dDyDz(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
virtual void setOuterTrack(const TrackRef &t)
set reference to Track
MuonIsolation isolationR05_
float trackDistErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
const std::vector< const MuonChamberMatch * > chambers(int station, int muonSubdetId) const
get vector of muon chambers for given station and detector
TrackRef muonTrack(const MuonTrackType &) const
float segmentDxDzErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
virtual TrackRef innerTrack() const
float caloCompatibility_
muon hypothesis compatibility with observer calorimeter energy
unsigned int type_
muon type mask
virtual void setInnerTrack(const TrackRef &t)
set reference to Track
MuonPFIsolation pfIsoMeanDRR04_
int numberOfMatchedRPCLayers(ArbitrationType type=RPCHitAndTrackArbitration) const
virtual TrackRef track() const
reference to a Track
MuonPFIsolation pfIsolationR04_
void setIsolation(const MuonIsolation &isoR03, const MuonIsolation &isoR05)
unsigned int stationGapMaskPull(float sigmaCut=3.) const
same as above for given number of sigmas
MuonPFIsolation pfIsolationR03_
PF Isolation information for two cones with dR=0.3 and dR=0.4.
float dY(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
virtual reco::TrackRef standAloneMuon() const
reference to a stand-alone muon Track
virtual TrackRef tpfmsTrack() const
static const unsigned int BestInStationByDR
float trackX(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
float trackEdgeX(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
virtual void setStandAlone(const TrackRef &t)
virtual reco::TrackRef track() const
reference to a Track
uint32_t rawId() const
get the raw id
bool isAValidMuonTrack(const MuonTrackType &type) const
bool isNonnull() const
Checks for non-null.
MuonTrackRefMap refittedTrackMap_
reference to the Global Track refitted with dedicated TeV reconstructors
std::pair< const MuonChamberMatch *, const MuonSegmentMatch * > pair(const std::vector< const MuonChamberMatch * > &, ArbitrationType type=SegmentAndTrackArbitration) const
get pointers to best segment and corresponding chamber in vector of chambers
float segmentDyDz(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
TrackRef innerTrack_
reference to Track reconstructed in the tracker only
void setPFIsolation(const std::string &label, const reco::MuonPFIsolation &deposit)
ArbitrationType
define arbitration schemes
float trackY(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
unsigned int RPClayerMask(ArbitrationType type=RPCHitAndTrackArbitration) const
float segmentY(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
float pullDxDz(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration, bool includeSegmentError=true) const
MuonPFIsolation pfIsoSumDRR04_
MuonTrackType bestTrackType_
reference to the Track chosen to assign the momentum value to the muon
virtual TrackRef pickyTrack() const
static const unsigned int BestInChamberByDR
unsigned int stationMask(ArbitrationType type=SegmentAndTrackArbitration) const
float trackXErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
void setMuonTrack(const MuonTrackType &, const TrackRef &)
float trackDyDz(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
float dDxDz(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
float pullY(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration, bool includeSegmentError=true) const
float segmentX(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
static const unsigned int BelongsToTrackByCleaning
virtual void setTrack(const TrackRef &t)
int numberOfMatches(ArbitrationType type=SegmentAndTrackArbitration) const
get number of chambers with matched segments
Muon * clone() const
create a clone
float trackDxDz(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
float trackDyDzErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
int numberOfSegments(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
get number of segments
virtual TrackRef combinedMuon() const
reference to a stand-alone muon Track
int numberOfChambers() const
int numberOfChambersNoRPC() const
number of chambers not including RPC matches (MuonChamberMatches include RPC rolls) ...
static const unsigned int PFMuon
MuonIsolation isolationR03_
Isolation information for two cones with dR=0.3 and dR=0.5.
std::vector< MuonChamberMatch > & matches()
get muon matching information
float trackDxDzErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
math::XYZTLorentzVector LorentzVector
Lorentz vector.
TrackRef outerTrack_
reference to Track reconstructed in the muon detector only
virtual TrackRef dytTrack() const
std::vector< MuonChamberMatch > muMatches_
Information on matching between tracks and segments.
float trackDist(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
static const unsigned int BelongsToTrackByDR
float trackEdgeY(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
float dX(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
float segmentDxDz(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
float trackYErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
int numberOfMatchedStations(ArbitrationType type=SegmentAndTrackArbitration) const
virtual bool overlap(const Candidate &) const
check overlap with another candidate
unsigned int type() const
virtual void setCombined(const TrackRef &t)
math::XYZPoint Point
point in the space
TrackRef globalTrack_
reference to Track reconstructed in both tracked and muon detector
MuonTrackType bestTunePTrackType_
reference to the Track chosen to assign the momentum value to the muon by PF
virtual void setPFP4(const reco::Candidate::LorentzVector &p4_)
float segmentYErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
MuonTrackType
map for Global Muon refitters
float segmentDyDzErr(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration) const
static char chambers[264][20]
virtual void setGlobalTrack(const TrackRef &t)
set reference to Track
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
MuonPFIsolation pfIsoMeanDRR03_
unsigned int stationGapMaskDistance(float distanceCut=10.) const
Power< A, B >::type pow(const A &a, const B &b)
float pullDyDz(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration, bool includeSegmentError=true) const
TrackRef muonTrackFromMap(const MuonTrackType &type) const
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
float pullX(int station, int muonSubdetId, ArbitrationType type=SegmentAndTrackArbitration, bool includeSegmentError=true) const
virtual reco::TrackRef combinedMuon() const
reference to a stand-alone muon Track
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.
virtual TrackRef standAloneMuon() const
reference to a stand-alone muon Track