ATLAS Offline Software
Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
15 
18 
19 
20 #include "muonEvent/Muon.h"
21 
22 #include "VxVertex/RecVertex.h"
23 #include "Particle/TrackParticle.h"
24 #include "CaloEvent/CaloCluster.h"
25 #include "GaudiKernel/GaudiException.h"
26 
27 #include <cmath>
28 #include <string>
29 
30 namespace Analysis {
31 
32 //------------------------------------------------------------
33 // Constructor -- just set defaults
34 
37  INavigable (),
38  I4Momentum (),
40  MuonImpl_t(),
41  m_author(MuonParameters::unknown),
42  m_hasMuonExtrapolatedTrackParticle(false),
43  m_hasCombinedMuonTrackParticle(false),
44  m_matchChi2(-1.0),
45  m_matchNumberDoF(0),
46  m_outerMatchNumberDoF(0),
47  m_transientOuterMatchChi2(Trk::FitQuality()),
48  m_bestMatch(false),
49  m_parameters( ),
50  m_isAlsoFoundByLowPt(false),
51  m_isAlsoFoundByCaloMuonId(false),
52  m_caloMuonAlsoFoundByMuonReco(0),
53  m_isCorrected(false),
54  m_allAuthors(0),
55  m_isMuonBits(0),
56  m_isMuonLikelihood(0.0)
57 {
58  this->set_charge(-999.0);
59  m_associatedEtaDigits.clear();
60  m_associatedPhiDigits.clear();
61 }
62 
63 //------------------------------------------------------------
67  INavigable (),
68  I4Momentum (),
70  MuonImpl_t(),
71  m_author(author),
72  m_hasMuonExtrapolatedTrackParticle(false),
73  m_hasCombinedMuonTrackParticle(false),
74  m_matchChi2(-1.0),
75  m_matchNumberDoF(0),
76  m_outerMatchNumberDoF(0),
77  m_transientOuterMatchChi2(Trk::FitQuality()),
78  m_bestMatch(false),
79  m_parameters( ),
80  m_isAlsoFoundByLowPt(false),
81  m_isAlsoFoundByCaloMuonId(false),
82  m_caloMuonAlsoFoundByMuonReco(0),
83  m_isCorrected(false),
84  m_allAuthors(0),
85  m_isMuonBits(0),
86  m_isMuonLikelihood(0.0)
87 {
88  this->add_author( author );
89  this->set_charge(-999.0);
90  m_associatedEtaDigits.clear();
91  m_associatedPhiDigits.clear();
92 
93 }
94 
97  const Rec::TrackParticle* inDetTP, const Rec::TrackParticle* extrapTP,
98  const Rec::TrackParticle* combTP, const bool isExtrapolatedToVertex)
99  :
100  IAthenaBarCode(),
101  INavigable (),
102  I4Momentum (),
104  MuonImpl_t(),
105  m_author(author),
106  m_matchChi2(-1.0),
107  m_matchNumberDoF(0),
108  m_outerMatchNumberDoF(0),
109  m_transientOuterMatchChi2(Trk::FitQuality()),
110  m_bestMatch(false),
111  m_isAlsoFoundByLowPt(false),
112  m_isAlsoFoundByCaloMuonId(false),
113  m_caloMuonAlsoFoundByMuonReco(0),
114  m_isCorrected(false)
115 {
116  this->set4Mom(combTP->hlv());
117 
119 
120  if(isExtrapolatedToVertex)
122  else
124 
126 
129  m_associatedEtaDigits.clear();
130  m_associatedPhiDigits.clear();
131  this->set_charge( combTP->charge() );
132  m_allAuthors = 0;
133  this->add_author( author );
134  m_isMuonBits = 0;
135  m_isMuonLikelihood = 0.0;
136 
137 }
138 
140  const Rec::TrackParticle* trackParticle, const bool isExtrapolatedToVertex)
141  :
142  IAthenaBarCode(),
143  INavigable (),
144  I4Momentum (),
146  MuonImpl_t(),
147  m_author(author),
148  m_matchChi2(-1.0),
149  m_matchNumberDoF(0),
150  m_outerMatchNumberDoF(0),
151  m_transientOuterMatchChi2(Trk::FitQuality()),
152  m_bestMatch(false),
153  m_isAlsoFoundByLowPt(false),
154  m_isAlsoFoundByCaloMuonId(false),
155  m_caloMuonAlsoFoundByMuonReco(0),
156  m_isCorrected(false)
157  {
158  this->set4Mom(trackParticle->hlv());
159 
160  if(isExtrapolatedToVertex)
162  else {
163  if (this->isCaloMuonId())
164  m_inDetTrackParticle.setElement(trackParticle);
165  else
167  }
170  m_associatedEtaDigits.clear();
171  m_associatedPhiDigits.clear();
172  this->set_charge( trackParticle->charge() );
173  m_allAuthors = 0;
174  this->add_author( author );
175  m_isMuonBits = 0;
176  m_isMuonLikelihood = 0.0;
177 
178 }
179 
183  const Rec::TrackParticle* inDetTP,
184  const Trk::SegmentCollection * segmentContainer,
185  const std::vector<const Trk::Segment*>& muonSegments)
186  :
187  IAthenaBarCode(),
188  INavigable (),
189  I4Momentum (),
191  MuonImpl_t(),
192  m_author(author),
193  m_matchChi2(-1.0),
194  m_matchNumberDoF(0),
195  m_outerMatchNumberDoF(0),
196  m_transientOuterMatchChi2(Trk::FitQuality()),
197  m_bestMatch(false),
198  m_isAlsoFoundByLowPt(false),
199  m_isAlsoFoundByCaloMuonId(false),
200  m_caloMuonAlsoFoundByMuonReco(0),
201  m_isCorrected(false)
202  {
203  this->set4Mom(inDetTP->hlv());
205 
206  for (unsigned int i=0; i<muonSegments.size(); ++i) this->addSegment(segmentContainer, muonSegments[i]);
207 
210  m_associatedEtaDigits.clear();
211  m_associatedPhiDigits.clear();
212  this->set_charge( inDetTP->charge() );
213  m_allAuthors = 0;
214  this->add_author( author );
215  m_isMuonBits = 0;
216  m_isMuonLikelihood = 0.0;
217 }
218 
219 //------------------------------------------------------------
221 Muon::Muon( const Muon& rhs ) :
222  IAthenaBarCode(rhs),
223  INavigable (rhs),
224  I4Momentum (rhs),
225  INavigable4Momentum (rhs),
226  MuonImpl_t(rhs),
227  m_author ( rhs.m_author ),
228  m_hasMuonExtrapolatedTrackParticle ( rhs.m_hasMuonExtrapolatedTrackParticle ),
229  m_hasCombinedMuonTrackParticle ( rhs.m_hasCombinedMuonTrackParticle ),
230  m_matchChi2 ( rhs.m_matchChi2 ),
231  m_matchNumberDoF ( rhs.m_matchNumberDoF ),
232  m_outerMatchNumberDoF ( rhs.m_outerMatchNumberDoF ),
233  m_transientOuterMatchChi2 ( rhs.m_transientOuterMatchChi2 ),
234  m_bestMatch ( rhs.m_bestMatch ),
235  m_associatedEtaDigits ( rhs.m_associatedEtaDigits ),
236  m_associatedPhiDigits ( rhs.m_associatedPhiDigits ),
237  m_inDetTrackParticle ( rhs.m_inDetTrackParticle ),
238  m_muonExtrapolatedTrackParticle ( rhs.m_muonExtrapolatedTrackParticle ),
239  m_innerExtrapolatedTrackParticle ( rhs.m_innerExtrapolatedTrackParticle ),
240  m_combinedMuonTrackParticle ( rhs.m_combinedMuonTrackParticle ),
241  m_statCombinedMuonTrackParticle ( rhs.m_statCombinedMuonTrackParticle ),
242  m_cluster ( rhs.m_cluster ),
243  m_muonSpectrometerTrackParticle ( rhs.m_muonSpectrometerTrackParticle),
244  m_parameters ( rhs.m_parameters ),
245  m_isAlsoFoundByLowPt ( rhs.m_isAlsoFoundByLowPt ),
246  m_isAlsoFoundByCaloMuonId ( rhs.m_isAlsoFoundByCaloMuonId ),
247  m_caloEnergyLoss ( rhs.m_caloEnergyLoss ),
248  m_caloMuonAlsoFoundByMuonReco ( rhs.m_caloMuonAlsoFoundByMuonReco ),
249  m_isCorrected ( rhs.m_isCorrected ),
250  m_allAuthors ( rhs.m_allAuthors ),
251  m_isMuonBits ( rhs.m_isMuonBits ),
252  m_isMuonLikelihood ( rhs.m_isMuonLikelihood )
253 
254 {
256 }
257 
258 
260  if( !m_muonSegments.empty() ) m_muonSegments.clear();
261  m_muonSegments.reserve(segments.size());
264  for( ;sit!=sit_end;++sit) m_muonSegments.push_back( *sit );
265 }
266 
267 //------------------------------------------------------------
269 Muon& Muon::operator=( const Muon& rhs )
270 {
271  if ( this != &rhs ) {
272  IAthenaBarCode::operator=(rhs);
273  INavigable::operator=(rhs);
274  I4Momentum::operator=(rhs);
275  INavigable4Momentum::operator=(rhs);
277  m_author = rhs.m_author;
280  m_matchChi2 = rhs.m_matchChi2;
284  m_bestMatch = rhs.m_bestMatch;
292  m_cluster = rhs.m_cluster;
300  m_allAuthors = rhs.m_allAuthors;
303 
305 
306  }
307  return *this;
308 }
309 
310 //------------------------------------------------------------
312 Muon::~Muon() = default;
313 
314 bool Muon::isAuthor ( const unsigned int author ) const {
316  return this->isAuthor(x);
317 }
318 
320  bool is_it = false;
321  switch ( author ) {
323  is_it = m_allAuthors & 1;
324  break;
325  case MuonParameters::STACO :
326  is_it = m_allAuthors & 2;
327  break;
328  case MuonParameters::MuTag :
329  is_it = m_allAuthors & 4;
330  break;
332  is_it = m_allAuthors & 8;
333  break;
335  is_it = m_allAuthors & 16;
336  break;
338  is_it = m_allAuthors & 32;
339  break;
341  is_it = m_allAuthors & 64;
342  break;
344  is_it = m_allAuthors & 128;
345  break;
347  is_it = m_allAuthors & 256;
348  break;
350  is_it = m_allAuthors & 512;
351  break;
353  is_it = m_allAuthors & 1024;
354  break;
356  is_it = m_allAuthors & 2048;
357  break;
359  is_it = m_allAuthors & 4096;
360  break;
361 
362  default :
363  is_it = false;
364  }
365  return is_it;
366 }
367 
369  bool is_set = false;
370  if ( !this->isAuthor( author ) ) {
371  is_set = true;
372  switch ( author ) {
375  break;
376  case MuonParameters::STACO :
378  break;
379  case MuonParameters::MuTag :
381  break;
382  case MuonParameters::MuidSA :
384  break;
385  case MuonParameters::MuidCo :
386  m_allAuthors = m_allAuthors | 16;
387  break;
388  case MuonParameters::MuGirl :
389  m_allAuthors = m_allAuthors | 32;
390  break;
392  m_allAuthors = m_allAuthors | 64;
393  break;
395  m_allAuthors = m_allAuthors | 128;
396  break;
398  m_allAuthors = m_allAuthors | 256;
399  break;
401  m_allAuthors = m_allAuthors | 512;
402  break;
404  m_allAuthors = m_allAuthors | 1024;
405  break;
407  m_allAuthors = m_allAuthors | 2048;
408  break;
410  m_allAuthors = m_allAuthors | 4096;
411  break;
412 
413  default :
414  is_set = false;
415  }
416  }
417  return is_set;
418 }
419 
421 bool Muon::isCombinedMuon() const {
422  if (m_hasCombinedMuonTrackParticle && // mind DPD where hasParticle() but EL may be invalid
426  m_author==MuonParameters::MuGirl ) ) return true;
427  else return false;
428 }
429 
432 
433  if (m_hasMuonExtrapolatedTrackParticle && // mind DPD where hasParticle() but EL may be invalid
440  else return false;
441 
442  // Formerly: !this->bestMatch() && !this->hasCombinedMuonTrackParticle()
443  // && !this->isSegmentTaggedMuon() && this->isHighPt() && this->m_hasMuonExtr...
444 }
445 
446 
450 
452 
454 }
455 
457 bool Muon::isCaloMuonId() const {
459 
461 
463 }
464 
467  const Rec::TrackParticle* indetParticle = inDetTrackParticle();
468  if( !indetParticle ) return false;
470 }
471 
475 
477 
479 
481 }
482 
483 
486 
487  double result = -999.;
488 
489  for (const std::pair<MuonParameters::ParamDef, float>& p : m_parameters) {
490  if ( p.first == x )
491  result = p.second;
492  }
493 
494  return result;
495 }
496 
498 {
499  if (ndof>0) {
503  } else {
506  }
507 }
508 
509 
511 std::pair<double,double> Muon::energyLoss() const{
512  double eloss = 0.0;
513  double sigma = 0.0;
514  if ( m_caloEnergyLoss.isValid() ) {
515  const CaloEnergy * caloEnergy = *m_caloEnergyLoss;
516  eloss = caloEnergy->deltaE();
517  sigma = caloEnergy->sigmaDeltaE();
518  }
519  return std::make_pair(eloss, sigma);
520 }
521 
524  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
525  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfInnermostPixelLayerHits );
526  else return -1;
527 
528 }
529 
532  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
533  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfPixelHits );
534  else return -1;
535 
536 }
537 
539 int Muon::numberOfSCTHits() const {
540  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
541  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfSCTHits );
542  else return -1;
543 
544 }
545 
547 int Muon::numberOfTRTHits() const {
548  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
549  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfTRTHits );
550  else return -1;
551 
552 }
553 
556  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
557  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfTRTHighThresholdHits );
558  else return -1;
559 
560 }
561 
564  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
565  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::legacy_numberOfInnermostPixelLayerSharedHits );
566  else return -1;
567 }
569  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
570  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::legacy_numberOfPixelSharedHits );
571  else return -1;
572 }
573 
575  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
576  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfPixelHoles );
577  else return -1;
578 }
579 
581  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
582  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::legacy_numberOfSCTSharedHits );
583  else return -1;
584 }
585 
587  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
588  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfSCTHoles );
589  else return -1;
590 }
591 
593  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
594  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfTRTOutliers );
595  else return -1;
596 }
597 
599  if ( this->hasCombinedMuonTrackParticle() || this->hasInDetTrackParticle() )
600  return (*m_inDetTrackParticle)->trackSummary()->get( Trk::numberOfTRTHighThresholdOutliers );
601  else return -1;
602 }
603 
605 int Muon::numberOfMDTHits() const {
606  if ( this->hasMuonExtrapolatedTrackParticle() )
607  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfMdtHits );
608  else if ( this->hasInDetTrackParticle() && !associatedEtaDigits().empty())
609  return ( associatedEtaDigits()[0] );
610  else return -1;
611 }
613  if ( this->hasMuonExtrapolatedTrackParticle() )
614  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfMdtHoles );
615  else return -1;
616 }
617 
620  if ( this->hasMuonExtrapolatedTrackParticle() )
621  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfCscPhiHits );
622  else if ( this->hasInDetTrackParticle() && !associatedPhiDigits().empty())
623  return ( associatedPhiDigits()[1] );
624  else return -1;
625 }
627  if ( this->hasMuonExtrapolatedTrackParticle() )
628  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfCscPhiHoles );
629  else return -1;
630 }
631 
634  if ( this->hasMuonExtrapolatedTrackParticle() )
635  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfCscEtaHits );
636  else if ( this->hasInDetTrackParticle() && !associatedEtaDigits().empty())
637  return ( associatedEtaDigits()[1] );
638  else return -1;
639 }
641  if ( this->hasMuonExtrapolatedTrackParticle() )
642  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfCscEtaHoles );
643  else return -1;
644 }
645 
648  if ( this->hasMuonExtrapolatedTrackParticle() )
649  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfRpcPhiHits );
650  else if ( this->hasInDetTrackParticle() && !associatedPhiDigits().empty())
651  return ( associatedPhiDigits()[2] );
652  else return -1;
653 }
655  if ( this->hasMuonExtrapolatedTrackParticle() )
656  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfRpcPhiHoles );
657  else return -1;
658 }
659 
662  if ( this->hasMuonExtrapolatedTrackParticle() )
663  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfRpcEtaHits );
664  else if ( this->hasInDetTrackParticle() && !associatedEtaDigits().empty())
665  return ( associatedEtaDigits()[2] );
666  else return -1;
667 }
669  if ( this->hasMuonExtrapolatedTrackParticle() )
670  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfRpcEtaHoles );
671  else return -1;
672 }
673 
676  if ( this->hasMuonExtrapolatedTrackParticle() )
677  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfTgcPhiHits );
678  else if ( this->hasInDetTrackParticle() && !associatedPhiDigits().empty())
679  return ( associatedPhiDigits()[3] );
680  else return -1;
681 }
683  if ( this->hasMuonExtrapolatedTrackParticle() )
684  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfTgcPhiHoles );
685  else return -1;
686 }
687 
690  if ( this->hasMuonExtrapolatedTrackParticle() )
691  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfTgcEtaHits );
692  else if ( this->hasInDetTrackParticle() && !associatedEtaDigits().empty())
693  return ( associatedEtaDigits()[3] );
694  else return -1;
695 }
697  if ( this->hasMuonExtrapolatedTrackParticle() )
698  return (*m_muonExtrapolatedTrackParticle)->trackSummary()->get( Trk::numberOfTgcEtaHoles );
699  else return -1;
700 }
701 
704  const Rec::TrackParticle * theTrack = this->track();
705  if ( theTrack )
706  return theTrack->trackSummary()->get( Trk::numberOfGangedPixels );
707  else return -1;
708 }
709 
711  const Rec::TrackParticle * theTrack = this->track();
712  if ( theTrack )
713  return theTrack->trackSummary()->get( Trk::numberOfOutliersOnTrack );
714  else return -1;
715 
716 }
717 
718 int Muon::numberOfTrackSummaryTypes(unsigned int type) const {
719  const Rec::TrackParticle * theTrack = this->track();
720  if ( theTrack && type < Trk::numberOfTrackSummaryTypes )
721  return theTrack->trackSummary()->get( static_cast<Trk::SummaryType>(type) );
722  else return -1;
723 }
724 
725 void Muon::set_energyLoss ( const MuonCaloEnergyContainer* cont, const CaloEnergy* caloEnergy )
726 {
728  m_caloEnergyLoss.toContainedElement(*cont, caloEnergy);
729 }
730 
733  const Rec::TrackParticle* trackParticle )
734 {
736  m_inDetTrackParticle.toContainedElement(*cont, trackParticle);
737 }
738 
740 {
741  m_inDetTrackParticle.setElement(trackParticle);
742 }
743 
745 void Muon::set_muonSegments(const Trk::SegmentCollection* segmentContainer,
746  const std::vector<const Trk::Segment*>& muonSegments)
747 {
748  m_muonSegments.clear();
749  for (unsigned int i=0; i<muonSegments.size(); ++i) this->addSegment(segmentContainer, muonSegments[i]);
750 }
751 
752 void Muon::addSegment ( const Trk::SegmentCollection* segmentContainer, const Trk::Segment* segment )
753 {
755  link.toContainedElement( *segmentContainer,segment) ;
756  m_muonSegments.push_back( link ) ;
757 }
758 
759 const ElementLink<Trk::SegmentCollection> Muon::muonSegmentLink(const unsigned int i, bool& validLink) const
760 {
762  if ( i < this->numberOfSegments() ) {
763  validLink = true;
764  theLink = m_muonSegments[i];
765  } else {
766  validLink = false;
767  }
768  return theLink;
769 }
770 
773  const Rec::TrackParticle* trackParticle)
774 {
776  if (cont && trackParticle) // allow also to remove an EL
778 }
779 
782  const Rec::TrackParticle* trackParticle )
783 {
785  if (cont && trackParticle) { // allow also to remove an EL
788  }
789 }
790 
792 {
795 }
796 
799  const Rec::TrackParticle* trackParticle )
800 {
802  if (cont && trackParticle) { // allow also to remove an EL
804  }
805 }
806 
808 {
810 }
811 
814  const Rec::TrackParticle* trackParticle )
815 {
817  if (cont && trackParticle) { // allow also to remove an EL
818  m_combinedMuonTrackParticle.toContainedElement(*cont, trackParticle);
820  }
821 }
822 
824 {
825  m_combinedMuonTrackParticle.setElement(trackParticle);
827 }
828 
831  const Rec::TrackParticle* trackParticle )
832 {
834  if (cont && trackParticle) { // allow also to remove an EL
836  }
837 }
838 
840 void Muon::set_numberOfAssociatedEtaDigits(int nMDT, int nCSC, int nRPC, int nTGC) {
841  m_associatedEtaDigits.clear();
842  m_associatedEtaDigits.push_back(nMDT);
843  m_associatedEtaDigits.push_back(nCSC);
844  m_associatedEtaDigits.push_back(nRPC);
845  m_associatedEtaDigits.push_back(nTGC);
846 
847 }
848 void Muon::set_numberOfAssociatedPhiDigits(int nMDT, int nCSC, int nRPC, int nTGC) {
849  m_associatedPhiDigits.clear();
850  m_associatedPhiDigits.push_back(nMDT);
851  m_associatedPhiDigits.push_back(nCSC);
852  m_associatedPhiDigits.push_back(nRPC);
853  m_associatedPhiDigits.push_back(nTGC);
854 }
855 
856 void Muon::set_numberOfAssociatedEtaDigits(const std::vector<int>& associated_digits) {
857  m_associatedEtaDigits = associated_digits;
858 }
859 
860 void Muon::set_numberOfAssociatedPhiDigits(const std::vector<int>& associated_digits) {
861  m_associatedPhiDigits = associated_digits;
862 }
863 void Muon::set_numberOfSegmentEtaDigits(int nMDT, int nCSC, int nRPC, int nTGC) {
864  m_associatedEtaDigits.clear();
865  m_associatedEtaDigits.push_back(nMDT);
866  m_associatedEtaDigits.push_back(nCSC);
867  m_associatedEtaDigits.push_back(nRPC);
868  m_associatedEtaDigits.push_back(nTGC);
869 
870 }
871 void Muon::set_numberOfSegmentPhiDigits(int nMDT, int nCSC, int nRPC, int nTGC) {
872  m_associatedPhiDigits.clear();
873  m_associatedPhiDigits.push_back(nMDT);
874  m_associatedPhiDigits.push_back(nCSC);
875  m_associatedPhiDigits.push_back(nRPC);
876  m_associatedPhiDigits.push_back(nTGC);
877 }
878 
879 void Muon::set_numberOfSegmentEtaDigits(const std::vector<int>& associated_digits) {
880  m_associatedEtaDigits = associated_digits;
881 }
882 
883 void Muon::set_numberOfSegmentPhiDigits(const std::vector<int>& associated_digits) {
884  m_associatedPhiDigits = associated_digits;
885 }
886 
888 void Muon::set_parameter(MuonParameters::ParamDef index, double value, bool overwrite) {
889 
890  using muonParams = std::pair<MuonParameters::ParamDef, float>;
891 
893 
894  for (;p !=m_parameters.end(); ++p) {
895  if ( (*p).first == index ) break;
896  }
897 
898  if ( p == m_parameters.end() ) {
899  m_parameters.emplace_back(index,(float)value );
900  }
901  else {
902  if ( overwrite ) {
903  (*p).second = (float)value;
904  }
905  //else {
906  // throw GaudiException("parameter not saved", "Muon::set_parameter(...)", true);
907  //int ind = static_cast<int>(index);
908  //std::cout << "parameter not overwritten - Muon::set_parameter(...) index = " << ind << std::endl;
909 
910  //}
911  }
912 }
913 
915 // Navigation without parameters //
917 
918 void Muon::fillToken(INavigationToken& theToken) const
919 {
920 
921  bool checkFlag = false;
922 
924  // First check on track //
926 
927 
928  const Rec::TrackParticle* aTrack;
929 
931  if ( this->combinedMuonTrackParticle() ) {
932 
933  aTrack = this->combinedMuonTrackParticle();
934 
935  // check requested object type with token type
937  dynamic_cast< NavigationToken<Rec::TrackParticle>* >(&theToken);
938  if ( trackToken != nullptr ) {
939  // request is honored
940  trackToken->setObject(aTrack);
941  checkFlag = true;
942  }
943 
944  // alternative token type may phrase the same request
945  if ( ! checkFlag ) {
948  (&theToken);
949  if ( parTrackToken != nullptr ) {
950  parTrackToken->setObject(aTrack);
951  checkFlag = true;
952  }
953  }
954  if(!checkFlag) {
955  // try for generic type requests
956  if ( aTrack != nullptr ) theToken.trySetObject(aTrack);
957  }
958 
959  }
960  else {
961  if ( this->muonExtrapolatedTrackParticle() ) {
962  aTrack = this->muonExtrapolatedTrackParticle();
963 
964  // check requested object type with token type
966  dynamic_cast< NavigationToken<Rec::TrackParticle>* >(&theToken);
967  if ( trackToken != nullptr ) {
968  // request is honored
969  trackToken->setObject(aTrack);
970  checkFlag = true;
971  }
972 
973  // alternative token type may phrase the same request
974  if ( ! checkFlag ) {
977  (&theToken);
978  if ( parTrackToken != nullptr ) {
979  parTrackToken->setObject(aTrack);
980  checkFlag = true;
981  }
982  }
983  if(!checkFlag) {
984 
985  // try for generic type requests
986  if ( aTrack != nullptr ) theToken.trySetObject(aTrack);
987  }
988 
989  }
990 
991  if ( this->inDetTrackParticle() ) {
992  aTrack = this->inDetTrackParticle();
993 
994  // check requested object type with token type
996  dynamic_cast< NavigationToken<Rec::TrackParticle>* >(&theToken);
997  if ( trackToken != nullptr ) {
998  // request is honored
999  trackToken->setObject(aTrack);
1000  checkFlag = true;
1001  }
1002 
1003  // alternative token type may phrase the same request
1004  if ( ! checkFlag ) {
1007  (&theToken);
1008  if ( parTrackToken != nullptr ) {
1009  parTrackToken->setObject(aTrack);
1010  checkFlag = true;
1011  }
1012  }
1013  if(!checkFlag) {
1014 
1015  // try for generic type requests
1016  if ( aTrack != nullptr ) theToken.trySetObject(aTrack);
1017  }
1018  }
1019 
1020  }
1021 
1022  }
1023 
1025 // Navigation with parameters //
1027 
1029  const std::any& theWeight) const
1030 {
1031  bool checkFlag = false;
1032 
1033 
1034  const Rec::TrackParticle* aTrack;
1035 
1037  if ( this->combinedMuonTrackParticle() ) {
1038 
1039  aTrack = this->combinedMuonTrackParticle();
1040 
1041  // check requested object type with token type
1043  dynamic_cast< NavigationToken<Rec::TrackParticle>* >(&theToken);
1044  if ( trackToken != nullptr ) {
1045  // request is honored
1046  trackToken->setObject(aTrack);
1047  checkFlag = true;
1048  }
1049 
1050  // alternative token type may phrase the same request
1051  if ( ! checkFlag ) {
1054  (&theToken);
1055  if ( parTrackToken != nullptr ) {
1056  parTrackToken->setObject(aTrack,
1057  std::any_cast<double>(theWeight));
1058  checkFlag = true;
1059  }
1060  }
1061  if(!checkFlag) {
1062 
1063  // try for generic type requests
1064  if ( aTrack != nullptr ) theToken.trySetObject(aTrack, theWeight);
1065  }
1066 
1067  }
1068  else {
1069  if ( this->muonExtrapolatedTrackParticle() ) {
1070  aTrack = this->muonExtrapolatedTrackParticle();
1071 
1072  // check requested object type with token type
1074  dynamic_cast< NavigationToken<Rec::TrackParticle>* >(&theToken);
1075  if ( trackToken != nullptr ) {
1076  // request is honored
1077  trackToken->setObject(aTrack);
1078  checkFlag = true;
1079  }
1080 
1081  // alternative token type may phrase the same request
1082  if ( ! checkFlag ) {
1085  (&theToken);
1086  if ( parTrackToken != nullptr ) {
1087  parTrackToken->setObject(aTrack,
1088  std::any_cast<double>(theWeight));
1089  checkFlag = true;
1090  }
1091  }
1092  if(!checkFlag) {
1093 
1094  // try for generic type requests
1095  if ( aTrack != nullptr ) theToken.trySetObject(aTrack, theWeight);
1096  }
1097 
1098  }
1099 
1100  if ( this->inDetTrackParticle() ) {
1101  aTrack = this->inDetTrackParticle();
1102 
1103  // check requested object type with token type
1105  dynamic_cast< NavigationToken<Rec::TrackParticle>* >(&theToken);
1106  if ( trackToken != nullptr ) {
1107  // request is honored
1108  trackToken->setObject(aTrack);
1109  checkFlag = true;
1110  }
1111 
1112  // alternative token type may phrase the same request
1113  if ( ! checkFlag ) {
1116  (&theToken);
1117  if ( parTrackToken != nullptr ) {
1118  parTrackToken->setObject(aTrack,
1119  std::any_cast<double>(theWeight));
1120  checkFlag = true;
1121  }
1122  }
1123  if(!checkFlag) {
1124 
1125  // try for generic type requests
1126  if ( aTrack != nullptr ) theToken.trySetObject(aTrack, theWeight);
1127  }
1128  }
1129 
1130  }
1131 
1132 }
1133 
1138  //else if (this->hasMuonExtrapolatedTrackParticle()) return (*m_muonExtrapolatedTrackParticle);
1139  else if (this->hasInDetTrackParticle()) return (*m_inDetTrackParticle);
1141  else return nullptr;
1142 }
1143 
1144 } //namespace
1145 
1146 
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Trk::numberOfPixelHits
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:57
RecVertex.h
IDTPM::ndof
float ndof(const U &p)
Definition: TrackParametersHelper.h:142
Trk::numberOfRpcPhiHoles
@ numberOfRpcPhiHoles
number of RPC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:118
Analysis::Muon::numberOfTRTHits
int numberOfTRTHits() const
Get number of TRT hits from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:547
Analysis::Muon::track
const Rec::TrackParticle * track() const
return the primary track of this muon
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:1135
Analysis::Muon::numberOfOutliersOnTrack
int numberOfOutliersOnTrack() const
number of outliers for track from primary author
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:710
I4Momentum
Definition: I4Momentum.h:31
Analysis::Muon::Muon
Muon()
Default constructor.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:35
Analysis::Muon::numberOfInnermostPixelLayerHits
int numberOfInnermostPixelLayerHits() const
Get Inner detector Hits information from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:523
Analysis::Muon::numberOfCSCPhiHits
int numberOfCSCPhiHits() const
Get Muon Spectrometer CSC Phi Hits information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:619
Trk::TrackParticleBase::charge
double charge() const
Return charge of the particle.
Definition: TrackParticleBase.h:200
Trk::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:87
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
Trk::numberOfMdtHoles
@ numberOfMdtHoles
number of MDT measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:120
Trk::legacy_numberOfPixelSharedHits
@ legacy_numberOfPixelSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:171
get_generator_info.result
result
Definition: get_generator_info.py:21
Trk::legacy_numberOfSCTSharedHits
@ legacy_numberOfSCTSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:172
MuonParameters::MuTag
@ MuTag
Definition: MuonParamDefs.h:57
ElementLinkVector::begin
iterator begin()
Definition: AthLinks/ElementLinkVector.h:272
Trk::numberOfTRTHighThresholdOutliers
@ numberOfTRTHighThresholdOutliers
number of dead TRT straws crossed
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:93
Trk::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 1st pixel layer
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:53
Analysis::Muon::m_parameters
std::vector< std::pair< MuonParameters::ParamDef, float > > m_parameters
Parameters as defined in MuonParamDef.h.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:794
TrackParticle.h
Analysis::Muon::numberOfTRTOutliers
int numberOfTRTOutliers() const
Get number of TRT Outliers from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:592
Analysis::Muon::m_isAlsoFoundByLowPt
bool m_isAlsoFoundByLowPt
this muon is also found by the lowPT reconstruction algorithm
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:797
CaloEnergy
class extending the basic Trk::EnergyLoss to describe the measured or parameterised muon energy loss ...
Definition: CaloEnergy.h:28
Analysis::Muon::m_outerMatchNumberDoF
int m_outerMatchNumberDoF
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:772
Analysis::Muon::numberOfTRTHighThresholdOutliers
int numberOfTRTHighThresholdOutliers() const
Get number of TRT Outliers High Threshold from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:598
Trk::numberOfCscEtaHits
@ numberOfCscEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:108
Analysis::Muon::m_statCombinedMuonTrackParticle
ElementLink< Rec::TrackParticleContainer > m_statCombinedMuonTrackParticle
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:787
ElementLinkVector::end
iterator end()
Definition: AthLinks/ElementLinkVector.h:276
MuonParameters::MuonboySP
@ MuonboySP
Definition: MuonParamDefs.h:54
index
Definition: index.py:1
Analysis::Muon::set_outerMatchChi2
void set_outerMatchChi2(double x, int ndof)
set the outer match chi2/ndof for combined and segment-tagged muons
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:497
Analysis::Muon::m_caloEnergyLoss
ElementLink< MuonCaloEnergyContainer > m_caloEnergyLoss
energy loss in calorimeter
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:803
Analysis::Muon::numberOfPixelSharedHits
int numberOfPixelSharedHits() const
Get number of Pixel shared hits from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:568
Analysis::Muon::m_author
MuonParameters::Author m_author
the author of this muon
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:763
Trk::numberOfCscEtaHoles
@ numberOfCscEtaHoles
number of CSC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:112
Analysis::Muon::set_numberOfSegmentPhiDigits
void set_numberOfSegmentPhiDigits(int nMDT, int nCSC, int nRPC, int nTGC)
Set Segment Phi Digits.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:871
Trk::numberOfTrackSummaryTypes
@ numberOfTrackSummaryTypes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:189
Trk::TrackParticleBase::trackSummary
const TrackSummary * trackSummary() const
accessor function for TrackSummary.
Definition: TrackParticleBase.h:247
Analysis::Muon::hasInnerExtrapolatedTrackParticle
bool hasInnerExtrapolatedTrackParticle() const
test if associated TrackParticle from ID-seeded full track fit is available
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:296
Trk::EnergyLoss::sigmaDeltaE
double sigmaDeltaE() const
returns the symmatric error
Analysis::Muon::set_muonSpectrometerTrackParticle
void set_muonSpectrometerTrackParticle(const Rec::TrackParticleContainer *, const Rec::TrackParticle *)
set Muon Spectrometer TrackParticle
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:772
Analysis::Muon::m_inDetTrackParticle
ElementLink< Rec::TrackParticleContainer > m_inDetTrackParticle
end LowPt stuff
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:782
Analysis::Muon::inDetTrackParticle
const Rec::TrackParticle * inDetTrackParticle() const
deprecated - instead use primary identification, muon quality or MuonCP group guidelines to adopt a g...
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:319
athena.value
value
Definition: athena.py:122
Analysis::Muon::m_associatedPhiDigits
std::vector< int > m_associatedPhiDigits
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:778
Trk::numberOfOutliersOnTrack
@ numberOfOutliersOnTrack
100 times the standard deviation of the chi2 from the surfaces
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:148
Trk::numberOfTgcPhiHits
@ numberOfTgcPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:105
Trk::numberOfCscPhiHoles
@ numberOfCscPhiHoles
number of CSC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:114
Analysis::Muon::isSiliconAssociatedForwardMuon
bool isSiliconAssociatedForwardMuon() const
Method for querying primary identification mechanism: a combined muon where a clean forward standalon...
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:466
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Analysis::Muon::hasCombinedMuonTrackParticle
bool hasCombinedMuonTrackParticle() const
test if associated combined-muon TrackParticle is available
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:298
Analysis::Muon::m_isMuonBits
MuonQualityWord m_isMuonBits
muon selection parameters
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:816
MuonParameters::CaloTag
@ CaloTag
Definition: MuonParamDefs.h:64
x
#define x
Trk::numberOfSCTHoles
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:73
Analysis::Muon::numberOfMDTHoles
int numberOfMDTHoles() const
Get Muon Spectrometer MDT holes information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:612
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
Analysis::Muon::m_matchNumberDoF
int m_matchNumberDoF
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:771
I4Momentum::hlv
virtual CLHEP::HepLorentzVector hlv() const =0
CLHEP HepLorentzVector.
ParticleImpl< ::Analysis::MuonNavigation, ::P4ImplIPtCotThPhiM >::operator=
ParticleImpl & operator=(const ParticleImpl &rhs)
Assignment operator.
Definition: ParticleImpl.h:356
Analysis::Muon::isAuthor
bool isAuthor(const unsigned int author) const
check if this author is among the list of authors of this Muon - obviously, the primary author MUST b...
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:314
Analysis::Muon::numberOfTRTHighThresholdHits
int numberOfTRTHighThresholdHits() const
Get number of TRT High Threshold hits from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:555
Analysis::Muon::hasMuonExtrapolatedTrackParticle
bool hasMuonExtrapolatedTrackParticle() const
test if associated MS TrackParticle (extrapolated to IP) is available
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:294
Analysis::Muon::numberOfCSCEtaHoles
int numberOfCSCEtaHoles() const
Get Muon Spectrometer CSC Eta Holes information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:640
MuonParameters::MuonCombinedRefit
@ MuonCombinedRefit
Definition: MuonParamDefs.h:67
Analysis::Muon::set_inDetTrackParticle
void set_inDetTrackParticle(const Rec::TrackParticleContainer *, const Rec::TrackParticle *)
Set the inner detector track particle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:732
MuonParameters::MuTagIMO
@ MuTagIMO
Definition: MuonParamDefs.h:66
Analysis::Muon::set_innerExtrapolatedTrackParticle
void set_innerExtrapolatedTrackParticle(const Rec::TrackParticleContainer *, const Rec::TrackParticle *)
set the extrapolated track particle from the inner detector.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:798
Analysis::Muon::m_caloMuonAlsoFoundByMuonReco
unsigned short m_caloMuonAlsoFoundByMuonReco
flag the calo muon if it is also reconstruction by the standart muon algorithms
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:806
Analysis::Muon::numberOfRPCPhiHits
int numberOfRPCPhiHits() const
Get Muon Spectrometer RPC Phi Hits information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:647
Analysis::Muon::numberOfSCTSharedHits
int numberOfSCTSharedHits() const
Get number of Silicon SCT shared hits from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:580
Analysis::Muon::numberOfRPCPhiHoles
int numberOfRPCPhiHoles() const
Get Muon Spectrometer RPC Phi Holes information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:654
ParticleImpl< ::Analysis::MuonNavigation, ::P4ImplIPtCotThPhiM >
MuonParameters
Definition: MuonParamDefs.h:22
Analysis::Muon::m_isMuonLikelihood
float m_isMuonLikelihood
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:817
ParticleImpl< ::Analysis::MuonNavigation, ::P4ImplIPtCotThPhiM >::p
virtual double p() const
mass momentum magnitude
Definition: ParticleImpl.h:484
Analysis::Muon::numberOfPixelHoles
int numberOfPixelHoles() const
Get number of Pixel holes from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:574
Analysis::Muon::parameter
const std::vector< std::pair< MuonParameters::ParamDef, float > > & parameter() const
vector of parameter pairs for this Muon - isolation energy in some cone for example
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:214
Analysis::Muon::numberOfSegments
unsigned int numberOfSegments() const
Access to the number of muon segments.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:537
Analysis::Muon::m_associatedEtaDigits
std::vector< int > m_associatedEtaDigits
Low Pt muon stuff.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:777
Analysis::Muon::numberOfSCTHits
int numberOfSCTHits() const
Get number of Silicon SCT hits from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:539
MuonParameters::MuGirlLowBeta
@ MuGirlLowBeta
Definition: MuonParamDefs.h:63
Analysis::Muon::add_author
bool add_author(MuonParameters::Author author)
the add_author method returns a bool:
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:368
MuonParameters::Author
Author
do not change the order of these enums.
Definition: MuonParamDefs.h:39
Analysis::Muon::combinedMuonTrackParticle
const Rec::TrackParticle * combinedMuonTrackParticle() const
Access to the TrackParticles.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:335
Trk::TrackInfo::patternRecoInfo
bool patternRecoInfo(const TrackPatternRecoInfo &pattern) const
Access method for pattern recognition algorithm.
Analysis::Muon::m_combinedMuonTrackParticle
ElementLink< Rec::TrackParticleContainer > m_combinedMuonTrackParticle
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:786
INavigationToken::trySetObject
virtual bool trySetObject(const INavigable *child)=0
Analysis::Muon::set_muonSegments
void set_muonSegments(const Trk::SegmentCollection *, const std::vector< const Trk::Segment * > &)
set the combined muon track particle
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:745
lumiFormat.i
int i
Definition: lumiFormat.py:92
Analysis::Muon::m_muonSegments
ElementLinkVector< Trk::SegmentCollection > m_muonSegments
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:783
Trk::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:81
Analysis::Muon::m_muonSpectrometerTrackParticle
ElementLink< Rec::TrackParticleContainer > m_muonSpectrometerTrackParticle
needed by MOORE
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:791
Analysis::Muon::energyLoss
std::pair< double, double > energyLoss() const
energy loss and its uncertainty in the calorimeter
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:511
MuonParameters::MuGirl
@ MuGirl
Definition: MuonParamDefs.h:61
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
Analysis::Muon::addSegment
void addSegment(const Trk::SegmentCollection *, const Trk::Segment *)
set the combined muon track particle
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:752
Analysis::Muon::numberOfTGCEtaHits
int numberOfTGCEtaHits() const
Get Muon Spectrometer TGC Eta Hits information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:689
Trk::Segment
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:56
Analysis::Muon::m_cluster
ElementLink< CaloClusterContainer > m_cluster
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:788
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
Trk::EnergyLoss::deltaE
double deltaE() const
returns the
Analysis::Muon::numberOfRPCEtaHoles
int numberOfRPCEtaHoles() const
Get Muon Spectrometer RPC Eta Holes information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:668
INavigationToken
Definition: INavigationToken.h:24
Analysis::Muon::numberOfTGCEtaHoles
int numberOfTGCEtaHoles() const
Get Muon Spectrometer TGC Eta Holes information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:696
Analysis::Muon::numberOfTrackSummaryTypes
int numberOfTrackSummaryTypes(unsigned int type=0) const
number of summaryTypes for track from primary author
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:718
MuonParameters::ParamDef
ParamDef
Enum for parameter indexes.
Definition: MuonParamDefs.h:111
MuonParameters::MOORE
@ MOORE
Definition: MuonParamDefs.h:58
Analysis::Muon::isCaloMuonId
bool isCaloMuonId() const
Method for querying primary identification mechanism: muon identified solely by calorimeter based ide...
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:457
Analysis::Muon::muonExtrapolatedTrackParticle
const Rec::TrackParticle * muonExtrapolatedTrackParticle() const
Access to the TrackParticles.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:327
Analysis::Muon::numberOfInnermostPixelLayerSharedHits
int numberOfInnermostPixelLayerSharedHits() const
Get number of shared hits or holes from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:563
MuonParameters::STACO
@ STACO
Definition: MuonParamDefs.h:56
INavigable
Definition: INavigable.h:18
MuonCaloEnergyContainer
Data object for a StoreGate container holding a vector of CaloEnergy, the detailed energy loss descri...
Definition: MuonCaloEnergyContainer.h:19
Analysis::Muon::m_hasMuonExtrapolatedTrackParticle
bool m_hasMuonExtrapolatedTrackParticle
test for TrackParticles
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:766
NavigationToken::setObject
void setObject(const_child_ptr data)
Definition: NavigationToken.h:252
Trk::legacy_numberOfInnermostPixelLayerSharedHits
@ legacy_numberOfInnermostPixelLayerSharedHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:175
DataVector< Trk::Segment >
Analysis::Muon::copySegmentLinkVector
void copySegmentLinkVector(const ElementLinkVector< Trk::SegmentCollection > &segments)
function to copy muon segment element links into this muon
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:259
Analysis::Muon::numberOfTGCPhiHits
int numberOfTGCPhiHits() const
Get Muon Spectrometer TGC Phi Hits information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:675
IAthenaBarCode
Definition: AthenaKernel/AthenaKernel/IAthenaBarCode.h:48
Trk::numberOfTgcEtaHits
@ numberOfTgcEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:106
Analysis::Muon::numberOfGangedPixels
int numberOfGangedPixels() const
number of Ganged Pixel for track from primary author
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:703
Analysis::Muon::m_bestMatch
bool m_bestMatch
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:774
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
Analysis::Muon::numberOfSCTHoles
int numberOfSCTHoles() const
Get number of Silicon SCT holes from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:586
Trk::numberOfTgcPhiHoles
@ numberOfTgcPhiHoles
number of TGC Phi measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:124
Analysis::Muon::numberOfCSCPhiHoles
int numberOfCSCPhiHoles() const
Get Muon Spectrometer CSC Phi Holes information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:626
Trk::numberOfGangedPixels
@ numberOfGangedPixels
number of Ganged Pixels flagged as fakes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:61
Analysis::Muon::m_innerExtrapolatedTrackParticle
ElementLink< Rec::TrackParticleContainer > m_innerExtrapolatedTrackParticle
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:785
ElementLinkVector
ElementLinkVector implementation for standalone ROOT.
Definition: AthLinks/ElementLinkVector.h:27
Analysis::Muon::numberOfPixelHits
int numberOfPixelHits() const
Get number of Pixel hits from ID trackparticle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:531
Analysis::Muon::set_combinedMuonTrackParticle
void set_combinedMuonTrackParticle(const Rec::TrackParticleContainer *, const Rec::TrackParticle *)
set the combined muon track particle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:813
Trk::numberOfTRTHits
@ numberOfTRTHits
number of TRT outliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:79
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::numberOfRpcPhiHits
@ numberOfRpcPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:109
MuonParameters::Muonboy
@ Muonboy
Definition: MuonParamDefs.h:55
Muon::nsw::unknown
@ unknown
Definition: NSWTriggerElink.h:36
Analysis
The namespace of all packages in PhysicsAnalysis/JetTagging.
Definition: BTaggingCnvAlg.h:20
Analysis::Muon::hasGlobalMuonTrackFit
bool hasGlobalMuonTrackFit() const
flag if the there was re-fit of ID and MS hits, currently muons from MuidCB, CombinedMuonFit and MuGi...
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:473
ParticleImpl< ::Analysis::MuonNavigation, ::P4ImplIPtCotThPhiM >::set_charge
virtual void set_charge(ChargeType x)
Definition: ParticleImpl.h:916
Trk::numberOfTgcEtaHoles
@ numberOfTgcEtaHoles
number of TGC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:122
MuonParameters::ExtrapolateMuonToIP
@ ExtrapolateMuonToIP
Definition: MuonParamDefs.h:68
Analysis::Muon::isCombinedMuon
bool isCombinedMuon() const
method for querying primary identification mechanism: muon identified by successfully combining a ful...
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:421
Analysis::Muon::m_matchChi2
float m_matchChi2
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:770
Analysis::Muon::isSegmentTaggedMuon
bool isSegmentTaggedMuon() const
Method for querying primary identification mechanism: muon identified by inner-detector seeded identi...
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:448
Rec::TrackParticleContainer
Definition: Reconstruction/Particle/Particle/TrackParticleContainer.h:33
NavigationToken
Definition: NavigationToken.h:50
MuonParameters::MuidSA
@ MuidSA
Definition: MuonParamDefs.h:59
Analysis::Muon::muonSegmentLink
const ElementLinkVector< Trk::SegmentCollection > & muonSegmentLink() const
Access to vector smart pointers (ElementLink) to muon segments.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:344
Analysis::Muon::set_parameter
void set_parameter(MuonParameters::ParamDef index, double value, bool overwrite=false)
set a parameter in the MuonParamDefs.h
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:888
Analysis::Muon::numberOfMDTHits
int numberOfMDTHits() const
Get Muon Spectrometer MDT Hits information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:605
Rec::TrackParticle
Definition: Reconstruction/Particle/Particle/TrackParticle.h:47
Analysis::Muon::set_statCombinedMuonTrackParticle
void set_statCombinedMuonTrackParticle(const Rec::TrackParticleContainer *, const Rec::TrackParticle *)
set the combined muon track particle for statistical combination.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:830
MuonParameters::CaloMuonId
@ CaloMuonId
Definition: MuonParamDefs.h:62
MuonParameters::MuidCo
@ MuidCo
Definition: MuonParamDefs.h:60
Analysis::Muon::numberOfCSCEtaHits
int numberOfCSCEtaHits() const
Get Muon Spectrometer CSC Eta Hits information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:633
Analysis::Muon::numberOfRPCEtaHits
int numberOfRPCEtaHits() const
Get Muon Spectrometer RPC Eta Hits information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:661
Analysis::Muon::m_allAuthors
uint16_t m_allAuthors
all authors - all the authors of this this Muon
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:813
ElementLinkVector::size
size_type size() const
Definition: AthLinks/ElementLinkVector.h:292
Analysis::Muon::set_energyLoss
void set_energyLoss(const CaloEnergy *caloEnergy)
set the energy loss in the calorimeter
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:586
ParticleImpl< ::Analysis::MuonNavigation, ::P4ImplIPtCotThPhiM >::set4Mom
virtual void set4Mom(const I4Momentum &p4)
Definition: ParticleImpl.h:875
Analysis::Muon::set_numberOfAssociatedEtaDigits
void set_numberOfAssociatedEtaDigits(int nMDT, int nCSC, int nRPC, int nTGC)
Set the LowPt stuff.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:840
Trk::TrackInfo::SiSpacePointsSeedMaker_ForwardTracks
@ SiSpacePointsSeedMaker_ForwardTracks
Entries allowing to distinguish different seed makers.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:241
Analysis::Muon::~Muon
~Muon()
Destructor.
Analysis::Muon::fillToken
virtual void fillToken(INavigationToken &thisToken) const
navigation method
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:918
INavigable4Momentum
Definition: INavigable4Momentum.h:21
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CaloCondBlobAlgs_fillNoiseFromASCII.author
string author
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:26
ElementLinkVector::ELVIterator
Definition: AthLinks/ElementLinkVector.h:110
Analysis::Muon::m_isAlsoFoundByCaloMuonId
bool m_isAlsoFoundByCaloMuonId
this muon is also found by the Calo Muon ID reconstruction algorithm
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:800
Analysis::Muon::associatedPhiDigits
const std::vector< int > & associatedPhiDigits() const
Access to the MS phi hits associated by segment-tagged muons.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:486
Muon.h
Analysis::Muon::numberOfTGCPhiHoles
int numberOfTGCPhiHoles() const
Get Muon Spectrometer TGC Phi Holes information for MS track or tagged segments.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:682
Analysis::Muon::set_numberOfAssociatedPhiDigits
void set_numberOfAssociatedPhiDigits(int nMDT, int nCSC, int nRPC, int nTGC)
Set the LowPt - Associated Phi Digits.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:848
Analysis::Muon::m_hasCombinedMuonTrackParticle
bool m_hasCombinedMuonTrackParticle
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:767
Trk::SummaryType
SummaryType
enumerates the different types of information stored in Summary.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:45
Trk::numberOfRpcEtaHits
@ numberOfRpcEtaHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:110
Trk::TrackSummary::get
int get(const SummaryType &type) const
returns the summary information for the passed SummaryType.
python.CaloScaleNoiseConfig.default
default
Definition: CaloScaleNoiseConfig.py:79
MuonParameters::segmentChi2OverDoF
@ segmentChi2OverDoF
Definition: MuonParamDefs.h:141
Analysis::Muon::set_muonExtrapolatedTrackParticle
void set_muonExtrapolatedTrackParticle(const Rec::TrackParticleContainer *, const Rec::TrackParticle *)
set the muon spectrometer extrapolated track particle.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:781
MuonParameters::CaloLikelihood
@ CaloLikelihood
Definition: MuonParamDefs.h:65
Analysis::Muon::m_transientOuterMatchChi2
Trk::FitQuality m_transientOuterMatchChi2
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:773
Trk::numberOfCscPhiHits
@ numberOfCscPhiHits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:107
readCCLHist.float
float
Definition: readCCLHist.py:83
Analysis::Muon::set_numberOfSegmentEtaDigits
void set_numberOfSegmentEtaDigits(int nMDT, int nCSC, int nRPC, int nTGC)
Set Segment Eta Digits.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:863
Analysis::Muon::associatedEtaDigits
const std::vector< int > & associatedEtaDigits() const
Access to the MS eta hits associated by segment-tagged muons.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:484
python.Dumpers.FitQuality
FitQuality
Definition: Dumpers.py:63
Trk::numberOfRpcEtaHoles
@ numberOfRpcEtaHoles
number of RPC Eta measurements missing from the track
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:116
Trk::numberOfMdtHits
@ numberOfMdtHits
number of mdt hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:103
Analysis::Muon::operator=
Muon & operator=(const Muon &rhs)
Assignment operator.
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:269
Analysis::Muon::author
MuonParameters::Author author() const
return the primary author of this Muon - the algorithm that is most likely to reconstruct prompt muon...
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:111
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
Trk::TrackParticleBase::info
const TrackInfo & info() const
returns the info of the track.
Definition: TrackParticleBase.h:276
Analysis::Muon::m_muonExtrapolatedTrackParticle
ElementLink< Rec::TrackParticleContainer > m_muonExtrapolatedTrackParticle
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:784
Analysis::Muon::isStandAloneMuon
bool isStandAloneMuon() const
method for querying primary identification mechanism: muon identified by spectrometer track (that is ...
Definition: Reconstruction/MuonIdentification/muonEvent/src/Muon.cxx:431
Analysis::Muon::hasInDetTrackParticle
bool hasInDetTrackParticle() const
test if associated indet TrackParticle is available
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:292
Analysis::Muon::m_isCorrected
bool m_isCorrected
AOD to AOD correction.
Definition: Reconstruction/MuonIdentification/muonEvent/muonEvent/Muon.h:809