ATLAS Offline Software
Muon_v1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Misc includes
6 #include <vector>
7 
8 // EDM include(s):
14 
15 // Local include(s):
17 #include "MuonAccessors_v1.h"
19 // Athena-only includes
20 #ifndef XAOD_ANALYSIS
21 // #include "TrkParameters/MeasuredPerigee.h"
22 #endif
23 
24 namespace xAOD {
25 
27  : IParticle() {
28  }
29 
31  : IParticle(rhs) //IParticle does not have a copy constructor. AuxElement has one with same behavior as default ctor
32  {
33  this->makePrivateStore(rhs);
34  }
35 
37  if(this == &rhs) return *this;
38 
39  if( ( ! hasStore() ) && ( ! container() ) ) {
41  }
42  this->IParticle::operator=( rhs );
43 
44  return *this;
45  }
46 
48  }
49 
54 
55  // AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( Muon_v1, float, double, e)
56 
57  double Muon_v1::e() const {
58  // FIXME - optimise?
59  return genvecP4().E();
60  }
61 
62  double Muon_v1::m() const {
63  return 105.6583715;//FIXME - get this from someplace central? How heavy is TDatabasePDG::Instance()->GetParticle(pdg)?
64  }
65 
66  void Muon_v1::setP4(double pt, double eta, double phi) {
67  static const Accessor< float > acc1( "pt" );
68  static const Accessor< float > acc2( "eta" );
69  static const Accessor< float > acc3( "phi" );
70  acc1( *this )=pt;
71  acc2( *this )=eta;
72  acc3( *this )=phi;
73  }
74 
75  double Muon_v1::rapidity() const {
76  return genvecP4().Rapidity();
77  }
78 
81  p4.SetPtEtaPhiM( pt(), eta(), phi(), m() );
82  return p4;
83  }
84 
85  // depend on return value optimization
87  return GenVecFourMom_t(pt(), eta(), phi(), m());
88  }
89 
90 // float Muon_v1::charge() const {
91 // if (primaryTrackParticle()) return primaryTrackParticle()->charge();
92 // // something has gone wrong!
93 // throw std::runtime_error("No link to primary TrackParticle!");
94 // }
95 
97  return Type::Muon;
98  }
99 
102 
103  AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( Muon_v1, uint16_t, allAuthors, setAllAuthors)
104 
105 
106  void Muon_v1::addAllAuthor ( const Author author ){
107  static const Accessor< uint16_t > acc( "allAuthors" );
108  acc(*this) |= 1<<static_cast<unsigned int>(author);
109  }
110 
111  bool Muon_v1::isAuthor ( const Author author ) const{
112  static const Accessor< uint16_t > acc( "allAuthors" );
113  return (acc(*this)& (1<<static_cast<unsigned int>(author)));
114  }
115 
116  AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( Muon_v1, uint16_t, Muon_v1::MuonType, muonType)
117  AUXSTORE_PRIMITIVE_SETTER_WITH_CAST( Muon_v1, uint16_t, Muon_v1::MuonType, muonType, setMuonType)
118 
119  bool Muon_v1::summaryValue(uint8_t& value, const SummaryType information) const {
120  // Here we want to check if this information has been added to the Muon, and use this first if so.
121  // @todo ?Could further optimise the below, to see first if the SummaryType value is one of the ones we write to Muons?
122  // @todo ?Is there a better way than catching the exception?
123  try {
125  value = ( *acc )( *this );
126  return true;
127  } catch ( SG::ExcBadAuxVar& ) {}
128 
129  // Okay - fallback: try to get from TrackParticle.
130  const ElementLink< TrackParticleContainer >& el= primaryTrackParticleLink();
131  if (!el.isValid()) return false;
132  return (*el)->summaryValue(value,information);
133  }
134 
135  void Muon_v1::setSummaryValue( uint8_t value, const SummaryType information ) {
137  // Set the value:
138  ( *acc )( *this ) = value;
139  }
140 
141  // No set method for 'float' values as not expected to be needed
142 
143  bool Muon_v1::summaryValue(float& value, const SummaryType information) const {
145  if (!el.isValid()) return false;
146  return (*el)->summaryValue(value,information);
147  }
148 
149  float Muon_v1::floatSummaryValue(const SummaryType information) const {
151  return ( *acc )( *this );
152  }
153 
156  return ( *acc )( *this );
157  }
158 
159  bool Muon_v1::summaryValue(uint8_t& value, const MuonSummaryType information) const {
160  const Muon_v1::Accessor< uint8_t >* acc = muonTrackSummaryAccessorV1( information );
161  if( ! acc ) return false;
162  if( ! acc->isAvailable( *this ) ) return false;
163 
164  // Retrieve the value:
165  value = ( *acc )( *this );
166  return true;
167  }
168 
169  float Muon_v1::uint8MuonSummaryValue(const MuonSummaryType information) const{
170  const Muon_v1::Accessor< uint8_t >* acc = muonTrackSummaryAccessorV1( information );
171  return ( *acc )( *this );
172  }
173 
174 
176  const Muon_v1::Accessor< uint8_t >* acc = muonTrackSummaryAccessorV1( information );
177  // Set the value:
178  ( *acc )( *this ) = value;
179  }
180 
181  bool Muon_v1::parameter(float& value, const Muon_v1::ParamDef information) const {
182  const xAOD::Muon_v1::Accessor< float >* acc = parameterAccessorV1<float>( information );
183  if( ! acc ) return false;
184  if( ! acc->isAvailable( *this ) ) return false;
185 
186  // Retrieve the value:
187  value = ( *acc )( *this );
188  return true;
189  }
190 
192  const xAOD::Muon_v1::Accessor< float >* acc = parameterAccessorV1<float>( information );
193  return ( *acc )( *this );
194  }
195 
196  void Muon_v1::setParameter(float value, const Muon_v1::ParamDef information){
197  const xAOD::Muon_v1::Accessor< float >* acc = parameterAccessorV1<float>( information );
198  if( ! acc ) throw std::runtime_error("Muon_v1::setParameter - no float accessor for paramdef number: "+std::to_string(information));
199 
200  // Set the value:
201  ( *acc )( *this ) = value;
202  }
203 
204  bool Muon_v1::parameter(int& value, const Muon_v1::ParamDef information) const {
205  const xAOD::Muon_v1::Accessor< int >* acc = parameterAccessorV1<int>( information );
206  if( ! acc ) return false;
207  if( ! acc->isAvailable( *this ) ) return false;
208 
209  // Retrieve the value:
210  value = ( *acc )( *this );
211  return true;
212  }
213 
215  const xAOD::Muon_v1::Accessor< int >* acc = parameterAccessorV1<int>( information );
216  return ( *acc )( *this );
217  }
218 
219  void Muon_v1::setParameter(int value, const Muon_v1::ParamDef information){
220  const xAOD::Muon_v1::Accessor< int >* acc = parameterAccessorV1<int>( information );
221  if( ! acc ) throw std::runtime_error("Muon_v1::setParameter - no int accessor for paramdef number: "+std::to_string(information));
222 
223  // Set the value:
224  ( *acc )( *this ) = value;
225  }
226 
227  xAOD::Muon_v1::Quality Muon_v1::quality() const {
228  static const Accessor< uint8_t > acc( "quality" );
229  uint8_t temp = acc( *this );
230  return static_cast<Quality>(temp&3);
231  }
232 
233  void Muon_v1::setQuality(xAOD::Muon_v1::Quality value) {
234  static const Accessor< uint8_t > acc( "quality" );
235  uint8_t temp = static_cast< uint8_t >(value);
236  acc( *this ) = acc( *this ) & ~(0x7); // Reset the first 3 bits.
237  acc( *this ) |= temp;
238  return;
239  }
240 
241  bool Muon_v1::passesIDCuts() const {
242  static const Accessor< uint8_t > acc( "quality" );
243  uint8_t temp = acc( *this );
244  // We use 4th bit for 'passesIDCuts'
245  return temp&8;
246  }
247 
249  static const Accessor< uint8_t > acc( "quality" );
250  // We use 4th bit for 'passesIDCuts'
251  if (value) acc( *this ) |= 8;
252  else acc( *this ) &= 247;
253  return;
254  }
255 
257  static const Accessor< uint8_t > acc( "quality" );
258  uint8_t temp = acc( *this );
259  // We use 5th bit for 'passesHighPtCuts'
260  return temp&16;
261  }
262 
264  static const Accessor< uint8_t > acc( "quality" );
265  // We use 5th bit for 'passesHighPtCuts'
266  if (value) acc( *this ) |= 16;
267  else acc( *this ) &= 239;
268  return;
269  }
270 
271  // AUXSTORE_PRIMITIVE_GETTER_WITH_CAST( Muon_v1, uint8_t, Muon_v1::Quality,
272  // quality )
273  // AUXSTORE_PRIMITIVE_SETTER_WITH_CAST( Muon_v1, uint8_t, Muon_v1::Quality,
274  // quality, setQuality )
275 
276  // AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( Muon_v1, bool, passesIDCuts, setPassesIDCuts)
277  // AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( Muon_v1, bool, passesHighPtCuts, setPassesHighPtCuts)
278 
279  bool Muon_v1::isolation(float& value, const Iso::IsolationType information) const {
280  const SG::AuxElement::Accessor< float >* acc = getIsolationAccessor( information );
281 
282  if( ! acc ) return false;
283  if( !acc->isAvailable( *this) ) return false;
284 
285  // Retrieve the value:
286  value = ( *acc )( *this );
287  return true;
288  }
289 
290  float Muon_v1::isolation( const Iso::IsolationType information) const {
291  const SG::AuxElement::Accessor< float >* acc = getIsolationAccessor( information );
292  if( !acc ) throw std::runtime_error( "Unknown/Unavailable Isolation type requested" );
293  return ( *acc )( *this );
294  }
295 
296  void Muon_v1::setIsolation(float value, const Iso::IsolationType information){
297  const SG::AuxElement::Accessor< float >* acc = getIsolationAccessor( information );
298  if( !acc ) throw std::runtime_error( "Unknown/Unavailable Isolation type requested" );
299  // Set the value:
300  ( *acc )( *this ) = value;
301  }
302 
305  const Iso::IsolationCorrectionParameter param) const{
307  if( !acc.isAvailable( *this) ) return false;
308  // Retrieve the value:
309  value = acc( *this );
310  return true;
311  }
312 
314  const Iso::IsolationCorrectionParameter param) const{
315 
317  if( !acc.isAvailable( *this) ) throw std::runtime_error( "Unknown/Unavailable Isolation correction requested" );
318  return acc( *this );
319  }
320 
324  // Set the value:
325  acc( *this ) = value;
326  return true;
327  }
328 
331  if( !acc.isAvailable( *this) ) return false;
332  // Retrieve the value:
333  value = acc( *this );
334  return true;
335  }
336 
338 
340  if( !acc.isAvailable( *this) ) throw std::runtime_error( "Unknown/Unavailable Isolation correction requested" );
341  return acc( *this );
342  }
343 
346  // Set the value:
347  acc( *this ) = value;
348  return true;
349  }
350 
351  bool Muon_v1::isolationCorrectionBitset(std::bitset<32>& value, const Iso::IsolationFlavour flavour ) const{
353  if( !acc.isAvailable( *this) ) return false;
354  // Retrieve the value:
355  value = std::bitset<32>(acc( *this ));
356  return true;
357  }
358 
359  std::bitset<32> Muon_v1::isolationCorrectionBitset(const Iso::IsolationFlavour flavour ) const{
361  if( !acc.isAvailable( *this) ) throw std::runtime_error( "Unknown/Unavailable Isolation BitSet requested" );
362  return std::bitset<32>( acc( *this ) );
363  }
364 
367  // Set the value:
368  acc( *this ) = value;
369  return true;
370  }
371 
373  AUXSTORE_OBJECT_GETTER( Muon_v1, ElementLink< TrackParticleContainer >, muonSpectrometerTrackParticleLink)
374  AUXSTORE_OBJECT_GETTER( Muon_v1, ElementLink< TrackParticleContainer >, extrapolatedMuonSpectrometerTrackParticleLink)
375  AUXSTORE_OBJECT_GETTER( Muon_v1, ElementLink< TrackParticleContainer >, msOnlyExtrapolatedMuonSpectrometerTrackParticleLink)
377 
378  const ElementLink< TrackParticleContainer >& Muon_v1::primaryTrackParticleLink() const{
379  MuonType type = muonType();
380  switch ( type ) {
381  case Combined :
382  case SiliconAssociatedForwardMuon :
383  return combinedTrackParticleLink();
384  break;
385  case SegmentTagged :
386  case CaloTagged :
387  return inDetTrackParticleLink();
388  break;
389  case MuonStandAlone :
390  {
391  // Not checking if links are valid here - this is the job of the client (as per the cases above).
392  // But we DO check that the link is available, so we can check for both types of links.
393 
394  static const Accessor< ElementLink< TrackParticleContainer > > acc1( "extrapolatedMuonSpectrometerTrackParticleLink" );
395  if ( acc1.isAvailable( *this ) && acc1( *this ).isValid() ) {
396  return acc1( *this );
397  }
398 
399  static const Accessor< ElementLink< TrackParticleContainer > > acc2( "msOnlyExtrapolatedMuonSpectrometerTrackParticleLink" );
400  if ( acc2.isAvailable( *this ) && acc2( *this ).isValid() ) {
401  return acc2( *this );
402  }
403 
404  static const Accessor< ElementLink< TrackParticleContainer > > acc3( "muonSpectrometerTrackParticleLink" );
405  if ( acc3.isAvailable( *this ) && acc3( *this ).isValid()) {
406  return acc3( *this );
407  }
408  // We could also just return a dummy EL here, but the link is part of the aux store, and so it might be that something bad has happened...?
409  throw std::runtime_error("Type is MuonStandAlone but no available link to return!");
410  }
411  default:
412  throw std::runtime_error("Unknown primary type - not sure which track particle to return!");
413  }
414  // static ElementLink< TrackParticleContainer > dummy;
415  // return dummy;
416  }
417 
419 
420  MuonType type = muonType();
421  switch( type ) {
422  case Combined:
423  case SiliconAssociatedForwardMuon :
424  {
425  static const Accessor< ElementLink< TrackParticleContainer > > acc( "combinedTrackParticleLink" );
426  if( ! acc.isAvailable( *this ) ) return nullptr;
427 
428  const ElementLink< TrackParticleContainer >& link = acc( *this );
429  if( ! link.isValid() ) return nullptr;
430 
431  return *link;
432  }
433  case SegmentTagged:
434  case CaloTagged :
435  {
436  static const Accessor< ElementLink< TrackParticleContainer > > acc( "inDetTrackParticleLink" );
437  if( ! acc.isAvailable( *this ) ) return nullptr;
438 
439  const ElementLink< TrackParticleContainer >& link = acc( *this );
440  if( ! link.isValid() ) return nullptr;
441 
442  return *link;
443  }
444  case MuonStandAlone :
445  {
446  // Want to return link to extrapolated MS track particle if possible.
447  static const Accessor< ElementLink< TrackParticleContainer > > acc1( "extrapolatedMuonSpectrometerTrackParticleLink" );
448  if ( acc1.isAvailable( *this ) ) {
449  const ElementLink< TrackParticleContainer >& link = acc1( *this );
450  if ( link.isValid() ) return *link;
451  }
452 
453  //if no, maybe the MS-only extrapolated track particle?
454  static const Accessor< ElementLink< TrackParticleContainer > > acc2( "msOnlyExtrapolatedMuonSpectrometerTrackParticleLink" );
455  if ( acc2.isAvailable( *this ) ) {
456  const ElementLink< TrackParticleContainer >& link = acc2( *this );
457  if ( link.isValid() ) return *link;
458  }
459 
460  // Try fallback (non-extrapolated MS track particle)...
461  static const Accessor< ElementLink< TrackParticleContainer > > acc3( "muonSpectrometerTrackParticleLink" );
462  if ( acc3.isAvailable( *this ) ) {
463  const ElementLink< TrackParticleContainer >& link = acc3( *this );
464  if ( link.isValid() ) return *link;
465  }
466 
467  return nullptr;
468  }
469  default:
470  {
471  // No valid link.
472  return nullptr;
473  }
474  }
475  }
476 
477  const ElementLink< TrackParticleContainer >& Muon_v1::trackParticleLink( Muon_v1::TrackParticleType type) const{
478  switch ( type ) {
479  case Primary :
480  return primaryTrackParticleLink();
481  break;
482  case CombinedTrackParticle :
483  return combinedTrackParticleLink();
484  break;
485  case InnerDetectorTrackParticle :
486  return inDetTrackParticleLink();
487  break;
488  case MuonSpectrometerTrackParticle :
490  break;
491  case ExtrapolatedMuonSpectrometerTrackParticle :
493  break;
494  case MSOnlyExtrapolatedMuonSpectrometerTrackParticle :
496  break;
497  default:
498  throw std::runtime_error("Unknown TrackParticleType - not sure which track particle to return!");
499  }
500  // static ElementLink< TrackParticleContainer > dummy;
501  // return dummy;
502  }
503 
504  const xAOD::TrackParticle* Muon_v1::trackParticle( Muon_v1::TrackParticleType type) const{
505  // TODO - perhaps we can get rid of this try/catch clause?
506  try {
507  // Get the ElementLink pointing to the requested track particle:
510 
511  // If it's invalid, return a null pointer:
512  if( ! el.isValid() ) {
513  return nullptr;
514  }
515 
516  // If it's valid, let's de-reference it:
517  return *el;
518  } catch ( SG::ExcBadAuxVar& ) {
519  return nullptr;
520  }
521  }
522 
524  switch ( type ) {
525  case InnerDetectorTrackParticle :
526  static const Accessor< ElementLink< TrackParticleContainer > > acc1( "inDetTrackParticleLink" );
527  acc1(*this)=link;
528  break;
529  case MuonSpectrometerTrackParticle :
530  static const Accessor< ElementLink< TrackParticleContainer > > acc2( "muonSpectrometerTrackParticleLink" );
531  acc2(*this)=link;
532  break;
533  case CombinedTrackParticle :
534  static const Accessor< ElementLink< TrackParticleContainer > > acc3( "combinedTrackParticleLink" );
535  acc3(*this)=link;
536  break;
537  case ExtrapolatedMuonSpectrometerTrackParticle :
538  static const Accessor< ElementLink< TrackParticleContainer > > acc4( "extrapolatedMuonSpectrometerTrackParticleLink" );
539  acc4(*this)=link;
540  break;
541  case MSOnlyExtrapolatedMuonSpectrometerTrackParticle :
542  static const Accessor< ElementLink< TrackParticleContainer > > acc5( "msOnlyExtrapolatedMuonSpectrometerTrackParticleLink" );
543  acc5(*this)=link;
544  break;
545  case Primary :
546  default:
547  throw std::runtime_error("Unknown or Primary TrackParticleType - not sure which track particle to set!");
548  }
549  }
550 
552  const CaloCluster* Muon_v1::cluster() const {
553 
554  static const Accessor< ElementLink< TrackParticleContainer > > acc( "inDetTrackParticleLink" );
555  if( ! acc.isAvailable( *this ) ) {
556  return nullptr;
557  }
558  const ElementLink< TrackParticleContainer >& link = acc( *this );
559  if( ! link.isValid() ) {
560  return nullptr;
561  }
562 
563  // Get the ElementLink pointing to the calo cluster:
564  const ElementLink< CaloClusterContainer >& el = clusterLink();
565  // If it's invalid, return a null pointer:
566  if( ! el.isValid() ) {
567  return nullptr;
568  }
569  // If it's valid, let's de-reference it:
570  return *el;
571  }
572 
576  energyLossType, setEnergyLossType )
577 
578  AUXSTORE_OBJECT_SETTER_AND_GETTER( Muon_v1, std::vector< ElementLink< xAOD::MuonSegmentContainer > >, muonSegmentLinks, setMuonSegmentLinks)
579 
580  static const SG::AuxElement::Accessor< std::vector< ElementLink< MuonSegmentContainer > > > muonSegmentsAcc( "muonSegmentLinks" );
581  size_t Muon_v1::nMuonSegments() const {
582  // If a link was not set (yet), return zero.
583  if( ! muonSegmentsAcc.isAvailable( *this ) ) {
584  return 0;
585  }
586  return muonSegmentsAcc(*this).size();
587  }
588 
590  // If a Trk::Track link was not set (yet), return a dummy object:
591  // FIXME - maybe
592  if( ! muonSegmentsAcc.isAvailable( *this ) ) {
594  return dummy;
595  }
596  return muonSegmentsAcc(*this).at(i);
597  }
598 
599  const MuonSegment* Muon_v1::muonSegment( size_t i ) const{
600  // Get the ElementLink pointing to the requested muon segment:
602  muonSegmentLink( i );
603  // If it's invalid, return a null pointer:
604  if( ! el.isValid() ) {
605  return nullptr;
606  }
607  // If it's valid, let's de-reference it:
608  return *el;
609  }
610 } // namespace xAOD
611 
python.CaloBCIDAvgAlgConfig.acc3
def acc3
Definition: CaloBCIDAvgAlgConfig.py:68
xAOD::Muon_v1::primaryTrackParticleLink
const ElementLink< TrackParticleContainer > & primaryTrackParticleLink() const
Definition: Muon_v1.cxx:378
MuonAccessors_v1.h
xAOD::AUXSTORE_PRIMITIVE_SETTER_AND_GETTER
AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(BTagging_v1, float, IP2D_pb, setIP2D_pb) AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(BTagging_v1
xAOD::Muon_v1::rapidity
virtual double rapidity() const
The true rapidity (y) of the particle.
Definition: Muon_v1.cxx:75
xAOD::trackSummaryAccessorV1< float >
const SG::AuxElement::Accessor< float > * trackSummaryAccessorV1< float >(xAOD::SummaryType type)
Definition: TrackSummaryAccessors_v1.cxx:127
xAOD::Muon_v1::isolation
bool isolation(float &value, const Iso::IsolationType information) const
Accessor for Isolation values.
Definition: Muon_v1.cxx:279
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
xAOD::Muon_v1::msOnlyExtrapolatedMuonSpectrometerTrackParticleLink
const ElementLink< TrackParticleContainer > & msOnlyExtrapolatedMuonSpectrometerTrackParticleLink() const
Returns an ElementLink to the MS-only Extrapolated Muon Spectrometer TrackParticle used in identifica...
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
MuonTrackSummaryAccessors_v1.h
xAOD::Muon_v1::trackParticle
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be NULL) to the TrackParticle used in identification of this muon.
Definition: Muon_v1.cxx:504
SG::Accessor< float >
AuxStoreAccessorMacros.h
xAOD::Muon_v1::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: Muon_v1.cxx:79
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
xAOD::Muon_v1::muonSegment
const MuonSegment * muonSegment(size_t i) const
Returns a pointer to the specified MuonSegment.
Definition: Muon_v1.cxx:599
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
xAOD::Iso::IsolationFlavour
IsolationFlavour
Enumeration for different ways of calculating isolation in xAOD files.
Definition: IsolationFlavour.h:17
xAOD::Muon_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
xAOD::Muon_v1::quality
Quality quality() const
The Muon Quality information is defined on the MCP twiki: https://twiki.cern.ch/twiki/bin/view/Atlas/...
Definition: Muon_v1.cxx:227
xAOD::Muon_v1::setTrackParticleLink
void setTrackParticleLink(TrackParticleType type, const ElementLink< TrackParticleContainer > &link)
Set method for TrackParticle links.
Definition: Muon_v1.cxx:523
xAOD::Muon_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
xAOD::Muon_v1::intParameter
int intParameter(const ParamDef parameter) const
Same as bool parameter(float& value, const ParamDef &parameter) const, but without check (will throw ...
Definition: Muon_v1.cxx:214
xAOD::MuonSegment_v1
Class describing a MuonSegment.
Definition: MuonSegment_v1.h:33
egammaParameters::ParamDef
ParamDef
Definition: egammaParamDefs.h:99
xAOD::Muon_v1::setP4
void setP4(double pt, double eta, double phi)
Set method for IParticle values.
Definition: Muon_v1.cxx:66
athena.value
value
Definition: athena.py:122
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
xAOD::Muon_v1::author
Author author() const
xAOD::Muon_v1::setPassesHighPtCuts
void setPassesHighPtCuts(bool)
Set whether passes the MCP ID hit cuts.
Definition: Muon_v1.cxx:263
xAOD::pt
setRcore setEtHad setFside pt
Definition: TrigPhoton_v1.cxx:106
xAOD::trackSummaryAccessorV1< uint8_t >
const SG::AuxElement::Accessor< uint8_t > * trackSummaryAccessorV1< uint8_t >(xAOD::SummaryType type)
Definition: TrackSummaryAccessors_v1.cxx:25
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
xAOD::Muon_v1::~Muon_v1
virtual ~Muon_v1()
Destructor.
Definition: Muon_v1.cxx:47
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
xAOD::MuonSummaryType
MuonSummaryType
Enumerates the different types of information stored in Summary.
Definition: TrackingPrimitives.h:324
xAOD::Muon_v1::setPassesIDCuts
void setPassesIDCuts(bool)
Set whether passes the MCP ID hit cuts.
Definition: Muon_v1.cxx:248
xAOD::Iso::IsolationCorrectionParameter
IsolationCorrectionParameter
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:91
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
xAOD::Muon_v1::setIsolation
void setIsolation(float value, const Iso::IsolationType information)
Set method for Isolation values.
Definition: Muon_v1.cxx:296
xAOD::getIsolationCorrectionAccessor
const SG::AuxElement::Accessor< float > getIsolationCorrectionAccessor(Iso::IsolationFlavour type, Iso::IsolationCaloCorrection corr, Iso::IsolationCorrectionParameter param)
Definition: getIsolationCorrectionAccessor.cxx:19
getIsolationCorrectionAccessor.h
xAOD::Muon_v1::passesHighPtCuts
bool passesHighPtCuts() const
Returns true if this Muon passes the MCP high pT cuts (see the MCP twiki for definitions: https://twi...
Definition: Muon_v1.cxx:256
xAOD::Muon_v1::setParameter
void setParameter(float value, const ParamDef parameter)
Set method for parameter values.
xAOD::muonTrackSummaryAccessorV1
const SG::AuxElement::Accessor< uint8_t > * muonTrackSummaryAccessorV1(xAOD::MuonSummaryType type)
Helper function for managing MuonTrackSummary Accessor objects.
Definition: MuonTrackSummaryAccessors_v1.cxx:23
xAOD::Muon_v1::trackParticleLink
const ElementLink< TrackParticleContainer > & trackParticleLink(TrackParticleType type) const
Returns an ElementLink to the TrackParticle used in identification of this muon.
Definition: Muon_v1.cxx:477
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
xAOD::Muon_v1::isolationTrackCorrection
bool isolationTrackCorrection(float &value, const Iso::IsolationFlavour flavour, const Iso::IsolationTrackCorrection type) const
Accessor for Isolation Track correction.
Definition: Muon_v1.cxx:329
JetVar::Accessor
SG::AuxElement::Accessor< T > Accessor
Definition: JetVariable.h:31
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
xAOD::Muon_v1::Muon_v1
Muon_v1()
inject the enums
Definition: Muon_v1.cxx:26
xAOD::SummaryType
SummaryType
Enumerates the different types of information stored in Summary.
Definition: TrackingPrimitives.h:228
xAOD::AUXSTORE_PRIMITIVE_SETTER_WITH_CAST
AUXSTORE_PRIMITIVE_SETTER_WITH_CAST(CompositeParticle_v1, float, double, px, setPx) AUXSTORE_PRIMITIVE_SETTER_WITH_CAST(CompositeParticle_v1
SG::ExcBadAuxVar
Exception — Attempt to retrieve nonexistent aux data item.
Definition: Control/AthContainers/AthContainers/exceptions.h:59
xAOD::Muon_v1::FourMom_t
IParticle::FourMom_t FourMom_t
Definition of the 4-momentum type.
Definition: Muon_v1.h:74
xAOD::Muon_v1::isolationCorrectionBitset
bool isolationCorrectionBitset(std::bitset< 32 > &value, const Iso::IsolationFlavour flavour) const
Accessor for Isolation corection Bitset.
Definition: Muon_v1.cxx:351
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
xAOD::Muon_v1::summaryValue
bool summaryValue(uint8_t &value, const SummaryType information) const
Accessor for TrackSummary values (in most cases, retrieved from the 'primary' TrackParticle - though ...
Definition: Muon_v1.cxx:119
lumiFormat.i
int i
Definition: lumiFormat.py:92
Primary
@ Primary
Definition: VTrackInformation.h:10
xAOD::e
setPy e
Definition: CompositeParticle_v1.cxx:166
vector
Definition: MultiHisto.h:13
python.CaloBCIDAvgAlgConfig.acc1
def acc1
Definition: CaloBCIDAvgAlgConfig.py:48
xAOD::Iso::IsolationType
IsolationType
Overall enumeration for isolation types in xAOD files.
Definition: IsolationType.h:26
xAOD::AUXSTORE_PRIMITIVE_GETTER_WITH_CAST
AUXSTORE_PRIMITIVE_GETTER_WITH_CAST(Muon_v1, uint8_t, Muon_v1::EnergyLossType, energyLossType) AUXSTORE_PRIMITIVE_SETTER_WITH_CAST(Muon_v1
xAOD::charge
charge
Definition: TrigElectron_v1.cxx:85
xAOD::Muon_v1::parameter
bool parameter(float &value, const ParamDef parameter) const
Get a parameter for this Muon - momentumBalanceSignificance for example.
xAOD::Muon_v1::muonSpectrometerTrackParticleLink
const ElementLink< TrackParticleContainer > & muonSpectrometerTrackParticleLink() const
Returns an ElementLink to the InnerDetector TrackParticle used in identification of this muon.
python.CaloBCIDAvgAlgConfig.acc2
def acc2
Definition: CaloBCIDAvgAlgConfig.py:58
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
xAOD::Muon_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
python.xAODType.dummy
dummy
Definition: xAODType.py:4
xAOD::Muon_v1::floatSummaryValue
float floatSummaryValue(const SummaryType information) const
Same as bool summaryValue(float& value, const SummaryType &information) const , but without check (wi...
Definition: Muon_v1.cxx:149
xAOD::Muon_v1::m
virtual double m() const
The invariant mass of the particle..
Definition: Muon_v1.cxx:62
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
xAOD::getIsolationAccessor
const SG::AuxElement::Accessor< float > * getIsolationAccessor(Iso::IsolationType type)
Get the Accessor object for a given isolation type.
Definition: getIsolationAccessor.cxx:24
xAOD::Muon_v1::operator=
Muon_v1 & operator=(const Muon_v1 &rhs)
Assignment operator.
Definition: Muon_v1.cxx:36
DataVector< xAOD::TrackParticle_v1 >
python.LArRecUtilsConfig.acc4
def acc4
Definition: LArRecUtilsConfig.py:196
python.LArRecUtilsConfig.acc5
def acc5
Definition: LArRecUtilsConfig.py:205
xAOD::Muon_v1::floatParameter
float floatParameter(const ParamDef parameter) const
Same as bool parameter(float& value, const ParamDef &parameter) const, but without check (will throw ...
Definition: Muon_v1.cxx:191
xAOD::Muon_v1::type
virtual Type::ObjectType type() const
The type of the object as a simple enumeration.
Definition: Muon_v1.cxx:96
xAOD::Muon_v1::uint8MuonSummaryValue
float uint8MuonSummaryValue(const MuonSummaryType information) const
Same as bool summaryValue(uint8_t& value, const MuonSummaryType &information) const,...
Definition: Muon_v1.cxx:169
xAOD::Muon_v1::isolationCaloCorrection
bool isolationCaloCorrection(float &value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection type, const Iso::IsolationCorrectionParameter param) const
Accessor for Isolation Calo correction.
Definition: Muon_v1.cxx:303
Trk::Combined
@ Combined
Definition: TrackSummaryTool.h:32
xAOD::Muon_v1::isAuthor
bool isAuthor(const Author author) const
Returns 'true' if 'author' is the an author of this muon.
Definition: Muon_v1.cxx:111
xAOD::energyLossType
energyLossType
Definition: Muon_v1.cxx:576
xAOD::Iso::IsolationTrackCorrection
IsolationTrackCorrection
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:61
xAOD::Muon_v1::passesIDCuts
bool passesIDCuts() const
Returns true if this Muon passes the MCP ID hit cuts (see the MCP twiki for definitions: https://twik...
Definition: Muon_v1.cxx:241
xAOD::Muon_v1::uint8SummaryValue
uint8_t uint8SummaryValue(const SummaryType information) const
Same as bool summaryValue(uint8_t& value, const SummaryType &information) const, but without check (w...
Definition: Muon_v1.cxx:154
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
xAOD::Muon_v1::setIsolationCorrectionBitset
bool setIsolationCorrectionBitset(uint32_t value, const Iso::IsolationFlavour flavour)
Set method for Isolation corection Bitset.
Definition: Muon_v1.cxx:365
TrackSummaryAccessors_v1.h
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:172
Muon
struct TBPatternUnitContext Muon
SG::AuxElement::hasStore
bool hasStore() const
Return true if this object has an associated store.
Definition: AuxElement.cxx:355
TrackParticle.h
xAOD::Muon_v1::inDetTrackParticleLink
const ElementLink< TrackParticleContainer > & inDetTrackParticleLink() const
Returns an ElementLink to the InnerDetector TrackParticle used in identification of this muon.
xAOD::Iso::IsolationCaloCorrection
IsolationCaloCorrection
Enumeration for different ways of correcting isolation in xAOD files.
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:18
getIsolationAccessor.h
xAOD::Muon_v1::setSummaryValue
void setSummaryValue(uint8_t value, const SummaryType information)
Set method for storing TrackSummary SummaryType information on the Muon (see Aux to see which is alre...
Definition: Muon_v1.cxx:135
xAOD::Muon_v1::GenVecFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > GenVecFourMom_t
Base 4 Momentum type for Muon.
Definition: Muon_v1.h:80
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
xAOD::AUXSTORE_OBJECT_GETTER
AUXSTORE_OBJECT_GETTER(TrigComposite_v1, std::vector< std::string >, linkColNames) AUXSTORE_OBJECT_GETTER(TrigComposite_v1
CaloCondBlobAlgs_fillNoiseFromASCII.author
string author
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:26
xAOD::getIsolationCorrectionBitsetAccessor
const SG::AuxElement::Accessor< uint32_t > getIsolationCorrectionBitsetAccessor(Iso::IsolationFlavour type)
Returns an accessor for the correction bitset corresponding to this IsolationType.
Definition: getIsolationCorrectionAccessor.cxx:12
xAOD::Muon_v1::setIsolationCaloCorrection
bool setIsolationCaloCorrection(float value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection type, const Iso::IsolationCorrectionParameter param)
set method for Isolation Calo Corrections.
Definition: Muon_v1.cxx:321
xAOD::Muon_v1::genvecP4
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : GenVector.
Definition: Muon_v1.cxx:86
xAOD::Muon_v1::muonSegmentLink
const ElementLink< MuonSegmentContainer > & muonSegmentLink(size_t i) const
Returns a link to the specified MuonSegment.
Definition: Muon_v1.cxx:589
xAOD::Muon_v1::extrapolatedMuonSpectrometerTrackParticleLink
const ElementLink< TrackParticleContainer > & extrapolatedMuonSpectrometerTrackParticleLink() const
Returns an ElementLink to the Extrapolated Muon Spectrometer TrackParticle used in identification of ...
xAOD::Muon_v1::primaryTrackParticle
const TrackParticle * primaryTrackParticle() const
Returns a pointer (which should not usually be NULL, but might be if the muon has been stripped of in...
Definition: Muon_v1.cxx:418
Muon_v1.h
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
SG::AuxElement::container
const SG::AuxVectorData * container() const
Return the container holding this element.
xAOD::Muon_v1::setIsolationTrackCorrection
bool setIsolationTrackCorrection(float value, const Iso::IsolationFlavour flavour, const Iso::IsolationTrackCorrection type)
Set method for Isolation Track Corrections.
Definition: Muon_v1.cxx:344
xAODType::ObjectType
ObjectType
Type of objects that have a representation in the xAOD EDM.
Definition: ObjectType.h:32
ParticleJetParams::Author
Author
Definition: ParticleJetParamDefs.h:33
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
xAOD::IParticle::operator=
IParticle & operator=(const IParticle &)=default
xAOD::Muon_v1::setQuality
void setQuality(Quality)
Definition: Muon_v1.cxx:233
xAOD::Muon_v1::combinedTrackParticleLink
const ElementLink< TrackParticleContainer > & combinedTrackParticleLink() const
Returns an ElementLink to the InnerDetector TrackParticle used in identification of this muon.
xAOD::AUXSTORE_OBJECT_SETTER_AND_GETTER
AUXSTORE_OBJECT_SETTER_AND_GETTER(CaloRings_v1, RingSetLinks, ringSetLinks, setRingSetLinks) unsigned CaloRings_v1
Definition: CaloRings_v1.cxx:27
xAOD::Muon_v1::muonType
MuonType muonType() const